diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index 2c8d403a..4cf22b4e 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java @@ -678,6 +678,9 @@ public interface ErrorCodeConstants { ErrorCode PRODUCTDISMANTLE_REQUEST_DETAILA_NOT_EXISTS = new ErrorCode(1_001_105_001, "制品拆解申请子不存在"); //制品拆解申请子ErrorCode ErrorCode DISMANTLE_REQUEST_DETAILB_NOT_EXISTS = new ErrorCode(1_001_105_002, "制品拆解申请子不存在"); + ErrorCode DISMANTLE_REQUEST_BOM_NOT_EXISTS = new ErrorCode(1_001_105_002, "没有添加Bom信息"); + ErrorCode DISMANTLE_REQUEST_JOB_EXISTS = new ErrorCode(1_001_105_003, "制品拆解申请存在任务单"); + ErrorCode DISMANTLE_REQUEST_MAIN_STATUS_ERROR = new ErrorCode(1_001_105_003, "制品拆解申请状态错误"); //制品拆解任务主ErrorCode ErrorCode PRODUCTDISMANTLE_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_106_000, "制品拆解任务主不存在"); //制品拆解任务子ErrorCode @@ -691,6 +694,7 @@ public interface ErrorCodeConstants { //制品拆解记录子ErrorCode ErrorCode PRODUCTDISMANTLE_RECORD_DETAILA_NOT_EXISTS = new ErrorCode(1_001_107_002, "制品拆解记录子不存在"); + ErrorCode PRODUCTDISMANTLE_REQUEST_DETAILA_QTY_ERROR = new ErrorCode(1_000_107_003, "制品拆解数量【{}】不能大于库存数量【{}】"); //制品返修申请主ErrorCode ErrorCode PRODUCTREPAIR_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_108_000, "制品返修申请主不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/ProductdismantleRequestDetailbController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/ProductdismantleRequestDetailbController.java index c02d200a..9c65e1cb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/ProductdismantleRequestDetailbController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/ProductdismantleRequestDetailbController.java @@ -8,6 +8,8 @@ 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.*; +import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestBomRespVO; +import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaPageReqVO; import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestDetailbConvert; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailbDO; import com.win.module.wms.service.productdismantleRequest.ProductdismantleRequestDetailbService; @@ -47,11 +49,11 @@ public class ProductdismantleRequestDetailbController { return success(productdismantleRequestDetailbService.createDismantleRequestDetailb(createReqVO)); } - @PutMapping("/update") + @PostMapping("/update") @Operation(summary = "更新制品拆解申请子") @PreAuthorize("@ss.hasPermission('wms:dismantle-request-detailb:update')") - public CommonResult updateDismantleRequestDetailb(@Valid @RequestBody ProductdismantleRequestDetailbUpdateReqVO updateReqVO) { - productdismantleRequestDetailbService.updateDismantleRequestDetailb(updateReqVO); + public CommonResult updateDismantleRequestDetailb(@RequestParam("id") Long id, @RequestBody List updateReqVOList) { + productdismantleRequestDetailbService.updateDismantleRequestDetailb(id, updateReqVOList); return success(true); } @@ -122,4 +124,12 @@ public class ProductdismantleRequestDetailbController { return success(result); } + @GetMapping("/bomPage") + @Operation(summary = "获取BOM接口") + @PreAuthorize("@ss.hasPermission('wms:dismantle-request-main:query')") + public CommonResult> getBomInfoPage(ProductdismantleRequestDetailaPageReqVO pageVO) { + PageResult pageResult = productdismantleRequestDetailbService.getBomInfoPage(pageVO); + return success(pageResult); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/ProductdismantleRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/ProductdismantleRequestMainController.java index 5a87f3ee..01cb350b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/ProductdismantleRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/ProductdismantleRequestMainController.java @@ -3,13 +3,17 @@ package com.win.module.wms.controller.productdismantleRequest; 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.productdismantleRequest.vo.*; import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestMainConvert; +import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailaDO; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestMainDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.productdismantleRequest.ProductdismantleRequestDetailaService; import com.win.module.wms.service.productdismantleRequest.ProductdismantleRequestMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -22,8 +26,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.util.Collection; -import java.util.List; +import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -34,6 +37,8 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Validated public class ProductdismantleRequestMainController { + @Resource + private ProductdismantleRequestDetailaService productdismantleRequestDetailaService; @Resource private ProductdismantleRequestMainService productdismantleRequestMainService; @@ -90,23 +95,6 @@ public class ProductdismantleRequestMainController { return success(ProductdismantleRequestMainConvert.INSTANCE.convertPage(pageResult)); } - @GetMapping("/export-excel") - @Operation(summary = "导出制品拆解申请主 Excel") - @PreAuthorize("@ss.hasPermission('wms:productdismantle-request-main:export')") - @OperateLog(type = EXPORT) - public void exportProductdismantleRequestMainExcel(@Valid ProductdismantleRequestMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = productdismantleRequestMainService.getProductdismantleRequestMainList(exportReqVO); - // 导出 Excel - List datas = ProductdismantleRequestMainConvert.INSTANCE.convertList02(list); - for(ProductdismantleRequestMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "制品拆解申请主.xls", "数据", ProductdismantleRequestMainExcelVO.class, datas); - } - @PostMapping("/senior") @Operation(summary = "高级搜索获得制品拆解申请主分页") @PreAuthorize("@ss.hasPermission('wms:productdismantle-request-main:query')") @@ -121,4 +109,110 @@ public class ProductdismantleRequestMainController { return success(result); } + private List getExcelVo(List list, Map mapDropDown) { + String[] truefalse = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(12, truefalse); + mapDropDown.put(13, truefalse); + mapDropDown.put(14, truefalse); + mapDropDown.put(15, truefalse); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(33, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(40, uom); + List resultList = new ArrayList<>(); + // 导出 + for(ProductdismantleRequestMainDO mainDO : list) { + List subList = productdismantleRequestDetailaService.selectList(mainDO.getId()); + for(ProductdismantleRequestDetailaDO detailDO : subList) { + ProductdismantleRequestMainExcelVO vo = ProductdismantleRequestMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); + vo.setCreator(user.getNickname()); + vo.setUpdater(user.getNickname()); + resultList.add(vo); + } + } + return resultList; + } + + @GetMapping("/export-excel") + @Operation(summary = "导出制品拆解申请 Excel") + @PreAuthorize("@ss.hasPermission('wms:productdismantle-request-main:export')") + @OperateLog(type = EXPORT) + public void exportProductdismantleRequestMainExcel(@Valid ProductdismantleRequestMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productdismantleRequestMainService.getProductdismantleRequestMainList(exportReqVO); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "制品拆解申请.xlsx", "制品拆解申请", ProductdismantleRequestMainExcelVO.class, resultList, mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出制品拆解申请 Excel") + @PreAuthorize("@ss.hasPermission('wms:productdismantle-request-main:export')") + @OperateLog(type = EXPORT) + public void exportProductdismantleRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = productdismantleRequestMainService.getProductdismantleRequestMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "制品拆解申请.xlsx", "制品拆解申请", ProductdismantleRequestMainExcelVO.class, resultList, mapDropDown); + } + + @PutMapping("/close") + @Operation(summary = "关闭") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productdismantle-request-main:close')") + public CommonResult closeProductdismantleRequestMain(@RequestParam("id") Long id) { + Integer count = productdismantleRequestMainService.closeProductdismantleRequestMain(id); + return success(count > 0); + } + + @PutMapping("/reAdd") + @Operation(summary = "重新添加") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productdismantle-request-main:reAdd')") + public CommonResult reAddProductdismantleRequestMain(@RequestParam("id") Long id) { + Integer count = productdismantleRequestMainService.reAddProductdismantleRequestMain(id); + return success(count > 0); + } + + @PutMapping("/submit") + @Operation(summary = "提交审批") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productdismantle-request-main:submit')") + public CommonResult submitProductdismantleRequestMain(@RequestParam("id") Long id) { + Integer count = productdismantleRequestMainService.submitProductdismantleRequestMain(id); + return success(count > 0); + } + + @PutMapping("/refused") + @Operation(summary = "驳回") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productdismantle-request-main:refused')") + public CommonResult refusedProductdismantleRequestMain(@RequestParam("id") Long id) { + Integer count = productdismantleRequestMainService.refusedProductdismantleRequestMain(id); + return success(count > 0); + } + + @PutMapping("/agree") + @Operation(summary = "审批通过") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productdismantle-request-main:agree')") + public CommonResult agreeProductdismantleRequestMain(@RequestParam("id") Long id) { + Integer count = productdismantleRequestMainService.agreeProductdismantleRequestMain(id); + return success(count > 0); + } + + @PutMapping("/handle") + @Operation(summary = "处理") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productdismantle-request-main:handle')") + public CommonResult handleProductdismantleRequestMain(@RequestParam("id") Long id) { + Integer count = productdismantleRequestMainService.handleProductdismantleRequestMain(id); + return success(count > 0); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaBaseVO.java index 126c35cf..5c9c8e73 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaBaseVO.java @@ -84,10 +84,10 @@ public class ProductdismantleRequestDetailaBaseVO { private String itemDesc2; @Schema(description = "项目代码") - private String projectOde; + private String projectCode; @Schema(description = "数量") - private Double qty; + private BigDecimal qty; @Schema(description = "计量单位") private String uom; @@ -105,4 +105,10 @@ public class ProductdismantleRequestDetailaBaseVO { @Schema(description = "从货主代码") private String fromOwnerCode; + @Schema(description = "bom版本") + private String bomVersion; + + @Schema(description = "主表ID") + private String masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaCreateReqVO.java index ae396e46..d063ee54 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaCreateReqVO.java @@ -1,12 +1,18 @@ package com.win.module.wms.controller.productdismantleRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailbCreateReqVO; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 制品拆解申请子创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductdismantleRequestDetailaCreateReqVO extends ProductdismantleRequestDetailaBaseVO { - + @SubObject + @Schema(description = "二级子表数据") + private List childList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaExcelVO.java index 4356202c..79e8d112 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaExcelVO.java @@ -82,7 +82,7 @@ public class ProductdismantleRequestDetailaExcelVO { private String itemDesc2; @ExcelProperty("项目代码") - private String projectOde; + private String projectCode; @ExcelProperty("数量") private Double qty; @@ -103,4 +103,7 @@ public class ProductdismantleRequestDetailaExcelVO { @ExcelProperty("从货主代码") private String fromOwnerCode; + @ExcelProperty("bom版本") + private String bomVersion; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaExportReqVO.java index 0d24d219..03135a24 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaExportReqVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productdismantleRequest.vo; +import com.alibaba.excel.annotation.ExcelProperty; import lombok.*; import java.math.BigDecimal; @@ -76,7 +77,7 @@ public class ProductdismantleRequestDetailaExportReqVO { private String itemDesc2; @Schema(description = "项目代码") - private String projectOde; + private String projectCode; @Schema(description = "数量") private Double qty; @@ -91,10 +92,16 @@ public class ProductdismantleRequestDetailaExportReqVO { @Schema(description = "最后更新者用户名") private String updater; + @Schema(description = "bom版本") + private String bomVersion; + @Schema(description = "从库位代码") private String fromLocationCode; @Schema(description = "从货主代码") private String fromOwnerCode; + @Schema(description = "主表ID") + private Long masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaPageReqVO.java index b428fd33..b0f27416 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaPageReqVO.java @@ -78,7 +78,7 @@ public class ProductdismantleRequestDetailaPageReqVO extends PageParam { private String itemDesc2; @Schema(description = "项目代码") - private String projectOde; + private String projectCode; @Schema(description = "数量") private Double qty; @@ -99,4 +99,10 @@ public class ProductdismantleRequestDetailaPageReqVO extends PageParam { @Schema(description = "从货主代码") private String fromOwnerCode; + @Schema(description = "bom版本") + private String bomVersion; + + @Schema(description = "主表ID") + private Long masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaUpdateReqVO.java index 01b838c9..ba668c85 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailaUpdateReqVO.java @@ -1,12 +1,17 @@ package com.win.module.wms.controller.productdismantleRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; + @Schema(description = "管理后台 - 制品拆解申请子更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductdismantleRequestDetailaUpdateReqVO extends ProductdismantleRequestDetailaBaseVO { - + @SubObject + @Schema(description = "二级子表数据") + private List childList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbBaseVO.java index 80f8c4fc..fea445ad 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbBaseVO.java @@ -72,4 +72,22 @@ public class ProductdismantleRequestDetailbBaseVO { @Schema(description = "地点ID") private String siteId; + @Schema(description = "批次") + private String batch; + + @Schema(description = "到库位代码") + private String toLocationCode; + + @Schema(description = "到库位组代码") + private String toLocationGroupCode; + + @Schema(description = "到库区代码") + private String toAreaCode; + + @Schema(description = "库存状态") + private String inventoryStatus; + + @Schema(description = "包装号") + private String packingNumber; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbExcelVO.java index d6df4d2b..587a37f7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbExcelVO.java @@ -3,6 +3,7 @@ package com.win.module.wms.controller.productdismantleRequest.vo; import com.alibaba.excel.annotation.ExcelProperty; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; @@ -66,4 +67,22 @@ public class ProductdismantleRequestDetailbExcelVO { @ExcelProperty("地点ID") private String siteId; + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("到库位组代码") + private String toLocationGroupCode; + + @ExcelProperty("到库区代码") + private String toAreaCode; + + @ExcelProperty("库存状态") + private String inventoryStatus; + + @ExcelProperty("包装号") + private String packingNumber; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbExportReqVO.java index 0211721b..6fa62730 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbExportReqVO.java @@ -63,4 +63,25 @@ public class ProductdismantleRequestDetailbExportReqVO { @Schema(description = "地点ID") private String siteId; + @Schema(description = "批次") + private String batch; + + @Schema(description = "到库位代码") + private String toLocationCode; + + @Schema(description = "到库位组代码") + private String toLocationGroupCode; + + @Schema(description = "到库区代码") + private String toAreaCode; + + @Schema(description = "库存状态") + private String inventoryStatus; + + @Schema(description = "包装号") + private String packingNumber; + + @Schema(description = "主表ID") + private Long masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbPageReqVO.java index 770a2493..05bc9c28 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbPageReqVO.java @@ -68,4 +68,25 @@ public class ProductdismantleRequestDetailbPageReqVO extends PageParam { @Schema(description = "地点ID") private String siteId; + @Schema(description = "批次") + private String batch; + + @Schema(description = "到库位代码") + private String toLocationCode; + + @Schema(description = "到库位组代码") + private String toLocationGroupCode; + + @Schema(description = "到库区代码") + private String toAreaCode; + + @Schema(description = "库存状态") + private String inventoryStatus; + + @Schema(description = "包装号") + private String packingNumber; + + @Schema(description = "主表ID") + private Long masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbRespVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbRespVO.java index 33d99fcd..1c521a4c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbRespVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestDetailbRespVO.java @@ -5,10 +5,16 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +import java.math.BigDecimal; + @Schema(description = "管理后台 - 制品拆解申请子 Response VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductdismantleRequestDetailbRespVO extends ProductdismantleRequestDetailbBaseVO { + private String itemCode; + private String uom; + private BigDecimal qty; + private String version; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestMainCreateReqVO.java index 4a41efbb..c53c439a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestMainCreateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.productdismantleRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaCreateReqVO; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 制品拆解申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductdismantleRequestMainCreateReqVO extends ProductdismantleRequestMainBaseVO { + @SubObject + @Schema(description = "一级子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestMainExcelVO.java index 1a7a03a6..c9dfa3d0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productdismantleRequest/vo/ProductdismantleRequestMainExcelVO.java @@ -1,5 +1,7 @@ package com.win.module.wms.controller.productdismantleRequest.vo; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusConverter; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -21,6 +23,9 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class ProductdismantleRequestMainExcelVO { + @ExcelProperty("单据号") + private String number; + @ExcelProperty("车间代码") private String workshopCode; @@ -30,22 +35,46 @@ public class ProductdismantleRequestMainExcelVO { @ExcelProperty("班次") private String shift; - @ExcelProperty("从仓库代码") - private String fromWarehouseCode; + @ExcelProperty("申请时间") + private LocalDateTime requestTime; - @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty("截止时间") + private LocalDateTime dueTime; + + @ExcelProperty(value = "状态", converter = RequestStatusConverter.class) + private String status; + + @ExcelProperty("从库位类型范围") private String fromLocationTypes; @ExcelProperty("从库区代码范围") private String fromAreaCodes; - @ExcelProperty("单据号") - private String number; + @ExcelProperty("从仓库代码") + private String fromWarehouseCode; @ExcelProperty("业务类型") private String businessType; + @ExcelProperty("部门") + private String departmentCode; + + @ExcelProperty(value = "自动提交", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String autoCommit; + + @ExcelProperty(value = "自动通过", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String autoAgree; + + @ExcelProperty(value = "自动执行", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String autoExecute; + + @ExcelProperty(value = "直接生成记录", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String directCreateRecord; + @ExcelProperty("备注") private String remark; @@ -54,36 +83,73 @@ public class ProductdismantleRequestMainExcelVO { @ExcelProperty("创建者用户名") private String creator; + @ExcelProperty("最后更新时间") + private LocalDateTime updateTime; - @ExcelProperty("申请时间") - private LocalDateTime requestTime; + @ExcelProperty("最后更新者用户名") + private String updater; - @ExcelProperty("截止时间") - private LocalDateTime dueTime; + // 子表a + @ExcelProperty("生产线代码") + private String productionLineCode; - @ExcelProperty("部门") - private String departmentCode; + @ExcelProperty("工位代码") + private String workStationCode; - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("request_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String status; + @ExcelProperty("工序代码") + private String processCode; - @ExcelProperty("最后更新时间") - private LocalDateTime updateTime; + @ExcelProperty("包装号") + private String packingNumber; - @ExcelProperty("最后更新者用户名") - private String updater; + @ExcelProperty("器具号") + private String containerNumber; - @ExcelProperty("自动提交") - private String autoCommit; + @ExcelProperty("批次") + private String batch; - @ExcelProperty("自动通过") - private String autoAgree; + @ExcelProperty("生产日期") + private String produceDate; - @ExcelProperty("自动执行") - private String autoExecute; + @ExcelProperty("过期日期") + private String expireDate; - @ExcelProperty("直接生成记录") - private String directCreateRecord; + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("从库位组代码") + private String fromLocationGroupCode; + + @ExcelProperty("从库区代码") + private String fromAreaCode; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private String qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productdismantleRequest/ProductdismantleRequestDetailbConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productdismantleRequest/ProductdismantleRequestDetailbConvert.java index 5d4f887c..a1dd2264 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productdismantleRequest/ProductdismantleRequestDetailbConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productdismantleRequest/ProductdismantleRequestDetailbConvert.java @@ -32,5 +32,4 @@ public interface ProductdismantleRequestDetailbConvert { PageResult convertPage(PageResult page); List convertList02(List list); - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productdismantleRequest/ProductdismantleRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productdismantleRequest/ProductdismantleRequestMainConvert.java index c2357703..9a0dfa44 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productdismantleRequest/ProductdismantleRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productdismantleRequest/ProductdismantleRequestMainConvert.java @@ -8,7 +8,10 @@ import com.win.module.wms.controller.productdismantleRequest.vo.Productdismantle import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainExcelVO; import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainRespVO; import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailaDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestMainDO; @@ -33,5 +36,13 @@ public interface ProductdismantleRequestMainConvert { PageResult convertPage(PageResult page); List convertList02(List list); - + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + ProductdismantleRequestMainExcelVO convert(ProductdismantleRequestMainDO mainDO, ProductdismantleRequestDetailaDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRecord/ProductdismantleRecordDetailaDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRecord/ProductdismantleRecordDetailaDO.java index 941b93bc..a9cece23 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRecord/ProductdismantleRecordDetailaDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRecord/ProductdismantleRecordDetailaDO.java @@ -89,7 +89,7 @@ public class ProductdismantleRecordDetailaDO 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/dataobject/productdismantleRecord/ProductdismantleRecordDetailbDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRecord/ProductdismantleRecordDetailbDO.java index c57ef30b..c7fb9003 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRecord/ProductdismantleRecordDetailbDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRecord/ProductdismantleRecordDetailbDO.java @@ -6,6 +6,8 @@ import com.sun.xml.bind.v2.TODO; import com.win.framework.mybatis.core.dataobject.BaseDO; import lombok.*; +import java.math.BigDecimal; + /** * 制品拆解记录子 DO * @@ -62,7 +64,7 @@ public class ProductdismantleRecordDetailbDO extends BaseDO { /** * 主表ID */ - private String masterId; + private Long masterId; /** * 单据号 */ @@ -95,6 +97,10 @@ public class ProductdismantleRecordDetailbDO extends BaseDO { * 项目代码 */ private String projectCode; + /** + * 数量 + */ + private BigDecimal qty; /** * 计量单位 * diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestDetailaDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestDetailaDO.java index 458f2c0a..563314e0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestDetailaDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestDetailaDO.java @@ -84,7 +84,7 @@ public class ProductdismantleRequestDetailaDO extends BaseDO { /** * 主表ID */ - private String masterId; + private Long masterId; /** * 单据号 */ @@ -116,11 +116,11 @@ public class ProductdismantleRequestDetailaDO extends BaseDO { /** * 项目代码 */ - private String projectOde; + private String projectCode; /** * 数量 */ - private Double qty; + private BigDecimal qty; /** * 计量单位 * @@ -139,5 +139,9 @@ public class ProductdismantleRequestDetailaDO extends BaseDO { * 从货主代码 */ private String fromOwnerCode; + /** + * bom版本 + */ + private String bomVersion; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestDetailbDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestDetailbDO.java index ee458f07..dc8dee2a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestDetailbDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestDetailbDO.java @@ -42,7 +42,7 @@ public class ProductdismantleRequestDetailbDO extends BaseDO { /** * 主表ID */ - private String masterId; + private Long masterId; /** * 单据号 */ @@ -86,4 +86,34 @@ public class ProductdismantleRequestDetailbDO extends BaseDO { */ private String siteId; + /** + * 批次 + */ +// private String batch; + + /** + * 到库位代码 + */ +// private String toLocationCode; + + /** + * 到库位组代码 + */ +// private String toLocationGroupCode; + + /** + * 到库区代码 + */ +// private String toAreaCode; + + /** + * 库存状态 + */ +// private String inventoryStatus; + + /** + * 包装号 + */ +// private String packingNumber; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestMainDO.java index 598bb6f5..5f5d831e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productdismantleRequest/ProductdismantleRequestMainDO.java @@ -124,5 +124,13 @@ public class ProductdismantleRequestMainDO extends BaseDO { * 直接生成记录 */ private String directCreateRecord; + /** + * 入库库存状态范围 + */ + private String inInventoryStatuses; + /** + * 出库库存状态范围 + */ + private String outInventoryStatuses; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestDetailaMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestDetailaMapper.java index 28706f5d..0069d06a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestDetailaMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestDetailaMapper.java @@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailaExportReqVO; import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailaPageReqVO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailaDO; import org.apache.ibatis.annotations.Mapper; @@ -22,6 +23,7 @@ public interface ProductdismantleRequestDetailaMapper extends BaseMapperX selectPage(ProductdismantleRequestDetailaPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductdismantleRequestDetailaDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductdismantleRequestDetailaDO::getProductionLineCode, reqVO.getProductionLineCode()) .eqIfPresent(ProductdismantleRequestDetailaDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductdismantleRequestDetailaDO::getProcessCode, reqVO.getProcessCode()) @@ -41,7 +43,7 @@ public interface ProductdismantleRequestDetailaMapper extends BaseMapperX selectList(ProductdismantleRequestDetailaExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProductdismantleRequestDetailaDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductdismantleRequestDetailaDO::getProductionLineCode, reqVO.getProductionLineCode()) .eqIfPresent(ProductdismantleRequestDetailaDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductdismantleRequestDetailaDO::getProcessCode, reqVO.getProcessCode()) @@ -76,7 +79,7 @@ public interface ProductdismantleRequestDetailaMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(ProductdismantleRequestDetailaDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestDetailbMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestDetailbMapper.java index 5c9664f6..746aa15e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestDetailbMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestDetailbMapper.java @@ -8,6 +8,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbExportReqVO; import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbPageReqVO; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailbDO; +import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestDetailbDO; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -22,6 +23,7 @@ public interface ProductdismantleRequestDetailbMapper extends BaseMapperX selectPage(ProductdismantleRequestDetailbPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductdismantleRequestDetailbDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductdismantleRequestDetailbDO::getProcessCode, reqVO.getProcessCode()) .eqIfPresent(ProductdismantleRequestDetailbDO::getBomVersion, reqVO.getBomVersion()) .eqIfPresent(ProductdismantleRequestDetailbDO::getItemCode, reqVO.getItemCode()) @@ -47,6 +49,7 @@ public interface ProductdismantleRequestDetailbMapper extends BaseMapperX selectList(ProductdismantleRequestDetailbExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProductdismantleRequestDetailbDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductdismantleRequestDetailbDO::getProcessCode, reqVO.getProcessCode()) .eqIfPresent(ProductdismantleRequestDetailbDO::getBomVersion, reqVO.getBomVersion()) .eqIfPresent(ProductdismantleRequestDetailbDO::getItemCode, reqVO.getItemCode()) @@ -66,4 +69,8 @@ public interface ProductdismantleRequestDetailbMapper extends BaseMapperX selectList(Long masterId){ + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProductdismantleRequestDetailbDO::getMasterId,masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestMainMapper.java index 108157e8..e3f422be 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productdismantleRequest/ProductdismantleRequestMainMapper.java @@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainExportReqVO; import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainPageReqVO; +import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestMainDO; import org.apache.ibatis.annotations.Mapper; @@ -76,4 +77,7 @@ public interface ProductdismantleRequestMainMapper extends BaseMapperX selectSeniorList(CustomConditions conditions) { + return selectList(QueryWrapperUtils.structure(conditions)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailaService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailaService.java index e5f458ba..e6501735 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailaService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailaService.java @@ -2,10 +2,7 @@ package com.win.module.wms.service.productdismantleRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailaCreateReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailaExportReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailaPageReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailaUpdateReqVO; +import com.win.module.wms.controller.productdismantleRequest.vo.*; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailaDO; import javax.validation.Valid; @@ -81,5 +78,5 @@ public interface ProductdismantleRequestDetailaService { */ PageResult getProductdismantleRequestDetailaSenior(CustomConditions conditions); - + List selectList(Long id); } 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 2363304d..2a5e9045 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 @@ -1,23 +1,39 @@ package com.win.module.wms.service.productdismantleRequest; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailaCreateReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailaExportReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailaPageReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailaUpdateReqVO; +import com.win.module.wms.controller.productdismantleRequest.vo.*; import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestDetailaConvert; +import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestDetailbConvert; +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.issueRequest.IssueRequestMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailaDO; +import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailbDO; +import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestMainDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestDetailaMapper; +import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestDetailbMapper; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.productionline.ProductionlineService; +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 org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTDISMANTLE_REQUEST_DETAILA_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 制品拆解申请子 Service 实现类 @@ -28,39 +44,127 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTDISMANTLE_REQUE @Validated public class ProductdismantleRequestDetailaServiceImpl implements ProductdismantleRequestDetailaService { + @Resource + private WorkstationService workstationService; + @Resource + private ProductionlineService productionlineService; + @Resource + private ItembasicService itembasicService; + + @Resource + private ProductdismantleRequestDetailbMapper productdismantleRequestDetailbMapper; + @Resource + private JobUtils jobUtils; + @Resource + private ProductdismantleRequestMainService productdismantleRequestMainService; @Resource private ProductdismantleRequestDetailaMapper productdismantleRequestDetailaMapper; @Override + @Transactional public Long createProductdismantleRequestDetaila(ProductdismantleRequestDetailaCreateReqVO createReqVO) { - // 插入 - ProductdismantleRequestDetailaDO productdismantleRequestDetaila = ProductdismantleRequestDetailaConvert.INSTANCE.convert(createReqVO); - productdismantleRequestDetailaMapper.insert(productdismantleRequestDetaila); - // 返回 - return productdismantleRequestDetaila.getId(); + ProductdismantleRequestDetailaDO detailaDO = ProductdismantleRequestDetailaConvert.INSTANCE.convert(createReqVO); + validatorDetail(detailaDO); + productdismantleRequestDetailaMapper.insert(detailaDO); + return detailaDO.getId(); } @Override + @Transactional public void updateProductdismantleRequestDetaila(ProductdismantleRequestDetailaUpdateReqVO updateReqVO) { // 校验存在 validateProductdismantleRequestDetailaExists(updateReqVO.getId()); // 更新 ProductdismantleRequestDetailaDO updateObj = ProductdismantleRequestDetailaConvert.INSTANCE.convert(updateReqVO); + validatorDetail(updateObj); productdismantleRequestDetailaMapper.updateById(updateObj); } + private ProductdismantleRequestDetailaDO validatorDetail(ProductdismantleRequestDetailaDO detailaDO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductDisassembleRequest"); + // 主表信息 + ProductdismantleRequestMainDO mainBo = productdismantleRequestMainService.getProductdismantleRequestMain(detailaDO.getMasterId()); + detailaDO.setMasterId(mainBo.getId()); + detailaDO.setNumber(mainBo.getNumber()); + detailaDO.setInventoryStatus(businesstypeDO.getOutInventoryStatuses()); + // 校验 + validateDetailMethod(mainBo,detailaDO,businesstypeDO); + return detailaDO; + } + + /** + * 校验 子表 + * @param mainDO + * @param detailDo + * @param businesstypeDO + */ + private void validateDetailMethod(ProductdismantleRequestMainDO mainDO, ProductdismantleRequestDetailaDO detailDo, BusinesstypeDO businesstypeDO) { + // 校验--生产线基本信息 + ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); + detailDo.setFromLocationCode(productionlineDO.getRawLocationCode()); + // 校验--物品基本信息 + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + // 赋值物品Item相关信息 + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + if (!itembasicDO.getUom().equals(detailDo.getUom())) { + // 提示:计量单位【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()); + } + // 校验--库存余额 TB——>TB1 + validateBalance(detailDo,mainDO); + // 校验--物品类型 DBT——>DBT2——>IT + jobUtils.ifInType(itembasicDO.getType(),businesstypeDO); + // 校验--来源库位 DBT——>DBT2——>LO + jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); + // 校验--库存状态 DBT——>DBT2——>ISO + jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); + } + + private void validateBalance(ProductdismantleRequestDetailaDO detailDo, ProductdismantleRequestMainDO mainDO) { + String inventoryStatus = detailDo.getInventoryStatus(); + String[] inventoryArray = inventoryStatus.split(","); + List inventorystatus = Arrays.asList(inventoryArray); + List list = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(),inventorystatus); + if(list != null && list.size() > 0){ + BalanceDO balanceDO = list.get(0); + mainDO.setFromWarehouseCode(balanceDO.getWarehouseCode()); + if(balanceDO.getQty().compareTo(detailDo.getQty()) < 0){ + // 拆解数量【qty】不能大于库存数量【banlance.qty】 + throw exception(PRODUCTDISMANTLE_REQUEST_DETAILA_QTY_ERROR,detailDo.getQty(),balanceDO.getQty()); + } + }else { + // 余额校验异常 + throw exception(PRODUCTREPAIR_REQUEST_DETAILA_BALANCE_ERROR); + } + } + @Override + @Transactional public void deleteProductdismantleRequestDetaila(Long id) { // 校验存在 - validateProductdismantleRequestDetailaExists(id); + ProductdismantleRequestDetailaDO productdismantleRequestDetailaDO = validateProductdismantleRequestDetailaExists(id); + // 删除从子表 Detailb + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("master_id",productdismantleRequestDetailaDO.getMasterId().toString()); + productdismantleRequestDetailbMapper.delete(queryWrapper); // 删除 productdismantleRequestDetailaMapper.deleteById(id); } - private void validateProductdismantleRequestDetailaExists(Long id) { - if (productdismantleRequestDetailaMapper.selectById(id) == null) { + private ProductdismantleRequestDetailaDO validateProductdismantleRequestDetailaExists(Long id) { + ProductdismantleRequestDetailaDO productdismantleRequestDetailaDO = productdismantleRequestDetailaMapper.selectById(id); + if (productdismantleRequestDetailaDO == null) { throw exception(PRODUCTDISMANTLE_REQUEST_DETAILA_NOT_EXISTS); } + return productdismantleRequestDetailaDO; } @Override @@ -88,4 +192,11 @@ public class ProductdismantleRequestDetailaServiceImpl implements Productdismant return productdismantleRequestDetailaMapper.selectSenior(conditions); } + @Override + public List selectList(Long masterId) { + return productdismantleRequestDetailaMapper.selectList(masterId); + } + + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailbService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailbService.java index 1610209f..9cae1263 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailbService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailbService.java @@ -2,10 +2,7 @@ package com.win.module.wms.service.productdismantleRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbCreateReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbExportReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbPageReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbUpdateReqVO; +import com.win.module.wms.controller.productdismantleRequest.vo.*; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailbDO; import javax.validation.Valid; @@ -30,9 +27,8 @@ public interface ProductdismantleRequestDetailbService { /** * 更新制品拆解申请子 * - * @param updateReqVO 更新信息 */ - void updateDismantleRequestDetailb(@Valid ProductdismantleRequestDetailbUpdateReqVO updateReqVO); + void updateDismantleRequestDetailb(Long id, List updateReqVOList); /** * 删除制品拆解申请子 @@ -80,4 +76,6 @@ public interface ProductdismantleRequestDetailbService { * @return 分页列表 */ PageResult getProductdismantleRequestDetailbSenior(CustomConditions conditions); + + PageResult getBomInfoPage(ProductdismantleRequestDetailaPageReqVO pageVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailbServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailbServiceImpl.java index 8811b440..c42028be 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailbServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestDetailbServiceImpl.java @@ -1,21 +1,33 @@ package com.win.module.wms.service.productdismantleRequest; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbCreateReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbExportReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbPageReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestDetailbUpdateReqVO; +import com.win.framework.mybatis.core.util.MyBatisUtils; +import com.win.module.wms.controller.productdismantleRequest.vo.*; +import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestBomRespVO; import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestDetailbConvert; +import com.win.module.wms.convert.productrepairRequest.ProductrepairRequestDetailbConvert; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailaDO; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailbDO; +import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestDetailbDO; +import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestDetailaMapper; import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestDetailbMapper; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.util.JobUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.module.wms.enums.ErrorCodeConstants.DISMANTLE_REQUEST_DETAILB_NOT_EXISTS; @@ -29,6 +41,12 @@ import static com.win.module.wms.enums.ErrorCodeConstants.DISMANTLE_REQUEST_DETA @Validated public class ProductdismantleRequestDetailbServiceImpl implements ProductdismantleRequestDetailbService { + @Resource + private JobUtils jobUtils; + @Resource + private ProductdismantleRequestDetailaMapper productdismantleRequestDetailaMapper; + @Resource + private ItembasicService itembasicService; @Resource private ProductdismantleRequestDetailbMapper productdismantleRequestDetailbMapper; @@ -42,12 +60,48 @@ public class ProductdismantleRequestDetailbServiceImpl implements Productdismant } @Override - public void updateDismantleRequestDetailb(ProductdismantleRequestDetailbUpdateReqVO updateReqVO) { + @Transactional + public void updateDismantleRequestDetailb(Long id,List updateReqVOList) { // 校验存在 - validateDismantleRequestDetailbExists(updateReqVO.getId()); +// validateDismantleRequestDetailbExists(updateReqVO.getId()); // 更新 - ProductdismantleRequestDetailbDO updateObj = ProductdismantleRequestDetailbConvert.INSTANCE.convert(updateReqVO); - productdismantleRequestDetailbMapper.updateById(updateObj); +// ProductdismantleRequestDetailbDO updateObj = ProductdismantleRequestDetailbConvert.INSTANCE.convert(updateReqVO); +// productdismantleRequestDetailbMapper.updateById(updateObj); + validateDetailbBom(id, updateReqVOList); + + } + + /** + * 创建 二级 子表数据 + * @param id + * @param consumereDetailbList + */ + private void validateDetailbBom(Long id, List consumereDetailbList) { + // 删除从子表 Detailb + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("master_id",id.toString()); + productdismantleRequestDetailbMapper.delete(queryWrapper); + QueryWrapper queryWrapperDetaila = new QueryWrapper<>(); + queryWrapperDetaila.eq("id",id.toString()); + ProductdismantleRequestDetailaDO detailaDO = productdismantleRequestDetailaMapper.selectOne(queryWrapperDetaila); + List childList = new ArrayList<>(); + for(ProductdismantleRequestDetailbUpdateReqVO productdismantleRequestDetailbUpdateReqVO:consumereDetailbList){ + ProductdismantleRequestDetailbDO detailbDO = ProductdismantleRequestDetailbConvert.INSTANCE.convert(productdismantleRequestDetailbUpdateReqVO); + detailbDO.setProcessCode(detailaDO.getProcessCode()); + detailbDO.setBomVersion(detailaDO.getBomVersion()); + detailbDO.setMasterId(detailaDO.getId()); + detailbDO.setNumber(detailaDO.getNumber()); + detailbDO.setId(null); + // 校验--物品基本信息 + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailbDO.getItemCode()); + // 赋值物品Item相关信息 + detailbDO.setItemDesc1(itembasicDO.getDesc1()); + detailbDO.setItemDesc2(itembasicDO.getDesc2()); + detailbDO.setItemName(itembasicDO.getName()); + detailbDO.setProjectCode(itembasicDO.getProject()); + childList.add(detailbDO); + } + productdismantleRequestDetailbMapper.insertBatch(childList); } @Override @@ -89,4 +143,40 @@ public class ProductdismantleRequestDetailbServiceImpl implements Productdismant return productdismantleRequestDetailbMapper.selectSenior(conditions); } + @Override + public PageResult getBomInfoPage(ProductdismantleRequestDetailaPageReqVO pageVO) { + IPage myPage = MyBatisUtils.buildPage(pageVO); + List> list = jobUtils.bomDismantleList(pageVO.getItemCode(),pageVO.getBomVersion()); + List resultList = new ArrayList<>(); + Map detailbDOMap = new HashMap<>(); + if(pageVO.getMasterId() != null){ + List detailbBOList = productdismantleRequestDetailbMapper.selectList(pageVO.getMasterId()); + if(detailbBOList != null && detailbBOList.size() > 0){ + detailbDOMap.putAll(detailbBOList.stream().collect(Collectors.toMap(ProductdismantleRequestDetailbDO::getItemCode, item -> item))); + } + } + for(Map map:list){ + ProductdismantleRequestDetailbRespVO productdismantleRequestDetailbRespVO = new ProductdismantleRequestDetailbRespVO(); + String itemCode = map.get("itemCode") != null?map.get("itemCode").toString():""; + productdismantleRequestDetailbRespVO.setItemCode(itemCode); + if(StringUtils.isNotEmpty(productdismantleRequestDetailbRespVO.getItemCode())){ + if(detailbDOMap.get(productdismantleRequestDetailbRespVO.getItemCode()) != null){ + ProductdismantleRequestDetailbDO productdismantleRequestDetailbDO = detailbDOMap.get(productdismantleRequestDetailbRespVO.getItemCode()); + productdismantleRequestDetailbRespVO = ProductdismantleRequestDetailbConvert.INSTANCE.convert(productdismantleRequestDetailbDO); + }else { + productdismantleRequestDetailbRespVO.setQty(BigDecimal.ZERO); + } + }else { + productdismantleRequestDetailbRespVO.setQty(BigDecimal.ZERO); + } + productdismantleRequestDetailbRespVO.setUom(map.get("uom") != null?map.get("uom").toString():""); + productdismantleRequestDetailbRespVO.setVersion(map.get("version") != null?map.get("version").toString():""); + resultList.add(productdismantleRequestDetailbRespVO); + } + myPage.setRecords(resultList); + myPage.setTotal(resultList.size()); + PageResult pageResult = new PageResult(myPage.getRecords(),myPage.getTotal()); + return pageResult; + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainService.java index 89158c52..cdeae737 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productdismantleRequest/ProductdismantleRequestMainService.java @@ -32,7 +32,7 @@ public interface ProductdismantleRequestMainService { * * @param updateReqVO 更新信息 */ - void updateProductdismantleRequestMain(@Valid ProductdismantleRequestMainUpdateReqVO updateReqVO); + Long updateProductdismantleRequestMain(@Valid ProductdismantleRequestMainUpdateReqVO updateReqVO); /** * 删除制品拆解申请主 @@ -81,4 +81,17 @@ public interface ProductdismantleRequestMainService { */ PageResult getProductdismantleRequestMainSenior(CustomConditions conditions); + List getProductdismantleRequestMainList(CustomConditions conditions); + + Integer closeProductdismantleRequestMain(Long id); + + Integer reAddProductdismantleRequestMain(Long id); + + Integer submitProductdismantleRequestMain(Long id); + + Integer refusedProductdismantleRequestMain(Long id); + + Integer agreeProductdismantleRequestMain(Long id); + + Integer handleProductdismantleRequestMain(Long id); } 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 8bb61ff4..070340de 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,24 +1,85 @@ package com.win.module.wms.service.productdismantleRequest; +import cn.hutool.core.exceptions.UtilException; +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.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainCreateReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainExportReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainPageReqVO; -import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainUpdateReqVO; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.api.user.AdminUserApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +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.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestDetailaConvert; +import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestDetailbConvert; import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestMainConvert; +import com.win.module.wms.convert.productrepairRequest.ProductrepairRequestDetailaConvert; +import com.win.module.wms.convert.productrepairRequest.ProductrepairRequestDetailbConvert; +import com.win.module.wms.convert.productrepairRequest.ProductrepairRequestMainConvert; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +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.issueRequest.IssueRequestMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.dataobject.productdismantleRecord.ProductdismantleRecordDetailaDO; +import com.win.module.wms.dal.dataobject.productdismantleRecord.ProductdismantleRecordDetailbDO; +import com.win.module.wms.dal.dataobject.productdismantleRecord.ProductdismantleRecordMainDO; +import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailaDO; +import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailbDO; import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestMainDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; +import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestDetailaDO; +import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestDetailbDO; +import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestMainDO; +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.productdismantleJob.ProductdismantleJobMainMapper; +import com.win.module.wms.dal.mysql.productdismantleRecord.ProductdismantleRecordDetailaMapper; +import com.win.module.wms.dal.mysql.productdismantleRecord.ProductdismantleRecordDetailbMapper; +import com.win.module.wms.dal.mysql.productdismantleRecord.ProductdismantleRecordMainMapper; +import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestDetailaMapper; +import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestDetailbMapper; import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestMainMapper; +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.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.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; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import javax.management.Query; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTDISMANTLE_REQUEST_MAIN_NOT_EXISTS; +import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 制品拆解申请主 Service 实现类 @@ -29,25 +90,236 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTDISMANTLE_REQUE @Validated public class ProductdismantleRequestMainServiceImpl implements ProductdismantleRequestMainService { + @Resource + private TransactionService transactionService; + @Resource + private ProductdismantleRecordDetailbMapper productdismantleRecordDetailbMapper; + @Resource + private ProductdismantleRecordDetailaMapper productdismantleRecordDetailaMapper; + @Resource + private ProductdismantleRequestDetailbService productdismantleRequestDetailbService; + @Resource + private ProductdismantleRecordMainMapper productdismantleRecordMainMapper; + @Resource + private RecordsettingService recordsettingService; + @Resource + private ProductdismantleJobMainMapper productdismantleJobMainMapper; + @Resource + private LocationService locationService; + @Resource + private WorkshopService workshopService; + @Resource + private TeamService teamService; + @Resource + private ShiftService shiftService; + @Resource + private ProductionlineService productionlineService; + @Resource + private ItembasicService itembasicService; + @Resource + private WorkstationService workstationService; + @Resource + private ProductdismantleRequestDetailbMapper productdismantleRequestDetailbMapper; + @Resource + private AdminUserApi userApi; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private JobUtils jobUtils; + @Resource + private ProductdismantleRequestDetailaMapper productdismantleRequestDetailaMapper; + @Resource + private RequestsettingService requestsettingService; + @Resource + private TrendsApi trendsApi; @Resource private ProductdismantleRequestMainMapper productdismantleRequestMainMapper; @Override + @Transactional public Long createProductdismantleRequestMain(ProductdismantleRequestMainCreateReqVO createReqVO) { // 插入 - ProductdismantleRequestMainDO productdismantleRequestMain = ProductdismantleRequestMainConvert.INSTANCE.convert(createReqVO); - productdismantleRequestMainMapper.insert(productdismantleRequestMain); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductDisassembleRequest"); + ProductdismantleRequestMainDO productdismantleRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(productdismantleRequestMainDO.getStatus())) { + List detailaDOList = productdismantleRequestDetailaMapper.selectList(productdismantleRequestMainDO.getId()); + this.generateJob(productdismantleRequestMainDO, detailaDOList); + } + trendsApi.createTrends(productdismantleRequestMainDO.getId(), "ProductdismantleRequest", "增加了制品拆解申请", TrendsTypeEnum.CREATE); // 返回 - return productdismantleRequestMain.getId(); + return productdismantleRequestMainDO.getId(); } @Override - public void updateProductdismantleRequestMain(ProductdismantleRequestMainUpdateReqVO updateReqVO) { + @Transactional + public Long updateProductdismantleRequestMain(ProductdismantleRequestMainUpdateReqVO updateReqVO) { // 校验存在 validateProductdismantleRequestMainExists(updateReqVO.getId()); // 更新 + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductDisassembleRequest"); + ProductdismantleRequestMainDO productdismantleRequestMainDO = validatorToUpdate(updateReqVO,requestsettingDO); + trendsApi.createTrends(productdismantleRequestMainDO.getId(), "ProductdismantleRequest", "增加了制品拆解申请", TrendsTypeEnum.CREATE); + // 返回 + return productdismantleRequestMainDO.getId(); + } + + private ProductdismantleRequestMainDO validatorToUpdate(ProductdismantleRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { ProductdismantleRequestMainDO updateObj = ProductdismantleRequestMainConvert.INSTANCE.convert(updateReqVO); - productdismantleRequestMainMapper.updateById(updateObj); + // DBT——>DBT3("ProductdismantleRequest") + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductDisassembleRequest"); + ProductdismantleRequestMainDO mainBo = validateMainMethod(updateObj,businesstypeDO,requestsettingDO); + productdismantleRequestMainMapper.updateById(mainBo); + return mainBo; + } + + private ProductdismantleRequestMainDO validatorToCreate(ProductdismantleRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { + ProductdismantleRequestMainDO productdismantleRequestMainDO = ProductdismantleRequestMainConvert.INSTANCE.convert(createReqVO); + // DBT——>DBT3("ProductdismantleRequest") + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductDisassembleRequest"); + ProductdismantleRequestMainDO mainBo = validateMainMethod(productdismantleRequestMainDO,businesstypeDO,requestsettingDO); + // 子表处理逻辑 ProductdismantleRequestDetailaDO + List subList = createReqVO.getSubList(); + for(ProductdismantleRequestDetailaCreateReqVO productdismantleRequestDetailaCreateReqVO:subList){ + validateDetailMethod(mainBo, productdismantleRequestDetailaCreateReqVO,businesstypeDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_REPAIR_REQUEST.getCode()); + mainBo.setNumber(number); + mainBo.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); + productdismantleRequestMainMapper.insert(mainBo); + for(ProductdismantleRequestDetailaCreateReqVO productdismantleRequestDetailaCreateReqVO:subList){ + ProductdismantleRequestDetailaDO detailaDO = ProductdismantleRequestDetailaConvert.INSTANCE.convert(productdismantleRequestDetailaCreateReqVO); + detailaDO.setMasterId(mainBo.getId()); + detailaDO.setNumber(mainBo.getNumber()); + detailaDO.setInventoryStatus(businesstypeDO.getOutInventoryStatuses()); + productdismantleRequestDetailaMapper.insert(detailaDO); + List consumereDetailbList = productdismantleRequestDetailaCreateReqVO.getChildList(); + if (consumereDetailbList == null || consumereDetailbList.size() == 0) { + throw exception(DISMANTLE_REQUEST_BOM_NOT_EXISTS); + } + List childList = new ArrayList<>(); + for(ProductdismantleRequestDetailbCreateReqVO productdismantleRequestDetailbCreateReqVO:consumereDetailbList){ + ProductdismantleRequestDetailbDO detailbDO = ProductdismantleRequestDetailbConvert.INSTANCE.convert(productdismantleRequestDetailbCreateReqVO); + validateDetailbBom(detailbDO,detailaDO,mainBo); // 创建二级子表数据 + childList.add(detailbDO); + } + productdismantleRequestDetailbMapper.insertBatch(childList); + } + return mainBo; + } + + /** + * 创建 二级 子表数据 + * @param detailbDO + * @param detailaDO + * @param mainBo + */ + private void validateDetailbBom(ProductdismantleRequestDetailbDO detailbDO, ProductdismantleRequestDetailaDO detailaDO, ProductdismantleRequestMainDO mainBo) { + detailbDO.setProcessCode(detailaDO.getProcessCode()); + detailbDO.setBomVersion(detailaDO.getBomVersion()); + detailbDO.setMasterId(detailaDO.getId()); + detailbDO.setNumber(detailaDO.getNumber()); + // 校验--物品基本信息 + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailbDO.getItemCode()); + // 赋值物品Item相关信息 + detailbDO.setItemDesc1(itembasicDO.getDesc1()); + detailbDO.setItemDesc2(itembasicDO.getDesc2()); + detailbDO.setItemName(itembasicDO.getName()); + detailbDO.setProjectCode(itembasicDO.getProject()); + } + + /** + * 校验 子表 + * @param mainDO + * @param detailDo + * @param businesstypeDO + */ + private void validateDetailMethod(ProductdismantleRequestMainDO mainDO, ProductdismantleRequestDetailaCreateReqVO detailDo, BusinesstypeDO businesstypeDO) { + // 校验--生产线基本信息 + ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); + detailDo.setFromLocationCode(productionlineDO.getRawLocationCode()); + // 校验--物品基本信息 + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + // 赋值物品Item相关信息 + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + if (!itembasicDO.getUom().equals(detailDo.getUom())) { + // 提示:计量单位【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()); + } + // 校验--库存余额 TB——>TB1 + validateBalance(detailDo,mainDO); + // 校验--物品类型 DBT——>DBT2——>IT + jobUtils.ifInType(itembasicDO.getType(),businesstypeDO); + // 校验--来源库位 DBT——>DBT2——>LO + jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); + // 校验--库存状态 DBT——>DBT2——>ISO + jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); + } + + /** + * 校验 主表 + * @param productdismantleRequestMainDO + * @param businesstypeDO + * @param requestsettingDO + * @return + */ + private ProductdismantleRequestMainDO validateMainMethod(ProductdismantleRequestMainDO productdismantleRequestMainDO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { + + // 校验--车间 + workshopService.selectWorkshopExist(productdismantleRequestMainDO.getWorkshopCode()); + // 校验--班组 + teamService.selectTeamExist(productdismantleRequestMainDO.getTeam()); + // 校验--班次 + shiftService.selectShiftExist(productdismantleRequestMainDO.getShift()); + // 校验--截止时间 + validordurtime(productdismantleRequestMainDO.getDueTime()); + // 赋值逻辑 + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(productdismantleRequestMainDO.getAutoCommit(), productdismantleRequestMainDO.getAutoAgree(), productdismantleRequestMainDO.getAutoExecute()); + productdismantleRequestMainDO.setStatus(requestStatusState.getState().getCode()); + productdismantleRequestMainDO.setRequestTime(LocalDateTime.now()); + productdismantleRequestMainDO.setCreateTime(LocalDateTime.now()); + productdismantleRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); + productdismantleRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); + productdismantleRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); + productdismantleRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + productdismantleRequestMainDO.setBusinessType(businesstypeDO.getCode()); + productdismantleRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + productdismantleRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + productdismantleRequestMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());//入库库存状态范围 + productdismantleRequestMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());//出库库存状态范围 + return productdismantleRequestMainDO; + } + + private void validateBalance(ProductdismantleRequestDetailaBaseVO detailDo, ProductdismantleRequestMainDO mainDO) { + String inventoryStatus = detailDo.getInventoryStatus(); + String[] inventoryArray = inventoryStatus.split(","); + List inventorystatus = Arrays.asList(inventoryArray); + List list = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(),inventorystatus); + if(list != null && list.size() > 0){ + BalanceDO balanceDO = list.get(0); + mainDO.setFromWarehouseCode(balanceDO.getWarehouseCode()); + if(balanceDO.getQty().compareTo(detailDo.getQty()) < 0){ + // 拆解数量【qty】不能大于库存数量【banlance.qty】 + throw exception(PRODUCTDISMANTLE_REQUEST_DETAILA_QTY_ERROR,detailDo.getQty(),balanceDO.getQty()); + } + }else { + // 余额校验异常 + throw exception(PRODUCTREPAIR_REQUEST_DETAILA_BALANCE_ERROR); + } + } + + private void validordurtime(LocalDateTime durtime){ + if(!durtime.isAfter(LocalDateTime.now())){ + throw exception(TIME_AFTER,LocalDateTime.now(),durtime); + } } @Override @@ -58,10 +330,12 @@ public class ProductdismantleRequestMainServiceImpl implements ProductdismantleR productdismantleRequestMainMapper.deleteById(id); } - private void validateProductdismantleRequestMainExists(Long id) { - if (productdismantleRequestMainMapper.selectById(id) == null) { + private ProductdismantleRequestMainDO validateProductdismantleRequestMainExists(Long id) { + ProductdismantleRequestMainDO productdismantleRequestMainDO = productdismantleRequestMainMapper.selectById(id); + if ( productdismantleRequestMainDO == null) { throw exception(PRODUCTDISMANTLE_REQUEST_MAIN_NOT_EXISTS); } + return productdismantleRequestMainDO; } @Override @@ -88,4 +362,221 @@ public class ProductdismantleRequestMainServiceImpl implements ProductdismantleR public PageResult getProductdismantleRequestMainSenior(CustomConditions conditions) { return productdismantleRequestMainMapper.selectSenior(conditions); } + + @Override + public List getProductdismantleRequestMainList(CustomConditions conditions) { + return productdismantleRequestMainMapper.selectSeniorList(conditions); + } + + @Override + public Integer closeProductdismantleRequestMain(Long id) { + ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.close(); + if(!flag) { + throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //增加操作记录 + trendsApi.createTrends(id, "productdismantleRequest", "关闭了制品拆解申请", TrendsTypeEnum.UPDATE); + return productdismantleRequestMainMapper.updateById(mainDO); + } + + @Override + public Integer reAddProductdismantleRequestMain(Long id) { + ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.reAdd(); + if(!flag) { + throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "productdismantleRequest", "打开了制品拆解申请", TrendsTypeEnum.UPDATE); + return productdismantleRequestMainMapper.updateById(mainDO); + } + + @Override + public Integer submitProductdismantleRequestMain(Long id) { + ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, productdismantleRequestDetailaMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "productdismantleRequest", "提交了制品拆解申请", TrendsTypeEnum.UPDATE); + return productdismantleRequestMainMapper.updateById(mainDO); + } + + @Override + public Integer refusedProductdismantleRequestMain(Long id) { + ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.refused(); + if(!flag) { + throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + trendsApi.createTrends(id, "productdismantleRequest", "驳回了制品拆解申请", TrendsTypeEnum.UPDATE); + return productdismantleRequestMainMapper.updateById(mainDO); + } + + @Override + public Integer agreeProductdismantleRequestMain(Long id) { + ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); + if(!flag) { + throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, productdismantleRequestDetailaMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "productdismantleRequest", "审批通过了制品拆解申请", TrendsTypeEnum.UPDATE); + return productdismantleRequestMainMapper.updateById(mainDO); + } + + @Override + public Integer handleProductdismantleRequestMain(Long id) { + ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.handle(); + if(!flag) { + throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用执行方法 + this.generateJob(mainDO, productdismantleRequestDetailaMapper.selectList(mainDO.getId())); + trendsApi.createTrends(id, "productdismantleRequest", "执行了制品拆解申请", TrendsTypeEnum.UPDATE); + return productdismantleRequestMainMapper.updateById(mainDO); + } + + /** + * 创建 记录 + * @param mainDO + * @param detailaDOList + */ + private void generateJob(ProductdismantleRequestMainDO mainDO, List detailaDOList) { + //跳过任务直接生成记录 + if("TRUE".equals(mainDO.getDirectCreateRecord())) { + ProductdismantleRecordMainDO productdismantleRecordMainDO = new ProductdismantleRecordMainDO(); + BeanUtils.copyProperties(mainDO, productdismantleRecordMainDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_DISASSEMBLE_RECORD.getCode()); + productdismantleRecordMainDO.setNumber(number); + productdismantleRecordMainDO.setRequestNumber(mainDO.getNumber()); + productdismantleRecordMainDO.setExecuteTime(LocalDateTime.now()); + productdismantleRecordMainDO.setActiveDate(LocalDateTime.now()); + productdismantleRecordMainDO.setAvailable("TRUE"); + productdismantleRecordMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); + productdismantleRecordMainDO.setId(null); + productdismantleRecordMainDO.setCreateTime(null); + productdismantleRecordMainDO.setCreator(null); + productdismantleRecordMainDO.setUpdateTime(null); + productdismantleRecordMainDO.setUpdater(null); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductDisassembleRecord"); + productdismantleRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); + productdismantleRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType()); + productdismantleRecordMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + productdismantleRecordMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + productdismantleRecordMainDO.setBusinessType(businesstypeDO.getCode()); + // 接口类型 + productdismantleRecordMainDO.setInterfaceType(recordsettingService.selectRecordsettingExist("ProductDisassembleRecord").getInterfaceType()); + productdismantleRecordMainMapper.insert(productdismantleRecordMainDO); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + // 子表b 集合 + List detailbDOList = new ArrayList<>(); + for(ProductdismantleRequestDetailaDO productdismantleRequestDetailaDO : detailaDOList) { + ProductdismantleRecordDetailaDO productdismantleRecordDetailaDO = new ProductdismantleRecordDetailaDO(); + BeanUtils.copyProperties(productdismantleRequestDetailaDO, productdismantleRecordDetailaDO); + LocationDO locationDO = locationService.selectLocation(productdismantleRecordDetailaDO.getFromLocationCode()); + productdismantleRecordDetailaDO.setFromAreaCode(locationDO.getAreaCode()); + productdismantleRecordDetailaDO.setFromLocationGroupCode(locationDO.getLocationGroupCode()); + productdismantleRecordDetailaDO.setMasterId(productdismantleRecordMainDO.getId()); + productdismantleRecordDetailaDO.setId(null); + productdismantleRecordDetailaDO.setCreateTime(null); + productdismantleRecordDetailaDO.setCreator(null); + productdismantleRecordDetailaDO.setUpdateTime(null); + productdismantleRecordDetailaDO.setUpdater(null); + productdismantleRecordDetailaMapper.insert(productdismantleRecordDetailaDO); + //添加库存事务list + // 出动作 + TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); + BeanUtils.copyProperties(productdismantleRecordDetailaDO, transactionCreateReqVOOut); + TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); + transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); + transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); + transactionCreateReqVOOut.setBusinessType(productdismantleRecordMainDO.getBusinessType()); + transactionCreateReqVOOut.setOwnerCode(productdismantleRecordDetailaDO.getFromOwnerCode()); + transactionCreateReqVOOut.setRecordNumber(number); + transactionCreateReqVOOut.setId(null); + transactionCreateReqVOOut.setPackingNumber(productdismantleRecordDetailaDO.getPackingNumber()); + transactionCreateReqVOOut.setBatch(productdismantleRecordDetailaDO.getBatch()); + transactionCreateReqVOOut.setContainerNumber(productdismantleRecordDetailaDO.getContainerNumber()); + transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); + transactionCreateReqVOOut.setWarehouseCode(productdismantleRecordMainDO.getFromWarehouseCode()); + transactionCreateReqVOOut.setLocationCode(productdismantleRecordDetailaDO.getFromLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVOOut); + // 根据申请子表a id 查询 申请 子表b + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("master_id", productdismantleRequestDetailaDO.getId().toString()); + List productdismantleRequestDetailbDOList = productdismantleRequestDetailbMapper.selectList(queryWrapper); + for(ProductdismantleRequestDetailbDO productdismantleRequestDetailbDO:productdismantleRequestDetailbDOList) { + ProductdismantleRecordDetailbDO productdismantleRecordDetailbDO = new ProductdismantleRecordDetailbDO(); + BeanUtils.copyProperties(productdismantleRequestDetailbDO, productdismantleRecordDetailbDO); + productdismantleRecordDetailbDO.setMasterId(productdismantleRecordDetailaDO.getId()); + productdismantleRecordDetailbDO.setNumber(productdismantleRecordDetailaDO.getNumber()); + productdismantleRecordDetailbDO.setBatch("000000"); + productdismantleRecordDetailbDO.setPackingNumber(""); + productdismantleRecordDetailbDO.setInventoryStatus("OK"); + // 根据成品物品 对应工位 查询 原料库位 + WorkstationDO workstationDO = workstationService.selectWorkstationExist(productdismantleRecordDetailaDO.getWorkStationCode(),productdismantleRecordMainDO.getWorkshopCode(),productdismantleRecordDetailaDO.getProductionLineCode()); + productdismantleRecordDetailbDO.setToLocationCode(workstationDO.getRawLocationCode()); + LocationDO locationDODetailb = locationService.selectLocation(workstationDO.getRawLocationCode()); + productdismantleRecordDetailbDO.setToAreaCode(locationDODetailb.getAreaCode()); + productdismantleRecordDetailbDO.setToLocationGroupCode(locationDODetailb.getLocationGroupCode()); + productdismantleRecordDetailbDO.setId(null); + productdismantleRecordDetailbDO.setCreateTime(null); + productdismantleRecordDetailbDO.setCreator(null); + productdismantleRecordDetailbDO.setUpdateTime(null); + productdismantleRecordDetailbDO.setUpdater(null); + detailbDOList.add(productdismantleRecordDetailbDO); + //添加库存事务list + // 入动作 + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(productdismantleRecordDetailbDO, transactionCreateReqVO); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(productdismantleRecordMainDO.getBusinessType()); + transactionCreateReqVO.setOwnerCode(""); + transactionCreateReqVO.setRecordNumber(number); + transactionCreateReqVO.setId(null); + transactionCreateReqVO.setPackingNumber(productdismantleRecordDetailbDO.getPackingNumber()); + transactionCreateReqVO.setBatch(productdismantleRecordDetailbDO.getBatch()); + transactionCreateReqVO.setContainerNumber(""); + transactionCreateReqVO.setAmount(BigDecimal.ZERO); + transactionCreateReqVO.setWarehouseCode(productdismantleRecordMainDO.getFromWarehouseCode()); + transactionCreateReqVO.setLocationCode(productdismantleRecordDetailbDO.getToLocationCode()); + transactionCreateReqVOList.add(transactionCreateReqVO); + } + } + if (detailbDOList != null && detailbDOList.size() > 0) { + productdismantleRecordDetailbMapper.insertBatch(detailbDOList); + } + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + } else { + throw new UtilException("该功能无任务!请到单据设置管理-申请设置功能中重新设置!"); + } + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/shift/ShiftServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/shift/ShiftServiceImpl.java index ef7af82a..662de5db 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/shift/ShiftServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/shift/ShiftServiceImpl.java @@ -81,7 +81,7 @@ public class ShiftServiceImpl implements ShiftService { if(shiftDO != null && "TRUE".equals(shiftDO.getAvailable())){ return shiftDO; }else { - return null; + throw exception(SHIFT_NOT_EXISTS); } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/team/TeamServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/team/TeamServiceImpl.java index 64f0c1d4..51717485 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/team/TeamServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/team/TeamServiceImpl.java @@ -84,7 +84,7 @@ public class TeamServiceImpl implements TeamService { if(teamDO != null && "TRUE".equals(teamDO.getAvailable())){ return teamDO; }else { - return null; + throw exception(TEAM_NOT_EXISTS); } }