opt: 套轴完成异常处理
This commit is contained in:
@@ -142,7 +142,9 @@ public class TrussSendAirShaftTask extends AbstractAcsTask {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
|
||||
task.setTask_status(ObjectUtil.isNotEmpty(form.getString("task_status"))
|
||||
? form.getString("task_status")
|
||||
: TaskStatusEnum.START_AND_POINT.getCode());
|
||||
task.setPoint_code1(form.getString("point_code1"));
|
||||
task.setPoint_code2(form.getString("point_code2"));
|
||||
task.setVehicle_code(form.getString("vehicle_code1"));
|
||||
@@ -164,7 +166,9 @@ public class TrussSendAirShaftTask extends AbstractAcsTask {
|
||||
task.setPriority(priority_jo.getString("value"));
|
||||
}
|
||||
taskService.save(task);
|
||||
this.immediateNotifyAcs(null);
|
||||
if ("1".equals(form.getString("immediateNotifyAcs"))) {
|
||||
this.immediateNotifyAcs(null);
|
||||
}
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.TaskUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.RedisUtils;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
@@ -380,6 +381,19 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
|
||||
// 当前套轴的分切计划
|
||||
PdmBiSlittingproductionplan demoPlan = plans.get(0);
|
||||
// 分切计划设置套轴完成
|
||||
String resourceName = demoPlan.getResource_name();
|
||||
String qzzNo = resourceName.substring(0, 2)
|
||||
+ resourceName.substring(resourceName.length() - 2)
|
||||
+ demoPlan.getSplit_group()
|
||||
+ TaskUtils.getDateTime("yyMMddHHmmss") + "-"
|
||||
+ demoPlan.getUp_or_down();
|
||||
plans.forEach(plan -> {
|
||||
plan.setIs_child_tz_ok(SlitterConstant.SLITTER_YES);
|
||||
plan.setQzzno(qzzNo);
|
||||
TaskUtils.updateOptMessageBySlitterPlan(plan);
|
||||
});
|
||||
slittingproductionplanService.updateBatchById(plans);
|
||||
// 查找是否有同组的气胀轴位置
|
||||
BstIvtCutpointivt cutPoint = slitterMapper.getSameGroupPoint(demoPlan);
|
||||
if (ObjectUtil.isEmpty(cutPoint)) {
|
||||
@@ -393,55 +407,57 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
}
|
||||
if (ObjectUtil.isEmpty(cutPoint)) {
|
||||
// 获取一个空位 (上下区域)
|
||||
// List<BstIvtCutpointivt> emptyNotTaskPoint = bcutpointivtService.getAreaNotTaskPointByStatus(
|
||||
// "1", "1", startPoint.getPoint_location(), "1");
|
||||
List<BstIvtCutpointivt> emptyNotTaskPoint = bcutpointivtService.getNBJAreaNotTaskPointByStatus(
|
||||
"1", "1", startPoint.getPoint_location(), "1");
|
||||
if (emptyNotTaskPoint.size() == 0) {
|
||||
stepTipLogs.add("套轴完成->找不到可用套轴对接位!");
|
||||
if (emptyNotTaskPoint.size() > 0) {
|
||||
cutPoint = emptyNotTaskPoint.get(0);
|
||||
} else {
|
||||
stepTipLogs.add("提示:套轴完成->找不到可用套轴对接位,创建半条任务,等待AGV取货完成触发!");
|
||||
redisUtils.set("ERROR" + deviceCode, stepTipLogs);
|
||||
throw new BadRequestException("找不到可用套轴对接位!");
|
||||
}
|
||||
cutPoint = emptyNotTaskPoint.get(0);
|
||||
}
|
||||
String resourceName = demoPlan.getResource_name();
|
||||
// 枷锁
|
||||
RLock lockPoint = redissonClient.getLock(cutPoint.getPoint_code());
|
||||
boolean tryLockPoint = lockPoint.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLockPoint) {
|
||||
// 分切计划设置套轴完成
|
||||
String qzzNo = resourceName.substring(0, 2)
|
||||
+ resourceName.substring(resourceName.length() - 2)
|
||||
+ demoPlan.getSplit_group()
|
||||
+ TaskUtils.getDateTime("yyMMddHHmmss") + "-"
|
||||
+ demoPlan.getUp_or_down();
|
||||
plans.forEach(plan -> {
|
||||
plan.setIs_child_tz_ok(SlitterConstant.SLITTER_YES);
|
||||
plan.setQzzno(qzzNo);
|
||||
TaskUtils.updateOptMessageBySlitterPlan(plan);
|
||||
});
|
||||
slittingproductionplanService.updateBatchById(plans);
|
||||
// 创建任务
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("point_code1", startPoint.getPoint_code());
|
||||
taskParam.put("point_code2", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down())
|
||||
? cutPoint.getTruss_point_code1() : cutPoint.getTruss_point_code2());
|
||||
taskParam.put("point_code2", "-");
|
||||
taskParam.put("needPosition", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down())
|
||||
? "A" : "B");
|
||||
taskParam.put("vehicle_code1", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) ? qzzNo : "");
|
||||
taskParam.put("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : "");
|
||||
taskParam.put("task_type", "010814");
|
||||
taskParam.put("task_status", TaskStatusEnum.SURE_START.getCode());
|
||||
taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
taskParam.put("immediateNotifyAcs", "0");
|
||||
trussSendAirShaftTask.createTask(taskParam);
|
||||
} else {
|
||||
stepTipLogs.add("套轴完成->系统繁忙,稍后在试!");
|
||||
redisUtils.set("ERROR" + deviceCode, stepTipLogs);
|
||||
throw new BadRequestException("系统繁忙,稍后在试!");
|
||||
}
|
||||
} finally {
|
||||
if (tryLockPoint) {
|
||||
lockPoint.unlock();
|
||||
}
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(cutPoint)) {
|
||||
// 枷锁
|
||||
RLock lockPoint = redissonClient.getLock(cutPoint.getPoint_code());
|
||||
boolean tryLockPoint = lockPoint.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLockPoint) {
|
||||
// 创建任务
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("point_code1", startPoint.getPoint_code());
|
||||
taskParam.put("point_code2", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down())
|
||||
? cutPoint.getTruss_point_code1() : cutPoint.getTruss_point_code2());
|
||||
taskParam.put("vehicle_code1", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) ? qzzNo : "");
|
||||
taskParam.put("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : "");
|
||||
taskParam.put("task_type", "010814");
|
||||
taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
taskParam.put("immediateNotifyAcs", "1");
|
||||
trussSendAirShaftTask.createTask(taskParam);
|
||||
} else {
|
||||
stepTipLogs.add("套轴完成->系统繁忙,稍后在试!");
|
||||
redisUtils.set("ERROR" + deviceCode, stepTipLogs);
|
||||
throw new BadRequestException("系统繁忙,稍后在试!");
|
||||
}
|
||||
} finally {
|
||||
if (tryLockPoint) {
|
||||
lockPoint.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
res.put("status", HttpStatus.HTTP_OK);
|
||||
res.put("message", "请求成功");
|
||||
res.put("msg", msg);
|
||||
@@ -1093,6 +1109,30 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
result.put("message", "不更新库存,放行!");
|
||||
return result;
|
||||
}
|
||||
// 判断是不是内包间的点位
|
||||
if (task.getPoint_code1().startsWith("TZZC")) {
|
||||
// 查找半条任务,并创建下发
|
||||
List<SchBaseTask> list = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_type, "010814")
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())
|
||||
.eq(SchBaseTask::getIs_delete, "0")
|
||||
.orderByAsc(SchBaseTask::getCreate_time));
|
||||
if (list.size() > 0) {
|
||||
SchBaseTask schBaseTask = list.get(0);
|
||||
JSONObject requestParam = JSONObject.parseObject(schBaseTask.getRequest_param());
|
||||
if (ObjectUtil.isNotEmpty(requestParam.getString("needPosition")) && "A".equals(requestParam.getString("needPosition"))) {
|
||||
schBaseTask.setPoint_code2(task.getPoint_code1() + "_" + requestParam.getString("needPosition"));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(requestParam.getString("needPosition")) && "B".equals(requestParam.getString("needPosition"))) {
|
||||
schBaseTask.setPoint_code2(task.getPoint_code1() + "_" + requestParam.getString("needPosition"));
|
||||
}
|
||||
schBaseTask.setRemark("AGV取货完成触发!");
|
||||
schBaseTask.setUpdate_time(DateUtil.now());
|
||||
schBaseTask.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskService.updateById(schBaseTask);
|
||||
trussSendAirShaftTask.immediateNotifyAcs(schBaseTask.getTask_id());
|
||||
}
|
||||
}
|
||||
startPointObj.setPoint_status("1");
|
||||
startPointObj.setQzz_no1("");
|
||||
startPointObj.setQzz_no2("");
|
||||
|
||||
Reference in New Issue
Block a user