From d25ebfaedfaba80a465cef48876d57afc2d2ba57 Mon Sep 17 00:00:00 2001 From: liuxy Date: Mon, 23 Mar 2026 21:58:54 +0800 Subject: [PATCH] =?UTF-8?q?rev=EF=BC=9A=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/MdPbStoragevehicleextMapper.xml | 1 + .../service/dao/mapper/StructattrMapper.xml | 4 + .../service/dto/StrategyStructParam.java | 4 + .../impl/base/MiddleRuleHandler.java | 180 ++++++++++++++++-- .../org/nl/wms/ext/enums/EXTConstant.java | 2 +- .../nl/wms/ext/service/WmsToAcsService.java | 5 +- .../ext/service/impl/WmsToAcsServiceImpl.java | 1 - .../impl/PdaProductionServiceImpl.java | 13 +- .../controller/SchBasePointController.java | 4 +- .../service/ISchBasePointService.java | 4 +- .../dao/mapper/SchBasePointMapper.java | 2 + .../service/dao/mapper/SchBasePointMapper.xml | 14 ++ .../service/impl/SchBasePointServiceImpl.java | 39 +--- .../service/util/tasks/CenterInTask.java | 3 +- .../service/util/tasks/CoatingUpTask.java | 4 +- .../util/tasks/IntermediateOutTask.java | 6 +- .../service/util/tasks/TabletingInTask.java | 34 +++- .../warehouse_management/enums/IOSEnum.java | 6 + .../impl/RawAssistIStorServiceImpl.java | 2 + .../src/views/wms/sch/point/index.vue | 22 +-- .../views/wms/statement/structivt/index.vue | 1 + 21 files changed, 265 insertions(+), 86 deletions(-) diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml index a9d9f9d..c148fa2 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml @@ -124,6 +124,7 @@ attr.stor_name, attr.sect_name, attr.lock_type, + attr.block_num, mater.material_id, mater.material_code, mater.material_name, diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml index ef3c191..8c8894b 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml @@ -12,6 +12,10 @@ AND attr.sect_id LIKE #{param.sect_id} + + AND + attr.ext_id = #{param.ext_id} + GROUP BY diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java index 6b56174..af62324 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java @@ -45,6 +45,10 @@ public class StrategyStructParam { * 载具编码 */ private String storagevehicle_code; + /** + * 对应称重平台 + */ + private String ext_id; /** * 载具明细:混料的话则是数组 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/decisioner/impl/base/MiddleRuleHandler.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/decisioner/impl/base/MiddleRuleHandler.java index 10c6c7b..143ea8c 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/decisioner/impl/base/MiddleRuleHandler.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/decisioner/impl/base/MiddleRuleHandler.java @@ -1,6 +1,7 @@ package org.nl.wms.decision_manage.service.decisioner.impl.base; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; @@ -13,6 +14,7 @@ import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper; import org.nl.wms.basedata_manage.service.dto.StrategyMater; import org.nl.wms.basedata_manage.service.dto.StrategyStructParam; import org.nl.wms.decision_manage.service.decisioner.Decisioner; +import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSEnum; import org.springframework.stereotype.Service; @@ -20,6 +22,7 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.Stream; /** *

@@ -42,6 +45,67 @@ public class MiddleRuleHandler extends Decisioner handler1(List list, StrategyStructParam param) { + log.info("---------执行middle入库分配规则---------"); + List resuList = new ArrayList<>(); + + Structattr structattr = list.get(0); + List attrList = iStructattrService.list( + new QueryWrapper().lambda() + .eq(Structattr::getSect_id, structattr.getSect_id()) + .and(row -> row.isNotNull(Structattr::getStoragevehicle_code) + .ne(Structattr::getStoragevehicle_code, "") + ) + ); + // 查询此托盘对应的库存信息 + List vehicleList = attrList.stream() + .map(Structattr::getStoragevehicle_code) + .distinct() + .collect(Collectors.toList()); + + if (ObjectUtil.isEmpty(vehicleList)) { + // 为空:查询空的一组可用货位 + return this.queryAttrGroup(structattr,param.getExt_id()); + } + + List extList = iMdPbStoragevehicleextService.list( + new QueryWrapper().lambda() + .in(MdPbStoragevehicleext::getStoragevehicle_code, vehicleList) + ); + + // 不为空:判断是否有相同物料批次的库存 + StrategyMater strategyMater = param.getStrategyMaters().get(0); + MdPbStoragevehicleext extDaoLike = extList.stream() + .filter(row -> row.getMaterial_id().equals(strategyMater.getMaterial_id()) + && row.getPcsn().equals(strategyMater.getPcsn()) + ).findFirst().orElse(null); + + if (ObjectUtil.isEmpty(extDaoLike)) { + // 为空:查询空的一组可用货位 + return this.queryAttrGroup(structattr,param.getExt_id()); + } + // 不为空查询此组空位 + Structattr attrLikeVehicle = iStructattrService.getOne( + new QueryWrapper().lambda() + .eq(Structattr::getStoragevehicle_code, extDaoLike.getStoragevehicle_code()) + ); + resuList = iStructattrService.list( + new QueryWrapper().lambda() + .eq(Structattr::getSect_id, structattr.getSect_id()) + .eq(Structattr::getBlock_num, attrLikeVehicle.getBlock_num()) + .eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .and(row -> row.isNull(Structattr::getStoragevehicle_code) + .or().eq(Structattr::getStoragevehicle_code, "") + ) + .orderByAsc(Structattr::getStruct_code) + ); + if (ObjectUtil.isEmpty(resuList)) { + return this.queryAttrGroup(structattr, param.getExt_id()); + } + return resuList; + + } + @Override public List handler(List list, StrategyStructParam param) { log.info("---------执行middle入库分配规则---------"); @@ -63,7 +127,7 @@ public class MiddleRuleHandler extends Decisioner extList = iMdPbStoragevehicleextService.list( @@ -73,32 +137,44 @@ public class MiddleRuleHandler extends Decisioner extDaoLikeList = extList.stream() .filter(row -> row.getMaterial_id().equals(strategyMater.getMaterial_id()) && row.getPcsn().equals(strategyMater.getPcsn()) - ).findFirst().orElse(null); + ).collect(Collectors.toList()); - if (ObjectUtil.isEmpty(extDaoLike)) { + if (ObjectUtil.isEmpty(extDaoLikeList)) { // 为空:查询空的一组可用货位 - return this.queryAttrGroup(structattr); + return this.queryAttrGroup(structattr,param.getExt_id()); } - // 不为空查询此组空位 - Structattr attrLikeVehicle = iStructattrService.getOne( + // 查询所属仓位 + List vehicleInfo = extDaoLikeList.stream() + .map(MdPbStoragevehicleext::getStoragevehicle_code) + .distinct() + .collect(Collectors.toList()); + List attrListInfo = iStructattrService.list( new QueryWrapper().lambda() - .eq(Structattr::getStoragevehicle_code, extDaoLike.getStoragevehicle_code()) - ); - resuList = iStructattrService.list( - new QueryWrapper().lambda() - .eq(Structattr::getSect_id, structattr.getSect_id()) - .eq(Structattr::getBlock_num, attrLikeVehicle.getBlock_num()) - .eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) - .and(row -> row.isNull(Structattr::getStoragevehicle_code) - .or().eq(Structattr::getStoragevehicle_code, "") - ) - .orderByAsc(Structattr::getStruct_code) + .in(Structattr::getStoragevehicle_code, vehicleInfo) ); + + for (Structattr attr : attrListInfo) { + // 不为空查询此组空位 + resuList = iStructattrService.list( + new QueryWrapper().lambda() + .eq(Structattr::getSect_id, structattr.getSect_id()) + .eq(Structattr::getBlock_num, attr.getBlock_num()) + .eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .and(row -> row.isNull(Structattr::getStoragevehicle_code) + .or().eq(Structattr::getStoragevehicle_code, "") + ) + .orderByAsc(Structattr::getStruct_code) + ); + if (ObjectUtil.isNotEmpty(resuList)) { + break; + } + } + if (ObjectUtil.isEmpty(resuList)) { - return this.queryAttrGroup(structattr); + return this.queryAttrGroup(structattr, param.getExt_id()); } return resuList; @@ -110,9 +186,9 @@ public class MiddleRuleHandler extends Decisioner */ - public List queryAttrGroup(Structattr structattr) { + public List queryAttrGroup(Structattr structattr, String ext_id) { // 查询一组未有货组仓位 - List groupBlockList = structattrMapper.queryAttrGroup(MapOf.of("sect_id", structattr.getSect_id())); + List groupBlockList = structattrMapper.queryAttrGroup(MapOf.of("sect_id", structattr.getSect_id(),"ext_id",ext_id)); if (ObjectUtil.isEmpty(groupBlockList)) { throw new BadRequestException("当前组仓位不足!"); } @@ -125,4 +201,66 @@ public class MiddleRuleHandler extends Decisioner attrList = iStructattrService.list( + new QueryWrapper().lambda() + .eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("中间站库区")) + .and(row -> row.isNotNull(Structattr::getStoragevehicle_code) + .ne(Structattr::getStoragevehicle_code, "") + ) + ); + // 查询此托盘对应的库存信息 + List vehicleList = attrList.stream() + .map(Structattr::getStoragevehicle_code) + .distinct() + .collect(Collectors.toList()); + + if (ObjectUtil.isEmpty(vehicleList)) { + // 为空: + return null; + } + + List extList = iMdPbStoragevehicleextService.list( + new QueryWrapper().lambda() + .in(MdPbStoragevehicleext::getStoragevehicle_code, vehicleList) + ); + + // 不为空:判断是否有相同物料批次的库存 + MdPbStoragevehicleext extDaoLike = extList.stream() + .filter(row -> row.getMaterial_id().equals(material_id) + && row.getPcsn().equals(pcsn) + ).findFirst().orElse(null); + + if (ObjectUtil.isEmpty(extDaoLike)) { + // 为空: + return null; + } + + // 不为空查询此组空位 + Structattr attrLikeVehicle = iStructattrService.getOne( + new QueryWrapper().lambda() + .eq(Structattr::getStoragevehicle_code, extDaoLike.getStoragevehicle_code()) + ); + + List attrListRest = iStructattrService.list( + new QueryWrapper().lambda() + .eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("中间站库区")) + .eq(Structattr::getBlock_num, attrLikeVehicle.getBlock_num()) + .eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .and(row -> row.isNull(Structattr::getStoragevehicle_code) + .or().eq(Structattr::getStoragevehicle_code, "") + ) + .orderByAsc(Structattr::getStruct_code) + ); + + if (ObjectUtil.isEmpty(attrListRest)) { + return null; + } + + return attrListRest.get(0); + } + } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java index 00e4ad0..03416eb 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java @@ -25,7 +25,7 @@ public class EXTConstant { /** * ACS下发 取放货确认 */ - public final static String CONFIRM_AGV_ACS_API = "api/wms/confirmAgv"; + public final static String CONFIRM_AGV_ACS_API = "api/wms/isGetPut"; /** * ACS下发 获取称重信息 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToAcsService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToAcsService.java index 6eeb8e6..1f3cbb4 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToAcsService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToAcsService.java @@ -41,9 +41,8 @@ public interface WmsToAcsService { /** * 确认取放货 * @param whereJson { - * task_type: 1-取货确认 2- 放货确认 - * task_code: 任务号 - * point_code: 点位编码 + * type: 1-取货完成 2- 放货完成 + * device_code: 点位编码 * } * @return AcsResponse */ diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToAcsServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToAcsServiceImpl.java index 633b97f..91a6ccb 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToAcsServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToAcsServiceImpl.java @@ -41,6 +41,5 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { @Override public AcsResponse confirmAgv(JSONObject whereJson) { return AcsUtil.notifyAcs(EXTConstant.CONFIRM_AGV_ACS_API, whereJson); - } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java index 558a76b..2474e9b 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java @@ -39,6 +39,7 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.SecondaryPackagingService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.TaskFactory; import org.nl.wms.sch_manage.service.util.tasks.PalletOutTask; @@ -121,6 +122,8 @@ public class PdaProductionServiceImpl implements PdaProductionService { private SecondaryPackagingService secondaryPackagingService; @Resource private SectMaterialCheck sectMaterialCheck; + @Resource + private SchBasePointMapper schBasePointMapper; @Override public PdaResponse getGroupInfo(JSONObject param) { // search; @@ -662,10 +665,13 @@ public class PdaProductionServiceImpl implements PdaProductionService { JSONObject divObj = defaultPdaBuildParam.buildManuaOutBuckDivData(param, ioStorInvDtlDto); outBillService.manualDiv(divObj); } - // 找一个没任务的称重位 - List czws = pointService.getCanUsePointByRegion("ZJZ01"); + + // 根据仓位定位到出到哪个称重位 + String end_code = structattr.getExt_id(); + List czws = schBasePointMapper.getCanUsePointByCode(end_code); +// List czws = pointService.getCanUsePointByRegion("ZJZ01"); if (czws.isEmpty()) { - throw new BadRequestException("找不到中间站的称重位!"); + throw new BadRequestException("当前称重位【"+end_code+"】有任务在执行"); } // 3 创建任务 JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(czws.get(0), invId); @@ -763,6 +769,7 @@ public class PdaProductionServiceImpl implements PdaProductionService { String invId = rawAssistIStorService.insertDtl(invObj); // 2 调用分配 Map divObj = defaultPdaBuildParam.buildDivStructData(param2, sectattr, invId, true); + divObj.put("ext_id", startPoint.getPoint_code()); rawAssistIStorService.divStruct(divObj); // 3 创建任务 Map jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java index 93344cb..94b33ef 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java @@ -76,14 +76,14 @@ public class SchBasePointController { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } - @Log("确认取货") + @Log("取货完成") @PostMapping("/getConfirm") public ResponseEntity getConfirm(@RequestBody JSONObject whereJson) { schBasePointService.getConfirm(whereJson); return new ResponseEntity<>(HttpStatus.OK); } - @Log("确认放货") + @Log("放货完成") @PostMapping("/putConfirm") public ResponseEntity putConfirm(@RequestBody JSONObject whereJson) { schBasePointService.putConfirm(whereJson); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java index b222bea..4b85d43 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java @@ -92,13 +92,13 @@ public interface ISchBasePointService extends IService { void unLockPoint(String point_code); /** - * 确认取货 + * 取货完成 * @param whereJson 点位实体 */ void getConfirm(JSONObject whereJson); /** - * 确认放货 + * 放货完成 * @param whereJson 点位实体 */ void putConfirm(JSONObject whereJson); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java index 95334b5..aec8381 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java @@ -59,6 +59,8 @@ public interface SchBasePointMapper extends BaseMapper { List getCanUsePointByRegion(String regionCode); + List getCanUsePointByCode(String point_code); + /** * 无人车卸货 - 查询无人车点位信息 * @return PdaResponse diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml index 4cbcad5..83ccce9 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml @@ -124,6 +124,20 @@ OR t.point_code2 = p.point_code )) + +