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] =?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;