fix: 计划单双轴判断

This commit is contained in:
2025-12-25 10:56:22 +08:00
parent 1abe523c23
commit 49c0f63ac4
6 changed files with 78 additions and 1 deletions

View File

@@ -54,6 +54,7 @@ public class SendNBJExceptionPointTask extends AbstractAcsTask {
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
String agv_system_type = "2";
for (SchBaseTask task : taskList) {
JSONObject object = JSONObject.parseObject(task.getRequest_param());
AcsTaskDto dto = AcsTaskDto.builder()
.ext_task_id(task.getTask_id())
.task_code(task.getTask_code())
@@ -66,6 +67,7 @@ public class SendNBJExceptionPointTask extends AbstractAcsTask {
.agv_system_type(agv_system_type)
.priority(task.getPriority())
.remark(task.getRemark())
.interaction_json(object)
.product_area(task.getProduct_area())
.build();
resultList.add(dto);

View File

@@ -250,6 +250,8 @@ public class SlitterDownTrussTask extends AbstractAcsTask {
}
}
task.setUpdate_time(DateUtil.now());
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
task.setUpdate_optname(SecurityUtils.getCurrentUsername());
taskService.updateById(task);
}

View File

@@ -60,6 +60,7 @@ public class TrussSendAirShaftTask extends AbstractAcsTask {
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
String agv_system_type = "2";
for (SchBaseTask task : taskList) {
JSONObject object = JSONObject.parseObject(task.getRequest_param());
AcsTaskDto dto = AcsTaskDto.builder()
.ext_task_id(task.getTask_id())
.task_code(task.getTask_code())
@@ -72,6 +73,7 @@ public class TrussSendAirShaftTask extends AbstractAcsTask {
.agv_system_type(agv_system_type)
.priority(task.getPriority())
.remark(task.getRemark())
.interaction_json(object)
.product_area(task.getProduct_area())
.build();
resultList.add(dto);

View File

@@ -380,9 +380,19 @@ public class AutoCallAirShaftTask extends Prun {
skipTheSameTubePlans(needPlans);
return;
}
SlitterTaskUtil.putCurrentPaperSpec(param, oldPlans);
if (!SlitterTaskUtil.singleShaftCheck(param, oldPlans.size())) {
log.warn("气涨轴[{}]对应的分切计划存在异常!", oldQzzNo);
bcutpointivtService.update(new UpdateWrapper<BstIvtCutpointivt>()
.eq("ivt_id", startPoint.getIvt_id())
.set("is_used", "0")
.set("remark", "气胀轴" + oldQzzNo + "对应的分切计划存在异常,无效点位自动禁用")
.set("update_time", DateUtil.now()));
stepErrorInfo.add("气胀轴" + oldQzzNo + "对应的分切计划存在异常,无效点位[" + startPoint.getPoint_code() + "]自动禁用。");
return;
}
// 保存所需要的分切计划数据到点位上(套轴对接位)更新分切计划
saveCutPlanMessage(empty, needPlans, qzzSize, "0");
SlitterTaskUtil.putCurrentPaperSpec(param, oldPlans);
// 套管数量
param.put("casingCount", needPlans.size());
// 拔管数量
@@ -1076,6 +1086,16 @@ public class AutoCallAirShaftTask extends Prun {
param.put("casingCount", 0);
// 拔管数量
param.put("pullCount", list.size());
if (!SlitterTaskUtil.singleShaftCheck(param, list.size())) {
log.warn("气涨轴[{}]对应的分切计划存在异常!", qzzNo);
bcutpointivtService.update(new UpdateWrapper<BstIvtCutpointivt>()
.eq("ivt_id", cutpointivt.getIvt_id())
.set("is_used", "0")
.set("remark", "气胀轴" + qzzNo + "对应的分切计划存在异常,无效点位自动禁用")
.set("update_time", DateUtil.now()));
stepErrorInfo.add("气胀轴" + qzzNo + "对应的分切计划存在异常,无效点位[" + cutpointivt.getPoint_code() + "]自动禁用。");
return;
}
// hint: 当前分切计划的气涨轴尺寸
param.put("qzz_size", plan.getQzz_size());
param.put("task_type", SlitterEnum.TASK_TYPE.code("穿拔轴缓存<>穿拔轴位"));

View File

@@ -425,6 +425,7 @@ public class SlitterServiceImpl implements SlitterService {
exParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
exParam.put("acs_task_type", "6");
exParam.put("containers", collect);
exParam.put("qzz_size", startPoint.getQzz_size());
sendNBJExceptionPointTask.createTask(exParam);
res.put("status", HttpStatus.HTTP_OK);
res.put("message", "创建送至异常处理位!");
@@ -445,6 +446,7 @@ public class SlitterServiceImpl implements SlitterService {
exParam.put("task_type", SlitterEnum.TASK_TYPE.code("套轴异常处理桁架任务"));
exParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
exParam.put("acs_task_type", "6");
exParam.put("qzz_size", startPoint.getQzz_size());
exParam.put("containers", collect);
sendNBJExceptionPointTask.createTask(exParam);
res.put("status", HttpStatus.HTTP_OK);
@@ -464,6 +466,7 @@ public class SlitterServiceImpl implements SlitterService {
exParam.put("task_status", TaskStatusEnum.SURE_START.getCode());
exParam.put("acs_task_type", "6");
exParam.put("containers", collect);
exParam.put("qzz_size", startPoint.getQzz_size());
sendNBJExceptionPointTask.createTask(exParam);
res.put("status", HttpStatus.HTTP_OK);
res.put("message", "请求成功");
@@ -528,6 +531,7 @@ public class SlitterServiceImpl implements SlitterService {
taskParam.put("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : "");
taskParam.put("task_type", "010814");
taskParam.put("containers", collect);
taskParam.put("qzz_size", demoPlan.getQzz_size());
taskParam.put("task_status", TaskStatusEnum.SURE_START.getCode());
taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
taskParam.put("immediateNotifyAcs", "0");
@@ -544,6 +548,7 @@ public class SlitterServiceImpl implements SlitterService {
taskParam.put("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : "");
taskParam.put("task_type", "010814");
taskParam.put("containers", collect);
taskParam.put("qzz_size", demoPlan.getQzz_size());
taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
taskParam.put("immediateNotifyAcs", "1");
trussSendAirShaftTask.createTask(taskParam);

View File

@@ -139,6 +139,7 @@ public class SlitterTaskUtil {
System.out.println(isNumeric("3000"));
System.out.println(isNumeric("3000.32"));
System.out.println(isNumeric("-3000.32"));
boolean b = checkComplete("1", "2", null);
}
/**
@@ -658,4 +659,49 @@ public class SlitterTaskUtil {
return s.matches("-?\\d+(\\.\\d+)?");
}
/**
* 单根轴的数据判断:根据指定的尺寸类型,校验左侧或右侧电流数据是否完整。
* 当 size 为 1 时,只需一侧数据完整即返回 true
* 当 size 为 2 时,要求左右两侧数据均完整才返回 true。
*
* @param param 包含相关字段的 JSON 对象,必须包含以下键:
* "currentLeft", "currentLeftSize", "currentLeftSpec",
* "currentRight", "currentRightSize", "currentRightSpec"
* @param size 校验模式大小,决定校验逻辑:
* - 1表示任一轴左或右数据完整即可逻辑或
* - 2表示左右两轴数据都必须完整逻辑与
* @return 符合校验规则时返回 true否则返回 false
*/
public static boolean singleShaftCheck(JSONObject param, int size) {
String currentLeft = param.getString("currentLeft");
String currentLeftSize = param.getString("currentLeftSize");
String currentLeftSpec = param.getString("currentLeftSpec");
String currentRight = param.getString("currentRight");
String currentRightSize = param.getString("currentRightSize");
String currentRightSpec = param.getString("currentRightSpec");
// 根据 size 值执行不同的校验策略1 表示任一轴有效即可2 表示双轴均需有效
switch (size) {
case 1:
return checkComplete(currentLeft, currentLeftSpec, currentLeftSize)
|| checkComplete(currentRight, currentRightSpec, currentRightSize);
case 2:
return checkComplete(currentLeft, currentLeftSpec, currentLeftSize)
&& checkComplete(currentRight, currentRightSpec, currentRightSize);
}
return false;
}
public static boolean checkComplete(String... checks) {
if (checks == null) {
return false;
}
for (String check : checks) {
if (ObjectUtil.isEmpty(check)) {
return false;
}
}
return true;
}
}