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 06f1a4c4..a996d7fa 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 @@ -50,6 +50,7 @@ public interface DictTypeConstants { String WORKSHOP_TYPE = "workshop_type";//车间类型 String PRODUCTION_LINE_TYPE = "production_line_type";//生产线类型 + String VEHICLE_PLATE_NUMBER = "vehicle_plate_number";//生产线类型 String WORK_STATION_TYPE = "work_station_type";//工位类型 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 0f08bf05..d6b2afb8 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 @@ -446,6 +446,14 @@ public interface ErrorCodeConstants { ErrorCode PURCHASERETURN_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_075_001, "采购退货申请子不存在"); ErrorCode PURCHASERETURN_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_075_002, "采购退货申请导入数据不能为空"); + ErrorCode PURCHASERETURN_REQUEST_STATUS_NOT_NEW = new ErrorCode(1_000_075_003, "采购退货不是新增状态"); + ErrorCode PURCHASERETURN_REQUEST_JOB_EXISTS = new ErrorCode(1_000_075_004, "采购退货存在采购退货任务单"); + ErrorCode PURCHASERETURN_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_075_005, "采购退货状态不支持关闭"); + ErrorCode PURCHASERETURN_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_075_006, "采购退货状态不支持提交"); + ErrorCode PURCHASERETURN_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_075_007, "采购退货状态不支持审批同意"); + ErrorCode PURCHASERETURN_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_075_008, "采购退货状态不支持处理"); + ErrorCode PURCHASERETURN_REQUEST_CANNOT_ABORT = new ErrorCode(1_000_075_009, "采购退货状态不支持审批拒绝"); + ErrorCode PURCHASERETURN_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_075_010, "采购退货状态不支持重新添加"); //采购退货任务主ErrorCode ErrorCode PURCHASERETURN_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_076_000, "采购退货任务主不存在"); //采购退货任务子ErrorCode @@ -716,10 +724,9 @@ public interface ErrorCodeConstants { ErrorCode OFFLINESETTLEMENT_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_116_000, "下线结算记录主不存在"); ErrorCode OFFLINESETTLEMENT_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_116_001, "下线结算记录子不存在"); //销售订单ErrorCode - ErrorCode SALE_MAIN_NOT_EXISTS = new ErrorCode(1_000_117_000, "销售订单主不存在"); + ErrorCode SALE_MAIN_NOT_EXISTS = new ErrorCode(1_000_117_000, "销售订单不存在"); ErrorCode SALE_DETAIL_NOT_EXISTS = new ErrorCode(1_000_117_001, "销售订单子不存在"); //发货计划ErrorCode - //发货计划导入不能为空 ErrorCode DELIVERPLAN_MAIN_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_020_015, "导入发货计划不能为空"); ErrorCode DELIVER_PLAN_MAIN_NOT_EXISTS = new ErrorCode(1_000_118_000, "发货计划主不存在"); ErrorCode DELIVER_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_000_118_001, "发货计划子不存在"); @@ -736,26 +743,47 @@ public interface ErrorCodeConstants { ErrorCode DELIVER_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_119_000, "发货申请主不存在"); ErrorCode DELIVER_REQUEST_NOT_EXISTS = new ErrorCode(1_000_119_000, "发货申请不存在"); ErrorCode DELIVER_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_119_001, "发货申请子不存在"); + ErrorCode DELIVER_REQUEST_JOB_EXISTS = new ErrorCode(1_000_119_002, "发货申请存在采购收货任务单"); + ErrorCode DELIVER_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_119_003, "发货申请状态不支持关闭"); + ErrorCode DELIVER_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_119_004, "发货申请状态不支持提交"); + ErrorCode DELIVER_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_119_005, "发货申请状态不支持审批同意"); + ErrorCode DELIVER_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_119_006, "发货申请状态不支持处理"); + ErrorCode DELIVER_REQUEST_CANNOT_ABORT = new ErrorCode(1_000_119_007, "发货申请状态不支持审批拒绝"); + //发货任务ErrorCode ErrorCode DELIVER_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_120_000, "发货任务主不存在{}"); ErrorCode DELIVER_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_120_001, "发货任务子不存在"); ErrorCode DELIVER_JOB_MAIN_STATUS_ERROR = new ErrorCode(1_000_120_003, "发货任务状态错误"); //发货记录ErrorCode ErrorCode DELIVER_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_121_000, "发货记录主不存在"); - ErrorCode DELIVER_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_121_001, "发货记录子不存在"); + ErrorCode DELIVER_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_121_001, "发货记录不存在"); ErrorCode DELIVER_RECORD_DETAIL_EXCEPTION = new ErrorCode(1_000_121_002, "发货记录问题:【{}】"); ErrorCode DELIVER_ORDER_DETAIL_EXCEPTION = new ErrorCode(1_000_121_003, "发货订单问题:【{}】"); //客户收货申请ErrorCode ErrorCode CUSTOMERRECEIPT_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_122_000, "客户收货申请主不存在"); ErrorCode CUSTOMERRECEIPT_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_122_001, "客户收货申请主不存在"); + ErrorCode CUSTOMERRECEIPT_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_122_002, "客户收货申请不支持重新添加"); + ErrorCode CUSTOMERRECEIPT_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_122_003, "客户收货申请不支持关闭"); + ErrorCode CUSTOMERRECEIPT_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_122_004, "客户收货申请不支持提交"); + ErrorCode CUSTOMERRECEIPT_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_122_005, "客户收货申请不支持审批同意"); + ErrorCode CUSTOMERRECEIPT_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_122_006, "客户收货申请不支持执行"); + ErrorCode CUSTOMERRECEIPT_REQUEST_CANNOT_REFUSED = new ErrorCode(1_000_122_007, "客户收货申请不支持审批驳回"); //客户收货记录ErrorCode ErrorCode CUSTOMERRECEIPT_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_123_000, "客户收货记录主不存在"); ErrorCode CUSTOMERRECEIPT_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_123_001, "客户收货记录子不存在"); //客户退货申请ErrorCode - ErrorCode CUSTOMERRETURN_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_124_000, "客户退货申请主不存在"); + ErrorCode CUSTOMERRETURN_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_124_000, "客户退货申请不存在"); ErrorCode CUSTOMERRETURN_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_124_001, "客户退货申请子不存在"); + ErrorCode CUSTOMERRETURN_REQUEST_NOT_EXISTS = new ErrorCode(1_000_124_002, "客户退货申请不存在"); + ErrorCode CUSTOMERRETURN_REQUEST_STATUS_NOT_NEW = new ErrorCode(1_000_124_003, "客户退货不是新增状态"); + ErrorCode CUSTOMERRETURN_REQUEST_JOB_EXISTS = new ErrorCode(1_000_124_004, "客户退货存在采购收货任务单"); + ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_CLOSE = new ErrorCode(1_000_124_005, "客户退货状态不支持关闭"); + ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_SUBMIT = new ErrorCode(1_000_124_006, "客户退货状态不支持提交"); + ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_AGREE = new ErrorCode(1_000_124_007, "客户退货状态不支持审批同意"); + ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_HANDLE = new ErrorCode(1_000_124_008, "客户退货状态不支持处理"); + ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_ABORT = new ErrorCode(1_000_124_009, "客户退货状态不支持审批拒绝"); + ErrorCode CUSTOMERRETURN_REQUEST_CANNOT_RE_ADD = new ErrorCode(1_000_124_010, "客户退货状态不支持重新添加"); - ErrorCode CUSTOMERRETURN_REQUEST_NOT_EXISTS = new ErrorCode(1_000_124_000, "客户退货申请不存在"); //客户退货任务ErrorCode ErrorCode CUSTOMERRETURN_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_125_000, "客户退货任务主不存在"); ErrorCode CUSTOMERRETURN_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_125_001, "客户退货任务子不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/CustomerreceiptRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/CustomerreceiptRequestMainController.java index 0eaa52cb..a0740874 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/CustomerreceiptRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/CustomerreceiptRequestMainController.java @@ -1,9 +1,13 @@ package com.win.module.wms.controller.customerreceiptRequest; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.customerreceiptRequest.vo.*; +import com.win.module.wms.dal.dataobject.customerreceiptRequest.CustomerreceiptRequestDetailDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.customerreceiptRequest.CustomerreceiptRequestDetailService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -26,7 +30,6 @@ 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.customerreceiptRequest.vo.*; import com.win.module.wms.dal.dataobject.customerreceiptRequest.CustomerreceiptRequestMainDO; import com.win.module.wms.convert.customerreceiptRequest.CustomerreceiptRequestMainConvert; import com.win.module.wms.service.customerreceiptRequest.CustomerreceiptRequestMainService; @@ -42,6 +45,8 @@ public class CustomerreceiptRequestMainController { @Resource private AdminUserApi userApi; + @Resource + private CustomerreceiptRequestDetailService customerreceiptRequestDetailService; @PostMapping("/create") @Operation(summary = "创建客户收货申请主") @@ -113,13 +118,102 @@ public class CustomerreceiptRequestMainController { HttpServletResponse response) throws IOException { List list = customerreceiptRequestMainService.getCustomerreceiptRequestMainList(exportReqVO); // 导出 Excel - List datas = CustomerreceiptRequestMainConvert.INSTANCE.convertList02(list); - for(CustomerreceiptRequestMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "客户收货申请.xls", "数据", CustomerreceiptRequestMainExcelVO.class, resultList,mapDropDown); + } + + @GetMapping("/export-excel-senior") + @Operation(summary = "导出客户收货申请主 Excel") + @PreAuthorize("@ss.hasPermission('wms:customerreceipt-request-main:export')") + @OperateLog(type = EXPORT) + public void exportCustomerreceiptRequestMainSeniorExcel(@Valid CustomerreceiptRequestMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = customerreceiptRequestMainService.getCustomerreceiptRequestMainList(exportReqVO); + // 导出 Excel + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "客户收货申请.xls", "数据", CustomerreceiptRequestMainExcelVO.class, resultList,mapDropDown); + } + + private List getExcelVo(List list, Map mapDropDown) { + String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE); + mapDropDown.put(6, transferMode); + String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS); + mapDropDown.put(17, requestStatus); + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(20, locationType); + mapDropDown.put(21, locationType); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(27, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(39, uom); + List resultList = new ArrayList<>(); + // 导出 + for(CustomerreceiptRequestMainDO mainDO : list) { + List subList = customerreceiptRequestDetailService.selectList(mainDO.getId()); + for(CustomerreceiptRequestDetailDO detailDO : subList) { + CustomerreceiptRequestMainExcelVO vo = CustomerreceiptRequestMainConvert.INSTANCE.convert(mainDO, detailDO); + vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname()); + vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname()); + vo.setCreatorDetail(userApi.getUser(Long.valueOf(vo.getCreatorDetail())).getNickname()); + vo.setUpdaterDetail(userApi.getUser(Long.valueOf(vo.getUpdaterDetail())).getNickname()); + resultList.add(vo); + } } - ExcelUtils.write(response, "客户收货申请主.xls", "数据", CustomerreceiptRequestMainExcelVO.class, datas); + return resultList; + } + @PutMapping("/close") + @Operation(summary = "关闭客户收货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreceipt-request-main:close')") + public CommonResult closeCustomerreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = customerreceiptRequestMainService.closeCustomerreceiptRequestMain(id); + return success(count > 0); + } + + @PutMapping("/reAdd") + @Operation(summary = "重新添加客户收货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreceipt-request-main:reAdd')") + public CommonResult openCustomerreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = customerreceiptRequestMainService.reAddCustomerreceiptRequestMain(id); + return success(count > 0); } + @PutMapping("/submit") + @Operation(summary = "提交客户收货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreceipt-request-main:submit')") + public CommonResult submitCustomerreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = customerreceiptRequestMainService.submitCustomerreceiptRequestMain(id); + return success(count > 0); + } + + @PutMapping("/agree") + @Operation(summary = "审批通过客户收货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreceipt-request-main:agree')") + public CommonResult agreeCustomerreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = customerreceiptRequestMainService.agreeCustomerreceiptRequestMain(id); + return success(count > 0); + } + + @PutMapping("/handle") + @Operation(summary = "处理客户收货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreceipt-request-main:handle')") + public CommonResult handleCustomerreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = customerreceiptRequestMainService.handleCustomerreceiptRequestMain(id); + return success(count > 0); + } + + @PutMapping("/refused") + @Operation(summary = "审批驳回客户收货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreceipt-request-main:refused')") + public CommonResult refusedCustomerreceiptRequestMain(@RequestParam("id") Long id) { + Integer count = customerreceiptRequestMainService.refusedCustomerreceiptRequestMain(id); + return success(count > 0); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/vo/CustomerreceiptRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/vo/CustomerreceiptRequestMainCreateReqVO.java index a3ffb825..d2cae1a1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/vo/CustomerreceiptRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/vo/CustomerreceiptRequestMainCreateReqVO.java @@ -1,12 +1,20 @@ package com.win.module.wms.controller.customerreceiptRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.Valid; +import java.util.List; + @Schema(description = "管理后台 - 客户收货申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class CustomerreceiptRequestMainCreateReqVO extends CustomerreceiptRequestMainBaseVO { + + @SubObject + @Schema(description = "子表数据") + private List<@Valid CustomerreceiptRequestDetailCreateReqVO> subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/vo/CustomerreceiptRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/vo/CustomerreceiptRequestMainExcelVO.java index 5efe4112..17be8c5a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/vo/CustomerreceiptRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreceiptRequest/vo/CustomerreceiptRequestMainExcelVO.java @@ -2,6 +2,8 @@ package com.win.module.wms.controller.customerreceiptRequest.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + +import java.math.BigDecimal; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; @@ -21,6 +23,9 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class CustomerreceiptRequestMainExcelVO { + @ExcelProperty("单据号") + private String number; + @ExcelProperty("发货记录单号") private String deliverRequestNumber; @@ -40,8 +45,7 @@ public class CustomerreceiptRequestMainExcelVO { @DictFormat("transfer_mode") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String transferMode; - @ExcelProperty(value = "车牌号", converter = DictConvert.class) - @DictFormat("vehicle_plate_number") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty("车牌号") private String vehiclePlateNumber; @ExcelProperty("从仓库代码") @@ -50,9 +54,6 @@ public class CustomerreceiptRequestMainExcelVO { @ExcelProperty("到仓库代码") private String toWarehouseCode; - @ExcelProperty("单据号") - private String number; - @ExcelProperty("业务类型") private String businessType; @@ -98,16 +99,74 @@ public class CustomerreceiptRequestMainExcelVO { @ExcelProperty("到库区代码范围") private String toAreaCodes; - @ExcelProperty("自动提交") - private String autoCommit; + //子表 +// @ExcelProperty("销售订单号") +// private String soNumber; +// +// @ExcelProperty("销售订单行") +// private String soLine; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String inventoryStatus; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("备注") + private String remarkDetail; + + @ExcelProperty("创建时间") + private LocalDateTime createTimeDetail; + + @ExcelProperty("创建者用户名") + private String creatorDetail; + + @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 updateTimeDetail; + + @ExcelProperty("最后更新者用户名") + private String updaterDetail; - @ExcelProperty("自动通过") - private String autoAgree; + @ExcelProperty("从货主代码") + private String fromOwnerCode; - @ExcelProperty("自动执行") - private String autoExecute; + @ExcelProperty("到货主代码") + private String toOwnerCode; - @ExcelProperty("直接生成记录") - private String directCreateRecord; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/CustomerreturnJobMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/CustomerreturnJobMainController.java index 4b6f9a25..88667451 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/CustomerreturnJobMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/CustomerreturnJobMainController.java @@ -163,4 +163,39 @@ public class CustomerreturnJobMainController { return success(countByStatus); } + @PutMapping("/accept") + @Operation(summary = "承接客户退货任务") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreturn-request-main:accept')") + public CommonResult acceptCustomerreturnJobMain(@RequestParam("id") Long id) { + Integer count = customerreturnJobMainService.acceptCustomerreturnJobMain(id); + return success(count > 0); + } + + @PutMapping("/abandon") + @Operation(summary = "取消承接客户退货任务") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreturn-request-main:abandon')") + public CommonResult abandonCustomerreturnRequestMain(@RequestParam("id") Long id) { + Integer count = customerreturnJobMainService.abandonCustomerreturnJobMain(id); + return success(count > 0); + } + + @PutMapping("/close") + @Operation(summary = "关闭客户退货任务主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreturn-request-main:close')") + public CommonResult closeCustomerreturnRequestMain(@RequestParam("id") Long id) { + Integer count = customerreturnJobMainService.closeCustomerreturnJobMain(id); + return success(count > 0); + } + + @PutMapping("/execute") + @Operation(summary = "执行客户退货任务主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreturn-request-main:execute')") + public CommonResult closeCustomerreturnRequestMain(@Valid @RequestBody CustomerreturnJobMainUpdateReqVO updateReqVO) { + Integer count = customerreturnJobMainService.executeCustomerreturnJobMain(updateReqVO); + return success(count > 0); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailBaseVO.java index bd1cf816..966b78de 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobDetailBaseVO.java @@ -81,4 +81,19 @@ public class CustomerreturnJobDetailBaseVO { @Schema(description = "创建者Id") private String creator; + @Schema(description = "实际数量") + private BigDecimal handleQty; + + @Schema(description = "到包装号") + private String toPackingNumber; + + @Schema(description = "到器具号") + private String toContainerNumber; + + @Schema(description = "到际批次") + private String toBatch; + + @Schema(description = "到库存状态") + private String toInventoryStatus; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobMainUpdateReqVO.java index 8f57ea31..40638631 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnJob/vo/CustomerreturnJobMainUpdateReqVO.java @@ -3,10 +3,15 @@ package com.win.module.wms.controller.customerreturnJob.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import javax.validation.Valid; +import java.util.List; + @Schema(description = "管理后台 - 客户退货任务主更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class CustomerreturnJobMainUpdateReqVO extends CustomerreturnJobMainBaseVO { + @Schema(description = "子表数据") + private List<@Valid CustomerreturnJobDetailUpdateReqVO> subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/CustomerreturnRecordMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/CustomerreturnRecordMainController.java index ee2059d8..ad36ae38 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/CustomerreturnRecordMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/CustomerreturnRecordMainController.java @@ -1,9 +1,18 @@ package com.win.module.wms.controller.customerreturnRecord; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainExcelVO; +import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordMainExcelVO; +import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordMainExportReqVO; import com.win.module.wms.controller.customerreturnRecord.vo.*; +import com.win.module.wms.convert.customerreturnRecord.CustomerreturnRecordMainConvert; +import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordDetailDO; +import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordMainDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.customerreturnRecord.CustomerreturnRecordDetailService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -25,10 +34,6 @@ 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.customerreturnRecord.vo.*; -import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordMainDO; -import com.win.module.wms.convert.customerreturnRecord.CustomerreturnRecordMainConvert; import com.win.module.wms.service.customerreturnRecord.CustomerreturnRecordMainService; @Tag(name = "管理后台 - 客户退货记录主") @@ -41,31 +46,34 @@ public class CustomerreturnRecordMainController { private CustomerreturnRecordMainService customerreturnRecordMainService; @Resource - private AdminUserApi userApi; + private CustomerreturnRecordDetailService customerreturnRecordDetailService; - @PostMapping("/create") - @Operation(summary = "创建客户退货记录主") - @PreAuthorize("@ss.hasPermission('wms:customerreturn-record-main:create')") - public CommonResult createCustomerreturnRecordMain(@Valid @RequestBody CustomerreturnRecordMainCreateReqVO createReqVO) { - return success(customerreturnRecordMainService.createCustomerreturnRecordMain(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新客户退货记录主") - @PreAuthorize("@ss.hasPermission('wms:customerreturn-record-main:update')") - public CommonResult updateCustomerreturnRecordMain(@Valid @RequestBody CustomerreturnRecordMainUpdateReqVO updateReqVO) { - customerreturnRecordMainService.updateCustomerreturnRecordMain(updateReqVO); - return success(true); - } + @Resource + private AdminUserApi userApi; - @DeleteMapping("/delete") - @Operation(summary = "删除客户退货记录主") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('wms:customerreturn-record-main:delete')") - public CommonResult deleteCustomerreturnRecordMain(@RequestParam("id") Long id) { - customerreturnRecordMainService.deleteCustomerreturnRecordMain(id); - return success(true); - } +// @PostMapping("/create") +// @Operation(summary = "创建客户退货记录主") +// @PreAuthorize("@ss.hasPermission('wms:customerreturn-record-main:create')") +// public CommonResult createCustomerreturnRecordMain(@Valid @RequestBody CustomerreturnRecordMainCreateReqVO createReqVO) { +// return success(customerreturnRecordMainService.createCustomerreturnRecordMain(createReqVO)); +// } +// +// @PutMapping("/update") +// @Operation(summary = "更新客户退货记录主") +// @PreAuthorize("@ss.hasPermission('wms:customerreturn-record-main:update')") +// public CommonResult updateCustomerreturnRecordMain(@Valid @RequestBody CustomerreturnRecordMainUpdateReqVO updateReqVO) { +// customerreturnRecordMainService.updateCustomerreturnRecordMain(updateReqVO); +// return success(true); +// } +// +// @DeleteMapping("/delete") +// @Operation(summary = "删除客户退货记录主") +// @Parameter(name = "id", description = "编号", required = true) +// @PreAuthorize("@ss.hasPermission('wms:customerreturn-record-main:delete')") +// public CommonResult deleteCustomerreturnRecordMain(@RequestParam("id") Long id) { +// customerreturnRecordMainService.deleteCustomerreturnRecordMain(id); +// return success(true); +// } @GetMapping("/get") @Operation(summary = "获得客户退货记录主") @@ -94,7 +102,7 @@ public class CustomerreturnRecordMainController { } @PostMapping("/senior") @Operation(summary = "高级搜索获得客户退货记录主分页") - @PreAuthorize("@ss.hasPermission('wms:accountcalendar:query')") + @PreAuthorize("@ss.hasPermission('wms:customerreturn-record-main:query')") public CommonResult> getCustomerreturnRecordMainSenior(@Valid @RequestBody CustomConditions conditions) { PageResult pageResult = customerreturnRecordMainService.getCustomerreturnRecordMainSenior(conditions); PageResult result = CustomerreturnRecordMainConvert.INSTANCE.convertPage(pageResult); @@ -113,13 +121,51 @@ public class CustomerreturnRecordMainController { HttpServletResponse response) throws IOException { List list = customerreturnRecordMainService.getCustomerreturnRecordMainList(exportReqVO); // 导出 Excel - List datas = CustomerreturnRecordMainConvert.INSTANCE.convertList02(list); - for(CustomerreturnRecordMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "客户退货记录主.xls", "数据", CustomerreturnRecordMainExcelVO.class, datas); + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "客户退货记录主.xls", "数据", CustomerreturnRecordMainExcelVO.class, resultList,mapDropDown); } + @GetMapping("/export-excel-senior") + @Operation(summary = "导出客户收货记录 Excel") + @PreAuthorize("@ss.hasPermission('wms:customerreturn-record-main:export')") + @OperateLog(type = EXPORT) + public void exportCustomerreturnRecordMainSeniorExcel(@Valid CustomerreturnRecordMainExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = customerreturnRecordMainService.getCustomerreturnRecordMainList(exportReqVO); + // 导出 Excel + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "客户收货申请.xls", "数据", CustomerreturnRecordMainExcelVO.class, resultList,mapDropDown); + } + + private List getExcelVo(List list, Map mapDropDown) { + String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE); + mapDropDown.put(6, transferMode); + String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS); + mapDropDown.put(17, requestStatus); + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(24, locationType); + mapDropDown.put(25, locationType); + String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(28, available); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(33, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(55, uom); + String[] interfaceTypeDetail = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INTERFACE_TYPE); + mapDropDown.put(56, interfaceTypeDetail); + List resultList = new ArrayList<>(); + // 导出 + for(CustomerreturnRecordMainDO mainDO : list) { + List subList = customerreturnRecordDetailService.selectList(mainDO.getId()); + for(CustomerreturnRecordDetailDO detailDO : subList) { + CustomerreturnRecordMainExcelVO vo = CustomerreturnRecordMainConvert.INSTANCE.convert(mainDO, detailDO); + vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname()); + vo.setCreatorDetail(userApi.getUser(Long.valueOf(vo.getCreatorDetail())).getNickname()); + resultList.add(vo); + } + } + return resultList; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailBaseVO.java index a85a2509..bb4fd4b3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailBaseVO.java @@ -124,4 +124,7 @@ public class CustomerreturnRecordDetailBaseVO { @Schema(description = "到批次") private String toBatch; + @Schema(description = "主表id") + private String masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailExcelVO.java index 74630e5a..a067c8f2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailExcelVO.java @@ -123,4 +123,7 @@ public class CustomerreturnRecordDetailExcelVO { @ExcelProperty("到批次") private String toBatch; + @ExcelProperty("主表id") + private String masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailExportReqVO.java index 10a31d4f..b86dafdb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailExportReqVO.java @@ -115,4 +115,6 @@ public class CustomerreturnRecordDetailExportReqVO { @Schema(description = "到批次") private String toBatch; + @Schema(description = "主表ID") + private String masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailPageReqVO.java index b38c22db..335b4e1b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordDetailPageReqVO.java @@ -117,4 +117,7 @@ public class CustomerreturnRecordDetailPageReqVO extends PageParam { @Schema(description = "到批次") private String toBatch; + @Schema(description = "主表ID") + private String masterId; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainBaseVO.java index 0e66c392..7f6563bd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainBaseVO.java @@ -97,8 +97,8 @@ public class CustomerreturnRecordMainBaseVO { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime createTime; - @Schema(description = "创建者Id") - private String creatorId; + @Schema(description = "创建者") + private String creator; @Schema(description = "代码") private String code; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java index d63365da..3d7997f3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExcelVO.java @@ -2,6 +2,8 @@ package com.win.module.wms.controller.customerreturnRecord.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + +import java.math.BigDecimal; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; @@ -22,7 +24,6 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class CustomerreturnRecordMainExcelVO { - @ExcelProperty("任务单号") private String jobNumber; @@ -45,8 +46,7 @@ public class CustomerreturnRecordMainExcelVO { @DictFormat("transfer_mode") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String transferMode; - @ExcelProperty(value = "车牌号", converter = DictConvert.class) - @DictFormat("vehicle_plate_number") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty("车牌号") private String vehiclePlateNumber; @ExcelProperty("从仓库代码") @@ -93,7 +93,7 @@ public class CustomerreturnRecordMainExcelVO { private LocalDateTime createTime; @ExcelProperty("创建者Id") - private String creatorId; + private String creator; @ExcelProperty("代码") private String code; @@ -112,15 +112,107 @@ public class CustomerreturnRecordMainExcelVO { @ExcelProperty("到月台代码") private String toDockCode; - @ExcelProperty("是否可用") + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat("true_false") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String available; @ExcelProperty("从库区代码范围") private String fromAreaCodes; + //子表 + @ExcelProperty("销售订单号") + private String soNumber; + @ExcelProperty("销售订单行") + private String soLine; - @ExcelProperty("创建者ID") - private String creator; + @ExcelProperty("从批次") + private String fromBatch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String inventoryStatus; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty("从器具号") + private String fromContainerNumber; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("从库位组代码") + private String fromLocationGroupCode; + + @ExcelProperty("从库区代码") + private String fromAreaCode; + + @ExcelProperty("到货主代码") + private String toOwnerCode; + + @ExcelProperty("到器具号") + private String toContainerNumber; + + @ExcelProperty("到库位代码") + private String toLocationCode; + + @ExcelProperty("到库位组代码") + private String toLocationGroupCode; + + @ExcelProperty("到库区代码") + private String toAreaCode; + + @ExcelProperty("单价") + private BigDecimal singlePrice; + + @ExcelProperty("金额") + private BigDecimal amount; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("备注") + private String remarkDetail; + + @ExcelProperty("创建时间") + private LocalDateTime createTimeDetail; + + @ExcelProperty("创建者Id") + private String creatorDetail; + + @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(value = "接口类型", converter = DictConvert.class) + @DictFormat("interface_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String interfaceTypeDetail; + + @ExcelProperty("任务明细ID") + private String jobDetailId; + + @ExcelProperty("从包装号") + private String fromPackingNumber; + + @ExcelProperty("到包装号") + private String toPackingNumber; + @ExcelProperty("到批次") + private String toBatch; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExportReqVO.java index 52099b32..5158501a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainExportReqVO.java @@ -85,8 +85,8 @@ public class CustomerreturnRecordMainExportReqVO { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; - @Schema(description = "创建者Id") - private String creatorId; + @Schema(description = "创建者") + private String creator; @Schema(description = "代码") private String code; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainPageReqVO.java index 3b322b96..c91f3884 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRecord/vo/CustomerreturnRecordMainPageReqVO.java @@ -87,8 +87,8 @@ public class CustomerreturnRecordMainPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; - @Schema(description = "创建者Id") - private String creatorId; + @Schema(description = "创建者") + private String creator; @Schema(description = "代码") private String code; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/CustomerreturnRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/CustomerreturnRequestMainController.java index 2517bd95..ce2637ae 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/CustomerreturnRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/CustomerreturnRequestMainController.java @@ -126,37 +126,67 @@ public class CustomerreturnRequestMainController { HttpServletResponse response) throws IOException { List list = customerreturnRequestMainService.getCustomerreturnRequestMainList(exportReqVO); // 导出 Excel - List datas = CustomerreturnRequestMainConvert.INSTANCE.convertList02(list); - for(CustomerreturnRequestMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "客户退货申请主.xls", "数据", CustomerreturnRequestMainExcelVO.class, resultList,mapDropDown); + } + + @PostMapping("/export-excel-senior") + @Operation(summary = "导出发货计划主 Excel") + @PreAuthorize("@ss.hasPermission('wms:deliver-plan-main:export')") + @OperateLog(type = EXPORT) + public void exportPurchasereceiptRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = customerreturnRequestMainService.getCustomerreturnRequestMainList(conditions); + // 导出 Excel + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + ExcelUtils.write(response, "客户退货申请主.xls", "数据", CustomerreturnRequestMainExcelVO.class, resultList,mapDropDown); + } + + private List getExcelVo(List list, Map mapDropDown) { + String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE); + mapDropDown.put(7, transferMode); + String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS); + mapDropDown.put(16, requestStatus); + String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE); + mapDropDown.put(20, locationType); + mapDropDown.put(23, locationType); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(29, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(41, uom); + List resultList = new ArrayList<>(); + // 导出 + for(CustomerreturnRequestMainDO mainDO : list) { + List subList = customerreturnRequestDetailService.selectList(mainDO.getId()); + for(CustomerreturnRequestDetailDO detailDO : subList) { + CustomerreturnRequestMainExcelVO vo = CustomerreturnRequestMainConvert.INSTANCE.convert(mainDO, detailDO); + vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname()); + vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname()); + resultList.add(vo); + } } - ExcelUtils.write(response, "客户退货申请主.xls", "数据", CustomerreturnRequestMainExcelVO.class, datas); + return resultList; } @GetMapping("/get-import-template") - @Operation(summary = "获得导入制客户退货信息模板") + @Operation(summary = "获得导入客户退货申请信息模板") public void importTemplate(HttpServletResponse response) throws IOException { // 手动创建导出 demo - List list = Arrays.asList( - - ); + List list = Arrays.asList(); Map mapDropDown = new HashMap<>(); String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE); mapDropDown.put(3, transferMode); - String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); - mapDropDown.put(13, inventoryStatus); String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); mapDropDown.put(12, uom); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(13, inventoryStatus); // 输出 ExcelUtils.write(response, "客户退货申请信息导入模板.xls", "客户退货申请信息列表", CustomerreturnRequestImportVO.class, list,mapDropDown); } - - @PostMapping("/import") - @Operation(summary = "导入采购索赔基本信息") + @Operation(summary = "导入客户退货申请基本信息") @Parameters({ @Parameter(name = "file", description = "Excel 文件", required = true), @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @@ -174,7 +204,7 @@ public class CustomerreturnRequestMainController { 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); @@ -197,4 +227,57 @@ public class CustomerreturnRequestMainController { return success(result); } + @PutMapping("/close") + @Operation(summary = "关闭客户退货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreturn-request-main:close')") + public CommonResult closeCustomerreturnRequestMain(@RequestParam("id") Long id) { + Integer count = customerreturnRequestMainService.closeCustomerreturnRequestMain(id); + return success(count > 0); + } + + @PutMapping("/reAdd") + @Operation(summary = "重新添加客户退货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreturn-request-main:reAdd')") + public CommonResult openCustomerreturnRequestMain(@RequestParam("id") Long id) { + Integer count = customerreturnRequestMainService.reAddCustomerreturnRequestMain(id); + return success(count > 0); + } + + @PutMapping("/submit") + @Operation(summary = "提交客户退货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreturn-request-main:submit')") + public CommonResult submitCustomerreturnRequestMain(@RequestParam("id") Long id) { + Integer count = customerreturnRequestMainService.submitCustomerreturnRequestMain(id); + return success(count > 0); + } + + @PutMapping("/agree") + @Operation(summary = "审批通过客户退货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreturn-request-main:agree')") + public CommonResult agreeCustomerreturnRequestMain(@RequestParam("id") Long id) { + Integer count = customerreturnRequestMainService.agreeCustomerreturnRequestMain(id); + return success(count > 0); + } + + @PutMapping("/handle") + @Operation(summary = "处理客户退货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreturn-request-main:handle')") + public CommonResult handleCustomerreturnRequestMain(@RequestParam("id") Long id) { + Integer count = customerreturnRequestMainService.handleCustomerreturnRequestMain(id); + return success(count > 0); + } + + @PutMapping("/refused") + @Operation(summary = "审批拒绝客户退货申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:customerreturn-request-main:refused')") + public CommonResult abortCustomerreturnRequestMain(@RequestParam("id") Long id) { + Integer count = customerreturnRequestMainService.refusedCustomerreturnRequestMain(id); + return success(count > 0); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestDetailPageReqVO.java index b8f28ca3..b0e682e8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestDetailPageReqVO.java @@ -88,4 +88,6 @@ public class CustomerreturnRequestDetailPageReqVO extends PageParam { @Schema(description = "到库位代码") private String toLocationCode; + @Schema(description = "主表ID") + private Long masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportVO.java index f795350f..9fe1ea8a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestImportVO.java @@ -17,13 +17,14 @@ import java.math.BigDecimal; @NoArgsConstructor @Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 public class CustomerreturnRequestImportVO { -//主表字段 - @ExcelProperty("发货记录单号") - private String deliverRecordNumber; + //主表字段 @ExcelProperty("单据号") private String number; + @ExcelProperty("发货记录单号") + private String deliverRecordNumber; + @ExcelProperty("承运商") private String carrierCode; @@ -33,6 +34,7 @@ public class CustomerreturnRequestImportVO { @ExcelProperty("车牌号") private String vehiclePlateNumber; + //子表字段 @ExcelProperty("销售订单号") private String soNumber; @@ -63,11 +65,10 @@ public class CustomerreturnRequestImportVO { @DictFormat(DictTypeConstants.INVENTORY_STATUS) private String inventoryStatus; - @ExcelProperty("从库位代码") + @ExcelProperty("来源库位") private String fromLocationCode; @ExcelProperty("到库位代码") private String toLocationCode; - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainBaseVO.java index 37e068f9..9d27148c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainBaseVO.java @@ -44,18 +44,15 @@ public class CustomerreturnRequestMainBaseVO { @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) @OnlyOne - @NotBlank(message = "单据号不能为空") private String number; @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED) - @NotBlank(message = "业务类型不能为空") private String businessType; @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; @@ -87,22 +84,18 @@ public class CustomerreturnRequestMainBaseVO { private String fromWarehouseCode; @Schema(description = "从库位类型范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotBlank(message = "从库位类型范围不能为空") private String fromLocationTypes; @Schema(description = "从库区代码范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotBlank(message = "从库区代码范围不能为空") private String fromAreaCodes; @Schema(description = "到仓库代码") private String toWarehouseCode; @Schema(description = "到库位类型范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotBlank(message = "到库位类型范围不能为空") private String toLocationTypes; @Schema(description = "到库区代码范围", requiredMode = Schema.RequiredMode.REQUIRED) - @NotBlank(message = "到库区代码范围不能为空") private String toAreaCodes; @Schema(description = "到月台代码") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainExcelVO.java index b4c4097a..c1154f9e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/customerreturnRequest/vo/CustomerreturnRequestMainExcelVO.java @@ -1,7 +1,10 @@ package com.win.module.wms.controller.customerreturnRequest.vo; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + +import java.math.BigDecimal; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; @@ -21,6 +24,9 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class CustomerreturnRequestMainExcelVO { + @ExcelProperty("单据号") + private String number; + @ExcelProperty("申请单号") private String requestNumber; @@ -43,13 +49,9 @@ public class CustomerreturnRequestMainExcelVO { @DictFormat("transfer_mode") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String transferMode; - @ExcelProperty(value = "车牌号", converter = DictConvert.class) - @DictFormat("vehicle_plate_number") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty("车牌号") private String vehiclePlateNumber; - @ExcelProperty("单据号") - private String number; - @ExcelProperty("业务类型") private String businessType; @@ -57,15 +59,18 @@ public class CustomerreturnRequestMainExcelVO { private String remark; @ExcelProperty("创建时间") + @ColumnWidth(value = 21) private LocalDateTime createTime; @ExcelProperty("创建者用户名") private String creator; @ExcelProperty("申请时间") + @ColumnWidth(value = 21) private LocalDateTime requestTime; @ExcelProperty("截止时间") + @ColumnWidth(value = 21) private LocalDateTime dueTime; @ExcelProperty("部门") @@ -76,6 +81,7 @@ public class CustomerreturnRequestMainExcelVO { private String status; @ExcelProperty("最后更新时间") + @ColumnWidth(value = 21) private LocalDateTime updateTime; @ExcelProperty("最后更新者用户名") @@ -116,4 +122,75 @@ public class CustomerreturnRequestMainExcelVO { @ExcelProperty("直接生成记录") private String directCreateRecord; + //子表 + @ExcelProperty("销售订单号") + private String soNumber; + + @ExcelProperty("销售订单行") + private String soLine; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat("inventory_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String inventoryStatus; + + @ExcelProperty("从货主代码") + private String fromOwnerCode; + + @ExcelProperty("从库位代码") + private String fromLocationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("备注") + private String remarkDetail; + + @ExcelProperty("创建时间") + @ColumnWidth(value = 21) + private LocalDateTime createTimeDetail; + + @ExcelProperty("创建者用户名") + private String creatorDetail; + + @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("最后更新时间") + @ColumnWidth(value = 21) + private LocalDateTime updateTimeDetail; + + @ExcelProperty("最后更新者用户名") + private String updaterDetail; + + @ExcelProperty("到货主代码") + private String toOwnerCode; + + @ExcelProperty("到库位代码") + private String toLocationCode; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/ItempackagingController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/ItempackagingController.java index 5c96af81..ade0b819 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/ItempackagingController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/ItempackagingController.java @@ -8,12 +8,8 @@ import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; -import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO; -import com.win.module.wms.controller.itembasic.vo.ItembasicRespVO; import com.win.module.wms.controller.itempackaging.vo.*; -import com.win.module.wms.convert.itembasic.ItembasicConvert; import com.win.module.wms.convert.itempackaging.ItempackagingConvert; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.itempackaging.ItempackagingService; @@ -173,17 +169,17 @@ public class ItempackagingController { String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); mapDropDown.put(1, uom); String[] description = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); - mapDropDown.put(2, description);; + mapDropDown.put(2, description); String[] altPackUnit1 = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); - mapDropDown.put(5, altPackUnit1);; + mapDropDown.put(4, altPackUnit1); String[] altPackUnit2 = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); - mapDropDown.put(7, altPackUnit2);; + mapDropDown.put(6, altPackUnit2); String[] altPackUnit3 = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); - mapDropDown.put(9, altPackUnit3);; + mapDropDown.put(8, altPackUnit3); String[] altPackUnit4 = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); - mapDropDown.put(11, altPackUnit4);; + mapDropDown.put(10, altPackUnit4); String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); - mapDropDown.put(13, available);; + mapDropDown.put(12, available); // 输出 ExcelUtils.write(response, "物品包装信息导入模板.xls", "物品包装信息列表", ItempackagingImportExcelVO.class, list,mapDropDown); } @@ -196,16 +192,18 @@ public class ItempackagingController { @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) @PreAuthorize("@ss.hasPermission('wms:itempackaging:import')") - public void importExcel(HttpServletResponse response, - @RequestParam("file") MultipartFile file, - @RequestParam(value = "mode") Integer mode, - @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + 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, ItempackagingImportExcelVO.class); - List errorList = itempackagingService.itempackagingimportDocumentList(list, mode, updatePart); + List errorList = itempackagingService.itempackagingimportDocumentList(list, mode, updatePart); Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { String url = ExcelUtils.writeLocalFile("物品包装信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); returnMap.put("errorFile", url); - }} + } + return success(returnMap); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/vo/ItempackagingBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/vo/ItempackagingBaseVO.java index f9a2699f..3281dfdb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/vo/ItempackagingBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/vo/ItempackagingBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.itempackaging.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -18,6 +19,7 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY public class ItempackagingBaseVO { @Schema(description = "id", example = "id") + @OnlyOne private Long id; @Schema(description = "物品代码", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/vo/ItempackagingImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/vo/ItempackagingImportErrorVO.java new file mode 100644 index 00000000..5c7a2928 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/vo/ItempackagingImportErrorVO.java @@ -0,0 +1,88 @@ +package com.win.module.wms.controller.itempackaging.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.Builder; +import lombok.Data; +import lombok.ToString; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + + +/** + * 采购索赔申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@Builder +@ToString(callSuper = true) +public class ItempackagingImportErrorVO { + + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty(value = "包装单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String stdPackUnit; + + @ExcelProperty("包装数量") + private BigDecimal stdPackQty; + + @ExcelProperty(value = "替代包装单位1", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String altPackUnit1; + + @ExcelProperty("替代包装量1") + private BigDecimal altPackQty1; + + @ExcelProperty(value = "替代包装单位2", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String altPackUnit2; + + @ExcelProperty("替代包装量2") + private BigDecimal altPackQty2; + + @ExcelProperty(value = "替代包装单位3", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String altPackUnit3; + + @ExcelProperty("替代包装量3") + private BigDecimal altPackQty3; + + @ExcelProperty(value = "替代包装单位4", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String altPackUnit4; + + @ExcelProperty("替代包装量4") + private BigDecimal altPackQty4; + + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String available; + + @ExcelProperty(value = "生效时间") + @ColumnWidth(value = 16) + private LocalDateTime activeTime; + + @ExcelProperty(value = "失效时间") + @ColumnWidth(value = 16) + private LocalDateTime expireTime; + + @ExcelProperty(value = "备注") + private String remark; + + @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/itempackaging/vo/ItempackagingImportExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/vo/ItempackagingImportExcelVO.java index 3f2f4c3f..7b4fbc9d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/vo/ItempackagingImportExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itempackaging/vo/ItempackagingImportExcelVO.java @@ -35,33 +35,33 @@ public class ItempackagingImportExcelVO { @ExcelProperty("包装数量") private BigDecimal stdPackQty; - @ExcelProperty(value = "替代包装单位", converter = DictConvert.class) + @ExcelProperty(value = "替代包装单位1", converter = DictConvert.class) @DictFormat(DictTypeConstants.UOM) private String altPackUnit1; - @ExcelProperty("替代包装量") - private String altPackQty1; + @ExcelProperty("替代包装量1") + private BigDecimal altPackQty1; - @ExcelProperty(value = "替代包装单位", converter = DictConvert.class) + @ExcelProperty(value = "替代包装单位2", converter = DictConvert.class) @DictFormat(DictTypeConstants.UOM) private String altPackUnit2; - @ExcelProperty("替代包装量") - private String altPackQty2; + @ExcelProperty("替代包装量2") + private BigDecimal altPackQty2; - @ExcelProperty(value = "替代包装单位", converter = DictConvert.class) + @ExcelProperty(value = "替代包装单位3", converter = DictConvert.class) @DictFormat(DictTypeConstants.UOM) private String altPackUnit3; - @ExcelProperty("替代包装量") - private String altPackQty3; + @ExcelProperty("替代包装量3") + private BigDecimal altPackQty3; - @ExcelProperty(value = "替代包装单位", converter = DictConvert.class) + @ExcelProperty(value = "替代包装单位4", converter = DictConvert.class) @DictFormat(DictTypeConstants.UOM) private String altPackUnit4; - @ExcelProperty("替代包装量") - private String altPackQty4; + @ExcelProperty("替代包装量4") + private BigDecimal altPackQty4; @ExcelProperty(value = "是否可用", converter = DictConvert.class) @DictFormat(DictTypeConstants.TRUE_FALSE) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanDetailBaseVO.java index bc9feb0e..3bfee81b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanDetailBaseVO.java @@ -40,7 +40,6 @@ public class PurchasePlanDetailBaseVO { private String remark; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "创建时间不能为空") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime createTime; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreceiptRequest/CustomerreceiptRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreceiptRequest/CustomerreceiptRequestDetailConvert.java index 576847f1..9337eaf9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreceiptRequest/CustomerreceiptRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreceiptRequest/CustomerreceiptRequestDetailConvert.java @@ -34,4 +34,5 @@ public interface CustomerreceiptRequestDetailConvert { 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/customerreceiptRequest/CustomerreceiptRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreceiptRequest/CustomerreceiptRequestMainConvert.java index 4f780cb2..fc1e8d1a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreceiptRequest/CustomerreceiptRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreceiptRequest/CustomerreceiptRequestMainConvert.java @@ -8,7 +8,10 @@ import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRe import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainExcelVO; import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainRespVO; import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.customerreceiptRequest.CustomerreceiptRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.customerreceiptRequest.CustomerreceiptRequestMainDO; @@ -34,4 +37,18 @@ public interface CustomerreceiptRequestMainConvert { 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"), + @Mapping(source = "detailDO.remark", target = "remarkDetail"), + @Mapping(source = "detailDO.createTime", target = "createTimeDetail"), + @Mapping(source = "detailDO.creator", target = "creatorDetail"), + @Mapping(source = "detailDO.updateTime", target = "updateTimeDetail"), + @Mapping(source = "detailDO.updater", target = "updaterDetail"), + }) + CustomerreceiptRequestMainExcelVO convert(CustomerreceiptRequestMainDO mainDO, CustomerreceiptRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnJob/CustomerreturnJobDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnJob/CustomerreturnJobDetailConvert.java index 1dd733f9..c7afe1ab 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnJob/CustomerreturnJobDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnJob/CustomerreturnJobDetailConvert.java @@ -8,6 +8,8 @@ import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobDetai import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobDetailExcelVO; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobDetailRespVO; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobMainDO; +import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestDetailDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobDetailDO; @@ -34,4 +36,5 @@ public interface CustomerreturnJobDetailConvert { List convertList02(List list); + CustomerreturnJobDetailDO convert(CustomerreturnRequestDetailDO customerreturnRequestDetailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnJob/CustomerreturnJobMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnJob/CustomerreturnJobMainConvert.java index d0bb9c59..973df9ef 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnJob/CustomerreturnJobMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnJob/CustomerreturnJobMainConvert.java @@ -8,6 +8,7 @@ import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainC import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainExcelVO; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainRespVO; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobMainDO; @@ -34,4 +35,5 @@ public interface CustomerreturnJobMainConvert { List convertList02(List list); + CustomerreturnJobMainDO convert(CustomerreturnRequestMainDO mainDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordMainConvert.java index bcc45bbe..7726f954 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRecord/CustomerreturnRecordMainConvert.java @@ -8,7 +8,10 @@ import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecor import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordMainExcelVO; import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordMainRespVO; import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordMainUpdateReqVO; +import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordMainDO; @@ -33,5 +36,17 @@ public interface CustomerreturnRecordMainConvert { PageResult convertPage(PageResult page); List convertList02(List list); - + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.interfaceType", target = "interfaceType"), + @Mapping(source = "detailDO.remark", target = "remarkDetail"), + @Mapping(source = "detailDO.createTime", target = "createTimeDetail"), + @Mapping(source = "detailDO.creator", target = "creatorDetail"), + @Mapping(source = "detailDO.interfaceType", target = "interfaceTypeDetail"), + @Mapping(source = "detailDO.code", target = "code"), + }) + CustomerreturnRecordMainExcelVO convert(CustomerreturnRecordMainDO mainDO, CustomerreturnRecordDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRequest/CustomerreturnRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRequest/CustomerreturnRequestMainConvert.java index 8dadfbe8..3b9d02e4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRequest/CustomerreturnRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/customerreturnRequest/CustomerreturnRequestMainConvert.java @@ -4,11 +4,11 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainCreateReqVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainExcelVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainRespVO; -import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainUpdateReqVO; +import com.win.module.wms.controller.customerreturnRequest.vo.*; +import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; @@ -32,6 +32,27 @@ public interface CustomerreturnRequestMainConvert { PageResult convertPage(PageResult page); - List convertList02(List list); + List convertList02(List list); + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + CustomerreturnRequestImportErrorVO convert(CustomerreturnRequestMainCreateReqVO mainVo, CustomerreturnRequestDetailDO detailDO); + + List convertList03(List subList); + + @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"), + @Mapping(source = "detailDO.remark", target = "remarkDetail"), + @Mapping(source = "detailDO.createTime", target = "createTimeDetail"), + @Mapping(source = "detailDO.creator", target = "creatorDetail"), + @Mapping(source = "detailDO.updateTime", target = "updateTimeDetail"), + @Mapping(source = "detailDO.updater", target = "updaterDetail"), + }) + CustomerreturnRequestMainExcelVO convert(CustomerreturnRequestMainDO mainDO, CustomerreturnRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/itempackaging/ItempackagingConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/itempackaging/ItempackagingConvert.java index 743879fe..37b47ab1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/itempackaging/ItempackagingConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/itempackaging/ItempackagingConvert.java @@ -2,8 +2,15 @@ package com.win.module.wms.convert.itempackaging; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.itempackaging.vo.*; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainCreateReqVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainExcelVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO; import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -31,4 +38,7 @@ public interface ItempackagingConvert { List convertList02(List list); ItempackagingDO convert(ItempackagingImportExcelVO itempackaging); + + ItempackagingImportErrorVO convert2(ItempackagingImportExcelVO bean); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestMainConvert.java index 2c32bdf4..827c8f73 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestMainConvert.java @@ -32,6 +32,7 @@ public interface PurchasereceiptRequestMainConvert { PageResult convertPage(PageResult page); List convertList02(List list); + @Mappings({ @Mapping(source = "mainVo.number", target = "number"), }) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRecord/CustomerreturnRecordDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRecord/CustomerreturnRecordDetailDO.java index 998f38eb..52e13ec6 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRecord/CustomerreturnRecordDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRecord/CustomerreturnRecordDetailDO.java @@ -1,5 +1,6 @@ package com.win.module.wms.dal.dataobject.customerreturnRecord; +import com.sun.xml.bind.v2.TODO; import lombok.*; import java.util.*; import java.math.BigDecimal; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRecord/CustomerreturnRecordMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRecord/CustomerreturnRecordMainDO.java index 5278e15c..edbe40ee 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRecord/CustomerreturnRecordMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRecord/CustomerreturnRecordMainDO.java @@ -1,5 +1,6 @@ package com.win.module.wms.dal.dataobject.customerreturnRecord; +import com.sun.xml.bind.v2.TODO; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -134,7 +135,7 @@ public class CustomerreturnRecordMainDO extends BaseDO { /** * 创建者Id */ - private String creatorId; + private String creator; /** * 扩展属性 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestDetailDO.java index 643fa231..23368e66 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/customerreturnRequest/CustomerreturnRequestDetailDO.java @@ -1,10 +1,8 @@ package com.win.module.wms.dal.dataobject.customerreturnRequest; +import com.sun.xml.bind.v2.TODO; 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; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java index e08f8175..dbdc2231 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java @@ -48,7 +48,10 @@ public interface BalanceMapper extends BaseMapperX { result = this.insert(balanceDO); } else {//存在只更新数量 BigDecimal qtyNew = reqVO.getQty(); - BigDecimal amountNew = reqVO.getAmount(); + BigDecimal amountNew = BigDecimal.ZERO; + if(reqVO.getAmount() != null){ + amountNew = reqVO.getAmount(); + } //出库变负数 if (InventoryActionEnum.OUT.equals(inventoryAction)) { qtyNew = BigDecimal.ZERO.subtract(qtyNew); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerdock/CustomerdockMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerdock/CustomerdockMapper.java index d2515973..f262c227 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerdock/CustomerdockMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerdock/CustomerdockMapper.java @@ -70,4 +70,8 @@ public interface CustomerdockMapper extends BaseMapperX { default List selectSeniorList(CustomConditions conditions) { return selectList(QueryWrapperUtils.structure(conditions)); } + + default CustomerdockDO selectByCustomerCode(String customerCode,String customerDockCode){ + return selectOne(CustomerdockDO::getCustomerCode,customerCode,CustomerdockDO::getCode,customerDockCode); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreceiptRequest/CustomerreceiptRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreceiptRequest/CustomerreceiptRequestDetailMapper.java index 51547f13..29e24c6a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreceiptRequest/CustomerreceiptRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreceiptRequest/CustomerreceiptRequestDetailMapper.java @@ -78,4 +78,9 @@ public interface CustomerreceiptRequestDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(CustomerreceiptRequestDetailDO::getMasterId, masterId)); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobDetailMapper.java index 1374b853..018aa497 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobDetailMapper.java @@ -73,4 +73,8 @@ public interface CustomerreturnJobDetailMapper extends BaseMapperX selectList(Long masterId){ + return selectList(new LambdaQueryWrapperX() + .eq(CustomerreturnJobDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobMainMapper.java index fa610b96..6a042f9e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnJob/CustomerreturnJobMainMapper.java @@ -10,7 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainExportReqVO; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainPageReqVO; import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobMainDO; -import com.win.module.wms.dal.dataobject.inventorymoveJob.InventorymoveJobMainDO; +import com.win.module.wms.enums.order.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; /** @@ -134,4 +134,22 @@ public interface CustomerreturnJobMainMapper extends BaseMapperX() + .eq(CustomerreturnJobMainDO::getRequestNumber, number) + .ne(CustomerreturnJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); + } + + /** + * 根据类型数和申请单号组查询任务数量 + * @param types + * @param requestNumber + * @return + */ + default Long selectListCount(Collection types, String requestNumber) { + return selectCount(new LambdaQueryWrapperX() + .in(CustomerreturnJobMainDO::getStatus, types) + .eq(CustomerreturnJobMainDO::getRequestNumber, requestNumber)); + + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordDetailMapper.java index c4f6ba4a..548d3e15 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordDetailMapper.java @@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordDetailExportReqVO; import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordDetailPageReqVO; +import com.win.module.wms.dal.dataobject.customerreceiptRequest.CustomerreceiptRequestDetailDO; import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -55,6 +56,7 @@ public interface CustomerreturnRecordDetailMapper extends BaseMapperX selectSenior(CustomConditions conditions) { @@ -95,7 +97,12 @@ public interface CustomerreturnRecordDetailMapper extends BaseMapperX selectList(Long masterId){ + return selectList(new LambdaQueryWrapperX() + .eq(CustomerreturnRecordDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordMainMapper.java index b88c438d..e718a19f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRecord/CustomerreturnRecordMainMapper.java @@ -44,7 +44,7 @@ public interface CustomerreturnRecordMainMapper extends BaseMapperX selectPage(CustomerreturnRequestDetailPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eq(CustomerreturnRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(CustomerreturnRequestDetailDO::getSoNumber, reqVO.getSoNumber()) .eqIfPresent(CustomerreturnRequestDetailDO::getSoLine, reqVO.getSoLine()) .eqIfPresent(CustomerreturnRequestDetailDO::getPackingNumber, reqVO.getPackingNumber()) @@ -77,5 +79,8 @@ public interface CustomerreturnRequestDetailMapper extends BaseMapperX selectList(Long masterId) { + return selectList(new LambdaQueryWrapperX() + .eq(CustomerreturnRequestDetailDO::getMasterId, masterId)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRequest/CustomerreturnRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRequest/CustomerreturnRequestMainMapper.java index 18418b2d..7193bab9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRequest/CustomerreturnRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/customerreturnRequest/CustomerreturnRequestMainMapper.java @@ -11,6 +11,7 @@ import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequ import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestMainPageReqVO; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; +import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import org.apache.ibatis.annotations.Mapper; /** @@ -95,4 +96,11 @@ public interface CustomerreturnRequestMainMapper extends BaseMapperX selectSeniorList(CustomConditions conditions){ + return selectList(QueryWrapperUtils.structure(conditions)); + } + + default CustomerreturnRequestMainDO selectByNumber(String number) { + return selectOne(CustomerreturnRequestMainDO::getNumber, number); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/businesstype/BusinesstypeServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/businesstype/BusinesstypeServiceImpl.java index 16fff3d7..6ba431d1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/businesstype/BusinesstypeServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/businesstype/BusinesstypeServiceImpl.java @@ -265,8 +265,9 @@ public class BusinesstypeServiceImpl implements BusinesstypeService { public BusinesstypeDO selectBusinesstypeExist(String pcode){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("code",pcode); + queryWrapper.eq("available","TRUE"); BusinesstypeDO businesstypeDO = businesstypeMapper.selectOne(queryWrapper); - if(businesstypeDO != null && "TRUE".equals(businesstypeDO.getAvailable())){ + if(businesstypeDO != null){ return businesstypeDO; }else { throw exception(BUSINESSTYPE_NOT_EXISTS); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockService.java index 6f07b208..999acb3e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockService.java @@ -46,6 +46,14 @@ public interface CustomerdockService { */ CustomerdockDO getCustomerdock(Long id); + /** + * 获得客户月台 + * + * @param id 编号 + * @return 客户月台 + */ + CustomerdockDO getCustomerdockByCustomerCode(String customerCode,String customerDockCode); + /** * 获得客户月台列表 * diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockServiceImpl.java index 882e44e6..c345ce65 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerdock/CustomerdockServiceImpl.java @@ -76,6 +76,10 @@ public class CustomerdockServiceImpl implements CustomerdockService { public CustomerdockDO getCustomerdock(Long id) { return customerdockMapper.selectById(id); } + @Override + public CustomerdockDO getCustomerdockByCustomerCode(String customerCode,String customerDockCode){ + return customerdockMapper.selectByCustomerCode(customerCode,customerDockCode); + } @Override public List getCustomerdockList(CustomConditions conditions) { @@ -215,8 +219,9 @@ public class CustomerdockServiceImpl implements CustomerdockService { public CustomerdockDO CustomerExist(String code) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("code",code); + queryWrapper.eq("available","TRUE"); CustomerdockDO customerdockDO =customerdockMapper.selectOne(queryWrapper); - if(customerdockDO != null&& "TRUE".equals(customerdockDO.getAvailable())){ + if(customerdockDO != null){ return customerdockDO; }else { throw exception(CUSTOMERDOCK_NOT_EXISTS); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestDetailService.java index b49d7ff6..dbbf7c9d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestDetailService.java @@ -79,4 +79,11 @@ public interface CustomerreceiptRequestDetailService { */ List getCustomerreceiptRequestDetailList(CustomerreceiptRequestDetailExportReqVO exportReqVO); + /** + * 根据主表id查询 + * + * @param masterId 主表id + * @return + */ + List selectList(Long masterId); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestDetailServiceImpl.java index 5e4fd175..689af7ab 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestDetailServiceImpl.java @@ -87,4 +87,8 @@ public class CustomerreceiptRequestDetailServiceImpl implements CustomerreceiptR return customerreceiptRequestDetailMapper.selectList(exportReqVO); } + @Override + public List selectList(Long masterId) { + return customerreceiptRequestDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestMainService.java index 4a81865f..344c4b4f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestMainService.java @@ -79,4 +79,49 @@ public interface CustomerreceiptRequestMainService { */ List getCustomerreceiptRequestMainList(CustomerreceiptRequestMainExportReqVO exportReqVO); + /** + * 关闭客户收货申请主 + * + * @param id 客户收货申请主ID + * @return 更新数量 + */ + Integer closeCustomerreceiptRequestMain(Long id); + + /** + * 重新添加客户收货申请主 + * + * @param id 客户收货申请主ID + * @return 更新数量 + */ + Integer reAddCustomerreceiptRequestMain(Long id); + + /** + * 提交客户收货申请主 + * + * @param id 客户收货申请主ID + * @return 更新数量 + */ + Integer submitCustomerreceiptRequestMain(Long id); + + /** + * 审批通过客户收货申请主 + * + * @param id 客户收货申请主ID + * @return 更新数量 + */ + Integer agreeCustomerreceiptRequestMain(Long id); + + /** + * 处理客户收货申请主 + * @param id + * @return + */ + Integer handleCustomerreceiptRequestMain(Long id); + /** + * 审批驳回客户收货申请主 + * + * @param id 客户收货申请主ID + * @return 更新数量 + */ + Integer refusedCustomerreceiptRequestMain(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestMainServiceImpl.java index 825d1714..0aa26956 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreceiptRequest/CustomerreceiptRequestMainServiceImpl.java @@ -1,17 +1,43 @@ package com.win.module.wms.service.customerreceiptRequest; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainCreateReqVO; import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainExportReqVO; import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainPageReqVO; import com.win.module.wms.controller.customerreceiptRequest.vo.CustomerreceiptRequestMainUpdateReqVO; +import com.win.module.wms.controller.customerreceiptRecord.vo.CustomerreceiptRecordDetailCreateReqVO; +import com.win.module.wms.controller.customerreceiptRecord.vo.CustomerreceiptRecordMainCreateReqVO; +import com.win.module.wms.convert.customerreceiptRecord.CustomerreceiptRecordDetailConvert; +import com.win.module.wms.convert.customerreceiptRecord.CustomerreceiptRecordMainConvert; +import com.win.module.wms.convert.customerreceiptRequest.CustomerreceiptRequestDetailConvert; +import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.customerreceiptRequest.CustomerreceiptRequestMainDO; +import com.win.module.wms.dal.dataobject.customerreceiptRequest.CustomerreceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.customerreceiptRecord.CustomerreceiptRecordDetailMapper; +import com.win.module.wms.dal.mysql.customerreceiptRecord.CustomerreceiptRecordMainMapper; +import com.win.module.wms.dal.mysql.customerreceiptRequest.CustomerreceiptRequestDetailMapper; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.enums.request.RequestStatusState; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; + +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.*; -import com.win.module.wms.dal.dataobject.customerreceiptRequest.CustomerreceiptRequestMainDO; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.convert.customerreceiptRequest.CustomerreceiptRequestMainConvert; @@ -19,6 +45,7 @@ import com.win.module.wms.dal.mysql.customerreceiptRequest.CustomerreceiptReques 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.CUSTOMERRECEIPT_REQUEST_CANNOT_SUBMIT; /** * 客户收货申请主 Service 实现类 @@ -32,11 +59,59 @@ public class CustomerreceiptRequestMainServiceImpl implements CustomerreceiptReq @Resource private CustomerreceiptRequestMainMapper customerreceiptRequestMainMapper; + @Resource + private CustomerreceiptRequestDetailMapper customerreceiptRequestDetailMapper; + + @Resource + private CustomerreceiptRecordMainMapper customerreceiptRecordMainMapper; + + @Resource + private CustomerreceiptRecordDetailMapper customerreceiptRecordDetailMapper; + + @Resource + private TrendsApi trendsApi; + + @Resource + private SerialNumberApi serialNumberApi; + + @Resource + private JobUtils jobUtils; + + @Resource + private RequestsettingService requestsettingService; + @Override public Long createCustomerreceiptRequestMain(CustomerreceiptRequestMainCreateReqVO createReqVO) { // 插入 CustomerreceiptRequestMainDO customerreceiptRequestMain = CustomerreceiptRequestMainConvert.INSTANCE.convert(createReqVO); + List subDOList = CustomerreceiptRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); + String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_RECEIPT_REQUEST.getCode()); + customerreceiptRequestMain.setNumber(number); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("CustomerreceiptRequest"); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO.getAutoCommit(), requestsettingDO.getAutoAgree(), requestsettingDO.getAutoExecute()); + customerreceiptRequestMain.setStatus(requestStatusState.getState().getCode()); + customerreceiptRequestMain.setAutoCommit(requestsettingDO.getAutoCommit()); + customerreceiptRequestMain.setAutoAgree(requestsettingDO.getAutoAgree()); + customerreceiptRequestMain.setAutoExecute(requestsettingDO.getAutoExecute()); + customerreceiptRequestMain.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerreceiptRequest"); + customerreceiptRequestMain.setBusinessType(businesstypeDO.getCode()); + customerreceiptRequestMain.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + customerreceiptRequestMain.setToLocationTypes(businesstypeDO.getInLocationTypes()); + customerreceiptRequestMain.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + customerreceiptRequestMain.setToAreaCodes(businesstypeDO.getInAreaCodes()); + customerreceiptRequestMain.setRequestTime(LocalDateTime.now()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(customerreceiptRequestMain.getStatus())) { + this.generateRecord(customerreceiptRequestMain,subDOList); + } customerreceiptRequestMainMapper.insert(customerreceiptRequestMain); + for (CustomerreceiptRequestDetailDO customerreceiptRequestDetailDO : subDOList) { + customerreceiptRequestDetailDO.setMasterId(customerreceiptRequestMain.getId()); + customerreceiptRequestDetailDO.setNumber(number); + } + trendsApi.createTrends(requestsettingDO.getId(), "CustomerreceiptRequest", "增加了客户收货申请", TrendsTypeEnum.CREATE); // 返回 return customerreceiptRequestMain.getId(); } @@ -48,6 +123,7 @@ public class CustomerreceiptRequestMainServiceImpl implements CustomerreceiptReq // 更新 CustomerreceiptRequestMainDO updateObj = CustomerreceiptRequestMainConvert.INSTANCE.convert(updateReqVO); customerreceiptRequestMainMapper.updateById(updateObj); + trendsApi.createTrends(updateReqVO.getId(), "CustomerreceiptRequest", "修改了客户收货申请", TrendsTypeEnum.UPDATE); } @Override @@ -58,9 +134,12 @@ public class CustomerreceiptRequestMainServiceImpl implements CustomerreceiptReq customerreceiptRequestMainMapper.deleteById(id); } - private void validateCustomerreceiptRequestMainExists(Long id) { - if (customerreceiptRequestMainMapper.selectById(id) == null) { + private CustomerreceiptRequestMainDO validateCustomerreceiptRequestMainExists(Long id) { + CustomerreceiptRequestMainDO customerreceiptRequestMainDO = customerreceiptRequestMainMapper.selectById(id); + if (customerreceiptRequestMainDO == null) { throw exception(CUSTOMERRECEIPT_REQUEST_MAIN_NOT_EXISTS); + } else { + return customerreceiptRequestMainDO; } } @@ -73,10 +152,12 @@ public class CustomerreceiptRequestMainServiceImpl implements CustomerreceiptReq public List getCustomerreceiptRequestMainList(Collection ids) { return customerreceiptRequestMainMapper.selectBatchIds(ids); } + @Override public PageResult getCustomerreceiptRequestMainSenior(CustomConditions conditions) { return customerreceiptRequestMainMapper.selectSenior(conditions); } + @Override public PageResult getCustomerreceiptRequestMainPage(CustomerreceiptRequestMainPageReqVO pageReqVO) { return customerreceiptRequestMainMapper.selectPage(pageReqVO); @@ -87,4 +168,159 @@ public class CustomerreceiptRequestMainServiceImpl implements CustomerreceiptReq return customerreceiptRequestMainMapper.selectList(exportReqVO); } + /** + * 关闭客户收货申请 + * @param id 客户收货申请主ID + * @return + */ + @Override + @Transactional + public Integer closeCustomerreceiptRequestMain(Long id) { + // 校验存在存在下级单据 + CustomerreceiptRequestMainDO mainDO = validateCustomerreceiptRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.close(); + if (!flag) { + throw new ServiceException(CUSTOMERRECEIPT_REQUEST_CANNOT_CLOSE); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "CustomerreceiptRequest", "关闭了客户收货申请", TrendsTypeEnum.UPDATE); + return customerreceiptRequestMainMapper.updateById(mainDO); + } + + /** + * 打开客户收货申请 + * @param id 客户收货申请主ID + * @return + */ + @Override + @Transactional + public Integer reAddCustomerreceiptRequestMain(Long id) { + // 校验存在存在下级单据 + CustomerreceiptRequestMainDO mainDO = validateCustomerreceiptRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.reAdd(); + if (!flag) { + throw new ServiceException(CUSTOMERRECEIPT_REQUEST_CANNOT_RE_ADD); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "CustomerreceiptRequest", "打开了客户收货申请", TrendsTypeEnum.UPDATE); + return customerreceiptRequestMainMapper.updateById(mainDO); + } + + /** + * 提交客户收货申请 + * @param id 客户收货申请主ID + * @return + */ + @Override + @Transactional + public Integer submitCustomerreceiptRequestMain(Long id) { + CustomerreceiptRequestMainDO mainDO = validateCustomerreceiptRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); + if (!flag) { + throw new ServiceException(CUSTOMERRECEIPT_REQUEST_CANNOT_SUBMIT); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateRecord(mainDO, customerreceiptRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "CustomerreceiptRequest", "提交了客户收货申请", TrendsTypeEnum.UPDATE); + return customerreceiptRequestMainMapper.updateById(mainDO); + } + + /** + * 审批同意客户收货申请 + * @param id 客户收货申请主ID + * @return + */ + @Override + @Transactional + public Integer agreeCustomerreceiptRequestMain(Long id) { + // 校验存在 + CustomerreceiptRequestMainDO mainDO = validateCustomerreceiptRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); + if (!flag) { + throw new ServiceException(CUSTOMERRECEIPT_REQUEST_CANNOT_AGREE); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateRecord(mainDO, customerreceiptRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "CustomerreceiptRequest", "审批同意了客户收货申请", TrendsTypeEnum.UPDATE); + return customerreceiptRequestMainMapper.updateById(mainDO); + } + + /** + * 执行客户收货申请 + * @param id 客户收货申请主ID + * @return + */ + @Override + @Transactional + public Integer handleCustomerreceiptRequestMain(Long id) { + // 校验存在 + CustomerreceiptRequestMainDO mainDO = validateCustomerreceiptRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.handle(); + if (!flag) { + throw new ServiceException(CUSTOMERRECEIPT_REQUEST_CANNOT_HANDLE); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用执行方法 + this.generateRecord(mainDO, customerreceiptRequestDetailMapper.selectList(mainDO.getId())); + trendsApi.createTrends(id, "CustomerreceiptRequest", "执行了客户收货申请", TrendsTypeEnum.UPDATE); + return customerreceiptRequestMainMapper.updateById(mainDO); + } + + /** + * 审批驳回客户收货申请 + * @param id 客户收货申请主ID + * @return + */ + @Override + @Transactional + public Integer refusedCustomerreceiptRequestMain(Long id) { + // 校验存在 + CustomerreceiptRequestMainDO mainDO = validateCustomerreceiptRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.refused(); + if (!flag) { + throw new ServiceException(CUSTOMERRECEIPT_REQUEST_CANNOT_REFUSED); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + trendsApi.createTrends(id, "CustomerreceiptRequest", "审批驳回了客户收货申请", TrendsTypeEnum.UPDATE); + return customerreceiptRequestMainMapper.updateById(mainDO); + } + + /** + * 生成客户收货记录,不要改动事务传播方式,否则会有事务问题 + * + * @param mainDO 客户收货主 + * @param detailDOList 客户收货子 + */ + private void generateRecord(CustomerreceiptRequestMainDO mainDO, List detailDOList) { + if ("TRUE".equals(mainDO.getDirectCreateRecord())) { + CustomerreceiptRecordMainCreateReqVO customerreceiptRecordMainCreateReqVO = new CustomerreceiptRecordMainCreateReqVO(); + BeanUtils.copyProperties(mainDO, customerreceiptRecordMainCreateReqVO); + customerreceiptRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); + String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_RECEIPT_REQUEST.getCode()); + customerreceiptRecordMainCreateReqVO.setNumber(number); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerreceiptRecord"); + customerreceiptRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); + customerreceiptRecordMainMapper.insert(CustomerreceiptRecordMainConvert.INSTANCE.convert(customerreceiptRecordMainCreateReqVO)); + for (CustomerreceiptRequestDetailDO customerreceiptRequestDetailDO : detailDOList) { + CustomerreceiptRecordDetailCreateReqVO customerreceiptRecordDetailCreateReqVO = new CustomerreceiptRecordDetailCreateReqVO(); + BeanUtils.copyProperties(customerreceiptRequestDetailDO, customerreceiptRecordDetailCreateReqVO); + customerreceiptRecordDetailCreateReqVO.setNumber(number); + customerreceiptRecordDetailMapper.insert(CustomerreceiptRecordDetailConvert.INSTANCE.convert(customerreceiptRecordDetailCreateReqVO)); + trendsApi.createTrends(mainDO.getId(), "CustomerreceiptRecord", "客户收货申请生成客户收货记录", TrendsTypeEnum.CREATE); + } + } + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobDetailService.java index fcbbf31d..758f4d23 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobDetailService.java @@ -79,4 +79,10 @@ public interface CustomerreturnJobDetailService { */ List getCustomerreturnJobDetailList(CustomerreturnJobDetailExportReqVO exportReqVO); + /** + * 获得客户退货任务子列表, + * @param masterId + * @return + */ + List selectList(Long masterId); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobDetailServiceImpl.java index bb725907..ffc6a646 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobDetailServiceImpl.java @@ -5,6 +5,7 @@ import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobDetai import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobDetailExportReqVO; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobDetailPageReqVO; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.purchasereturnJob.PurchasereturnJobDetailDO; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -87,4 +88,8 @@ public class CustomerreturnJobDetailServiceImpl implements CustomerreturnJobDeta return customerreturnJobDetailMapper.selectList(exportReqVO); } + @Override + public List selectList(Long masterId) { + return customerreturnJobDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobMainService.java index 248ccc75..c42b7bd2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobMainService.java @@ -114,4 +114,32 @@ public interface CustomerreturnJobMainService { * @return */ Map getCountByStatus(@Nullable Collection types); + + /** + * 承接任务 + * @param id + * @return + */ + Integer acceptCustomerreturnJobMain(Long id); + + /** + * 取消承接任务 + * @param id + * @return + */ + Integer abandonCustomerreturnJobMain(Long id); + + /** + * 关闭任务 + * @param id + * @return + */ + Integer closeCustomerreturnJobMain(Long id); + + /** + * 执行任务 + * @param customerreturnJobMainUpdateReqVO + * @return + */ + Integer executeCustomerreturnJobMain(CustomerreturnJobMainUpdateReqVO customerreturnJobMainUpdateReqVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobMainServiceImpl.java index 94691f7a..74ac3289 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnJob/CustomerreturnJobMainServiceImpl.java @@ -1,19 +1,55 @@ package com.win.module.wms.service.customerreturnJob; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.api.user.AdminUserApi; +import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainCreateReqVO; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainExportReqVO; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainPageReqVO; import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainUpdateReqVO; +import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobDetailUpdateReqVO; +import com.win.module.wms.controller.customerreturnJob.vo.CustomerreturnJobMainUpdateReqVO; +import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailUpdateReqVO; +import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; +import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobDetailDO; +import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobMainDO; +import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordDetailDO; +import com.win.module.wms.dal.dataobject.customerreturnRecord.CustomerreturnRecordMainDO; +import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO; import com.win.module.wms.dal.dataobject.sale.SaleDetailDO; +import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; +import com.win.module.wms.dal.mysql.customerreturnRecord.CustomerreturnRecordDetailMapper; +import com.win.module.wms.dal.mysql.customerreturnRecord.CustomerreturnRecordMainMapper; +import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestMainMapper; +import com.win.module.wms.enums.job.JobStatusEnum; +import com.win.module.wms.enums.job.JobStatusState; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.expectout.ExpectoutService; +import com.win.module.wms.service.location.LocationService; import com.win.module.wms.service.purchase.PurchaseMainService; import com.win.module.wms.service.sale.SaleMainService; +import com.win.module.wms.service.transaction.TransactionService; +import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.validation.Valid; + +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.*; import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobMainDO; @@ -23,6 +59,7 @@ import com.win.module.wms.convert.customerreturnJob.CustomerreturnJobMainConvert import com.win.module.wms.dal.mysql.customerreturnJob.CustomerreturnJobMainMapper; 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.*; /** @@ -36,11 +73,33 @@ public class CustomerreturnJobMainServiceImpl implements CustomerreturnJobMainSe @Resource private CustomerreturnJobMainMapper customerreturnJobMainMapper; - @Resource private PurchaseMainService purchaseMainService; @Resource private SaleMainService saleMainService; + @Resource + private ExpectoutService expectoutService; + @Resource + private TransactionService transactionService; + @Resource + private LocationService locationService; + @Resource + private AdminUserApi userApi; + @Resource + private TrendsApi trendsApi; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private JobUtils jobUtils; + @Resource + private CustomerreturnJobDetailService customerreturnJobDetailService; + @Resource + private CustomerreturnRecordMainMapper customerreturnRecordMainMapper; + @Resource + private CustomerreturnRecordDetailMapper customerreturnRecordDetailMapper; + @Resource + private CustomerreturnRequestMainMapper customerreturnRequestMainMapper; + @Override public Long createCustomerreturnJobMain(CustomerreturnJobMainCreateReqVO createReqVO) { // 插入 @@ -67,10 +126,12 @@ public class CustomerreturnJobMainServiceImpl implements CustomerreturnJobMainSe customerreturnJobMainMapper.deleteById(id); } - private void validateCustomerreturnJobMainExists(Long id) { - if (customerreturnJobMainMapper.selectById(id) == null) { + private CustomerreturnJobMainDO validateCustomerreturnJobMainExists(Long id) { + CustomerreturnJobMainDO customerreturnJobMainDO = customerreturnJobMainMapper.selectById(id); + if (customerreturnJobMainDO == null) { throw exception(CUSTOMERRETURN_JOB_MAIN_NOT_EXISTS); } + return customerreturnJobMainDO; } @Override @@ -95,7 +156,7 @@ public class CustomerreturnJobMainServiceImpl implements CustomerreturnJobMainSe public List getCustomerreturnJobMainList(CustomerreturnJobMainExportReqVO exportReqVO) { return customerreturnJobMainMapper.selectList(exportReqVO); } - //校验采购订单明细 + //校验客户订单明细 @Override public PurchaseDetailDO productionDetailExist(String pnumber, String psupplierCode, String pitemCode,String poLine) { PurchaseDetailDO purchaseDetailDO = purchaseMainService.selectPurchaseDetailDoExist(pnumber, psupplierCode, pitemCode,poLine); @@ -127,4 +188,167 @@ public class CustomerreturnJobMainServiceImpl implements CustomerreturnJobMainSe map.put("count", l.intValue()); return map; } + + @Override + @Transactional + public Integer acceptCustomerreturnJobMain(Long id) { + CustomerreturnJobMainDO customerreturnJobMainDO = this.validateCustomerreturnJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(customerreturnJobMainDO.getStatus()); + if(!jobStatusState.accept()) { + throw exception(CUSTOMERRETURN_JOB_MAIN_STATUS_ERROR); + } + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + customerreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); + customerreturnJobMainDO.setAcceptUserId(String.valueOf(userId)); + customerreturnJobMainDO.setAcceptUserName(userRespDTO.getNickname()); + customerreturnJobMainDO.setAcceptTime(LocalDateTime.now()); + trendsApi.createTrends(id, "customerreturnJob", "承接了客户退货任务", TrendsTypeEnum.UPDATE); + return customerreturnJobMainMapper.updateById(customerreturnJobMainDO); + } + + @Override + @Transactional + public Integer abandonCustomerreturnJobMain(Long id) { + CustomerreturnJobMainDO customerreturnJobMainDO = this.validateCustomerreturnJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(customerreturnJobMainDO.getStatus()); + if(!jobStatusState.cancelAccept()) { + throw exception(CUSTOMERRETURN_JOB_MAIN_STATUS_ERROR); + } + customerreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); + customerreturnJobMainDO.setAcceptUserId(null); + customerreturnJobMainDO.setAcceptUserName(null); + customerreturnJobMainDO.setAcceptTime(null); + trendsApi.createTrends(id, "customerreturnJob", "取消了客户退货任务", TrendsTypeEnum.UPDATE); + return customerreturnJobMainMapper.updateById(customerreturnJobMainDO); + } + + @Override + @Transactional + public Integer closeCustomerreturnJobMain(Long id) { + CustomerreturnJobMainDO customerreturnJobMainDO = this.validateCustomerreturnJobMainExists(id); + JobStatusState jobStatusState = new JobStatusState(customerreturnJobMainDO.getStatus()); + if(!jobStatusState.close()) { + throw exception(CUSTOMERRETURN_JOB_MAIN_STATUS_ERROR); + } + customerreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); + trendsApi.createTrends(id, "customerreturnJob", "关闭了客户退货任务", TrendsTypeEnum.UPDATE); + return customerreturnJobMainMapper.updateById(customerreturnJobMainDO); + } + + @Override + @Transactional + public Integer executeCustomerreturnJobMain(CustomerreturnJobMainUpdateReqVO customerreturnJobMainUpdateReqVO) { + //查询数据 + CustomerreturnJobMainDO customerreturnJobMainDO = this.validateCustomerreturnJobMainExists(customerreturnJobMainUpdateReqVO.getId()); + List subList = customerreturnJobDetailService.selectList(customerreturnJobMainDO.getId()); + JobStatusState jobStatusState = new JobStatusState(customerreturnJobMainDO.getStatus()); + boolean flag = jobStatusState.execute(); + if(!flag) { + throw new ServiceException(CUSTOMERRETURN_JOB_MAIN_STATUS_ERROR); + } + //更新完成信息 + Long userId = getLoginUserId(); + AdminUserRespDTO userRespDTO = userApi.getUser(userId); + customerreturnJobMainDO.setStatus(jobStatusState.getState().getCode()); + customerreturnJobMainDO.setCompleteTime(LocalDateTime.now()); + customerreturnJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); + customerreturnJobMainDO.setCompleteUserName(userRespDTO.getNickname()); + //更新任务表状态 + int result = customerreturnJobMainMapper.updateById(customerreturnJobMainDO); + //创建客户收货记录主表 + CustomerreturnRecordMainDO customerreturnRecordMainDO = new CustomerreturnRecordMainDO(); + BeanUtils.copyProperties(customerreturnJobMainDO, customerreturnRecordMainDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_JOB.getCode()); + customerreturnRecordMainDO.setNumber(number); + customerreturnRecordMainDO.setJobNumber(customerreturnJobMainDO.getNumber()); + customerreturnRecordMainDO.setId(null); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectJob"); + customerreturnRecordMainDO.setBusinessType(businesstypeDO.getCode()); + customerreturnRecordMainMapper.insert(customerreturnRecordMainDO); + List customerreturnJobDetailUpdateReqVOList = customerreturnJobMainUpdateReqVO.getSubList(); + //退货记录子 + List customerreturnRecordDetailDOList = new ArrayList<>(); + //库存事务 + List transactionCreateReqVOList = new ArrayList<>(); + for(CustomerreturnJobDetailDO customerreturnJobDetailDO : subList) { + CustomerreturnJobDetailUpdateReqVO customerreturnJobDetailUpdateReqVOTemp = null; + for (CustomerreturnJobDetailUpdateReqVO customerreturnJobDetailUpdateReqVO : customerreturnJobDetailUpdateReqVOList) { + if (customerreturnJobDetailDO.getId().equals(customerreturnJobDetailUpdateReqVO.getId())) { + customerreturnJobDetailUpdateReqVOTemp = customerreturnJobDetailUpdateReqVO; + break; + } + } + CustomerreturnRecordDetailDO customerreturnRecordDetailDO = new CustomerreturnRecordDetailDO(); + BeanUtils.copyProperties(customerreturnJobDetailDO, customerreturnRecordDetailDO); + customerreturnRecordDetailDO.setMasterId(customerreturnRecordMainDO.getId().toString()); + customerreturnRecordDetailDO.setNumber(number); + customerreturnRecordDetailDO.setJobDetailId(String.valueOf(customerreturnJobDetailDO.getId())); + customerreturnRecordDetailDO.setFromBatch(customerreturnJobDetailDO.getBatch()); + customerreturnRecordDetailDO.setToBatch(customerreturnJobDetailUpdateReqVOTemp.getToBatch()); + customerreturnRecordDetailDO.setFromPackingNumber(customerreturnJobDetailDO.getPackingNumber()); + customerreturnRecordDetailDO.setToPackingNumber(customerreturnJobDetailUpdateReqVOTemp.getToPackingNumber()); + customerreturnRecordDetailDO.setFromContainerNumber(customerreturnJobDetailDO.getContainerNumber()); + customerreturnRecordDetailDO.setToContainerNumber(customerreturnJobDetailUpdateReqVOTemp.getToContainerNumber()); + customerreturnRecordDetailDO.setFromLocationCode(customerreturnJobDetailDO.getFromLocationCode()); + LocationDO FromLocationDO = locationService.selectLocation(customerreturnJobDetailDO.getFromLocationCode()); + if(FromLocationDO != null){ + customerreturnRecordDetailDO.setFromAreaCode(FromLocationDO.getAreaCode()); + customerreturnRecordDetailDO.setFromLocationGroupCode(FromLocationDO.getLocationGroupCode()); + } + customerreturnRecordDetailDO.setToLocationCode(customerreturnJobDetailUpdateReqVOTemp.getToLocationCode()); + LocationDO toLocationDO = locationService.selectLocation(customerreturnJobDetailDO.getToLocationCode()); + if(toLocationDO != null){ + customerreturnRecordDetailDO.setToAreaCode(FromLocationDO.getAreaCode()); + customerreturnRecordDetailDO.setToLocationGroupCode(FromLocationDO.getLocationGroupCode()); + } + customerreturnRecordDetailDO.setInventoryStatus(customerreturnJobDetailUpdateReqVOTemp.getToInventoryStatus()); + customerreturnRecordDetailDO.setQty(customerreturnJobDetailUpdateReqVOTemp.getHandleQty()); + customerreturnRecordDetailDO.setId(null); + customerreturnRecordDetailDO.setCreator(null); + customerreturnRecordDetailDO.setCreateTime(null); + customerreturnRecordDetailDO.setUpdater(null); + customerreturnRecordDetailDO.setUpdateTime(null); + customerreturnRecordDetailDOList.add(customerreturnRecordDetailDO); + //添加库存事务list + TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); + BeanUtils.copyProperties(customerreturnRecordDetailDO, transactionCreateReqVO); + //增加业务类型 + transactionCreateReqVO.setBusinessType(businesstypeDO.getCode()); + TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); + transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); + transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); + transactionCreateReqVO.setBusinessType(customerreturnRecordMainDO.getBusinessType()); + transactionCreateReqVO.setLocationCode(customerreturnJobDetailDO.getFromLocationCode()); + transactionCreateReqVO.setOwnerCode(customerreturnRecordDetailDO.getFromOwnerCode()); + transactionCreateReqVO.setRecordNumber(number); + transactionCreateReqVO.setBatch(customerreturnRecordDetailDO.getFromBatch()); + transactionCreateReqVO.setPackingNumber(customerreturnRecordDetailDO.getFromPackingNumber()); + transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + transactionCreateReqVO.setId(null); + transactionCreateReqVOList.add(transactionCreateReqVO); + + } + customerreturnRecordDetailMapper.insertBatch(customerreturnRecordDetailDOList); + List typeList = new ArrayList<>(); + typeList.add(JobStatusEnum.PENDING.getCode()); + typeList.add(JobStatusEnum.PROCESSING.getCode()); + Long count = customerreturnJobMainMapper.selectListCount(typeList, customerreturnJobMainDO.getRequestNumber()); + CustomerreturnRequestMainDO customerreturnRequestMainDO = customerreturnRequestMainMapper.selectByNumber(customerreturnJobMainDO.getRequestNumber()); + //申请单下所有任务全部完成 + if(count == 0) { + customerreturnRequestMainDO.setStatus(RequestStatusEnum.COMPLETED.getCode()); + customerreturnRequestMainMapper.updateById(customerreturnRequestMainDO); + } else if(customerreturnRequestMainDO.getStatus().equals(RequestStatusEnum.HANDLING.getCode())) {//部分完成 + customerreturnRequestMainDO.setStatus(RequestStatusEnum.PARTIAL.getCode()); + customerreturnRequestMainMapper.updateById(customerreturnRequestMainDO); + } + //增加库存事务 + transactionService.createTransaction(transactionCreateReqVOList); + //移除预计出 + expectoutService.deleteExpectoutByJobNumber(customerreturnJobMainDO.getNumber()); + //变更记录 + trendsApi.createTrends(customerreturnJobMainDO.getId(), "customerreturnJob", "执行了客户退货任务", TrendsTypeEnum.UPDATE); + return result; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordDetailService.java index 1aa39844..15389490 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordDetailService.java @@ -79,4 +79,5 @@ public interface CustomerreturnRecordDetailService { */ List getCustomerreturnRecordDetailList(CustomerreturnRecordDetailExportReqVO exportReqVO); + List selectList(Long masterId); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordDetailServiceImpl.java index cef6d01a..04ae8f39 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRecord/CustomerreturnRecordDetailServiceImpl.java @@ -5,6 +5,7 @@ import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecor import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordDetailExportReqVO; import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordDetailPageReqVO; import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.customerreceiptRequest.CustomerreceiptRequestDetailDO; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -87,4 +88,8 @@ public class CustomerreturnRecordDetailServiceImpl implements CustomerreturnReco return customerreturnRecordDetailMapper.selectList(exportReqVO); } + @Override + public List selectList(Long masterId) { + return customerreturnRecordDetailMapper.selectList(masterId); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestDetailService.java index 8336dd33..fc36bc1b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestDetailService.java @@ -79,4 +79,5 @@ public interface CustomerreturnRequestDetailService { */ List getCustomerreturnRequestDetailList(CustomerreturnRequestDetailExportReqVO exportReqVO); + List selectList(Long id); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestDetailServiceImpl.java index 54216e20..0592337a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestDetailServiceImpl.java @@ -1,14 +1,28 @@ package com.win.module.wms.service.customerreturnRequest; +import cn.hutool.core.exceptions.UtilException; import com.win.framework.common.pojo.CustomConditions; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailCreateReqVO; import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailExportReqVO; import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailPageReqVO; import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailUpdateReqVO; +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.customerreturnRequest.CustomerreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO; +import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestMainMapper; +import com.win.module.wms.service.deliverRecord.DeliverRecordMainService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; import java.util.*; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestDetailDO; @@ -31,12 +45,24 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq @Resource private CustomerreturnRequestDetailMapper customerreturnRequestDetailMapper; - + @Resource + private CustomerreturnRequestMainMapper customerreturnRequestMainMapper; + @Resource + private DeliverRecordMainService deliverRecordMainService; + @Resource + private ItembasicService itembasicService; + @Resource + private JobUtils jobUtils; + @Resource + private TrendsApi trendsApi; @Override public Long createCustomerreturnRequestDetail(CustomerreturnRequestDetailCreateReqVO createReqVO) { // 插入 CustomerreturnRequestDetailDO customerreturnRequestDetail = CustomerreturnRequestDetailConvert.INSTANCE.convert(createReqVO); + validateCustomerreturnRequestDetailCreate(customerreturnRequestMainMapper.selectById(customerreturnRequestDetail.getId()),customerreturnRequestDetail); customerreturnRequestDetailMapper.insert(customerreturnRequestDetail); + trendsApi.createTrends(customerreturnRequestDetail.getId(), "CustomerreturnRequestDetail", "新增了客户退货申请", TrendsTypeEnum.CREATE); + // 返回 return customerreturnRequestDetail.getId(); } @@ -47,7 +73,10 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq validateCustomerreturnRequestDetailExists(updateReqVO.getId()); // 更新 CustomerreturnRequestDetailDO updateObj = CustomerreturnRequestDetailConvert.INSTANCE.convert(updateReqVO); + validateCustomerreturnRequestDetailCreate(customerreturnRequestMainMapper.selectById(updateObj.getId()),updateObj); customerreturnRequestDetailMapper.updateById(updateObj); + trendsApi.createTrends(updateObj.getId(), "CustomerreturnRequestDetail", "修改了客户退货申请", TrendsTypeEnum.UPDATE); + } @Override @@ -87,4 +116,130 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq return customerreturnRequestDetailMapper.selectList(exportReqVO); } + @Override + public List selectList(Long masterId) { + return customerreturnRequestDetailMapper.selectList(masterId); + } + + /** + * 新增子表校验 + * @param detailDo + * @return + */ + private void validateCustomerreturnRequestDetailCreate(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDo) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerreturnRequest"); + //校验成品发货记录子表并赋值 + validateDeliverRecordDetail(mainDo,detailDo); + //校验物品基础信息并赋值 + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + if ( !detailDo.getUom().equals(itembasicDO.getUom())) { + //注意转换字段数值 + throw exception(UOM_EXCEPTION,"计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","); + } + //校验来源库位 + if(!"".equals(detailDo.getFromLocationCode())){ + validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); + } + //校验到库位 + validatorIfInFromLocationType(detailDo.getToLocationCode(),businesstypeDO); + //校验库存状态 + validatorIfInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); + //校验库存余额 + validatorBalance(detailDo); + } + + /** + * 校验成品发货记录子表并赋值 + * @param mainDo + * @param detailDO + */ + private void validateDeliverRecordDetail(CustomerreturnRequestMainDO mainDo,CustomerreturnRequestDetailDO detailDO){ + List deliverRecordDetailDO = deliverRecordMainService.selectsDeliverRecordExist(mainDo.getDeliverRecordNumber()); + if(deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0){ + for (DeliverRecordDetailDO deliver : deliverRecordDetailDO) { + if ( +// deliver.getSoNumber().equals(detailDO.getSoNumber()) && +// deliver.getSoLine().equals(detailDO.getSoLine()) && + deliver.getItemCode().equals(detailDO.getItemCode()) && + deliver.getBatch().equals(detailDO.getBatch()) && + deliver.getPackingNumber().equals(detailDO.getPackingNumber())) + { + detailDO.setQty(deliver.getQty()); + detailDO.setUom(deliver.getUom()); + } else { + throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单" + + mainDo.getDeliverRecordNumber() + "中"); +// throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"销售订单号" + detailDO.getSoNumber() + "销售订单行" + detailDO.getSoLine() +// + "物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单" +// + createReqVO.getDeliverRecordNumber() + "中"); + } + } + } + else { + throw exception(DELIVER_RECORD_DETAIL_NOT_EXISTS); + } + } + + /** + * 校验物品基础信息并赋值 + * @param itemCode + */ + private ItembasicDO validatorItembasic(String itemCode) { + return itembasicService.selectItembasic(itemCode); + } + + /** + * 校验出库库位类型是否一致 + * @param fromLocationCode + * @param businesstypeDO + */ + private void validatorIfInToLocationType(String fromLocationCode, BusinesstypeDO businesstypeDO) { + jobUtils.ifInToLocationType(fromLocationCode, businesstypeDO); + } + + /** + * 校验出库库位类型是否一致 + * @param toLocationCode + * @param businesstypeDO + */ + private void validatorIfInFromLocationType(String toLocationCode, BusinesstypeDO businesstypeDO) { + jobUtils.ifInFromLocationType(toLocationCode, businesstypeDO); + } + + /** + * 校验库存状态是否一致 + * @param inventoryStatus + * @param businesstypeDO + */ + private Boolean validatorIfInventoryStatuses(String inventoryStatus, BusinesstypeDO businesstypeDO) { + return jobUtils.ifInInventoryStatuses(inventoryStatus, businesstypeDO); + } + + /** + * 校验库存余额 + * @param + */ + private void validatorBalance(CustomerreturnRequestDetailDO detailDO) { + ArrayList list = new ArrayList<>(); + list.add(detailDO.getInventoryStatus()); + if("CUST".equals(detailDO.getFromLocationCode())){ + List balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(),detailDO.getPackingNumber() + ,detailDO.getBatch(),detailDO.getFromLocationCode(),list); + isqty(detailDO.getQty(), balance.get(0).getQty()); + } + } + + /** + * 校验库存数量 + * @param qty1 + * @param qty2 + * @return + */ + private String isqty(BigDecimal qty1, BigDecimal qty2) { + if (qty1.compareTo(qty2) < 0) { + return "ture"; + } else { + throw new UtilException("上架数量" + qty2 + "不能大于库存数量" + qty1); + } + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainService.java index 08fbf23d..62396f29 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainService.java @@ -10,6 +10,7 @@ import com.win.module.wms.controller.inventorymoveRequest.vo.InventorymoveReques import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayImportErrorVO; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; /** * 客户退货申请主 Service 接口 @@ -56,6 +57,13 @@ public interface CustomerreturnRequestMainService { */ List getCustomerreturnRequestMainList(Collection ids); + /** + * 获得客户退货申请主列表 + * + * @param ids 编号 + * @return 客户退货申请主列表 + */ + List getCustomerreturnRequestMainList(CustomConditions conditions); /** * 获得客户退货申请主分页 * @@ -81,4 +89,50 @@ public interface CustomerreturnRequestMainService { public List importCustomerreturnMainList(List datas, Integer mode, boolean updatePart); + /** + * 关闭退货申请主 + * + * @param id 退货申请主ID + * @return 更新数量 + */ + Integer closeCustomerreturnRequestMain(Long id); + + /** + * 重新添加退货申请主 + * + * @param id 退货申请主ID + * @return 更新数量 + */ + Integer reAddCustomerreturnRequestMain(Long id); + + /** + * 提交退货申请主 + * + * @param id 退货申请主ID + * @return 更新数量 + */ + Integer submitCustomerreturnRequestMain(Long id); + + /** + * 审批通过退货申请主 + * + * @param id 退货申请主ID + * @return 更新数量 + */ + Integer agreeCustomerreturnRequestMain(Long id); + + /** + * 处理退货申请主 + * @param id + * @return + */ + Integer handleCustomerreturnRequestMain(Long id); + /** + * 审批拒绝退货申请主 + * + * @param id 退货申请主ID + * @return 更新数量 + */ + Integer refusedCustomerreturnRequestMain(Long id); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java index 70e4f9e2..4ccafa47 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customerreturnRequest/CustomerreturnRequestMainServiceImpl.java @@ -2,37 +2,59 @@ package com.win.module.wms.service.customerreturnRequest; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; +import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.util.validation.ValidationUtils; -import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.web.core.util.WebFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.dict.DictDataApi; -import com.win.module.system.api.dict.dto.DictDataRespDTO; 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.customerreturnRecord.vo.CustomerreturnRecordDetailCreateReqVO; +import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordMainCreateReqVO; import com.win.module.wms.controller.customerreturnRequest.vo.*; +import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; +import com.win.module.wms.convert.customerreturnJob.CustomerreturnJobDetailConvert; +import com.win.module.wms.convert.customerreturnJob.CustomerreturnJobMainConvert; +import com.win.module.wms.convert.customerreturnRecord.CustomerreturnRecordDetailConvert; +import com.win.module.wms.convert.customerreturnRecord.CustomerreturnRecordMainConvert; +import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobDetailDO; +import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobMainDO; import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordMainDO; +import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; +import com.win.module.wms.dal.mysql.customerreturnJob.CustomerreturnJobDetailMapper; +import com.win.module.wms.dal.mysql.customerreturnJob.CustomerreturnJobMainMapper; +import com.win.module.wms.dal.mysql.customerreturnRecord.CustomerreturnRecordDetailMapper; +import com.win.module.wms.dal.mysql.customerreturnRecord.CustomerreturnRecordMainMapper; +import com.win.module.wms.enums.job.JobStatusEnum; +import com.win.module.wms.enums.plan.PlanStatusEnum; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.enums.request.RequestStatusState; +import com.win.module.wms.service.customerdock.CustomerdockService; import com.win.module.wms.service.deliverRecord.*; import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestDetailMapper; +import com.win.module.wms.service.expectin.ExpectinService; +import com.win.module.wms.service.jobsetting.JobsettingService; +import com.win.module.wms.service.recordsetting.RecordsettingService; import com.win.module.wms.service.requestsetting.*; 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.requestsetting.RequestsettingDO; -import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.util.*; import com.win.module.wms.service.location.*; import com.win.module.wms.convert.customerreturnRequest.CustomerreturnRequestDetailConvert; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; -import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO; -import com.win.module.wms.service.purchasereceiptRecord.*; import com.win.module.wms.service.itembasic.*; import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestDetailDO; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.validation.Validator; import java.time.LocalDateTime; import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import java.math.BigDecimal; @@ -42,6 +64,7 @@ import com.win.framework.common.pojo.PageResult; import com.win.module.wms.convert.customerreturnRequest.CustomerreturnRequestMainConvert; import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestMainMapper; 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.*; @@ -60,9 +83,18 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque @Resource private CustomerreturnRequestDetailMapper customerreturnRequestDetailMapper; + @Resource + private CustomerreturnJobMainMapper customerreturnJobMainMapper; + + @Resource + private CustomerreturnJobDetailMapper customerreturnJobDetailMapper; + @Resource private RequestsettingService requestsettingService; + @Resource + private RecordsettingService recordsettingService; + @Resource private DeliverRecordMainService deliverRecordMainService; @@ -71,7 +103,6 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque @Resource private JobUtils jobUtils; - @Resource private SerialNumberApi serialNumberApi; @@ -83,13 +114,55 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque @Resource private Validator validator; + + @Resource + private ExpectinService expectinService; + + @Resource + private TrendsApi trendsApi; + + @Resource + private CustomerreturnRecordMainMapper customerreturnRecordMainMapper; + + @Resource + private CustomerreturnRecordDetailMapper customerreturnRecordDetailMapper; + + @Resource + private AdminUserApi userApi; + + @Resource + private JobsettingService jobsettingService; + + @Resource + private CustomerdockService customerdockService; + @Override public Long createCustomerreturnRequestMain(CustomerreturnRequestMainCreateReqVO createReqVO) { // 插入 - CustomerreturnRequestMainDO customerreturnRequestMain = CustomerreturnRequestMainConvert.INSTANCE.convert(createReqVO); - customerreturnRequestMainMapper.insert(customerreturnRequestMain); + CustomerreturnRequestMainDO mainDO = CustomerreturnRequestMainConvert.INSTANCE.convert(createReqVO); + this.validateCustomerreturnRequestMainCreate(mainDO); + List subDOList = CustomerreturnRequestMainConvert.INSTANCE.convertList03(createReqVO.getSubList()); + for (CustomerreturnRequestDetailDO detailDO : subDOList) { + this.validateCustomerreturnRequestDetailCreate(mainDO,detailDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_REQUEST.getCode()); + mainDO.setNumber(number); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(mainDO.getAutoCommit(), mainDO.getAutoAgree(), mainDO.getAutoExecute()); + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, subDOList); + } + customerreturnRequestMainMapper.insert(mainDO); + for (CustomerreturnRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDO.getId()); + detailDO.setNumber(number); + } + customerreturnRequestDetailMapper.insertBatch(subDOList); + trendsApi.createTrends(mainDO.getId(), "CustomerreturnRequestMain", "增加了客户退货申请", TrendsTypeEnum.CREATE); // 返回 - return customerreturnRequestMain.getId(); + return mainDO.getId(); } @Override @@ -98,7 +171,13 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque validateCustomerreturnRequestMainExists(updateReqVO.getId()); // 更新 CustomerreturnRequestMainDO updateObj = CustomerreturnRequestMainConvert.INSTANCE.convert(updateReqVO); + this.validateCustomerreturnRequestMainCreate(updateObj); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(updateObj.getStatus())) { + this.generateJob(updateObj, customerreturnRequestDetailMapper.selectList(updateReqVO.getId())); + } customerreturnRequestMainMapper.updateById(updateObj); + trendsApi.createTrends(updateObj.getId(), "CustomerreturnRequestMain", "修改了客户退货申请", TrendsTypeEnum.UPDATE); } @Override @@ -109,12 +188,6 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque customerreturnRequestMainMapper.deleteById(id); } - private void validateCustomerreturnRequestMainExists(Long id) { - if (customerreturnRequestMainMapper.selectById(id) == null) { - throw exception(CUSTOMERRETURN_REQUEST_MAIN_NOT_EXISTS); - } - } - @Override public CustomerreturnRequestMainDO getCustomerreturnRequestMain(Long id) { return customerreturnRequestMainMapper.selectById(id); @@ -125,203 +198,528 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque return customerreturnRequestMainMapper.selectBatchIds(ids); } + @Override + public List getCustomerreturnRequestMainList(CustomConditions conditions) { + return customerreturnRequestMainMapper.selectSeniorList(conditions); + } + @Override public PageResult getCustomerreturnRequestMainPage(CustomerreturnRequestMainPageReqVO pageReqVO) { return customerreturnRequestMainMapper.selectPage(pageReqVO); } + @Override public PageResult getCustomerreturnRequestMainSenior(CustomConditions conditions) { return customerreturnRequestMainMapper.selectSenior(conditions); } + @Override public List getCustomerreturnRequestMainList(CustomerreturnRequestMainExportReqVO exportReqVO) { return customerreturnRequestMainMapper.selectList(exportReqVO); } - private void validatePurchaseclaimRequestMainExists(Long id) { + private CustomerreturnRequestMainDO validateCustomerreturnRequestMainExists(Long id) { CustomerreturnRequestMainDO customerRequestMainDO = customerreturnRequestMainMapper.selectById(id); if (customerRequestMainDO == null) { - return; - }else { throw exception(CUSTOMERRETURN_REQUEST_NOT_EXISTS); - } - } - public String isqty(BigDecimal qty1, BigDecimal qty2) { - if(qty1.compareTo(qty2) < 0){ - return "ture"; } else { - throw new UtilException("上架数量"+qty2+ "不能大于库存数量"+ qty1); + return customerRequestMainDO; } } - @Override @Transactional - public List importCustomerreturnMainList(List datas, Integer mode, boolean updatePart) { + public List importCustomerreturnMainList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { - throw exception(CUSTOMERRETURN_REQUEST_NOT_EXISTS); + throw exception(CUSTOMERRETURN_REQUEST_MAIN_NOT_EXISTS); } - List< CustomerreturnRequestImportErrorVO> errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - String messageMain = ""; - BusinesstypeDO businesstypeDO = null; - //主表校验方法 - try { - DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(createReqVO.getDeliverRecordNumber()); - createReqVO.setDeliverPlanNumber(deliverRecordMainDO.getDeliverPlanNumber()); - createReqVO.setCustomerCode(deliverRecordMainDO.getCustomerCode()); - createReqVO.setCustomerDockCode(deliverRecordMainDO.getCustomerDockCode()); - createReqVO.setCreateTime(LocalDateTime.now()); - } catch (Exception ex) { - messageMain += ex.getMessage() + ","; + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest"); + CustomerreturnRequestMainDO mainDo = CustomerreturnRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validateCustomerreturnRequestMainImport(mainDo); + List subList = createReqVO.getSubList(); + List subDOList = CustomerreturnRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (CustomerreturnRequestDetailDO detailDO : subDOList) { + String messageDetail = validateCustomerreturnRequestDetailImport(detailDO, mainDo, businesstypeDO); + if (messageMain.isEmpty() || messageDetail.isEmpty()) { + CustomerreturnRequestImportErrorVO importErrorVO = CustomerreturnRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + } + //写入数据 + if (flag) { + mainDo.setStatus(PlanStatusEnum.NEW.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_REQUEST.getCode()); + DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(mainDo.getDeliverRecordNumber()); + if(deliverRecordMainDO != null){ + mainDo.setFromWarehouseCode(deliverRecordMainDO.getToWarehouseCode()); + mainDo.setCustomerDockCode(deliverRecordMainDO.getCustomerDockCode()); } - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - - try { - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("CustomerRejectRequest"); - if (requestsettingDO != null) { - createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); - createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); - createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + mainDo.setRequestTime(LocalDateTime.now()); + mainDo.setNumber(number); + customerreturnRequestMainMapper.insert(mainDo); + for (CustomerreturnRequestDetailDO detailDO : subDOList) { + detailDO.setNumber(mainDo.getNumber()); + detailDO.setMasterId(mainDo.getId()); } - }catch (Exception ex) { - messageMain += ex.getMessage() + ","; + customerreturnRequestDetailMapper.insertBatch(subDOList); } - try{ - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest"); - createReqVO.setBusinessType(businesstypeDO.getCode()); - createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); - createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes()); - createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); - createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes()); - - }catch (Exception ex) { - messageMain += ex.getMessage() + ","; + }); + return errorList; + } + + private void generateJob(CustomerreturnRequestMainDO mainDO, List detailDOList) { + //跳过任务直接生成记录 + if("TRUE".equals(mainDO.getDirectCreateRecord())) { + CustomerreturnRecordMainCreateReqVO customerreturnRecordMainCreateReqVO = new CustomerreturnRecordMainCreateReqVO(); + BeanUtils.copyProperties(mainDO, customerreturnRecordMainCreateReqVO); + //记录主表数据 同名属性同名赋值 + customerreturnRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); + customerreturnRecordMainCreateReqVO.setId(null); + customerreturnRecordMainCreateReqVO.setCreator(String.valueOf(userApi.getUser(getLoginUserId()).getId())); + customerreturnRecordMainCreateReqVO.setCreateTime(null); + customerreturnRecordMainCreateReqVO.setActiveDate(LocalDateTime.now()); + customerreturnRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now()); + String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_RECORD.getCode()); + customerreturnRecordMainCreateReqVO.setNumber(number); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRecord"); + customerreturnRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); + customerreturnRecordMainMapper.insert(CustomerreturnRecordMainConvert.INSTANCE.convert(customerreturnRecordMainCreateReqVO)); + for(CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { + //记录子表数据 同名属性同名赋值 + CustomerreturnRecordDetailCreateReqVO customerreturnRecordDetailCreateReqVO = new CustomerreturnRecordDetailCreateReqVO(); + BeanUtils.copyProperties(customerreturnRequestDetailDO, customerreturnRecordDetailCreateReqVO); + customerreturnRecordDetailCreateReqVO.setFromBatch(customerreturnRequestDetailDO.getBatch()); + customerreturnRecordDetailCreateReqVO.setMasterId(customerreturnRequestDetailDO.getId().toString()); + customerreturnRecordDetailCreateReqVO.setId(null); + customerreturnRecordDetailCreateReqVO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); + customerreturnRecordDetailCreateReqVO.setCreateTime(null); + customerreturnRecordDetailMapper.insert(CustomerreturnRecordDetailConvert.INSTANCE.convert(customerreturnRecordDetailCreateReqVO)); + } + return; + } + //生成客户退货任务 + CustomerreturnJobMainDO customerreturnJobMainDO = CustomerreturnJobMainConvert.INSTANCE.convert(mainDO); + //任务主表数据 同名属性同名赋值 + BeanUtils.copyProperties(mainDO, customerreturnJobMainDO); + customerreturnJobMainDO.setRequestNumber(mainDO.getNumber()); + customerreturnJobMainDO.setStatus(JobStatusEnum.PENDING.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_JOB.getCode()); + customerreturnJobMainDO.setNumber(number); + customerreturnJobMainDO.setId(null); + customerreturnJobMainDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); + customerreturnJobMainDO.setCreateTime(null); + customerreturnJobMainDO.setUpdater(null); + customerreturnJobMainDO.setUpdateTime(null); + // 获取任务单据设置 + JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("CustomerRejectJob"); + customerreturnJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete()); + customerreturnJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation()); + customerreturnJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty()); + customerreturnJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty()); + customerreturnJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty()); + customerreturnJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus()); + customerreturnJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning()); + customerreturnJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete()); + customerreturnJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber()); + customerreturnJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach()); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectJob"); + customerreturnJobMainDO.setBusinessType(businesstypeDO.getCode()); + customerreturnJobMainMapper.insert(customerreturnJobMainDO); + List expectinCreateReqVOList = new ArrayList<>(); + List customerreturnJobDetailDOList = new ArrayList<>(); + for(CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { + //任务子表数据 同名属性同名赋值 + CustomerreturnJobDetailDO customerreturnJobDetailDO = CustomerreturnJobDetailConvert.INSTANCE.convert(customerreturnRequestDetailDO); + BeanUtils.copyProperties(customerreturnRequestDetailDO, customerreturnJobDetailDO); + customerreturnJobDetailDO.setOwnerCode(customerreturnRequestDetailDO.getFromOwnerCode()); + customerreturnJobDetailDO.setId(null); + customerreturnJobDetailDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); + customerreturnJobDetailDO.setCreateTime(null); + customerreturnJobDetailDO.setUpdater(null); + customerreturnJobDetailDO.setUpdateTime(null); + customerreturnJobDetailDO.setMasterId(customerreturnJobMainDO.getId()); + customerreturnJobDetailDOList.add(customerreturnJobDetailDO); + //预计入 + ExpectinCreateReqVO expectinCreateReqVO = new ExpectinCreateReqVO(); + BeanUtils.copyProperties(customerreturnJobDetailDO, expectinCreateReqVO); + expectinCreateReqVO.setJobNumber(number); + expectinCreateReqVO.setBusinessType(customerreturnJobMainDO.getBusinessType()); + expectinCreateReqVO.setLocationCode(customerreturnJobDetailDO.getFromLocationCode()); + expectinCreateReqVO.setOwnerCode(customerreturnJobDetailDO.getOwnerCode()); + expectinCreateReqVO.setQty(customerreturnJobDetailDO.getQty()); + expectinCreateReqVOList.add(expectinCreateReqVO); + } + customerreturnJobDetailMapper.insertBatch(customerreturnJobDetailDOList); + //增加预计入 + expectinService.createExpectin(expectinCreateReqVOList); + trendsApi.createTrends(customerreturnJobMainDO.getId(), "CustomerRejectJob", "客户退货申请生成客户退货任务", TrendsTypeEnum.CREATE); + + } + + /** + * 主表校验导入,并赋值一些参数 + * @param mainDo + * @return + */ + private String validateCustomerreturnRequestMainImport(CustomerreturnRequestMainDO mainDo) { + // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList + String messageMain = ""; + //主表的验证 + //校验客户代码 + try { + CustomerreturnRequestMainDO customerreturnRequestMainDO = this.validateDeliverRecord(mainDo); + mainDo.setDeliverPlanNumber(customerreturnRequestMainDO.getDeliverPlanNumber()); + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + //校验业务类型相关属性 + try { + validateRequestsettingAndBusinesstype(mainDo); + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + return messageMain; + } + + /** + * 子表校验导入,并赋值一些参数 + * @param detailDo + * @return + */ + private String validateCustomerreturnRequestDetailImport(CustomerreturnRequestDetailDO detailDo, CustomerreturnRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + String messageDetail = ""; + // 校验物品基础信息 + try { + validateDeliverRecordDetail(mainDo,detailDo); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + try { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + if ( !detailDo.getUom().equals(itembasicDO.getUom())) { + messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","; } - try { - ValidationUtils.validate(validator, createReqVO); - } catch (Exception ex) { - messageMain += ex.getMessage() + ","; + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + try { + if(!"".equals(detailDo.getFromLocationCode())){ + validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); } - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RETURN_REQUEST.getCode()); - createReqVO.setNumber(number); - List subList = createReqVO.getSubList(); - List subDOList = CustomerreturnRequestDetailConvert.INSTANCE.convertList03(subList); - for(CustomerreturnRequestDetailDO detailDO : subDOList ){ - String messageDetail = ""; - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - //子表校验方法 - try { - List deliverRecordDetailDO = deliverRecordMainService.selectsDeliverRecordExist(createReqVO.getDeliverRecordNumber()); - try{ - for( DeliverRecordDetailDO deliver : deliverRecordDetailDO){ - if(deliver.getSoNumber().equals(detailDO.getSoNumber())&& - deliver.getSoLine().equals(detailDO.getSoLine()) - &&deliver.getItemCode().equals(detailDO.getItemCode())&& - deliver.getBatch().equals(detailDO.getBatch())&& - deliver.getPackingNumber().equals(detailDO.getPackingNumber())){ - detailDO.setQty(deliver.getQty()); - detailDO.setUom(deliver.getUom()); - } - else{ - throw new UtilException("销售订单号"+detailDO.getSoNumber()+"销售订单行"+detailDO.getSoLine() - +"物料代码"+detailDO.getItemCode()+"批次"+detailDO.getBatch()+"箱码"+detailDO.getPackingNumber()+"不在发货记录单" - +createReqVO.getDeliverRecordNumber()+"中"); - } - } - }catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - try { - ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); - detailDO.setItemDesc1(itembasicDO.getDesc1()); - detailDO.setItemDesc2(itembasicDO.getDesc2()); - detailDO.setItemName(itembasicDO.getName()); - detailDO.setProjectCode(itembasicDO.getProject()); - detailDO.setUom(itembasicDO.getUom()); - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - try { - locationService.selectLocation(detailDO.getFromLocationCode()); - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - - try{ - if(!detailDO.getFromLocationCode().isEmpty()){ - jobUtils.ifInToLocationType(detailDO.getFromLocationCode(),businesstypeDO); - } - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - try{ - jobUtils.ifInFromLocationType(detailDO.getToLocationCode(),businesstypeDO); - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - try{ - jobUtils.ifInInventoryStatuses(detailDO.getInventoryStatus(),businesstypeDO); - }catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - - try{ - if("客户寄售库".equals(detailDO.getFromLocationCode())){ - DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(detailDO.getInventoryStatus()); - String value = dictDataRespDTO.getValue(); - String[] businessArray = value.split(","); - List business = Arrays.asList(businessArray); - List balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(),detailDO.getPackingNumber(),detailDO.getBatch(), - detailDO.getFromLocationCode(),business); - try{ - BalanceDO blance1 = balance.get(0); - isqty(detailDO.getQty(),blance1.getQty()); - }catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - } - }catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - CustomerreturnRequestDetailCreateReqVO customerreturnRequestDetailCreateReqVO = CustomerreturnRequestDetailConvert.INSTANCE.convert1(detailDO); - CustomerreturnRequestImportErrorVO importVO = CustomerreturnRequestDetailConvert.INSTANCE.convert(createReqVO, customerreturnRequestDetailCreateReqVO); - if(!messageMain.equals("") || !messageDetail.equals("")){ - importVO.setImportStatus("失败"); - messageMain = messageMain + messageDetail; - importVO.setImportRemark(messageMain.substring(0,messageMain.length()-1)); - errorList.add(importVO); - }else { - - detailDO.setNumber(createReqVO.getNumber()); - detailDO.setMasterId(createReqVO.getId()); - } - } - CustomerreturnRequestMainDO createObj = CustomerreturnRequestMainConvert.INSTANCE.convert(createReqVO); - - if (errorList.isEmpty()) { - CustomerreturnRequestMainDO existCustomerreturnRequestMainDO = customerreturnRequestMainMapper.selectByDeliverrecordnumberAndSupplierCode(createReqVO.getDeliverRecordNumber()); - if (existCustomerreturnRequestMainDO == null && mode != 3) { - customerreturnRequestMainMapper.insert(createObj); - customerreturnRequestDetailMapper.insertBatch(subDOList); - } - else if (existCustomerreturnRequestMainDO == null && mode != 2) { - customerreturnRequestMainMapper.updateById(createObj); - customerreturnRequestDetailMapper.updateBatch(subDOList); - } + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + try { + validatorIfInFromLocationType(detailDo.getToLocationCode(),businesstypeDO); + } catch (ServiceException ex) { + messageDetail += "从" + ex.getMessage() + ","; + } + try { + validatorIfInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); + } catch (ServiceException ex) { + messageDetail += "到" + ex.getMessage() + ","; + } + try { + validatorBalance(detailDo); + } catch (ServiceException ex) { + messageDetail += ex.getMessage() + ","; + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + messageDetail+= ex.getMessage() + (","); + } + return messageDetail; + } + + @Override + @Transactional + public Integer closeCustomerreturnRequestMain(Long id) { + // 校验存在存在下级单据 + CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); + Long count = customerreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(CUSTOMERRETURN_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.close(); + if(!flag) { + throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_CLOSE); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "CustomerRejectRequest", "关闭了客户退货申请", TrendsTypeEnum.UPDATE); + return customerreturnRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer reAddCustomerreturnRequestMain(Long id) { + // 校验存在存在下级单据 + CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); + Long count = customerreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(CUSTOMERRETURN_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.reAdd(); + if(!flag) { + throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_RE_ADD); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "CustomerRejectRequest", "打开了客户退货申请", TrendsTypeEnum.UPDATE); + return customerreturnRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer submitCustomerreturnRequestMain(Long id) { + CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_SUBMIT); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, customerreturnRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "CustomerRejectRequest", "提交了客户退货申请", TrendsTypeEnum.UPDATE); + return customerreturnRequestMainMapper.updateById(mainDO); + } + @Override + @Transactional + public Integer agreeCustomerreturnRequestMain(Long id) { + // 校验存在 + CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); + if(!flag) { + throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_AGREE); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { + this.generateJob(mainDO, customerreturnRequestDetailMapper.selectList(mainDO.getId())); + } + trendsApi.createTrends(id, "CustomerRejectRequest", "审批同意了客户退货申请", TrendsTypeEnum.UPDATE); + return customerreturnRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer handleCustomerreturnRequestMain(Long id) { + // 校验存在 + CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.handle(); + if(!flag) { + throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_HANDLE); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + //调用执行方法 + this.generateJob(mainDO, customerreturnRequestDetailMapper.selectList(mainDO.getId())); + trendsApi.createTrends(id, "CustomerRejectRequest", "执行了客户退货申请", TrendsTypeEnum.UPDATE); + return customerreturnRequestMainMapper.updateById(mainDO); + } + + @Override + @Transactional + public Integer refusedCustomerreturnRequestMain(Long id) { + // 校验存在 + CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.refused(); + if(!flag) { + throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_ABORT); + } + mainDO.setStatus(requestStatusState.getState().getCode()); + trendsApi.createTrends(id, "CustomerRejectRequest", "审批拒绝了客户退货申请", TrendsTypeEnum.UPDATE); + return customerreturnRequestMainMapper.updateById(mainDO); + } + + /** + * 新增主表校验 + * @param mainDo + * @return + */ + private void validateCustomerreturnRequestMainCreate(CustomerreturnRequestMainDO mainDo) { + //校验发货记录并赋值 + CustomerreturnRequestMainDO customerreturnRequestMainDO = this.validateDeliverRecord(mainDo); + mainDo.setDeliverPlanNumber(customerreturnRequestMainDO.getDeliverPlanNumber()); + //校验业务类型和申请设置并赋值 + validateRequestsettingAndBusinesstype(mainDo); + } + + /** + * 新增子表校验 + * @param detailDo + * @return + */ + private void validateCustomerreturnRequestDetailCreate(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDo) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest"); + //校验成品发货记录子表并赋值 + validateDeliverRecordDetail(mainDo,detailDo); + //校验物品基础信息并赋值 + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + if(detailDo.getUom() != null){ + if (!detailDo.getUom().equals(itembasicDO.getUom())) { + //注意转换字段数值 + throw exception(UOM_EXCEPTION,"计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","); } - }); - //错误不为空并非部分更新,手工回滚 - if (!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } - return errorList; + //校验来源库位 + if(!"".equals(detailDo.getFromLocationCode())){ + validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); + } + //校验到库位 +// customerdockService. + validatorIfInFromLocationType(detailDo.getToLocationCode(),businesstypeDO); + //校验库存状态 + validatorIfInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); + //校验库存余额 + validatorBalance(detailDo); + } + + /** + * 校验发货记录并赋值 + * @param mainDo + */ + private CustomerreturnRequestMainDO validateDeliverRecord(CustomerreturnRequestMainDO mainDo) { + DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(mainDo.getDeliverRecordNumber()); + mainDo.setDeliverPlanNumber(deliverRecordMainDO.getDeliverPlanNumber()); + mainDo.setCustomerCode(deliverRecordMainDO.getCustomerCode()); + mainDo.setCustomerDockCode(deliverRecordMainDO.getCustomerDockCode()); + return mainDo; + } + + + /** + * 校验业务类型和申请设置并赋值 + * @param mainDo + */ + private void validateRequestsettingAndBusinesstype(CustomerreturnRequestMainDO mainDo){ + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("CustomerRejectRequest"); + if (requestsettingDO != null) { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest"); + if(businesstypeDO != null){ + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } + + } + + /** + * 校验成品发货记录子表并赋值 + * @param mainDo + * @param detailDO + */ + private void validateDeliverRecordDetail(CustomerreturnRequestMainDO mainDo,CustomerreturnRequestDetailDO detailDO){ + List deliverRecordDetailDO = deliverRecordMainService.selectsDeliverRecordExist(mainDo.getDeliverRecordNumber()); + if(deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0){ + for (DeliverRecordDetailDO deliver : deliverRecordDetailDO) { + if ( +// deliver.getSoNumber().equals(detailDO.getSoNumber()) && +// deliver.getSoLine().equals(detailDO.getSoLine()) && + deliver.getItemCode().equals(detailDO.getItemCode()) && + deliver.getBatch().equals(detailDO.getBatch()) && + deliver.getPackingNumber().equals(detailDO.getPackingNumber())) + { + detailDO.setQty(deliver.getQty()); + detailDO.setUom(deliver.getUom()); + } else { + throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单" + + mainDo.getDeliverRecordNumber() + "中"); +// throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"销售订单号" + detailDO.getSoNumber() + "销售订单行" + detailDO.getSoLine() +// + "物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单" +// + createReqVO.getDeliverRecordNumber() + "中"); + } + } + } + else { + throw exception(DELIVER_RECORD_DETAIL_NOT_EXISTS); + } + } + + /** + * 校验物品基础信息并赋值 + * @param itemCode + */ + private ItembasicDO validatorItembasic(String itemCode) { + return itembasicService.selectItembasic(itemCode); + } + + /** + * 校验出库库位类型是否一致 + * @param fromLocationCode + * @param businesstypeDO + */ + private void validatorIfInToLocationType(String fromLocationCode, BusinesstypeDO businesstypeDO) { + jobUtils.ifInToLocationType(fromLocationCode, businesstypeDO); + } + + /** + * 校验出库库位类型是否一致 + * @param toLocationCode + * @param businesstypeDO + */ + private void validatorIfInFromLocationType(String toLocationCode, BusinesstypeDO businesstypeDO) { + jobUtils.ifInFromLocationType(toLocationCode, businesstypeDO); + } + + /** + * 校验库存状态是否一致 + * @param inventoryStatus + * @param businesstypeDO + */ + private Boolean validatorIfInventoryStatuses(String inventoryStatus, BusinesstypeDO businesstypeDO) { + return jobUtils.ifInInventoryStatuses(inventoryStatus, businesstypeDO); + } + + /** + * 校验库存余额 + * @param + */ + private void validatorBalance(CustomerreturnRequestDetailDO detailDO) { + ArrayList list = new ArrayList<>(); + list.add(detailDO.getInventoryStatus()); + if("CUST".equals(detailDO.getFromLocationCode())){ + List balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(),detailDO.getPackingNumber() + ,detailDO.getBatch(),detailDO.getFromLocationCode(),list); + isqty(detailDO.getQty(), balance.get(0).getQty()); + } + } + + private String isqty(BigDecimal qty1, BigDecimal qty2) { + if (qty1.compareTo(qty2) < 0) { + return "ture"; + } else { + throw new UtilException("上架数量" + qty2 + "不能大于库存数量" + qty1); + } } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/documentsetting/DocumentsettingServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/documentsetting/DocumentsettingServiceImpl.java index a7590f2a..f00170a2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/documentsetting/DocumentsettingServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/documentsetting/DocumentsettingServiceImpl.java @@ -289,8 +289,9 @@ public class DocumentsettingServiceImpl implements DocumentsettingService { public DocumentsettingDO selectDocumentsettingExist(String pcode){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("code",pcode); + queryWrapper.eq("available","TRUE"); DocumentsettingDO documentsettingDO = documentsettingMapper.selectOne(queryWrapper); - if(documentsettingDO != null && "TRUE".equals(documentsettingDO.getAvailable())){ + if(documentsettingDO != null){ return documentsettingDO; }else { throw exception(DOCUMENTSETTING_NOT_EXISTS); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingService.java index 9b69898a..36d799bd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingService.java @@ -78,7 +78,7 @@ public interface ItempackagingService { */ List getItempackagingList(ItempackagingExportReqVO exportReqVO); - List itempackagingimportDocumentList(List itempackagings, Integer mode, Boolean updatePart); + List itempackagingimportDocumentList(List list , Integer mode, Boolean updatePart); /** * BQ----QIP diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingServiceImpl.java index d0a0f438..6ee8b7c9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itempackaging/ItempackagingServiceImpl.java @@ -13,13 +13,11 @@ import com.win.module.wms.convert.itempackaging.ItempackagingConvert; import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; import com.win.module.wms.dal.mysql.itempackaging.ItempackagingMapper; import org.springframework.stereotype.Service; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -88,69 +86,65 @@ public class ItempackagingServiceImpl implements ItempackagingService { public PageResult getItempackagingSenior(CustomConditions conditions) { return itempackagingMapper.selectSenior(conditions); } + + private String validateItempackagingImport(ItempackagingDO itempackagingDO) { + StringBuilder message = new StringBuilder(); + try { + validateItempackagingExists(null); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateItemCodeExists(null,itempackagingDO.getItemCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateUomExists(itempackagingDO.getUom()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateStdPackUnitExists(itempackagingDO.getStdPackUnit()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateStdPackQtyExists(itempackagingDO.getStdPackQty()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateAvailableExists(itempackagingDO.getAvailable()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } @Override - public List itempackagingimportDocumentList(List itempackagings, Integer mode, Boolean updatePart) { - if (CollUtil.isEmpty(itempackagings)) { + public List itempackagingimportDocumentList(List datas, Integer mode, Boolean updatePart) { + if (CollUtil.isEmpty(datas)) { throw exception(ITEMPACKAGING_IMPORT_LIST_IS_EMPTY); } - List errorList = new ArrayList<>(); - itempackagings.forEach(itempackaging -> { - String massage = ""; - // 校验,判断是否有不符合的原因 - if(mode != null){ - try { - validateItempackagingExists(null); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateItemCodeExists(null,itempackaging.getItemCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateUomExists(itempackaging.getUom()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateStdPackUnitExists(itempackaging.getStdPackUnit()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateStdPackQtyExists(itempackaging.getStdPackQty()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateAvailableExists(itempackaging.getAvailable()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - } - if(StrUtil.isNotEmpty(massage)){ - massage.substring(0,massage.length()-1); - errorList.add(itempackaging); + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + ItempackagingDO itempackagingDO = ItempackagingConvert.INSTANCE.convert(createReqVO); + String message = this.validateItempackagingImport(itempackagingDO); + // 是否有错误数据 + boolean flag = true; + if(!message.isEmpty()){ + ItempackagingImportErrorVO importErrorVO = ItempackagingConvert.INSTANCE.convert2(createReqVO); + importErrorVO.setImportStatus("失败"); + importErrorVO.setImportRemark(message.substring(0, message.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - if(errorList == null){ - // 判断如果不存在,在进行插入 - ItempackagingDO existConfigurationSetting = null; - if (existConfigurationSetting == null&& mode != 3) { - itempackagingMapper.insert(ItempackagingConvert.INSTANCE.convert(itempackaging)); - } - else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 - ItempackagingDO itempackagingMapperDO = ItempackagingConvert.INSTANCE.convert(itempackaging); - itempackagingMapperDO.setId(existConfigurationSetting.getId()); - itempackagingMapper.updateById(itempackagingMapperDO); - } + //写入数据 + if(flag) { + itempackagingMapper.insert(itempackagingDO); } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - return errorList; + return errorList; } private void validateItempackagingForCreateOrUpdate(Long id, String itemCode, String uom, String stdPackUnit, BigDecimal stdPackQty, String available) { @@ -220,6 +214,7 @@ public class ItempackagingServiceImpl implements ItempackagingService { throw exception(ITEMPACKAGING_AVAILABLE_NOT_EXISTS); } } + @Override public ItempackagingDO selectItemPackagingExist(String pitemCode){ QueryWrapper queryWrapper = new QueryWrapper(); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java index f0b7736f..d00e3905 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java @@ -290,11 +290,12 @@ public class LocationServiceImpl implements LocationService { public LocationDO selectLocation(String pcode) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("code",pcode); + queryWrapper.eq("available","TRUE"); LocationDO locationDO = locationMapper.selectOne(queryWrapper); - if(locationDO != null && "TRUE".equals(locationDO.getAvailable())){ - return locationDO; - } else { + if(locationDO == null){ throw exception(LOCATION_NOT_EXISTS); + } else { + return locationDO; } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailServiceImpl.java index 95420fcf..189bcfdf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailServiceImpl.java @@ -9,6 +9,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.*; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO; @@ -36,6 +37,7 @@ public class PurchasePlanDetailServiceImpl implements PurchasePlanDetailService public Long createPurchasePlanDetail(PurchasePlanDetailCreateReqVO createReqVO) { // 插入 PurchasePlanDetailDO purchasePlanDetail = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO); + purchasePlanDetail.setCreateTime(LocalDateTime.now()); purchasePlanDetailMapper.insert(purchasePlanDetail); // 返回 return purchasePlanDetail.getId(); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java index ee68f75d..2f13a4c9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java @@ -35,6 +35,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -70,6 +71,7 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { public Long createPurchasePlanMain(PurchasePlanMainCreateReqVO createReqVO) { // 插入 PurchasePlanMainDO purchasePlanMain = PurchasePlanMainConvert.INSTANCE.convert(createReqVO); + purchasePlanMain.setCreateTime(LocalDateTime.now()); purchasePlanMainMapper.insert(purchasePlanMain); // 返回 return purchasePlanMain.getId(); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java index fa53628a..fe1b7c05 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java @@ -232,12 +232,12 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque PurchasereturnRequestMainDO mainDO = validatePurchasereturnRequestMainExists(id); Long count = purchasereturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); if(count > 0) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_JOB_EXISTS); + throw new ServiceException(PURCHASERETURN_REQUEST_JOB_EXISTS); } RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.close(); if(!flag) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_CLOSE); + throw new ServiceException(PURCHASERETURN_REQUEST_CANNOT_CLOSE); } mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 trendsApi.createTrends(id, "purchasereturnRequest", "关闭了采购收货申请", TrendsTypeEnum.UPDATE); @@ -251,12 +251,12 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque PurchasereturnRequestMainDO mainDO = validatePurchasereturnRequestMainExists(id); Long count = purchasereturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); if(count > 0) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_JOB_EXISTS); + throw new ServiceException(PURCHASERETURN_REQUEST_JOB_EXISTS); } RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.reAdd(); if(!flag) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_RE_ADD); + throw new ServiceException(PURCHASERETURN_REQUEST_CANNOT_RE_ADD); } mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 trendsApi.createTrends(id, "purchasereturnRequest", "打开了采购收货申请", TrendsTypeEnum.UPDATE); @@ -270,7 +270,7 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); if(!flag) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_SUBMIT); + throw new ServiceException(PURCHASERETURN_REQUEST_CANNOT_SUBMIT); } mainDO.setStatus(requestStatusState.getState().getCode()); //调用自动执行方法 @@ -289,7 +289,7 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); if(!flag) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_AGREE); + throw new ServiceException(PURCHASERETURN_REQUEST_CANNOT_AGREE); } mainDO.setStatus(requestStatusState.getState().getCode()); //调用自动执行方法 @@ -308,7 +308,7 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.handle(); if(!flag) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_HANDLE); + throw new ServiceException(PURCHASERETURN_REQUEST_CANNOT_HANDLE); } mainDO.setStatus(requestStatusState.getState().getCode()); //调用执行方法 @@ -325,7 +325,7 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); boolean flag = requestStatusState.refused(); if(!flag) { - throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_ABORT); + throw new ServiceException(PURCHASERETURN_REQUEST_CANNOT_ABORT); } mainDO.setStatus(requestStatusState.getState().getCode()); trendsApi.createTrends(id, "purchasereturnRequest", "审批拒绝了采购收货申请", TrendsTypeEnum.UPDATE);