opt: 套轴完成异常处理
This commit is contained in:
@@ -142,7 +142,9 @@ public class TrussSendAirShaftTask extends AbstractAcsTask {
|
|||||||
SchBaseTask task = new SchBaseTask();
|
SchBaseTask task = new SchBaseTask();
|
||||||
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
task.setTask_code(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_code1(form.getString("point_code1"));
|
||||||
task.setPoint_code2(form.getString("point_code2"));
|
task.setPoint_code2(form.getString("point_code2"));
|
||||||
task.setVehicle_code(form.getString("vehicle_code1"));
|
task.setVehicle_code(form.getString("vehicle_code1"));
|
||||||
@@ -164,7 +166,9 @@ public class TrussSendAirShaftTask extends AbstractAcsTask {
|
|||||||
task.setPriority(priority_jo.getString("value"));
|
task.setPriority(priority_jo.getString("value"));
|
||||||
}
|
}
|
||||||
taskService.save(task);
|
taskService.save(task);
|
||||||
this.immediateNotifyAcs(null);
|
if ("1".equals(form.getString("immediateNotifyAcs"))) {
|
||||||
|
this.immediateNotifyAcs(null);
|
||||||
|
}
|
||||||
return task.getTask_id();
|
return task.getTask_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ import org.nl.common.utils.SecurityUtils;
|
|||||||
import org.nl.common.utils.TaskUtils;
|
import org.nl.common.utils.TaskUtils;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
import org.nl.modules.common.utils.RedisUtils;
|
import org.nl.modules.common.utils.RedisUtils;
|
||||||
|
import org.nl.modules.wql.WQL;
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
import org.nl.system.service.notice.ISysNoticeService;
|
import org.nl.system.service.notice.ISysNoticeService;
|
||||||
import org.nl.system.service.param.ISysParamService;
|
import org.nl.system.service.param.ISysParamService;
|
||||||
@@ -380,6 +381,19 @@ public class SlitterServiceImpl implements SlitterService {
|
|||||||
|
|
||||||
// 当前套轴的分切计划
|
// 当前套轴的分切计划
|
||||||
PdmBiSlittingproductionplan demoPlan = plans.get(0);
|
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);
|
BstIvtCutpointivt cutPoint = slitterMapper.getSameGroupPoint(demoPlan);
|
||||||
if (ObjectUtil.isEmpty(cutPoint)) {
|
if (ObjectUtil.isEmpty(cutPoint)) {
|
||||||
@@ -393,55 +407,57 @@ public class SlitterServiceImpl implements SlitterService {
|
|||||||
}
|
}
|
||||||
if (ObjectUtil.isEmpty(cutPoint)) {
|
if (ObjectUtil.isEmpty(cutPoint)) {
|
||||||
// 获取一个空位 (上下区域)
|
// 获取一个空位 (上下区域)
|
||||||
// List<BstIvtCutpointivt> emptyNotTaskPoint = bcutpointivtService.getAreaNotTaskPointByStatus(
|
|
||||||
// "1", "1", startPoint.getPoint_location(), "1");
|
|
||||||
List<BstIvtCutpointivt> emptyNotTaskPoint = bcutpointivtService.getNBJAreaNotTaskPointByStatus(
|
List<BstIvtCutpointivt> emptyNotTaskPoint = bcutpointivtService.getNBJAreaNotTaskPointByStatus(
|
||||||
"1", "1", startPoint.getPoint_location(), "1");
|
"1", "1", startPoint.getPoint_location(), "1");
|
||||||
if (emptyNotTaskPoint.size() == 0) {
|
if (emptyNotTaskPoint.size() > 0) {
|
||||||
stepTipLogs.add("套轴完成->找不到可用套轴对接位!");
|
cutPoint = emptyNotTaskPoint.get(0);
|
||||||
|
} else {
|
||||||
|
stepTipLogs.add("提示:套轴完成->找不到可用套轴对接位,创建半条任务,等待AGV取货完成触发!");
|
||||||
redisUtils.set("ERROR" + deviceCode, stepTipLogs);
|
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();
|
JSONObject taskParam = new JSONObject();
|
||||||
taskParam.put("point_code1", startPoint.getPoint_code());
|
taskParam.put("point_code1", startPoint.getPoint_code());
|
||||||
taskParam.put("point_code2", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down())
|
taskParam.put("point_code2", "-");
|
||||||
? cutPoint.getTruss_point_code1() : cutPoint.getTruss_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_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("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : "");
|
||||||
taskParam.put("task_type", "010814");
|
taskParam.put("task_type", "010814");
|
||||||
|
taskParam.put("task_status", TaskStatusEnum.SURE_START.getCode());
|
||||||
taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||||
|
taskParam.put("immediateNotifyAcs", "0");
|
||||||
trussSendAirShaftTask.createTask(taskParam);
|
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("status", HttpStatus.HTTP_OK);
|
||||||
res.put("message", "请求成功");
|
res.put("message", "请求成功");
|
||||||
res.put("msg", msg);
|
res.put("msg", msg);
|
||||||
@@ -1093,6 +1109,30 @@ public class SlitterServiceImpl implements SlitterService {
|
|||||||
result.put("message", "不更新库存,放行!");
|
result.put("message", "不更新库存,放行!");
|
||||||
return result;
|
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.setPoint_status("1");
|
||||||
startPointObj.setQzz_no1("");
|
startPointObj.setQzz_no1("");
|
||||||
startPointObj.setQzz_no2("");
|
startPointObj.setQzz_no2("");
|
||||||
|
|||||||
Reference in New Issue
Block a user