diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/RuleController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/RuleController.java index 3bf3efa3..058282c4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/RuleController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/RuleController.java @@ -3,19 +3,13 @@ package com.win.module.wms.controller.rule; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.dict.core.util.DictFrameworkUtils; 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.itembasic.vo.ItembasicExcelVO; -import com.win.module.wms.controller.itembasic.vo.ItembasicExportReqVO; import com.win.module.wms.controller.rule.vo.*; -import com.win.module.wms.convert.itembasic.ItembasicConvert; import com.win.module.wms.convert.rule.RuleConvert; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.rule.RuleDO; -import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.rule.RuleService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -27,7 +21,6 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; - import java.io.IOException; import java.util.HashMap; import java.util.List; @@ -80,6 +73,7 @@ public class RuleController { RuleDO rule = ruleService.getRule(id); return success(RuleConvert.INSTANCE.convert(rule)); } + @PostMapping("/senior") @Operation(summary = "高级搜索获得物品基本信息分页") @PreAuthorize("@ss.hasPermission('wms:rule:query')") @@ -109,17 +103,26 @@ public class RuleController { List> list = ruleService.getPrecisionStrategyByItemCodes(reqVO); return success(list); } + + @PostMapping("/getPrecisionStrategy") + @Operation(summary = "根据零件号和库位号查询管理精度策略") + @PreAuthorize("@ss.hasPermission('wms:rule:query')") + public CommonResult getPrecisionStrategy(@Valid @RequestBody List reqVO2List) { + List> list = ruleService.getPrecisionStrategy(reqVO2List); + return success(list); + } + @GetMapping("/export-excel") @Operation(summary = "导出规则配置 Excel") @PreAuthorize("@ss.hasPermission('wms:rule:export')") @OperateLog(type = EXPORT) - public void exportRuleExcel(@Valid RuleExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { + public void exportRuleExcel(@Valid RuleExportReqVO exportReqVO, HttpServletResponse response) throws IOException { List list =ruleService.getRuleList(exportReqVO); Map mapDropDown = new HashMap<>(); List resultList = this.getExcelVo(list, mapDropDown); ExcelUtils.write(response, "物品基本信息.xlsx", "数据", RuleExcelVO.class, resultList, mapDropDown); } + @PostMapping("/export-excel-senior") @Operation(summary = "导出规则配置 Excel") @PreAuthorize("@ss.hasPermission('wms:rule:export')") @@ -130,8 +133,8 @@ public class RuleController { List resultList = this.getExcelVo(list, mapDropDown); ExcelUtils.write(response, "物品基本信息.xlsx", "数据", RuleExcelVO.class, resultList, mapDropDown); } - private List getExcelVo(List list, Map mapDropDown) { + private List getExcelVo(List list, Map mapDropDown) { // 导出 Excel List resultList = RuleConvert.INSTANCE.convertList02(list); for(RuleExcelVO vo : resultList) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/vo/PrecisionStrategyReqVO2.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/vo/PrecisionStrategyReqVO2.java new file mode 100644 index 00000000..fc7a27b1 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/rule/vo/PrecisionStrategyReqVO2.java @@ -0,0 +1,19 @@ +package com.win.module.wms.controller.rule.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Schema(description = "APP管理精度策略") +@Data +public class PrecisionStrategyReqVO2 { + + @Schema(description = "物品代码") + @NotBlank(message = "物品代码不能为空") + private String itemCode; + + @Schema(description = "库位代码") + @NotBlank(message = "库位代码不能为空") + private String locationCode; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainServiceImpl.java index 1a055d11..a65415ef 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverJob/DeliverJobMainServiceImpl.java @@ -258,7 +258,6 @@ public class DeliverJobMainServiceImpl implements DeliverJobMainService { @Override @Transactional public String executeDeliverJobMain(DeliverJobMainUpdateReqVO deliverJobMainUpdateReqVO) { - BigDecimal zero = BigDecimal.ZERO; //查询数据 DeliverJobMainDO deliverJobMainDO = this.validateDeliverJobMainExists(deliverJobMainUpdateReqVO.getId()); List subList = deliverJobDetailService.selectList(deliverJobMainDO.getId()); @@ -390,6 +389,26 @@ public class DeliverJobMainServiceImpl implements DeliverJobMainService { transactionCreateReqVO.setId(null); transactionCreateReqVO.setAmount(BigDecimal.ZERO); transactionCreateReqVOList.add(transactionCreateReqVO); + if(businesstypeDO.getInTransactionType() != null && "".equals(businesstypeDO.getInTransactionType())){ + //添加库存事务list + TransactionCreateReqVO transactionCreateReqVOIn = new TransactionCreateReqVO(); + BeanUtils.copyProperties(deliverRecordDetailDO, transactionCreateReqVO); + //增加业务类型 + transactionCreateReqVOIn.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactionCreateReqVOInDo = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVOIn.setInventoryAction(transactionCreateReqVOInDo.getInventoryAction()); + transactionCreateReqVOIn.setTransactionType(transactionCreateReqVOInDo.getCode()); + transactionCreateReqVOIn.setBusinessType(deliverRecordMainDO.getBusinessType()); + transactionCreateReqVOIn.setLocationCode(deliverRecordDetailDO.getToLocationCode()); + transactionCreateReqVOIn.setOwnerCode(deliverRecordDetailDO.getToOwnerCode()); + transactionCreateReqVOIn.setRecordNumber(number); + transactionCreateReqVOIn.setBatch(deliverRecordDetailDO.getBatch()); + transactionCreateReqVOIn.setPackingNumber(deliverRecordDetailDO.getPackingNumber()); + transactionCreateReqVOIn.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVOIn.setId(null); + transactionCreateReqVOIn.setAmount(BigDecimal.ZERO); + transactionCreateReqVOList.add(transactionCreateReqVOIn); + } }); } }); 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 070340de..120ec098 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 @@ -251,7 +251,7 @@ public class ProductdismantleRequestMainServiceImpl implements ProductdismantleR // 校验--工位基础信息 if(StringUtils.isNotEmpty(detailDo.getWorkStationCode())){ WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode()); - detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); + detailDo.setFromLocationCode(workstationDO.getFgLocationCode()); } // 校验--库存余额 TB——>TB1 validateBalance(detailDo,mainDO); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java index eb69ebfa..a17bf363 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java @@ -133,11 +133,12 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque private TrendsApi trendsApi; @Override + @Transactional public Long createProductputawayRequestMain(ProductputawayRequestMainCreateReqVO createReqVO) { ProductputawayRequestMainDO productputawayRequestMainDO = validatorToCreate(createReqVO); //调用自动执行方法 if(RequestStatusEnum.HANDLING.getCode().equals(productputawayRequestMainDO.getStatus())) { - + this.generateJob(productputawayRequestMainDO, productputawayRequestDetailMapper.selectList(productputawayRequestMainDO.getId())); } trendsApi.createTrends(productputawayRequestMainDO.getId(), "ProductputawayRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE); return productputawayRequestMainDO.getId(); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java index da3fdc67..49abd357 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptJob/ProductreceiptJobMainServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.web.core.util.WebFrameworkUtils; import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.serialnumber.SerialNumberApi; @@ -11,6 +12,9 @@ import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.issueJob.vo.IssueJobDetailUpdateReqVO; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailCreateReqVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailCreateReqVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainCreateReqVO; import com.win.module.wms.controller.productreceiptJob.vo.*; import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.convert.productreceiptJob.ProductreceiptJobMainConvert; @@ -46,6 +50,7 @@ import com.win.module.wms.dal.mysql.productreceiptRecord.BackflushRecordDetailbM import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordDetailMapper; import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordMainMapper; import com.win.module.wms.enums.job.JobStatusState; +import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.backflushRequest.BackflushRequestDetailbService; import com.win.module.wms.service.balance.BalanceService; import com.win.module.wms.service.businesstype.BusinesstypeService; @@ -55,6 +60,7 @@ import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.offlinesettlementRecord.OfflinesettlementRecordMainService; import com.win.module.wms.service.production.ProductionMainService; +import com.win.module.wms.service.productputawayRequest.ProductputawayRequestMainService; import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestDetailService; import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestMainService; import com.win.module.wms.service.recordsetting.RecordsettingService; @@ -87,6 +93,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainService { + @Resource + private ProductputawayRequestMainService productputawayRequestMainService; @Resource private OfflinesettlementRecordDetailMapper offlinesettlementRecordDetailMapper; @Resource @@ -399,12 +407,32 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe // 根据单据开关判断是否创建 制品上架申请 SwitchDO switchDO = switchService.selectSwitchExist("CreateProductputawayRequestAfterProductreceiptRecordCreated"); if (switchDO.getEffectiveSetValue().equals("TRUE")) { - // TODO: 创建 制品上架申请 - + generateProductputawayRequest(productreceiptRecordMainDO, productreceiptRecordDetailDOList); } return number; } + /** + * 创建 制品上架申请 + * @param productreceiptRecordMainDO + * @param productreceiptRecordDetailDOList + */ + private void generateProductputawayRequest(ProductreceiptRecordMainDO productreceiptRecordMainDO, List productreceiptRecordDetailDOList) { + ProductputawayRequestMainCreateReqVO productputawayRequestMainCreateReqVO = new ProductputawayRequestMainCreateReqVO(); + productputawayRequestMainCreateReqVO.setStatus(RequestStatusEnum.NEW.getCode()); + productputawayRequestMainCreateReqVO.setDepartmentCode(String.valueOf(userApi.getUser(WebFrameworkUtils.getLoginUserId()).getDeptId())); + List subList = new ArrayList<>(); + productreceiptRecordDetailDOList.forEach(itemDetailDO -> { + ProductputawayRequestDetailCreateReqVO productputawayRequestDetailCreateReqVO = new ProductputawayRequestDetailCreateReqVO(); + productputawayRequestDetailCreateReqVO.setItemCode(itemDetailDO.getItemCode()); + productputawayRequestDetailCreateReqVO.setQty(itemDetailDO.getQty()); + productputawayRequestDetailCreateReqVO.setInventoryStatus(itemDetailDO.getInventoryStatus()); + subList.add(productputawayRequestDetailCreateReqVO); + }); + productputawayRequestMainCreateReqVO.setSubList(subList); + productputawayRequestMainService.createProductputawayRequestMain(productputawayRequestMainCreateReqVO); + } + /** * 创建 回冲记录 * @param productreceiptRecordMainDO diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java index aa8f2963..93ae05ac 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleService.java @@ -210,4 +210,11 @@ public interface RuleService { */ List> getPrecisionStrategyByItemCodes(PrecisionStrategyReqVO reqVO); + /** + * 获取根据物品代码以及库位代码管理精度策略 + * + * @param reqVO2List + * @return + */ + List> getPrecisionStrategy(List reqVO2List); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java index f233c3df..b2cf71bd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/rule/RuleServiceImpl.java @@ -513,6 +513,20 @@ public class RuleServiceImpl implements RuleService { return list; } + @Override + public List> getPrecisionStrategy(List reqVO2List) { + List> list = new ArrayList<>(); + for (PrecisionStrategyReqVO2 reqVO2 : reqVO2List) { + HashMap map = new HashMap<>(); + RuleRespVO RespVO = management(null, null, reqVO2.getItemCode(), reqVO2.getLocationCode(), null, null); + JSONObject entries = JSONUtil.parseObj(RespVO.getConfiguration()); + map.put("ManagementPrecision", entries.get("ManagementPrecision")); + map.put("itemCode", reqVO2.getItemCode()); + list.add(map); + } + return list; + } + /** * 循环校验参数 *