From fd7f0e488b6800bbd953fb487095008b0c05fc61 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Mon, 17 Jun 2024 21:26:41 +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 --- .../PdmBiSubpackagerelationServiceImpl.java | 96 ++++++++++++------- .../sch/tasks/first_floor_area/MzhcwTask.java | 2 +- .../nl/config/thread/AsyncTaskProperties.java | 2 + .../service/impl/MaterialbaseServiceImpl.java | 9 ++ .../basedata/master/wql/QMD_ME_MATERIAL.wql | 6 ++ 5 files changed, 80 insertions(+), 35 deletions(-) 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 69f0cf497..006ccd474 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 @@ -1,5 +1,6 @@ package org.nl.b_lms.pdm.subpackagerelation.service.impl; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -26,6 +27,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.modules.common.exception.BadRequestException; import org.nl.system.service.param.ISysParamService; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.nl.common.domain.query.PageQuery; @@ -34,6 +37,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ThreadPoolExecutor; import java.util.stream.Collectors; @@ -55,7 +60,6 @@ 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")); + return pdmBiSubpackagerelationMapper.selectGroupedSubPackageRelation(pageObject, (String) whereJson.get("sale_order_name"), (String) whereJson.get("customer_name"), (String) whereJson.get("customer_description"), (String) whereJson.get("status")); } - /** * 查询订单装箱信息 * @@ -140,10 +146,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl 0) { throw new BadRequestException("标记为黄色的子卷号已分配木箱,请重新选择未分配木箱的子卷"); } - List entityList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class).stream() - .map(PdmBiSubpackagerelation::getWorkorder_id) - .map(String::valueOf) - .collect(Collectors.toList()); - if (entityList.isEmpty()) { - return; + JSONArray jsonArray = whereJson.getJSONArray("tableMater"); + if (jsonArray == null || jsonArray.size() == 0) { + throw new BadRequestException("无选中子卷信息"); } List pdmBiSubpackagerelationList = pdmBiSubpackagerelationMapper - .selectList(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getSale_order_name, whereJson.getString("sale_order_name"))); + .selectList(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getSale_order_name, jsonArray.getJSONObject(0).getString("sale_order_name"))); Integer maxBoxGroup = pdmBiSubpackagerelationList.stream() .map(PdmBiSubpackagerelation::getBox_group) .filter(Objects::nonNull) @@ -421,6 +420,13 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl entityList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class).stream() + .map(PdmBiSubpackagerelation::getWorkorder_id) + .map(String::valueOf) + .collect(Collectors.toList()); + if (entityList.isEmpty()) { + return; + } // code:终点,material_code:木箱规格,num: 子卷数 UpdateWrapper updateWrapper = new UpdateWrapper<>(); String boxType = whereJson.getString("checked"); @@ -440,8 +446,38 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl entityList, List packagerelationList, String boxType) { + //均衡获取装箱对接位 + //String deviceCode= getPointCode(); + String deviceCode = "ZXQ_1_1"; JSONObject boxInfo = new JSONObject(); - String deviceCode; + //确定装箱区终点 + boxInfo.put("device_code", deviceCode); + boxInfo.put("material_code", boxType); + boxInfo.put("num", entityList.size()); + String boxSn = outBoxManageService.outBox(boxInfo); + if (StringUtils.isBlank(boxSn)) { + throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!"); + } + //更新子卷包装关系更新木箱号 + CompletableFuture.runAsync(() -> { + try { + updateBoxInfo(entityList, boxSn); + } catch (Exception e) { + log.error("异常信息:" + e); + } + }, pool); + //待检区->装箱区agv任务 + String finalDeviceCode = deviceCode; + CompletableFuture.runAsync(() -> { + try { + agvTransfer(packagerelationList, finalDeviceCode, boxSn); + } catch (Exception e) { + log.error("异常信息:" + e); + } + }, pool); + } + + private String getPointCode() { //均衡获取木箱出库终点 List bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper().eq(BstIvtPackageinfoivt::getPoint_status, "5").eq(BstIvtPackageinfoivt::getIs_used, "1").orderByAsc(BstIvtPackageinfoivt::getPoint_code)); if (CollectionUtils.isEmpty(bstIvtPackageinfoivtList)) { @@ -476,23 +512,15 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl 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 = "MX61401"; - if (StringUtils.isBlank(boxSn)) { - throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!"); - } - //更新子卷包装关系更新木箱号 - UpdateWrapper updateWrapper1 = new UpdateWrapper<>(); - updateWrapper1.set("package_box_sn", boxSn); - updateWrapper1.in("workorder_id", entityList); - pdmBiSubpackagerelationMapper.update(null, updateWrapper1); - //待检区->装箱区agv任务 - agvTransfer(packagerelationList, deviceCode, boxSn); + return minPointCode.orElseGet(() -> bstIvtPackageinfoivtList.get(0).getPoint_code()); + } + + + protected void updateBoxInfo(List entityList, String boxSn) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("package_box_sn", boxSn); + updateWrapper.in("workorder_id", entityList); + pdmBiSubpackagerelationMapper.update(null, updateWrapper); } @@ -539,7 +567,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl packagerelationList, String deviceCode, String boxSn) { + protected void agvTransfer(List packagerelationList, String deviceCode, String boxSn) { //待检区点位 List djqPointList = packageinfoivtService .list(new LambdaUpdateWrapper() @@ -571,7 +599,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl输送线)")); diff --git a/lms/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskProperties.java b/lms/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskProperties.java index 51c6f92ab..b97096f0e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskProperties.java +++ b/lms/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskProperties.java @@ -37,4 +37,6 @@ public class AsyncTaskProperties { private int keepAliveSeconds; private int queueCapacity; + + private int awaitTerminationSeconds; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java index 3ad1abbb6..42638c13a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialbaseServiceImpl.java @@ -44,6 +44,8 @@ public class MaterialbaseServiceImpl implements MaterialbaseService { @Override public Map queryAll(Map whereJson, Pageable page) { String search = MapUtil.getStr(whereJson, "search"); + //只查询木箱 + String box = MapUtil.getStr(whereJson, "box"); //物料限制的时候使用,初始化页面 String class_idStr = MapUtil.getStr(whereJson, "class_idStr"); String material_type_id = MapUtil.getStr(whereJson, "material_type_id"); @@ -61,6 +63,13 @@ public class MaterialbaseServiceImpl implements MaterialbaseService { } map.put("search", "%" + search + "%"); } + if (!StrUtil.isEmpty(box)) { + //处理转义字符 + if (box.contains("\\")) { + box = box.replace("\\", "\\\\\\"); + } + map.put("box", "%" + box + "%"); + } //处理物料当前节点的所有子节点 if (!StrUtil.isEmpty(material_type_id)) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/QMD_ME_MATERIAL.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/QMD_ME_MATERIAL.wql index e42bb7ce0..fea6e648c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/QMD_ME_MATERIAL.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/QMD_ME_MATERIAL.wql @@ -15,6 +15,7 @@ ################################################# 输入.flag TYPEAS s_string 输入.search TYPEAS s_string + 输入.box TYPEAS s_string 输入.class_code TYPEAS s_string 输入.idssql TYPEAS f_string 输入.classIds TYPEAS f_string @@ -59,6 +60,11 @@ mb.material_name like 输入.search ) ENDOPTION + OPTION 输入.box <> "" + ( + mb.material_name like 输入.box + ) + ENDOPTION ENDSELECT ENDPAGEQUERY ENDIF