diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRecord/vo/ProductscrapRecordDetailExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRecord/vo/ProductscrapRecordDetailExportReqVO.java index ba102d63..9859a389 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRecord/vo/ProductscrapRecordDetailExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRecord/vo/ProductscrapRecordDetailExportReqVO.java @@ -91,4 +91,7 @@ public class ProductscrapRecordDetailExportReqVO { @Schema(description = "任务明细ID") private String jobDetailId; + @Schema(description = "主键ID") + private Long masterID; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRecord/vo/ProductscrapRecordDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRecord/vo/ProductscrapRecordDetailPageReqVO.java index 9ea34847..0ab66b9f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRecord/vo/ProductscrapRecordDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRecord/vo/ProductscrapRecordDetailPageReqVO.java @@ -93,4 +93,7 @@ public class ProductscrapRecordDetailPageReqVO extends PageParam { @Schema(description = "任务明细ID") private String jobDetailId; + @Schema(description = "主键ID") + private Long masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/ProductscrapRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/ProductscrapRequestMainController.java index 67139814..3851f7dc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/ProductscrapRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/ProductscrapRequestMainController.java @@ -9,6 +9,7 @@ import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbUpdateReqVO; import com.win.module.wms.controller.productscrapRequest.vo.*; import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; @@ -225,4 +226,13 @@ public class ProductscrapRequestMainController { return success(pageResult); } + @PostMapping("/updateBom") + @Operation(summary = "更新制品报废申请二级子表") + @PreAuthorize("@ss.hasPermission('wms:productscrap-request-main:update')") + public CommonResult updateProductscrapDetailRequestBom(@RequestParam("id") Long id, @RequestBody List updateReqVOList) { + productscrapRequestMainService.updateProductscrapDetailRequestBom(id, updateReqVOList); + return success(true); + } + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestDetailBaseVO.java index 4114caa5..9f2ed901 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestDetailBaseVO.java @@ -25,22 +25,18 @@ public class ProductscrapRequestDetailBaseVO { private String fromOwnerCode; @Schema(description = "包装号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "包装号不能为空") private String packingNumber; @Schema(description = "器具号") private String containerNumber; @Schema(description = "批次", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "批次不能为空") private String batch; @Schema(description = "从库位代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从库位代码不能为空") private String fromLocationCode; @Schema(description = "库存状态", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "库存状态不能为空") private String inventoryStatus; @Schema(description = "原因") @@ -57,7 +53,6 @@ public class ProductscrapRequestDetailBaseVO { private String remark; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "创建时间不能为空") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime createTime; @@ -97,4 +92,7 @@ public class ProductscrapRequestDetailBaseVO { @Schema(description = "工序代码") private String processCode; + + @Schema(description = "主键ID") + private Long masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java index 519cba55..8e064c92 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainBaseVO.java @@ -94,4 +94,7 @@ public class ProductscrapRequestMainBaseVO { @Schema(description = "班次", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "班次不能为空") private String shift; + + @Schema(description = "主键ID") + private Long masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainExportReqVO.java index 83deb862..1f5c350d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainExportReqVO.java @@ -71,4 +71,12 @@ public class ProductscrapRequestMainExportReqVO { @Schema(description = "直接生成记录") private String directCreateRecord; + @Schema(description = "车间代码") + private String workshopCode; + + @Schema(description = "班组") + private String team; + + @Schema(description = "班次") + private String shift; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainPageReqVO.java index cb39f965..eed3750b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productscrapRequest/vo/ProductscrapRequestMainPageReqVO.java @@ -73,4 +73,13 @@ public class ProductscrapRequestMainPageReqVO extends PageParam { @Schema(description = "直接生成记录") private String directCreateRecord; + @Schema(description = "车间代码") + private String workshopCode; + + @Schema(description = "班组") + private String team; + + @Schema(description = "班次") + private String shift; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productscrapRecord/ProductscrapRecordDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productscrapRecord/ProductscrapRecordDetailDO.java index fee55db3..c1198f13 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productscrapRecord/ProductscrapRecordDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productscrapRecord/ProductscrapRecordDetailDO.java @@ -115,7 +115,7 @@ public class ProductscrapRecordDetailDO extends BaseDO { /** * 主表ID */ - private String masterId; + private Long masterId; /** * 单据号 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productscrapRecord/ProductscrapRecordDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productscrapRecord/ProductscrapRecordDetailMapper.java index 4be7aba7..5f886fd5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productscrapRecord/ProductscrapRecordDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productscrapRecord/ProductscrapRecordDetailMapper.java @@ -47,6 +47,7 @@ public interface ProductscrapRecordDetailMapper extends BaseMapperX selectSenior(CustomConditions conditions) { @@ -79,6 +80,7 @@ public interface ProductscrapRecordDetailMapper extends BaseMapperX getProductscrapRequestDetailList(ProductscrapRequestDetailExportReqVO exportReqVO); + /** + * 校验子表数据 + * @param detailCreateReqVO + * @param businesstypeDO + * @param productscrapRequestMainDO + */ + void validateDetailMethod(ProductscrapRequestDetailBaseVO detailCreateReqVO, BusinesstypeDO businesstypeDO, ProductscrapRequestMainDO productscrapRequestMainDO); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestDetailServiceImpl.java index f6858c46..f4c3b9df 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestDetailServiceImpl.java @@ -1,10 +1,22 @@ package com.win.module.wms.service.productscrapRequest; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailCreateReqVO; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailExportReqVO; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailPageReqVO; -import com.win.module.wms.controller.productscrapRequest.vo.ProductscrapRequestDetailUpdateReqVO; +import com.win.module.wms.controller.productscrapRequest.vo.*; +import com.win.module.wms.convert.productscrapRequest.RawscrapRequestDetailConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; +import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; +import com.win.module.wms.dal.dataobject.productscrapRequest.RawscrapRequestDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; +import com.win.module.wms.dal.mysql.productscrapRequest.ProductscrapRequestMainMapper; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.productionline.ProductionlineService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.workstation.WorkstationService; +import com.win.module.wms.util.JobUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -31,11 +43,28 @@ public class ProductscrapRequestDetailServiceImpl implements ProductscrapRequest @Resource private ProductscrapRequestDetailMapper productscrapRequestDetailMapper; + @Resource + private ProductscrapRequestMainMapper productscrapRequestMainMapper; + @Resource + private ProductionlineService productionlineService; + @Resource + private ItembasicService itembasicService; + @Resource + private WorkstationService workstationService; + @Resource + private JobUtils jobUtils; + @Resource + private RequestsettingService requestsettingService; @Override public Long createProductscrapRequestDetail(ProductscrapRequestDetailCreateReqVO createReqVO) { - // 插入 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); + ProductscrapRequestMainDO productscrapRequestMainDO = productscrapRequestMainMapper.selectById(createReqVO.getMasterId()); + // 校验数据 + this.validateDetailMethod(createReqVO,businesstypeDO,productscrapRequestMainDO); ProductscrapRequestDetailDO productscrapRequestDetail = ProductscrapRequestDetailConvert.INSTANCE.convert(createReqVO); + productscrapRequestDetail.setMasterId(createReqVO.getMasterId()); + productscrapRequestDetail.setNumber(productscrapRequestMainDO.getNumber()); productscrapRequestDetailMapper.insert(productscrapRequestDetail); // 返回 return productscrapRequestDetail.getId(); @@ -45,8 +74,14 @@ public class ProductscrapRequestDetailServiceImpl implements ProductscrapRequest public void updateProductscrapRequestDetail(ProductscrapRequestDetailUpdateReqVO updateReqVO) { // 校验存在 validateProductscrapRequestDetailExists(updateReqVO.getId()); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); + ProductscrapRequestMainDO productscrapRequestMainDO = productscrapRequestMainMapper.selectById(updateReqVO.getMasterId()); + // 校验数据 + this.validateDetailMethod(updateReqVO,businesstypeDO,productscrapRequestMainDO); // 更新 ProductscrapRequestDetailDO updateObj = ProductscrapRequestDetailConvert.INSTANCE.convert(updateReqVO); + updateObj.setMasterId(updateReqVO.getMasterId()); + updateObj.setNumber(productscrapRequestMainDO.getNumber()); productscrapRequestDetailMapper.updateById(updateObj); } @@ -57,10 +92,12 @@ public class ProductscrapRequestDetailServiceImpl implements ProductscrapRequest // 删除 productscrapRequestDetailMapper.deleteById(id); } + @Override public PageResult getProductscrapRequestDetailSenior(CustomConditions conditions) { return productscrapRequestDetailMapper.selectSenior(conditions); } + private void validateProductscrapRequestDetailExists(Long id) { if (productscrapRequestDetailMapper.selectById(id) == null) { throw exception(PRODUCTSCRAP_REQUEST_DETAIL_NOT_EXISTS); @@ -87,4 +124,44 @@ public class ProductscrapRequestDetailServiceImpl implements ProductscrapRequest return productscrapRequestDetailMapper.selectList(exportReqVO); } + @Override + public void validateDetailMethod(ProductscrapRequestDetailBaseVO detailCreateReqVO, BusinesstypeDO businesstypeDO, ProductscrapRequestMainDO productscrapRequestMainDO) { + // 校验--生产线基本信息 + ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailCreateReqVO.getProductionLineCode()); + detailCreateReqVO.setFromLocationCode(productionlineDO.getRawLocationCode()); + // 校验--物品基本信息 BQ——>QI + ItembasicDO itembasic = validatorItembasic(detailCreateReqVO.getItemCode()); + detailCreateReqVO.setItemDesc1(itembasic.getDesc1()); + detailCreateReqVO.setItemDesc2(itembasic.getDesc2()); + detailCreateReqVO.setItemName(itembasic.getName()); + detailCreateReqVO.setProjectCode(itembasic.getProject()); + detailCreateReqVO.setUom(itembasic.getUom()); + // 校验--工位基础信息 + if(StringUtils.isNotEmpty(detailCreateReqVO.getWorkStationCode())){ + WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailCreateReqVO.getWorkStationCode(), productscrapRequestMainDO.getWorkshopCode(), detailCreateReqVO.getProductionLineCode()); + detailCreateReqVO.setFromLocationCode(workstationDO.getRawLocationCode()); + } + // 校验--uom + // validatorUom(detailCreateReqVO.getUom(), itembasic.getUom()); + // 校验--物品类型 DBT---DBT2---IT1 + jobUtils.ifInType(itembasic.getType(), businesstypeDO); + // 校验--来源库位 DBT——>DBT2——>LO + jobUtils.ifInToLocationType(detailCreateReqVO.getFromLocationCode(), businesstypeDO); + // 校验--库存状态 DBT——>DBT2——>ISO + // jobUtils.ifOutInventoryStatuses(detailCreateReqVO.getInventoryStatus(), businesstypeDO); + // 校验--库存余额 TB——>TB1 +// List business = validatorbusinessbasic(detailCreateReqVO.getInventoryStatus()); +// List balance = validatorbalance(detailCreateReqVO.getItemCode(), detailCreateReqVO.getPackingNumber(),detailCreateReqVO.getBatch(), detailCreateReqVO.getFromLocationCode(), business); +// BalanceDO balanceDO = balance.get(0); +// productscrapRequestMainDO.setFromWarehouseCode(balanceDO.getWarehouseCode()); +// productscrapRequestMainDO.setDueTime(balanceDO.getExpireDate()); +// detailCreateReqVO.setFromLocationCode(balanceDO.getLocationCode()); +// // 校验 报废数量【qty】不能大于库存数量【banlance.qty】 +// validatorQty(detailCreateReqVO.getQty(), balanceDO.getQty()); + } + + private ItembasicDO validatorItembasic(String itemCode) { + return itembasicService.selectItembasic(itemCode); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainService.java index cc606c0d..746dfcfa 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainService.java @@ -136,4 +136,11 @@ public interface ProductscrapRequestMainService { * @return 分页列表数据 */ PageResult getBomInfoPage(ProductscrapRequestDetailPageReqVO pageVO); + + /** + * 更新BOM拆解二级子表数据 + * @param id 一级子表的ID + * @param updateReqVOList 二级子表列表数据 + */ + void updateProductscrapDetailRequestBom(Long id, List updateReqVOList); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java index 7b0f2d04..1a4e705d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java @@ -1,6 +1,7 @@ package com.win.module.wms.service.productscrapRequest; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.google.common.annotations.VisibleForTesting; import com.win.framework.common.exception.ServiceException; @@ -28,7 +29,6 @@ import com.win.module.wms.convert.productscrapRequest.RawscrapRequestDetailConve import com.win.module.wms.dal.dataobject.balance.BalanceDO; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; -import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productscrapRecord.ProductscrapRecordDetailDO; import com.win.module.wms.dal.dataobject.productscrapRecord.ProductscrapRecordMainDO; import com.win.module.wms.dal.dataobject.productscrapRecord.RawscrapRecordDetailDO; @@ -39,7 +39,6 @@ import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.shift.ShiftDO; import com.win.module.wms.dal.dataobject.team.TeamDO; import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; -import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.productscrapRecord.ProductscrapRecordDetailMapper; import com.win.module.wms.dal.mysql.productscrapRecord.ProductscrapRecordMainMapper; import com.win.module.wms.dal.mysql.productscrapRecord.RawscrapRecordDetailMapper; @@ -49,14 +48,12 @@ import com.win.module.wms.dal.mysql.productscrapRequest.RawscrapRequestDetailMap import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.enums.request.RequestStatusState; import com.win.module.wms.service.itembasic.ItembasicService; -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.shift.ShiftService; import com.win.module.wms.service.team.TeamService; import com.win.module.wms.service.transaction.TransactionService; import com.win.module.wms.service.workshop.WorkshopService; -import com.win.module.wms.service.workstation.WorkstationService; import com.win.module.wms.util.JobUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -123,9 +120,9 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Resource private ShiftService shiftService; @Resource - private ProductionlineService productionlineService; + private ProductscrapRequestDetailService productscrapRequestDetailService; @Resource - private WorkstationService workstationService; + private RawscrapRequestDetailService rawscrapRequestDetailService; @Override public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) { @@ -216,7 +213,8 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa // 子表校验 List subList = createReqVO.getSubList(); for(ProductscrapRequestDetailCreateReqVO detailCreateReqVO:subList){ - validateDetailMethod(detailCreateReqVO, businesstypeDO,mainBo); + // 子表数据校验 + productscrapRequestDetailService.validateDetailMethod(detailCreateReqVO, businesstypeDO,mainBo); } String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_SCRAP_REQUEST.getCode()); mainBo.setNumber(number); @@ -233,7 +231,7 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa rawscrapRequestDetailDO.setMasterId(detailDO.getId()); rawscrapRequestDetailDO.setNumber(detailDO.getNumber()); // 校验--二级子表数据 - validateDetailbBom(rawscrapRequestDetailDO,detailDO,mainBo); + rawscrapRequestDetailService.validateDetailbBom(rawscrapRequestDetailDO,detailDO,mainBo); rawscrapRequestDetailDO.setId(null); childList.add(rawscrapRequestDetailDO); } @@ -242,62 +240,6 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa return mainBo; } - private void validateDetailbBom(RawscrapRequestDetailDO rawscrapRequestDetailDO, ProductscrapRequestDetailDO detailDO, ProductscrapRequestMainDO mainBo) { - // 校验--物品基本信息 - ItembasicDO itembasicDO = itembasicService.selectItembasic(rawscrapRequestDetailDO.getItemCode()); - // 赋值物品Item相关信息 - rawscrapRequestDetailDO.setItemDesc1(itembasicDO.getDesc1()); - rawscrapRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); - rawscrapRequestDetailDO.setItemName(itembasicDO.getName()); - rawscrapRequestDetailDO.setProjectCode(itembasicDO.getProject()); - // 校验库存余额 - List inventoryStatus = new ArrayList<>(); - inventoryStatus.add("OK"); // 查询合格的边料库存余额 - List list = jobUtils.selectlocationReturnManagementAccuracy(rawscrapRequestDetailDO.getItemCode(),null,null,detailDO.getFromLocationCode(),inventoryStatus); - BalanceDO balanceDO = list.get(0); // 去第一条库存余额 - rawscrapRequestDetailDO.setInventoryStatus(balanceDO.getInventoryStatus()); - rawscrapRequestDetailDO.setBatch(balanceDO.getBatch()); - rawscrapRequestDetailDO.setPackingNumber(balanceDO.getPackingNumber()); - rawscrapRequestDetailDO.setFromLocationCode(balanceDO.getLocationCode()); - rawscrapRequestDetailDO.setCreateTime(LocalDateTime.now()); - rawscrapRequestDetailDO.setCreator(null); - } - - private void validateDetailMethod(ProductscrapRequestDetailBaseVO detailCreateReqVO, BusinesstypeDO businesstypeDO, ProductscrapRequestMainDO productscrapRequestMainDO) { - // 校验--生产线基本信息 - ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailCreateReqVO.getProductionLineCode()); - detailCreateReqVO.setFromLocationCode(productionlineDO.getRawLocationCode()); - // 校验--物品基本信息 BQ——>QI - ItembasicDO itembasic = validatorItembasic(detailCreateReqVO.getItemCode()); - detailCreateReqVO.setItemDesc1(itembasic.getDesc1()); - detailCreateReqVO.setItemDesc2(itembasic.getDesc2()); - detailCreateReqVO.setItemName(itembasic.getName()); - detailCreateReqVO.setProjectCode(itembasic.getProject()); - detailCreateReqVO.setUom(itembasic.getUom()); - // 校验--工位基础信息 - if(StringUtils.isNotEmpty(detailCreateReqVO.getWorkStationCode())){ - WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailCreateReqVO.getWorkStationCode(), productscrapRequestMainDO.getWorkshopCode(), detailCreateReqVO.getProductionLineCode()); - detailCreateReqVO.setFromLocationCode(workstationDO.getRawLocationCode()); - } - // 校验--uom - // validatorUom(detailCreateReqVO.getUom(), itembasic.getUom()); - // 校验--物品类型 DBT---DBT2---IT1 - jobUtils.ifInType(itembasic.getType(), businesstypeDO); - // 校验--来源库位 DBT——>DBT2——>LO - jobUtils.ifInToLocationType(detailCreateReqVO.getFromLocationCode(), businesstypeDO); - // 校验--库存状态 DBT——>DBT2——>ISO - // jobUtils.ifOutInventoryStatuses(detailCreateReqVO.getInventoryStatus(), businesstypeDO); - // 校验--库存余额 TB——>TB1 -// List business = validatorbusinessbasic(detailCreateReqVO.getInventoryStatus()); -// List balance = validatorbalance(detailCreateReqVO.getItemCode(), detailCreateReqVO.getPackingNumber(),detailCreateReqVO.getBatch(), detailCreateReqVO.getFromLocationCode(), business); -// BalanceDO balanceDO = balance.get(0); -// productscrapRequestMainDO.setFromWarehouseCode(balanceDO.getWarehouseCode()); -// productscrapRequestMainDO.setDueTime(balanceDO.getExpireDate()); -// detailCreateReqVO.setFromLocationCode(balanceDO.getLocationCode()); -// // 校验 报废数量【qty】不能大于库存数量【banlance.qty】 -// validatorQty(detailCreateReqVO.getQty(), balanceDO.getQty()); - } - private ProductscrapRequestMainDO validateMainMethod(ProductscrapRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { ProductscrapRequestMainDO productscrapRequestMainDO = ProductscrapRequestMainConvert.INSTANCE.convert(baseVO); RequestStatusState requestStatusState = new RequestStatusState(); @@ -376,7 +318,8 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa List subList = updateReqVO.getSubList(); if(subList!=null) { for (ProductscrapRequestDetailUpdateReqVO detailUpdateReqVO : subList) { - validateDetailMethod(detailUpdateReqVO, businesstypeDO, productputawayRequestMainDO); + // 子表数据校验 + productscrapRequestDetailService.validateDetailMethod(detailUpdateReqVO, businesstypeDO, productputawayRequestMainDO); } List subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList05(subList); productscrapRequestDetailMapper.updateBatch(subDOList); @@ -731,5 +674,28 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa PageResult pageResult = new PageResult(myPage.getRecords(),myPage.getTotal()); return pageResult; } + + @Transactional + @Override + public void updateProductscrapDetailRequestBom(Long id, List updateReqVOList) { + // 删除之前的数据 + LambdaQueryWrapper requestDetailDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); + requestDetailDOLambdaQueryWrapper.eq(RawscrapRequestDetailDO::getMasterId,id); + rawscrapRequestDetailMapper.delete(requestDetailDOLambdaQueryWrapper); + // 查询子表数据 + ProductscrapRequestDetailDO productscrapRequestDetailDO = productscrapRequestDetailMapper.selectById(id); + ProductscrapRequestMainDO productscrapRequestMainDO = productscrapRequestMainMapper.selectById(productscrapRequestDetailDO.getMasterId()); + List childList = new ArrayList<>(); + for(RawscrapRequestDetailUpdateReqVO rawscrapRequestDetailUpdateReqVO:updateReqVOList){ + RawscrapRequestDetailDO rawscrapRequestDetailDO = RawscrapRequestDetailConvert.INSTANCE.convert(rawscrapRequestDetailUpdateReqVO); + rawscrapRequestDetailDO.setMasterId(productscrapRequestDetailDO.getId()); + rawscrapRequestDetailDO.setNumber(productscrapRequestDetailDO.getNumber()); + // 校验--二级子表数据 + rawscrapRequestDetailService.validateDetailbBom(rawscrapRequestDetailDO,productscrapRequestDetailDO,productscrapRequestMainDO); + rawscrapRequestDetailDO.setId(null); + childList.add(rawscrapRequestDetailDO); + } + rawscrapRequestDetailMapper.insertBatch(childList); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/RawscrapRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/RawscrapRequestDetailService.java index eafec8eb..6d4401dc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/RawscrapRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/RawscrapRequestDetailService.java @@ -2,6 +2,8 @@ package com.win.module.wms.service.productscrapRequest; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.productscrapRequest.vo.*; +import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO; +import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; import com.win.module.wms.dal.dataobject.productscrapRequest.RawscrapRequestDetailDO; import javax.validation.Valid; @@ -77,5 +79,13 @@ public interface RawscrapRequestDetailService { * @param updatePart 是否支持更新 * @return 导入结果 */ - public List importRawscrapRequestDetailList(List datas, Integer mode, boolean updatePart); + List importRawscrapRequestDetailList(List datas, Integer mode, boolean updatePart); + + /** + * 校验子表数据 + * @param rawscrapRequestDetailDO 请求数据 + * @param detailDO 一级子表 + * @param mainBo 主表 + */ + void validateDetailbBom(RawscrapRequestDetailDO rawscrapRequestDetailDO, ProductscrapRequestDetailDO detailDO, ProductscrapRequestMainDO mainBo); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/RawscrapRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/RawscrapRequestDetailServiceImpl.java index 4edcfc70..3b7b1374 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/RawscrapRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/RawscrapRequestDetailServiceImpl.java @@ -4,12 +4,19 @@ import cn.hutool.core.collection.CollUtil; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.productscrapRequest.vo.*; import com.win.module.wms.convert.productscrapRequest.RawscrapRequestDetailConvert; +import com.win.module.wms.dal.dataobject.balance.BalanceDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestDetailDO; +import com.win.module.wms.dal.dataobject.productscrapRequest.ProductscrapRequestMainDO; import com.win.module.wms.dal.dataobject.productscrapRequest.RawscrapRequestDetailDO; import com.win.module.wms.dal.mysql.productscrapRequest.RawscrapRequestDetailMapper; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -29,6 +36,10 @@ public class RawscrapRequestDetailServiceImpl implements RawscrapRequestDetailSe @Resource private RawscrapRequestDetailMapper rawscrapRequestDetailMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private JobUtils jobUtils; @Override public Long createRawscrapRequestDetail(RawscrapRequestDetailCreateReqVO createReqVO) { @@ -106,4 +117,27 @@ public class RawscrapRequestDetailServiceImpl implements RawscrapRequestDetailSe return errorList; } + + @Override + public void validateDetailbBom(RawscrapRequestDetailDO rawscrapRequestDetailDO, ProductscrapRequestDetailDO detailDO, ProductscrapRequestMainDO mainBo) { + // 校验--物品基本信息 + ItembasicDO itembasicDO = itembasicService.selectItembasic(rawscrapRequestDetailDO.getItemCode()); + // 赋值物品Item相关信息 + rawscrapRequestDetailDO.setItemDesc1(itembasicDO.getDesc1()); + rawscrapRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); + rawscrapRequestDetailDO.setItemName(itembasicDO.getName()); + rawscrapRequestDetailDO.setProjectCode(itembasicDO.getProject()); + // 校验库存余额 + List inventoryStatus = new ArrayList<>(); + inventoryStatus.add("OK"); // 查询合格的边料库存余额 + List list = jobUtils.selectlocationReturnManagementAccuracy(rawscrapRequestDetailDO.getItemCode(),null,null,detailDO.getFromLocationCode(),inventoryStatus); + BalanceDO balanceDO = list.get(0); // 去第一条库存余额 + rawscrapRequestDetailDO.setInventoryStatus(balanceDO.getInventoryStatus()); + rawscrapRequestDetailDO.setBatch(balanceDO.getBatch()); + rawscrapRequestDetailDO.setPackingNumber(balanceDO.getPackingNumber()); + rawscrapRequestDetailDO.setFromLocationCode(balanceDO.getLocationCode()); + rawscrapRequestDetailDO.setCreateTime(LocalDateTime.now()); + rawscrapRequestDetailDO.setCreator(null); + } + }