From 9e0e105785f8a79123ffcba7ad924092ac9bc2d2 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Wed, 17 Jul 2024 09:35:47 +0800 Subject: [PATCH 1/6] =?UTF-8?q?opt:=E4=BC=98=E5=8C=96=E8=A3=85=E7=AE=B1?= =?UTF-8?q?=E5=8C=BA=E8=A3=85=E7=AE=B1=E7=A9=BA=E8=BD=BD=E5=85=B7=E6=8C=89?= =?UTF-8?q?=E7=A9=BA=E8=BD=BD=E5=85=B7=E6=95=B0=E9=87=8F=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E4=B8=8B=E5=8F=91agv=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sch/tasks/first_floor_area/ZxDjwTask.java | 65 +++++++++++++++---- .../auto/AutoSendVehicleToDjq.java | 2 +- .../auto/AutoSendZxToDjw.java | 1 - 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java index 038c934b3..ac839a39b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java @@ -27,17 +27,23 @@ import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.common.utils.RedisUtils; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.util.TaskUtil; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; /** * 6 目标装箱对接位, 装箱区 -> 装箱对接位,桁架任务 @@ -46,10 +52,14 @@ import java.util.List; * @since 2024-02-01 */ @Service() -@RequiredArgsConstructor @Slf4j public class ZxDjwTask extends AbstractAcsTask { + + @Resource + @Qualifier("threadPoolExecutor") + private ThreadPoolExecutor pool; + @Resource private AutoSendVehicleToDjq autoSendVehicleToDjq; @Resource @@ -63,6 +73,9 @@ public class ZxDjwTask extends AbstractAcsTask { @Resource private IPdmBiSlittingproductionplanService productionPlanService; + @Resource + private RedisUtils redisUtils; + private static final String NUM_KEY = "AutoSendZxToDjw:NUM"; private final String THIS_CLASS = ZxDjwTask.class.getName(); @Override @@ -120,31 +133,32 @@ public class ZxDjwTask extends AbstractAcsTask { } else if (StrUtil.isEmpty(containerInfo.getContainer_name())) { throw new BadRequestException("子卷号不能为空!"); } - //1.判断是否最后一个子卷:相同木箱号的子卷包装关系如果生成状态:0,且个数等于1且子卷号等于当前载具号,就是最后一个子卷 + //1.更改任务状态为完成 + updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()); + //2.改变起点点位状态 + packageinfoivtService.update(null, new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); + //3.判断是否最后一个子卷:相同木箱号的子卷包装关系如果生成状态:0,且个数等于1且子卷号等于当前载具号,就是最后一个子卷 List packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0")); if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(schBaseTask.getVehicle_code())) { - //2.更改木箱信息为已装箱:1 + //4.更改木箱信息为已装箱:1 BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).ne(BstIvtBoxinfo::getIs_packing, "1")); if (bstIvtBoxinfo == null) { throw new BadRequestException("子卷包装关系为已装箱或找该任务的木箱号不存在!"); } bstIvtBoxinfo.setIs_packing(IOSEnum.IS_NOTANDYES.code("是")); bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo); - //3.最后一个子卷,清除装箱位木箱信息 + //5.最后一个子卷,清除装箱位木箱信息 packageinfoivtService.update(null, new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2())); - //4.创建装箱区->待检区或管制区补空任务 - autoSendVehicleToDjq.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code("是")); + //清除最后一个子卷计数 + redisUtils.set(NUM_KEY, 0); + //6.创建装箱区->待检区或管制区补空任务 + callingVehicleToDjqOrGzq(packagerelationList); } - //5.改变子卷包装状态为已装箱:1 + //7.改变子卷包装状态为已装箱:1 PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService .getOne(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false); pdmBiSubpackagerelation.setStatus(IOSEnum.IS_NOTANDYES.code("是")); subpackageRelationService.updateById(pdmBiSubpackagerelation); - //6.更改任务状态为完成 - updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()); - //7.改变起点点位状态 - packageinfoivtService.update(null, new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); - } // 取消 if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { @@ -159,6 +173,33 @@ public class ZxDjwTask extends AbstractAcsTask { taskService.update(null, updateWrapper); } + @Async("pool") + public void callingVehicleToDjqOrGzq(List packagerelationList) { + callingVehicleToDjqOrGzq(Integer.parseInt(packagerelationList.get(0).getQuanlity_in_box().toString())); + } + + + /** + * 装箱任务完成,异步调用装箱区->待检区补空任务 + */ + private void callingVehicleToDjqOrGzq(Integer callingNum) { + for (int i = 0; i < callingNum; i++) { + final int index = i; + pool.execute(() -> { + try { + TimeUnit.SECONDS.sleep(4L * index); + autoSendVehicleToDjq.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code("是")); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + e.printStackTrace(); + } + }); + } + } + + + + @Override public String createTask(JSONObject form) { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java index b6e4523ef..1580f2d2c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java @@ -34,7 +34,6 @@ public class AutoSendVehicleToDjq { @Resource private IschBaseTaskService taskService; - @Resource private RedissonClient redissonClient; @Resource @@ -109,6 +108,7 @@ public class AutoSendVehicleToDjq { + private String getPointCode(JSONObject task, String taskType) { String pointCode2 = null; List packageList; diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java index 59ef1168a..a29a2ad95 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java @@ -51,7 +51,6 @@ import static org.nl.wms.util.TaskUtil.getMaxNum; public class AutoSendZxToDjw { private final String THIS_CLASS = AutoSendZxToDjw.class.getName(); - private final Integer NUM = 0; private static final String NUM_KEY = "AutoSendZxToDjw:NUM"; private final RedissonClient redissonClient; From c69fcd40f52ef38a71bbd60828f083139c79b7a5 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Wed, 17 Jul 2024 10:30:22 +0800 Subject: [PATCH 2/6] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E5=8F=96=E6=94=BE?= =?UTF-8?q?=E8=B4=A7=E4=BF=A1=E6=81=AF=E5=BC=82=E5=B8=B8=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sch/tasks/first_floor_area/DjqTask.java | 22 ++++-- .../sch/tasks/first_floor_area/MzhcwTask.java | 75 ++++++++++++------- .../tasks/first_floor_area/SsxDjwTask.java | 17 ++++- 3 files changed, 78 insertions(+), 36 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java index 8e15bdc14..0873c5f69 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java @@ -102,15 +102,25 @@ public class DjqTask extends AbstractAcsTask { } if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + schBaseTask.getUpdate_time() + "被调用---------------------------------------------"); - //1.改变起点点位状态,满轴->待检,二次分配取货完成信号发送就改起点库存,检查起点库存是否清空 + //1.校验agv任务取货完成信号 + if (StringUtils.isNotBlank(schBaseTask.getRequest_param())) { + //agv取货完成信号未发送 + if (!schBaseTask.getRequest_param().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) { + log.info(schBaseTask.getTask_code() + "检查检查->满轴位-待检区,agv取货完成信号未发送!!!"); + } + } else { + //agv取货完成信号未发送 + log.info(schBaseTask.getTask_code() + "检查检查->满轴位-待检区,agv取货完成信号未发送!!!"); + } + //2.改变起点点位状态,满轴位->待检区,二次分配取货完成信号发送就改起点库存,检查起点库存是否清空 BstIvtPackageinfoivt ivtPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper().eq(BstIvtPackageinfoivt::getPoint_code, schBaseTask.getPoint_code1())); //如果起点库存未清空,则清空 if (ivtPoint.getContainer_name() != null && schBaseTask.getVehicle_code() != null) { if (ivtPoint.getContainer_name().equals(schBaseTask.getVehicle_code())) { - packageinfoivtService.update(null,new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); + packageinfoivtService.update(null, new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); } } - //2.更新终点库存记录 + //3.更新终点库存记录 String ivtStatus; if (StringUtils.isNotBlank(schBaseTask.getRequest_param())) { if (schBaseTask.getRequest_param().equals("98")) { @@ -127,11 +137,11 @@ public class DjqTask extends AbstractAcsTask { ivtStatus = PackageInfoIvtEnum.IVT_STATUS.code("有子卷"); } packageinfoivtService.update(null,new UpdateWrapper().set("ivt_status", ivtStatus).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); - //3.更改任务状态为完成 + //4.更改任务状态为完成 updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()); - //4.清除首次分配目标点位 + //5.清除首次分配目标点位 updateWrapper.set(SchBaseTask::getPoint_code3, ""); - //5.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务 + //6.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务 // List taskList = taskService.list(new LambdaQueryWrapper() // //确定起点未下发 // .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java index f0c0823cd..b50ee1354 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java @@ -126,35 +126,56 @@ public class MzhcwTask extends AbstractAcsTask { log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + schBaseTask.getUpdate_time() + "被调用---------------------------------------------"); //1.更改任务状态为完成 updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()); - //2.更新库存记录 + //2.校验桁架任务取放货完成信号 + if (StringUtils.isNotBlank(schBaseTask.getCar_no())) { + //桁架取货完成信号未发送 + if (!schBaseTask.getCar_no().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("放货完成"))) { + log.info(schBaseTask.getTask_code() + "检查检查->输送线点位-满轴缓存位,桁架放货完成信号未发送!!!"); + } + } else { + //桁架取货完成信号未发送 + log.info(schBaseTask.getTask_code() + "检查检查->输送线点位-满轴缓存位,桁架放货完成信号未发送!!!"); + } + if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))) { + if (StringUtils.isNotBlank(schBaseTask.getRequest_param())) { + //桁架取货完成信号未发送 + if (!schBaseTask.getRequest_param().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) { + log.info(schBaseTask.getTask_code() + "检查检查->四个点任务,桁架取货完成信号未发送!!!"); + } + } else { + //桁架取货完成信号未发送 + log.info(schBaseTask.getTask_code() + "检查检查->四个点任务,桁架取货完成信号未发送!!!"); + } + } + //3.更新库存记录 // packageinfoivtService.update(null,new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); - //3.任务一、待检区AGV搬运任务,查询子卷信息,去分切计划表查找定级数据,桁架任务完成根据子卷定级创建AGV任务将满轴搬运至质检区或管制区 + //4.任务一、待检区AGV搬运任务,查询子卷信息,去分切计划表查找定级数据,桁架任务完成根据子卷定级创建AGV任务将满轴搬运至质检区或管制区 //createTaskToDjq(schBaseTask); - //4.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务 - // if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))) { - //四个点任务,改变pointCode3点位状态 - // packageinfoivtService.update(null,new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code3())); - //校验任务是否存在 - // List taskTypes = new ArrayList<>(Collections.singletonList(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))); - // List existTask = taskService.getExistTasks(taskTypes); - // if (CollectionUtils.isEmpty(existTask)) { - // List kzjPointList = packageinfoivtService - // .list(new LambdaUpdateWrapper() - // .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) - // .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位")) - // .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")) - // .orderByDesc(BstIvtPackageinfoivt::getSort_seq)); - // JSONObject toSsxTask = new JSONObject(); - // toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); - // toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); - // toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code()); - // //判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具,如果暂时没有空载具,定时任务会不断判断是否有空载具 - // toSsxTask.put("task_status", TaskStatusEnum.SURE_END.getCode()); - // //终点为输送线点位 - // toSsxTask.put("point_code2", schBaseTask.getPoint_code1()); - // ssxDjwTask.createTask(toSsxTask); - // } - // } + //5.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务 + // if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))) { + //四个点任务,改变pointCode3点位状态 + // packageinfoivtService.update(null,new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code3())); + //校验任务是否存在 + // List taskTypes = new ArrayList<>(Collections.singletonList(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))); + // List existTask = taskService.getExistTasks(taskTypes); + // if (CollectionUtils.isEmpty(existTask)) { + // List kzjPointList = packageinfoivtService + // .list(new LambdaUpdateWrapper() + // .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + // .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位")) + // .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")) + // .orderByDesc(BstIvtPackageinfoivt::getSort_seq)); + // JSONObject toSsxTask = new JSONObject(); + // toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + // toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); + // toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code()); + // //判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具,如果暂时没有空载具,定时任务会不断判断是否有空载具 + // toSsxTask.put("task_status", TaskStatusEnum.SURE_END.getCode()); + // //终点为输送线点位 + // toSsxTask.put("point_code2", schBaseTask.getPoint_code1()); + // ssxDjwTask.createTask(toSsxTask); + // } + // } } // 取消 if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java index d092c5dcd..a33e4786d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.dto.SchBaseTaskVO; @@ -94,12 +95,22 @@ public class SsxDjwTask extends AbstractAcsTask { updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()); } if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { - log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------"); + log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + schBaseTask.getUpdate_time() + "被调用---------------------------------------------"); //1.更改任务状态为完成 updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()); - //2.改变起点点位状态 + //2.校验桁架任务取货完成信号 + if (StringUtils.isNotBlank(schBaseTask.getRequest_param())) { + //桁架取货完成信号未发送 + if (!schBaseTask.getRequest_param().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) { + log.info(schBaseTask.getTask_code() + "检查检查->空载具缓存位-输送线,桁架取货完成信号未发送!!!"); + } + } else { + //桁架取货完成信号未发送 + log.info(schBaseTask.getTask_code() + "检查检查->空载具缓存位-输送线,桁架取货完成信号未发送!!!"); + } + //3.改变起点点位状态 //packageinfoivtService.update(null,new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); - //3.空载具缓存位到输送线送空任务完成,去待检区或管制区补空载具 + //4.空载具缓存位到输送线送空任务完成,去待检区或管制区补空载具 // List zxqPointList = packageinfoivtService // .list(new LambdaUpdateWrapper() // .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱区")) From 2a159bd238c67a7960593e085f515667970e6ab9 Mon Sep 17 00:00:00 2001 From: liuxy Date: Wed, 17 Jul 2024 11:22:09 +0800 Subject: [PATCH 3/6] =?UTF-8?q?rev=EF=BC=9A=E4=BA=8C=E6=9C=9F=E7=A7=BB?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/StructattrServiceImpl.java | 6 + .../service/impl/HandMoveStorServiceImpl.java | 122 +++++++++++++++++- 2 files changed, 121 insertions(+), 7 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java index f9e4266cf..d66a29004 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java @@ -63,6 +63,12 @@ public class StructattrServiceImpl implements StructattrService { map.put("is_used", (String) whereJson.get("is_used")); map.put("is_have", (String) whereJson.get("is_have")); + // 如果是二期仓库则将层数删除 + if (ObjectUtil.isNotEmpty(whereJson.get("stor_id"))) { + if ( whereJson.get("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) { + map.put("layer_num", ""); + } + } //获取人员对应的仓库 UserStorServiceImpl userStorService = new UserStorServiceImpl(); String in_stor_id = userStorService.getInStor(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java index 49b26386d..1f8254250 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java @@ -78,8 +78,16 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { @Override @Transactional(rollbackFor = Exception.class) public void deleteAll(Long[] ids) { + WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_MoveInv"); + for (Long moveinv_id : ids) { - this.deleteById(moveinv_id + ""); + JSONObject jo_mst = wo_mst.query("moveinv_id='" + moveinv_id + "'").uniqueResult(0); + + if (jo_mst.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) { + this.deleteByIdTwo(moveinv_id + ""); + } else { + this.deleteById(moveinv_id + ""); + } } } @@ -158,6 +166,77 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { jsonAttr.put("storagevehicle_code", ""); wo_Attr.update(jsonAttr); + } + /** + * 通过moveinv_id删除明细,还原库存等操作(二期) + * + * @param moveinv_id + */ + public void deleteByIdTwo(String moveinv_id) { + //明细表 + WQLObject wo_dtl = WQLObject.getWQLObject("ST_IVT_MoveInvDtl"); + //主表 + WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_MoveInv"); + //任务表 + WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task"); + //仓位表 + WQLObject wo_Attr = WQLObject.getWQLObject("st_ivt_structattr"); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + HashMap map = new HashMap<>(); + map.put("is_delete", "1"); + map.put("update_optid", currentUserId + ""); + map.put("update_optname", nickName); + map.put("update_time", now); + JSONObject jo_mst = wo_mst.query("moveinv_id='" + moveinv_id + "'").uniqueResult(0); + JSONArray ja = wo_dtl.query("moveinv_id='" + moveinv_id + "'").getResultJSONArray(0); + String point_code2 = ""; + for (int i = 0; i < ja.size(); i++) { + JSONObject jo = ja.getJSONObject(i); + //删除任务 + HashMap task_map = new HashMap<>(); + task_map.put("is_delete", "1"); + point_code2 = wo_Task.query("task_id = '" + jo.getString("task_id") + "'").uniqueResult(0).getString("point_code2"); + wo_Task.update(task_map, "task_id='" + jo.getString("task_id") + "'"); + //解锁起点点位、仓位 + JSONObject from_start = new JSONObject(); + from_start.put("lock_type", "1"); + from_start.put("is_free", "0"); + from_start.put("struct_id", jo.getString("turnout_struct_id")); + from_start.put("storagevehicle_code", jo.getString("storagevehicle_code")); + storPublicService.updateStructAndPointTwo(from_start); + //解锁终点点位、仓位 + from_start.put("struct_id", jo.getString("turnin_struct_id")); + storPublicService.updateStructAndPointTwo(from_start); + + //更新移出库存 + jo.put("struct_id", jo.getString("turnout_struct_id")); + jo.put("change_qty", jo.getDoubleValue("qty")); + jo.put("bill_type_scode", jo_mst.getString("bill_type")); + jo.put("inv_id", jo.getString("moveinvdtl_id")); + jo.put("bill_code", jo_mst.getString("bill_code")); + jo.put("bill_table", "ST_IVT_MoveInv"); + storPublicService.IOStor(jo, "12"); + //更新移入库存 + jo.put("struct_id", jo.getString("turnin_struct_id")); + jo.put("bill_type_scode", jo_mst.getString("bill_type")); + jo.put("inv_id", jo.getString("moveinvdtl_id")); + jo.put("bill_code", jo_mst.getString("bill_code")); + jo.put("bill_table", "ST_IVT_MoveInv"); + storPublicService.IOStor(jo, "32"); + //删除明细 + wo_dtl.delete("moveinvdtl_id='" + jo.getString("moveinvdtl_id") + "'"); + } + //更新主表 + wo_mst.update(map, "moveinv_id='" + moveinv_id + "'"); + // 更新移入仓位 + + JSONObject jsonAttr = wo_Attr.query("struct_code = '" + point_code2 + "'").uniqueResult(0); + jsonAttr.put("storagevehicle_code", ""); + wo_Attr.update(jsonAttr); + } @Override @@ -174,6 +253,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { //主表 WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_MoveInv"); ArrayList rows = (ArrayList) map.get("tableData"); + JSONArray arrayTwo = MapUtil.get(map, "tableData", JSONArray.class); map.remove("tableData"); String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); @@ -199,8 +279,15 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { map.put("sysdeptid", deptId); map.put("syscompanyid", deptId); JSONObject jo_mst = JSONObject.parseObject(JSON.toJSONString(map)); - //调用明细处理方法 - JSONObject ret = this.insertDtlByRows(jo_mst, rows); + + //调用明细处理方法 -- 如果是二期移库则调用 insertDtlByRows2 + JSONObject ret = new JSONObject(); + if (jo_mst.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) { + ret = this.insertDtlByRows2(jo_mst, arrayTwo); + } else { + ret = this.insertDtlByRows(jo_mst, rows); + } + map.put("detail_count", ret.getString("detail_count")); map.put("total_qty", ret.getString("total_qty")); wo_mst.insert(map); @@ -554,6 +641,8 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task"); //点位表 WQLObject wo_Point = WQLObject.getWQLObject("SCH_BASE_Point"); + //载具扩展属性 + WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext"); //定义返回数据 JSONObject ret = new JSONObject(); @@ -640,6 +729,12 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { task.put("point_code2", row.getString("turnin_struct_code")); } task.put("vehicle_code", jo.getString("storagevehicle_code")); + // 查询木箱对应载具 + JSONObject jsonExt = extTab.query("pcsn = '" + jo.getString("storagevehicle_code") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonExt)) { + throw new BadRequestException("此木箱对应载具不存在!"+jo.getString("storagevehicle_code")); + } + task.put("vehicle_code2", jsonExt.getString("storagevehicle_code")); task.put("handle_class", HandMoveStorAcsTask.class.getName()); task.put("finished_type", ""); task.put("is_delete", "0"); @@ -724,12 +819,25 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { String moveinv_id = (String) whereJson.get("moveinv_id"); //查询主表 JSONObject jo_mst = wo_mst.query("moveinv_id='" + moveinv_id + "'").uniqueResult(0); + //调用删除明细,还原库存方法 - this.deleteById(moveinv_id + ""); + if (jo_mst.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) { + this.deleteByIdTwo(moveinv_id + ""); + } else { + this.deleteById(moveinv_id + ""); + } + //获取明细 ArrayList rows = (ArrayList) whereJson.get("tableData"); + JSONArray arrayTwo = MapUtil.get(whereJson, "tableData", JSONArray.class); + //调用明细处理方法 - JSONObject ret = this.insertDtlByRows(jo_mst, rows); + JSONObject ret ; + if (jo_mst.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) { + ret = this.insertDtlByRows2(jo_mst, arrayTwo); + } else { + ret = this.insertDtlByRows(jo_mst, rows); + } jo_mst.put("remark", whereJson.get("remark")); jo_mst.put("biz_date", whereJson.get("biz_date")); jo_mst.put("detail_count", ret.getString("detail_count")); @@ -993,7 +1101,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { from_start.put("lock_type", "1"); from_start.put("storagevehicle_code", jo.getString("storagevehicle_code")); from_start.put("struct_id", jo.getString("turnout_struct_id")); - if (form.getString("turnout_sect_code").equals("BZC01")) { + if (jo.getString("turnout_sect_code").equals("BZC01")) { storPublicService.updateStructAndPointTwo(from_start); } else { storPublicService.updateStructAndPoint(from_start); @@ -1004,7 +1112,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { from_end.put("struct_id", jo.getString("turnin_struct_id")); from_end.put("is_free", "0"); from_end.put("storagevehicle_code", jo.getString("storagevehicle_code")); - if (form.getString("turnout_sect_code").equals("BZC01")) { + if (jo.getString("turnout_sect_code").equals("BZC01")) { storPublicService.updateStructAndPointTwo(from_end); } else { storPublicService.updateStructAndPoint(from_end); From 660ef38039be09309efdfbb57c0e61ccd15fa5ec Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Wed, 17 Jul 2024 13:55:24 +0800 Subject: [PATCH 4/6] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E8=BD=BD=E5=85=B7?= =?UTF-8?q?=E4=B8=8B=E7=BA=BF=E6=A1=81=E6=9E=B6=E4=BB=BB=E5=8A=A1=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auto/AutoExecuteWaitTask.java | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoExecuteWaitTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoExecuteWaitTask.java index 16d73951f..dfe48fe73 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoExecuteWaitTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoExecuteWaitTask.java @@ -74,32 +74,7 @@ public class AutoExecuteWaitTask { for (SchBaseTask task : taskList) { if (task != null) { String taskType = task.getTask_type(); - if (PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)").equals(taskType)) { - //校验任务是否存在 - List taskTypes = new ArrayList<>(Arrays.asList(taskType, PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"),PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)"))); - List existTask = taskService.getExistTasks(taskTypes); - //过滤未分配的补空载具任务 - existTask = existTask.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList()); - if (existTask.size() > 0) { - //已二次分配过的任务未完成 - if (existTask.stream().anyMatch(r -> r.getResponse_param().equals(IOSEnum.IS_NOTANDYES.code("是")))) { - throw new BadRequestException("存在已二次分配过点位的补空载具任务未完成!"); - } - } - List kzjPointList = packageinfoivtService - .list(new LambdaUpdateWrapper() - .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用") - ).eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位")) - .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")) - .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); - if (CollectionUtils.isEmpty(kzjPointList)) { - return; - } - task.setPoint_code1(kzjPointList.get(0).getPoint_code()); - task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); - taskService.updateById(task); - ssxDjwTask.immediateNotifyAcs(null); - } else if (PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位").equals(taskType)) { + if (PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位").equals(taskType)) { //校验任务是否存在 List taskTypes = new ArrayList<>(Collections.singletonList(taskType)); List existTaskList = taskService.getExistTasks(taskTypes); @@ -120,6 +95,36 @@ public class AutoExecuteWaitTask { task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); taskService.updateById(task); mzhcwTask.immediateNotifyAcs(null); + } else if (PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)").equals(taskType)) { + //校验任务是否存在 + List taskTypes = new ArrayList<>(Arrays.asList(taskType, PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))); + List existTask = taskService.getExistTasks(taskTypes); + //先发输送线->满轴位任务,如果有输送线->满轴位任务未完成任务,暂不下发放空(空载具缓存位->输送线)任务 + List existTask1 = existTask.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(existTask1)) { + return; + } + //过滤未分配的补空载具任务 + List existTask2 = existTask.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(existTask2)) { + //已二次分配过的任务未完成 + if (existTask.stream().anyMatch(r -> r.getResponse_param().equals(IOSEnum.IS_NOTANDYES.code("是")))) { + throw new BadRequestException("存在已二次分配过点位的补空载具任务未完成!"); + } + } + List kzjPointList = packageinfoivtService + .list(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用") + ).eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位")) + .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")) + .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + if (CollectionUtils.isEmpty(kzjPointList)) { + return; + } + task.setPoint_code1(kzjPointList.get(0).getPoint_code()); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + taskService.updateById(task); + ssxDjwTask.immediateNotifyAcs(null); } } } From e58368070b59381059b22ff33a1d6e8688b1d35a Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Wed, 17 Jul 2024 15:50:12 +0800 Subject: [PATCH 5/6] =?UTF-8?q?opt:=E4=BC=98=E5=8C=96=E8=A3=85=E7=AE=B1?= =?UTF-8?q?=E6=95=B0=E4=B8=BA1=E7=9A=84=E8=A7=A6=E5=8F=91=E8=A1=A5?= =?UTF-8?q?=E7=A9=BA=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sch/tasks/first_floor_area/ZxDjwTask.java | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java index ac839a39b..d1d959c31 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java @@ -9,7 +9,6 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; @@ -33,7 +32,6 @@ import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.util.TaskUtil; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -183,24 +181,25 @@ public class ZxDjwTask extends AbstractAcsTask { * 装箱任务完成,异步调用装箱区->待检区补空任务 */ private void callingVehicleToDjqOrGzq(Integer callingNum) { - for (int i = 0; i < callingNum; i++) { - final int index = i; - pool.execute(() -> { - try { - TimeUnit.SECONDS.sleep(4L * index); - autoSendVehicleToDjq.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code("是")); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - e.printStackTrace(); - } - }); + if (callingNum == 1) { + autoSendVehicleToDjq.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code("是")); + } else if (callingNum > 1) { + for (int i = 0; i < callingNum; i++) { + pool.execute(() -> { + try { + // 使用固定的延迟时间 4 秒 + TimeUnit.SECONDS.sleep(5L); + autoSendVehicleToDjq.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code("是")); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + e.printStackTrace(); + } + }); + } } } - - - @Override public String createTask(JSONObject form) { Assert.notNull(form, "请求参数不能为空"); From 97fedaf121a5223f1a95dc05ca8119e140d22396 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Wed, 17 Jul 2024 15:51:12 +0800 Subject: [PATCH 6/6] =?UTF-8?q?opt:=E4=BC=98=E5=8C=96=E8=A3=85=E7=AE=B1?= =?UTF-8?q?=E6=95=B0=E4=B8=BA1=E7=9A=84=E8=A7=A6=E5=8F=91=E8=A1=A5?= =?UTF-8?q?=E7=A9=BA=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java index d1d959c31..8007c08e3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java @@ -187,7 +187,7 @@ public class ZxDjwTask extends AbstractAcsTask { for (int i = 0; i < callingNum; i++) { pool.execute(() -> { try { - // 使用固定的延迟时间 4 秒 + //5秒执行一次 TimeUnit.SECONDS.sleep(5L); autoSendVehicleToDjq.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code("是")); } catch (InterruptedException e) {