From 12e72ae6fdfa75369eddf2a676d34668dbda247a Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Mon, 17 Jun 2024 11:01:36 +0800 Subject: [PATCH] =?UTF-8?q?opt:6.15=E4=B8=8A=E7=BA=BF=E8=A3=85=E7=AE=B1?= =?UTF-8?q?=E5=8C=BA=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/PdmBiSubpackagerelationMapper.java | 11 +- .../mapper/PdmBiSubpackagerelationMapper.xml | 76 ++++++++++++ .../dao/xml/PdmBiSubpackagerelationMapper.xml | 20 --- .../PdmBiSubpackagerelationServiceImpl.java | 114 +++++++++++------- .../mapper/BstIvtPackageinfoivtMapper.java | 2 +- .../BstIvtPackageinfoivtMapper.xml | 17 +-- .../point/dao/xml/StIvtCoolregionioMapper.xml | 6 - .../point/dao/xml/StIvtCutpointivtMapper.xml | 6 - .../dao/xml/StIvtDeliverypointivtMapper.xml | 6 - .../point/dao/xml/StIvtEmptytubeivtMapper.xml | 6 - .../dao/xml/StIvtEmptyvehiclerecordMapper.xml | 6 - .../point/dao/xml/StIvtHotpointivtMapper.xml | 6 - .../point/dao/xml/StIvtSbpointivtMapper.xml | 6 - .../sch/point/dao/xml/StIvtShaftivtMapper.xml | 6 - .../impl/BstIvtPackageinfoivtServiceImpl.java | 78 ++++++++---- .../sch/tasks/first_floor_area/DjqTask.java | 23 ++-- .../sch/tasks/first_floor_area/GzqTask.java | 18 +-- .../tasks/first_floor_area/KzjhcwTask.java | 16 +-- .../sch/tasks/first_floor_area/MzhcwTask.java | 15 ++- .../tasks/first_floor_area/SendKzjTask.java | 17 ++- .../tasks/first_floor_area/SsxDjwTask.java | 17 ++- .../sch/tasks/first_floor_area/ZxDjwTask.java | 28 ++--- .../sch/tasks/first_floor_area/ZxqTask.java | 73 ++--------- .../first_floor_area/auto/AutoSendToZxq.java | 25 ++-- .../auto/AutoSendZxToDjw.java | 7 +- .../first_floor_area/auto/TaskQueue.java | 50 ++++++++ .../auto/TaskQueueManager.java | 34 ++---- .../util/impl/InBoxManageServiceImpl.java | 44 +++---- .../util/impl/OutBussManageServiceImpl.java | 1 + .../nl/modules/common/utils/RedisUtils.java | 28 +++++ .../org/nl/wms/sch/manage/TaskStatusEnum.java | 3 +- 31 files changed, 427 insertions(+), 338 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationMapper.xml delete mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/xml/PdmBiSubpackagerelationMapper.xml rename lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/{xml => mapper}/BstIvtPackageinfoivtMapper.xml (52%) delete mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtCoolregionioMapper.xml delete mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtCutpointivtMapper.xml delete mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtDeliverypointivtMapper.xml delete mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtEmptytubeivtMapper.xml delete mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtEmptyvehiclerecordMapper.xml delete mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtHotpointivtMapper.xml delete mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtSbpointivtMapper.xml delete mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtShaftivtMapper.xml create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueue.java diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationMapper.java index de347e5b0..315554a65 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationMapper.java @@ -1,8 +1,11 @@ package org.nl.b_lms.pdm.subpackagerelation.dao.mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.common.domain.query.PageQuery; import java.util.List; @@ -17,6 +20,12 @@ import java.util.Map; public interface PdmBiSubpackagerelationMapper extends BaseMapper { - List selectGroupedSubPackageRelation(Page page, Map whereJson); + List selectGroupedSubPackageRelation1(@Param("page") Integer page,@Param("size") Integer size, @Param("whereJson") Map whereJson); + + Page selectGroupedSubPackageRelation(Page page, @Param("sale_order_name") String sale_order_name, + @Param("customer_name") String customer_name, + @Param("customer_description") String customer_description, + @Param("status") String status); + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationMapper.xml new file mode 100644 index 000000000..d08ade145 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationMapper.xml @@ -0,0 +1,76 @@ + + + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/xml/PdmBiSubpackagerelationMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/xml/PdmBiSubpackagerelationMapper.xml deleted file mode 100644 index c95b46bcd..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/xml/PdmBiSubpackagerelationMapper.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java index 0f87910cc..4d10e7ce9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java @@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper; import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation; import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper; @@ -19,8 +18,8 @@ import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.tasks.first_floor_area.*; import org.nl.b_lms.sch.tasks.first_floor_area.auto.TaskQueueManager; +import org.nl.b_lms.sch.tasks.first_floor_area.auto.TaskQueue; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBoxManageService; -import org.nl.common.enums.ContainerLevelEnum; import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.utils.SecurityUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -36,7 +35,6 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; /** @@ -56,6 +54,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl queryContainerization(Map whereJson, PageQuery pageable) { + Page pageObject = new Page<>(pageable.getPage(), pageable.getSize()); + return pdmBiSubpackagerelationMapper.selectGroupedSubPackageRelation(pageObject,(String)whereJson.get("sale_order_name"),(String)whereJson.get("customer_name"),(String)whereJson.get("customer_description"),(String)whereJson.get("status")); + } + + + /** * 查询订单装箱信息 * * @param whereJson 查询条件 * @param pageable 分页参数 */ - @Override - public IPage queryContainerization(Map whereJson, PageQuery pageable) { + public IPage queryContainerization1(Map whereJson, PageQuery pageable) { IPage resultPage = new Page<>(pageable.getPage(), pageable.getSize()); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if (whereJson.containsKey("customer_description")) { @@ -120,12 +131,19 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl packagerelationList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class); List isOutBox = packagerelationList.stream().filter(r -> r.getStatus().equals("0")).collect(Collectors.toList()); -// if (isOutBox.size() > 0) { -// throw new BadRequestException("标记为黄色的子卷号已分配木箱,请重新选择未分配木箱的子卷"); -// } + // if (isOutBox.size() > 0) { + // throw new BadRequestException("标记为黄色的子卷号已分配木箱,请重新选择未分配木箱的子卷"); + // } List entityList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class).stream() .map(PdmBiSubpackagerelation::getWorkorder_id) .map(String::valueOf) @@ -411,7 +429,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl> pointCodeList = bstIvtPackageinfoivtList.stream() - .map(p -> { - Map map = new HashMap<>(); - map.put(p.getPoint_code(), StringUtils.isNotBlank(p.getContainer_name()) ? 1 : 0); - return map; - }) - .collect(Collectors.toList()); + Map resultMap = new HashMap<>(); //获取装箱位任务数量 -// List> taskCount = bstIvtPackageinfoivtMapper.getPointTaskCount(); -// if (CollectionUtils.isNotEmpty(taskCount)) { -// for (Map p : pointCodeList) { -// for (Map.Entry e : p.entrySet()) { -// String pointCode = e.getKey(); -// for (Map taskMap : taskCount) { -// if (taskMap.containsKey(pointCode)) { -// e.setValue(taskMap.get(pointCode)); -// break; -// } -// } -// } -// } -// //获取资源最少的装箱对接位 -// Optional minPointKey = pointCodeList.stream() -// .min(Comparator.comparingInt(map -> map.entrySet().iterator().next().getValue())) -// .map(map -> map.keySet().iterator().next()); -// deviceCode = minPointKey.orElse(""); -// } else { - deviceCode = bstIvtPackageinfoivtList.get(0).getPoint_code(); -// } + List> taskCount = bstIvtPackageinfoivtMapper.getPointTaskCount(); + if (taskCount != null) { + for (Map map : taskCount) { + Object pointCode2Obj = map.get("point_code2"); + Object countObj = map.get("count"); + if (pointCode2Obj != null && countObj != null) { + String pointCode2 = pointCode2Obj.toString(); + Long countLong = (Long) countObj; + Integer count = countLong.intValue(); + resultMap.merge(pointCode2, count, Integer::sum); + } + } + } + bstIvtPackageinfoivtList.stream() + .collect(Collectors.toMap( + BstIvtPackageinfoivt::getPoint_code, + p -> StringUtils.isNotBlank(p.getContainer_name()) ? 1 : 0, + Integer::sum + )) + .forEach((key, value) -> resultMap.merge(key, value, Integer::sum)); + List> result = resultMap.entrySet().stream() + .map(entry -> Collections.singletonMap(entry.getKey(), entry.getValue())) + .collect(Collectors.toList()); + //获取数量最少的点位 + Optional minPointCode = result.stream() + .min(Comparator.comparingInt(map -> map.entrySet().iterator().next().getValue())) + .map(map -> map.keySet().iterator().next()); + deviceCode = minPointCode.orElseGet(() -> bstIvtPackageinfoivtList.get(0).getPoint_code()); //确定装箱区终点 boxInfo.put("device_code", deviceCode); boxInfo.put("material_code", boxType); boxInfo.put("num", entityList.size()); - String boxSn = outBoxManageService.outBox(boxInfo); + //String boxSn = outBoxManageService.outBox(boxInfo); + String boxSn = "MX61401"; if (StringUtils.isBlank(boxSn)) { throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!"); } @@ -472,14 +492,14 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl装箱区agv任务 - //agvTransfer(packagerelationList, deviceCode, boxSn); + agvTransfer(packagerelationList, deviceCode, boxSn); } /** * 待检区->装箱区agv任务 */ - private void agvTransfer(List packagerelationList, String deviceCode, String boxSn) { + private void agvTransfer1(List packagerelationList, String deviceCode, String boxSn) { //待检区点位 List djqPointList = packageinfoivtService .list(new LambdaUpdateWrapper() @@ -519,13 +539,14 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl packagerelationList, String deviceCode, String boxSn) { + private void agvTransfer(List packagerelationList, String deviceCode, String boxSn) { //待检区点位 List djqPointList = packageinfoivtService .list(new LambdaUpdateWrapper() .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区")) .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) - .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("合格品")) + //.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("合格品")) + .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("有子卷")) .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); Set containerNames = packagerelationList.stream() .map(PdmBiSubpackagerelation::getContainer_name) @@ -534,7 +555,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl containerNames.contains(djqPoint.getContainer_name())) .collect(Collectors.toList()); //任务组id - String groupId = deviceCode.substring(deviceCode.indexOf("_") + 1); + String groupId = deviceCode.substring(deviceCode.lastIndexOf("_") + 1); List schBaseTaskList = new ArrayList<>(); //确定起点,安装装箱组标识加入任务队列 djqPoints.forEach(r -> { @@ -544,12 +565,13 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl> getPointTaskCount(); + List> getPointTaskCount(); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/BstIvtPackageinfoivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.xml similarity index 52% rename from lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/BstIvtPackageinfoivtMapper.xml rename to lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.xml index adab8bf83..41483a2b7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/BstIvtPackageinfoivtMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/mapper/BstIvtPackageinfoivtMapper.xml @@ -3,19 +3,14 @@ diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtCoolregionioMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtCoolregionioMapper.xml deleted file mode 100644 index 89e130fd8..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtCoolregionioMapper.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtCutpointivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtCutpointivtMapper.xml deleted file mode 100644 index d5c75f8aa..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtCutpointivtMapper.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtDeliverypointivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtDeliverypointivtMapper.xml deleted file mode 100644 index 7c82eddb6..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtDeliverypointivtMapper.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtEmptytubeivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtEmptytubeivtMapper.xml deleted file mode 100644 index a665d5243..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtEmptytubeivtMapper.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtEmptyvehiclerecordMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtEmptyvehiclerecordMapper.xml deleted file mode 100644 index 9499ba6d1..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtEmptyvehiclerecordMapper.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtHotpointivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtHotpointivtMapper.xml deleted file mode 100644 index 627d4991e..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtHotpointivtMapper.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtSbpointivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtSbpointivtMapper.xml deleted file mode 100644 index c2844afea..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtSbpointivtMapper.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtShaftivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtShaftivtMapper.xml deleted file mode 100644 index eed59a06d..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/xml/StIvtShaftivtMapper.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java index 3714d006e..8eaeb05cc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java @@ -1,7 +1,9 @@ package org.nl.b_lms.sch.point.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import org.apache.commons.collections4.CollectionUtils; import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper; @@ -9,6 +11,7 @@ import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import cn.hutool.core.date.DateUtil; import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.utils.SecurityUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -56,7 +59,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl checkEndPointTask(String ivtType, String ivtStatus, String pointCode,String taskType) { + public List checkEndPointTask(String ivtType, String ivtStatus, String pointCode, String taskType) { List packageinfoivtList = bstIvtPackageinfoivtMapper .selectList(new LambdaUpdateWrapper() .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) @@ -64,28 +67,61 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl pointIds = packageinfoivtList.stream().map(BstIvtPackageinfoivt::getPoint_code).collect(Collectors.toSet()); - if (CollectionUtils.isNotEmpty(pointIds)) { - if (pointCode.equals("1")) { - List taskList = taskService.list(new LambdaUpdateWrapper() - //起点未完成任务 - .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) - .and( - r -> r.in(SchBaseTask::getPoint_code1, pointIds) - )); - return packageinfoivtList.stream().filter(r -> !taskList.stream().map(SchBaseTask::getPoint_code1).collect(Collectors.toSet()).contains(r.getPoint_code())).collect(Collectors.toList()); - } else { - List taskList = taskService.list(new LambdaUpdateWrapper() - //终点未完成任务 - .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) - .eq(SchBaseTask::getTask_type,taskType) - .and( - r -> r.in(SchBaseTask::getPoint_code2, pointIds) - )); - return packageinfoivtList.stream().filter(r -> !taskList.stream().map(SchBaseTask::getPoint_code2).collect(Collectors.toSet()).contains(r.getPoint_code())).collect(Collectors.toList()); - } - } else { + if (CollectionUtils.isEmpty(pointIds)) { return null; } + if (pointCode.equals("1")) { + List taskList = taskService.list(new LambdaUpdateWrapper() + //起点未完成任务 + .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .eq(taskType != null && !taskType.equals(""), SchBaseTask::getTask_type, taskType) + .and( + r -> r.in(SchBaseTask::getPoint_code1, pointIds) + )); + return packageinfoivtList.stream().filter(r -> !taskList.stream().map(SchBaseTask::getPoint_code1).collect(Collectors.toSet()).contains(r.getPoint_code())).collect(Collectors.toList()); + } else { + List taskList = taskService.list(new LambdaUpdateWrapper() + //终点未完成任务 + .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .eq(taskType != null && !taskType.equals(""), SchBaseTask::getTask_type, taskType) + .and( + r -> r.in(SchBaseTask::getPoint_code2, pointIds) + )); + return packageinfoivtList.stream().filter(r -> !taskList.stream().map(SchBaseTask::getPoint_code2).collect(Collectors.toSet()).contains(r.getPoint_code())).collect(Collectors.toList()); + } + } + + + public List checkEndPointTask1(String ivtType, String ivtStatus, String pointCode, String taskType) { + List packageinfoivtList = bstIvtPackageinfoivtMapper + .selectList(new LambdaQueryWrapper() + .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + .eq(BstIvtPackageinfoivt::getPoint_status, ivtType) + .eq(BstIvtPackageinfoivt::getIvt_status, ivtStatus) + .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + Set pointIds = packageinfoivtList.stream() + .map(BstIvtPackageinfoivt::getPoint_code) + .collect(Collectors.toSet()); + if (CollectionUtils.isEmpty(pointIds)) { + return null; + } + //1起点2终点 + SFunction pointCodeType = pointCode.equals("1") ? SchBaseTask::getPoint_code1 : SchBaseTask::getPoint_code2; + // 查询未完成任务 + LambdaQueryWrapper taskQueryWrapper = new LambdaQueryWrapper() + .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .in(pointCodeType, pointIds); + if (taskType != null && !taskType.isEmpty()) { + taskQueryWrapper.eq(SchBaseTask::getTask_type, taskType); + } + List taskList = taskService.list(taskQueryWrapper); + Set taskPointCodes = taskList.stream() + .map(pointCodeType) + .collect(Collectors.toSet()); + // 过滤未完成任务的任务 + return packageinfoivtList.stream() + .filter(packageInfo -> !taskPointCodes.contains(packageInfo.getPoint_code())) + .collect(Collectors.toList()); } 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 936059b5d..25e5a07b2 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 @@ -29,6 +29,7 @@ import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; + import javax.annotation.Resource; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -52,6 +53,8 @@ public class DjqTask extends AbstractAcsTask { private IbstIvtPackageinfoivtService packageinfoivtService; @Resource private MzhcwTask mzhcwTask; + @Resource + private TaskQueueManager taskQueueManager; private final String THIS_CLASS = DjqTask.class.getName(); @@ -134,8 +137,8 @@ public class DjqTask extends AbstractAcsTask { if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) { throw new BadRequestException("任务已执行不能取消"); } - //更新任务表删除字段 - schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code("是")); + //任务被标记为取消 + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); } schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); @@ -167,6 +170,7 @@ public class DjqTask extends AbstractAcsTask { SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder() .task_type(taskType) .vehicle_code(vehicleCode) + .vehicle_code2(form.getString("vehicle_code2")) .point_code1(pointCode1) .point_code2(pointCode2) .point_code3(form.getString("point_code3")) @@ -194,7 +198,7 @@ public class DjqTask extends AbstractAcsTask { public void sendDjqToZxq(SchBaseTask schBaseTask) { //装箱区有空位 - List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"),"2",""); + List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), "2", ""); if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) { Map> ivtList = bstIvtPackageinfoivtList.stream() .collect(Collectors.groupingBy( @@ -202,24 +206,23 @@ public class DjqTask extends AbstractAcsTask { LinkedHashMap::new, Collectors.mapping(BstIvtPackageinfoivt::getPoint_name, Collectors.toList()) )); - TaskQueueManager taskQueueManager =new TaskQueueManager(); taskQueueManager.processTasks(ivtList); } } + + @Override + @Transactional public void forceFinish(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() .eq(SchBaseTask::getTask_id, taskId), false); if (schBaseTask == null) { throw new BadRequestException("满轴缓存位 -> 待检区强制完成接口任务号为空!"); } - schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); - schBaseTask.setUpdate_time(DateUtil.now()); - schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); - schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); - taskService.update(schBaseTask); + updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode()); } + @Override public void cancel(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() @@ -227,7 +230,7 @@ public class DjqTask extends AbstractAcsTask { if (schBaseTask == null) { throw new BadRequestException("满轴缓存位 -> 待检区取消接口任务号为空!"); } - schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消")); + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java index acdad9c4a..7f6dc17bf 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java @@ -122,8 +122,8 @@ public class GzqTask extends AbstractAcsTask { if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) { throw new BadRequestException("任务已执行不能取消"); } - //更新任务表删除字段 - schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code("是")); + //任务被标记为取消 + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); } schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); @@ -155,6 +155,7 @@ public class GzqTask extends AbstractAcsTask { SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder() .task_type(taskType) .vehicle_code(vehicleCode) + .vehicle_code2(form.getString("vehicle_code2")) .point_code1(pointCode1) .point_code2(pointCode2) .point_code3(form.getString("point_code3")) @@ -180,21 +181,20 @@ public class GzqTask extends AbstractAcsTask { return task.getTask_id(); } - @Override + @Transactional public void forceFinish(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() .eq(SchBaseTask::getTask_id, taskId), false); if (schBaseTask == null) { throw new BadRequestException("满轴缓存位 -> 管制区强制完成接口任务号为空!"); } - schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); - schBaseTask.setUpdate_time(DateUtil.now()); - schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); - schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); - taskService.update(schBaseTask); + updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode()); } + + + @Override public void cancel(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() @@ -202,7 +202,7 @@ public class GzqTask extends AbstractAcsTask { if (schBaseTask == null) { throw new BadRequestException("满轴缓存位 -> 管制区取消接口任务号为空!"); } - schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消")); + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java index cedb4b301..5741b0a73 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java @@ -126,8 +126,8 @@ public class KzjhcwTask extends AbstractAcsTask { if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) { throw new BadRequestException("任务已执行不能取消"); } - //更新任务表删除字段 - schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code("是")); + //任务被标记为取消 + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); } schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); @@ -159,6 +159,7 @@ public class KzjhcwTask extends AbstractAcsTask { SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder() .task_type(taskType) .vehicle_code(vehicleCode) + .vehicle_code2(form.getString("vehicle_code2")) .point_code1(pointCode1) .point_code2(pointCode2) .point_code3(form.getString("point_code3")) @@ -184,20 +185,19 @@ public class KzjhcwTask extends AbstractAcsTask { return task.getTask_id(); } + @Override + @Transactional public void forceFinish(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() .eq(SchBaseTask::getTask_id, taskId), false); if (schBaseTask == null) { throw new BadRequestException("待检区或管制区 -> 空载具缓存位强制完成接口任务号为空!"); } - schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); - schBaseTask.setUpdate_time(DateUtil.now()); - schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); - schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); - taskService.update(schBaseTask); + updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode()); } + @Override public void cancel(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() @@ -205,7 +205,7 @@ public class KzjhcwTask extends AbstractAcsTask { if (schBaseTask == null) { throw new BadRequestException("待检区或管制区 -> 空载具缓存位取消接口任务号为空!"); } - schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消")); + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); 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 0c5e6cfe7..0e1627be5 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 @@ -75,7 +75,6 @@ public class MzhcwTask extends AbstractAcsTask { private SsxDjwTask ssxDjwTask; - @Override public List addTask() { ArrayList resultList = new ArrayList<>(); @@ -158,7 +157,7 @@ public class MzhcwTask extends AbstractAcsTask { throw new BadRequestException("任务已执行不能取消"); } // 更新任务表删除字段 - schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code("是")); + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); } schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); @@ -314,6 +313,7 @@ public class MzhcwTask extends AbstractAcsTask { SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder() .task_type(taskType) .vehicle_code(vehicleCode) + .vehicle_code2(form.getString("vehicle_code2")) .point_code1(pointCode1) .point_code2(pointCode2) .point_code3(form.getString("point_code3")) @@ -339,20 +339,19 @@ public class MzhcwTask extends AbstractAcsTask { return task.getTask_id(); } + @Override + @Transactional public void forceFinish(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() .eq(SchBaseTask::getTask_id, taskId), false); if (schBaseTask == null) { throw new BadRequestException("输送线点位 -> 满轴缓存位强制完成接口任务号为空!"); } - schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); - schBaseTask.setUpdate_time(DateUtil.now()); - schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); - schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); - taskService.update(schBaseTask); + updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode()); } + @Override public void cancel(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() @@ -360,7 +359,7 @@ public class MzhcwTask extends AbstractAcsTask { if (schBaseTask == null) { throw new BadRequestException("输送线点位 -> 满轴缓存位取消接口任务号为空!"); } - schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消")); + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendKzjTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendKzjTask.java index fd84e82af..7e17dc23f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendKzjTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendKzjTask.java @@ -99,8 +99,8 @@ public class SendKzjTask extends AbstractAcsTask { if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) { throw new BadRequestException("任务已执行不能取消"); } - //更新任务表删除字段 - schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code("是")); + //任务被标记为取消 + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); } schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); @@ -131,7 +131,8 @@ public class SendKzjTask extends AbstractAcsTask { boolean isSend = !StrUtil.isNotBlank(form.getString("is_send")) || BooleanUtil.toBoolean(form.getString("is_send")); SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder() .task_type(taskType) - .vehicle_code(vehicleCode) + .vehicle_code(vehicleCode) + .vehicle_code2(form.getString("vehicle_code2")) .point_code1(pointCode1) .point_code2(pointCode2) .point_code3(form.getString("point_code3")) @@ -159,19 +160,17 @@ public class SendKzjTask extends AbstractAcsTask { @Override + @Transactional public void forceFinish(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() .eq(SchBaseTask::getTask_id, taskId), false); if (schBaseTask == null) { throw new BadRequestException("装箱区->待检区或管制区送空载具强制完成接口任务号为空!"); } - schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); - schBaseTask.setUpdate_time(DateUtil.now()); - schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); - schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); - taskService.update(schBaseTask); + updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode()); } + @Override public void cancel(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() @@ -179,7 +178,7 @@ public class SendKzjTask extends AbstractAcsTask { if (schBaseTask == null) { throw new BadRequestException("装箱区->待检区或管制区送空载具取消接口任务号为空!"); } - schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消")); + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); 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 618d687a1..de5b828e7 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 @@ -117,8 +117,9 @@ public class SsxDjwTask extends AbstractAcsTask { if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) { throw new BadRequestException("任务已执行不能取消"); } - //更新任务表删除字段 - schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code("是")); + //任务被标记为取消 + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); } schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); @@ -150,6 +151,7 @@ public class SsxDjwTask extends AbstractAcsTask { SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder() .task_type(taskType) .vehicle_code(vehicleCode) + .vehicle_code2(form.getString("vehicle_code2")) .point_code1(pointCode1) .point_code2(pointCode2) .point_code3(form.getString("point_code3")) @@ -176,17 +178,14 @@ public class SsxDjwTask extends AbstractAcsTask { } @Override + @Transactional public void forceFinish(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() - .eq(SchBaseTask::getTask_id, taskId), false) ; + .eq(SchBaseTask::getTask_id, taskId), false); if (schBaseTask == null) { throw new BadRequestException("空载具缓存位 -> 输送线强制完成接口任务号为空!"); } - schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); - schBaseTask.setUpdate_time(DateUtil.now()); - schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); - schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); - taskService.update(schBaseTask); + updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode()); } @Override @@ -196,7 +195,7 @@ public class SsxDjwTask extends AbstractAcsTask { if (schBaseTask == null) { throw new BadRequestException("空载具缓存位 -> 输送线取消接口任务号为空!"); } - schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消")); + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); 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 58d254172..67c80e0b4 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 @@ -122,7 +122,7 @@ public class ZxDjwTask extends AbstractAcsTask { //2.改变起点点位状态 packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); //更新库存记录 - packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); + packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2())); //3.更改子卷信息状态为包装1,创建装箱区->装箱位桁架任务的时候判断是否最后一个子卷:相同木箱号如果生成状态0个数等于1且子卷号等于当前载具号,就是最后一个子卷 PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService .getOne(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false); @@ -131,7 +131,10 @@ public class ZxDjwTask extends AbstractAcsTask { //4.查询同一个木箱号如果生成状态0个数等于0,更新该木箱信息表为包装1 List packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0")); if (CollectionUtils.isEmpty(packagerelationList)) { - BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).eq(BstIvtBoxinfo::getIs_packing, null)); + 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("1"); bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo); } @@ -143,9 +146,10 @@ public class ZxDjwTask extends AbstractAcsTask { if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) { throw new BadRequestException("任务已执行不能取消"); } - //更新任务表删除字段 - schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code("是")); + //任务被标记为取消 + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); } + schBaseTask.setRemark("任务被强制取消,不执行任何逻辑!"); schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); @@ -153,9 +157,6 @@ public class ZxDjwTask extends AbstractAcsTask { } - - - @Override public String createTask(JSONObject form) { Assert.notNull(form, "请求参数不能为空"); @@ -179,9 +180,10 @@ public class ZxDjwTask extends AbstractAcsTask { boolean isSend = !StrUtil.isNotBlank(form.getString("is_send")) || BooleanUtil.toBoolean(form.getString("is_send")); SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder() .task_type(taskType) - .vehicle_code(vehicleCode) .point_code1(pointCode1) .point_code2(pointCode2) + .vehicle_code(vehicleCode) + .vehicle_code2(form.getString("vehicle_code2")) .point_code3(form.getString("point_code3")) .point_code4(form.getString("point_code4")) .request_param(form.getString("request_param")) @@ -208,17 +210,14 @@ public class ZxDjwTask extends AbstractAcsTask { @Override + @Transactional(rollbackFor = Exception.class) public void forceFinish(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() .eq(SchBaseTask::getTask_id, taskId), false); if (schBaseTask == null) { throw new BadRequestException("装箱区 -> 装箱对接位强制完成接口任务号为空!"); } - schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); - schBaseTask.setUpdate_time(DateUtil.now()); - schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); - schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); - taskService.update(schBaseTask); + updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode()); } @Override @@ -228,10 +227,11 @@ public class ZxDjwTask extends AbstractAcsTask { if (schBaseTask == null) { throw new BadRequestException("装箱区 -> 装箱对接位取消接口任务号为空!"); } - schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消")); + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); + schBaseTask.setRemark("任务被强制取消,不执行任何逻辑!"); taskService.update(schBaseTask); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java index c9cd97335..ed1bcfbd7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java @@ -78,55 +78,6 @@ public class ZxqTask extends AbstractAcsTask { private final String THIS_CLASS = ZxqTask.class.getName(); - public SchBaseTask dynamicCreateTask(JSONObject form) { - Assert.notNull(form, "请求参数不能为空"); - String taskType = form.getString("task_type"); - if (StrUtil.isBlank(taskType)) { - throw new BadRequestException("业务类型不能为空"); - } - String vehicleCode = form.getString("vehicle_code"); - if (StrUtil.isBlank(vehicleCode)) { - throw new BadRequestException("载具号不能为空"); - } - String pointCode1 = form.getString("point_code1"); - if (StrUtil.isBlank(pointCode1)) { - throw new BadRequestException("起点不能为空"); - } - String pointCode2 = form.getString("point_code2"); - if (StrUtil.isBlank(pointCode2)) { - throw new BadRequestException("下一点不能为空"); - } - //是否立即下发 - boolean isSend = !StrUtil.isNotBlank(form.getString("is_send")) || BooleanUtil.toBoolean(form.getString("is_send")); - SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder() - .task_type(taskType) - .vehicle_code(vehicleCode) - .point_code1(pointCode1) - .point_code2(pointCode2) - .point_code3(form.getString("point_code3")) - .point_code4(form.getString("point_code4")) - .task_id(org.nl.common.utils.IdUtil.getStringId()) - .task_code(org.nl.common.utils.IdUtil.getStringId()) - .handle_class(THIS_CLASS) - .create_id(SecurityUtils.getCurrentUserId()) - .create_name(SecurityUtils.getCurrentUsername()) - .create_time(DateUtil.now()) - .is_send(isSend ? "1" : "0") - .request_param(form.getString("request_param")) - .acs_task_type(StrUtil.isEmpty(form.getString("acs_task_type")) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : form.getString("acs_task_type")) - .task_status(StrUtil.isEmpty(form.getString("task_status")) ? TaskStatusEnum.START_AND_POINT.getCode() : form.getString("task_status")) - .product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area")) - .build(); - SchBaseTask task = new SchBaseTask(); - BeanUtils.copyProperties(schBaseTaskVo, task); - taskService.save(task); - //如果目标点位没有空位先创建不下发 - if (isSend) { - this.immediateNotifyAcs(null); - } - return task; - } - @Override public List addTask() { ArrayList resultList = new ArrayList<>(); @@ -190,8 +141,8 @@ public class ZxqTask extends AbstractAcsTask { if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) { throw new BadRequestException("任务已执行不能取消"); } - //更新任务表删除字段 - schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code("是")); + //任务被标记为取消 + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); } schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); @@ -237,9 +188,9 @@ public class ZxqTask extends AbstractAcsTask { //扩展参数 JSONObject param = new JSONObject(); //获取木箱信息,未包装的木箱 - BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).eq(BstIvtBoxinfo::getIs_packing, null)); + BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).ne(BstIvtBoxinfo::getIs_packing, "1")); if (bstIvtBoxinfo == null) { - throw new BadRequestException("找不到木箱信息!"); + throw new BadRequestException("找不到该木箱信息!"); } //获取木箱高度等级 String height = ""; @@ -296,14 +247,15 @@ public class ZxqTask extends AbstractAcsTask { throw new BadRequestException("起点不能为空"); } String pointCode2 = form.getString("point_code2"); - if (StrUtil.isBlank(pointCode2)) { - throw new BadRequestException("下一点不能为空"); - } + // if (StrUtil.isBlank(pointCode2)) { + // throw new BadRequestException("下一点不能为空"); + // } //是否立即下发 boolean isSend = !StrUtil.isNotBlank(form.getString("is_send")) || BooleanUtil.toBoolean(form.getString("is_send")); SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder() .task_type(taskType) .vehicle_code(vehicleCode) + .vehicle_code2(form.getString("vehicle_code2")) .point_code1(pointCode1) .point_code2(pointCode2) .point_code3(form.getString("point_code3")) @@ -331,17 +283,14 @@ public class ZxqTask extends AbstractAcsTask { } @Override + @Transactional public void forceFinish(String taskId) { SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper() .eq(SchBaseTask::getTask_id, taskId), false); if (schBaseTask == null) { throw new BadRequestException("待检区 -> 装箱区强制完成接口任务号为空!"); } - schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); - schBaseTask.setUpdate_time(DateUtil.now()); - schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); - schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); - taskService.update(schBaseTask); + updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode()); } @Override @@ -351,7 +300,7 @@ public class ZxqTask extends AbstractAcsTask { if (schBaseTask == null) { throw new BadRequestException("待检区 -> 装箱区取消接口任务号为空!"); } - schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消")); + schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode()); schBaseTask.setUpdate_time(DateUtil.now()); schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId()); schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java index abcc2337b..a6c995d6d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java @@ -6,7 +6,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; -import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask; import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask; import org.nl.common.enums.PackageInfoIvtEnum; import org.springframework.stereotype.Component; @@ -28,13 +27,16 @@ public class AutoSendToZxq { private IbstIvtPackageinfoivtService packageinfoivtService; @Resource private ZxqTask zxqTask; - + @Resource + private TaskQueueManager taskQueueManager; + @Resource + private TaskQueue taskQueue; //待检区->装箱区agv自动搬运任务 public void run() { this.sendDjqToZxq(); } - void sendDjqToZxq() { + void sendDjqToZxq1() { JSONObject toDjqTask =new JSONObject(); //待检区有子卷且没有未完成任务 List djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), "1",""); @@ -49,18 +51,21 @@ public class AutoSendToZxq { } - void sendDjqToZxq1() { - //装箱区有空位 - List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"),"2",""); + public void sendDjqToZxq() { + //装箱区有空位,去待检区消费合格品子卷 + List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask( + PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), + PackageInfoIvtEnum.IVT_STATUS.code("空"),"2",""); if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) { Map> ivtList = bstIvtPackageinfoivtList.stream() .collect(Collectors.groupingBy( - BstIvtPackageinfoivt::getPoint_code, + BstIvtPackageinfoivt::getBlock, LinkedHashMap::new, - Collectors.mapping(BstIvtPackageinfoivt::getPoint_name, Collectors.toList()) + Collectors.mapping(BstIvtPackageinfoivt::getPoint_code, Collectors.toList()) )); - TaskQueueManager taskQueueManager =new TaskQueueManager(); - taskQueueManager.processTasks(ivtList); + //taskQueueManager.processTasks(ivtList); + taskQueue.processTasks(ivtList); } + } } 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 863a3e943..fe5a053bd 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 @@ -67,8 +67,9 @@ public class AutoSendZxToDjw { if (pdmBiSubpackagerelation == null) { throw new BadRequestException("装箱位木箱号无对应子卷包装关系的木箱号!"); } - String containerName = pdmBiSubpackagerelation.getContainer_name(); + //装箱位上的木箱号 String boxNo = zxwPackageinfoivtList.get(0).getContainer_name(); + String containerName = pdmBiSubpackagerelation.getContainer_name(); List zxqPoint = zxqPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList()); if (CollectionUtils.isEmpty(zxqPoint)) { throw new BadRequestException("装箱区暂无该子卷信息"); @@ -84,6 +85,7 @@ public class AutoSendZxToDjw { jo.put("point_code1", zxqPoint.get(0).getPoint_code()); jo.put("point_code2", zxwPackageinfoivtList.get(0).getPoint_code()); jo.put("vehicle_code", pdmBiSubpackagerelation.getContainer_name()); + jo.put("vehicle_code2", boxNo); jo.put("is_send", "1"); //获取纸管长度 String containerLength = productionPlanList.get(0).getPaper_tube_or_FRP().equals("1") ? productionPlanList.get(0).getPaper_tube_description() : productionPlanList.get(0).getFRP_description(); @@ -100,8 +102,7 @@ public class AutoSendZxToDjw { //扩展参数 JSONObject param = new JSONObject(); //获取木箱信息,未包装的木箱 - // BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no,boxNo).eq(BstIvtBoxinfo::getIs_packing, null)); - BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, boxNo)); + BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, boxNo).ne(BstIvtBoxinfo::getIs_packing, "1")); if (bstIvtBoxinfo == null) { throw new BadRequestException("找不到木箱信息!"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueue.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueue.java new file mode 100644 index 000000000..5c4d1f3c7 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueue.java @@ -0,0 +1,50 @@ +package org.nl.b_lms.sch.tasks.first_floor_area.auto; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask; +import org.nl.modules.common.utils.RedisUtils; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +@Service +@RequiredArgsConstructor +@Slf4j +public class TaskQueue { + + @Resource + private IschBaseTaskService taskService; + + private final RedisUtils redisUtils; + + private static final String TASK_QUEUE_PREFIX = "taskQueue:"; + + public void addTasksToQueue(String groupId, List tasks) { + tasks.forEach(task -> redisUtils.pushToList(TASK_QUEUE_PREFIX + groupId, task)); + } + + public void processTasks(Map> tasksToProcessPerQueue) { + tasksToProcessPerQueue.forEach((groupId, points) -> { + int taskCount = points.size(); + for (int i = 0; i < taskCount; i++) { + SchBaseTask task = (SchBaseTask) redisUtils.popFromList(TASK_QUEUE_PREFIX + groupId, SchBaseTask.class); + if (task != null) { + String pointCode = points.get(i); + executeTask(task, pointCode); + } + } + }); + } + + private void executeTask(SchBaseTask task, String pointCode) { + if (task != null) { + task.setPoint_code2(pointCode); + taskService.updateById(task); + ZxqTask taskBean = new ZxqTask(); + taskBean.immediateNotifyAcs(null); + } + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueueManager.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueueManager.java index dd2bbbadc..d1f365630 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueueManager.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueueManager.java @@ -1,17 +1,14 @@ package org.nl.b_lms.sch.tasks.first_floor_area.auto; - -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask; import org.springframework.stereotype.Service; - import javax.annotation.Resource; import java.util.*; -@Service() +@Service @RequiredArgsConstructor @Slf4j public class TaskQueueManager { @@ -25,22 +22,15 @@ public class TaskQueueManager { taskGroupQueues = new HashMap<>(); } - - public void addTasksToQueue(String groupIdentifier, List tasks) { - if (!taskGroupQueues.containsKey(groupIdentifier)) { - taskGroupQueues.put(groupIdentifier, new LinkedList<>()); + public void addTasksToQueue(String groupId, List tasks) { + if (!taskGroupQueues.containsKey(groupId)) { + taskGroupQueues.put(groupId, new LinkedList<>()); } - Queue queue = taskGroupQueues.get(groupIdentifier); + Queue queue = taskGroupQueues.get(groupId); queue.addAll(tasks); } - public void processTasks(Map> tasksToProcessPerQueue) { - //队列剩余数量 - // int tasksCount = taskQueueManager.taskGroupQueues.getOrDefault("Group1", new LinkedList<>()).size(); - //队列为空 - // boolean isEmpty = taskQueueManager.taskGroupQueues.values().stream().allMatch(Queue::isEmpty); - for (Map.Entry> entry : tasksToProcessPerQueue.entrySet()) { String groupId = entry.getKey(); int taskCount = entry.getValue().size(); @@ -50,26 +40,20 @@ public class TaskQueueManager { } int getCount = 0; while (!queue.isEmpty() && getCount < taskCount) { - String PointCode = entry.getValue().get(getCount); - //从队列中移除任务 + String pointCode = entry.getValue().get(getCount); SchBaseTask task = queue.poll(); - executeTask(task, PointCode); + executeTask(task, pointCode); getCount++; } } } - - // 执行任务 private void executeTask(SchBaseTask task, String pointCode) { if (task != null) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.set("point_code2", pointCode); - taskService.update(task, updateWrapper); + task.setPoint_code2(pointCode); + taskService.updateById(task); ZxqTask taskBean = new ZxqTask(); - //任务下发 taskBean.immediateNotifyAcs(null); } } - } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java index 4cd2ce0f3..b58db433f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java @@ -205,28 +205,28 @@ public class InBoxManageServiceImpl implements InBoxManageService { if (boxDao == null) { throw new BadRequestException("木箱不存在!"); } - JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'") - .uniqueResult(0); - if (ObjectUtil.isEmpty(jsonVehicle)) { - throw new BadRequestException("载具不存在!"); - } - JSONObject ext_jo = veExtTab.query("storagevehicle_code = '"+jsonVehicle.getString("storagevehicle_code")+"'").uniqueResult(0); - if (ObjectUtil.isEmpty(ext_jo)) { - JSONObject jsonVeExt = new JSONObject(); - jsonVeExt.put("storagevehicleext_id", IdUtil.getLongId()); - jsonVeExt.put("storagevehicle_id", jsonVehicle.getLongValue("storagevehicle_id")); - jsonVeExt.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code")); - jsonVeExt.put("storagevehicle_type", jsonVehicle.getString("storagevehicle_type")); - jsonVeExt.put("pcsn", whereJson.getString("box_no")); - jsonVeExt.put("device_uuid", IdUtil.getLongId()); - jsonVeExt.put("update_time", DateUtil.now()); - veExtTab.insert(jsonVeExt); - }else { - ext_jo.put("pcsn", whereJson.getString("box_no")); - ext_jo.put("device_uuid", IdUtil.getLongId()); - ext_jo.put("update_time", DateUtil.now()); - veExtTab.update(ext_jo); - } +// JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'") +// .uniqueResult(0); +// if (ObjectUtil.isEmpty(jsonVehicle)) { +// throw new BadRequestException("载具不存在!"); +// } +// JSONObject ext_jo = veExtTab.query("storagevehicle_code = '"+jsonVehicle.getString("storagevehicle_code")+"'").uniqueResult(0); +// if (ObjectUtil.isEmpty(ext_jo)) { +// JSONObject jsonVeExt = new JSONObject(); +// jsonVeExt.put("storagevehicleext_id", IdUtil.getLongId()); +// jsonVeExt.put("storagevehicle_id", jsonVehicle.getLongValue("storagevehicle_id")); +// jsonVeExt.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code")); +// jsonVeExt.put("storagevehicle_type", jsonVehicle.getString("storagevehicle_type")); +// jsonVeExt.put("pcsn", whereJson.getString("box_no")); +// jsonVeExt.put("device_uuid", IdUtil.getLongId()); +// jsonVeExt.put("update_time", DateUtil.now()); +// veExtTab.insert(jsonVeExt); +// }else { +// ext_jo.put("pcsn", whereJson.getString("box_no")); +// ext_jo.put("device_uuid", IdUtil.getLongId()); +// ext_jo.put("update_time", DateUtil.now()); +// veExtTab.update(ext_jo); +// } // 下发桁架任务 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java index 6f13ea684..c419f8b50 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java @@ -161,6 +161,7 @@ public class OutBussManageServiceImpl implements OutBussManageService { ) .collect(Collectors.toList()); + if (ObjectUtil.isEmpty(likePcsnBoxList)) { throw new BadRequestException("库存不足!"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/common/utils/RedisUtils.java b/lms/nladmin-system/src/main/java/org/nl/modules/common/utils/RedisUtils.java index 5059047ac..020247af9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/common/utils/RedisUtils.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/common/utils/RedisUtils.java @@ -15,6 +15,8 @@ */ package org.nl.modules.common.utils; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.slf4j.Logger; @@ -42,6 +44,11 @@ public class RedisUtils { @Value("${jwt.online-key}") private String onlineKey; + + private final ObjectMapper objectMapper = new ObjectMapper(); + + + public RedisUtils(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } @@ -708,4 +715,25 @@ public class RedisUtils { log.debug("缓存删除数量:" + count + "个"); log.debug("--------------------------------------------"); } + + public void pushToList(String key, Object value) { + try { + String valueJson = objectMapper.writeValueAsString(value); + redisTemplate.opsForList().rightPush(key, valueJson); + } catch (JsonProcessingException e) { + log.error("序列化对象出错:", e); + } + } + + public Object popFromList(String key, Class valueType) { + String valueJson = (String) redisTemplate.opsForList().leftPop(key); + if (valueJson != null) { + try { + return objectMapper.readValue(valueJson, valueType); + } catch (JsonProcessingException e) { + log.error("反序列化对象出错:", e); + } + } + return null; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java index d30bace53..2cbb1dddf 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java @@ -8,7 +8,8 @@ public enum TaskStatusEnum { START_AND_POINT("04", "起点终点确认"), ISSUE("05", "下发"), EXECUTING("06", "执行中"), - FINISHED("07", "完成"); + FINISHED("07", "完成"), + CANCEL("08", "取消"); private String name; private String code;