From 08e2f5789ae89c3fd8738f159063c77932993377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Mon, 11 Dec 2023 16:51:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=94=B6=E8=B4=A7=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E5=8F=8A=E5=9B=9E=E5=86=B2bom=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 6 + .../BackflushRequestDetailbController.java | 110 +++ .../vo/BackflushRequestDetailbBaseVO.java | 72 ++ .../BackflushRequestDetailbCreateReqVO.java | 14 + .../vo/BackflushRequestDetailbExcelVO.java | 69 ++ .../BackflushRequestDetailbExportReqVO.java | 65 ++ .../vo/BackflushRequestDetailbPageReqVO.java | 71 ++ .../vo/BackflushRequestDetailbRespVO.java | 13 + .../BackflushRequestDetailbUpdateReqVO.java | 14 + .../IssueRequestMainController.java | 2 +- .../vo/IssueRequestMainExcelVO.java | 66 +- ...oductionreturnRequestDetailController.java | 12 + .../vo/ProductreceiptJobMainBaseVO.java | 6 + .../vo/ProductreceiptJobMainPageReqVO.java | 6 + ...ProductreceiptRequestDetailController.java | 11 + .../ProductreceiptRequestMainController.java | 182 ++++- .../vo/ProductreceiptRequestDetailBaseVO.java | 7 + .../ProductreceiptRequestDetailExcelVO.java | 3 + ...roductreceiptRequestDetailExportReqVO.java | 4 + .../ProductreceiptRequestDetailPageReqVO.java | 3 + .../ProductreceiptRequestImportErrorVO.java | 18 + .../vo/ProductreceiptRequestImportVO.java | 56 ++ .../vo/ProductreceiptRequestMainBaseVO.java | 2 + .../ProductreceiptRequestMainCreateReqVO.java | 7 + .../vo/ProductreceiptRequestMainExcelVO.java | 127 +++- .../BackflushRequestDetailbConvert.java | 34 + .../ProductreceiptRequestDetailConvert.java | 1 + .../ProductreceiptRequestMainConvert.java | 14 + .../BackflushRequestDetailbDO.java | 89 +++ .../ProductreceiptJobMainDO.java | 8 + .../ProductreceiptRequestDetailDO.java | 6 + .../BackflushRequestDetailbMapper.java | 61 ++ .../ProductreceiptJobMainMapper.java | 7 + .../ProductreceiptRequestDetailMapper.java | 6 + .../ProductreceiptRequestMainMapper.java | 5 + .../BackflushRequestDetailbService.java | 77 ++ .../BackflushRequestDetailbServiceImpl.java | 91 +++ .../module/wms/service/bom/BomService.java | 2 + .../IssueRequestMainServiceImpl.java | 263 +++---- .../packageMassage/PackageServiceImpl.java | 14 +- .../PreparetoissueMainServiceImpl.java | 33 +- .../ProductionreturnJobMainServiceImpl.java | 7 +- .../ProductionreturnRequestDetailService.java | 2 + ...ductionreturnRequestDetailServiceImpl.java | 9 + ...roductionreturnRequestMainServiceImpl.java | 6 +- .../ProductreceiptRequestDetailService.java | 4 + ...roductreceiptRequestDetailServiceImpl.java | 85 +++ .../ProductreceiptRequestMainService.java | 23 +- .../ProductreceiptRequestMainServiceImpl.java | 688 +++++++++++++++++- .../com/win/module/wms/util/JobUtils.java | 48 +- 50 files changed, 2261 insertions(+), 268 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/BackflushRequestDetailbController.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbBaseVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbCreateReqVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbExcelVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbExportReqVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbPageReqVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbRespVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbUpdateReqVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestImportVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/backflushRequest/BackflushRequestDetailbConvert.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/backflushRequest/BackflushRequestDetailbDO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/backflushRequest/BackflushRequestDetailbMapper.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/backflushRequest/BackflushRequestDetailbService.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/backflushRequest/BackflushRequestDetailbServiceImpl.java 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 7fa481da..dbfb1f28 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 @@ -654,6 +654,10 @@ public interface ErrorCodeConstants { //制品收货申请子ErrorCode ErrorCode PRODUCTRECEIPT_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_001_102_001, "制品收货申请子不存在"); + ErrorCode PRODUCTRECEIPT_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_001_102_001, "导入制品收货申请不能为空"); + ErrorCode PRODUCTRECEIPT_REQUEST_JOB_EXISTS = new ErrorCode(1_001_102_002, "制品收货申请存在制品收货任务单"); + + ErrorCode PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR = new ErrorCode(1_001_102_003, "制品收货申请状态错误"); //制品收货任务主ErrorCode ErrorCode PRODUCTRECEIPT_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_103_000, "制品收货任务主不存在"); //制品收货申请子ErrorCode @@ -1035,5 +1039,7 @@ public interface ErrorCodeConstants { ErrorCode BARBASIC_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_303_001, "条码实体列表不存在"); ErrorCode ENTERPRISE_EXISTS = new ErrorCode(1_000_303_001, "企业已存在"); + + ErrorCode BACKFLUSH_REQUEST_DETAILB_NOT_EXISTS = new ErrorCode(1_000_304_001, "制品收货申请二子表不存在"); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/BackflushRequestDetailbController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/BackflushRequestDetailbController.java new file mode 100644 index 00000000..9575cba0 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/BackflushRequestDetailbController.java @@ -0,0 +1,110 @@ +package com.win.module.wms.controller.backflushRequest; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.win.framework.common.pojo.PageResult; +import com.win.framework.common.pojo.CommonResult; +import static com.win.framework.common.pojo.CommonResult.success; + +import com.win.framework.excel.core.util.ExcelUtils; + +import com.win.framework.operatelog.core.annotations.OperateLog; +import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.win.module.wms.controller.backflushRequest.vo.*; +import com.win.module.wms.dal.dataobject.backflushRequest.BackflushRequestDetailbDO; +import com.win.module.wms.convert.backflushRequest.BackflushRequestDetailbConvert; +import com.win.module.wms.service.backflushRequest.BackflushRequestDetailbService; + +@Tag(name = "管理后台 - 制品收货申请子") +@RestController +@RequestMapping("/wms/backflush-request-detailb") +@Validated +public class BackflushRequestDetailbController { + + @Resource + private BackflushRequestDetailbService backflushRequestDetailbService; + + @PostMapping("/create") + @Operation(summary = "创建制品收货申请子") + @PreAuthorize("@ss.hasPermission('wms:backflush-request-detailb:create')") + public CommonResult createBackflushRequestDetailb(@Valid @RequestBody BackflushRequestDetailbCreateReqVO createReqVO) { + return success(backflushRequestDetailbService.createBackflushRequestDetailb(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新制品收货申请子") + @PreAuthorize("@ss.hasPermission('wms:backflush-request-detailb:update')") + public CommonResult updateBackflushRequestDetailb(@Valid @RequestBody BackflushRequestDetailbUpdateReqVO updateReqVO) { + int result = backflushRequestDetailbService.updateBackflushRequestDetailb(updateReqVO); + return success(result > 0); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除制品收货申请子") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:backflush-request-detailb:delete')") + public CommonResult deleteBackflushRequestDetailb(@RequestParam("id") Long id) { + int result = backflushRequestDetailbService.deleteBackflushRequestDetailb(id); + return success(result > 0); + } + + @GetMapping("/get") + @Operation(summary = "获得制品收货申请子") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('wms:backflush-request-detailb:query')") + public CommonResult getBackflushRequestDetailb(@RequestParam("id") Long id) { + BackflushRequestDetailbDO backflushRequestDetailb = backflushRequestDetailbService.getBackflushRequestDetailb(id); + return success(BackflushRequestDetailbConvert.INSTANCE.convert(backflushRequestDetailb)); + } + + @GetMapping("/list") + @Operation(summary = "获得制品收货申请子列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('wms:backflush-request-detailb:query')") + public CommonResult> getBackflushRequestDetailbList(@RequestParam("ids") Collection ids) { + List list = backflushRequestDetailbService.getBackflushRequestDetailbList(ids); + return success(BackflushRequestDetailbConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得制品收货申请子分页") + @PreAuthorize("@ss.hasPermission('wms:backflush-request-detailb:query')") + public CommonResult> getBackflushRequestDetailbPage(@Valid BackflushRequestDetailbPageReqVO pageVO) { + PageResult pageResult = backflushRequestDetailbService.getBackflushRequestDetailbPage(pageVO); + return success(BackflushRequestDetailbConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出制品收货申请子 Excel") + @PreAuthorize("@ss.hasPermission('wms:backflush-request-detailb:export')") + @OperateLog(type = EXPORT) + public void exportBackflushRequestDetailbExcel(@Valid BackflushRequestDetailbExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = backflushRequestDetailbService.getBackflushRequestDetailbList(exportReqVO); + // 导出 Excel + List datas = BackflushRequestDetailbConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "制品收货申请子.xls", "数据", BackflushRequestDetailbExcelVO.class, datas); + } + + @GetMapping("/get-import-template") + @Operation(summary = "获得导入制品收货申请子模板") + public void importTemplate(HttpServletResponse response) throws IOException { + List list = Arrays.asList(); + // 输出 + ExcelUtils.write(response, "制品收货申请子基本信息导入模板.xls", "制品收货申请子基本信息列表", BackflushRequestDetailbExcelVO.class, list); + } + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbBaseVO.java new file mode 100644 index 00000000..46aeb6ef --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbBaseVO.java @@ -0,0 +1,72 @@ +package com.win.module.wms.controller.backflushRequest.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import javax.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 制品收货申请子 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class BackflushRequestDetailbBaseVO { + + @Schema(description = "id") + private Long id; + @Schema(description = "工序代码") + private String processCode; + + @Schema(description = "BOM版本") + private String bomVersion; + + @Schema(description = "物品代码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "物品代码不能为空") + private String itemCode; + + @Schema(description = "单据号") + private String number; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "创建时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime createTime; + + @Schema(description = "物品名称") + private String itemName; + + @Schema(description = "物品描述1") + private String itemDesc1; + + @Schema(description = "物品描述2") + private String itemDesc2; + + @Schema(description = "项目代码") + private String projectCode; + + @Schema(description = "数量") + private BigDecimal qty; + + @Schema(description = "计量单位") + private String uom; + + @Schema(description = "最后更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime updateTime; + + @Schema(description = "最后更新者用户名") + private String updater; + + @Schema(description = "创建者用户名") + private String creator; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbCreateReqVO.java new file mode 100644 index 00000000..ab267f0e --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbCreateReqVO.java @@ -0,0 +1,14 @@ +package com.win.module.wms.controller.backflushRequest.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 制品收货申请子创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BackflushRequestDetailbCreateReqVO extends BackflushRequestDetailbBaseVO { + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbExcelVO.java new file mode 100644 index 00000000..b31a3093 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbExcelVO.java @@ -0,0 +1,69 @@ +package com.win.module.wms.controller.backflushRequest.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; + + +/** + * 制品收货申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +public class BackflushRequestDetailbExcelVO { + + @ExcelProperty("工序代码") + private String processCode; + + @ExcelProperty("BOM版本") + private String bomVersion; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String uom; + + @ExcelProperty("最后更新时间") + private LocalDateTime updateTime; + + @ExcelProperty("最后更新者用户名") + private String updater; + + @ExcelProperty("创建者用户名") + private String creator; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbExportReqVO.java new file mode 100644 index 00000000..b037080d --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbExportReqVO.java @@ -0,0 +1,65 @@ +package com.win.module.wms.controller.backflushRequest.vo; + +import lombok.*; + +import java.math.BigDecimal; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.win.framework.common.pojo.PageParam; +import java.time.LocalDateTime; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 制品收货申请子 Excel 导出 Request VO,参数和 BackflushRequestDetailbPageReqVO 是一致的") +@Data +public class BackflushRequestDetailbExportReqVO { + + @Schema(description = "工序代码") + private String processCode; + + @Schema(description = "BOM版本") + private String bomVersion; + + @Schema(description = "物品代码") + private String itemCode; + + @Schema(description = "单据号") + private String number; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "物品名称") + private String itemName; + + @Schema(description = "物品描述1") + private String itemDesc1; + + @Schema(description = "物品描述2") + private String itemDesc2; + + @Schema(description = "项目代码") + private String projectCode; + + @Schema(description = "数量") + private BigDecimal qty; + + @Schema(description = "计量单位") + private String uom; + + @Schema(description = "最后更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] updateTime; + + @Schema(description = "最后更新者用户名") + private String updater; + + @Schema(description = "创建者用户名") + private String creator; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbPageReqVO.java new file mode 100644 index 00000000..2e3e3283 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbPageReqVO.java @@ -0,0 +1,71 @@ +package com.win.module.wms.controller.backflushRequest.vo; + +import lombok.*; + +import java.math.BigDecimal; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.win.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 制品收货申请子分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BackflushRequestDetailbPageReqVO extends PageParam { + + @Schema(description = "工序代码") + private String processCode; + + @Schema(description = "BOM版本") + private String bomVersion; + + @Schema(description = "物品代码") + private String itemCode; + + @Schema(description = "单据号") + private String number; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "物品名称") + private String itemName; + + @Schema(description = "物品描述1") + private String itemDesc1; + + @Schema(description = "物品描述2") + private String itemDesc2; + + @Schema(description = "项目代码") + private String projectCode; + + @Schema(description = "数量") + private BigDecimal qty; + + @Schema(description = "计量单位") + private String uom; + + @Schema(description = "最后更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] updateTime; + + @Schema(description = "最后更新者用户名") + private String updater; + + @Schema(description = "创建者用户名") + private String creator; + + @Schema(description = "主表ID") + private String masterId; + + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbRespVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbRespVO.java new file mode 100644 index 00000000..cbaf241f --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbRespVO.java @@ -0,0 +1,13 @@ +package com.win.module.wms.controller.backflushRequest.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 制品收货申请子 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BackflushRequestDetailbRespVO extends BackflushRequestDetailbBaseVO { + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbUpdateReqVO.java new file mode 100644 index 00000000..3343d911 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/backflushRequest/vo/BackflushRequestDetailbUpdateReqVO.java @@ -0,0 +1,14 @@ +package com.win.module.wms.controller.backflushRequest.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 制品收货申请子更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BackflushRequestDetailbUpdateReqVO extends BackflushRequestDetailbBaseVO { + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java index 0429ba47..b2223704 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java @@ -211,7 +211,7 @@ public class IssueRequestMainController { @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) - @PreAuthorize("@ss.hasPermission('wms:inspect-request-main:import')") + @PreAuthorize("@ss.hasPermission('wms:issue-request-main:import')") public CommonResult> importExcel(HttpServletResponse response, @RequestParam("file") MultipartFile file, @RequestParam(value = "mode") Integer mode, diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainExcelVO.java index 701b07b5..6adda35e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainExcelVO.java @@ -26,6 +26,21 @@ public class IssueRequestMainExcelVO { @ExcelProperty("车间代码") private String workshopCode; + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("申请时间") + private LocalDateTime requestTime; + + @ExcelProperty("截止时间") + private LocalDateTime dueTime; + + @ExcelProperty(value = "状态", converter = RequestStatusConverter.class) + private String status; + + @ExcelProperty("使用在途库") + private String useOnTheWayLocation; + @ExcelProperty("从仓库代码") private String fromWarehouseCode; @@ -33,11 +48,11 @@ public class IssueRequestMainExcelVO { private String toWarehouseCode; @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.LOCATION_TYPE) private String fromLocationTypes; @ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.LOCATION_TYPE) private String toLocationTypes; @ExcelProperty("从库区代码范围") @@ -46,8 +61,24 @@ public class IssueRequestMainExcelVO { @ExcelProperty("到库区代码范围") private String toAreaCodes; - @ExcelProperty("单据号") - private String number; + @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 businessType; @@ -61,39 +92,12 @@ public class IssueRequestMainExcelVO { @ExcelProperty("创建者用户名") private String creator; - @ExcelProperty("申请时间") - private LocalDateTime requestTime; - - @ExcelProperty("截止时间") - private LocalDateTime dueTime; - - @ExcelProperty("部门") - private String departmentCode; - - @ExcelProperty(value = "状态", converter = RequestStatusConverter.class) - private String status; - @ExcelProperty("最后更新时间") private LocalDateTime updateTime; @ExcelProperty("最后更新者用户名") private String updater; - @ExcelProperty("使用在途库") - private String useOnTheWayLocation; - - @ExcelProperty("自动提交") - private String autoCommit; - - @ExcelProperty("自动通过") - private String autoAgree; - - @ExcelProperty("自动执行") - private String autoExecute; - - @ExcelProperty("直接生成记录") - private String directCreateRecord; - // 子表数据 @ExcelProperty("生产线代码") private String productionLineCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java index 04aff2e7..fe2d9a00 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java @@ -122,4 +122,16 @@ public class ProductionreturnRequestDetailController { return success(result); } + + /** + * 更新 生产退料申请 子表数据 包装号字段 + * @param number + */ + @PutMapping("/updateDetailPackingNumber") + @Operation(summary = "更新生产退料申请子") + public CommonResult updateProductreceiptPackingNumber(@RequestParam("id") Long id, @RequestParam("number") String number) { + productionreturnRequestDetailService.updateProductreceiptRequestDetailPackingNumber(id, number); + return success(true); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainBaseVO.java index 98831c76..2ef6ac5a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainBaseVO.java @@ -149,4 +149,10 @@ public class ProductreceiptJobMainBaseVO { @Schema(description = "允许修改箱码") private String allowModifyPackingNumber; + @Schema(description = "入库库存状态范围") + private String inInventoryStatuses; + + @Schema(description = "出库库存状态范围") + private String outInventoryStatuses; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainPageReqVO.java index ca2bdff2..76bdc2be 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptJob/vo/ProductreceiptJobMainPageReqVO.java @@ -139,4 +139,10 @@ public class ProductreceiptJobMainPageReqVO extends PageParam { @Schema(description = "允许修改箱码") private String allowModifyPackingNumber; + @Schema(description = "入库库存状态范围") + private String inInventoryStatuses; + + @Schema(description = "出库库存状态范围") + private String outInventoryStatuses; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/ProductreceiptRequestDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/ProductreceiptRequestDetailController.java index 0d7aae13..4294fea6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/ProductreceiptRequestDetailController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/ProductreceiptRequestDetailController.java @@ -120,4 +120,15 @@ public class ProductreceiptRequestDetailController { } return success(result); } + + /** + * 更新 制品收货申请 子表数据 包装号字段 + * @param number + */ + @PutMapping("/updateDetailPackingNumber") + @Operation(summary = "更新制品收货申请子") + public CommonResult updateProductreceiptPackingNumber(@RequestParam("id") Long id, @RequestParam("number") String number) { + productreceiptRequestDetailService.updateProductreceiptRequestDetailPackingNumber(id, number); + return success(true); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/ProductreceiptRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/ProductreceiptRequestMainController.java index aa9cc3ef..bbb06e3f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/ProductreceiptRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/ProductreceiptRequestMainController.java @@ -3,27 +3,35 @@ package com.win.module.wms.controller.productreceiptRequest; 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.ConvertUtil; 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.productreceiptRequest.vo.*; import com.win.module.wms.convert.productreceiptRequest.ProductreceiptRequestMainConvert; +import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestDetailService; import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; 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.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -34,6 +42,8 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Validated public class ProductreceiptRequestMainController { + @Resource + private ProductreceiptRequestDetailService productreceiptRequestDetailService; @Resource private ProductreceiptRequestMainService productreceiptRequestMainService; @@ -90,23 +100,6 @@ public class ProductreceiptRequestMainController { return success(ProductreceiptRequestMainConvert.INSTANCE.convertPage(pageResult)); } - @GetMapping("/export-excel") - @Operation(summary = "导出制品收货申请主 Excel") - @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:export')") - @OperateLog(type = EXPORT) - public void exportProductreceiptRequestMainExcel(@Valid ProductreceiptRequestMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = productreceiptRequestMainService.getProductreceiptRequestMainList(exportReqVO); - // 导出 Excel - List datas = ProductreceiptRequestMainConvert.INSTANCE.convertList02(list); - for(ProductreceiptRequestMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "制品收货申请主.xls", "数据", ProductreceiptRequestMainExcelVO.class, datas); - } - @PostMapping("/senior") @Operation(summary = "高级搜索获得账期日历分页") @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:query')") @@ -121,4 +114,155 @@ public class ProductreceiptRequestMainController { return success(result); } + private List getExcelVo(List list, Map mapDropDown) { + String[] locationTypes = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(9, locationTypes); + String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(12, available); + mapDropDown.put(13, available); + mapDropDown.put(14, available); + mapDropDown.put(15, available); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(31, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(35, uom); + mapDropDown.put(42, uom); + List resultList = new ArrayList<>(); + // 导出 + for(ProductreceiptRequestMainDO mainDO : list) { + List subList = productreceiptRequestDetailService.selectList(mainDO.getId()); + for(ProductreceiptRequestDetailDO detailDO : subList) { + ProductreceiptRequestMainExcelVO vo = ProductreceiptRequestMainConvert.INSTANCE.convert(mainDO, detailDO); + resultList.add(vo); + } + } + return resultList; + } + + @GetMapping("/export-excel-senior") + @Operation(summary = "导出生产计划主 Excel") + @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:export')") + @OperateLog(type = EXPORT) + public void exportProductreceiptRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = productreceiptRequestMainService.getProductreceiptRequestMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + resultList.forEach(item -> { + //后端创建个字段作为前端展示的虚拟字段 + item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname()); + item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname()); + }); + ExcelUtils.write(response, "制品收货申请.xlsx", "制品收货申请", ProductreceiptRequestMainExcelVO.class, resultList, mapDropDown); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出制品收货申请 Excel") + @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:export')") + @OperateLog(type = EXPORT) + public void exportProductreceiptRequestMainExcel(@Valid ProductreceiptRequestMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productreceiptRequestMainService.getProductreceiptRequestMainList(exportReqVO); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + resultList.forEach(item -> { + //后端创建个字段作为前端展示的虚拟字段 + item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname()); + item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname()); + }); + ExcelUtils.write(response, "制品收货申请.xls", "制品收货申请", ProductreceiptRequestMainExcelVO.class, resultList); + } + + @GetMapping("/get-import-template") + @Operation(summary = "获得导入制品收货申请模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = new ArrayList<>(); + Map mapDropDown = new HashMap<>(); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(10, uom); + // 输出 + ExcelUtils.write(response, "制品收货申请导入模板.xlsx", "制品收货申请", ProductreceiptRequestImportVO.class, list, mapDropDown); + } + + @PostMapping("/import") + @Operation(summary = "导入制品收货申请基本信息") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + List list = ExcelUtils.read(file, ProductreceiptRequestImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(ProductreceiptRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = productreceiptRequestMainService.importProductreceiptRequestList(createReqVOList, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("制品收货申请导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + returnMap.put("errorFile", url); + } + return success(returnMap); + } + + @PutMapping("/close") + @Operation(summary = "关闭") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:close')") + public CommonResult closeProductreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = productreceiptRequestMainService.closeProductreceiptRequestMain(id); + return success(count > 0); + } + + @PutMapping("/reAdd") + @Operation(summary = "重新添加") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:reAdd')") + public CommonResult reAddProductreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = productreceiptRequestMainService.reAddProductreceiptRequestMain(id); + return success(count > 0); + } + + @PutMapping("/submit") + @Operation(summary = "提交审批") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:submit')") + public CommonResult submitProductreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = productreceiptRequestMainService.submitProductreceiptRequestMain(id); + return success(count > 0); + } + + @PutMapping("/refused") + @Operation(summary = "驳回") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:refused')") + public CommonResult refusedProductreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = productreceiptRequestMainService.refusedProductreceiptRequestMain(id); + return success(count > 0); + } + + @PutMapping("/agree") + @Operation(summary = "审批通过") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:agree')") + public CommonResult agreeProductreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = productreceiptRequestMainService.agreeProductreceiptRequestMain(id); + return success(count > 0); + } + + @PutMapping("/handle") + @Operation(summary = "处理") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:productreceipt-request-main:handle')") + public CommonResult handleProductreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = productreceiptRequestMainService.handleProductreceiptRequestMain(id); + return success(count > 0); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailBaseVO.java index 12f9c075..16f2e0bb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productreceiptRequest.vo; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -115,4 +116,10 @@ public class ProductreceiptRequestDetailBaseVO { @Schema(description = "到库位代码") private String toLocationCode; + + @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/productreceiptRequest/vo/ProductreceiptRequestDetailExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailExcelVO.java index d7362ae0..586d923b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailExcelVO.java @@ -109,4 +109,7 @@ public class ProductreceiptRequestDetailExcelVO { @ExcelProperty("到货主代码") private String toOwnerCode; + @ExcelProperty("bom版本") + private String bomVersion; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailExportReqVO.java index 926f867c..5c009304 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailExportReqVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productreceiptRequest.vo; +import com.alibaba.excel.annotation.ExcelProperty; import lombok.*; import java.math.BigDecimal; @@ -103,4 +104,7 @@ public class ProductreceiptRequestDetailExportReqVO { @Schema(description = "到货主代码") private String toOwnerCode; + @Schema(description = "bom版本") + private String bomVersion; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailPageReqVO.java index e34e905a..2c0bf0c1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestDetailPageReqVO.java @@ -105,4 +105,7 @@ public class ProductreceiptRequestDetailPageReqVO extends PageParam { @Schema(description = "到货主代码") private String toOwnerCode; + @Schema(description = "主表ID") + private String masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestImportErrorVO.java new file mode 100644 index 00000000..849a31eb --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestImportErrorVO.java @@ -0,0 +1,18 @@ +package com.win.module.wms.controller.productreceiptRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductreceiptRequestImportErrorVO extends ProductreceiptRequestImportVO { + + @ExcelProperty(value = "导入状态", index = 0) + private String importStatus; + + @ExcelProperty(value = "导入说明", index = 1) + private String importRemark; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestImportVO.java new file mode 100644 index 00000000..74263a46 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestImportVO.java @@ -0,0 +1,56 @@ +package com.win.module.wms.controller.productreceiptRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class ProductreceiptRequestImportVO { + + // 主表 + @ExcelProperty("车间代码") + private String workshopCode; + + @ExcelProperty("班组") + private String team; + + @ExcelProperty("班次") + private String shift; + + @ExcelProperty("截止时间") + private String dueTime; + + // 子表 + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty("工序代码") + private String processCode; + + @ExcelProperty("bom版本") + private String bomVersion; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("批次") + private String batch; + + @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/controller/productreceiptRequest/vo/ProductreceiptRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainBaseVO.java index 92239a14..927f9cde 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productreceiptRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -44,6 +45,7 @@ public class ProductreceiptRequestMainBaseVO { private String toAreaCodes; @Schema(description = "单据号") + @OnlyOne private String number; @Schema(description = "业务类型") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainCreateReqVO.java index a16dd068..080acb27 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainCreateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.productreceiptRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailCreateReqVO; 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 ProductreceiptRequestMainCreateReqVO extends ProductreceiptRequestMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainExcelVO.java index 784c64dd..ceee6c00 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productreceiptRequest/vo/ProductreceiptRequestMainExcelVO.java @@ -1,5 +1,7 @@ package com.win.module.wms.controller.productreceiptRequest.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.*; @@ -33,21 +35,49 @@ public class ProductreceiptRequestMainExcelVO { @ExcelProperty("班次") private String shift; - @ExcelProperty("到仓库代码") - private String toWarehouseCode; + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("业务类型") + private String businessType; + + @ExcelProperty("申请时间") + private LocalDateTime requestTime; + + @ExcelProperty("截止时间") + private LocalDateTime dueTime; + + @ExcelProperty(value = "状态", converter = RequestStatusConverter.class) + private String status; @ExcelProperty(value = "到库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.LOCATION_TYPE) private String toLocationTypes; @ExcelProperty("到库区代码范围") private String toAreaCodes; - @ExcelProperty("单据号") - private String number; + @ExcelProperty("到仓库代码") + private String toWarehouseCode; - @ExcelProperty("业务类型") - private String businessType; + @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 departmentCode; @ExcelProperty("备注") private String remark; @@ -58,35 +88,76 @@ public class ProductreceiptRequestMainExcelVO { @ExcelProperty("创建者用户名") private String creator; - @ExcelProperty("申请时间") - private LocalDateTime requestTime; - - @ExcelProperty("截止时间") - private LocalDateTime dueTime; - - @ExcelProperty("部门") - private String departmentCode; - - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("request_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String status; - @ExcelProperty("最后更新时间") private LocalDateTime updateTime; @ExcelProperty("最后更新者用户名") private String updater; - @ExcelProperty("自动提交") - private String autoCommit; + // 子表 + @ExcelProperty("生产线代码") + private String productionLineCode; - @ExcelProperty("自动通过") - private String autoAgree; + @ExcelProperty("工位代码") + private String workStationCode; - @ExcelProperty("自动执行") - private String autoExecute; + @ExcelProperty("目标库位") + private String toLocationCode; - @ExcelProperty("直接生成记录") - private String directCreateRecord; + @ExcelProperty("工序代码") + private String processCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("生产日期") + private String produceDate; + + @ExcelProperty("过期日期") + private String expireDate; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("订单号") + private String woNumber; + + @ExcelProperty("订单行") + private String woLine; + + @ExcelProperty("标包数量") + private String stdPackQty; + + @ExcelProperty(value = "标包单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String stdPackUnit; + + @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/backflushRequest/BackflushRequestDetailbConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/backflushRequest/BackflushRequestDetailbConvert.java new file mode 100644 index 00000000..b5db7519 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/backflushRequest/BackflushRequestDetailbConvert.java @@ -0,0 +1,34 @@ +package com.win.module.wms.convert.backflushRequest; + +import java.util.*; + +import com.win.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.win.module.wms.controller.backflushRequest.vo.*; +import com.win.module.wms.dal.dataobject.backflushRequest.BackflushRequestDetailbDO; + +/** + * 制品收货申请子 Convert + * + * @author 超级管理员 + */ +@Mapper +public interface BackflushRequestDetailbConvert { + + BackflushRequestDetailbConvert INSTANCE = Mappers.getMapper(BackflushRequestDetailbConvert.class); + + BackflushRequestDetailbDO convert(BackflushRequestDetailbCreateReqVO bean); + + BackflushRequestDetailbDO convert(BackflushRequestDetailbUpdateReqVO bean); + + BackflushRequestDetailbRespVO convert(BackflushRequestDetailbDO bean); + + List convertList(List list); + + 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/productreceiptRequest/ProductreceiptRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestDetailConvert.java index d37c8b78..3d2fced5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestDetailConvert.java @@ -34,4 +34,5 @@ public interface ProductreceiptRequestDetailConvert { List convertList02(List list); + List convertList03(List subList); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestMainConvert.java index 45438152..6ac7c5db 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productreceiptRequest/ProductreceiptRequestMainConvert.java @@ -7,7 +7,10 @@ import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainBaseVO; import com.win.module.wms.controller.productreceiptRequest.vo.*; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; +import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; @@ -35,4 +38,15 @@ public interface ProductreceiptRequestMainConvert { 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"), + }) + ProductreceiptRequestMainExcelVO convert(ProductreceiptRequestMainDO mainDO, ProductreceiptRequestDetailDO detailDO); + + ProductreceiptRequestImportErrorVO convert(ProductreceiptRequestMainCreateReqVO createReqVO, ProductreceiptRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/backflushRequest/BackflushRequestDetailbDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/backflushRequest/BackflushRequestDetailbDO.java new file mode 100644 index 00000000..6e369b7e --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/backflushRequest/BackflushRequestDetailbDO.java @@ -0,0 +1,89 @@ +package com.win.module.wms.dal.dataobject.backflushRequest; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.win.framework.mybatis.core.dataobject.BaseDO; + +/** + * 制品收货申请子 DO + * + * @author 超级管理员 + */ +@TableName("request_backflush_detailb") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BackflushRequestDetailbDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 工序代码 + */ + private String processCode; + /** + * BOM版本 + */ + private String bomVersion; + /** + * 物品代码 + */ + private String itemCode; + /** + * 主表ID + */ + private Long masterId; + /** + * 单据号 + */ + private String number; + /** + * 备注 + */ + private String remark; + /** + * 物品名称 + */ + private String itemName; + /** + * 物品描述1 + */ + private String itemDesc1; + /** + * 物品描述2 + */ + private String itemDesc2; + /** + * 项目代码 + */ + private String projectCode; + /** + * 数量 + */ + private BigDecimal qty; + /** + * 计量单位 + * + * 枚举 {@link TODO uom 对应的类} + */ + private String uom; + /** + * 并发乐观锁 + */ + private String concurrencyStamp; + /** + * 地点ID + */ + private String siteId; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptJob/ProductreceiptJobMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptJob/ProductreceiptJobMainDO.java index af01d659..0a095bb6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptJob/ProductreceiptJobMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptJob/ProductreceiptJobMainDO.java @@ -207,5 +207,13 @@ public class ProductreceiptJobMainDO extends BaseDO { * 允许修改箱码 */ private String allowModifyPackingNumber; + /** + * 入库库存状态范围 + */ + private String inInventoryStatuses; + /** + * 出库库存状态范围 + */ + private String outInventoryStatuses; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRequest/ProductreceiptRequestDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRequest/ProductreceiptRequestDetailDO.java index ebb2346a..36a869cf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRequest/ProductreceiptRequestDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/productreceiptRequest/ProductreceiptRequestDetailDO.java @@ -1,6 +1,7 @@ package com.win.module.wms.dal.dataobject.productreceiptRequest; import com.sun.xml.bind.v2.TODO; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -149,4 +150,9 @@ public class ProductreceiptRequestDetailDO extends BaseDO { */ private String toOwnerCode; + /** + * 到货主代码 + */ + private String bomVersion; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/backflushRequest/BackflushRequestDetailbMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/backflushRequest/BackflushRequestDetailbMapper.java new file mode 100644 index 00000000..20f72d21 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/backflushRequest/BackflushRequestDetailbMapper.java @@ -0,0 +1,61 @@ +package com.win.module.wms.dal.mysql.backflushRequest; + +import java.util.*; + +import com.win.framework.common.pojo.PageResult; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.module.wms.dal.dataobject.backflushRequest.BackflushRequestDetailbDO; +import org.apache.ibatis.annotations.Mapper; +import com.win.module.wms.controller.backflushRequest.vo.*; + +/** + * 制品收货申请子 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface BackflushRequestDetailbMapper extends BaseMapperX { + + default PageResult selectPage(BackflushRequestDetailbPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(BackflushRequestDetailbDO::getMasterId, reqVO.getMasterId()) + .eqIfPresent(BackflushRequestDetailbDO::getProcessCode, reqVO.getProcessCode()) + .eqIfPresent(BackflushRequestDetailbDO::getBomVersion, reqVO.getBomVersion()) + .eqIfPresent(BackflushRequestDetailbDO::getItemCode, reqVO.getItemCode()) + .eqIfPresent(BackflushRequestDetailbDO::getNumber, reqVO.getNumber()) + .eqIfPresent(BackflushRequestDetailbDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(BackflushRequestDetailbDO::getCreateTime, reqVO.getCreateTime()) + .likeIfPresent(BackflushRequestDetailbDO::getItemName, reqVO.getItemName()) + .eqIfPresent(BackflushRequestDetailbDO::getItemDesc1, reqVO.getItemDesc1()) + .eqIfPresent(BackflushRequestDetailbDO::getItemDesc2, reqVO.getItemDesc2()) + .eqIfPresent(BackflushRequestDetailbDO::getProjectCode, reqVO.getProjectCode()) + .eqIfPresent(BackflushRequestDetailbDO::getQty, reqVO.getQty()) + .eqIfPresent(BackflushRequestDetailbDO::getUom, reqVO.getUom()) + .betweenIfPresent(BackflushRequestDetailbDO::getUpdateTime, reqVO.getUpdateTime()) + .eqIfPresent(BackflushRequestDetailbDO::getUpdater, reqVO.getUpdater()) + .eqIfPresent(BackflushRequestDetailbDO::getCreator, reqVO.getCreator()) + .orderByDesc(BackflushRequestDetailbDO::getId)); + } + + default List selectList(BackflushRequestDetailbExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(BackflushRequestDetailbDO::getProcessCode, reqVO.getProcessCode()) + .eqIfPresent(BackflushRequestDetailbDO::getBomVersion, reqVO.getBomVersion()) + .eqIfPresent(BackflushRequestDetailbDO::getItemCode, reqVO.getItemCode()) + .eqIfPresent(BackflushRequestDetailbDO::getNumber, reqVO.getNumber()) + .eqIfPresent(BackflushRequestDetailbDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(BackflushRequestDetailbDO::getCreateTime, reqVO.getCreateTime()) + .likeIfPresent(BackflushRequestDetailbDO::getItemName, reqVO.getItemName()) + .eqIfPresent(BackflushRequestDetailbDO::getItemDesc1, reqVO.getItemDesc1()) + .eqIfPresent(BackflushRequestDetailbDO::getItemDesc2, reqVO.getItemDesc2()) + .eqIfPresent(BackflushRequestDetailbDO::getProjectCode, reqVO.getProjectCode()) + .eqIfPresent(BackflushRequestDetailbDO::getQty, reqVO.getQty()) + .eqIfPresent(BackflushRequestDetailbDO::getUom, reqVO.getUom()) + .betweenIfPresent(BackflushRequestDetailbDO::getUpdateTime, reqVO.getUpdateTime()) + .eqIfPresent(BackflushRequestDetailbDO::getUpdater, reqVO.getUpdater()) + .eqIfPresent(BackflushRequestDetailbDO::getCreator, reqVO.getCreator()) + .orderByDesc(BackflushRequestDetailbDO::getId)); + } + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobMainMapper.java index 8a2b5a9c..e5f9f7d7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptJob/ProductreceiptJobMainMapper.java @@ -7,8 +7,10 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainExportReqVO; import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainPageReqVO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO; import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; +import com.win.module.wms.enums.order.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; import java.util.Collection; @@ -125,4 +127,9 @@ public interface ProductreceiptJobMainMapper extends BaseMapperX() + .eq(ProductreceiptJobMainDO::getRequestNumber, requestNumber) + .ne(ProductreceiptJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRequest/ProductreceiptRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRequest/ProductreceiptRequestDetailMapper.java index 57254e9f..4479a813 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRequest/ProductreceiptRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRequest/ProductreceiptRequestDetailMapper.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.productreceiptRequest.vo.ProductreceiptRequestDetailExportReqVO; import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestDetailPageReqVO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -22,6 +23,7 @@ public interface ProductreceiptRequestDetailMapper extends BaseMapperX selectPage(ProductreceiptRequestDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductreceiptRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductreceiptRequestDetailDO::getProductionLineCode, reqVO.getProductionLineCode()) .eqIfPresent(ProductreceiptRequestDetailDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductreceiptRequestDetailDO::getProcessCode, reqVO.getProcessCode()) @@ -90,4 +92,8 @@ public interface ProductreceiptRequestDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(ProductreceiptRequestDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRequest/ProductreceiptRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRequest/ProductreceiptRequestMainMapper.java index c376cbd6..ed7c19f7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRequest/ProductreceiptRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productreceiptRequest/ProductreceiptRequestMainMapper.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.productreceiptRequest.vo.ProductreceiptRequestMainExportReqVO; import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainPageReqVO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; import org.apache.ibatis.annotations.Mapper; @@ -78,4 +79,8 @@ public interface ProductreceiptRequestMainMapper 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/backflushRequest/BackflushRequestDetailbService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/backflushRequest/BackflushRequestDetailbService.java new file mode 100644 index 00000000..31e7ea03 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/backflushRequest/BackflushRequestDetailbService.java @@ -0,0 +1,77 @@ +package com.win.module.wms.service.backflushRequest; + +import java.util.*; +import javax.validation.*; +import com.win.module.wms.controller.backflushRequest.vo.*; +import com.win.module.wms.dal.dataobject.backflushRequest.BackflushRequestDetailbDO; +import com.win.framework.common.pojo.PageResult; + +/** + * 制品收货申请子 Service 接口 + * + * @author 超级管理员 + */ +public interface BackflushRequestDetailbService { + + /** + * 创建制品收货申请子 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createBackflushRequestDetailb(@Valid BackflushRequestDetailbCreateReqVO createReqVO); + + /** + * 更新制品收货申请子 + * + * @param updateReqVO 更新信息 + */ + Integer updateBackflushRequestDetailb(@Valid BackflushRequestDetailbUpdateReqVO updateReqVO); + + /** + * 删除制品收货申请子 + * + * @param id 编号 + */ + Integer deleteBackflushRequestDetailb(Long id); + + /** + * 删除制品收货申请子 根据 masterId + * + * @param id 编号 + */ + Integer deleteBackflushRequestDetailbByMasterId(Long id); + + /** + * 获得制品收货申请子 + * + * @param id 编号 + * @return 制品收货申请子 + */ + BackflushRequestDetailbDO getBackflushRequestDetailb(Long id); + + /** + * 获得制品收货申请子列表 + * + * @param ids 编号 + * @return 制品收货申请子列表 + */ + List getBackflushRequestDetailbList(Collection ids); + + /** + * 获得制品收货申请子分页 + * + * @param pageReqVO 分页查询 + * @return 制品收货申请子分页 + */ + PageResult getBackflushRequestDetailbPage(BackflushRequestDetailbPageReqVO pageReqVO); + + /** + * 获得制品收货申请子列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 制品收货申请子列表 + */ + List getBackflushRequestDetailbList(BackflushRequestDetailbExportReqVO exportReqVO); + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/backflushRequest/BackflushRequestDetailbServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/backflushRequest/BackflushRequestDetailbServiceImpl.java new file mode 100644 index 00000000..43f95083 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/backflushRequest/BackflushRequestDetailbServiceImpl.java @@ -0,0 +1,91 @@ +package com.win.module.wms.service.backflushRequest; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.mapstruct.ap.internal.model.assignment.UpdateWrapper; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.win.module.wms.controller.backflushRequest.vo.*; +import com.win.module.wms.dal.dataobject.backflushRequest.BackflushRequestDetailbDO; +import com.win.framework.common.pojo.PageResult; + +import com.win.module.wms.convert.backflushRequest.BackflushRequestDetailbConvert; +import com.win.module.wms.dal.mysql.backflushRequest.BackflushRequestDetailbMapper; + +import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.module.wms.enums.ErrorCodeConstants.*; + +/** + * 制品收货申请子 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class BackflushRequestDetailbServiceImpl implements BackflushRequestDetailbService { + + @Resource + private BackflushRequestDetailbMapper backflushRequestDetailbMapper; + + @Override + public Long createBackflushRequestDetailb(BackflushRequestDetailbCreateReqVO createReqVO) { + // 插入 + BackflushRequestDetailbDO backflushRequestDetailb = BackflushRequestDetailbConvert.INSTANCE.convert(createReqVO); + backflushRequestDetailbMapper.insert(backflushRequestDetailb); + // 返回 + return backflushRequestDetailb.getId(); + } + + @Override + public Integer updateBackflushRequestDetailb(BackflushRequestDetailbUpdateReqVO updateReqVO) { + // 校验存在 + validateBackflushRequestDetailbExists(updateReqVO.getId()); + // 更新 + BackflushRequestDetailbDO updateObj = BackflushRequestDetailbConvert.INSTANCE.convert(updateReqVO); + return backflushRequestDetailbMapper.updateById(updateObj); + } + + @Override + public Integer deleteBackflushRequestDetailb(Long id) { + // 校验存在 + validateBackflushRequestDetailbExists(id); + // 删除 + return backflushRequestDetailbMapper.deleteById(id); + } + + @Override + public Integer deleteBackflushRequestDetailbByMasterId(Long masterId) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("master_id",masterId.toString()); + return backflushRequestDetailbMapper.delete(queryWrapper); + } + + private void validateBackflushRequestDetailbExists(Long id) { + if (backflushRequestDetailbMapper.selectById(id) == null) { + throw exception(BACKFLUSH_REQUEST_DETAILB_NOT_EXISTS); + } + } + + @Override + public BackflushRequestDetailbDO getBackflushRequestDetailb(Long id) { + return backflushRequestDetailbMapper.selectById(id); + } + + @Override + public List getBackflushRequestDetailbList(Collection ids) { + return backflushRequestDetailbMapper.selectBatchIds(ids); + } + + @Override + public PageResult getBackflushRequestDetailbPage(BackflushRequestDetailbPageReqVO pageReqVO) { + return backflushRequestDetailbMapper.selectPage(pageReqVO); + } + + @Override + public List getBackflushRequestDetailbList(BackflushRequestDetailbExportReqVO exportReqVO) { + return backflushRequestDetailbMapper.selectList(exportReqVO); + } +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomService.java index 12d52d31..21269595 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomService.java @@ -88,4 +88,6 @@ public interface BomService { * @return */ public List bomItemCodeAndVersionExist(String productItemCode, String version); + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java index bf063012..579f96ea 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java @@ -14,6 +14,7 @@ import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.dict.DictDataApi; 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.expectin.vo.ExpectinCreateReqVO; import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO; @@ -27,6 +28,7 @@ import com.win.module.wms.convert.purchasereceiptRecord.PurchasereceiptRecordDet import com.win.module.wms.convert.purchasereceiptRecord.PurchasereceiptRecordMainConvert; 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.countRequest.CountRequestDetailDO; import com.win.module.wms.dal.dataobject.expectout.ExpectoutDO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; @@ -77,11 +79,10 @@ import javax.validation.Validator; import javax.xml.crypto.Data; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static com.win.module.wms.enums.ErrorCodeConstants.*; /** @@ -93,6 +94,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Validated public class IssueRequestMainServiceImpl implements IssueRequestMainService { + @Resource + private AdminUserApi userApi; @Resource private ItempackagingService itempackagingService; @Resource @@ -143,8 +146,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { @Override @Transactional public Long createIssueRequestMain(IssueRequestMainCreateReqVO createReqVO) { - RequestsettingDO requestsettingDO = new RequestsettingDO(); - IssueRequestMainDO issueRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); + IssueRequestMainDO issueRequestMainDO = validatorToCreate(createReqVO); //调用自动执行方法 if(RequestStatusEnum.HANDLING.getCode().equals(issueRequestMainDO.getStatus())) { this.generateJob(issueRequestMainDO, issueRequestDetailMapper.selectList(issueRequestMainDO.getId())); @@ -396,10 +398,14 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { return message.toString(); } - //新增方法(主和子) - private IssueRequestMainDO validatorToCreate(IssueRequestMainCreateReqVO createReqVO,RequestsettingDO requestsettingDO) { + /** + * 创建 主子 数据 + * @param createReqVO + * @return + */ + private IssueRequestMainDO validatorToCreate(IssueRequestMainCreateReqVO createReqVO ) { BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); - IssueRequestMainDO issueRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); + IssueRequestMainDO issueRequestMainDO = validateMainMethod(createReqVO); //子表校验 List subList = createReqVO.getSubList(); List subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList); @@ -408,6 +414,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { } String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); issueRequestMainDO.setNumber(number); + issueRequestMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); issueRequestMainMapper.insert(issueRequestMainDO); for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { issueRequestDetailDO.setMasterId(issueRequestMainDO.getId()); @@ -420,31 +427,24 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { //修改方法(主) private IssueRequestMainDO validatorToUpdate(IssueRequestMainUpdateReqVO updateReqVO,RequestsettingDO requestsettingDO) { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); - IssueRequestMainDO issueRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); - //子表校验 -// List subList = updateReqVO.getSubList(); -// List subDOList = IssueRequestDetailConvert.INSTANCE.convertList05(subList); -// for (IssueRequestDetailDO issueRequestDetailDO : subDOList) { -// validateDetailMethod(issueRequestDetailDO,businesstypeDO,issueRequestMainDO); -// } + IssueRequestMainDO issueRequestMainDO = validateMainMethod(updateReqVO); + issueRequestMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); issueRequestMainMapper.updateById(issueRequestMainDO); -// issueRequestDetailMapper.updateBatch(subDOList); return issueRequestMainDO; } //校验主表公共方法(适用于新增/修改) - private IssueRequestMainDO validateMainMethod(IssueRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO){ + private IssueRequestMainDO validateMainMethod(IssueRequestMainBaseVO baseVO){ IssueRequestMainDO issueRequestMainDO = IssueRequestMainConvert.INSTANCE.convert(baseVO); this.validatorWorkshop(issueRequestMainDO.getWorkshopCode()); issueRequestMainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); issueRequestMainDO.setRequestTime(LocalDateTime.now()); - requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); issueRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); issueRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); issueRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); issueRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); issueRequestMainDO.setBusinessType(businesstypeDO.getCode()); issueRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); issueRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); @@ -617,9 +617,9 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { /** * 创建任务 OR 创建记录 * @param mainDO - * @param detailDO + * @param detailDOList */ - private void generateJob (IssueRequestMainDO mainDO, List detailDO) { + private void generateJob (IssueRequestMainDO mainDO, List detailDOList) { //跳过任务直接生成记录 if("TRUE".equals(mainDO.getDirectCreateRecord())) { // TODO: 发料申请 跳过任务直接生成记录 未做!! @@ -640,112 +640,125 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { // } // return; } - // 任务主表信息 - IssueJobMainDO issueJobMainDO = new IssueJobMainDO(); - issueJobMainDO.setRequestNumber(mainDO.getNumber()); - issueJobMainDO.setWorkShopCode(mainDO.getWorkshopCode()); - issueJobMainDO.setUseOnTheWayLocation(mainDO.getUseOnTheWayLocation()); - issueJobMainDO.setFromWarehouseCode(mainDO.getFromWarehouseCode()); - issueJobMainDO.setToWarehouseCode(mainDO.getToWarehouseCode()); - issueJobMainDO.setInInventoryStatuses(mainDO.getInInventoryStatuses()); - issueJobMainDO.setOutInventoryStatuses(mainDO.getOutInventoryStatuses()); - issueJobMainDO.setRequestTime(mainDO.getRequestTime()); - issueJobMainDO.setRequestDueTime(mainDO.getDueTime()); - issueJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); - issueJobMainDO.setDepartmentCode(mainDO.getDepartmentCode()); - issueJobMainDO.setFromLocationTypes(mainDO.getFromLocationTypes()); - issueJobMainDO.setToLocationTypes(mainDO.getToLocationTypes()); - String number = serialNumberApi.generateCode(RuleCodeEnum.ISSUE_JOB.getCode()); - issueJobMainDO.setNumber(number); - issueJobMainDO.setCreateTime(LocalDateTime.now()); - issueJobMainDO.setFromAreaCodes(mainDO.getFromAreaCodes()); - issueJobMainDO.setToAreaCodes(mainDO.getToAreaCodes()); - issueJobMainDO.setId(null); - issueJobMainDO.setCreateTime(null); - issueJobMainDO.setCreator(null); - issueJobMainDO.setUpdateTime(null); - issueJobMainDO.setUpdater(null); - // 获取任务单据设置 - JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("IssueJob"); - issueJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); - issueJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); - issueJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); - issueJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); - issueJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); - issueJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); - issueJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); - issueJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); - issueJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); - issueJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); - //增加业务类型 - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueJob"); - issueJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); - issueJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); - issueJobMainDO.setBusinessType(businesstypeDO.getCode()); - issueJobMainMapper.insert(issueJobMainDO); - - List issueJobDetailDOList = new ArrayList<>(); - List expectinCreateReqVOList = new ArrayList<>(); - List expectoutCreateReqVOList = new ArrayList<>(); - // 根据发料申请子表数据进行分析 - detailDO.forEach(item -> { - // 根据批次策略/下架策略 返回 库存余额DO - List balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty(),mainDO.getFromLocationTypes()); - // 根据 查询出所需数据 解析成 任务子表数据 - balanceDOListJob.forEach(balanceDOItem -> { - IssueJobDetailDO issueJobDetailDO = new IssueJobDetailDO(); - issueJobDetailDO.setId(null); - issueJobDetailDO.setCreateTime(null); - issueJobDetailDO.setCreator(null); - issueJobDetailDO.setUpdateTime(null); - issueJobDetailDO.setUpdater(null); - issueJobDetailDO.setProductionLineCode(item.getProductionLineCode()); - issueJobDetailDO.setWorkStationCode(item.getWorkStationCode()); - issueJobDetailDO.setOnTheWayLocationCode(issueJobDetailDO.getOnTheWayLocationCode()); + // 根据 子表 toLocationCode 拆分任务 + Map> listMap = new HashMap<>(); + for(IssueRequestDetailDO detailDO : detailDOList) { + List list = listMap.get(detailDO.getToLocationCode()); + if(list == null) { + list = new ArrayList<>(); + } + //向list增加数据 + list.add(detailDO); + listMap.put(detailDO.getToLocationCode(), list); + } + for(String mapKey : listMap.keySet()) { + // 任务主表信息 + IssueJobMainDO issueJobMainDO = new IssueJobMainDO(); + issueJobMainDO.setRequestNumber(mainDO.getNumber()); + issueJobMainDO.setWorkShopCode(mainDO.getWorkshopCode()); + issueJobMainDO.setUseOnTheWayLocation(mainDO.getUseOnTheWayLocation()); + issueJobMainDO.setFromWarehouseCode(mainDO.getFromWarehouseCode()); + issueJobMainDO.setToWarehouseCode(mainDO.getToWarehouseCode()); + issueJobMainDO.setInInventoryStatuses(mainDO.getInInventoryStatuses()); + issueJobMainDO.setOutInventoryStatuses(mainDO.getOutInventoryStatuses()); + issueJobMainDO.setRequestTime(mainDO.getRequestTime()); + issueJobMainDO.setRequestDueTime(mainDO.getDueTime()); + issueJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); + issueJobMainDO.setDepartmentCode(mainDO.getDepartmentCode()); + issueJobMainDO.setFromLocationTypes(mainDO.getFromLocationTypes()); + issueJobMainDO.setToLocationTypes(mainDO.getToLocationTypes()); + String number = serialNumberApi.generateCode(RuleCodeEnum.ISSUE_JOB.getCode()); + issueJobMainDO.setNumber(number); + issueJobMainDO.setCreateTime(LocalDateTime.now()); + issueJobMainDO.setFromAreaCodes(mainDO.getFromAreaCodes()); + issueJobMainDO.setToAreaCodes(mainDO.getToAreaCodes()); + issueJobMainDO.setId(null); + issueJobMainDO.setCreateTime(null); + issueJobMainDO.setCreator(null); + issueJobMainDO.setUpdateTime(null); + issueJobMainDO.setUpdater(null); + // 获取任务单据设置 + JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("IssueJob"); + issueJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); + issueJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); + issueJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); + issueJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); + issueJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); + issueJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); + issueJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); + issueJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); + issueJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); + issueJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueJob"); + issueJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); + issueJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); + issueJobMainDO.setBusinessType(businesstypeDO.getCode()); + issueJobMainMapper.insert(issueJobMainDO); + + List issueJobDetailDOList = new ArrayList<>(); + List expectinCreateReqVOList = new ArrayList<>(); + List expectoutCreateReqVOList = new ArrayList<>(); + // 根据发料申请子表数据进行分析 + listMap.get(mapKey).forEach(item -> { + // 根据批次策略/下架策略 返回 库存余额DO + List balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),item.getInventoryStatus(),item.getProjectCode(),item.getQty(),mainDO.getFromLocationTypes()); + // 根据 查询出所需数据 解析成 任务子表数据 + balanceDOListJob.forEach(balanceDOItem -> { + IssueJobDetailDO issueJobDetailDO = new IssueJobDetailDO(); + issueJobDetailDO.setId(null); + issueJobDetailDO.setCreateTime(null); + issueJobDetailDO.setCreator(null); + issueJobDetailDO.setUpdateTime(null); + issueJobDetailDO.setUpdater(null); + issueJobDetailDO.setProductionLineCode(item.getProductionLineCode()); + issueJobDetailDO.setWorkStationCode(item.getWorkStationCode()); + issueJobDetailDO.setOnTheWayLocationCode(issueJobDetailDO.getOnTheWayLocationCode()); // issueJobDetailDO.setPackingNumber(balanceDOItem.getPackingNumber()); // issueJobDetailDO.setContainerNumber(balanceDOItem.getContainerNumber()); - issueJobDetailDO.setBatch(balanceDOItem.getBatch()); - issueJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode()); - issueJobDetailDO.setToLocationCode(item.getToLocationCode()); - issueJobDetailDO.setItemCode(item.getItemCode()); - issueJobDetailDO.setItemName(item.getItemName()); - issueJobDetailDO.setItemDesc1(item.getItemDesc1()); - issueJobDetailDO.setItemDesc2(item.getItemDesc2()); - issueJobDetailDO.setProjectCode(item.getProjectCode()); - issueJobDetailDO.setQty(item.getQty()); - issueJobDetailDO.setUom(item.getUom()); - issueJobDetailDO.setStdPackQty(itempackagingService.selectItemPackagingExist(item.getItemCode()).getStdPackQty()); - issueJobDetailDO.setStdPackUnit(itempackagingService.selectItemPackagingExist(item.getItemCode()).getStdPackUnit()); - issueJobDetailDO.setToOwnerCode(item.getToOwnerCode()); - issueJobDetailDO.setFromOwnerCode(item.getFromOwnerCode()); - issueJobDetailDO.setNumber(issueJobMainDO.getNumber()); - issueJobDetailDO.setMasterId(issueJobMainDO.getId()); - issueJobDetailDO.setInventoryStatus(item.getInventoryStatus()); - issueJobDetailDOList.add(issueJobDetailDO); - //预计入 - ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); - BeanUtils.copyProperties(issueJobDetailDO, expectinCreateReqVO); - expectinCreateReqVO.setJobNumber(number); - expectinCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType()); - expectinCreateReqVO.setLocationCode(item.getToLocationCode()); - expectinCreateReqVO.setOwnerCode(item.getToOwnerCode()); - expectinCreateReqVOList.add(expectinCreateReqVO); - //预计出 - ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO(); - BeanUtils.copyProperties(issueJobDetailDO, expectoutCreateReqVO); - expectoutCreateReqVO.setJobNumber(number); - expectoutCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType()); - expectoutCreateReqVO.setLocationCode(balanceDOItem.getLocationCode()); - expectoutCreateReqVO.setOwnerCode(item.getFromOwnerCode()); - expectoutCreateReqVOList.add(expectoutCreateReqVO); + issueJobDetailDO.setBatch(balanceDOItem.getBatch()); + issueJobDetailDO.setFromLocationCode(balanceDOItem.getLocationCode()); + issueJobDetailDO.setToLocationCode(item.getToLocationCode()); + issueJobDetailDO.setItemCode(item.getItemCode()); + issueJobDetailDO.setItemName(item.getItemName()); + issueJobDetailDO.setItemDesc1(item.getItemDesc1()); + issueJobDetailDO.setItemDesc2(item.getItemDesc2()); + issueJobDetailDO.setProjectCode(item.getProjectCode()); + issueJobDetailDO.setQty(item.getQty()); + issueJobDetailDO.setUom(item.getUom()); + issueJobDetailDO.setStdPackQty(itempackagingService.selectItemPackagingExist(item.getItemCode()).getStdPackQty()); + issueJobDetailDO.setStdPackUnit(itempackagingService.selectItemPackagingExist(item.getItemCode()).getStdPackUnit()); + issueJobDetailDO.setToOwnerCode(item.getToOwnerCode()); + issueJobDetailDO.setFromOwnerCode(item.getFromOwnerCode()); + issueJobDetailDO.setNumber(issueJobMainDO.getNumber()); + issueJobDetailDO.setMasterId(issueJobMainDO.getId()); + issueJobDetailDO.setInventoryStatus(item.getInventoryStatus()); + issueJobDetailDOList.add(issueJobDetailDO); + //预计入 + ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); + BeanUtils.copyProperties(issueJobDetailDO, expectinCreateReqVO); + expectinCreateReqVO.setJobNumber(number); + expectinCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType()); + expectinCreateReqVO.setLocationCode(item.getToLocationCode()); + expectinCreateReqVO.setOwnerCode(item.getToOwnerCode()); + expectinCreateReqVOList.add(expectinCreateReqVO); + //预计出 + ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO(); + BeanUtils.copyProperties(issueJobDetailDO, expectoutCreateReqVO); + expectoutCreateReqVO.setJobNumber(number); + expectoutCreateReqVO.setBusinessType(issueJobMainDO.getBusinessType()); + expectoutCreateReqVO.setLocationCode(balanceDOItem.getLocationCode()); + expectoutCreateReqVO.setOwnerCode(item.getFromOwnerCode()); + expectoutCreateReqVOList.add(expectoutCreateReqVO); + }); }); - }); - issueJobDetailMapper.insertBatch(issueJobDetailDOList); - //增加预计入 - expectinService.createExpectin(expectinCreateReqVOList); - //增加预计出 - expectoutService.createExpectout(expectoutCreateReqVOList); - trendsApi.createTrends(issueJobMainDO.getId(), "issueJob", "发料申请生成发料任务", TrendsTypeEnum.CREATE); + issueJobDetailMapper.insertBatch(issueJobDetailDOList); + //增加预计入 + expectinService.createExpectin(expectinCreateReqVOList); + //增加预计出 + expectoutService.createExpectout(expectoutCreateReqVOList); + trendsApi.createTrends(issueJobMainDO.getId(), "issueJob", "发料申请生成发料任务", TrendsTypeEnum.CREATE); + } } /** diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageServiceImpl.java index a4565865..07f7871d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/packageMassage/PackageServiceImpl.java @@ -164,7 +164,7 @@ public class PackageServiceImpl implements PackageService { } packageMapper.insert(packageDo); // 更新 生产退料申请 子表数据 包装号字段 - updateProductionreturnPackingNumber(packageDo.getId(),packageDo.getNumber()); +// updateProductionreturnPackingNumber(packageDo.getId(),packageDo.getNumber()); // 创建 标签数据 generateLabel(packageDo); // 返回 @@ -175,12 +175,12 @@ public class PackageServiceImpl implements PackageService { * 更新 生产退料申请 子表数据 包装号字段 * @param packingNumber */ - private void updateProductionreturnPackingNumber(Long id, String packingNumber) { - ProductionreturnRequestDetailDO updateObj = new ProductionreturnRequestDetailDO(); - updateObj.setId(id); - updateObj.setPackingNumber(packingNumber); - productionreturnRequestDetailMapper.updateById(updateObj); - } +// private void updateProductionreturnPackingNumber(Long id, String packingNumber) { +// ProductionreturnRequestDetailDO updateObj = new ProductionreturnRequestDetailDO(); +// updateObj.setId(id); +// updateObj.setPackingNumber(packingNumber); +// productionreturnRequestDetailMapper.updateById(updateObj); +// } /** * 根据 包装 创建 标签 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueMainServiceImpl.java index f33d5dff..186796b9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueMainServiceImpl.java @@ -37,6 +37,7 @@ import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.team.TeamService; 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.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -87,6 +88,8 @@ public class PreparetoissueMainServiceImpl implements PreparetoissueMainService private TrendsApi trendsApi; @Resource private SerialNumberApi serialNumberApi; + @Resource + private JobUtils jobUtils; @Override @Transactional @@ -359,8 +362,7 @@ public class PreparetoissueMainServiceImpl implements PreparetoissueMainService public List BomDisassemble(ProductionMainDO mainDO, List detailDOList ) { List subList = new ArrayList<>(); detailDOList.forEach(item -> { - List> list = new ArrayList<>(); - this.BomRecursion(item.getItemCode(), item.getBomVersion(), list); + List> list = jobUtils.bomDismantleList(item.getItemCode(), item.getBomVersion()); list.forEach(itemBom -> { PreparetoissueDetailCreateReqVO preparetoissueDetailCreateReqVO = new PreparetoissueDetailCreateReqVO(); preparetoissueDetailCreateReqVO.setAvailable(item.getAvailable()); @@ -374,31 +376,4 @@ public class PreparetoissueMainServiceImpl implements PreparetoissueMainService }); return subList; } - - /** - * bom解析递归 - * @param itemCode - * @param list - */ - private void BomRecursion (String itemCode,String bomVersion ,List> list) { - BomExportReqVO bomExportReqVO = new BomExportReqVO(); - bomExportReqVO.setProductItemCode(itemCode); - bomExportReqVO.setVersion(bomVersion); - bomExportReqVO.setAvailable("TRUE"); - List bomDOList = bomService.getBomList(bomExportReqVO); - bomDOList.forEach(item -> { - // 判断物品是否是虚零件 - if (itembasicService.selectItembasic(item.getComponentItemCode()).getIsPhantom().equals("TRUE")) { - this.BomRecursion(item.getComponentItemCode(), item.getVersion(), list); - } else { - Map map = new HashMap<>(); - map.put("itemCode",item.getComponentItemCode()); - map.put("uom",item.getComponentUom()); - map.put("qty",item.getComponentQty()); - list.add(map); - } - }); - } - - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainServiceImpl.java index 929cc9fc..6968aeb9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnJob/ProductionreturnJobMainServiceImpl.java @@ -254,12 +254,15 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa productionreturnRecordMainDO.setInterfaceType(recordsettingDO.getInterfaceType()); //增加业务类型 BusinesstypeDO businesstypeDO ; + String inventoryStatus ; // 判断是合格还是隔离 // 合格 - if (productionreturnJobMainDO.getBusinessType().equals("ReturnToStoreRequest")) { + if (productionreturnJobMainDO.getBusinessType().equals("ReturnToStore")) { businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRecord"); + inventoryStatus = "OK"; } else { // 隔离 businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHoldRecord"); + inventoryStatus = "HOLD"; } productionreturnRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType()); productionreturnRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); @@ -292,7 +295,7 @@ public class ProductionreturnJobMainServiceImpl implements ProductionreturnJobMa productionreturnRecordDetailDO.setToBatch(DetailUpdateItem.getToBatch()); productionreturnRecordDetailDO.setFromLocationCode(subListItem.getFromLocationCode()); productionreturnRecordDetailDO.setToLocationCode(DetailUpdateItem.getToLocationCode()); - productionreturnRecordDetailDO.setInventoryStatus(DetailUpdateItem.getToInventoryStatus()); + productionreturnRecordDetailDO.setInventoryStatus(inventoryStatus); productionreturnRecordDetailDO.setFromContainerNumber(subListItem.getContainerNumber()); productionreturnRecordDetailDO.setToContainerNumber(DetailUpdateItem.getToContainerNumber()); productionreturnRecordDetailDO.setQty(DetailUpdateItem.getHandleQty()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java index 354febfb..8a334bc1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java @@ -80,4 +80,6 @@ public interface ProductionreturnRequestDetailService { PageResult getProductionreturnRequestDetailSenior(CustomConditions conditions); List selectList(Long id); + + void updateProductreceiptRequestDetailPackingNumber(Long id, String number); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java index fc015917..de49b69c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java @@ -20,6 +20,7 @@ import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper; @@ -172,6 +173,14 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur return productionreturnRequestDetailMapper.selectList(masterId); } + @Override + public void updateProductreceiptRequestDetailPackingNumber(Long id, String number) { + ProductionreturnRequestDetailDO updateObj = new ProductionreturnRequestDetailDO(); + updateObj.setId(id); + updateObj.setPackingNumber(number); + productionreturnRequestDetailMapper.updateById(updateObj); + } + //校验子表公共方法(适用于新增/修改) private void validatorDetailMethod(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo) { ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java index 3becd7b4..829d9bb3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java @@ -156,7 +156,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR } trendsApi.createTrends(productionreturnRequestMainDO.getId(), "ProductionreturnRequest", "增加了生产退料申请", TrendsTypeEnum.CREATE); // 返回 - return createReqVO.getId(); + return productionreturnRequestMainDO.getId(); } @Override @@ -690,7 +690,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR productionreturnRecordDetailDO.setToAreaCode(locationDOTo.getAreaCode()); // 判断合格 不合格 if (!mainDO.getBusinessType().equals("ReturnToStore")) { - productionreturnRecordDetailDO.setInventoryStatus("NOK"); + productionreturnRecordDetailDO.setInventoryStatus("HOLD"); } productionreturnRecordDetailDO.setMasterId(productionreturnRecordMainDO.getId()); productionreturnRecordDetailDO.setNumber(number); @@ -801,7 +801,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR productionreturnJobDetailDO.setToLocationCode(locationDO.getCode()); // 判断合格 不合格 if (!mainDO.getBusinessType().equals("ReturnToStore")) { - productionreturnJobDetailDO.setInventoryStatus("NOK"); + productionreturnJobDetailDO.setInventoryStatus("OK"); } productionreturnJobDetailDOList.add(productionreturnJobDetailDO); //预计入 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestDetailService.java index 6db50a94..4b21c8cc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestDetailService.java @@ -80,4 +80,8 @@ public interface ProductreceiptRequestDetailService { * @return 分页列表 */ PageResult getProductreceiptRequestDetailSenior(CustomConditions conditions); + + List selectList(Long id); + + void updateProductreceiptRequestDetailPackingNumber(Long id, String number); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestDetailServiceImpl.java index 7f63fa00..c50ff6eb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestDetailServiceImpl.java @@ -1,5 +1,6 @@ package com.win.module.wms.service.productreceiptRequest; +import cn.hutool.core.exceptions.UtilException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestDetailCreateReqVO; @@ -7,8 +8,20 @@ import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequ import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestDetailPageReqVO; import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestDetailUpdateReqVO; import com.win.module.wms.convert.productreceiptRequest.ProductreceiptRequestDetailConvert; +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.itempackaging.ItempackagingDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.productreceiptRequest.ProductreceiptRequestDetailMapper; +import com.win.module.wms.service.bom.BomService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.productionline.ProductionlineService; +import com.win.module.wms.service.productionlineitem.ProductionlineitemService; +import com.win.module.wms.service.workstation.WorkstationService; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -28,6 +41,20 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_REQUEST @Validated public class ProductreceiptRequestDetailServiceImpl implements ProductreceiptRequestDetailService { + @Resource + private BomService bomService; + @Resource + private WorkstationService workstationService; + @Resource + private ItempackagingService itempackagingService; + @Resource + private ItembasicService itembasicService; + @Resource + private ProductionlineitemService productionlineitemService; + @Resource + private ProductionlineService productionlineService; + @Resource + private ProductreceiptRequestMainService productreceiptRequestMainService; @Resource private ProductreceiptRequestDetailMapper productreceiptRequestDetailMapper; @@ -35,7 +62,12 @@ public class ProductreceiptRequestDetailServiceImpl implements ProductreceiptReq public Long createProductreceiptRequestDetail(ProductreceiptRequestDetailCreateReqVO createReqVO) { // 插入 ProductreceiptRequestDetailDO productreceiptRequestDetail = ProductreceiptRequestDetailConvert.INSTANCE.convert(createReqVO); + // 主表信息 + ProductreceiptRequestMainDO productreceiptRequestMainDO = productreceiptRequestMainService.getProductreceiptRequestMain(productreceiptRequestDetail.getMasterId()); + validateDetailMethod(productreceiptRequestMainDO, productreceiptRequestDetail); productreceiptRequestDetailMapper.insert(productreceiptRequestDetail); + // 创建 bom版本相关信息 + productreceiptRequestMainService.generateBackflushRequest(productreceiptRequestDetail); // 返回 return productreceiptRequestDetail.getId(); } @@ -46,7 +78,47 @@ public class ProductreceiptRequestDetailServiceImpl implements ProductreceiptReq validateProductreceiptRequestDetailExists(updateReqVO.getId()); // 更新 ProductreceiptRequestDetailDO updateObj = ProductreceiptRequestDetailConvert.INSTANCE.convert(updateReqVO); + // 主表信息 + ProductreceiptRequestMainDO productreceiptRequestMainDO = productreceiptRequestMainService.getProductreceiptRequestMain(updateObj.getMasterId()); + validateDetailMethod(productreceiptRequestMainDO, updateObj); productreceiptRequestDetailMapper.updateById(updateObj); + // 创建 bom版本相关信息 + productreceiptRequestMainService.generateBackflushRequest(updateObj); + } + + /** + * 校验 子表 数据 + * @param detailDo + */ + private void validateDetailMethod(ProductreceiptRequestMainDO mainDO, ProductreceiptRequestDetailDO detailDo) { + // 校验 生产线 + ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); + detailDo.setToLocationCode(productionlineDO.getRawLocationCode()); + // 校验生产线和物品关系 + productionlineitemService.productionLineCodeAndpItemCodeExist(detailDo.getProductionLineCode(), detailDo.getItemCode()); + // 校验 物品 + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + // 赋值物品相关信息 + detailDo.setItemName(itembasicDO.getName()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setProjectCode(itembasicDO.getProject()); + if (!itembasicDO.getUom().equals(detailDo.getUom())) { + throw new UtilException("计量单位【" + detailDo.getUom() + "】错误,应该是" + itembasicDO.getUom()); + } + // 校验 物品包装 + ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode()); + detailDo.setStdPackQty(itempackagingDO.getStdPackQty()); + detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit()); + // 校验 工位 + if (detailDo.getWorkStationCode() != null && !detailDo.getWorkStationCode().equals("")) { + WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode()); + detailDo.setToLocationCode(workstationDO.getFgLocationCode()); + } + // 校验 物品和bom关系 + bomService.bomItemCodeAndVersionExist(detailDo.getItemCode(),detailDo.getBomVersion()); + // 校验 成品库与物品关系 TODO:需要上架策略完善后 打开注释 +// jobUtils.getItemCodeLocationCode(detailDo.getItemCode(), detailDo.getToLocationCode()); } @Override @@ -87,4 +159,17 @@ public class ProductreceiptRequestDetailServiceImpl implements ProductreceiptReq public PageResult getProductreceiptRequestDetailSenior(CustomConditions conditions) { return productreceiptRequestDetailMapper.selectSenior(conditions); } + + @Override + public List selectList(Long masterId) { + return productreceiptRequestDetailMapper.selectList(masterId); + } + + @Override + public void updateProductreceiptRequestDetailPackingNumber(Long id, String packingNumber) { + ProductreceiptRequestDetailDO updateObj = new ProductreceiptRequestDetailDO(); + updateObj.setId(id); + updateObj.setPackingNumber(packingNumber); + productreceiptRequestDetailMapper.updateById(updateObj); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainService.java index 7de1dab9..f4cbb959 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainService.java @@ -2,10 +2,8 @@ package com.win.module.wms.service.productreceiptRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainCreateReqVO; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainExportReqVO; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainPageReqVO; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainUpdateReqVO; +import com.win.module.wms.controller.productreceiptRequest.vo.*; +import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; import javax.validation.Valid; @@ -81,4 +79,21 @@ public interface ProductreceiptRequestMainService { * @return 分页列表 */ PageResult getProductreceiptRequestMainSenior(CustomConditions conditions); + + List getProductreceiptRequestMainList(CustomConditions conditions); + + List importProductreceiptRequestList(List createReqVOList, Integer mode, Boolean updatePart); + + void generateBackflushRequest(ProductreceiptRequestDetailDO detailbDO); + Integer closeProductreceiptRequestMain(Long id); + + Integer reAddProductreceiptRequestMain(Long id); + + Integer submitProductreceiptRequestMain(Long id); + + Integer refusedProductreceiptRequestMain(Long id); + + Integer agreeProductreceiptRequestMain(Long id); + + Integer handleProductreceiptRequestMain(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainServiceImpl.java index 969faab1..3524812b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productreceiptRequest/ProductreceiptRequestMainServiceImpl.java @@ -1,24 +1,85 @@ package com.win.module.wms.service.productreceiptRequest; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.exceptions.UtilException; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +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.productreceiptRequest.vo.ProductreceiptRequestMainCreateReqVO; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainExportReqVO; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainPageReqVO; -import com.win.module.wms.controller.productreceiptRequest.vo.ProductreceiptRequestMainUpdateReqVO; +import com.win.framework.common.util.validation.ValidationUtils; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; +import com.win.module.system.api.dict.DictDataApi; +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.expectin.vo.ExpectinCreateReqVO; +import com.win.module.wms.controller.productreceiptRequest.vo.*; +import com.win.module.wms.controller.rule.vo.RuleRespVO; +import com.win.module.wms.convert.productreceiptRequest.ProductreceiptRequestDetailConvert; import com.win.module.wms.convert.productreceiptRequest.ProductreceiptRequestMainConvert; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.backflushRequest.BackflushRequestDetailbDO; +import com.win.module.wms.dal.dataobject.bom.BomDO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; +import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; +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.itempackaging.ItempackagingDO; +import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; +import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobDetailDO; +import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO; +import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; +import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; +import com.win.module.wms.dal.mysql.backflushRequest.BackflushRequestDetailbMapper; +import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobDetailMapper; +import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobMainMapper; +import com.win.module.wms.dal.mysql.productreceiptRequest.ProductreceiptRequestDetailMapper; import com.win.module.wms.dal.mysql.productreceiptRequest.ProductreceiptRequestMainMapper; +import com.win.module.wms.dal.mysql.purchasereceiptJob.PurchasereceiptJobMainMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.job.JobStatusEnum; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.enums.request.RequestStatusState; +import com.win.module.wms.service.backflushRequest.BackflushRequestDetailbService; +import com.win.module.wms.service.bom.BomService; +import com.win.module.wms.service.expectin.ExpectinService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.itempackaging.ItempackagingService; +import com.win.module.wms.service.jobsetting.JobsettingService; +import com.win.module.wms.service.productionline.ProductionlineService; +import com.win.module.wms.service.productionlineitem.ProductionlineitemService; +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.workshop.WorkshopService; +import com.win.module.wms.service.workstation.WorkstationService; +import com.win.module.wms.util.JobUtils; +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.validation.Validator; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Map; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_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,189 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_REQUEST @Validated public class ProductreceiptRequestMainServiceImpl implements ProductreceiptRequestMainService { + @Resource + private ProductreceiptJobDetailMapper productreceiptJobDetailMapper; + @Resource + private ExpectinService expectinService; + @Resource + private JobsettingService jobsettingService; + @Resource + private ProductreceiptJobMainMapper productreceiptJobMainMapper; + @Resource + private BackflushRequestDetailbService backflushRequestDetailbSerivce; + @Resource + private AdminUserApi userApi; + @Resource + private BackflushRequestDetailbMapper backflushRequestDetailbMapper; + @Resource + private BomService bomService; + @Resource + private ProductreceiptRequestDetailMapper productreceiptRequestDetailMapper; + @Resource + private WorkstationService workstationService; + @Resource + private ItempackagingService itempackagingService; + @Resource + private ProductionlineitemService productionlineitemService; + @Resource + private ProductionlineService productionlineService; + @Resource + private DictDataApi dictDataApi; + @Resource + private ItembasicService itembasicService; + @Resource + private Validator validator; + @Resource + private ShiftService shiftService; + @Resource + private TeamService teamService; + @Resource + private RequestsettingService requestsettingService; + @Resource + private WorkshopService workshopService; + @Resource + private TrendsApi trendsApi; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private JobUtils jobUtils; @Resource private ProductreceiptRequestMainMapper productreceiptRequestMainMapper; @Override + @Transactional public Long createProductreceiptRequestMain(ProductreceiptRequestMainCreateReqVO createReqVO) { - // 插入 - ProductreceiptRequestMainDO productreceiptRequestMain = ProductreceiptRequestMainConvert.INSTANCE.convert(createReqVO); - productreceiptRequestMainMapper.insert(productreceiptRequestMain); - // 返回 - return productreceiptRequestMain.getId(); + ProductreceiptRequestMainDO productreceiptRequestMainDO = validatorToCreate(createReqVO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(productreceiptRequestMainDO.getStatus())) { + this.generateJob(productreceiptRequestMainDO, productreceiptRequestDetailMapper.selectList(productreceiptRequestMainDO.getId())); + } + trendsApi.createTrends(productreceiptRequestMainDO.getId(), "ProductreceiptRequest", "增加了制品收货申请", TrendsTypeEnum.CREATE); + return productreceiptRequestMainDO.getId(); } @Override + @Transactional public void updateProductreceiptRequestMain(ProductreceiptRequestMainUpdateReqVO updateReqVO) { // 校验存在 validateProductreceiptRequestMainExists(updateReqVO.getId()); - // 更新 - ProductreceiptRequestMainDO updateObj = ProductreceiptRequestMainConvert.INSTANCE.convert(updateReqVO); - productreceiptRequestMainMapper.updateById(updateObj); + ProductreceiptRequestMainDO productreceiptRequestMainDO = validatorToUpdate(updateReqVO); + if(RequestStatusEnum.HANDLING.getCode().equals(productreceiptRequestMainDO.getStatus())) { + this.generateJob(productreceiptRequestMainDO, productreceiptRequestDetailMapper.selectList(productreceiptRequestMainDO.getId())); + } + trendsApi.createTrends(productreceiptRequestMainDO.getId(), "ProductreceiptRequest", "更新了制品收货申请", TrendsTypeEnum.UPDATE); + } + + /** + * 创建 主子 数据 + * @param createReqVO + * @return + */ + private ProductreceiptRequestMainDO validatorToCreate(ProductreceiptRequestMainCreateReqVO createReqVO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRequest"); + ProductreceiptRequestMainDO productreceiptRequestMainDO = validateMainMethod(createReqVO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = ProductreceiptRequestDetailConvert.INSTANCE.convertList03(subList); + for (ProductreceiptRequestDetailDO productreceiptRequestDetailDO : subDOList) { + validateDetailMethod(productreceiptRequestMainDO, productreceiptRequestDetailDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + productreceiptRequestMainDO.setNumber(number); + productreceiptRequestMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); + productreceiptRequestMainMapper.insert(productreceiptRequestMainDO); + for (ProductreceiptRequestDetailDO productreceiptRequestDetailDO : subDOList) { + productreceiptRequestDetailDO.setMasterId(productreceiptRequestMainDO.getId()); + productreceiptRequestDetailDO.setNumber(productreceiptRequestMainDO.getNumber()); + productreceiptRequestDetailDO.setInventoryStatus(businesstypeDO.getOutInventoryStatuses()); + productreceiptRequestDetailMapper.insert(productreceiptRequestDetailDO); + // 创建 制品收货申请第二子表 bom相关信息 + generateBackflushRequest(productreceiptRequestDetailDO); + } + return productreceiptRequestMainDO; + } + + /** + * 更新 主 数据 + * @param updateReqVO + * @return + */ + private ProductreceiptRequestMainDO validatorToUpdate(ProductreceiptRequestMainUpdateReqVO updateReqVO) { + ProductreceiptRequestMainDO productreceiptRequestMainDO = validateMainMethod(updateReqVO); + productreceiptRequestMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); + productreceiptRequestMainMapper.updateById(productreceiptRequestMainDO); + return productreceiptRequestMainDO; + } + + /** + * 校验 主表 数据 + * @param baseVO + * @return + */ + private ProductreceiptRequestMainDO validateMainMethod(ProductreceiptRequestMainBaseVO baseVO){ + ProductreceiptRequestMainDO mainDo = ProductreceiptRequestMainConvert.INSTANCE.convert(baseVO); + // 赋值 + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setRequestTime(LocalDateTime.now()); + // 校验 车间 + workshopService.selectWorkshopExist(mainDo.getWorkshopCode()); + // 校验 班组 + teamService.selectTeamExist(mainDo.getTeam()); + // 校验 班次 + shiftService.selectShiftExist(mainDo.getShift()); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductReceiptRequest"); + if (requestsettingDO == null) { + throw new UtilException("未查找到发料申请的相关申请设置"); + } else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRequest"); + if (businesstypeDO == null) { + throw new UtilException("根据单据设置未查找到发料申请的相关业务类型"); + } else { + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); + mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } + return mainDo; + } + + /** + * 校验 子表 数据 + * @param detailDo + */ + private void validateDetailMethod(ProductreceiptRequestMainDO mainDO, ProductreceiptRequestDetailDO detailDo) { + // 校验 生产线 + ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); + detailDo.setToLocationCode(productionlineDO.getRawLocationCode()); + // 校验生产线和物品关系 + productionlineitemService.productionLineCodeAndpItemCodeExist(detailDo.getProductionLineCode(), detailDo.getItemCode()); + // 校验 物品 + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + // 赋值物品相关信息 + detailDo.setItemName(itembasicDO.getName()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setProjectCode(itembasicDO.getProject()); + if (!itembasicDO.getUom().equals(detailDo.getUom())) { + throw new UtilException("计量单位【" + detailDo.getUom() + "】错误,应该是" + itembasicDO.getUom()); + } + // 校验 物品包装 + ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode()); + detailDo.setStdPackQty(itempackagingDO.getStdPackQty()); + detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit()); + // 校验 工位 + if (detailDo.getWorkStationCode() != null && !detailDo.getWorkStationCode().equals("")) { + WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode()); + detailDo.setToLocationCode(workstationDO.getFgLocationCode()); + } + // 校验 物品和bom关系 + bomService.bomItemCodeAndVersionExist(detailDo.getItemCode(),detailDo.getBomVersion()); + // 校验 成品库与物品关系 TODO:需要上架策略完善后 打开注释 + //jobUtils.getItemCodeLocationCode(detailDo.getItemCode(), detailDo.getToLocationCode()); } @Override @@ -58,10 +283,12 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque productreceiptRequestMainMapper.deleteById(id); } - private void validateProductreceiptRequestMainExists(Long id) { - if (productreceiptRequestMainMapper.selectById(id) == null) { + private ProductreceiptRequestMainDO validateProductreceiptRequestMainExists(Long id) { + ProductreceiptRequestMainDO productreceiptRequestMainDO = productreceiptRequestMainMapper.selectById(id); + if (productreceiptRequestMainDO == null) { throw exception(PRODUCTRECEIPT_REQUEST_MAIN_NOT_EXISTS); } + return productreceiptRequestMainDO; } @Override @@ -88,4 +315,435 @@ public class ProductreceiptRequestMainServiceImpl implements ProductreceiptReque public PageResult getProductreceiptRequestMainSenior(CustomConditions conditions) { return productreceiptRequestMainMapper.selectSenior(conditions); } + + @Override + public List getProductreceiptRequestMainList(CustomConditions conditions) { + return productreceiptRequestMainMapper.selectSeniorList(conditions); + } + + /** + * 主表校验导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validateProductreceiptRequestMainImport(ProductreceiptRequestMainDO mainDo) { + StringBuilder message = new StringBuilder(); + // 赋值 + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setRequestTime(LocalDateTime.now()); + // 校验 车间 + try { + workshopService.selectWorkshopExist(mainDo.getWorkshopCode()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + // 校验 班组 + try { + teamService.selectTeamExist(mainDo.getTeam()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + // 校验 班次 + try { + shiftService.selectShiftExist(mainDo.getShift()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductReceiptRequest"); + if (requestsettingDO == null) { + message.append("未查找到发料申请的相关申请设置"); + } else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRequest"); + if (businesstypeDO == null) { + message.append("根据单据设置未查找到发料申请的相关业务类型"); + } else { + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); + mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + /** + * 子表校验导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validateProductreceiptRequestDetailImport(ProductreceiptRequestDetailDO detailDo, ProductreceiptRequestMainDO mainDo) { + StringBuilder message = new StringBuilder(); + // 校验 生产线 + try { + ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); + detailDo.setToLocationCode(productionlineDO.getRawLocationCode()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + // 校验生产线和物品关系 + try { + productionlineitemService.productionLineCodeAndpItemCodeExist(detailDo.getProductionLineCode(), detailDo.getItemCode()); + } catch (Exception e) { + message.append(e.getMessage()).append(","); + } + // 校验 物品 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + // 赋值物品相关信息 + detailDo.setItemName(itembasicDO.getName()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setProjectCode(itembasicDO.getProject()); + try { + if (!itembasicDO.getUom().equals(detailDo.getUom())) { + message.append("计量单位【").append(dictDataApi.selectDictValue(detailDo.getUom()).getLabel()).append("】错误,应该是【").append(dictDataApi.selectDictValue(itembasicDO.getUom()).getLabel()).append("】").append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + // 校验 物品包装 + try { + ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode()); + detailDo.setStdPackQty(itempackagingDO.getStdPackQty()); + detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + // 校验 工位 + try { + if (detailDo.getWorkStationCode() != null && !detailDo.getWorkStationCode().equals("")) { + WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDo.getWorkshopCode(), detailDo.getProductionLineCode()); + detailDo.setToLocationCode(workstationDO.getFgLocationCode()); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + // 校验 物品和bom关系 + try { + bomService.bomItemCodeAndVersionExist(detailDo.getItemCode(),detailDo.getBomVersion()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + // 校验 成品库与物品关系 TODO:需要上架策略完善后 打开注释 +// try { +// jobUtils.getItemCodeLocationCode(detailDo.getItemCode(), detailDo.getToLocationCode()); +// } catch (Exception ex) { +// message.append(ex.getMessage()).append(","); +// } + try { + ValidationUtils.validate(validator, detailDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + @Override + @Transactional + public List importProductreceiptRequestList(List datas, Integer mode, Boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(PRODUCTRECEIPT_REQUEST_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + ProductreceiptRequestMainDO mainDo = ProductreceiptRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validateProductreceiptRequestMainImport(mainDo); + List subList = createReqVO.getSubList(); + List subDOList = ProductreceiptRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (ProductreceiptRequestDetailDO detailDO : subDOList) { + String messageDetail = validateProductreceiptRequestDetailImport(detailDO, mainDo); + if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { + ProductreceiptRequestImportErrorVO importErrorVO = ProductreceiptRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + } + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_RECEIPT_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + productreceiptRequestMainMapper.insert(mainDo); + for (ProductreceiptRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + productreceiptRequestDetailMapper.insert(detailDO); + // 创建 制品收货申请第二子表 bom相关信息 + generateBackflushRequest(detailDO); + } + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { + generateJob(mainDo, subDOList); + } + //增加操作记录 + trendsApi.createTrends(mainDo.getId(), "ProductreceiptRequestMain", "导入了制品收货申请", TrendsTypeEnum.CREATE); + } + }); + return errorList; + } + + /** + * 创建 制品收货申请第二子表(bom相关) + * @param detailbDO + */ + @Override + public void generateBackflushRequest(ProductreceiptRequestDetailDO detailbDO) { + // 删除旧数据 重新添加 + backflushRequestDetailbSerivce.deleteBackflushRequestDetailbByMasterId(detailbDO.getId()); + List backflushRequestDetailbDOList = new ArrayList<>(); + List> list = jobUtils.bomDismantleList(detailbDO.getItemCode(), detailbDO.getBomVersion()); + if (list == null || list.size() == 0) { + throw new UtilException("没有找到bom拆解信息"); + } + list.forEach(itemBom -> { + BackflushRequestDetailbDO backflushRequestDetailbDO = new BackflushRequestDetailbDO(); + backflushRequestDetailbDO.setProcessCode(detailbDO.getProcessCode()); + backflushRequestDetailbDO.setBomVersion(itemBom.get("version")==null?"":itemBom.get("version").toString()); + backflushRequestDetailbDO.setItemCode(itemBom.get("itemCode")==null?"":itemBom.get("itemCode").toString()); + backflushRequestDetailbDO.setMasterId(detailbDO.getId()); + backflushRequestDetailbDO.setNumber(detailbDO.getNumber()); + backflushRequestDetailbDO.setQty(new BigDecimal(itemBom.get("qty").toString())); + backflushRequestDetailbDO.setUom(itemBom.get("uom")==null?"":itemBom.get("uom").toString()); + // 赋值物品相关信息 + ItembasicDO itembasicDO = itembasicService.selectItembasic(itemBom.get("itemCode")==null?"":itemBom.get("itemCode").toString()); + backflushRequestDetailbDO.setItemName(itembasicDO.getName()); + backflushRequestDetailbDO.setItemDesc1(itembasicDO.getDesc1()); + backflushRequestDetailbDO.setItemDesc2(itembasicDO.getDesc2()); + backflushRequestDetailbDO.setProjectCode(itembasicDO.getProject()); + backflushRequestDetailbDOList.add(backflushRequestDetailbDO); + }); + backflushRequestDetailbMapper.insertBatch(backflushRequestDetailbDOList); + } + + @Override + @Transactional + public Integer closeProductreceiptRequestMain(Long id) { + ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.close(); + if(!flag) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //增加操作记录 + trendsApi.createTrends(id, "productreceiptRequest", "关闭了制品收货申请", TrendsTypeEnum.UPDATE); + return productreceiptRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer reAddProductreceiptRequestMain(Long id) { + ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.reAdd(); + if(!flag) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "productreceiptRequest", "打开了制品收货申请", TrendsTypeEnum.UPDATE); + return productreceiptRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer submitProductreceiptRequestMain(Long id) { + ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, productreceiptRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "productreceiptRequest", "提交了制品收货申请", TrendsTypeEnum.UPDATE); + return productreceiptRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer refusedProductreceiptRequestMain(Long id) { + ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.refused(); + if(!flag) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + trendsApi.createTrends(id, "productreceiptRequest", "驳回了制品收货申请", TrendsTypeEnum.UPDATE); + return productreceiptRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer agreeProductreceiptRequestMain(Long id) { + ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); + if(!flag) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, productreceiptRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "productreceiptRequest", "审批通过了制品收货申请", TrendsTypeEnum.UPDATE); + return productreceiptRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer handleProductreceiptRequestMain(Long id) { + ProductreceiptRequestMainDO mainDO = validateProductreceiptRequestMainExists(id); + // 校验存在存在下级单据 + Long count = productreceiptJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.handle(); + if(!flag) { + throw new ServiceException(PRODUCTRECEIPT_REQUEST_MAIN_STATUS_ERROR); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用执行方法 + this.generateJob(mainDO, productreceiptRequestDetailMapper.selectList(mainDO.getId())); + trendsApi.createTrends(id, "productreceiptRequest", "执行了制品收货申请", TrendsTypeEnum.UPDATE); + return productreceiptRequestMainMapper.updateById(mainDO); + } + + /** + * 创建 制品收货任务 + * @param mainDO + * @param detailDOList + */ + private void generateJob(ProductreceiptRequestMainDO mainDO, List detailDOList) { + //跳过任务直接生成记录 + if("TRUE".equals(mainDO.getDirectCreateRecord())) { +// TODO: 制品收货申请 跳过任务直接生成记录 未做!! +// PurchasereceiptRecordMainCreateReqVO purchasereceiptRecordMainCreateReqVO = new PurchasereceiptRecordMainCreateReqVO(); +// BeanUtils.copyProperties(mainDO, purchasereceiptRecordMainCreateReqVO); +// purchasereceiptRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); +// String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_RECORD.getCode()); +// purchasereceiptRecordMainCreateReqVO.setNumber(number); +// //增加业务类型 +// BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReceiptRecord"); +// purchasereceiptRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); +// purchasereceiptRecordMainMapper.insert(PurchasereceiptRecordMainConvert.INSTANCE.convert(purchasereceiptRecordMainCreateReqVO)); +// for(PurchasereceiptRequestDetailDO purchasereceiptRequestDetailDO : detailDOList) { +// PurchasereceiptRecordDetailCreateReqVO purchasereceiptRecordDetailCreateReqVO = new PurchasereceiptRecordDetailCreateReqVO(); +// BeanUtils.copyProperties(purchasereceiptRequestDetailDO, purchasereceiptRecordDetailCreateReqVO); +// purchasereceiptRecordDetailCreateReqVO.setNumber(number); +// purchasereceiptRecordDetailMapper.insert(PurchasereceiptRecordDetailConvert.INSTANCE.convert(purchasereceiptRecordDetailCreateReqVO)); +// } +// return; + } + // 任务主表信息 + ProductreceiptJobMainDO productreceiptJobMainDO = new ProductreceiptJobMainDO(); + BeanUtil.copyProperties(mainDO, productreceiptJobMainDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_RECEIPT_JOB.getCode()); + productreceiptJobMainDO.setNumber(number); + productreceiptJobMainDO.setRequestNumber(mainDO.getNumber()); + productreceiptJobMainDO.setWorkShopCode(mainDO.getWorkshopCode()); + productreceiptJobMainDO.setRequestDueTime(mainDO.getDueTime()); + productreceiptJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); + productreceiptJobMainDO.setId(null); + productreceiptJobMainDO.setCreateTime(null); + productreceiptJobMainDO.setCreator(null); + productreceiptJobMainDO.setUpdateTime(null); + productreceiptJobMainDO.setUpdater(null); + productreceiptJobMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); + // 获取任务单据设置 + JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("ProductReceiptJob"); + productreceiptJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); + productreceiptJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); + productreceiptJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); + productreceiptJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); + productreceiptJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); + productreceiptJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); + productreceiptJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); + productreceiptJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); + productreceiptJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); + productreceiptJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptJob"); + productreceiptJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses()); + productreceiptJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses()); + productreceiptJobMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + productreceiptJobMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + productreceiptJobMainDO.setBusinessType(businesstypeDO.getCode()); + productreceiptJobMainMapper.insert(productreceiptJobMainDO); + List productreceiptJobDetailDOList = new ArrayList<>(); + List expectinCreateReqVOList = new ArrayList<>(); + for(ProductreceiptRequestDetailDO detailDO: detailDOList) { + ProductreceiptJobDetailDO productreceiptJobDetailDO = new ProductreceiptJobDetailDO(); + BeanUtil.copyProperties(detailDO, productreceiptJobDetailDO); + productreceiptJobDetailDO.setMasterId(productreceiptJobMainDO.getId()); + productreceiptJobDetailDO.setNumber(number); + productreceiptJobDetailDO.setId(null); + productreceiptJobDetailDO.setCreateTime(null); + productreceiptJobDetailDO.setCreator(null); + productreceiptJobDetailDO.setUpdateTime(null); + productreceiptJobDetailDO.setUpdater(null); + productreceiptJobDetailDOList.add(productreceiptJobDetailDO); + //预计入 + ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); + BeanUtils.copyProperties(productreceiptJobDetailDO, expectinCreateReqVO); + expectinCreateReqVO.setJobNumber(number); + expectinCreateReqVO.setBusinessType(productreceiptJobMainDO.getBusinessType()); + expectinCreateReqVO.setLocationCode(detailDO.getToLocationCode()); + expectinCreateReqVO.setOwnerCode(detailDO.getToOwnerCode()); + expectinCreateReqVOList.add(expectinCreateReqVO); + } + productreceiptJobDetailMapper.insertBatch(productreceiptJobDetailDOList); + //增加预计入 + expectinService.createExpectin(expectinCreateReqVOList); + trendsApi.createTrends(productreceiptJobMainDO.getId(), "productreceiptJob", "制品收货申请生成制品收货任务", TrendsTypeEnum.CREATE); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java index f6cedf06..55ba061c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java @@ -4,8 +4,10 @@ import cn.hutool.core.exceptions.UtilException; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.win.module.wms.controller.bom.vo.BomExportReqVO; import com.win.module.wms.controller.rule.vo.RuleRespVO; import com.win.module.wms.dal.dataobject.balance.BalanceDO; +import com.win.module.wms.dal.dataobject.bom.BomDO; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.documentsetting.DocumentsettingDO; import com.win.module.wms.dal.dataobject.expectout.ExpectoutDO; @@ -17,6 +19,7 @@ import com.win.module.wms.dal.mysql.balance.BalanceMapper; import com.win.module.wms.dal.mysql.expectout.ExpectoutMapper; import com.win.module.wms.dal.mysql.location.LocationMapper; import com.win.module.wms.service.balance.BalanceService; +import com.win.module.wms.service.bom.BomService; import com.win.module.wms.service.businesstype.BusinesstypeService; import com.win.module.wms.service.documentsetting.DocumentsettingService; import com.win.module.wms.service.expectout.ExpectoutService; @@ -31,10 +34,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.module.wms.enums.ErrorCodeConstants.*; @@ -43,6 +43,8 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; @Component public class JobUtils { + @Resource + private BomService bomService; @Resource private ItembasicService itembasicService; @@ -934,4 +936,42 @@ public class JobUtils { throw exception(LOCATION_ITEMCODE_AND_LOCATIONCODE_NOT_EXISTS); } } + + /** + * bom拆解 + * @param itemCode 父物品代码 + * @param bomVersion bom版本 + * @return + */ + public List> bomDismantleList (String itemCode, String bomVersion) { + List> list = new ArrayList<>(); + BomRecursion(itemCode, bomVersion, list); + return list; + } + + /** + * bom解析递归 + * @param itemCode + * @param list + */ + private void BomRecursion (String itemCode,String bomVersion ,List> list) { + BomExportReqVO bomExportReqVO = new BomExportReqVO(); + bomExportReqVO.setProductItemCode(itemCode); + bomExportReqVO.setVersion(bomVersion); + bomExportReqVO.setAvailable("TRUE"); + List bomDOList = bomService.getBomList(bomExportReqVO); + bomDOList.forEach(item -> { + // 判断物品是否是虚零件 TODO: 拆解BOM 子零件是否要按照父零件版本进行查询?? + if (itembasicService.selectItembasic(item.getComponentItemCode()).getIsPhantom().equals("TRUE")) { + this.BomRecursion(item.getComponentItemCode(), item.getVersion(), list); + } else { + Map map = new HashMap<>(); + map.put("itemCode",item.getComponentItemCode()); + map.put("uom",item.getComponentUom()); + map.put("qty",item.getComponentQty()); + map.put("version",item.getVersion()); + list.add(map); + } + }); + } }