Merge remote-tracking branch 'origin/master_merge_0523' into master_merge_0523

This commit is contained in:
zhouz
2026-01-06 10:04:59 +08:00
6 changed files with 84 additions and 4 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);
@@ -1464,6 +1469,7 @@ public class SlitterServiceImpl implements SlitterService {
@Override
public JSONObject toSubvolumeBinding(JSONObject param) {
// param : container_name, point_code
log.info("用户{} 操作子卷绑定:{}", SecurityUtils.getCurrentNickName(), param);
String containerName = param.getString("container_name");
String pointCode1 = param.getString("point_code");
if (ObjectUtil.isEmpty(containerName)) {
@@ -1475,7 +1481,7 @@ public class SlitterServiceImpl implements SlitterService {
throw new BadRequestException("子卷号:[" + containerName + "] 的分切计划没找到,检查是否推送或者子卷号是否正确!");
}
// 校验是否存在任务
List<SchBaseTask> taskList = taskService.checkHaveStartTask(pointCode1);
List<SchBaseTask> taskList = taskService.checkHaveTask(pointCode1);
if (taskList.size() > 0) {
throw new BadRequestException("操作失败,点位[" + pointCode1 + "]存在未完成的任务!");
}
@@ -1501,6 +1507,7 @@ public class SlitterServiceImpl implements SlitterService {
}
pointCode.setPoint_status("3");
slittingproductionplanService.updateBatchById(plans);
TaskUtils.updateOptMessageByBCutPoint(pointCode);
bcutpointivtService.updateById(pointCode);
JSONObject res = new JSONObject();
res.put("status", HttpStatus.HTTP_OK);
@@ -1529,7 +1536,7 @@ public class SlitterServiceImpl implements SlitterService {
@Override
public JSONObject toShaftBinding(JSONObject param) {
log.info("气胀轴绑定:{}", param);
log.info("用户{} 操作气胀轴绑定:{}", SecurityUtils.getCurrentNickName(), param);
// param : container_name, point_code
String containerName = param.getString("container_name");
String pointCode1 = param.getString("point_code");
@@ -1546,7 +1553,7 @@ public class SlitterServiceImpl implements SlitterService {
throw new BadRequestException("子卷号:[" + containerName + "] 的分切计划没找到,检查是否推送或者子卷号是否正确!");
}
// 校验是否存在任务
List<SchBaseTask> taskList = taskService.checkHaveStartTask(pointCode1);
List<SchBaseTask> taskList = taskService.checkHaveTask(pointCode1);
if (taskList.size() > 0) {
throw new BadRequestException("操作失败,点位[" + pointCode1 + "]存在未完成的任务!");
}
@@ -1574,6 +1581,7 @@ public class SlitterServiceImpl implements SlitterService {
}
pointCode.setPoint_status("2");
slittingproductionplanService.updateBatchById(plans);
TaskUtils.updateOptMessageByBCutPoint(pointCode);
bcutpointivtService.updateById(pointCode);
JSONObject res = new JSONObject();
res.put("status", HttpStatus.HTTP_OK);

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;
}
}