From ac004fc7e10d892a54dfcd2613b1cf47cac79336 Mon Sep 17 00:00:00 2001 From: zhangzq Date: Mon, 9 Dec 2024 11:17:35 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../decisioner/impl/base/FIFORuleHandler.java | 1 + .../impl/base/LimitStorageRuleHandler.java | 32 +++++- .../iostorage/sevice/PdaIOService.java | 97 +++++++++++-------- .../service/impl/PmFormDataServiceImpl.java | 6 +- .../impl/StIvtIostorinvServiceImpl.java | 22 +++-- .../SyncFormMappingController.java | 2 +- 6 files changed, 101 insertions(+), 59 deletions(-) diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/FIFORuleHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/FIFORuleHandler.java index d64df52e..c416d684 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/FIFORuleHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/FIFORuleHandler.java @@ -61,6 +61,7 @@ public class FIFORuleHandler extends Decisioner inHandler(List attrList, BmVehicleInfo vehicle) { //限制条件:限制哪些 List limits = JSONArray.parseArray(strategyConfig.getParam(), String.class); - Predicate predicate = stIvtStructattr -> { + Predicate eqLimt= stIvtStructattr -> { Boolean result = Boolean.TRUE; if (limits.contains("h")){ result = result && stIvtStructattr.getH()>=vehicle.getH(); @@ -81,10 +82,33 @@ public class LimitStorageRuleHandler extends Decisioner collect = attrList.stream() - .filter(predicate) + List eqLimitCollect = attrList.stream() + .filter(eqLimt) .collect(Collectors.toList()); - return collect; + if (!CollectionUtils.isEmpty(eqLimitCollect)){ + return eqLimitCollect; + } + Predicate ltLimt = stIvtStructattr -> { + Boolean result = Boolean.TRUE; + if (limits.contains("h")){ + result = result && stIvtStructattr.getH()>vehicle.getH(); + } + if (limits.contains("w")){ + result = result && stIvtStructattr.getW()>vehicle.getW(); + } + if (limits.contains("l")){ + result = result && stIvtStructattr.getL()>vehicle.getL(); + } + if (limits.contains("weight")){ + result = result && stIvtStructattr.getWeight()>vehicle.getWeight(); + } + return result; + }; + // 判断长宽高是否符合要求 + List ltLimtCollect = attrList.stream() + .filter(ltLimt) + .collect(Collectors.toList()); + return ltLimtCollect; } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java index db34e8e9..8412e90a 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.kingdee.bos.webapi.entity.IdentifyInfo; import com.kingdee.bos.webapi.sdk.K3CloudApi; @@ -22,6 +23,8 @@ import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService; import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc; import org.nl.wms.external_system.erp.dto.ErpQuery; import org.nl.wms.external_system.erp.dto.ErpSec; +import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; +import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutDtl; import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutMst; import org.nl.wms.pda_manage.iostorage.server.dto.ReceiveBillData; @@ -43,6 +46,7 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; @Service public class PdaIOService { @@ -65,8 +69,10 @@ public class PdaIOService { private MdMeMaterialbaseServiceImpl mdMeMaterialbaseServiceImpl; @Resource private PmFormDataMapper pmFormDataMapper; - @Resource + @Autowired private IPmFormDataService iPmFormDataService; + @Autowired + private IMdPbVehicleMaterService iMdPbVehicleMaterService; public void PpdaOrderOutStorage(PdaFormOutMst pdaFormOutMst) { @@ -95,7 +101,7 @@ public class PdaIOService { mst.setCreate_name(SecurityUtils.getCurrentNickName()); mst.setCreate_time(DateUtil.now()); mst.setCode(CodeUtil.getNewCode("IO_CODE")); - mst.setStatus(StatusEnum.FORM_STATUS.code("生成")); + mst.setStatus(StatusEnum.FORM_STATUS.code("已分配")); mst.setSource_form_id(pdaFormOutMst.getId()); mst.setSource_form_type(pdaFormOutMst.getForm_type()); mst.setProduct_area(mst.getForm_data().getString("product_area")); @@ -104,7 +110,6 @@ public class PdaIOService { mst.setProduct_area(pdaFormOutMst.getProduct_area()); mst.setForm_data(new JSONObject(MapOf.of("shipper",null,"product_area",pdaFormOutMst.getProduct_area()))); List list = new ArrayList<>(); - JSONObject mstJ = (JSONObject) JSONObject.toJSON(pdaFormOutMst); mstJ.remove("children"); mstJ.putAll((Map)mstJ.remove("form_data")); @@ -114,9 +119,6 @@ public class PdaIOService { if (now_assign_qty==null || now_assign_qty.intValue()==0){ throw new BadRequestException("出库申请失败:当前"+dtl.getMaterial_name()+"明细申请数量为0"); } - StIvtIostorinvdtl ivtDtl = new StIvtIostorinvdtl(); - - ivtDtl.setMaterial_id(dtl.getMaterial_id()); String productArea = pdaFormOutMst.getProduct_area(); if (StringUtils.isEmpty(productArea) || !"A1A2A3".contains(productArea)){ throw new BadRequestException("出库申请失败:明细数据车间字段未指定或不正确"); @@ -126,43 +128,61 @@ public class PdaIOService { throw new BadRequestException("出库申请失败:明细数据仓库字段未指定"); } String pcsn = dtl.getPcsn(); - if (StringUtils.isEmpty(pcsn)){ - throw new BadRequestException("明细物料没有指定批号"); - } - List structMaterials = iStIvtStructattrService.getStructIvtAssign(ListOf.of(ivtDtl.getMaterial_id()), storCode); + List structMaterials = iStIvtStructattrService.getStructIvtAssign(ListOf.of(dtl.getMaterial_id()), storCode); if (CollectionUtils.isEmpty(structMaterials)){ - throw new BadRequestException(dtl.getMaterial_code()+"物料该批号库存不足"); + throw new BadRequestException(dtl.getMaterial_code()+"物料库存不足"); } - for (StructAssignQty assignQty : structMaterials) { - if (assignQty.getPcsn().equals(pcsn)){ - boolean b = assignQty.getSto_qty().intValue() >= dtl.getNow_assign_qty().intValue(); - if (!b){ - throw new BadRequestException(dtl.getMaterial_code()+"物料该批号库存不足"); + if (!StringUtils.isEmpty(pcsn)){ + for (StructAssignQty assignQty : structMaterials) { + if (assignQty.getPcsn().equals(pcsn)){ + boolean b = assignQty.getSto_qty().intValue() >= dtl.getNow_assign_qty().intValue(); + if (!b){ + throw new BadRequestException(dtl.getMaterial_code()+"物料该批号库存不足"); + } } } + }else { + int sum = structMaterials.stream().mapToInt(a -> a.getSto_qty().intValue()).sum(); + if (sum MdPbVehicleMaters = iMdPbVehicleMaterService.list(new QueryWrapper() + .in("vehicle_code", vehicles.split(",")) + .eq("is_delete", false)); + Map> pcsnListMap = MdPbVehicleMaters.stream().collect(Collectors.groupingBy(MdPbVehicleMater::getPcsn)); + for (String disPcsn : pcsnListMap.keySet()) { + List currentPcsnMater = pcsnListMap.get(disPcsn); + HashMap map = MapOf.of("end_struct_code", "", "start_struct_code", "", "order", "", "product_area", productArea); + StIvtIostorinvdtl ivtDtl = new StIvtIostorinvdtl(); + ivtDtl.setMaterial_id(dtl.getMaterial_id()); + ivtDtl.setForm_data(new JSONObject(map)); + ivtDtl.setQty(BigDecimal.valueOf(currentPcsnMater.stream().mapToInt(a->a.getFrozen_qty().intValue()).sum())); + ivtDtl.setPcsn(disPcsn); + ivtDtl.setStor_code(storCode);//pdaFormOutMst.getStor_code() + ivtDtl.setId(IdUtil.getStringId()); + ivtDtl.setVehicle_code(currentPcsnMater.stream().map(MdPbVehicleMater::getVehicle_code).collect(Collectors.joining(","))); + ivtDtl.setVehicle_id(currentPcsnMater.stream().map(MdPbVehicleMater::getId).collect(Collectors.joining(","))); + ivtDtl.setInv_id(mst.getId()); + ivtDtl.setStatus(StatusEnum.FORM_STATUS.code("生成")); + ivtDtl.setSource_form_id(dtl.getId()); + ivtDtl.setSource_form_type(dtl.getForm_type()); + 合并主表明细数据:{ + JSONObject sourceFormData = JSONObject.parseObject(mstString); + String dtlStr = JSON.toJSONString(dtl); + JSONObject dtlJ = JSONObject.parseObject(dtlStr); + dtlJ.putAll((Map) dtlJ.remove("form_data")); + sourceFormData.putAll(dtlJ); + ivtDtl.setSource_form_data(sourceFormData); + } + list.add(ivtDtl); } - list.add(ivtDtl); - } - if (CollectionUtils.isEmpty(list)){ - throw new BadRequestException("出库申请失败:出库入明细不能为空"); } iStIvtIostorinvdtlService.saveBatch(list); iStIvtIostorinvService.save(mst); @@ -196,9 +216,6 @@ public class PdaIOService { .set("update_name",nickName) .eq("id",sourceFormid)); } - for (StIvtIostorinvdtl stIvtIostorinvdtl : list) { - iStIvtIostorinvService.outDispense((JSONObject) JSON.toJSON(stIvtIostorinvdtl)); - } return mst; } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java index 49e0db11..1cc5f669 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java @@ -237,10 +237,8 @@ public class PmFormDataServiceImpl extends ServiceImpla.getSto_qty().intValue()).sum())); + child.setPcsn(""); } } pmFormDataDto.setChildren(childs); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java index e5f432ac..58a1b7d7 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java @@ -275,16 +275,18 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl stringMap = iMdPbVehicleMaterService.getVehicleCode2Id(vehicle_code.split(",")); - iStIvtIostorinvDtlService.update(new UpdateWrapper() - .set("vehicle_code", vehicle_code) - .set("vehicle_id", stringMap.values().stream().collect(Collectors.joining(","))) - .eq("id", form.getString("id"))); - int count = iStIvtIostorinvDtlService.count(new QueryWrapper() - .eq("inv_id", form.getString("inv_id")).isNull("vehicle_code")); - if (count == 0) { - this.update(new UpdateWrapper() - .set("status", StatusEnum.FORM_STATUS.code("已分配")) - .eq("id", form.getString("inv_id"))); + if (!StringUtils.isEmpty(form.getString("id"))){ + iStIvtIostorinvDtlService.update(new UpdateWrapper() + .set("vehicle_code", vehicle_code) + .set("vehicle_id", stringMap.values().stream().collect(Collectors.joining(","))) + .eq("id", form.getString("id"))); + int count = iStIvtIostorinvDtlService.count(new QueryWrapper() + .eq("inv_id", form.getString("inv_id")).isNull("vehicle_code")); + if (count == 0) { + this.update(new UpdateWrapper() + .set("status", StatusEnum.FORM_STATUS.code("已分配")) + .eq("id", form.getString("inv_id"))); + } } return vehicle_code; } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java index e82cae27..692e2952 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java @@ -72,7 +72,7 @@ public class SyncFormMappingController { } @GetMapping public ResponseEntity getAll(FormMappingQuery query, PageQuery page) { - return new ResponseEntity<>(TableDataInfo.build(iSyncFormMappingService.page(page.build(), query.build())), HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(iSyncFormMappingService.page(page.build(), query.build())), HttpStatus.OK); } @PostMapping("/create") @Log("创建表同步配置")