opt: 套轴异常处理流程

This commit is contained in:
2025-06-09 17:18:33 +08:00
parent f413bfeb82
commit 338257ab9f
5 changed files with 52 additions and 13 deletions

View File

@@ -138,4 +138,12 @@ public interface IBstIvtCutpointivtService extends IService<BstIvtCutpointivt> {
List<BstIvtCutpointivt> getNBJCanUsePoint(String type, String pointStatus, String area, String sort);
List<BstIvtCutpointivt> getNBJAreaNotTaskPointByStatus(String type, String pointStatus, String area, String sort);
/***
* 获取桁架或者AGV点位编码
* @param endPoint
* @param b
* @return
*/
BstIvtCutpointivt getPointByTrussOrAgvCode(String endPoint, boolean flag);
}

View File

@@ -169,4 +169,16 @@ public class BstIvtCutpointivtServiceImpl extends ServiceImpl<BstIvtCutpointivtM
public List<BstIvtCutpointivt> getNBJAreaNotTaskPointByStatus(String type, String pointStatus, String area, String sort) {
return bstIvtCutpointivtMapper.getNBJAreaNotTaskPointByStatus(type, pointStatus, area, sort);
}
@Override
public BstIvtCutpointivt getPointByTrussOrAgvCode(String point, boolean flag) {
LambdaQueryWrapper<BstIvtCutpointivt> lam = new QueryWrapper<BstIvtCutpointivt>().lambda();
lam.eq(flag, BstIvtCutpointivt::getIs_used, "1")
.and(ll -> ll.eq(BstIvtCutpointivt::getPoint_code, point)
.or()
.eq(BstIvtCutpointivt::getTruss_point_code1, point)
.or()
.eq(BstIvtCutpointivt::getTruss_point_code2, point));
return bstIvtCutpointivtMapper.selectOne(lam);
}
}

View File

@@ -5,9 +5,13 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService;
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
import org.nl.b_lms.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService;
import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt;
import org.nl.b_lms.sch.point.dao.StIvtShaftivt;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
@@ -38,6 +42,8 @@ public class SendNBJExceptionPointTask extends AbstractAcsTask {
private IschBaseTaskService taskService;
@Autowired
private IBstIvtCutpointivtService bcutpointivtService;
@Autowired
private IBstIvtShafttubeivtService shaftivtService;
@Override
public List<AcsTaskDto> addTask() {
/*
@@ -80,8 +86,22 @@ public class SendNBJExceptionPointTask extends AbstractAcsTask {
// 互换资源
// update: 在acs请求取货完成就已经清空点位信息
String endPoint = task.getPoint_code2();
BstIvtCutpointivt endPointObj = bcutpointivtService.getPintByAgvCode(endPoint, false);
BstIvtCutpointivt endPointObj = bcutpointivtService.getPointByTrussOrAgvCode(endPoint, false);
TaskUtils.pointMaintenanceInventory(task, endPointObj, "2");
// (桁架任务的时候)起点要清空
if (task.getPoint_code2().equals(endPointObj.getTruss_point_code1())
|| task.getPoint_code2().equals(endPointObj.getTruss_point_code2())) {
BstIvtShafttubeivt shafttubeivt = shaftivtService.getByPointCode(task.getPoint_code1(), false);
shafttubeivt.setQzz_size("");
shafttubeivt.setHave_qzz("0");
shafttubeivt.setTube_code1("");
shafttubeivt.setTube_code2("");
shafttubeivt.setTube_name1("");
shafttubeivt.setTube_name2("");
shafttubeivt.setContainer_name1("");
shafttubeivt.setContainer_name2("");
shaftivtService.updateById(shafttubeivt);
}
bcutpointivtService.updateById(endPointObj);
}

View File

@@ -97,7 +97,6 @@ public class AutoSendAirShaftAgvTask {
log.info("异常处理位无空位!");
// 点位禁用
cutPoint.setRemark("计划状态已被改变!");
cutPoint.setIs_used("0");
cutPoint.setUpdate_time(DateUtil.now());
bcutpointivtService.updateById(cutPoint);
}

View File

@@ -326,8 +326,8 @@ public class SlitterServiceImpl implements SlitterService {
// 去异常位
if (plans.size() == 0) {
log.error("找不到[{}]对应的分切计划,分切计划可能被删除或者拼接!", collect);
// 移动到异常处理位
List<BstIvtCutpointivt> exceptionPoints = bcutpointivtService.getAreaNotTaskPointByStatus("4", "1", "0", "0");
// 移动到异常处理位随机一个点位在送到B2对面的位置
List<BstIvtCutpointivt> exceptionPoints = bcutpointivtService.getAreaNotTaskPointByStatus("1", "1", "0", "0");
if (exceptionPoints.size() > 0) {
BstIvtCutpointivt exceptionPoint = exceptionPoints.get(0);
// 枷锁
@@ -335,17 +335,16 @@ public class SlitterServiceImpl implements SlitterService {
boolean tryLockPointR = lockPointR.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLockPointR) {
List<PdmBiSlittingproductionplan> planTemp = slittingproductionplanService.list(
new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getContainer_name, collect));
PdmBiSlittingproductionplan tempPlan = planTemp.get(0);
// 需要枷锁
JSONObject exParam = new JSONObject();
exParam.put("point_code1", startPoint.getPoint_code());
exParam.put("point_code2", SlitterConstant.SLITTER_SHAFT_UP.equals(tempPlan.getUp_or_down())
exParam.put("point_code2", ObjectUtil.isEmpty(exceptionPoint.getQzz_no1())
? exceptionPoint.getTruss_point_code1() : exceptionPoint.getTruss_point_code2());
exParam.put("vehicle_code1", SlitterTaskUtil.getQzzNoByUpOrDown(tempPlan));
exParam.put("vehicle_code2", SlitterTaskUtil.getQzzNoByUpOrDown(tempPlan));
if (ObjectUtil.isEmpty(exceptionPoint.getQzz_no1())) {
exParam.put("vehicle_code1", collect);
} else {
exParam.put("vehicle_code2", collect);
}
exParam.put("task_type", SlitterEnum.TASK_TYPE.code("套轴异常处理桁架任务"));
exParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
sendNBJExceptionPointTask.createTask(exParam);
@@ -361,9 +360,9 @@ public class SlitterServiceImpl implements SlitterService {
}
}
} else {
stepTipLogs.add("套轴完成->[" + collect + "]对应的分切计划状态已更改,异常处理位没位置,创建任务失败!");
stepTipLogs.add("套轴完成->[" + collect + "]对应的分切计划状态已更改,无暂存位置,创建任务失败!");
redisUtils.set("ERROR" + deviceCode, stepTipLogs);
throw new BadRequestException("[" + collect + "]对应的分切计划状态已更改,异常处理位没位置!");
throw new BadRequestException("[" + collect + "]对应的分切计划状态已更改,无暂存位置!");
}
}
// 分切计划设置纸卷重量
@@ -1097,6 +1096,7 @@ public class SlitterServiceImpl implements SlitterService {
startPointObj.setPoint_status("1");
startPointObj.setQzz_no1("");
startPointObj.setQzz_no2("");
startPointObj.setRemark("");
TaskUtils.updateOptMessageByBCutPoint(startPointObj);
bcutpointivtService.updateById(startPointObj);
task.setTask_status(TaskStatusEnum.PICK_UP_COMPLETED.getCode());