diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java index d4041077..be316794 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/DictTypeConstants.java @@ -65,9 +65,10 @@ public interface DictTypeConstants { String CARRIER_TYPE = "carrier_type";//承运商类型 String INVENTORY_STATUS = "inventory_status";//库存状态 String REQUEST_STATUS = "request_status";//请求状态 - String PURCHASE_RETURN_REASON = "purchase_return_reason";//原因 - String TRANSFER_MODE = "transfer_mode";//运输方式 String FAILED_REASON = "failed_reason";//采购收货不合格原因 + String INSPECT_TYPE = "inspect_type";//检验类型 + String NEXT_ACTION = "next_action";//下一步检验动作 + String SAMPLE_METHOD = "sample_method";//抽检方式 } 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 46705946..9fb522d5 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 @@ -424,7 +424,11 @@ public interface ErrorCodeConstants { ErrorCode PURCHASERECEIPT_JOB_MAIN_STATUS_ERROR = new ErrorCode(1_000_073_002, "采购收货任务状态错误"); ErrorCode PURCHASERECEIPT_REQUEST_STATUS_NOT_NEW = new ErrorCode(1_000_073_003, "采购收货不是新增状态"); ErrorCode PURCHASERECEIPT_REQUEST_JOB_EXISTS = new ErrorCode(1_000_073_004, "采购收货存在采购收货任务单"); - ErrorCode PURCHASERECEIPT_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_073_004, "采购收货状态不支持关闭"); + ErrorCode PURCHASERECEIPT_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_073_005, "采购收货状态不支持关闭"); + ErrorCode PURCHASERECEIPT_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_073_006, "采购收货状态不支持提交"); + ErrorCode PURCHASERECEIPT_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_073_007, "采购收货状态不支持审批同意"); + ErrorCode PURCHASERECEIPT_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_073_008, "采购收货状态不支持处理"); + ErrorCode PURCHASERECEIPT_REQUEST_CANNOT_ABORT = new ErrorCode(1_000_073_009, "采购收货状态不支持审批拒绝"); //采购收货任务子ErrorCode ErrorCode PURCHASERECEIPT_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_074_000, "采购收货记录主不存在"); ErrorCode PURCHASERECEIPT_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_074_001, "采购收货记录子不存在"); @@ -445,10 +449,16 @@ public interface ErrorCodeConstants { //采购退货记录子ErrorCode ErrorCode PURCHASERETURN_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_077_001, "采购退货记录子不存在"); //检验申请主ErrorCode - ErrorCode INSPECT_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_078_000, "检验申请主不存在"); + ErrorCode INSPECT_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_078_000, "到货检验申请主不存在"); //检验申请子ErrorCode - ErrorCode INSPECT_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_078_001, "检验申请子不存在"); - ErrorCode INSPECT_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_078_002, "检验申请导入数据不能为空"); + ErrorCode INSPECT_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_078_001, "到货检验申请子不存在"); + ErrorCode INSPECT_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_078_002, "到货检验申请导入数据不能为空"); + ErrorCode INSPECT_REQUEST_JOB_EXISTS = new ErrorCode(1_000_078_003, "到货检验申请存在采购收货任务单"); + ErrorCode INSPECT_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_078_004, "到货检验申请状态不支持关闭"); + ErrorCode INSPECT_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_078_005, "到货检验申请状态不支持提交"); + ErrorCode INSPECT_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_078_006, "到货检验申请状态不支持审批同意"); + ErrorCode INSPECT_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_078_007, "到货检验申请状态不支持处理"); + ErrorCode INSPECT_REQUEST_CANNOT_ABORT = new ErrorCode(1_000_078_008, "到货检验申请状态不支持审批拒绝"); //检验任务主ErrorCode ErrorCode INSPECT_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_079_000, "检验任务主不存在"); //检验任务子ErrorCode diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/InspectRequestDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/InspectRequestDetailController.java index a5bbc6ce..b4851f10 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/InspectRequestDetailController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/InspectRequestDetailController.java @@ -1,35 +1,29 @@ package com.win.module.wms.controller.inspectRequest; +import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.common.pojo.PageResult; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; -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 com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailCreateReqVO; +import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailPageReqVO; +import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailRespVO; +import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailUpdateReqVO; +import com.win.module.wms.convert.inspectRequest.InspectRequestDetailConvert; +import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; +import com.win.module.wms.service.inspectRequest.InspectRequestDetailService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +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 javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; +import javax.annotation.Resource; +import javax.validation.Valid; -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.inspectRequest.vo.*; -import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; -import com.win.module.wms.convert.inspectRequest.InspectRequestDetailConvert; -import com.win.module.wms.service.inspectRequest.InspectRequestDetailService; - @Tag(name = "管理后台 - 检验申请子") @RestController @RequestMapping("/wms/inspect-request-detail") @@ -53,8 +47,8 @@ public class InspectRequestDetailController { @Operation(summary = "更新检验申请子") @PreAuthorize("@ss.hasPermission('wms:inspect-request-detail:update')") public CommonResult updateInspectRequestDetail(@Valid @RequestBody InspectRequestDetailUpdateReqVO updateReqVO) { - inspectRequestDetailService.updateInspectRequestDetail(updateReqVO); - return success(true); + int result = inspectRequestDetailService.updateInspectRequestDetail(updateReqVO); + return success(result > 0); } @DeleteMapping("/delete") @@ -62,8 +56,8 @@ public class InspectRequestDetailController { @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('wms:inspect-request-detail:delete')") public CommonResult deleteInspectRequestDetail(@RequestParam("id") Long id) { - inspectRequestDetailService.deleteInspectRequestDetail(id); - return success(true); + int result = inspectRequestDetailService.deleteInspectRequestDetail(id); + return success(result > 0); } @GetMapping("/get") @@ -75,15 +69,6 @@ public class InspectRequestDetailController { return success(InspectRequestDetailConvert.INSTANCE.convert(inspectRequestDetail)); } - @GetMapping("/list") - @Operation(summary = "获得检验申请子列表") - @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") - @PreAuthorize("@ss.hasPermission('wms:inspect-request-detail:query')") - public CommonResult> getInspectRequestDetailList(@RequestParam("ids") Collection ids) { - List list = inspectRequestDetailService.getInspectRequestDetailList(ids); - return success(InspectRequestDetailConvert.INSTANCE.convertList(list)); - } - @GetMapping("/page") @Operation(summary = "获得检验申请子分页") @PreAuthorize("@ss.hasPermission('wms:inspect-request-detail:query')") @@ -105,22 +90,5 @@ public class InspectRequestDetailController { } return success(result); } - - @GetMapping("/export-excel") - @Operation(summary = "导出检验申请子 Excel") - @PreAuthorize("@ss.hasPermission('wms:inspect-request-detail:export')") - @OperateLog(type = EXPORT) - public void exportInspectRequestDetailExcel(@Valid InspectRequestDetailExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = inspectRequestDetailService.getInspectRequestDetailList(exportReqVO); - // 导出 Excel - List datas = InspectRequestDetailConvert.INSTANCE.convertList02(list); - for(InspectRequestDetailExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "检验申请子.xls", "数据", InspectRequestDetailExcelVO.class, datas); - } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/InspectRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/InspectRequestMainController.java index 5c80e5ce..31511742 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/InspectRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/InspectRequestMainController.java @@ -11,8 +11,10 @@ import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.inspectRequest.vo.*; import com.win.module.wms.convert.inspectRequest.InspectRequestMainConvert; +import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.inspectRequest.InspectRequestDetailService; import com.win.module.wms.service.inspectRequest.InspectRequestMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -43,6 +45,8 @@ public class InspectRequestMainController { @Resource private InspectRequestMainService inspectRequestMainService; @Resource + private InspectRequestDetailService inspectRequestDetailService; + @Resource private AdminUserApi userApi; @PostMapping("/create") @@ -107,21 +111,57 @@ public class InspectRequestMainController { } return success(result); } + @GetMapping("/export-excel") @Operation(summary = "导出检验申请主 Excel") @PreAuthorize("@ss.hasPermission('wms:inspect-request-main:export')") @OperateLog(type = EXPORT) - public void exportInspectRequestMainExcel(@Valid InspectRequestMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { + public void exportInspectRequestMainExcel(@Valid InspectRequestMainExportReqVO exportReqVO, HttpServletResponse response) throws IOException { List list = inspectRequestMainService.getInspectRequestMainList(exportReqVO); + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "到货检验申请主.xls", "检验申请信息列表", InspectRequestMainExcelVO.class, resultList, mapDropDown); + } + + @GetMapping("/export-excel-senior") + @Operation(summary = "导出检验申请主 Excel") + @PreAuthorize("@ss.hasPermission('wms:inspect-request-main:export')") + @OperateLog(type = EXPORT) + public void exportInspectRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = inspectRequestMainService.getInspectRequestMainList(conditions); + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "到货检验申请主.xls", "检验申请信息列表", InspectRequestMainExcelVO.class, resultList, mapDropDown); + } + + private List getExcelVo(List list, Map mapDropDown) { + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(6, locationType); + String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS); + mapDropDown.put(11, requestStatus); + String[] inspectType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INSPECT_TYPE); + mapDropDown.put(15, inspectType); + String[] nextAction = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.NEXT_ACTION); + mapDropDown.put(16, nextAction); + String[] sampleMethod = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.SAMPLE_METHOD); + mapDropDown.put(17, sampleMethod); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(18, uom); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(28, inventoryStatus); // 导出 Excel - List datas = InspectRequestMainConvert.INSTANCE.convertList02(list); - for(InspectRequestMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); + List resultList = new ArrayList<>(); + for(InspectRequestMainDO mainDO : list) { + List subList = inspectRequestDetailService.selectList(mainDO.getId()); + for(InspectRequestDetailDO detailDO : subList) { + InspectRequestMainExcelVO vo = InspectRequestMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); + //后端创建个字段作为前端展示的虚拟字段 + vo.setCreator(user.getNickname()); + resultList.add(vo); + } } - ExcelUtils.write(response, "检验申请主.xls", "数据", InspectRequestMainExcelVO.class, datas); + return resultList; } @GetMapping("/get-import-template") @@ -158,9 +198,55 @@ public class InspectRequestMainController { Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { - String url = ExcelUtils.writeLocalFile("检验申请基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + 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:inspect-request-main:close')") + public CommonResult closeInspectRequestMain(@RequestParam("id") Long id) { + Integer count = inspectRequestMainService.closeInspectRequestMain(id); + return success(count > 0); + } + + @PutMapping("/submit") + @Operation(summary = "提交到货检验申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:inspect-request-main:submit')") + public CommonResult submitInspectRequestMain(@RequestParam("id") Long id) { + Integer count = inspectRequestMainService.submitInspectRequestMain(id); + return success(count > 0); + } + + @PutMapping("/agree") + @Operation(summary = "审批通过到货检验申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:inspect-request-main:agree')") + public CommonResult agreeInspectRequestMain(@RequestParam("id") Long id) { + Integer count = inspectRequestMainService.agreeInspectRequestMain(id); + return success(count > 0); + } + + @PutMapping("/handle") + @Operation(summary = "执行到货检验申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:inspect-request-main:handle')") + public CommonResult handleInspectRequestMain(@RequestParam("id") Long id) { + Integer count = inspectRequestMainService.handleInspectRequestMain(id); + return success(count > 0); + } + + @PutMapping("/abort") + @Operation(summary = "审批拒绝到货检验申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:inspect-request-main:abort')") + public CommonResult abortInspectRequestMain(@RequestParam("id") Long id) { + Integer count = inspectRequestMainService.abortInspectRequestMain(id); + return success(count > 0); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailBaseVO.java index 35909461..a6b391c3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailBaseVO.java @@ -1,13 +1,13 @@ package com.win.module.wms.controller.inspectRequest.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import javax.validation.constraints.*; +import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.time.LocalDateTime; + import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; /** @@ -20,6 +20,10 @@ public class InspectRequestDetailBaseVO { @Schema(description = "id", example = "id") private Long id; + @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "单据号不能为空") + private String number; + @Schema(description = "包装号", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "包装号不能为空") private String packingNumber; @@ -27,6 +31,9 @@ public class InspectRequestDetailBaseVO { @Schema(description = "器具号") private String containerNumber; + @Schema(description = "主表ID") + private Long masterId; + @Schema(description = "库存状态") private String inventoryStatus; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailExcelVO.java index f0b536c4..fc7501fa 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailExcelVO.java @@ -1,15 +1,13 @@ package com.win.module.wms.controller.inspectRequest.vo; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.math.BigDecimal; - import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; /** @@ -20,12 +18,18 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class InspectRequestDetailExcelVO { + @ExcelProperty("单据号") + private String number; + @ExcelProperty("包装号") private String packingNumber; @ExcelProperty("器具号") private String containerNumber; + @ExcelProperty("主表ID") + private Long masterId; + @ExcelProperty(value = "库存状态", converter = DictConvert.class) @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String inventoryStatus; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailExportReqVO.java index 1a1263ed..eca714ba 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailExportReqVO.java @@ -1,13 +1,11 @@ package com.win.module.wms.controller.inspectRequest.vo; -import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; 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; @@ -15,12 +13,18 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @Data public class InspectRequestDetailExportReqVO { + @Schema(description = "单据号") + private String number; + @Schema(description = "包装号") private String packingNumber; @Schema(description = "器具号") private String containerNumber; + @Schema(description = "主表ID") + private Long masterId; + @Schema(description = "库存状态") private String inventoryStatus; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailPageReqVO.java index c0169a33..467f1861 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestDetailPageReqVO.java @@ -1,12 +1,13 @@ package com.win.module.wms.controller.inspectRequest.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 io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; import java.time.LocalDateTime; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -17,12 +18,18 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @ToString(callSuper = true) public class InspectRequestDetailPageReqVO extends PageParam { + @Schema(description = "单据号") + private String number; + @Schema(description = "包装号") private String packingNumber; @Schema(description = "器具号") private String containerNumber; + @Schema(description = "主表ID") + private Long masterId; + @Schema(description = "库存状态") private String inventoryStatus; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java index 8fb7f2c9..298c1345 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java @@ -1,8 +1,10 @@ package com.win.module.wms.controller.inspectRequest.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; 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.Data; import java.math.BigDecimal; @@ -36,18 +38,12 @@ public class InspectRequestMainExcelVO { private String fromAreaCodes; @ExcelProperty(value = "从库位类型范围", converter = DictConvert.class) - @DictFormat("location_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.LOCATION_TYPE) private String fromLocationTypes; @ExcelProperty("备注") private String remark; - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @ExcelProperty("创建者用户名") - private String creator; - @ExcelProperty("申请时间") private LocalDateTime requestTime; @@ -58,15 +54,9 @@ public class InspectRequestMainExcelVO { private String departmentCode; @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("request_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.REQUEST_STATUS) private String status; - @ExcelProperty("最后更新时间") - private LocalDateTime updateTime; - - @ExcelProperty("最后更新者用户名") - private String updater; - @ExcelProperty("订单号") private String poNumber; @@ -76,23 +66,20 @@ public class InspectRequestMainExcelVO { @ExcelProperty("批次") private String batch; - @ExcelProperty("物品代码") - private String itemCode; - @ExcelProperty(value = "检验类型", converter = DictConvert.class) - @DictFormat("inspect_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.INSPECT_TYPE) private String inspectType; @ExcelProperty(value = "下一步检验动作", converter = DictConvert.class) - @DictFormat("next_action") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.NEXT_ACTION) private String nextAction; @ExcelProperty(value = "抽检方式", converter = DictConvert.class) - @DictFormat("sample_method") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.SAMPLE_METHOD) private String sampleMethod; @ExcelProperty(value = "计量单位", converter = DictConvert.class) - @DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.UOM) private String uom; @ExcelProperty("收货数量") @@ -116,4 +103,48 @@ public class InspectRequestMainExcelVO { @ExcelProperty("直接生成记录") private String directCreateRecord; + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty("创建时间") + @ColumnWidth(value = 16) + private LocalDateTime createTime; + + @ExcelProperty("创建者ID") + private String creator; + + @ExcelProperty("最后更新时间") + private LocalDateTime updateTime; + + @ExcelProperty("最后更新者用户名") + private String updater; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/PurchasereceiptRequestDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/PurchasereceiptRequestDetailController.java index 52e27cb5..5e793c6b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/PurchasereceiptRequestDetailController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/PurchasereceiptRequestDetailController.java @@ -61,8 +61,8 @@ public class PurchasereceiptRequestDetailController { @Operation(summary = "更新采购收货申请子") @PreAuthorize("@ss.hasPermission('wms:purchasereceipt-request-detail:update')") public CommonResult updatePurchasereceiptRequestDetail(@Valid @RequestBody PurchasereceiptRequestDetailUpdateReqVO updateReqVO) { - purchasereceiptRequestDetailService.updatePurchasereceiptRequestDetail(updateReqVO); - return success(true); + int result = purchasereceiptRequestDetailService.updatePurchasereceiptRequestDetail(updateReqVO); + return success(result > 0); } @DeleteMapping("/delete") @@ -70,8 +70,8 @@ public class PurchasereceiptRequestDetailController { @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('wms:purchasereceipt-request-detail:delete')") public CommonResult deletePurchasereceiptRequestDetail(@RequestParam("id") Long id) { - purchasereceiptRequestDetailService.deletePurchasereceiptRequestDetail(id); - return success(true); + int result = purchasereceiptRequestDetailService.deletePurchasereceiptRequestDetail(id); + return success(result > 0); } @GetMapping("/get") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/PurchasereceiptRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/PurchasereceiptRequestMainController.java index 5b63d2c0..c876f5f9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/PurchasereceiptRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/PurchasereceiptRequestMainController.java @@ -161,11 +161,14 @@ public class PurchasereceiptRequestMainController { List subList = purchasereceiptRequestDetailService.selectList(mainDO.getId()); for(PurchasereceiptRequestDetailDO detailDO : subList) { PurchasereceiptRequestMainExcelVO vo = PurchasereceiptRequestMainConvert.INSTANCE.convert(mainDO, detailDO); + AdminUserRespDTO user = userApi.getUser(Long.valueOf(mainDO.getCreator())); + vo.setCreator(user.getNickname()); resultList.add(vo); } } return resultList; } + @GetMapping("/get-import-template") @Operation(summary = "获得导入采购收货申请信息模板") public void importTemplate(HttpServletResponse response) throws IOException { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inspectRequest/InspectRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inspectRequest/InspectRequestDetailConvert.java index d23a2bdd..04b75baf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inspectRequest/InspectRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inspectRequest/InspectRequestDetailConvert.java @@ -1,16 +1,15 @@ package com.win.module.wms.convert.inspectRequest; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - import com.win.module.wms.controller.inspectRequest.vo.*; +import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; + +import java.util.List; /** * 检验申请子 Convert @@ -40,6 +39,7 @@ public interface InspectRequestDetailConvert { List convertList05(List subList); @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), @Mapping(source = "mainDO.createTime", target = "createTime"), @Mapping(source = "mainDO.creator", target = "creator"), @Mapping(source = "mainDO.updateTime", target = "updateTime"), diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inspectRequest/InspectRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inspectRequest/InspectRequestMainConvert.java index ca027c93..309d1d5b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inspectRequest/InspectRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/inspectRequest/InspectRequestMainConvert.java @@ -1,13 +1,15 @@ package com.win.module.wms.convert.inspectRequest; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - import com.win.module.wms.controller.inspectRequest.vo.*; +import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; +import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; + +import java.util.List; /** * 检验申请主 Convert @@ -32,4 +34,16 @@ public interface InspectRequestMainConvert { List convertList02(List list); InspectRequestMainDO convert(InspectRequestMainBaseVO baseVO); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.uom", target = "uom"), + @Mapping(source = "detailDO.itemCode", target = "itemCode"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + }) + InspectRequestMainExcelVO convert(InspectRequestMainDO mainDO, InspectRequestDetailDO detailDO); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestDetailDO.java index fe829bf3..976173e5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestDetailDO.java @@ -1,11 +1,12 @@ package com.win.module.wms.dal.dataobject.inspectRequest; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.sun.xml.bind.v2.TODO; +import com.win.framework.mybatis.core.dataobject.BaseDO; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; + import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.*; -import com.win.framework.mybatis.core.dataobject.BaseDO; /** * 检验申请子 DO @@ -26,6 +27,10 @@ public class InspectRequestDetailDO extends BaseDO { */ @TableId private Long id; + /** + * 单据号 + */ + private String number; /** * 包装号 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectJob/InspectJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectJob/InspectJobMainMapper.java index 2bf90c8b..5e04d2e2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectJob/InspectJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectJob/InspectJobMainMapper.java @@ -1,19 +1,20 @@ package com.win.module.wms.dal.mysql.inspectJob; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; 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.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.inspectJob.vo.InspectJobMainExportReqVO; import com.win.module.wms.controller.inspectJob.vo.InspectJobMainPageReqVO; import com.win.module.wms.controller.inspectJob.vo.InspectJobMainRespVO; import com.win.module.wms.dal.dataobject.inspectJob.InspectJobMainDO; -import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO; +import com.win.module.wms.enums.order.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; +import java.util.Collection; +import java.util.List; + /** * 检验任务主 Mapper * @@ -78,6 +79,12 @@ public interface InspectJobMainMapper extends BaseMapperX { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } + default Long selectByRequestNumber(String requestNumber) { + return selectCount(new LambdaQueryWrapperX() + .eq(InspectJobMainDO::getRequestNumber, requestNumber) + .ne(InspectJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); + } + default List selectList(InspectJobMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(InspectJobMainDO::getRequestNumber, reqVO.getRequestNumber()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectRequest/InspectRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectRequest/InspectRequestDetailMapper.java index 5c0c97a3..abab3641 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectRequest/InspectRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectRequest/InspectRequestDetailMapper.java @@ -1,17 +1,17 @@ package com.win.module.wms.dal.mysql.inspectRequest; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; 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.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailExportReqVO; import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailPageReqVO; import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 检验申请子 Mapper * @@ -60,4 +60,9 @@ public interface InspectRequestDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(InspectRequestDetailDO::getMasterId, masterId)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectRequest/InspectRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectRequest/InspectRequestMainMapper.java index 557e9982..ed6545ad 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectRequest/InspectRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/inspectRequest/InspectRequestMainMapper.java @@ -1,18 +1,17 @@ package com.win.module.wms.dal.mysql.inspectRequest; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; 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.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.inspectRequest.vo.InspectRequestMainExportReqVO; import com.win.module.wms.controller.inspectRequest.vo.InspectRequestMainPageReqVO; import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; -import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 检验申请主 Mapper * @@ -98,4 +97,9 @@ public interface InspectRequestMainMapper 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/inspectRequest/InspectRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestDetailService.java index 271f2f04..d4553b39 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestDetailService.java @@ -1,15 +1,14 @@ package com.win.module.wms.service.inspectRequest; -import java.util.*; -import javax.validation.*; - import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailCreateReqVO; -import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailExportReqVO; import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailPageReqVO; import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailUpdateReqVO; import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; -import com.win.framework.common.pojo.PageResult; + +import javax.validation.Valid; +import java.util.List; /** * 检验申请子 Service 接口 @@ -31,14 +30,14 @@ public interface InspectRequestDetailService { * * @param updateReqVO 更新信息 */ - void updateInspectRequestDetail(@Valid InspectRequestDetailUpdateReqVO updateReqVO); + int updateInspectRequestDetail(@Valid InspectRequestDetailUpdateReqVO updateReqVO); /** * 删除检验申请子 * * @param id 编号 */ - void deleteInspectRequestDetail(Long id); + int deleteInspectRequestDetail(Long id); /** * 获得检验申请子 @@ -51,10 +50,10 @@ public interface InspectRequestDetailService { /** * 获得检验申请子列表 * - * @param ids 编号 + * @param masterId 父id * @return 检验申请子列表 */ - List getInspectRequestDetailList(Collection ids); + List selectList(Long masterId); /** * 获得检验申请子分页 @@ -72,13 +71,4 @@ public interface InspectRequestDetailService { */ PageResult getInspectRequestDetailSenior(CustomConditions conditions); - - /** - * 获得检验申请子列表, 用于 Excel 导出 - * - * @param exportReqVO 查询条件 - * @return 检验申请子列表 - */ - List getInspectRequestDetailList(InspectRequestDetailExportReqVO exportReqVO); - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestDetailServiceImpl.java index 1a7a7af3..6910634f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestDetailServiceImpl.java @@ -1,24 +1,34 @@ package com.win.module.wms.service.inspectRequest; +import cn.hutool.core.exceptions.UtilException; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.common.pojo.PageResult; +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.dict.dto.DictDataRespDTO; import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailCreateReqVO; -import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailExportReqVO; import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailPageReqVO; import com.win.module.wms.controller.inspectRequest.vo.InspectRequestDetailUpdateReqVO; +import com.win.module.wms.convert.inspectRequest.InspectRequestDetailConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; +import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.mysql.inspectRequest.InspectRequestDetailMapper; +import com.win.module.wms.dal.mysql.inspectRequest.InspectRequestMainMapper; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import java.util.*; - -import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestDetailDO; -import com.win.framework.common.pojo.PageResult; - -import com.win.module.wms.convert.inspectRequest.InspectRequestDetailConvert; -import com.win.module.wms.dal.mysql.inspectRequest.InspectRequestDetailMapper; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.*; +import static com.win.module.wms.enums.ErrorCodeConstants.INSPECT_REQUEST_DETAIL_NOT_EXISTS; /** * 检验申请子 Service 实现类 @@ -31,37 +41,57 @@ public class InspectRequestDetailServiceImpl implements InspectRequestDetailServ @Resource private InspectRequestDetailMapper inspectRequestDetailMapper; + @Resource + private InspectRequestMainMapper inspectRequestMainMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private DictDataApi dictDataApi; + @Resource + private JobUtils jobUtils; + @Resource + private LocationService locationService; + @Resource + private TrendsApi trendsApi; @Override public Long createInspectRequestDetail(InspectRequestDetailCreateReqVO createReqVO) { // 插入 InspectRequestDetailDO inspectRequestDetail = InspectRequestDetailConvert.INSTANCE.convert(createReqVO); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); + InspectRequestMainDO mainDO = inspectRequestMainMapper.selectById(createReqVO.getMasterId()); + this.validatorDetail(inspectRequestDetail, mainDO, businesstypeDO); inspectRequestDetailMapper.insert(inspectRequestDetail); + trendsApi.createTrends(inspectRequestDetail.getId(), "inspectRequestDetail", "增加了到货检验子表", TrendsTypeEnum.CREATE); // 返回 return inspectRequestDetail.getId(); } @Override - public void updateInspectRequestDetail(InspectRequestDetailUpdateReqVO updateReqVO) { + public int updateInspectRequestDetail(InspectRequestDetailUpdateReqVO updateReqVO) { // 校验存在 validateInspectRequestDetailExists(updateReqVO.getId()); // 更新 InspectRequestDetailDO updateObj = InspectRequestDetailConvert.INSTANCE.convert(updateReqVO); - inspectRequestDetailMapper.updateById(updateObj); + trendsApi.createTrends(updateObj.getId(), "inspectRequestDetail", updateObj.toString(), TrendsTypeEnum.UPDATE); + return inspectRequestDetailMapper.updateById(updateObj); } @Override - public void deleteInspectRequestDetail(Long id) { + public int deleteInspectRequestDetail(Long id) { // 校验存在 - validateInspectRequestDetailExists(id); + InspectRequestDetailDO inspectRequestDetailDO = validateInspectRequestDetailExists(id); + trendsApi.createTrends(id, "purchasereceiptRequestDetail", inspectRequestDetailDO.toString(), TrendsTypeEnum.DELETE); // 删除 - inspectRequestDetailMapper.deleteById(id); + return inspectRequestDetailMapper.deleteById(id); } - private void validateInspectRequestDetailExists(Long id) { - if (inspectRequestDetailMapper.selectById(id) == null) { + private InspectRequestDetailDO validateInspectRequestDetailExists(Long id) { + InspectRequestDetailDO inspectRequestDetailDO = inspectRequestDetailMapper.selectById(id); + if (inspectRequestDetailDO == null) { throw exception(INSPECT_REQUEST_DETAIL_NOT_EXISTS); } + return inspectRequestDetailDO; } @Override @@ -70,8 +100,8 @@ public class InspectRequestDetailServiceImpl implements InspectRequestDetailServ } @Override - public List getInspectRequestDetailList(Collection ids) { - return inspectRequestDetailMapper.selectBatchIds(ids); + public List selectList(Long masterId) { + return inspectRequestDetailMapper.selectList(masterId); } @Override @@ -83,10 +113,56 @@ public class InspectRequestDetailServiceImpl implements InspectRequestDetailServ public PageResult getInspectRequestDetailSenior(CustomConditions conditions) { return inspectRequestDetailMapper.selectSenior(conditions); } - - @Override - public List getInspectRequestDetailList(InspectRequestDetailExportReqVO exportReqVO) { - return inspectRequestDetailMapper.selectList(exportReqVO); + + //校验子表公共方法(适用于新增/修改) + private void validatorDetail(InspectRequestDetailDO detailDo, InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + validatorIfInType(itembasicDO.getType(), businesstypeDO); + validatorLocation(detailDo.getFromLocationCode()); + validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); + validatorIfInFromLocationType(detailDo.getFromLocationCode(), businesstypeDO); + validatorLocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), mainDo.getBatch(), detailDo.getFromLocationCode(), detailDo.getInventoryStatus()); + } + + private ItembasicDO validatorItembasic(String itemCode) { + return itembasicService.selectItembasic(itemCode); + } + + //判断导入单位是否正确 + private void ifUomSuccess(String itemUom, String uom) { + DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(uom); + if (dictDataRespDTO != null) { + if (!itemUom.equals(dictDataRespDTO.getLabel())) { + throw new UtilException("提示单位" + uom + "错误,应该是" + itemUom); + } + } + } + + private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO) { + jobUtils.ifInType(itemType, businesstypeDO); + } + + private void validatorLocation(String fromLocationCode) { + locationService.selectLocation(fromLocationCode); + } + + private void validatorIfOutInventoryStatuses(String inventoryStatus, BusinesstypeDO businesstypeDO) { + jobUtils.ifOutInventoryStatuses(inventoryStatus, businesstypeDO); + } + + private void validatorIfInFromLocationType(String fromLocationCode, BusinesstypeDO businesstypeDO) { + jobUtils.ifInFromLocationType(fromLocationCode, businesstypeDO); + } + + private void validatorLocationReturnManagementAccuracy(String itemCode, String packingNumber, String batch, String fromLocationCode, String inventoryStatu) { + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.add(inventoryStatu); + jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingNumber, batch, fromLocationCode, inventoryStatus); } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java index 914724c5..a8af0abc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java @@ -80,6 +80,14 @@ public interface InspectRequestMainService { */ List getInspectRequestMainList(InspectRequestMainExportReqVO exportReqVO); + /** + * 获得采购收货申请主列表, 用于 Excel 导出 + * + * @param conditions 查询条件 + * @return 采购收货申请主列表 + */ + List getInspectRequestMainList(CustomConditions conditions); + /** * @author chenfang * @param datas 主子表数据 @@ -104,4 +112,43 @@ public interface InspectRequestMainService { * @return */ BigDecimal selectInspectType(BigDecimal sampleQty, HashMap ruleAll); + + /** + * 关闭到货检验申请主 + * + * @param id 到货检验申请主ID + * @return 更新数量 + */ + Integer closeInspectRequestMain(Long id); + + /** + * 提交到货检验申请主 + * + * @param id 到货检验申请主ID + * @return 更新数量 + */ + Integer submitInspectRequestMain(Long id); + + /** + * 审批通过到货检验申请主 + * + * @param id 到货检验申请主ID + * @return 更新数量 + */ + Integer agreeInspectRequestMain(Long id); + + /** + * 处理到货检验申请主 + * @param id + * @return + */ + Integer handleInspectRequestMain(Long id); + /** + * 审批拒绝到货检验申请主 + * + * @param id 到货检验申请主ID + * @return 更新数量 + */ + Integer abortInspectRequestMain(Long id); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java index b7a3b091..ef25caf1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.exceptions.UtilException; import cn.hutool.json.JSONArray; 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.framework.common.util.validation.ValidationUtils; @@ -25,6 +26,7 @@ import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.inspectJob.InspectJobMainMapper; import com.win.module.wms.dal.mysql.inspectRequest.InspectRequestDetailMapper; import com.win.module.wms.dal.mysql.inspectRequest.InspectRequestMainMapper; import com.win.module.wms.enums.request.RequestStatusEnum; @@ -49,8 +51,7 @@ import java.util.HashMap; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.INSPECT_REQUEST_IMPORT_LIST_IS_EMPTY; -import static com.win.module.wms.enums.ErrorCodeConstants.INSPECT_REQUEST_MAIN_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 检验申请主 Service 实现类 @@ -66,6 +67,8 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService @Resource private InspectRequestDetailMapper inspectRequestDetailMapper; @Resource + private InspectJobMainMapper inspectJobMainMapper; + @Resource private PurchasereceiptRecordMainService purchasereceiptRecordMainService; @Resource private SerialNumberApi serialNumberApi; @@ -104,6 +107,10 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); mainDO.setStatus(requestStatusState.getState().getCode()); inspectRequestMainMapper.insert(mainDO); + for (InspectRequestDetailDO detailDO : subDOList) { + detailDO.setNumber(number); + detailDO.setMasterId(mainDO.getId()); + } inspectRequestDetailMapper.insertBatch(subDOList); //调用自动执行方法 if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { @@ -159,6 +166,11 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService return inspectRequestMainMapper.selectList(exportReqVO); } + @Override + public List getInspectRequestMainList(CustomConditions conditions) { + return inspectRequestMainMapper.selectSeniorList(conditions); + } + @Override @Transactional public List importInspectRequestList(List datas, Integer mode, boolean updatePart) { @@ -207,6 +219,7 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService inspectRequestMainMapper.insert(mainDO); for(InspectRequestDetailDO inspectRequestDetailDO : subDOList) { inspectRequestDetailDO.setMasterId(mainDO.getId()); + inspectRequestDetailDO.setNumber(number); } inspectRequestDetailMapper.insertBatch(subDOList); } else if (existInspectRequestMainDO != null && mode != 2) { @@ -222,6 +235,94 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService return errorList; } + @Override + @Transactional + public Integer closeInspectRequestMain(Long id) { + // 校验存在存在下级单据 + InspectRequestMainDO mainDO = validateInspectRequestMainExists(id); + Long count = inspectJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(INSPECT_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.close(); + if(!flag) { + throw new ServiceException(INSPECT_REQUEST_CANNOT_CLOSE); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "inspectRequest", "关闭了到货校验申请", TrendsTypeEnum.UPDATE); + return inspectRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer submitInspectRequestMain(Long id) { + InspectRequestMainDO mainDO = validateInspectRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(INSPECT_REQUEST_CANNOT_SUBMIT); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, inspectRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "inspectRequest", "提交了到货校验申请", TrendsTypeEnum.UPDATE); + return inspectRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer agreeInspectRequestMain(Long id) { + // 校验存在 + InspectRequestMainDO mainDO = validateInspectRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(INSPECT_REQUEST_CANNOT_AGREE); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, inspectRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "inspectRequest", "审批同意了到货校验申请", TrendsTypeEnum.UPDATE); + return inspectRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer handleInspectRequestMain(Long id) { + // 校验存在 + InspectRequestMainDO mainDO = validateInspectRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.handle(); + if(!flag) { + throw new ServiceException(INSPECT_REQUEST_CANNOT_HANDLE); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用执行方法 + this.generateJob(mainDO, inspectRequestDetailMapper.selectList(mainDO.getId())); + trendsApi.createTrends(id, "inspectRequest", "执行了到货校验申请", TrendsTypeEnum.UPDATE); + return inspectRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer abortInspectRequestMain(Long id) { + // 校验存在 + InspectRequestMainDO mainDO = validateInspectRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.reject(); + if(!flag) { + throw new ServiceException(INSPECT_REQUEST_CANNOT_ABORT); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + trendsApi.createTrends(id, "inspectRequest", "审批拒绝了到货校验申请", TrendsTypeEnum.UPDATE); + return inspectRequestMainMapper.updateById(mainDO); + } + /** * 生成收货检验任务,不要改动事务传播方式,否则会有事务问题 * @param mainDO 收货检验主 @@ -331,10 +432,12 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService mainDO.setSampleQty(selectInspectType(mainDO.getReceiveQty(), rule)); } - private void validateInspectRequestMainExists(Long id) { - if (inspectRequestMainMapper.selectById(id) == null) { + private InspectRequestMainDO validateInspectRequestMainExists(Long id) { + InspectRequestMainDO mainDO = inspectRequestMainMapper.selectById(id); + if (mainDO == null) { throw exception(INSPECT_REQUEST_MAIN_NOT_EXISTS); } + return mainDO; } //校验主表公共方法(适用于新增/修改) @@ -356,6 +459,7 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService //校验子表公共方法(适用于新增/修改) private void validatorDetail(InspectRequestDetailDO detailDo, InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setNumber(mainDo.getNumber()); detailDo.setItemDesc1(itembasicDO.getDesc1()); detailDo.setItemDesc2(itembasicDO.getDesc2()); detailDo.setItemName(itembasicDO.getName()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java index ac394219..aa396012 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java @@ -323,7 +323,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); if(!flag) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_CLOSE); + throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_SUBMIT); } mainDO.setStatus(requestStatusState.getState().getCode()); //调用自动执行方法 @@ -342,7 +342,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); if(!flag) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_CLOSE); + throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_AGREE); } mainDO.setStatus(requestStatusState.getState().getCode()); //调用自动执行方法 @@ -361,7 +361,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.handle(); if(!flag) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_CLOSE); + throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_HANDLE); } mainDO.setStatus(requestStatusState.getState().getCode()); //调用执行方法 @@ -378,7 +378,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.reject(); if(!flag) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_CLOSE); + throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_ABORT); } mainDO.setStatus(requestStatusState.getState().getCode()); trendsApi.createTrends(id, "purchasereceiptRequest", "审批拒绝了采购收货申请", TrendsTypeEnum.UPDATE);