From 5123d513f21ac399e1b446327eda9757e7e59e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Wed, 27 Dec 2023 13:22:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=BA=BF=E7=89=A9?= =?UTF-8?q?=E5=93=81=E5=85=B3=E7=B3=BB=20=E5=8E=BB=E6=8E=89=20=E6=88=90?= =?UTF-8?q?=E5=93=81=E5=BA=93=E5=8E=9F=E6=96=99=E5=BA=93=E5=BF=85=E5=A1=AB?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/ProductionlineitemBaseVO.java | 2 -- .../PackageoverMainServiceImpl.java | 34 +++++++++++++++++-- ...uctdismantleRequestDetailaServiceImpl.java | 12 +++---- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionlineitem/vo/ProductionlineitemBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionlineitem/vo/ProductionlineitemBaseVO.java index fbde721b..4ac4efe8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionlineitem/vo/ProductionlineitemBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionlineitem/vo/ProductionlineitemBaseVO.java @@ -20,11 +20,9 @@ public class ProductionlineitemBaseVO { private Long id; @Schema(description = "完工收货库位", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "完工收货库位不能为空") private String fgLocationCode; @Schema(description = "产线代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "产线代码不能为空") private String productionLineCode; @Schema(description = "物品代码", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageovermain/PackageoverMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageovermain/PackageoverMainServiceImpl.java index da9207b6..823e578d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageovermain/PackageoverMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageovermain/PackageoverMainServiceImpl.java @@ -171,7 +171,7 @@ public class PackageoverMainServiceImpl implements PackageoverMainService { transactionCreateReqVOOut.setId(null); transactionCreateReqVOList.add(transactionCreateReqVOOut); // 更新包装信息——来源包装 - updatePackageDO(detailDO.getFromPackingNumber(),detailDO.getFromQty()); + updatePackageDO(detailDO.getFromPackingNumber(),balanceDO.get(0).getQty().subtract(detailDO.getFromQty())); // 查询一翻几的规则 在基础包装中 翻几 = 标包数量/替代标包数量 库存余额中不够分配的 向上取整 // 例如:库存余额24 翻3包 每包10 那么第一包数量10 第二包数量10 第三包数量4 // 例如:库存余额5 翻3包 每包10 那么第一包数量5 @@ -210,13 +210,43 @@ public class PackageoverMainServiceImpl implements PackageoverMainService { packageDO = packageService.createPackageLabel(packagecreateReqVO); packageoverDetailDO.setToPackingNumber(packageDO.getNumber()); packageoverDetailDO.setToQty(balanceQty); + // 库存事务——入 + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + BeanUtils.copyProperties(packageoverDetailDO, transactionCreateReqVOIn); + transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactiontypeDOIn = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVOIn.setInventoryAction(transactiontypeDOIn.getInventoryAction()); + transactionCreateReqVOIn.setTransactionType(transactiontypeDOIn.getCode()); + transactionCreateReqVOIn.setWorker(String.valueOf(userRespDTO.getId())); + transactionCreateReqVOIn.setBatch(packageoverDetailDO.getToBatch()); + transactionCreateReqVOIn.setPackingNumber(packageoverDetailDO.getToPackingNumber()); + transactionCreateReqVOIn.setInventoryStatus(packageoverDetailDO.getToInventoryStatus()); + transactionCreateReqVOIn.setLocationCode(packageoverDetailDO.getLocationCode()); + transactionCreateReqVOIn.setSinglePrice(BigDecimal.ZERO); + transactionCreateReqVOIn.setAmount(BigDecimal.ZERO); + transactionCreateReqVOIn.setArriveDate(LocalDateTime.now()); + transactionCreateReqVOIn.setProduceDate(LocalDateTime.now()); + transactionCreateReqVOIn.setExpireDate(LocalDateTime.now()); + transactionCreateReqVOIn.setWarehouseCode(mainDO.getWarehouseCode()); + transactionCreateReqVOIn.setRecordNumber(number); + transactionCreateReqVOIn.setQty(packageoverDetailDO.getToQty()); + transactionCreateReqVOIn.setId(null); + transactionCreateReqVOList.add(transactionCreateReqVOIn); + packageoverDetailDOList.add(packageoverDetailDO); break; } else { - //库存余额数量 < 替代标包数量 + //替代标包数量 < 库存余额数量 packagecreateReqVO.setQty(altPackQty); packageDO = packageService.createPackageLabel(packagecreateReqVO); packageoverDetailDO.setToPackingNumber(packageDO.getNumber()); packageoverDetailDO.setToQty(altPackQty); + // 当 循环最后一次 库存余额数 仍然 大于 替代标包数量 最后一包放入所有库存数量 + if (overCount.intValue()-1 == i) { + packagecreateReqVO.setQty(balanceQty); + packageDO = packageService.createPackageLabel(packagecreateReqVO); + packageoverDetailDO.setToPackingNumber(packageDO.getNumber()); + packageoverDetailDO.setToQty(balanceQty); + } balanceQty = balanceQty.subtract(altPackQty); } packageoverDetailDOList.add(packageoverDetailDO); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailaServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailaServiceImpl.java index 2a5e9045..d184a15c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailaServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailaServiceImpl.java @@ -101,7 +101,7 @@ public class ProductdismantleRequestDetailaServiceImpl implements Productdismant private void validateDetailMethod(ProductdismantleRequestMainDO mainDO, ProductdismantleRequestDetailaDO detailDo, BusinesstypeDO businesstypeDO) { // 校验--生产线基本信息 ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); - detailDo.setFromLocationCode(productionlineDO.getRawLocationCode()); +// detailDo.setFromLocationCode(productionlineDO.getRawLocationCode()); // 校验--物品基本信息 ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); // 赋值物品Item相关信息 @@ -113,11 +113,11 @@ public class ProductdismantleRequestDetailaServiceImpl implements Productdismant // 提示:计量单位【uom】错误,应该是【item.uom】 throw exception(ITEMBASIC_UOM_EXCEPTION,detailDo.getUom(),itembasicDO.getUom()); } - // 校验--工位基础信息 - if(StringUtils.isNotEmpty(detailDo.getWorkStationCode())){ - WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode()); - detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); - } + // 校验--工位基础信息 以库存余额中的库位为准 此处无需赋值 +// if(StringUtils.isNotEmpty(detailDo.getWorkStationCode())){ +// WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode()); +// detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); +// } // 校验--库存余额 TB——>TB1 validateBalance(detailDo,mainDO); // 校验--物品类型 DBT——>DBT2——>IT From 5b17da9965cdf9fb30095edbb31a33088f7b8b92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Wed, 27 Dec 2023 14:08:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=BA=BF=E7=89=A9?= =?UTF-8?q?=E5=93=81=E5=85=B3=E7=B3=BB=20=E5=8F=8A=20=E6=88=90=E6=9C=AC?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stdcostprice/vo/StdcostpriceBaseVO.java | 1 - ...roductdismantleRequestMainServiceImpl.java | 21 +++++++++++++ .../ProductionlineitemServiceImpl.java | 2 +- .../stdcostprice/StdcostpriceServiceImpl.java | 30 +++++++++---------- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/vo/StdcostpriceBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/vo/StdcostpriceBaseVO.java index 380c583d..f32273da 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/vo/StdcostpriceBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/vo/StdcostpriceBaseVO.java @@ -21,7 +21,6 @@ public class StdcostpriceBaseVO { private Long id; @Schema(description = "供应商代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "供应商代码不能为空") private String supplierCode; @Schema(description = "物料代码", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainServiceImpl.java index 8e7bb624..094dbaa8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainServiceImpl.java @@ -1,6 +1,7 @@ package com.win.module.wms.service.productdismantleRequest; import cn.hutool.core.exceptions.UtilException; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; @@ -14,6 +15,7 @@ import com.win.module.wms.controller.productdismantleRequest.vo.*; import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaBaseVO; import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaCreateReqVO; import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailbCreateReqVO; +import com.win.module.wms.controller.rule.vo.RuleRespVO; import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestDetailaConvert; import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestDetailbConvert; @@ -56,6 +58,7 @@ import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.productionline.ProductionlineService; import com.win.module.wms.service.recordsetting.RecordsettingService; import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.rule.RuleService; import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.team.TeamService; import com.win.module.wms.service.transaction.TransactionService; @@ -90,6 +93,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class ProductdismantleRequestMainServiceImpl implements ProductdismantleRequestMainService { + @Resource + private RuleService ruleService; @Resource private TransactionService transactionService; @Resource @@ -548,6 +553,22 @@ public class ProductdismantleRequestMainServiceImpl implements ProductdismantleR productdismantleRecordDetailbDO.setCreator(null); productdismantleRecordDetailbDO.setUpdateTime(null); productdismantleRecordDetailbDO.setUpdater(null); + // 查询管理精度策略 +// RuleRespVO managementtRule = ruleService.management(null, null, productdismantleRequestDetailbDO.getItemCode(), workstationDO.getRawLocationCode(), null, null); +// JSONObject jsonObject = new JSONObject(managementtRule.getConfiguration()); +// if(!"TRUE".equals(jsonObject.getStr("ManagementPrecision"))) { +// this.deleteById(balanceDO.getId()); +// } +// if ("{\"ManagementPrecision\":\"BY_QUANTITY\"}".equals(managementtRule.getConfiguration())) { +// balanceDOList = balanceService.selectByNumber(itemcode, inventoryStatus, locationcode); +// } else if ("{\"ManagementPrecision\":\"BY_BATCH\"}".equals(managementtRule.getConfiguration())) { +// balanceDOList = balanceService.selectByBatch(itemcode, batch, inventoryStatus, locationcode); +// } else if ("{\"ManagementPrecision\":\"BY_PACKAGING\"}".equals(managementtRule.getConfiguration())) { +// balanceDOList = balanceService.selectByPackaging(itemcode, packingnumber, batch, inventoryStatus, locationcode); +// } else if ("{\"ManagementPrecision\":\"BY_UNIQUE_ID\"}".equals(managementtRule.getConfiguration())) { +// balanceDOList = balanceService.selectByUniqueId(packingnumber, locationcode, inventoryStatus); +// } + detailbDOList.add(productdismantleRecordDetailbDO); //添加库存事务list // 入动作 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java index 758a6163..9d8811c7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java @@ -135,7 +135,7 @@ public class ProductionlineitemServiceImpl implements ProductionlineitemService // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 DataPermissionUtils.executeIgnore(() -> { validateProductionlineitemExists(id); - validateFgLocationCodeExists(fgLocationCode); +// validateFgLocationCodeExists(fgLocationCode); validateProductionLineCodeExists(productionLineCode); validateItemCodeExists(itemCode); validateAvailableExists(available); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceServiceImpl.java index e65d9dee..f30eab50 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceServiceImpl.java @@ -106,11 +106,11 @@ public class StdcostpriceServiceImpl implements StdcostpriceService { } catch (ServiceException ex) { message.append(ex.getMessage()).append(","); } - try { - validateSuppercodeExists(stdcostprice.getSupplierCode()); - } catch (ServiceException ex) { - message.append(ex.getMessage()).append(","); - } +// try { +// validateSuppercodeExists(stdcostprice.getSupplierCode()); +// } catch (ServiceException ex) { +// message.append(ex.getMessage()).append(","); +// } try { validateCurrencyExists(stdcostprice.getCurrency()); } catch (ServiceException ex) { @@ -172,7 +172,7 @@ public class StdcostpriceServiceImpl implements StdcostpriceService { validateStdcostpriceExists(id); // 校验code唯一 validateCodeExists(id,itemcode,suppercode); - validateSuppercodeExists(suppercode); +// validateSuppercodeExists(suppercode); validateCurrencyExists(currency); validatePriceExists(price); validateAvailableExists(available); @@ -194,9 +194,9 @@ public class StdcostpriceServiceImpl implements StdcostpriceService { if (itemcode.isEmpty()) { throw exception(STDCOSTPRICE_ITEN_CODE_NOT_EXISTS); } - if (suppercode.isEmpty()) { - throw exception(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS); - } +// if (suppercode.isEmpty()) { +// throw exception(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS); +// } if (StrUtil.isBlank(itemcode)) { return; } @@ -216,12 +216,12 @@ public class StdcostpriceServiceImpl implements StdcostpriceService { } } - @VisibleForTesting - private void validateSuppercodeExists(String suppercode) { - if (suppercode.isEmpty()) { - throw exception(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS); - } - } +// @VisibleForTesting +// private void validateSuppercodeExists(String suppercode) { +// if (suppercode.isEmpty()) { +// throw exception(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS); +// } +// } @VisibleForTesting private void validateCurrencyExists(String currency) { if (currency.isEmpty()) {