From 8dc11f7f867cf064aae87361c831336934b77880 Mon Sep 17 00:00:00 2001 From: zhang_li <2235006734@qqq.com> Date: Tue, 14 Nov 2023 16:51:03 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/controller/areabasic/vo/AreabasicExcelVO.java | 3 --- .../wms/controller/areabasic/vo/AreabasicExportReqVO.java | 3 --- .../win/module/wms/controller/process/vo/ProcessExcelVO.java | 3 --- .../module/wms/controller/process/vo/ProcessExportReqVO.java | 3 --- .../controller/productionline/vo/ProductionlineExcelVO.java | 3 --- .../productionline/vo/ProductionlineExportReqVO.java | 3 --- .../module/wms/controller/project/vo/ProjectExportReqVO.java | 3 --- .../win/module/wms/dal/mysql/areabasic/AreabasicMapper.java | 1 - .../com/win/module/wms/dal/mysql/process/ProcessMapper.java | 1 - .../wms/dal/mysql/productionline/ProductionlineMapper.java | 1 - .../com/win/module/wms/dal/mysql/project/ProjectMapper.java | 1 - 11 files changed, 25 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/vo/AreabasicExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/vo/AreabasicExcelVO.java index 5f2154fd..cd978587 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/vo/AreabasicExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/vo/AreabasicExcelVO.java @@ -23,9 +23,6 @@ public class AreabasicExcelVO { @ExcelProperty("名称") private String name; - @ExcelProperty("描述") - private String description; - @ExcelProperty("仓库代码") private String warehouseCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/vo/AreabasicExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/vo/AreabasicExportReqVO.java index 6f7614fe..0ae9f5ec 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/vo/AreabasicExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/areabasic/vo/AreabasicExportReqVO.java @@ -18,9 +18,6 @@ public class AreabasicExportReqVO { @Schema(description = "名称") private String name; - @Schema(description = "描述") - private String description; - @Schema(description = "仓库代码") private String warehouseCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/vo/ProcessExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/vo/ProcessExcelVO.java index d0519290..829ba42b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/vo/ProcessExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/vo/ProcessExcelVO.java @@ -23,9 +23,6 @@ public class ProcessExcelVO { @ExcelProperty("名称") private String name; - @ExcelProperty("描述") - private String description; - @ExcelProperty(value = "类型", converter = DictConvert.class) @DictFormat("process_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String type; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/vo/ProcessExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/vo/ProcessExportReqVO.java index ffa51f19..20ca33b7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/vo/ProcessExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/vo/ProcessExportReqVO.java @@ -18,9 +18,6 @@ public class ProcessExportReqVO { @Schema(description = "名称") private String name; - @Schema(description = "描述") - private String description; - @Schema(description = "类型") private String type; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/vo/ProductionlineExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/vo/ProductionlineExcelVO.java index 38815a10..54624825 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/vo/ProductionlineExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/vo/ProductionlineExcelVO.java @@ -23,9 +23,6 @@ public class ProductionlineExcelVO { @ExcelProperty("名称") private String name; - @ExcelProperty("描述") - private String description; - @ExcelProperty(value = "类型", converter = DictConvert.class) @DictFormat("production_line_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 private String type; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/vo/ProductionlineExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/vo/ProductionlineExportReqVO.java index a242061b..7e9ee896 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/vo/ProductionlineExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/vo/ProductionlineExportReqVO.java @@ -18,9 +18,6 @@ public class ProductionlineExportReqVO { @Schema(description = "名称") private String name; - @Schema(description = "描述") - private String description; - @Schema(description = "类型") private String type; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/vo/ProjectExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/vo/ProjectExportReqVO.java index e4fec69d..a36d3da1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/vo/ProjectExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/vo/ProjectExportReqVO.java @@ -18,9 +18,6 @@ public class ProjectExportReqVO { @Schema(description = "名称") private String name; - @Schema(description = "描述") - private String description; - @Schema(description = "客户代码") private String customerCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/areabasic/AreabasicMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/areabasic/AreabasicMapper.java index f3c7b84a..c42e939e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/areabasic/AreabasicMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/areabasic/AreabasicMapper.java @@ -47,7 +47,6 @@ public interface AreabasicMapper extends BaseMapperX { return selectList(new LambdaQueryWrapperX() .eqIfPresent(AreabasicDO::getCode, reqVO.getCode()) .likeIfPresent(AreabasicDO::getName, reqVO.getName()) - .eqIfPresent(AreabasicDO::getDescription, reqVO.getDescription()) .eqIfPresent(AreabasicDO::getWarehouseCode, reqVO.getWarehouseCode()) .eqIfPresent(AreabasicDO::getType, reqVO.getType()) .eqIfPresent(AreabasicDO::getIsFunctional, reqVO.getIsFunctional()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/process/ProcessMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/process/ProcessMapper.java index 8d463244..4adacbc4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/process/ProcessMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/process/ProcessMapper.java @@ -46,7 +46,6 @@ public interface ProcessMapper extends BaseMapperX { return selectList(new LambdaQueryWrapperX() .eqIfPresent(ProcessDO::getCode, reqVO.getCode()) .likeIfPresent(ProcessDO::getName, reqVO.getName()) - .eqIfPresent(ProcessDO::getDescription, reqVO.getDescription()) .eqIfPresent(ProcessDO::getType, reqVO.getType()) .eqIfPresent(ProcessDO::getWorkshopCode, reqVO.getWorkshopCode()) .eqIfPresent(ProcessDO::getProductionLineCode, reqVO.getProductionLineCode()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionline/ProductionlineMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionline/ProductionlineMapper.java index 056c1faa..9158eb92 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionline/ProductionlineMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionline/ProductionlineMapper.java @@ -46,7 +46,6 @@ public interface ProductionlineMapper extends BaseMapperX { return selectList(new LambdaQueryWrapperX() .eqIfPresent(ProductionlineDO::getCode, reqVO.getCode()) .likeIfPresent(ProductionlineDO::getName, reqVO.getName()) - .eqIfPresent(ProductionlineDO::getDescription, reqVO.getDescription()) .eqIfPresent(ProductionlineDO::getType, reqVO.getType()) .eqIfPresent(ProductionlineDO::getWorkshopCode, reqVO.getWorkshopCode()) .eqIfPresent(ProductionlineDO::getRawLocationCode, reqVO.getRawLocationCode()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/project/ProjectMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/project/ProjectMapper.java index 49478d77..b8fd9a94 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/project/ProjectMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/project/ProjectMapper.java @@ -41,7 +41,6 @@ public interface ProjectMapper extends BaseMapperX { return selectList(new LambdaQueryWrapperX() .eqIfPresent(ProjectDO::getCode, reqVO.getCode()) .likeIfPresent(ProjectDO::getName, reqVO.getName()) - .eqIfPresent(ProjectDO::getDescription, reqVO.getDescription()) .eqIfPresent(ProjectDO::getCustomerCode, reqVO.getCustomerCode()) .eqIfPresent(ProjectDO::getAvailable, reqVO.getAvailable()) .betweenIfPresent(ProjectDO::getActiveTime, reqVO.getActiveTime()) From 6931912ff09f327306d5f9d6c36cc3acf6e8fdf0 Mon Sep 17 00:00:00 2001 From: yejiaxing <591141169@qq.com> Date: Tue, 14 Nov 2023 17:27:39 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=8C=89=E9=92=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 2 + .../purchase/PurchaseMainController.java | 11 ++++- .../purchasePlan/PurchasePlanMainMapper.java | 8 ++++ .../PurchasereceiptJobMainMapper.java | 6 +-- .../service/purchase/PurchaseMainService.java | 18 +++++++-- .../purchase/PurchaseMainServiceImpl.java | 40 ++++++++++++++++--- 6 files changed, 72 insertions(+), 13 deletions(-) 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 2318bed3..fe38456b 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 @@ -373,6 +373,8 @@ public interface ErrorCodeConstants { //采购订单主ErrorCode ErrorCode PURCHASE_MAIN_NOT_EXISTS = new ErrorCode(1_000_063_000, "采购订单主不存在"); ErrorCode PURCHASE_CLOSED_NOT_EXISTS = new ErrorCode(1_000_063_001, "采购订单已关闭"); + ErrorCode PURCHASE_MAIN_CANNOT_CLOSE = new ErrorCode(1_000_073_004, "采购订单状态不支持关闭"); + ErrorCode PURCHASE_MAIN_EXISTS = new ErrorCode(1_000_073_004, "采购订单存在要货计划任务单"); //采购订单子ErrorCode ErrorCode PURCHASE_DETAIL_NOT_EXISTS = new ErrorCode(1_000_063_001, "采购订单子不存在"); ErrorCode PURCHASE_DETAIL_ARGUMENT_NOT_EXISTS = new ErrorCode(1_000_063_002, "采购订单明细:订单号ppo_number、订单行pline_number、零件号pitem_code无效"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/PurchaseMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/PurchaseMainController.java index cead9329..36f40d4e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/PurchaseMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/PurchaseMainController.java @@ -144,7 +144,7 @@ public class PurchaseMainController { @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) - @PreAuthorize("@ss.hasPermission('wms:purchaseclaim-request-main:import')") + @PreAuthorize("@ss.hasPermission('wms:purchase-main:import')") public CommonResult> importExcel(HttpServletResponse response, @RequestParam("file") MultipartFile file, @RequestParam(value = "mode") Integer mode, @@ -162,4 +162,13 @@ public class PurchaseMainController { return success(returnMap); } + @PutMapping("/close") + @Operation(summary = "关闭采购订单申请主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('wms:purchase-main:close')") + public CommonResult closePurchaseMain(@RequestParam("id") Long id) { + Integer count = purchaseMainService.closePurchaseMain(id); + return success(count > 0); + } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanMainMapper.java index 62559d5b..20537c22 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasePlan/PurchasePlanMainMapper.java @@ -8,6 +8,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanMainExportReqVO; import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanMainPageReqVO; import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO; +import com.win.module.wms.enums.order.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -47,6 +48,13 @@ public interface PurchasePlanMainMapper extends BaseMapperX default PageResult selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } + + default Long selectBySonNumber(String number) { + return selectCount(new LambdaQueryWrapperX() + .eq(PurchasePlanMainDO::getNumber, number) + .ne(PurchasePlanMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); + } + default List selectList(PurchasePlanMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(PurchasePlanMainDO::getSupplierCode, reqVO.getSupplierCode()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptJob/PurchasereceiptJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptJob/PurchasereceiptJobMainMapper.java index d8f4038d..46de9edd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptJob/PurchasereceiptJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptJob/PurchasereceiptJobMainMapper.java @@ -74,10 +74,10 @@ public interface PurchasereceiptJobMainMapper extends BaseMapperX() - .eq(PurchasereceiptJobMainDO::getRequestNumber, requestNumbere) - .eq(PurchasereceiptJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); + .eq(PurchasereceiptJobMainDO::getRequestNumber, requestNumber) + .ne(PurchasereceiptJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); } default List selectList(PurchasereceiptJobMainExportReqVO reqVO) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java index 88b63eec..1b7f634a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainService.java @@ -78,17 +78,27 @@ public interface PurchaseMainService { * @return 采购订单主列表 */ List getPurchaseMainList(PurchaseMainExportReqVO exportReqVO); + /** * Order----VPur * 校验采购订单明细 - * @author chenfang - * @param pnumber 单据号 + * + * @param pnumber 单据号 * @param psupplierCode 供应商代码 - * @param pitemCode 物品代码 + * @param pitemCode 物品代码 * @return 采购订单子列表 + * @author chenfang */ - public PurchaseDetailDO selectPurchaseDetailDoExist(String pnumber, String psupplierCode, String pitemCode,String poLine); + public PurchaseDetailDO selectPurchaseDetailDoExist(String pnumber, String psupplierCode, String pitemCode, String poLine); public List importPurchaseMaintList(List datas, Integer mode, boolean updatePart); + /** + * 关闭采购订单申请主 + * + * @param id 采采购订单申请主ID + * @return 更新数量 + */ + Integer closePurchaseMain(Long id); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java index adcf5f48..d0f26d49 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java @@ -8,6 +8,8 @@ import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.wms.controller.purchase.vo.*; import com.win.module.wms.convert.purchase.PurchaseDetailConvert; import com.win.module.wms.convert.purchase.PurchaseMainConvert; @@ -22,7 +24,9 @@ import com.win.module.wms.dal.dataobject.stdcostprice.StdcostpriceDO; import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; import com.win.module.wms.dal.mysql.purchase.PurchaseDetailMapper; import com.win.module.wms.dal.mysql.purchase.PurchaseMainMapper; +import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusState; import com.win.module.wms.service.currencyexchange.CurrencyexchangeService; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itempackaging.ItempackagingService; @@ -34,6 +38,7 @@ import com.win.module.wms.service.supplieritem.SupplieritemService; import com.win.module.wms.util.JobUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; @@ -45,8 +50,7 @@ import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY; -import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASE_MAIN_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 采购订单主 Service 实现类 @@ -79,6 +83,11 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { private PurchaseDetailMapper purchaseDetailMapper; @Resource private RequestsettingService requestsettingService; + @Resource + private TrendsApi trendsApi; + @Resource + private PurchasePlanMainMapper purchasePlanMainMapper; + @Override public Long createPurchaseMain(PurchaseMainCreateReqVO createReqVO) { @@ -111,10 +120,12 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { purchaseMainMapper.deleteById(id); } - private void validatePurchaseMainExists(Long id) { - if (purchaseMainMapper.selectById(id) == null) { - throw exception(PURCHASE_MAIN_NOT_EXISTS); + private PurchaseMainDO validatePurchaseMainExists(Long id) { + PurchaseMainDO purchaseMainDO = purchaseMainMapper.selectById(id); + if (purchaseMainDO == null) { + throw exception(PURCHASERECEIPT_REQUEST_MAIN_NOT_EXISTS); } + return purchaseMainDO; } @Override @@ -296,4 +307,23 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { } return errorList; } + + @Override + @Transactional + public Integer closePurchaseMain(Long id) { + // 校验存在存在下级单据 + PurchaseMainDO mainDO = validatePurchaseMainExists(id); + Long count = purchasePlanMainMapper.selectBySonNumber(mainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PURCHASERECEIPT_REQUEST_JOB_EXISTS); + } + RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); + boolean flag = requestStatusState.close(); + if(!flag) { + throw new ServiceException(PURCHASE_MAIN_CANNOT_CLOSE); + } + mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录 + trendsApi.createTrends(id, "plan_purchase_main", "关闭了采购订单申请", TrendsTypeEnum.UPDATE); + return purchaseMainMapper.updateById(mainDO); + } } From a570b2324450fba091c70b6bef4b894432708770 Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Tue, 14 Nov 2023 17:48:20 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=88=90=E5=93=81=E5=8F=91=E8=BF=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DeliverRequestDetailDO.java | 7 ++- .../deliverRequest/DeliverRequestMainDO.java | 6 +-- .../DeliverRequestMainServiceImpl.java | 31 ++++++------ .../ProductputawayRequestMainServiceImpl.java | 1 - .../ProductscrapRequestMainServiceImpl.java | 49 ++++++++++++------- ...PurchasereceiptRequestMainServiceImpl.java | 7 +-- 6 files changed, 50 insertions(+), 51 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java index 216a77dc..a8202580 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java @@ -42,7 +42,7 @@ public class DeliverRequestDetailDO extends BaseDO { /** * 包装号 */ - @NotBlank + private String packingNumber; /** * 器具号 @@ -51,14 +51,14 @@ public class DeliverRequestDetailDO extends BaseDO { /** * 批次 */ - @NotBlank + private String batch; /** * 库存状态 * * 枚举 {@link TODO inventory_status 对应的类} */ - @NotBlank + private String inventoryStatus; /** * 到货主代码 @@ -67,7 +67,6 @@ public class DeliverRequestDetailDO extends BaseDO { /** * 到库位代码 */ - @NotBlank private String toLocationCode; /** * 主表ID diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java index 4c7427a2..0626c394 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java @@ -42,7 +42,6 @@ public class DeliverRequestMainDO extends BaseDO { /** * 客户月台代码 */ - @NotBlank private String customerDockCode; /** * 承运商 @@ -63,12 +62,11 @@ public class DeliverRequestMainDO extends BaseDO { /** * 从仓库代码 */ - @NotBlank + private String fromWarehouseCode; /** * 到仓库代码 */ - @NotBlank private String toWarehouseCode; /** * 从库位类型范围 @@ -117,7 +115,7 @@ public class DeliverRequestMainDO extends BaseDO { /** * 部门 */ - @NotBlank + private String departmentCode; /** * 状态 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java index ed5e4320..7c7f6351 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java @@ -90,15 +90,14 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService @Override public Long createDeliverRequestMain(DeliverRequestMainCreateReqVO createReqVO) { // 插入 - RequestsettingDO requestsettingDO = new RequestsettingDO(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverRequest"); DeliverRequestMainDO deliverRequestMain = validatorToCreate(createReqVO,requestsettingDO); //调用自动执行方法 if(RequestStatusEnum.HANDLING.getCode().equals(deliverRequestMain.getStatus())) { } - trendsApi.createTrends(requestsettingDO.getId(), "IssueRequest", "增加了发料申请", TrendsTypeEnum.CREATE); + trendsApi.createTrends(requestsettingDO.getId(), "DeliverRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE); return deliverRequestMain.getId(); - } private DeliverRequestMainDO validatorToCreate(DeliverRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { @@ -136,7 +135,6 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService deliverRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); deliverRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); return deliverRequestMainDO; - } private DeliverRequestDetailDO validateDetailMethod(DeliverRequestDetailDO deliverRequestDetailDO) { @@ -151,29 +149,32 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService Isqty(saleDetailDO.getShippedQty(), deliverRequestDetailDO.getQty(), saleDetailDO.getOrderQty(), deliverRequestDetailDO.getSoNumber(), deliverRequestDetailDO.getSoLine(), deliverRequestDetailDO.getItemCode()); } return deliverRequestDetailDO; - } @Override public void updateDeliverRequestMain(DeliverRequestMainUpdateReqVO updateReqVO) { - RequestsettingDO requestsettingDO = new RequestsettingDO(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverRequest"); // 校验存在 validateDeliverRequestMainExists(updateReqVO.getId()); // 更新 DeliverRequestMainDO deliverRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); - DeliverRequestMainDO updateObj = DeliverRequestMainConvert.INSTANCE.convert(updateReqVO); - deliverRequestMainMapper.updateById(updateObj); + if(RequestStatusEnum.HANDLING.getCode().equals(deliverRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "DeliverRequest", "增加了制品上架申请", TrendsTypeEnum.CREATE); } private DeliverRequestMainDO validatorToUpdate(DeliverRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { BusinesstypeDO businesstypeDO = new BusinesstypeDO(); DeliverRequestMainDO deliverRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); //子表校验 List subList = updateReqVO.getSubList(); - List subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList); - for (DeliverRequestDetailDO issueRequestDetailDO : subDOList) { - validateDetailMethod(issueRequestDetailDO); + if(subList!=null){ + List subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList); + for (DeliverRequestDetailDO issueRequestDetailDO : subDOList) { + validateDetailMethod(issueRequestDetailDO); + deliverRequestDetailMapper.updateBatch(subDOList); + } } deliverRequestMainMapper.updateById(deliverRequestMainDO); - deliverRequestDetailMapper.updateBatch(subDOList); return deliverRequestMainDO; } @@ -298,7 +299,6 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService try{ Isuom(itembasicDO.getUom(),detailDo.getUom()); }catch (Exception ex) { - message.append(ex.getMessage()).append(","); } }catch (Exception ex) { @@ -306,12 +306,10 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService } try{ SaleDetailDO saleDetailDO =validatorSale(detailDo.getSoNumber(),detailDo.getSoLine(),detailDo.getItemCode()); - if(saleDetailDO!=null) { try { Isqty(saleDetailDO.getShippedQty(), detailDo.getQty(), saleDetailDO.getOrderQty(), detailDo.getSoNumber(), detailDo.getSoLine(), detailDo.getItemCode()); } catch (Exception ex) { - message.append(ex.getMessage()).append(","); } } @@ -337,7 +335,6 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - BusinesstypeDO businesstypeDO = new BusinesstypeDO(); DeliverRequestMainDO mainDo = DeliverRequestMainConvert.INSTANCE.convert(createReqVO); String messageMain = validateDeliverRequestMainImport(mainDo, businesstypeDO); @@ -347,7 +344,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService boolean flag = true; for (DeliverRequestDetailDO detailDO : subDOList) { String messageDetail = validateIssueRequestDetailImport(detailDO, mainDo, businesstypeDO); - if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { DeliverRequestImportErrorVO importErrorVO = DeliverRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); importErrorVO.setImportStatus("失败"); messageMain = messageMain + messageDetail; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java index c920d4c3..28150896 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java @@ -190,7 +190,6 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque ProductputawayRequestMainDO productputawayRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); //子表校验 List subList = updateReqVO.getSubList(); - if(subList!=null) { List subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList05(subList); for (ProductputawayRequestDetailDO productputawayRequestDetailDO : subDOList) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java index fe49f384..3582909c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productscrapRequest/ProductscrapRequestMainServiceImpl.java @@ -14,11 +14,16 @@ import com.win.module.system.api.dict.dto.DictDataRespDTO; import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.issueRequest.vo.*; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestDetailUpdateReqVO; +import com.win.module.wms.controller.productputawayRequest.vo.ProductputawayRequestMainUpdateReqVO; import com.win.module.wms.controller.productscrapRequest.vo.*; import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert; import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; +import com.win.module.wms.convert.productputawayRequest.ProductputawayRequestDetailConvert; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestDetailDO; +import com.win.module.wms.dal.dataobject.productputawayRequest.ProductputawayRequestMainDO; import com.win.module.wms.dal.mysql.productscrapRequest.*; import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestDetailConvert; import com.win.module.wms.convert.productscrapRequest.ProductscrapRequestMainConvert; @@ -105,16 +110,6 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Resource private RequestsettingService requestsettingService; - @Resource - private ShiftService shiftService; - - @Resource - private SupplieritemService supplieritemService; - - @Resource - private LocationService locationService; - - @Override public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) { RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductScrapRequest"); @@ -167,7 +162,6 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa productscrapRequestMainDO.setDueTime(balance2.getExpireDate()); } isqty(productscrapRequestDetailDO.getQty(), blance1.getQty()); - } private ProductscrapRequestMainDO validateMainMethod(ProductscrapRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { @@ -197,13 +191,34 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Override public void updateProductscrapRequestMain(ProductscrapRequestMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductPutawayRequest"); // 校验存在 validateProductscrapRequestMainExists(updateReqVO.getId()); // 更新 - ProductscrapRequestMainDO updateObj = ProductscrapRequestMainConvert.INSTANCE.convert(updateReqVO); - productscrapRequestMainMapper.updateById(updateObj); + ProductscrapRequestMainDO productscrapRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(productscrapRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "ProductPutawayRequest", "增加了制品报废申请", TrendsTypeEnum.CREATE); + } + private ProductscrapRequestMainDO validatorToUpdate(ProductscrapRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); + ProductscrapRequestMainDO productputawayRequestMainDO = validateMainMethod(updateReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = updateReqVO.getSubList(); + if(subList!=null) { + List subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList05(subList); + for (ProductscrapRequestDetailDO productscrapRequestDetailDO : subDOList) { + validateDetailMethod(productscrapRequestDetailDO, businesstypeDO, productputawayRequestMainDO); + } + productscrapRequestDetailMapper.updateBatch(subDOList); + } + productscrapRequestMainMapper.updateById(productputawayRequestMainDO); + return productputawayRequestMainDO; + } + @Override public void deleteProductscrapRequestMain(Long id) { // 校验存在 @@ -214,9 +229,7 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa @Override public PageResult getProductscrapRequestMainSenior(CustomConditions conditions) { - return productscrapRequestMainMapper.selectSenior(conditions); - } private void validateProductscrapRequestMainExists(Long id) { @@ -245,7 +258,7 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa return productscrapRequestMainMapper.selectList(exportReqVO); } - private String validateIssueRequestMainImport(ProductscrapRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + private String validateProductscrapRequestMainImport(ProductscrapRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { StringBuilder message = new StringBuilder(); mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); mainDo.setRequestTime(LocalDateTime.now()); @@ -258,7 +271,6 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); } - if (businesstypeDO == null) { message.append("根据单据设置未查找到制品报废申请申请的相关业务类型"); } else { @@ -266,7 +278,6 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa mainDo.setFromLocationTypes(businesstypeDO.getInLocationTypes()); mainDo.setFromAreaCodes(businesstypeDO.getInAreaCodes()); } - return message.toString(); } @@ -375,7 +386,7 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa datas.forEach(createReqVO -> { BusinesstypeDO businesstypeDO = businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductScrapRequest"); ProductscrapRequestMainDO mainDo = ProductscrapRequestMainConvert.INSTANCE.convert(createReqVO); - String messageMain = validateIssueRequestMainImport(mainDo, businesstypeDO); + String messageMain = validateProductscrapRequestMainImport(mainDo, businesstypeDO); List subList = createReqVO.getSubList(); List subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList03(subList); // 是否有错误数据 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java index bf38d0f3..1716b4fc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java @@ -81,8 +81,6 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq @Resource private SupplierService supplierService; @Resource - private SupplieritemService supplieritemService; - @Resource private RuleService ruleService; @Resource private SerialNumberApi serialNumberApi; @@ -99,10 +97,6 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq @Resource private JobUtils jobUtils; @Resource - private ShiftService shiftService; - @Resource - private PurchaseMainService purchaseMainService; - @Resource private PurchasereceiptRecordMainService purchasereceiptRecordMainService; @Resource private PurchasereceiptRecordDetailService purchasereceiptRecordDetailService; @@ -411,6 +405,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq * @param mainDO 采购收货主 * @param detailDOList 采购收货子 */ + @Transactional private void generateJob(PurchasereceiptRequestMainDO mainDO, List detailDOList) { RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest"); From 2cc470a9ade39b60374967868a4e5d43fd9d1c9e Mon Sep 17 00:00:00 2001 From: zhang_li <2235006734@qqq.com> Date: Tue, 14 Nov 2023 19:27:01 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E5=AF=BC=E5=87=BAtrue=E6=94=B9=E6=88=90?= =?UTF-8?q?=E6=98=AF=E5=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/ConfigurationsettingExcelVO.java | 3 ++- .../paramsetting/vo/ParamsettingExcelVO.java | 3 ++- .../module/wms/controller/shift/vo/ShiftExcelVO.java | 11 ++++++----- .../wms/controller/shift/vo/ShiftExportReqVO.java | 3 --- .../win/module/wms/dal/mysql/shift/ShiftMapper.java | 1 - 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/vo/ConfigurationsettingExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/vo/ConfigurationsettingExcelVO.java index 70f14019..f08dea61 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/vo/ConfigurationsettingExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/configurationsetting/vo/ConfigurationsettingExcelVO.java @@ -43,7 +43,8 @@ public class ConfigurationsettingExcelVO { @ExcelProperty("描述") private String description; - @ExcelProperty("必填") + @ExcelProperty(value = "必填", converter = DictConvert.class) + @DictFormat("true_false") private String isRequired; @ExcelProperty("创建时间") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/paramsetting/vo/ParamsettingExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/paramsetting/vo/ParamsettingExcelVO.java index 58334f37..0b0a6c31 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/paramsetting/vo/ParamsettingExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/paramsetting/vo/ParamsettingExcelVO.java @@ -47,7 +47,8 @@ public class ParamsettingExcelVO { @ExcelProperty("描述") private String description; - @ExcelProperty("必填") + @ExcelProperty(value = "必填", converter = DictConvert.class) + @DictFormat("true_false") private String isRequired; @ExcelProperty("创建时间") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/shift/vo/ShiftExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/shift/vo/ShiftExcelVO.java index c46a8f05..44b01618 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/shift/vo/ShiftExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/shift/vo/ShiftExcelVO.java @@ -1,5 +1,7 @@ package com.win.module.wms.controller.shift.vo; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -27,9 +29,6 @@ public class ShiftExcelVO { @ExcelProperty("名称") private String name; - @ExcelProperty("描述") - private String description; - @ExcelProperty("开始时间") private LocalDateTime beginTime; @@ -51,10 +50,12 @@ public class ShiftExcelVO { @ExcelProperty("创建者ID") private String creator; - @ExcelProperty("是否跨天") + @ExcelProperty(value = "是否跨天", converter = DictConvert.class) + @DictFormat("true_false") private String endAtNextDay; - @ExcelProperty("是否可用") + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @DictFormat("true_false") private String available; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/shift/vo/ShiftExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/shift/vo/ShiftExportReqVO.java index 78637881..fc907908 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/shift/vo/ShiftExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/shift/vo/ShiftExportReqVO.java @@ -19,9 +19,6 @@ public class ShiftExportReqVO { @Schema(description = "名称") private String name; - @Schema(description = "描述") - private String description; - @Schema(description = "开始时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] beginTime; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/shift/ShiftMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/shift/ShiftMapper.java index 89f85f3c..25cd14e1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/shift/ShiftMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/shift/ShiftMapper.java @@ -46,7 +46,6 @@ public interface ShiftMapper extends BaseMapperX { return selectList(new LambdaQueryWrapperX() .eqIfPresent(ShiftDO::getCode, reqVO.getCode()) .likeIfPresent(ShiftDO::getName, reqVO.getName()) - .eqIfPresent(ShiftDO::getDescription, reqVO.getDescription()) .betweenIfPresent(ShiftDO::getBeginTime, reqVO.getBeginTime()) .betweenIfPresent(ShiftDO::getEntTime, reqVO.getEntTime()) .betweenIfPresent(ShiftDO::getActiveTime, reqVO.getActiveTime()) From 72ff4b29a508d0d5cbaa5189bad3b7b68beb1f4c Mon Sep 17 00:00:00 2001 From: chenfang Date: Tue, 14 Nov 2023 19:53:38 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E/=E4=BF=AE=E6=94=B9/?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E7=9A=84=E6=A0=A1=E9=AA=8C=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wms/enums/ErrorCodeConstants.java | 3 + ...oductionreturnRequestDetailController.java | 9 +- ...ProductionreturnRequestMainController.java | 58 ++- .../ProductionreturnRequestImportErrorVO.java | 25 ++ .../vo/ProductionreturnRequestImportVO.java | 45 +++ .../vo/ProductionreturnRequestMainBaseVO.java | 2 + ...roductionreturnRequestMainCreateReqVO.java | 9 + .../PurchaseclaimRequestMainController.java | 2 +- .../vo/PurchasereceiptRequestMainBaseVO.java | 1 + .../PurchasereceiptRequestMainImportVO.java | 2 + .../PurchasereturnRequestMainController.java | 50 +++ .../PurchasereturnRequestImportErrorVO.java | 25 ++ .../vo/PurchasereturnRequestImportVO.java | 81 ++++ .../vo/PurchasereturnRequestMainBaseVO.java | 7 +- .../PurchasereturnRequestMainCreateReqVO.java | 7 + .../PurchasereturnRequestMainUpdateReqVO.java | 6 + .../PutawayRequestMainController.java | 53 ++- .../vo/PutawayRequestDetailBaseVO.java | 2 + .../vo/PutawayRequestImportErrorVO.java | 25 ++ .../vo/PutawayRequestImportVO.java | 63 +++ .../vo/PutawayRequestMainBaseVO.java | 6 +- .../vo/PutawayRequestMainCreateReqVO.java | 7 + .../vo/PutawayRequestMainUpdateReqVO.java | 6 + .../IssueRequestDetailConvert.java | 6 +- .../issueRequest/IssueRequestMainConvert.java | 10 +- .../ProductionreturnRequestDetailConvert.java | 1 + .../ProductionreturnRequestMainConvert.java | 17 +- .../PurchaseclaimRequestDetailConvert.java | 7 +- .../PurchaseclaimRequestMainConvert.java | 20 +- .../PurchasereceiptRequestDetailConvert.java | 4 +- .../PurchasereceiptRequestMainConvert.java | 4 +- .../PurchasereturnRequestDetailConvert.java | 32 +- .../PurchasereturnRequestMainConvert.java | 16 +- .../PutawayRequestDetailConvert.java | 29 +- .../PutawayRequestMainConvert.java | 13 +- .../PurchasereturnRequestMainDO.java | 5 +- .../ProductionreturnRequestDetailMapper.java | 1 - .../ProductionreturnRequestMainMapper.java | 3 + .../ProductputawayRequestDetailMapper.java | 1 - .../PurchasereturnRequestMainMapper.java | 6 + .../PutawayRequestMainMapper.java | 3 + .../itembasic/ItembasicServiceImpl.java | 9 +- .../ProductionlineServiceImpl.java | 3 +- .../ProductionlineitemService.java | 2 +- .../ProductionlineitemServiceImpl.java | 14 +- .../ProductionreturnRequestDetailService.java | 10 +- ...ductionreturnRequestDetailServiceImpl.java | 88 ++++- .../ProductionreturnRequestMainService.java | 14 +- ...roductionreturnRequestMainServiceImpl.java | 314 ++++++++++++++- .../ProductputawayRequestMainServiceImpl.java | 56 +-- .../PurchaseclaimRequestMainService.java | 2 +- .../PurchaseclaimRequestMainServiceImpl.java | 363 +++++++++++------- .../PurchasereceiptRecordMainServiceImpl.java | 4 +- .../PurchasereturnRequestMainService.java | 14 +- .../PurchasereturnRequestMainServiceImpl.java | 345 ++++++++++++++++- .../PutawayRequestMainService.java | 7 +- .../PutawayRequestMainServiceImpl.java | 301 ++++++++++++++- .../service/workshop/WorkshopServiceImpl.java | 5 +- .../workstation/WorkstationServiceImpl.java | 8 +- 59 files changed, 1910 insertions(+), 321 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportErrorVO.java create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportVO.java diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index fe38456b..30d9d195 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 @@ -62,6 +62,7 @@ public interface ErrorCodeConstants { ErrorCode PRODUCTIONLINEITEM_PRODUCT_LINE_COED_NOT_EXISTS = new ErrorCode(1_000_024_003, "产线代码不存在"); ErrorCode PRODUCTIONLINEITEM_ITEM_CODE_NOT_EXISTS = new ErrorCode(1_000_024_004, "物品代码不存在"); ErrorCode PRODUCTIONLINEITEM_AVAILABLE_NOT_EXISTS = new ErrorCode(1_000_024_005, "是否可用不存在"); + ErrorCode PRODUCTIONLINEITEM_NOT_EXIST = new ErrorCode(1_000_024_006, "生产线物料关系不存在【{}】"); //采购价格单ErrorCode ErrorCode SUPPLIER_NOT_EXISTS = new ErrorCode(1_000_025_000, "供应商不存在"); ErrorCode SUPPLIER_NOT_EXISTSNO = new ErrorCode(1_000_025_001, "代码已存在"); @@ -200,6 +201,7 @@ public interface ErrorCodeConstants { ErrorCode WORKSTATION_PRODUECTION_LINE_CODE_NOT_EXISTS = new ErrorCode(1_000_040_005, "生产线代码不存在"); ErrorCode WORKSTATION_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_040_006, "导入工序不能为空"); ErrorCode WORKSTATION_PRODUECTION_LINE_CODE_AND_WORKSTATION_RELATION_ERROR = new ErrorCode(1_000_040_007, "生产线代码与工位不匹配"); + ErrorCode WORKSTATION_RELATION_ERROR = new ErrorCode(1_000_040_008, "车间,生产线代码与工位不匹配【{}】"); //工序ErrorCode ErrorCode PROCESS_NOT_EXISTS = new ErrorCode(1_000_041_000, "工序不存在"); ErrorCode PROCESS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_041_001, "导入工序数据不能为空"); @@ -554,6 +556,7 @@ public interface ErrorCodeConstants { ErrorCode PRODUCTIONRETURN_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_097_000, "生产退料申请主不存在"); //生产退料申请子ErrorCode ErrorCode PRODUCTIONRETURN_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_097_001, "生产退料申请子不存在"); + ErrorCode PRODUCTIONRETURN_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_097_002, "导入生产退料申请不能为空"); //生产退料申请主ErrorCode ErrorCode PRODUCTIONRETURN_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_098_000, "生产退料任务主不存在"); //生产退料任务子ErrorCode diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java index bb0a13a8..2e085da1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestDetailController.java @@ -10,6 +10,7 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestDetailService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -43,15 +44,15 @@ public class ProductionreturnRequestDetailController { @PostMapping("/create") @Operation(summary = "创建生产退料申请子") @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-detail:create')") - public CommonResult createProductionreturnRequestDetail(@Valid @RequestBody ProductionreturnRequestDetailCreateReqVO createReqVO) { - return success(productionreturnRequestDetailService.createProductionreturnRequestDetail(createReqVO)); + public CommonResult createProductionreturnRequestDetail(@Valid @RequestBody ProductionreturnRequestDetailCreateReqVO createReqVO, @RequestBody RequestsettingDO requestsettingDO) { + return success(productionreturnRequestDetailService.createProductionreturnRequestDetail(createReqVO,requestsettingDO)); } @PutMapping("/update") @Operation(summary = "更新生产退料申请子") @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-detail:update')") - public CommonResult updateProductionreturnRequestDetail(@Valid @RequestBody ProductionreturnRequestDetailUpdateReqVO updateReqVO) { - productionreturnRequestDetailService.updateProductionreturnRequestDetail(updateReqVO); + public CommonResult updateProductionreturnRequestDetail(@Valid @RequestBody ProductionreturnRequestDetailUpdateReqVO updateReqVO, @RequestBody RequestsettingDO requestsettingDO) { + productionreturnRequestDetailService.updateProductionreturnRequestDetail(updateReqVO,requestsettingDO); return success(true); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java index 61f54f23..faac4b1d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/ProductionreturnRequestMainController.java @@ -3,6 +3,8 @@ package com.win.module.wms.controller.productionreturnRequest; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.excel.core.util.ConvertUtil; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; @@ -10,21 +12,28 @@ import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestDetailService; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.productionreturnRequest.ProductionreturnRequestMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import static com.win.framework.common.pojo.CommonResult.success; @@ -38,7 +47,6 @@ public class ProductionreturnRequestMainController { @Resource private ProductionreturnRequestMainService productionreturnRequestMainService; - @Resource private ProductionreturnRequestDetailService productionreturnRequestDetailService; @@ -48,15 +56,15 @@ public class ProductionreturnRequestMainController { @PostMapping("/create") @Operation(summary = "创建生产退料申请主") @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:create')") - public CommonResult createProductionreturnRequestMain(@Valid @RequestBody ProductionreturnRequestMainCreateReqVO createReqVO) { - return success(productionreturnRequestMainService.createProductionreturnRequestMain(createReqVO)); + public CommonResult createProductionreturnRequestMain(@Valid @RequestBody ProductionreturnRequestMainCreateReqVO createReqVO,@RequestBody BusinesstypeDO businesstypeDO,@RequestBody RequestsettingDO requestsettingDO) { + return success(productionreturnRequestMainService.createProductionreturnRequestMain(createReqVO,businesstypeDO,requestsettingDO)); } @PutMapping("/update") @Operation(summary = "更新生产退料申请主") @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:update')") - public CommonResult updateProductionreturnRequestMain(@Valid @RequestBody ProductionreturnRequestMainUpdateReqVO updateReqVO) { - productionreturnRequestMainService.updateProductionreturnRequestMain(updateReqVO); + public CommonResult updateProductionreturnRequestMain(@Valid @RequestBody ProductionreturnRequestMainUpdateReqVO updateReqVO,@RequestBody BusinesstypeDO businesstypeDO,@RequestBody RequestsettingDO requestsettingDO) { + productionreturnRequestMainService.updateProductionreturnRequestMain(updateReqVO,businesstypeDO,requestsettingDO); return success(true); } @@ -144,4 +152,44 @@ public class ProductionreturnRequestMainController { return success(result); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入生产退料申请信息模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = new ArrayList<>(); + Map mapDropDown = new HashMap<>(); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(8, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(10, uom); + // 输出 + ExcelUtils.write(response, "生产退料信息导入模板.xlsx", "生产退料申请信息列表", ProductionreturnRequestImportVO.class, list, mapDropDown); + } + + @PostMapping("/import") + @Operation(summary = "导入生产退料基本信息") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:productionreturn-request-main:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart, + @RequestParam(value = "businesstypeDO")BusinesstypeDO businesstypeDO, + @RequestParam(value = "requestsettingDO")RequestsettingDO requestsettingDO) throws Exception { + List list = ExcelUtils.read(file, ProductionreturnRequestImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(ProductionreturnRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = productionreturnRequestMainService.importProductionreturnRequestList(createReqVOList, mode, updatePart,businesstypeDO,requestsettingDO); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("生产退料基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + returnMap.put("errorFile", url); + } + return success(returnMap); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportErrorVO.java new file mode 100644 index 00000000..1130aef9 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportErrorVO.java @@ -0,0 +1,25 @@ +package com.win.module.wms.controller.productionreturnRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 生产退料申请 Excel VO + * + * @author 超级管理员 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductionreturnRequestImportErrorVO extends ProductionreturnRequestImportVO { + + @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/productionreturnRequest/vo/ProductionreturnRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportVO.java new file mode 100644 index 00000000..e82d361e --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestImportVO.java @@ -0,0 +1,45 @@ +package com.win.module.wms.controller.productionreturnRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + + +/** + * 生产退料申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class ProductionreturnRequestImportVO { + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("车间代码") + private String workshopCode; + + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("数量") + private String qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainBaseVO.java index dc0fe0b8..55ec90eb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.productionreturnRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -34,6 +35,7 @@ public class ProductionreturnRequestMainBaseVO { @Schema(description = "从库区代码范围") private String fromAreaCodes; + @OnlyOne @Schema(description = "单据号") private String number; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainCreateReqVO.java index 601f9ea7..2ad4d451 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionreturnRequest/vo/ProductionreturnRequestMainCreateReqVO.java @@ -1,12 +1,21 @@ package com.win.module.wms.controller.productionreturnRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestDetailCreateReqVO; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 生产退料申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ProductionreturnRequestMainCreateReqVO extends ProductionreturnRequestMainBaseVO { + + @SubObject + @Schema(description = "子表数据") + private List subList; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java index 86609b2f..2a9fd6ec 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java @@ -66,7 +66,7 @@ public class PurchaseclaimRequestMainController { @Operation(summary = "更新采购索赔申请主") @PreAuthorize("@ss.hasPermission('wms:purchaseclaim-request-main:update')") public CommonResult updatePurchaseclaimRequestMain(@Valid @RequestBody PurchaseclaimRequestMainUpdateReqVO updateReqVO) { - Integer result = purchaseclaimRequestMainService.updatePurchaseclaimRequestMain(updateReqVO); + Long result = purchaseclaimRequestMainService.updatePurchaseclaimRequestMain(updateReqVO); return success(result > 0); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainBaseVO.java index b2f17c52..186ff877 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainBaseVO.java @@ -58,6 +58,7 @@ public class PurchasereceiptRequestMainBaseVO { @Schema(description = "到月台代码") private String toDockCode; + @OnlyOne @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) private String number; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainImportVO.java index e2602d85..3c7d088f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRequest/vo/PurchasereceiptRequestMainImportVO.java @@ -23,6 +23,8 @@ import java.time.LocalDateTime; @Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 public class PurchasereceiptRequestMainImportVO { + @ExcelProperty("单据号") + private String number; //主表数据 @ExcelProperty("供应商代码") private String supplierCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/PurchasereturnRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/PurchasereturnRequestMainController.java index d19ff509..8f6dacce 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/PurchasereturnRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/PurchasereturnRequestMainController.java @@ -1,9 +1,13 @@ package com.win.module.wms.controller.purchasereturnRequest; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.excel.core.util.ConvertUtil; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.purchasereturnRequest.vo.*; +import com.win.module.wms.enums.DictTypeConstants; +import io.swagger.v3.oas.annotations.Parameters; import com.win.module.wms.convert.purchasereturnRequest.PurchasereturnRequestDetailConvert; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO; import com.win.module.wms.service.purchasereturnRequest.PurchasereturnRequestDetailService; @@ -17,6 +21,8 @@ import io.swagger.v3.oas.annotations.Operation; import javax.validation.*; import javax.servlet.http.*; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import java.io.IOException; @@ -32,6 +38,7 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import com.win.module.wms.convert.purchasereturnRequest.PurchasereturnRequestMainConvert; import com.win.module.wms.service.purchasereturnRequest.PurchasereturnRequestMainService; +import org.springframework.web.multipart.MultipartFile; @Tag(name = "管理后台 - 采购退货申请主") @RestController @@ -128,6 +135,49 @@ public class PurchasereturnRequestMainController { ExcelUtils.write(response, "采购退货申请主.xls", "数据", PurchasereturnRequestMainExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入采购退货信息模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = new ArrayList<>(); + Map mapDropDown = new HashMap<>(); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(10, uom); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(11, inventoryStatus); + String[] reason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); + mapDropDown.put(13, reason); + String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); + mapDropDown.put(15, transferMode); + // 输出 + ExcelUtils.write(response, "采购退货信息导入模板.xlsx", "采购退货信息列表", PurchasereturnRequestImportVO.class, list, mapDropDown); + } + + + @PostMapping("/import") + @Operation(summary = "导入采购退货基本信息") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:purchasereturn-request-main:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + List list = ExcelUtils.read(file, PurchasereturnRequestImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(PurchasereturnRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = purchasereturnRequestMainService.importPurchasereturnRequestList(createReqVOList, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("采购退货基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + returnMap.put("errorFile", url); + } + return success(returnMap); + } @GetMapping("/getPurchasereturnRequestById") @Operation(summary = "APP获得采购退货申请主子表明细列表") @Parameter(name = "id", description = "编号", required = true, example = "1024") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportErrorVO.java new file mode 100644 index 00000000..b8baec5d --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportErrorVO.java @@ -0,0 +1,25 @@ +package com.win.module.wms.controller.purchasereturnRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 供应商发票申请 Excel VO + * + * @author 超级管理员 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PurchasereturnRequestImportErrorVO extends PurchasereturnRequestImportVO { + + @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/purchasereturnRequest/vo/PurchasereturnRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportVO.java new file mode 100644 index 00000000..025579b1 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportVO.java @@ -0,0 +1,81 @@ +package com.win.module.wms.controller.purchasereturnRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + + +/** + * 供应商发票申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class PurchasereturnRequestImportVO { + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("采购收货记录单号") + private String purchaseReceiptRecordNumber; + + @ExcelProperty("供应商代码") + private String supplierCode; + + @ExcelProperty("订单号") + private String poNumber; + + @ExcelProperty("订单行") + private String poLine; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("来源库位") + private String fromLocationCode; + + @ExcelProperty(value = "原因", converter = DictConvert.class) + @DictFormat(DictTypeConstants.PURCHASE_RETURN_REASON) + private String reason; + + @ExcelProperty("承运商") + private String carrierCode; + + @ExcelProperty(value = "运输方式", converter = DictConvert.class) + @DictFormat(DictTypeConstants.TRANSFER_MODE) + private String transferMode; + + @ExcelProperty("车牌号") + private String vehiclePlateNumber; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainBaseVO.java index c865176e..394e4573 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainBaseVO.java @@ -1,11 +1,8 @@ package com.win.module.wms.controller.purchasereturnRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; import java.time.LocalDateTime; import javax.validation.constraints.*; import org.springframework.format.annotation.DateTimeFormat; @@ -44,12 +41,12 @@ public class PurchasereturnRequestMainBaseVO { private String vehiclePlateNumber; @Schema(description = "从仓库代码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "从仓库代码不能为空") private String fromWarehouseCode; @Schema(description = "到仓库代码") private String toWarehouseCode; + @OnlyOne @Schema(description = "单据号") private String number; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainCreateReqVO.java index c47e485c..e8c71257 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainCreateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.purchasereturnRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 采购退货申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class PurchasereturnRequestMainCreateReqVO extends PurchasereturnRequestMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainUpdateReqVO.java index d2b84012..bb784012 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainUpdateReqVO.java @@ -1,12 +1,18 @@ package com.win.module.wms.controller.purchasereturnRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; + @Schema(description = "管理后台 - 采购退货申请主更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class PurchasereturnRequestMainUpdateReqVO extends PurchasereturnRequestMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/PutawayRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/PutawayRequestMainController.java index d6b0ab97..b743cac8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/PutawayRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/PutawayRequestMainController.java @@ -1,9 +1,13 @@ package com.win.module.wms.controller.putawayRequest; import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.framework.excel.core.util.ConvertUtil; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.wms.controller.putawayRequest.vo.*; +import com.win.module.wms.enums.DictTypeConstants; +import io.swagger.v3.oas.annotations.Parameters; import com.win.module.wms.convert.putawayRequest.PutawayRequestDetailConvert; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestDetailDO; import com.win.module.wms.service.putawayRequest.PutawayRequestDetailService; @@ -16,6 +20,8 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; import javax.validation.*; import javax.servlet.http.*; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.*; import java.io.IOException; import com.win.framework.common.pojo.PageResult; @@ -27,6 +33,7 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; import com.win.module.wms.convert.putawayRequest.PutawayRequestMainConvert; import com.win.module.wms.service.putawayRequest.PutawayRequestMainService; +import org.springframework.web.multipart.MultipartFile; @Tag(name = "管理后台 - 上架申请主") @RestController @@ -118,7 +125,26 @@ public class PutawayRequestMainController { //后端创建个字段作为前端展示的虚拟字段 vo.setCreator(user.getNickname()); } - ExcelUtils.write(response, "上架申请主.xls", "数据", PutawayRequestMainExcelVO.class, datas); + Map mapDropDown = new HashMap<>(); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(8, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(10, uom); + ExcelUtils.write(response, "上架申请主.xls", "数据", PutawayRequestMainExcelVO.class, datas,mapDropDown); + } + + @GetMapping("/get-import-template") + @Operation(summary = "获得导入上架申请信息模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = new ArrayList<>(); + Map mapDropDown = new HashMap<>(); + String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS); + mapDropDown.put(8, inventoryStatus); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(10, uom); + // 输出 + ExcelUtils.write(response, "上架申请信息导入模板.xlsx", "上架申请信息列表", PutawayRequestImportVO.class, list, mapDropDown); } @GetMapping("/getPutawayRequestById") @@ -139,4 +165,29 @@ public class PutawayRequestMainController { return success(result); } + + @PostMapping("/import") + @Operation(summary = "导入上架申请基本信息") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + @PreAuthorize("@ss.hasPermission('wms:putaway-request-main:import')") + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + List list = ExcelUtils.read(file, PutawayRequestImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(PutawayRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = putawayRequestMainService.importPutawayRequestList(createReqVOList, mode, updatePart); + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("上架申请基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + returnMap.put("errorFile", url); + } + return success(returnMap); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestDetailBaseVO.java index 9ffcf58e..46a8456b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestDetailBaseVO.java @@ -92,4 +92,6 @@ public class PutawayRequestDetailBaseVO { @Schema(description = "到货主代码") private String toOwnerCode; + @Schema(description = "主表id") + private Long masterId; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportErrorVO.java new file mode 100644 index 00000000..bcdb2660 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportErrorVO.java @@ -0,0 +1,25 @@ +package com.win.module.wms.controller.putawayRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +/** + * 供应商发票申请 Excel VO + * + * @author 超级管理员 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PutawayRequestImportErrorVO extends PutawayRequestImportVO { + + @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/putawayRequest/vo/PutawayRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportVO.java new file mode 100644 index 00000000..b7d36815 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestImportVO.java @@ -0,0 +1,63 @@ +package com.win.module.wms.controller.putawayRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import com.win.module.wms.enums.DictTypeConstants; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + + +/** + * 上架申请 Excel VO + * + * @author 超级管理员 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 +public class PutawayRequestImportVO { + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("供应商代码") + private String supplierCode; + + @ExcelProperty("订单号") + private String poNumber; + + @ExcelProperty("订单行") + private String poLine; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("包装号") + private String packingNumber; + + @ExcelProperty("器具号") + private String containerNumber; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty(value = "库存状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.INVENTORY_STATUS) + private String inventoryStatus; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat(DictTypeConstants.UOM) + private String uom; + + @ExcelProperty("来源库位") + private String fromLocationCode; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainBaseVO.java index 03df50b7..ec3345ad 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.putawayRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -37,6 +38,7 @@ public class PutawayRequestMainBaseVO { @Schema(description = "从库区代码范围") private String fromAreaCodes; + @OnlyOne @Schema(description = "单据号") private String number; @@ -101,8 +103,4 @@ public class PutawayRequestMainBaseVO { @NotNull(message = "直接生成记录不能为空") private String directCreateRecord; - - - - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainCreateReqVO.java index 84014eb5..beaa7aaa 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainCreateReqVO.java @@ -1,12 +1,19 @@ package com.win.module.wms.controller.putawayRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; + @Schema(description = "管理后台 - 上架申请主创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class PutawayRequestMainCreateReqVO extends PutawayRequestMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainUpdateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainUpdateReqVO.java index d929d8dd..b9d13be8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainUpdateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/putawayRequest/vo/PutawayRequestMainUpdateReqVO.java @@ -1,12 +1,18 @@ package com.win.module.wms.controller.putawayRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; + @Schema(description = "管理后台 - 上架申请主更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class PutawayRequestMainUpdateReqVO extends PutawayRequestMainBaseVO { + @SubObject + @Schema(description = "子表数据") + private List subList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java index 579e5dc2..32c27339 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestDetailConvert.java @@ -32,9 +32,11 @@ public interface IssueRequestDetailConvert { PageResult convertPage(PageResult page); - List convertList02(List list); + IssueRequestDetailCreateReqVO convert1(IssueRequestDetailDO detailDO); + List convertList02(List list); List convertList03(List list); + List convertList04(List list); List convertList05(List list); @@ -53,6 +55,4 @@ public interface IssueRequestDetailConvert { @Mapping(source = "mainVo.number", target = "number"), }) IssueRequestImportErrorVO convert(IssueRequestMainCreateReqVO mainVo, IssueRequestDetailCreateReqVO detailVo); - - IssueRequestDetailCreateReqVO convert1(IssueRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java index f1146b97..29948fce 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/issueRequest/IssueRequestMainConvert.java @@ -1,19 +1,15 @@ package com.win.module.wms.convert.issueRequest; -import java.util.*; - import com.win.framework.common.pojo.PageResult; - import com.win.module.wms.controller.issueRequest.vo.*; -import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainCreateReqVO; -import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; -import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; -import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; + +import java.util.List; /** * 发料申请主 Convert diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestDetailConvert.java index a1e149dc..0fcdabe1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestDetailConvert.java @@ -34,4 +34,5 @@ public interface ProductionreturnRequestDetailConvert { 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/productionreturnRequest/ProductionreturnRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java index 30e4145b..ff6b47db 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionreturnRequest/ProductionreturnRequestMainConvert.java @@ -4,11 +4,11 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainCreateReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainExcelVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainRespVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainUpdateReqVO; +import com.win.module.wms.controller.productionreturnRequest.vo.*; +import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; @@ -22,9 +22,7 @@ public interface ProductionreturnRequestMainConvert { ProductionreturnRequestMainConvert INSTANCE = Mappers.getMapper(ProductionreturnRequestMainConvert.class); - ProductionreturnRequestMainDO convert(ProductionreturnRequestMainCreateReqVO bean); - - ProductionreturnRequestMainDO convert(ProductionreturnRequestMainUpdateReqVO bean); + ProductionreturnRequestMainDO convert(ProductionreturnRequestMainBaseVO baseVO); ProductionreturnRequestMainRespVO convert(ProductionreturnRequestMainDO bean); @@ -33,5 +31,8 @@ public interface ProductionreturnRequestMainConvert { PageResult convertPage(PageResult page); List convertList02(List list); - + @Mappings({ + @Mapping(source = "createReqVO.number", target = "number"), + }) + ProductionreturnRequestImportErrorVO convert(ProductionreturnRequestMainCreateReqVO createReqVO, ProductionreturnRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestDetailConvert.java index 6f02c50c..e5445824 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestDetailConvert.java @@ -2,8 +2,11 @@ package com.win.module.wms.convert.purchaseclaimRequest; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.purchaseclaimRequest.vo.*; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainCreateReqVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; @@ -39,6 +42,8 @@ public interface PurchaseclaimRequestDetailConvert { List convertList04(List list); + List convertList05(List list); + @Mappings({ @Mapping(source = "mainDO.number", target = "number"), @Mapping(source = "mainDO.remark", target = "remark"), @@ -52,5 +57,5 @@ public interface PurchaseclaimRequestDetailConvert { @Mappings({ @Mapping(source = "mainVo.number", target = "number"), }) - PurchaseclaimRequestImportErrorVO convert(PurchaseclaimRequestMainCreateReqVO mainVo, PurchaseclaimRequestDetailCreateReqVO detailVo); + PurchaseclaimRequestImportErrorVO convert(PurchaseclaimRequestMainCreateReqVO mainVo, PurchaseclaimRequestDetailDO detailDo); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestMainConvert.java index f006aede..4c02ff8a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseclaimRequest/PurchaseclaimRequestMainConvert.java @@ -1,10 +1,12 @@ package com.win.module.wms.convert.purchaseclaimRequest; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainUpdateReqVO; import com.win.module.wms.controller.purchaseclaimRequest.vo.*; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @@ -31,4 +33,20 @@ public interface PurchaseclaimRequestMainConvert { List convertList02(List list); + PurchaseclaimRequestMainDO convert(PurchaseclaimRequestMainBaseVO baseVO); + + @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"), + }) + PurchaseclaimRequestMainExcelVO convert(PurchaseclaimRequestMainDO mainDO, PurchaseclaimRequestDetailDO detailDO); + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + PurchaseclaimRequestImportErrorVO convert(PurchaseclaimRequestMainCreateReqVO mainVo, PurchaseclaimRequestDetailDO detailDo); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestDetailConvert.java index 93324092..d04277af 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereceiptRequest/PurchasereceiptRequestDetailConvert.java @@ -46,7 +46,9 @@ public interface PurchasereceiptRequestDetailConvert { @Mapping(source = "mainDO.updater", target = "updater"), }) PurchasereceiptRequestDetailExcelVO convert(PurchasereceiptRequestMainDO mainDO, PurchasereceiptRequestDetailDO detailDO); - + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) PurchasereceiptRequestMainImportErrorVO convert(PurchasereceiptRequestMainCreateReqVO mainVo, PurchasereceiptRequestDetailCreateReqVO detailVo); } 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 03d55ddc..2c32bdf4 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,7 +32,9 @@ public interface PurchasereceiptRequestMainConvert { PageResult convertPage(PageResult page); List convertList02(List list); - + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) PurchasereceiptRequestMainImportErrorVO convert(PurchasereceiptRequestMainCreateReqVO mainVo, PurchasereceiptRequestDetailDO detailDo); @Mappings({ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestDetailConvert.java index a268cb66..7675b801 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestDetailConvert.java @@ -4,11 +4,13 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestDetailCreateReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestDetailExcelVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestDetailRespVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestDetailUpdateReqVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO; +import com.win.module.wms.controller.purchasereturnRequest.vo.*; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO; @@ -28,10 +30,32 @@ public interface PurchasereturnRequestDetailConvert { PurchasereturnRequestDetailRespVO convert(PurchasereturnRequestDetailDO bean); + PurchasereturnRequestDetailCreateReqVO convert1(PurchasereturnRequestDetailDO bean); + List convertList(List list); PageResult convertPage(PageResult page); List convertList02(List list); + List convertList03(List list); + + List convertList04(List list); + List convertList05(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"), + }) + PurchasereturnRequestDetailExcelVO convert(PurchasereturnRequestMainDO mainDO, PurchasereturnRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + PurchasereturnRequestImportErrorVO convert(PurchasereturnRequestMainCreateReqVO mainVo, PurchasereturnRequestDetailCreateReqVO detailVo); + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestMainConvert.java index 5dc65822..3d4e0743 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestMainConvert.java @@ -4,11 +4,14 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainCreateReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainExcelVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainRespVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainUpdateReqVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestImportErrorVO; +import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainCreateReqVO; +import com.win.module.wms.controller.purchasereturnRequest.vo.*; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; @@ -33,5 +36,10 @@ public interface PurchasereturnRequestMainConvert { PageResult convertPage(PageResult page); List convertList02(List list); + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + PurchasereturnRequestImportErrorVO convert(PurchasereturnRequestMainCreateReqVO mainVo, PurchasereturnRequestDetailDO detailDo); + PurchasereturnRequestMainDO convert(PurchasereturnRequestMainBaseVO baseVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestDetailConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestDetailConvert.java index da877730..825546ce 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestDetailConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestDetailConvert.java @@ -4,11 +4,11 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestDetailCreateReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestDetailExcelVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestDetailRespVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestDetailUpdateReqVO; +import com.win.module.wms.controller.putawayRequest.vo.*; +import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestDetailDO; @@ -28,10 +28,31 @@ public interface PutawayRequestDetailConvert { PutawayRequestDetailRespVO convert(PutawayRequestDetailDO bean); + PutawayRequestDetailCreateReqVO convert1(PutawayRequestDetailDO detailDO); List convertList(List list); PageResult convertPage(PageResult page); List convertList02(List list); + List convertList03(List list); + + List convertList04(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"), + }) + PutawayRequestDetailExcelVO convert(PutawayRequestMainDO mainDO, PutawayRequestDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainVo.number", target = "number"), + }) + PutawayRequestImportErrorVO convert(PutawayRequestMainCreateReqVO mainVo, PutawayRequestDetailCreateReqVO detailVo); + + List convertList05(List subList); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestMainConvert.java index adb2acee..0bc4fb3e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/putawayRequest/PutawayRequestMainConvert.java @@ -4,11 +4,11 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainCreateReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainExcelVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainRespVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainUpdateReqVO; +import com.win.module.wms.controller.putawayRequest.vo.*; +import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; @@ -34,4 +34,9 @@ public interface PutawayRequestMainConvert { List convertList02(List list); + PutawayRequestMainDO convert(PutawayRequestMainBaseVO baseVO); + @Mappings({ + @Mapping(source = "createReqVO.number", target = "number"), + }) + PutawayRequestImportErrorVO convert(PutawayRequestMainCreateReqVO createReqVO, PutawayRequestDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereturnRequest/PurchasereturnRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereturnRequest/PurchasereturnRequestMainDO.java index 57ee6d77..fad48feb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereturnRequest/PurchasereturnRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereturnRequest/PurchasereturnRequestMainDO.java @@ -1,10 +1,7 @@ package com.win.module.wms.dal.dataobject.purchasereturnRequest; +import com.sun.xml.bind.v2.TODO; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; 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/productionreturnRequest/ProductionreturnRequestDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.java index bc4d12f5..d4fba8f9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestDetailMapper.java @@ -53,7 +53,6 @@ public interface ProductionreturnRequestDetailMapper extends BaseMapperX selectList(ProductionreturnRequestDetailExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() - .eqIfPresent(ProductionreturnRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductionreturnRequestDetailDO::getProductionLineCode, reqVO.getProductionLineCode()) .eqIfPresent(ProductionreturnRequestDetailDO::getWorkStationCode, reqVO.getWorkStationCode()) .eqIfPresent(ProductionreturnRequestDetailDO::getInventoryStatus, reqVO.getInventoryStatus()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java index 3dcdfeb7..e76ef52a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionreturnRequest/ProductionreturnRequestMainMapper.java @@ -76,4 +76,7 @@ public interface ProductionreturnRequestMainMapper extends BaseMapperX selectList(ProductputawayRequestDetailExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() - .eqIfPresent(ProductputawayRequestDetailDO::getMasterId, reqVO.getMasterId()) .eqIfPresent(ProductputawayRequestDetailDO::getPackingNumber, reqVO.getPackingNumber()) .eqIfPresent(ProductputawayRequestDetailDO::getContainerNumber, reqVO.getContainerNumber()) .eqIfPresent(ProductputawayRequestDetailDO::getBatch, reqVO.getBatch()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereturnRequest/PurchasereturnRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereturnRequest/PurchasereturnRequestMainMapper.java index d33ce366..a1f4ba09 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereturnRequest/PurchasereturnRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereturnRequest/PurchasereturnRequestMainMapper.java @@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainExportReqVO; import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainPageReqVO; +import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import org.apache.ibatis.annotations.Mapper; @@ -57,6 +58,11 @@ public interface PurchasereturnRequestMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } + + default PurchasereturnRequestMainDO selectRecordNumberAndSupplierCode(String purchaseReceiptRecordNumber, String supplierCode) { + return selectOne(PurchasereturnRequestMainDO::getPurchaseReceiptRecordNumber, purchaseReceiptRecordNumber,PurchasereturnRequestMainDO::getSupplierCode,supplierCode); + } + default List selectList(PurchasereturnRequestMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(PurchasereturnRequestMainDO::getPurchaseReceiptRecordNumber, reqVO.getPurchaseReceiptRecordNumber()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/putawayRequest/PutawayRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/putawayRequest/PutawayRequestMainMapper.java index 38c9ff7b..916ee350 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/putawayRequest/PutawayRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/putawayRequest/PutawayRequestMainMapper.java @@ -92,4 +92,7 @@ public interface PutawayRequestMainMapper extends BaseMapperX productionLineCodeAndpItemCodeExist(String pproductionLineCode,String pitemCode); + public ProductionlineitemDO productionLineCodeAndpItemCodeExist(String pproductionLineCode,String pitemCode); /** * 获得用高级搜索户分页列表 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java index 8002809b..c72828d9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionlineitem/ProductionlineitemServiceImpl.java @@ -169,21 +169,17 @@ public class ProductionlineitemServiceImpl implements ProductionlineitemService } //零件生产线关系有效 @Override - public List productionLineCodeAndpItemCodeExist(String pproductionLineCode,String pitemCode) { + public ProductionlineitemDO productionLineCodeAndpItemCodeExist(String pproductionLineCode,String pitemCode) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("production_line_code",pproductionLineCode); queryWrapper.eq("item_code",pitemCode); - List productionlineitemDO = productionlineitemMapper.selectList(queryWrapper); + queryWrapper.eq("available","TRUE"); + ProductionlineitemDO productionlineitemDO = productionlineitemMapper.selectOne(queryWrapper); if( productionlineitemDO != null){ - for (ProductionlineitemDO aDo : productionlineitemDO) { - if("TRUE".equals(aDo.getAvailable())){ - return productionlineitemDO; - } - } + return productionlineitemDO; }else { - throw new UtilException( "生产线" + pproductionLineCode + "与零件" + pitemCode + "关系无效"); + throw exception(PRODUCTIONLINEITEM_NOT_EXIST, "生产线" + pproductionLineCode + "与零件" + pitemCode + "关系无效"); } - return productionlineitemDO; } @Override diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java index 2ec6f4e6..5fd0c936 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailService.java @@ -2,11 +2,9 @@ package com.win.module.wms.service.productionreturnRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailCreateReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailExportReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailPageReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailUpdateReqVO; +import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import javax.validation.Valid; import java.util.Collection; @@ -25,14 +23,14 @@ public interface ProductionreturnRequestDetailService { * @param createReqVO 创建信息 * @return 编号 */ - Long createProductionreturnRequestDetail(@Valid ProductionreturnRequestDetailCreateReqVO createReqVO); + Long createProductionreturnRequestDetail(@Valid ProductionreturnRequestDetailCreateReqVO createReqVO, RequestsettingDO requestsettingDO); /** * 更新生产退料申请子 * * @param updateReqVO 更新信息 */ - void updateProductionreturnRequestDetail(@Valid ProductionreturnRequestDetailUpdateReqVO updateReqVO); + void updateProductionreturnRequestDetail(@Valid ProductionreturnRequestDetailUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO); /** * 删除生产退料申请子 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java index de560561..333c7fb5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestDetailServiceImpl.java @@ -2,22 +2,36 @@ package com.win.module.wms.service.productionreturnRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailCreateReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailExportReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailPageReqVO; import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestDetailUpdateReqVO; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; -import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; +import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.productionline.ProductionlineService; +import com.win.module.wms.service.productionlineitem.ProductionlineitemService; +import com.win.module.wms.service.workstation.WorkstationService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.module.wms.enums.ErrorCodeConstants.ITEMBASIC_CODE_EXISTS; import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_REQUEST_DETAIL_NOT_EXISTS; /** @@ -31,22 +45,39 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur @Resource private ProductionreturnRequestDetailMapper productionreturnRequestDetailMapper; - + @Resource + private ProductionreturnRequestMainService productionreturnRequestMainService; + @Resource + private ItembasicService itembasicService; + @Resource + private ProductionlineService productionlineService; + @Resource + private ProductionlineitemService productionlineitemService; + @Resource + private WorkstationService workstationService; + @Resource + private JobUtils jobUtils; + @Resource + private TrendsApi trendsApi; @Override - public Long createProductionreturnRequestDetail(ProductionreturnRequestDetailCreateReqVO createReqVO) { + public Long createProductionreturnRequestDetail(ProductionreturnRequestDetailCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { // 插入 ProductionreturnRequestDetailDO productionreturnRequestDetail = ProductionreturnRequestDetailConvert.INSTANCE.convert(createReqVO); productionreturnRequestDetailMapper.insert(productionreturnRequestDetail); + trendsApi.createTrends(productionreturnRequestDetail.getId(), requestsettingDO.getCode(), "修改了生产退料申请", TrendsTypeEnum.CREATE); // 返回 return productionreturnRequestDetail.getId(); } @Override - public void updateProductionreturnRequestDetail(ProductionreturnRequestDetailUpdateReqVO updateReqVO) { + public void updateProductionreturnRequestDetail(ProductionreturnRequestDetailUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { // 校验存在 validateProductionreturnRequestDetailExists(updateReqVO.getId()); // 更新 + ProductionreturnRequestMainDO productionreturnRequestMainToNumber = productionreturnRequestMainService.getProductionreturnRequestMainToNumber(updateReqVO.getNumber()); ProductionreturnRequestDetailDO updateObj = ProductionreturnRequestDetailConvert.INSTANCE.convert(updateReqVO); + validatorDetailMethod(updateObj,productionreturnRequestMainToNumber); + trendsApi.createTrends(updateObj.getId(), requestsettingDO.getCode(), "修改了生产退料申请", TrendsTypeEnum.UPDATE); productionreturnRequestDetailMapper.updateById(updateObj); } @@ -88,4 +119,53 @@ public class ProductionreturnRequestDetailServiceImpl implements Productionretur public PageResult getProductionreturnRequestDetailSenior(CustomConditions conditions) { return productionreturnRequestDetailMapper.selectSenior(conditions); } + + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo) { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + ProductionlineDO productionlineDO = validatorProductionline(detailDo.getProductionLineCode()); + detailDo.setFromLocationCode(productionlineDO.getRawLocationCode()); + this.validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode()); + WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); + if(workstationDO != null){ + detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); + } + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.set(0,detailDo.getInventoryStatus()); + validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + } + + private ItembasicDO validatorItembasic(String itemCode){ + return itembasicService.selectItembasic(itemCode); + } + + private void ifUomSuccess(String itemUom,String uom) { + if(!itemUom.equals(uom)){ + throw exception(ITEMBASIC_CODE_EXISTS,"提示单位"+ uom + "错误,应该是" + itemUom); + } + } + + private ProductionlineDO validatorProductionline(String pproductionLineCode){ + return productionlineService.productionLineCodeExist(pproductionLineCode); + } + private void validatorProductionlineitem(String productionLineCode,String itemCode) { + productionlineitemService.productionLineCodeAndpItemCodeExist(productionLineCode, itemCode); + } + + private WorkstationDO validatorWorkStation(String workshopCode,String productionLineCode,String workStationCode){ + if(workStationCode != ""){ + return workstationService.selectWorkstationExist(workshopCode, productionLineCode, workStationCode); + }else { + return null; + } + } + + private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String locationCode,List inventoryStatus){ + jobUtils.selectlocationReturnManagementAccuracy(itemCode,packingNumber,batch,locationCode,inventoryStatus); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java index 835ced58..926b9640 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainService.java @@ -2,11 +2,10 @@ package com.win.module.wms.service.productionreturnRequest; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainCreateReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainExportReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainPageReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainUpdateReqVO; +import com.win.module.wms.controller.productionreturnRequest.vo.*; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import javax.validation.Valid; import java.util.Collection; @@ -25,14 +24,14 @@ public interface ProductionreturnRequestMainService { * @param createReqVO 创建信息 * @return 编号 */ - Long createProductionreturnRequestMain(@Valid ProductionreturnRequestMainCreateReqVO createReqVO); + Long createProductionreturnRequestMain(@Valid ProductionreturnRequestMainCreateReqVO createReqVO,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO); /** * 更新生产退料申请主 * * @param updateReqVO 更新信息 */ - void updateProductionreturnRequestMain(@Valid ProductionreturnRequestMainUpdateReqVO updateReqVO); + void updateProductionreturnRequestMain(@Valid ProductionreturnRequestMainUpdateReqVO updateReqVO,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO); /** * 删除生产退料申请主 @@ -48,6 +47,7 @@ public interface ProductionreturnRequestMainService { * @return 生产退料申请主 */ ProductionreturnRequestMainDO getProductionreturnRequestMain(Long id); + ProductionreturnRequestMainDO getProductionreturnRequestMainToNumber(String number); /** * 获得生产退料申请主列表 @@ -80,4 +80,6 @@ public interface ProductionreturnRequestMainService { * @return 分页列表 */ PageResult getProductionreturnRequestMainSenior(CustomConditions conditions); + + List importProductionreturnRequestList(List createReqVOList, Integer mode, Boolean updatePart, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java index 3cfbb134..e71b316d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreturnRequest/ProductionreturnRequestMainServiceImpl.java @@ -1,24 +1,54 @@ package com.win.module.wms.service.productionreturnRequest; +import cn.hutool.core.collection.CollUtil; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainCreateReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainExportReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainPageReqVO; -import com.win.module.wms.controller.productionreturnRequest.vo.ProductionreturnRequestMainUpdateReqVO; +import com.win.framework.common.util.validation.ValidationUtils; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.productionreturnRequest.vo.*; +import com.win.module.wms.controller.productionreturnRequest.vo.*; import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; -import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; +import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; +import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; +import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; +import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; +import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper; import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestMainMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.productionline.ProductionlineService; +import com.win.module.wms.service.productionlineitem.ProductionlineitemService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.service.workshop.WorkshopService; +import com.win.module.wms.service.workstation.WorkstationService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import javax.validation.Validator; +import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTIONRETURN_REQUEST_MAIN_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.*; /** * 生产退料申请主 Service 实现类 @@ -31,26 +61,58 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR @Resource private ProductionreturnRequestMainMapper productionreturnRequestMainMapper; - + @Resource + private ProductionreturnRequestDetailMapper productionreturnRequestDetailMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private WorkshopService workshopService; + @Resource + private ProductionlineService productionlineService; + @Resource + private ProductionlineitemService productionlineitemService; + @Resource + private WorkstationService workstationService; + @Resource + private JobUtils jobUtils; + @Resource + private Validator validator; + @Resource + private RequestsettingService requestsettingService; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private TrendsApi trendsApi; @Override - public Long createProductionreturnRequestMain(ProductionreturnRequestMainCreateReqVO createReqVO) { + @Transactional + public Long createProductionreturnRequestMain(ProductionreturnRequestMainCreateReqVO createReqVO,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { // 插入 - ProductionreturnRequestMainDO productionreturnRequestMain = ProductionreturnRequestMainConvert.INSTANCE.convert(createReqVO); - productionreturnRequestMainMapper.insert(productionreturnRequestMain); + ProductionreturnRequestMainDO productionreturnRequestMainDO = validatorToCreate(createReqVO, businesstypeDO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), requestsettingDO.getCode(), "增加了生产退料申请", TrendsTypeEnum.CREATE); // 返回 - return productionreturnRequestMain.getId(); + return createReqVO.getId(); } @Override - public void updateProductionreturnRequestMain(ProductionreturnRequestMainUpdateReqVO updateReqVO) { + @Transactional + public void updateProductionreturnRequestMain(ProductionreturnRequestMainUpdateReqVO updateReqVO,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { // 校验存在 validateProductionreturnRequestMainExists(updateReqVO.getId()); + ProductionreturnRequestMainDO productionreturnRequestMainDO = validatorMainMethod(updateReqVO, businesstypeDO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), requestsettingDO.getCode(), "修改了生产退料申请", TrendsTypeEnum.UPDATE); // 更新 ProductionreturnRequestMainDO updateObj = ProductionreturnRequestMainConvert.INSTANCE.convert(updateReqVO); productionreturnRequestMainMapper.updateById(updateObj); } @Override + @Transactional public void deleteProductionreturnRequestMain(Long id) { // 校验存在 validateProductionreturnRequestMainExists(id); @@ -69,6 +131,11 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR return productionreturnRequestMainMapper.selectById(id); } + @Override + public ProductionreturnRequestMainDO getProductionreturnRequestMainToNumber(String number) { + return productionreturnRequestMainMapper.selectByNumber(number); + } + @Override public List getProductionreturnRequestMainList(Collection ids) { return productionreturnRequestMainMapper.selectBatchIds(ids); @@ -88,4 +155,227 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR public PageResult getProductionreturnRequestMainSenior(CustomConditions conditions) { return productionreturnRequestMainMapper.selectSenior(conditions); } + + @Override + public List importProductionreturnRequestList(List createReqVOList + , Integer mode, Boolean updatePart,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { + if (CollUtil.isEmpty(createReqVOList)) { + throw exception(PRODUCTIONRETURN_REQUEST_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + createReqVOList.forEach(createReqVO -> { + ProductionreturnRequestMainDO mainDo = ProductionreturnRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validatorProductionreturnRequestMainImport(mainDo,businesstypeDO,requestsettingDO); + List subList = createReqVO.getSubList(); + List subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (ProductionreturnRequestDetailDO detailDO : subDOList) { + String messageDetail = validatorProductionreturnRequestDetailImport(detailDO, mainDo,businesstypeDO); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + ProductionreturnRequestImportErrorVO importErrorVO = ProductionreturnRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + } + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setRequestTime(LocalDateTime.now()); + productionreturnRequestMainMapper.insert(mainDo); + for (ProductionreturnRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + } + productionreturnRequestDetailMapper.insertBatch(subDOList); + } + }); + return errorList; + } + + // 新增校验 + private ProductionreturnRequestMainDO validatorToCreate(ProductionreturnRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { + ProductionreturnRequestMainDO mainDo = validatorMainMethod(createReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList); + for (ProductionreturnRequestDetailDO detailDO : subDOList) { + validatorDetailMethod(detailDO,mainDo); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RETURN_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + productionreturnRequestMainMapper.insert(mainDo); + for (ProductionreturnRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(mainDo.getNumber()); + } + productionreturnRequestDetailMapper.insertBatch(subDOList); + return mainDo; + } + + //校验主表公共方法(适用于新增/修改) + private ProductionreturnRequestMainDO validatorMainMethod(ProductionreturnRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO){ + ProductionreturnRequestMainDO mainDo = ProductionreturnRequestMainConvert.INSTANCE.convert(baseVO); + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + return mainDo; + } + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(ProductionreturnRequestDetailDO detailDo,ProductionreturnRequestMainDO mainDo) { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + validatorProductionline(detailDo.getProductionLineCode()); + ProductionlineitemDO productionlineitemDO = validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode()); + detailDo.setFromLocationCode(productionlineitemDO.getRawLocationCode()); + WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); + if(workstationDO != null){ + detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); + } + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.set(0,detailDo.getInventoryStatus()); + validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + } + + /** + * 校验主表导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validatorProductionreturnRequestMainImport(ProductionreturnRequestMainDO mainDo,BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { + StringBuilder message = new StringBuilder(); + try { + validatorWorkshop(mainDo.getWorkshopCode()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + if (businesstypeDO == null) { + message.append("根据业务类型设置未查找到采购退货申请的相关业务类型"); + } + else { + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } + if (requestsettingDO == null) { + message.append("根据申请单设置未查找到采购退货申请的相关业务类型"); + } + else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + /** + * 校验子表导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validatorProductionreturnRequestDetailImport(ProductionreturnRequestDetailDO detailDo, ProductionreturnRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + try { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + try { + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + this.validatorProductionline(detailDo.getProductionLineCode()); + + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + ProductionlineitemDO productionlineitemDO = validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode()); + detailDo.setFromLocationCode(productionlineitemDO.getRawLocationCode()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); + if(workstationDO != null){ + detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); + } + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.set(0,detailDo.getInventoryStatus()); + validatorManagementAccuracy(detailDo.getItemCode(), null, null, detailDo.getFromLocationCode(), inventoryStatus); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ValidationUtils.validate(validator, detailDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + private ItembasicDO validatorItembasic(String itemCode){ + return itembasicService.selectItembasic(itemCode); + } + + private void ifUomSuccess(String itemUom,String uom) { + if(!itemUom.equals(uom)){ + throw exception(ITEMBASIC_CODE_EXISTS,"提示单位"+ uom + "错误,应该是" + itemUom); + } + } + + private WorkshopDO validatorWorkshop(String workshopCode){ + return workshopService.selectWorkshopExist(workshopCode); + } + private void validatorProductionline(String pproductionLineCode){ + productionlineService.productionLineCodeExist(pproductionLineCode); + } + private ProductionlineitemDO validatorProductionlineitem(String productionLineCode,String itemCode) { + return productionlineitemService.productionLineCodeAndpItemCodeExist(productionLineCode, itemCode); + } + + private WorkstationDO validatorWorkStation(String workshopCode,String productionLineCode,String workStationCode){ + if(workStationCode != ""){ + return workstationService.selectWorkstationExist(workshopCode, productionLineCode, workStationCode); + }else { + return null; + } + } + private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String locationCode,List inventoryStatus){ + jobUtils.selectlocationReturnManagementAccuracy(itemCode,packingNumber,batch,locationCode,inventoryStatus); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java index 28150896..e2cd2c45 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayRequest/ProductputawayRequestMainServiceImpl.java @@ -326,7 +326,7 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque } List selectlocationReturnManagement(String ItemCode, String packingNumber, - String batch , String fromLocationCode , List business){ + String batch , String fromLocationCode , List business){ List balanceDO = jobUtils.selectlocationReturnManagementAccuracy(ItemCode, packingNumber, batch,fromLocationCode, business); return balanceDO; @@ -390,37 +390,37 @@ public class ProductputawayRequestMainServiceImpl implements ProductputawayReque throw exception(PRODUCTPUTAWAY_REQUEST_NOT_EXISTS); } List errorList = new ArrayList<>(); - datas.forEach(createReqVO -> { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); + datas.forEach(createReqVO -> { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductPutawayRequest"); ProductputawayRequestMainDO mainDo = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO); String messageMain = validateProductputawayRequestMainImport(mainDo, businesstypeDO); List subList = createReqVO.getSubList(); List subDOList = ProductputawayRequestDetailConvert.INSTANCE.convertList03(subList); - boolean flag = true; - for (ProductputawayRequestDetailDO detailDO : subDOList) { - String messageDetail = validateProductputawayRequestDetailImport(detailDO, mainDo, businesstypeDO); - if (!"".equals(messageMain) ||!"".equals(messageDetail) ) { - ProductputawayImportErrorVO importErrorVO = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); - importErrorVO.setImportStatus("失败"); - messageMain = messageMain + messageDetail; - importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); - errorList.add(importErrorVO); - flag = false; - } - } - //写入数据 - if (flag) { - String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_PUTAWAY_REQUEST.getCode()); - mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - productputawayRequestMainMapper.insert(mainDo); - for (ProductputawayRequestDetailDO detailDO : subDOList) { - detailDO.setMasterId(mainDo.getId()); - detailDO.setNumber(number); - } - productputawayRequestDetailMapper.insertBatch(subDOList); - } - }); + boolean flag = true; + for (ProductputawayRequestDetailDO detailDO : subDOList) { + String messageDetail = validateProductputawayRequestDetailImport(detailDO, mainDo, businesstypeDO); + if (!"".equals(messageMain) ||!"".equals(messageDetail) ) { + ProductputawayImportErrorVO importErrorVO = ProductputawayRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + } + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_PUTAWAY_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + productputawayRequestMainMapper.insert(mainDo); + for (ProductputawayRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + } + productputawayRequestDetailMapper.insertBatch(subDOList); + } + }); return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainService.java index 02688bdf..0654bc1e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainService.java @@ -29,7 +29,7 @@ public interface PurchaseclaimRequestMainService { * * @param updateReqVO 更新信息 */ - Integer updatePurchaseclaimRequestMain(@Valid PurchaseclaimRequestMainUpdateReqVO updateReqVO); + Long updatePurchaseclaimRequestMain(@Valid PurchaseclaimRequestMainUpdateReqVO updateReqVO); /** * 删除采购索赔申请主 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java index de165a16..77f11147 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java @@ -1,14 +1,16 @@ package com.win.module.wms.service.purchaseclaimRequest; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.exceptions.UtilException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.common.util.validation.ValidationUtils; import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.purchaseclaimRequest.vo.*; + import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestDetailConvert; import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestMainConvert; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; @@ -17,9 +19,11 @@ import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.supplierdeliverRecord.SupplierdeliverRecordDetailDO; import com.win.module.wms.dal.mysql.purchaseclaimRequest.PurchaseclaimRequestDetailMapper; import com.win.module.wms.dal.mysql.purchaseclaimRequest.PurchaseclaimRequestMainMapper; import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.purchase.PurchaseMainService; import com.win.module.wms.service.requestsetting.RequestsettingService; @@ -28,7 +32,6 @@ import com.win.module.wms.service.supplierdeliverRecord.SupplierdeliverRecordMai import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -76,42 +79,42 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest private JobUtils jobUtils; @Resource private RequestsettingService requestsettingService; - + @Resource + private TrendsApi trendsApi; @Override @Transactional public Long createPurchaseclaimRequestMain(PurchaseclaimRequestMainCreateReqVO createReqVO) { // 插入主表 - PurchaseclaimRequestMainDO purchaseclaimRequestMain = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); - purchaseclaimRequestMain.setNumber(number); - purchaseclaimRequestMainMapper.insert(purchaseclaimRequestMain); - // 插入子表 - List subList = createReqVO.getSubList(); - List subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); - for (PurchaseclaimRequestDetailDO detailDO : subDOList) { - detailDO.setMasterId(purchaseclaimRequestMain.getId()); - detailDO.setNumber(number); + RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); + PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(purchaseclaimRequestMainDO.getStatus())) { + } - purchaseclaimRequestDetailMapper.insertBatch(subDOList); - // 返回 - return purchaseclaimRequestMain.getId(); + trendsApi.createTrends(requestsettingDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE); + return purchaseclaimRequestMainDO.getId(); } @Override @Transactional - public Integer updatePurchaseclaimRequestMain(PurchaseclaimRequestMainUpdateReqVO updateReqVO) { + public Long updatePurchaseclaimRequestMain(PurchaseclaimRequestMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); // 校验存在,如子表需要也再此校验 - validatePurchaseclaimRequestMainExists(updateReqVO.getId()); + validatorPurchaseclaimRequestMainExists(updateReqVO.getId()); // 更新主表 - PurchaseclaimRequestMainDO updateObj = PurchaseclaimRequestMainConvert.INSTANCE.convert(updateReqVO); - return purchaseclaimRequestMainMapper.updateById(updateObj); + PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(purchaseclaimRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE); + return purchaseclaimRequestMainDO.getId(); } @Override @Transactional public Integer deletePurchaseclaimRequestMain(Long id) { // 校验存在 - validatePurchaseclaimRequestMainExists(id); + validatorPurchaseclaimRequestMainExists(id); // 删除子表数据 Map map = new HashMap<>(); map.put("master_id", id); @@ -120,11 +123,9 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest return purchaseclaimRequestMainMapper.deleteById(id); } - private void validatePurchaseclaimRequestMainExists(Long id) { + private void validatorPurchaseclaimRequestMainExists(Long id) { PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = purchaseclaimRequestMainMapper.selectById(id); if (purchaseclaimRequestMainDO == null) { - return; - }else { throw exception(PURCHASECLAIM_REQUEST_MAIN_EXISTS); } } @@ -154,143 +155,207 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest return purchaseclaimRequestMainMapper.selectList(exportReqVO); } - private void selectUomExist(String itemUom,String uom) { - if(itemUom.equals(uom)){ - return; - }else { - throw new UtilException("提示单位"+ uom + "错误,应该是" + itemUom); - } - } - - private void ifPlanQtyBigThanOrderQty(String poLine, BigDecimal shippedQty, BigDecimal qty, BigDecimal orderQty) { - if(shippedQty.add(qty).compareTo(orderQty) > 0){ - throw new UtilException("订单行"+ poLine + "的已发货数量" + shippedQty + "+计划数量" + qty + "大于订单数量" + orderQty); - } - } @Override - @Transactional public List importPurchaseclaimRequestList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { - String messageMain = ""; - //主表校验方法 - if(mode != null){ - try { - validatePurchaseclaimRequestMainExists(null); - } catch (Exception ex) { - messageMain += ex.getMessage() + ","; - } - - try { - supplierService.selectSupplier(createReqVO.getSupplierCode()); - } catch (Exception ex) { - messageMain += ex.getMessage() + ","; + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + PurchaseclaimRequestMainDO mainDo = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validatorPurchaseclaimRequestMainImport(mainDo, businesstypeDO); + List subList = createReqVO.getSubList(); + List subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (PurchaseclaimRequestDetailDO detailDO : subDOList) { + String messageDetail = validatorPurchaseclaimRequestDetailImport(detailDO, mainDo); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + PurchaseclaimRequestImportErrorVO importErrorVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - List subList = createReqVO.getSubList(); - List subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); - // 新增子表数据 + } + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + purchaseclaimRequestMainMapper.insert(mainDo); for (PurchaseclaimRequestDetailDO detailDO : subDOList) { - String messageDetail = ""; - // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList - //子表校验方法 - try { - supplierdeliverRecordMainService.selectSupplierdeliverRecordMainDO(createReqVO.getSupplierCode(), - detailDO.getNumber(), detailDO.getItemCode(), detailDO.getPoNumber(), detailDO.getPoLine()); - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - try { - ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); - detailDO.setProjectCode(itembasicDO.getProject()); - try { - selectUomExist(itembasicDO.getUom(), detailDO.getUom()); - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - } catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - try { - PurchaseDetailDO purchaseDetailDO = purchaseMainService.selectPurchaseDetailDoExist(detailDO.getNumber(), createReqVO.getSupplierCode() - , detailDO.getItemCode(), detailDO.getPoLine()); - try { - ifPlanQtyBigThanOrderQty(detailDO.getPoLine(), purchaseDetailDO.getShippedQty(), detailDO.getQty(), purchaseDetailDO.getOrderQty()); - }catch (Exception ex){ - messageDetail += ex.getMessage() + ","; - } - }catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - try{ - ValidationUtils.validate(validator,createReqVO); - }catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - PurchaseclaimRequestDetailCreateReqVO purchaseclaimRequestDetailCreateReqVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert1(detailDO); - PurchaseclaimRequestImportErrorVO importVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseclaimRequestDetailCreateReqVO); - //进行子表的错误统计 - //主表没有错误 写入库里 - 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()); - detailDO.setAmount(detailDO.getQty().multiply(detailDO.getSinglePrice()).setScale(6,BigDecimal.ROUND_HALF_UP)); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_REQUEST.getCode()); - createReqVO.setNumber(number); - } - - } - if(errorList.isEmpty()){ - // 判断如果不存在,在进行插入 - PurchaseclaimRequestMainDO existPurchaseclaimRequestMainDO = purchaseclaimRequestMainMapper.selectByAsnNumberAndSupplierCode(createReqVO.getAsnNumber(), createReqVO.getSupplierCode()); - if(existPurchaseclaimRequestMainDO == null && mode != 3){ - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseClaimRequest"); - if(businesstypeDO != null){ - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseClaimRequest"); - if(requestsettingDO != null){ - createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); - createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); - createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - } - PurchaseclaimRequestMainDO createObj = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); - purchaseclaimRequestMainMapper.insert(createObj); - purchaseclaimRequestDetailMapper.insertBatch(subDOList); - } - else if(existPurchaseclaimRequestMainDO != null && mode != 2){ - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseClaimRequest"); - if(businesstypeDO != null){ - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseClaimRequest"); - if(requestsettingDO != null){ - createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); - createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); - createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); - createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); - } - PurchaseclaimRequestMainDO createObj = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); - purchaseclaimRequestMainMapper.updateById(createObj); - purchaseclaimRequestDetailMapper.updateBatch(subDOList); - } + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + detailDO.setAmount(detailDO.getQty().multiply(detailDO.getSinglePrice()).setScale(6,BigDecimal.ROUND_HALF_UP)); } + purchaseclaimRequestDetailMapper.insertBatch(subDOList); } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; } + + private void validatorSupplier(String SupplierCode){ + supplierService.selectSupplier(SupplierCode); + } + + private PurchaseDetailDO validatorPurchaseDetailDo(String pnumber, String psupplierCode, String pitemCode,String poLine){ + return purchaseMainService.selectPurchaseDetailDoExist(pnumber, psupplierCode, pitemCode, poLine); + } + + private ItembasicDO validatorItembasic(String itemCode){ + return itembasicService.selectItembasic(itemCode); + } + + private void selectUomExist(String itemUom,String uom) { + if(!itemUom.equals(uom)){ + throw exception(UOM_EXCEPTION,"提示单位"+ uom + "错误,应该是" + itemUom); + } + } + + private SupplierdeliverRecordDetailDO validatorSupplierdeliverRecordMainDO(String psupplierCode, String pasnNumber, String pitemCode, String ppoNumber, String ppoLine){ + return supplierdeliverRecordMainService.selectSupplierdeliverRecordMainDO(psupplierCode,pasnNumber,pitemCode,ppoNumber,ppoLine); + } + + + private void ifPlanQtyBigThanOrderQty(String poLine, BigDecimal shippedQty, BigDecimal qty, BigDecimal orderQty) { + if(shippedQty.add(qty).compareTo(orderQty) > 0){ + throw exception(QTY_EXCEPTION,"订单行"+ poLine + "的已发货数量" + shippedQty + "+计划数量" + qty + "大于订单数量" + orderQty); + } + } + //新增校验 + private PurchaseclaimRequestMainDO validatorToCreate(PurchaseclaimRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorMainMethod(createReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); + for (PurchaseclaimRequestDetailDO purchaseclaimRequestDetailDO : subDOList) { + validatorDetailMethod(purchaseclaimRequestDetailDO,purchaseclaimRequestMainDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + purchaseclaimRequestMainDO.setNumber(number); + purchaseclaimRequestMainMapper.insert(purchaseclaimRequestMainDO); + purchaseclaimRequestDetailMapper.insertBatch(subDOList); + return purchaseclaimRequestMainDO; + } + + //修改校验 + private PurchaseclaimRequestMainDO validatorToUpdate(PurchaseclaimRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorMainMethod(updateReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = updateReqVO.getSubList(); + List subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList05(subList); + for (PurchaseclaimRequestDetailDO purchaseclaimRequestDetailDO : subDOList) { + validatorDetailMethod(purchaseclaimRequestDetailDO,purchaseclaimRequestMainDO); + } + purchaseclaimRequestMainMapper.updateById(purchaseclaimRequestMainDO); + purchaseclaimRequestDetailMapper.updateBatch(subDOList); + return purchaseclaimRequestMainDO; + } + //校验主表公共方法(适用于新增/修改) + private PurchaseclaimRequestMainDO validatorMainMethod(PurchaseclaimRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){ + PurchaseclaimRequestMainDO mainDo = PurchaseclaimRequestMainConvert.INSTANCE.convert(baseVO); + this.validatorSupplier(mainDo.getSupplierCode()); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseclaimRequest"); + mainDo.setBusinessType(businesstypeDO.getCode()); + return mainDo; + } + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(PurchaseclaimRequestDetailDO detailDo,PurchaseclaimRequestMainDO mainDo) { + validatorSupplierdeliverRecordMainDO(mainDo.getSupplierCode(), mainDo.getAsnNumber(), detailDo.getItemCode(), detailDo.getPoNumber(), detailDo.getPoLine()); + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + this.selectUomExist(itembasicDO.getUom(), detailDo.getUom()); + PurchaseDetailDO purchaseDetailDO = validatorPurchaseDetailDo(detailDo.getNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); + ifPlanQtyBigThanOrderQty(detailDo.getPoLine(), purchaseDetailDO.getShippedQty(), detailDo.getQty(), purchaseDetailDO.getOrderQty()); + } + + /** + * 校验主表导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validatorPurchaseclaimRequestMainImport(PurchaseclaimRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + try { + this.validatorSupplier(mainDo.getSupplierCode()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); + if (requestsettingDO == null) { + message.append("未查找到采购索赔申请的相关申请设置"); + } else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseclaimRequest"); + if (businesstypeDO == null) { + message.append("根据单据设置未查找到采购索赔申请的相关业务类型"); + } else { + mainDo.setBusinessType(businesstypeDO.getCode()); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + /** + * 校验子表导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validatorPurchaseclaimRequestDetailImport(PurchaseclaimRequestDetailDO detailDo, PurchaseclaimRequestMainDO mainDo) { + StringBuilder message = new StringBuilder(); + try { + if(!"".equals(mainDo.getAsnNumber())){ + validatorSupplierdeliverRecordMainDO(mainDo.getSupplierCode(), detailDo.getNumber(), detailDo.getItemCode(), detailDo.getPoNumber(), detailDo.getPoLine()); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + try { + this.selectUomExist(itembasicDO.getUom(), detailDo.getUom()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + PurchaseDetailDO purchaseDetailDO = validatorPurchaseDetailDo(detailDo.getNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); + try { + ifPlanQtyBigThanOrderQty(detailDo.getPoLine(), purchaseDetailDO.getShippedQty(), detailDo.getQty(), purchaseDetailDO.getOrderQty()); + }catch (Exception ex){ + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ValidationUtils.validate(validator, detailDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java index ad4dd7fb..7590ec25 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRecord/PurchasereceiptRecordMainServiceImpl.java @@ -102,8 +102,10 @@ public class PurchasereceiptRecordMainServiceImpl implements PurchasereceiptReco public PurchasereceiptRecordDetailDO selectPurchasereceiptExist(String ppoNumber,String psupplierCode,String pNumber,String ppoLine,String pitemCode){ QueryWrapper queryWrapperMain = new QueryWrapper(); queryWrapperMain.eq("number",pNumber); + queryWrapperMain.eq("supplier_code",psupplierCode); + queryWrapperMain.eq("available","TRUE"); PurchasereceiptRecordMainDO purchasereceiptRecordMainDO = purchasereceiptRecordMainMapper.selectOne(queryWrapperMain); - if(purchasereceiptRecordMainDO != null && "TRUE".equals(purchasereceiptRecordMainDO.getAvailable()) && purchasereceiptRecordMainDO.getSupplierCode().equals(psupplierCode)){ + if(purchasereceiptRecordMainDO != null){ QueryWrapper queryWrapperDetail = new QueryWrapper(); queryWrapperDetail.eq("po_number",ppoNumber); queryWrapperDetail.eq("po_line",ppoLine); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainService.java index cbc73432..9e99fb18 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainService.java @@ -4,10 +4,7 @@ import java.util.*; import javax.validation.*; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainCreateReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainExportReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainPageReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainUpdateReqVO; +import com.win.module.wms.controller.purchasereturnRequest.vo.*; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; import com.win.framework.common.pojo.PageResult; @@ -77,5 +74,14 @@ public interface PurchasereturnRequestMainService { * @return 采购退货申请主列表 */ List getPurchasereturnRequestMainList(PurchasereturnRequestMainExportReqVO exportReqVO); + /** + * 批量导入采购退货申请主信息 + * + * @param datas 导入采购索赔申请主信息列表 + * @param mode 导入模式1更新2追加3覆盖 + * @param updatePart 是否支持更新 + * @return 导入结果 + */ + public List importPurchasereturnRequestList(List datas, Integer mode, boolean updatePart); } 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 c88848eb..7536f35e 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 @@ -1,14 +1,41 @@ package com.win.module.wms.service.purchasereturnRequest; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainCreateReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainExportReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainPageReqVO; -import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainUpdateReqVO; +import com.win.framework.common.util.validation.ValidationUtils; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; +import com.win.module.system.api.dict.DictDataApi; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.purchasereturnRequest.vo.*; +import com.win.module.wms.convert.purchasereturnRequest.PurchasereturnRequestDetailConvert; +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.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordMainDO; +import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.purchasereceiptRecord.PurchasereceiptRecordMainMapper; +import com.win.module.wms.dal.mysql.purchasereturnRequest.PurchasereturnRequestDetailMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.purchasereceiptRecord.PurchasereceiptRecordMainService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.validation.Validator; + import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.*; import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO; @@ -32,22 +59,62 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque @Resource private PurchasereturnRequestMainMapper purchasereturnRequestMainMapper; + @Resource + private PurchasereturnRequestDetailMapper purchasereturnRequestDetailMapper; + + @Resource + private Validator validator; + @Resource + private ItembasicService itembasicService; + + @Resource + private DictDataApi dictDataApi; + + @Resource + private JobUtils jobUtils; + + @Resource + private PurchasereceiptRecordMainService purchasereceiptRecordMainService; + + @Resource + private PurchasereceiptRecordMainMapper purchasereceiptRecordMainMapper; + + @Resource + private SerialNumberApi serialNumberApi; + + @Resource + private RequestsettingService requestsettingService; + + @Resource + private LocationService locationService; + @Resource + private TrendsApi trendsApi; @Override public Long createPurchasereturnRequestMain(PurchasereturnRequestMainCreateReqVO createReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchasereturnRequest"); // 插入 PurchasereturnRequestMainDO purchasereturnRequestMain = PurchasereturnRequestMainConvert.INSTANCE.convert(createReqVO); - purchasereturnRequestMainMapper.insert(purchasereturnRequestMain); + PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(purchasereturnRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "PurchasereturnRequest", "增加了采购退货申请", TrendsTypeEnum.CREATE); // 返回 return purchasereturnRequestMain.getId(); } @Override public void updatePurchasereturnRequestMain(PurchasereturnRequestMainUpdateReqVO updateReqVO) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchasereturnRequest"); // 校验存在 validatePurchasereturnRequestMainExists(updateReqVO.getId()); - // 更新 - PurchasereturnRequestMainDO updateObj = PurchasereturnRequestMainConvert.INSTANCE.convert(updateReqVO); - purchasereturnRequestMainMapper.updateById(updateObj); + // 更新主表 + PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); + if(RequestStatusEnum.HANDLING.getCode().equals(purchasereturnRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "PurchasereturnRequest", "增加了采购退货申请", TrendsTypeEnum.CREATE); } @Override public PageResult getPurchasereturnRequestMainSenior(CustomConditions conditions) { @@ -87,4 +154,266 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque return purchasereturnRequestMainMapper.selectList(exportReqVO); } + + + @Override + public List importPurchasereturnRequestList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(PURCHASERETURN_REQUEST_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + PurchasereceiptRecordMainDO purchasereceiptRecordMainDO = new PurchasereceiptRecordMainDO(); + PurchasereturnRequestMainDO mainDo = PurchasereturnRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validatorPurchasereturnRequestMainImport(mainDo); + List subList = createReqVO.getSubList(); + List subDOList = PurchasereturnRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (PurchasereturnRequestDetailDO detailDO : subDOList) { + String messageDetail = validatorPurchasereturnRequestDetailImport(detailDO, mainDo,businesstypeDO); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + PurchasereturnRequestImportErrorVO importErrorVO = PurchasereturnRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + } + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setPpNumber(purchasereceiptRecordMainDO.getPpNumber()); + mainDo.setAsnNumber(purchasereceiptRecordMainDO.getAsnNumber()); + mainDo.setRequestTime(LocalDateTime.now()); + purchasereturnRequestMainMapper.insert(mainDo); + for (PurchasereturnRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + detailDO.setToLocationCode("PUR_INTRANSIT"); + } + purchasereturnRequestDetailMapper.insertBatch(subDOList); + } + }); + return errorList; + } + + private void ifUomSuccess(String itemUom,String uom) { + if(!itemUom.equals(uom)){ + throw exception(UOM_EXCEPTION,"提示单位"+ uom + "错误,应该是" + itemUom); + } + } + + private void ifdetailQtyBigThanQty(BigDecimal detailQty, BigDecimal qty) { + if(detailQty.compareTo(qty) > 0){ + throw exception(QTY_EXCEPTION,"退货数量"+ qty + "不能大于于收货数量" + detailQty); + } + } + private ItembasicDO validatorItembasic(String itemCode){ + return itembasicService.selectItembasic(itemCode); + } + + private void validatorIfInType(String itemType,BusinesstypeDO businesstypeDO){ + jobUtils.ifInType(itemType, businesstypeDO); + } + private void validatorIfInToLocationType(String fromLocationCode,BusinesstypeDO businesstypeDO){ + jobUtils.ifInToLocationType(fromLocationCode, businesstypeDO); + } + + private void validatorLocation(String fromLocationCode){ + locationService.selectLocation(fromLocationCode); + } + + private void requestsettingAndBusinesstypeSet(PurchasereturnRequestMainDO mainDo) { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchasereturnRequest"); + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReturnRequest"); + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } + private BigDecimal validatorBalance(PurchasereturnRequestDetailDO detailDo,PurchasereturnRequestMainDO mainDO){ + ArrayList inventoryStatus = new ArrayList(); + inventoryStatus.add(detailDo.getInventoryStatus()); + BigDecimal bigDecimal = new BigDecimal(0); + List banlance = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + if(banlance != null) { + for (BalanceDO balanceDO : banlance) { + bigDecimal = bigDecimal.add(balanceDO.getQty()); + mainDO.setFromWarehouseCode(balanceDO.getWarehouseCode()); + } + } + return bigDecimal; + } + // 新增校验 + private PurchasereturnRequestMainDO validatorToCreate(PurchasereturnRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { + PurchasereceiptRecordMainDO purchasereceiptRecordMainDO = new PurchasereceiptRecordMainDO(); + PurchasereturnRequestMainDO purchasereturnRequestMainDO = validatorMainMethod(createReqVO,purchasereceiptRecordMainDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = PurchasereturnRequestDetailConvert.INSTANCE.convertList03(subList); + for (PurchasereturnRequestDetailDO purchasereturnRequestDetailDO : subDOList) { + validatorDetailMethod(purchasereturnRequestDetailDO,purchasereturnRequestMainDO,purchasereceiptRecordMainDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + purchasereturnRequestMainDO.setNumber(number); + purchasereturnRequestMainDO.setPpNumber(purchasereceiptRecordMainDO.getPpNumber()); + purchasereturnRequestMainDO.setAsnNumber(purchasereceiptRecordMainDO.getAsnNumber()); + purchasereturnRequestMainDO.setRequestTime(LocalDateTime.now()); + purchasereturnRequestMainMapper.insert(purchasereturnRequestMainDO); + purchasereturnRequestDetailMapper.insertBatch(subDOList); + return purchasereturnRequestMainDO; + } + + //修改校验 + private PurchasereturnRequestMainDO validatorToUpdate(PurchasereturnRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { + PurchasereceiptRecordMainDO purchasereceiptRecordMainDO = new PurchasereceiptRecordMainDO(); + PurchasereturnRequestMainDO purchaseclaimRequestMainDO = validatorMainMethod(updateReqVO,purchasereceiptRecordMainDO); + //子表校验 + List subList = updateReqVO.getSubList(); + List subDOList = PurchasereturnRequestDetailConvert.INSTANCE.convertList05(subList); + for (PurchasereturnRequestDetailDO purchaseclaimRequestDetailDO : subDOList) { + validatorDetailMethod(purchaseclaimRequestDetailDO,purchaseclaimRequestMainDO,purchasereceiptRecordMainDO); + } + purchasereturnRequestMainMapper.updateById(purchaseclaimRequestMainDO); + purchasereturnRequestDetailMapper.updateBatch(subDOList); + return purchaseclaimRequestMainDO; + } + //校验主表公共方法(适用于新增/修改) + private PurchasereturnRequestMainDO validatorMainMethod(PurchasereturnRequestMainBaseVO baseVO,PurchasereceiptRecordMainDO purchasereceiptRecordMainDO){ + PurchasereturnRequestMainDO mainDo = PurchasereturnRequestMainConvert.INSTANCE.convert(baseVO); + requestsettingAndBusinesstypeSet(mainDo); + return mainDo; + } + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(PurchasereturnRequestDetailDO detailDo,PurchasereturnRequestMainDO mainDo,PurchasereceiptRecordMainDO purchasereceiptRecordMainDO) { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + validatorLocation(detailDo.getFromLocationCode()); + PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = purchasereceiptRecordMainService.selectPurchasereceiptExist(detailDo.getPoNumber(), mainDo.getSupplierCode(), mainDo.getPurchaseReceiptRecordNumber(), detailDo.getPoLine(), detailDo.getItemCode()); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("id", purchasereceiptRecordDetailDO.getMasterId()); + purchasereceiptRecordMainDO = purchasereceiptRecordMainMapper.selectOne(queryWrapper); + ifdetailQtyBigThanQty(purchasereceiptRecordDetailDO.getQty(), detailDo.getQty()); + BigDecimal bigDecimal = validatorBalance(detailDo,mainDo); + ifdetailQtyBigThanQty(detailDo.getQty(),bigDecimal); + } + + /** + * 校验主表导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validatorPurchasereturnRequestMainImport(PurchasereturnRequestMainDO mainDo) { + StringBuilder message = new StringBuilder(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchasereturnRequest"); + if (requestsettingDO == null) { + message.append("未查找到采购退货申请的相关申请设置"); + } + else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReturnRequest"); + if (businesstypeDO == null) { + message.append("根据单据设置未查找到采购退货申请的相关业务类型"); + } + else { + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + /** + * 校验子表导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validatorPurchasereturnRequestDetailImport(PurchasereturnRequestDetailDO detailDo, PurchasereturnRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + try { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + try { + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + this.validatorIfInType(itembasicDO.getType(), businesstypeDO); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + validatorLocation(detailDo.getFromLocationCode()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = purchasereceiptRecordMainService.selectPurchasereceiptExist(detailDo.getPoNumber(), mainDo.getSupplierCode(), mainDo.getPurchaseReceiptRecordNumber(), detailDo.getPoLine(), detailDo.getItemCode()); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("id", purchasereceiptRecordDetailDO.getMasterId()); + PurchasereceiptRecordMainDO purchasereceiptRecordMainDO = purchasereceiptRecordMainMapper.selectOne(queryWrapper); + try { + ifdetailQtyBigThanQty(purchasereceiptRecordDetailDO.getQty(), detailDo.getQty()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + BigDecimal bigDecimal = validatorBalance(detailDo,mainDo); + try{ + ifdetailQtyBigThanQty(detailDo.getQty(),bigDecimal); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ValidationUtils.validate(validator, detailDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainService.java index ec601c6e..f657af70 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainService.java @@ -2,10 +2,7 @@ package com.win.module.wms.service.putawayRequest; import java.util.*; import javax.validation.*; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainCreateReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainExportReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainPageReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainUpdateReqVO; +import com.win.module.wms.controller.putawayRequest.vo.*; import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestMainDO; import com.win.framework.common.pojo.PageResult; @@ -78,4 +75,6 @@ public interface PutawayRequestMainService { */ List getPutawayRequestMainList(PutawayRequestMainExportReqVO exportReqVO); + public List importPutawayRequestList(List datas, Integer mode, boolean updatePart); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java index 46f34c0c..c570bca4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java @@ -1,14 +1,38 @@ package com.win.module.wms.service.putawayRequest; +import cn.hutool.core.collection.CollUtil; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainCreateReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainExportReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainPageReqVO; -import com.win.module.wms.controller.putawayRequest.vo.PutawayRequestMainUpdateReqVO; +import com.win.framework.common.util.validation.ValidationUtils; +import com.win.framework.dict.core.util.DictFrameworkUtils; +import com.win.module.infra.api.trends.TrendsApi; +import com.win.module.infra.enums.TrendsTypeEnum; +import com.win.module.system.api.serialnumber.SerialNumberApi; +import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.putawayRequest.vo.*; +import com.win.module.wms.convert.putawayRequest.PutawayRequestDetailConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.location.LocationDO; +import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; +import com.win.module.wms.dal.dataobject.putawayRequest.PutawayRequestDetailDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.putawayRequest.PutawayRequestDetailMapper; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.service.customer.CustomerService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.location.LocationService; +import com.win.module.wms.service.purchase.PurchaseMainService; +import com.win.module.wms.service.requestsetting.RequestsettingService; +import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.validation.Validator; + +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.putawayRequest.PutawayRequestMainDO; @@ -31,26 +55,60 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService @Resource private PutawayRequestMainMapper putawayRequestMainMapper; + @Resource + private PutawayRequestDetailMapper putawayRequestDetailMapper; + @Resource + private Validator validator; + @Resource + private ItembasicService itembasicService; + @Resource + private PurchaseMainService purchaseMainService; + @Resource + private LocationService locationService; + @Resource + private JobUtils jobUtils; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private RequestsettingService requestsettingService; + @Resource + private CustomerService customerService; + @Resource + private TrendsApi trendsApi; + //TODO 主表从仓库代码,到仓库代码暂未赋值 @Override + @Transactional public Long createPutawayRequestMain(PutawayRequestMainCreateReqVO createReqVO) { - // 插入 - PutawayRequestMainDO putawayRequestMain = PutawayRequestMainConvert.INSTANCE.convert(createReqVO); - putawayRequestMainMapper.insert(putawayRequestMain); - // 返回 - return putawayRequestMain.getId(); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PutawayRequest"); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PutawayRequest"); + PutawayRequestMainDO putawayRequestMainDO = validatorToCreate(createReqVO, businesstypeDO,requestsettingDO); + //调用自动执行方法 + if(RequestStatusEnum.HANDLING.getCode().equals(putawayRequestMainDO.getStatus())) { + + } + trendsApi.createTrends(requestsettingDO.getId(), "PutawayRequest", "增加了上架申请", TrendsTypeEnum.CREATE); + return putawayRequestMainDO.getId(); } @Override + @Transactional public void updatePutawayRequestMain(PutawayRequestMainUpdateReqVO updateReqVO) { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PutawayRequest"); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PutawayRequest"); // 校验存在 validatePutawayRequestMainExists(updateReqVO.getId()); // 更新 - PutawayRequestMainDO updateObj = PutawayRequestMainConvert.INSTANCE.convert(updateReqVO); - putawayRequestMainMapper.updateById(updateObj); + PutawayRequestMainDO putawayRequestMainDO = validatorMainMethod(updateReqVO, businesstypeDO,requestsettingDO); + if(putawayRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode())) { + throw exception(PURCHASERECEIPT_REQUEST_STATUS_NOT_NEW); + } + trendsApi.createTrends(updateReqVO.getId(), "PutawayRequestMain", putawayRequestMainDO.toString(), TrendsTypeEnum.UPDATE); + putawayRequestMainMapper.updateById(putawayRequestMainDO); } @Override + @Transactional public void deletePutawayRequestMain(Long id) { // 校验存在 validatePutawayRequestMainExists(id); @@ -88,4 +146,225 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService return putawayRequestMainMapper.selectList(exportReqVO); } + @Override + @Transactional + public List importPutawayRequestList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(PUTAWAY_REQUEST_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PutawayRequest"); + PutawayRequestMainDO mainDo = PutawayRequestMainConvert.INSTANCE.convert(createReqVO); + String messageMain = validatorPutawayRequestMainImport(mainDo,businesstypeDO); + List subList = createReqVO.getSubList(); + List subDOList = PutawayRequestDetailConvert.INSTANCE.convertList03(subList); + // 是否有错误数据 + boolean flag = true; + for (PutawayRequestDetailDO detailDO : subDOList) { + String messageDetail = validatorPutawayRequestDetailImport(detailDO, mainDo,businesstypeDO); + if (!messageMain.isEmpty() || messageDetail.isEmpty()) { + PutawayRequestImportErrorVO importErrorVO = PutawayRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + } + //写入数据 + if (flag) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + mainDo.setRequestTime(LocalDateTime.now()); + putawayRequestMainMapper.insert(mainDo); + for (PutawayRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + } + putawayRequestDetailMapper.insertBatch(subDOList); + } + }); + return errorList; + } + + // 新增校验 + private PutawayRequestMainDO validatorToCreate(PutawayRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO) { + PutawayRequestMainDO mainDo = validatorMainMethod(createReqVO,businesstypeDO,requestsettingDO); + //子表校验 + List subList = createReqVO.getSubList(); + List subDOList = PutawayRequestDetailConvert.INSTANCE.convertList03(subList); + for (PutawayRequestDetailDO detailDO : subDOList) { + validatorDetailMethod(detailDO,mainDo,businesstypeDO); + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); + mainDo.setNumber(number); + mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + putawayRequestMainMapper.insert(mainDo); + for (PutawayRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + } + putawayRequestDetailMapper.insertBatch(subDOList); + return mainDo; + } + + //校验主表公共方法(适用于新增/修改) + private PutawayRequestMainDO validatorMainMethod(PutawayRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO,RequestsettingDO requestsettingDO){ + PutawayRequestMainDO mainDo = PutawayRequestMainConvert.INSTANCE.convert(baseVO); + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + return mainDo; + } + //校验子表公共方法(适用于新增/修改) + private void validatorDetailMethod(PutawayRequestDetailDO detailDo,PutawayRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + validatorIfInType(itembasicDO.getType(), businesstypeDO); + this.validatorPurchaseDetailDo(detailDo.getPoNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); + validatorLocation(detailDo.getFromLocationCode()); + validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); + validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.set(0,detailDo.getInventoryStatus()); + validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + } + + /** + * 校验主表导入,并赋值一些参数 + * + * @param mainDo + * @return + */ + private String validatorPutawayRequestMainImport(PutawayRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + if (businesstypeDO == null) { + message.append("根据业务类型设置未查找到采购退货申请的相关业务类型"); + } + else { + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + } + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PutawayRequest"); + if (requestsettingDO == null) { + message.append("根据申请单设置未查找到采购退货申请的相关业务类型"); + } + else { + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + /** + * 校验子表导入,并赋值一些参数 + * + * @param detailDo + * @return + */ + private String validatorPutawayRequestDetailImport(PutawayRequestDetailDO detailDo, PutawayRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { + StringBuilder message = new StringBuilder(); + try { + ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + detailDo.setItemDesc1(itembasicDO.getDesc1()); + detailDo.setItemDesc2(itembasicDO.getDesc2()); + detailDo.setItemName(itembasicDO.getName()); + detailDo.setProjectCode(itembasicDO.getProject()); + try { + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + validatorIfInType(itembasicDO.getType(), businesstypeDO); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + this.validatorPurchaseDetailDo(detailDo.getPoNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + validatorLocation(detailDo.getFromLocationCode()); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + + try{ + validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try{ + validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); + }catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ArrayList inventoryStatus = new ArrayList<>(); + inventoryStatus.set(0,detailDo.getInventoryStatus()); + validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + ValidationUtils.validate(validator, detailDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + private void ifUomSuccess(String itemUom,String uom) { + if(!itemUom.equals(uom)){ + throw exception(ITEMBASIC_CODE_EXISTS,"提示单位"+ uom + "错误,应该是" + itemUom); + } + } + private ItembasicDO validatorItembasic(String itemCode){ + return itembasicService.selectItembasic(itemCode); + } + + private PurchaseDetailDO validatorPurchaseDetailDo(String pnumber, String psupplierCode, String pitemCode, String poLine){ + return purchaseMainService.selectPurchaseDetailDoExist(pnumber, psupplierCode, pitemCode, poLine); + } + + private LocationDO validatorLocation(String fromLocationCode){ + return locationService.selectLocation(fromLocationCode); + } + private void validatorIfInType(String type, BusinesstypeDO businesstypeDO){ + jobUtils.ifInType(type, businesstypeDO); + } + + private void validatorIfOutInventoryStatuses(String inventoryStatus,BusinesstypeDO businesstypeDO){ + jobUtils.ifOutInventoryStatuses(inventoryStatus, businesstypeDO); + } + + private void validatorIfInToLocationType(String fromLocationCode,BusinesstypeDO businesstypeDO){ + jobUtils.ifInType(fromLocationCode, businesstypeDO); + } + private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String fromLocationCode,List inventoryStatus){ + jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingNumber,batch,fromLocationCode,inventoryStatus); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java index 124da091..99b7ff01 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workshop/WorkshopServiceImpl.java @@ -11,8 +11,6 @@ import com.win.framework.datapermission.core.util.DataPermissionUtils; import com.win.module.wms.controller.workshop.vo.*; import com.win.module.wms.convert.workshop.WorkshopConvert; import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; -import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; -import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; import com.win.module.wms.dal.mysql.workshop.WorkshopMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -188,8 +186,9 @@ public class WorkshopServiceImpl implements WorkshopService { public WorkshopDO selectWorkshopExist(String pcode){ QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("code",pcode); + queryWrapper.eq("available","TRUE"); WorkshopDO workshopDO = workshopMapper.selectOne(queryWrapper); - if(workshopDO != null && "TRUE".equals(workshopDO.getAvailable())){ + if(workshopDO != null){ return workshopDO; }else { throw exception(WORKSHOP_NOT_EXISTS); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java index 85effb0a..a41e681e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java @@ -218,11 +218,12 @@ public class WorkstationServiceImpl implements WorkstationService { queryWrapperWorkstation.eq("code",pcode); queryWrapperWorkstation.eq("workshop_code",pworkshopCode); queryWrapperWorkstation.eq("production_line_code",pproductionLineCode); + queryWrapperWorkstation.eq("available","TRUE"); WorkstationDO workstationDO = workstationMapper.selectOne(queryWrapperWorkstation); - if(workstationDO != null && "TRUE".equals(workstationDO.getAvailable())){ + if(workstationDO != null){ return workstationDO; }else { - throw new UtilException( "车间" + pworkshopCode + "生产线" + pproductionLineCode + "工位" + pcode + "无效"); + throw exception(WORKSTATION_RELATION_ERROR, "车间" + pworkshopCode + "生产线" + pproductionLineCode + "工位" + pcode + "无效"); } } @Override @@ -230,8 +231,9 @@ public class WorkstationServiceImpl implements WorkstationService { QueryWrapper queryWrapperWorkstation = new QueryWrapper(); queryWrapperWorkstation.eq("code",pcode); queryWrapperWorkstation.eq("pruction_line_code",pructionLineCode); + queryWrapperWorkstation.eq("available","TRUE"); WorkstationDO workstationDO = workstationMapper.selectOne(queryWrapperWorkstation); - if(workstationDO != null && "TRUE".equals(workstationDO.getAvailable())){ + if(workstationDO != null){ return true; }else { throw exception(WORKSTATION_PRODUECTION_LINE_CODE_AND_WORKSTATION_RELATION_ERROR); From 04b5cb75d531e53b40253020141baeecbf4695b6 Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Wed, 15 Nov 2023 09:20:58 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=94=B6=E8=B4=A7=E4=BB=BB=E5=8A=A1=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/InspectRequestMainBaseVO.java | 16 +- .../vo/InspectRequestMainExcelVO.java | 16 +- .../vo/InspectRequestMainExportReqVO.java | 12 +- .../vo/InspectRequestMainPageReqVO.java | 13 +- .../vo/PurchasereceiptJobDetailBaseVO.java | 6 + .../inspectRequest/InspectRequestMainDO.java | 16 +- .../wms/enums/request/RequestStatusState.java | 2 +- .../InspectRequestMainService.java | 29 +- .../InspectRequestMainServiceImpl.java | 308 +++++++++--------- .../PurchasereceiptJobMainServiceImpl.java | 97 +++++- ...PurchasereceiptRequestMainServiceImpl.java | 26 +- 11 files changed, 333 insertions(+), 208 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainBaseVO.java index 225d2bea..ba212631 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainBaseVO.java @@ -2,15 +2,13 @@ package com.win.module.wms.controller.inspectRequest.vo; import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import javax.validation.constraints.*; +import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.time.LocalDateTime; + import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; /** @@ -115,11 +113,11 @@ public class InspectRequestMainBaseVO { @Schema(description = "收货数量", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "收货数量不能为空") - private Integer receiveQty; + private BigDecimal receiveQty; @Schema(description = "样品数量", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "样品数量不能为空") - private Integer sampleQty; + private BigDecimal sampleQty; @Schema(description = "货主代码") private String ownerCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java index 81b690b3..8fb7f2c9 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExcelVO.java @@ -1,16 +1,12 @@ package com.win.module.wms.controller.inspectRequest.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; - import com.alibaba.excel.annotation.ExcelProperty; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; /** @@ -100,10 +96,10 @@ public class InspectRequestMainExcelVO { private String uom; @ExcelProperty("收货数量") - private Integer receiveQty; + private BigDecimal receiveQty; @ExcelProperty("样品数量") - private Integer sampleQty; + private BigDecimal sampleQty; @ExcelProperty("货主代码") private String ownerCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExportReqVO.java index 42f90a57..c4101e8d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainExportReqVO.java @@ -1,12 +1,12 @@ package com.win.module.wms.controller.inspectRequest.vo; -import lombok.*; -import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; -import com.win.framework.common.pojo.PageParam; -import java.time.LocalDateTime; +import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import java.math.BigDecimal; +import java.time.LocalDateTime; + import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管理后台 - 检验申请主 Excel 导出 Request VO,参数和 InspectRequestMainPageReqVO 是一致的") @@ -90,10 +90,10 @@ public class InspectRequestMainExportReqVO { private String uom; @Schema(description = "收货数量") - private Integer receiveQty; + private BigDecimal receiveQty; @Schema(description = "样品数量") - private Integer sampleQty; + private BigDecimal sampleQty; @Schema(description = "货主代码") private String ownerCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainPageReqVO.java index 2c122510..1bcbd251 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/vo/InspectRequestMainPageReqVO.java @@ -1,10 +1,13 @@ package com.win.module.wms.controller.inspectRequest.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import com.win.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; import java.time.LocalDateTime; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -92,10 +95,10 @@ public class InspectRequestMainPageReqVO extends PageParam { private String uom; @Schema(description = "收货数量") - private Integer receiveQty; + private BigDecimal receiveQty; @Schema(description = "样品数量") - private Integer sampleQty; + private BigDecimal sampleQty; @Schema(description = "货主代码") private String ownerCode; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptJob/vo/PurchasereceiptJobDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptJob/vo/PurchasereceiptJobDetailBaseVO.java index 28c2ae56..119d1625 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptJob/vo/PurchasereceiptJobDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptJob/vo/PurchasereceiptJobDetailBaseVO.java @@ -116,4 +116,10 @@ public class PurchasereceiptJobDetailBaseVO { @Schema(description = "实际数量") private BigDecimal handleQty; + @Schema(description = "到包装号") + private String toPackingNumber; + + @Schema(description = "到际批次") + private String toBatch; + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestMainDO.java index db28ec8a..e8aebf06 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/inspectRequest/InspectRequestMainDO.java @@ -1,13 +1,13 @@ package com.win.module.wms.dal.dataobject.inspectRequest; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.sun.xml.bind.v2.TODO; +import com.win.framework.mybatis.core.dataobject.BaseDO; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; + +import java.math.BigDecimal; import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import com.win.framework.mybatis.core.dataobject.BaseDO; /** * 检验申请主 DO @@ -143,11 +143,11 @@ public class InspectRequestMainDO extends BaseDO { /** * 收货数量 */ - private Integer receiveQty; + private BigDecimal receiveQty; /** * 样品数量 */ - private Integer sampleQty; + private BigDecimal sampleQty; /** * 货主代码 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java index ca6c8137..da783e16 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java @@ -93,7 +93,7 @@ public class RequestStatusState { } /** - * 审批 + * 处理 * @return */ public boolean handle() { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java index f958ae99..58f322dc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java @@ -1,12 +1,15 @@ package com.win.module.wms.service.inspectRequest; -import java.util.*; -import javax.validation.*; - import com.win.framework.common.pojo.CustomConditions; +import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.inspectRequest.vo.*; import com.win.module.wms.dal.dataobject.inspectRequest.InspectRequestMainDO; -import com.win.framework.common.pojo.PageResult; + +import javax.validation.Valid; +import java.math.BigDecimal; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; /** * 检验申请主 Service 接口 @@ -84,5 +87,21 @@ public interface InspectRequestMainService { * @param updatePart 是否支持更新 * @return */ - public List importInspectRequestList(List datas, Integer mode, boolean updatePart); + List importInspectRequestList(List datas, Integer mode, boolean updatePart); + + /** + * 获取规则 + * @param supplierCode + * @param itemCode + * @return + */ + HashMap selectRule(String supplierCode, String itemCode); + + /** + * 查询检验物品数量 + * @param sampleQty + * @param ruleAll + * @return + */ + BigDecimal selectInspectType(BigDecimal sampleQty, HashMap ruleAll); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java index 5bcebbf2..304ba5ee 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java @@ -39,17 +39,19 @@ import com.win.module.wms.util.JobUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; -import javax.validation.Validator; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import javax.validation.Validator; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.win.module.wms.enums.ErrorCodeConstants.*; +import static com.win.module.wms.enums.ErrorCodeConstants.INSPECT_REQUEST_IMPORT_LIST_IS_EMPTY; +import static com.win.module.wms.enums.ErrorCodeConstants.INSPECT_REQUEST_MAIN_NOT_EXISTS; /** * 检验申请主 Service 实现类 @@ -84,13 +86,17 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService private RequestsettingService requestsettingService; @Resource private TrendsApi trendsApi; + @Override + @Transactional public Long createInspectRequestMain(InspectRequestMainCreateReqVO createReqVO) { RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); - InspectRequestMainDO inspectRequestMainDO = validatorToCreate(createReqVO, businesstypeDO); + InspectRequestMainDO inspectRequestMainDO = this.validatorCreate(createReqVO, businesstypeDO, requestsettingDO); + String number = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_REQUEST.getCode()); + inspectRequestMainDO.setNumber(number); //调用自动执行方法 - if(RequestStatusEnum.HANDLING.getCode().equals(inspectRequestMainDO.getStatus())) { + if (RequestStatusEnum.HANDLING.getCode().equals(inspectRequestMainDO.getStatus())) { } trendsApi.createTrends(requestsettingDO.getId(), "InspectRequest", "增加了到货校验申请", TrendsTypeEnum.CREATE); @@ -98,20 +104,22 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService } @Override + @Transactional public void updateInspectRequestMain(InspectRequestMainUpdateReqVO updateReqVO) { - RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); // 校验存在 validateInspectRequestMainExists(updateReqVO.getId()); // 更新主表 - InspectRequestMainDO inspectRequestMainDO = validatorToUpdate(updateReqVO, businesstypeDO); - if(RequestStatusEnum.HANDLING.getCode().equals(inspectRequestMainDO.getStatus())) { + InspectRequestMainDO inspectRequestMainDO = validatorUpdate(updateReqVO, businesstypeDO, requestsettingDO); + if (RequestStatusEnum.HANDLING.getCode().equals(inspectRequestMainDO.getStatus())) { } trendsApi.createTrends(requestsettingDO.getId(), "InspectRequest", "增加了到货校验申请", TrendsTypeEnum.CREATE); } @Override + @Transactional public void deleteInspectRequestMain(Long id) { // 校验存在 validateInspectRequestMainExists(id); @@ -139,196 +147,200 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService public PageResult getInspectRequestMainPage(InspectRequestMainPageReqVO pageReqVO) { return inspectRequestMainMapper.selectPage(pageReqVO); } + @Override public PageResult getInspectRequestMainSenior(CustomConditions conditions) { return inspectRequestMainMapper.selectSenior(conditions); } + @Override public List getInspectRequestMainList(InspectRequestMainExportReqVO exportReqVO) { return inspectRequestMainMapper.selectList(exportReqVO); } + @Override + @Transactional + public List importInspectRequestList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(INSPECT_REQUEST_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + //主表校验方法 + InspectRequestMainDO mainDO = InspectRequestMainConvert.INSTANCE.convert(createReqVO); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); + String messageMain = this.validatorInspectRequestMainImport(mainDO, businesstypeDO); + List subList = createReqVO.getSubList(); + List subDOList = InspectRequestDetailConvert.INSTANCE.convertList03(subList); + for (InspectRequestDetailDO detailDO : subDOList) { + String messageDetail = this.validatorInspectRequestDetailImport(detailDO, mainDO, businesstypeDO); + InspectRequestDetailCreateReqVO inspectRequestDetailCreateReqVO = InspectRequestDetailConvert.INSTANCE.convert1(detailDO); + InspectRequestImportErrorVO importVO = InspectRequestDetailConvert.INSTANCE.convert(createReqVO, inspectRequestDetailCreateReqVO); + if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { + importVO.setImportStatus("失败"); + messageMain = messageMain + messageDetail; + importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importVO); + } + } + mainDO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + if (errorList.isEmpty()) { + InspectRequestMainDO existInspectRequestMainDO = inspectRequestMainMapper.selectPurchaseReceiptNumber(createReqVO.getPurchaseReceiptRecordNumber()); + if (existInspectRequestMainDO == null && mode != 3) { + String number = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_REQUEST.getCode()); + mainDO.setNumber(number); + inspectRequestMainMapper.insert(mainDO); + for(InspectRequestDetailDO inspectRequestDetailDO : subDOList) { + inspectRequestDetailDO.setMasterId(mainDO.getId()); + } + inspectRequestDetailMapper.insertBatch(subDOList); + } else if (existInspectRequestMainDO != null && mode != 2) { + inspectRequestMainMapper.updateById(mainDO); + inspectRequestDetailMapper.updateBatch(subDOList); + } + } + }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } + //判断导入单位是否正确 - private void ifUomSuccess(String itemUom,String uom) { + private void ifUomSuccess(String itemUom, String uom) { DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictLabel(uom); - if(dictDataRespDTO != null){ - if(!itemUom.equals(dictDataRespDTO.getLabel())){ - throw new UtilException("提示单位"+ uom + "错误,应该是" + itemUom); + if (dictDataRespDTO != null) { + if (!itemUom.equals(dictDataRespDTO.getLabel())) { + throw new UtilException("提示单位" + uom + "错误,应该是" + itemUom); } } } + //查询检验类型 - private Integer selectInspectType(Integer sampleQty, HashMap ruleAll) { + @Override + public BigDecimal selectInspectType(BigDecimal sampleQty, HashMap ruleAll) { String inspectType = ruleAll.get("InspectType"); - if("EXEMPT".equals(inspectType)){ - return 0; - } else if ("FULL".equals(inspectType)) { + if ("FULL".equals(inspectType)) { return sampleQty; - }else if("SAMPLING".equals(inspectType)){ + } else if ("SAMPLING".equals(inspectType)) { return selectSampleMethod(ruleAll, sampleQty); - }else { - return 0; + } else { + return BigDecimal.ZERO; } } + //查询抽检方式 计算抽检数量并返回 - private Integer selectSampleMethod(HashMap ruleAll,Integer sampleQty) { + private BigDecimal selectSampleMethod(HashMap ruleAll, BigDecimal sampleQty) { String sampleMethod = ruleAll.get("SampleMethod"); JSONArray aplList = JSONUtil.parseArray(ruleAll.get("AplList")); //获取最大校验规则范围 - Integer maxFloorQty = 0; - Integer maxCeilingQty = 0; - Integer maxSampleValue = 0; - Integer result = 0; + BigDecimal maxFloorQty = BigDecimal.ZERO; + BigDecimal maxCeilingQty = BigDecimal.ZERO; + BigDecimal maxSampleValue = BigDecimal.ZERO; + BigDecimal result = BigDecimal.ZERO; for (Object o : aplList) { JSONObject parse = JSONUtil.parseObj(o); - Integer floorQty = Integer.valueOf(parse.get("FloorQty").toString()); - Integer ceilingQty = Integer.valueOf(parse.get("CeilingQty").toString()); - Integer sampleValue = Integer.valueOf(parse.get("SampleValue").toString()); - if (maxFloorQty < floorQty){ + BigDecimal floorQty = new BigDecimal(String.valueOf(parse.get("FloorQty"))); + BigDecimal ceilingQty = new BigDecimal(String.valueOf(parse.get("CeilingQty"))); + BigDecimal sampleValue = new BigDecimal(String.valueOf(parse.get("SampleValue"))); + if (maxFloorQty.compareTo(floorQty) < 0) { maxFloorQty = floorQty; } - if (maxCeilingQty < ceilingQty){ + if (maxCeilingQty.compareTo(ceilingQty) < 0) { maxCeilingQty = ceilingQty; } - if (maxSampleValue < sampleValue){ + if (maxSampleValue.compareTo(sampleValue) < 0) { maxSampleValue = sampleValue; } //根据校验规则计算出抽样数量 - if(sampleQty != null && sampleQty != 0){ - if(floorQty <= sampleQty && sampleQty <= ceilingQty){ - if("QTY".equals(sampleMethod)){ + if (sampleQty != null && sampleQty.compareTo(BigDecimal.ZERO) != 0) { + if(floorQty.compareTo(sampleQty) <= 0 && sampleQty.compareTo(ceilingQty) <= 0) { + if ("QTY".equals(sampleMethod)) { result = sampleValue; - }else if ("PERCENT".equals(sampleMethod)) { - double doubleSampleQty = sampleQty * (sampleValue * 0.01); - result = (int) Math.round(doubleSampleQty); + } else if ("PERCENT".equals(sampleMethod)) { + result = sampleQty.multiply(sampleValue).multiply(new BigDecimal("0.01")); } } - }else { + } else { throw new UtilException("当前到货数量为空,不能进行校验"); } } - if (maxCeilingQty < sampleQty) { + if (maxCeilingQty.compareTo(sampleQty) < 0) { throw new UtilException("当前到货数量已超出校验规则范围"); - }else { + } else { return result; } } //获取策略里的参数进行字段对应 - private HashMap selectRule(String supplierCode,String itemCode){ - RuleRespVO inspect = ruleService.inspect(supplierCode,itemCode ); - if(inspect == null){ + public HashMap selectRule(String supplierCode, String itemCode) { + RuleRespVO inspect = ruleService.inspect(supplierCode, itemCode); + if (inspect == null) { throw new UtilException("未找到该策略"); } JSONArray configuration = JSONUtil.parseArray(inspect.getConfiguration()); HashMap mapRule = new HashMap<>(); for (Object o : configuration) { JSONObject entries = JSONUtil.parseObj(o); - mapRule.put(entries.get("ParamCode").toString(),entries.get("Value").toString()); + mapRule.put(entries.get("ParamCode").toString(), entries.get("Value").toString()); } String aqlList = mapRule.get("AqlList"); - if(aqlList !=null){ + if (aqlList != null) { JSONArray objects = JSONUtil.parseArray(aqlList); for (int i = 0; i < objects.size(); i++) { JSONObject entries = JSONUtil.parseObj(objects.getObj(i)); - mapRule.put("FloorQty" + (i+1),entries.get("FloorQty").toString()); - mapRule.put("CeilingQty" + (i+1),entries.get("CeilingQty").toString()); - mapRule.put("SampleValue" + (i+1),entries.get("SampleValue").toString()); + mapRule.put("FloorQty" + (i + 1), entries.get("FloorQty").toString()); + mapRule.put("CeilingQty" + (i + 1), entries.get("CeilingQty").toString()); + mapRule.put("SampleValue" + (i + 1), entries.get("SampleValue").toString()); } } return mapRule; } - private PurchasereceiptRecordDetailDO validatorPurchasereceiptExist(String purchaseReceiptRecordNumber, String poNumber, String poLine, String itemCode){ + + private PurchasereceiptRecordDetailDO validatorPurchasereceiptExist(String purchaseReceiptRecordNumber, String poNumber, String poLine, String itemCode) { return purchasereceiptRecordMainService.selectPurchasereceiptExist(poNumber, null, purchaseReceiptRecordNumber, poLine, itemCode); } - private void validatorRule(InspectRequestMainDO mainDO){ + + private void validatorRule(InspectRequestMainDO mainDO) { HashMap rule = selectRule(null, mainDO.getItemCode()); - selectInspectType(mainDO.getReceiveQty(),rule); + mainDO.setSampleQty(selectInspectType(mainDO.getReceiveQty(), rule)); } - private ItembasicDO validatorItembasic(String itemCode){ + + private ItembasicDO validatorItembasic(String itemCode) { return itembasicService.selectItembasic(itemCode); } - private void validatorLocation(String fromLocationCode){ + + private void validatorLocation(String fromLocationCode) { locationService.selectLocation(fromLocationCode); } - private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO){ + + private void validatorIfInType(String itemType, BusinesstypeDO businesstypeDO) { jobUtils.ifInType(itemType, businesstypeDO); } - private void validatorIfOutInventoryStatuses(String inventoryStatus,BusinesstypeDO businesstypeDO){ + + private void validatorIfOutInventoryStatuses(String inventoryStatus, BusinesstypeDO businesstypeDO) { jobUtils.ifOutInventoryStatuses(inventoryStatus, businesstypeDO); } - private void validatorIfInFromLocationType(String fromLocationCode,BusinesstypeDO businesstypeDO){ + + private void validatorIfInFromLocationType(String fromLocationCode, BusinesstypeDO businesstypeDO) { jobUtils.ifInFromLocationType(fromLocationCode, businesstypeDO); } - private void validatorLlocationReturnManagementAccuracy(String itemCode,String packingNumber,String batch,String fromLocationCode,String inventoryStatu){ - ArrayList inventoryStatus = new ArrayList(); + + private void validatorLocationReturnManagementAccuracy(String itemCode, String packingNumber, String batch, String fromLocationCode, String inventoryStatu) { + ArrayList inventoryStatus = new ArrayList<>(); inventoryStatus.add(inventoryStatu); jobUtils.selectlocationReturnManagementAccuracy(itemCode, packingNumber, batch, fromLocationCode, inventoryStatus); - } - @Override - @Transactional - public List importInspectRequestList(List datas, Integer mode, boolean updatePart) { - if (CollUtil.isEmpty(datas)) { - throw exception(INSPECT_REQUEST_IMPORT_LIST_IS_EMPTY); - } - List errorList = new ArrayList<>(); - datas.forEach(createReqVO -> { - String messageMain = ""; - //主表校验方法 - List subList = createReqVO.getSubList(); - List subDOList = InspectRequestDetailConvert.INSTANCE.convertList03(subList); - for (InspectRequestDetailDO detailDO : subDOList) { - String messageDetail = ""; - try { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); - createReqVO.setBusinessType(businesstypeDO.getCode()); - createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); - createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); - }catch (Exception ex) { - messageDetail += ex.getMessage() + ","; - } - - InspectRequestDetailCreateReqVO inspectRequestDetailCreateReqVO = InspectRequestDetailConvert.INSTANCE.convert1(detailDO); - InspectRequestImportErrorVO importVO = InspectRequestDetailConvert.INSTANCE.convert(createReqVO, inspectRequestDetailCreateReqVO); - if(!messageMain.equals("") || !messageDetail.equals("")){ - importVO.setImportStatus("失败"); - messageMain = messageMain + messageDetail; - importVO.setImportRemark(messageMain.substring(0,messageMain.length()-1)); - errorList.add(importVO); - }else { - detailDO.setMasterId(createReqVO.getId()); - } - } - createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - - InspectRequestMainDO createobj = InspectRequestMainConvert.INSTANCE.convert(createReqVO); - if(errorList.isEmpty()){ - InspectRequestMainDO existInspectRequestMainDO = inspectRequestMainMapper.selectPurchaseReceiptNumber(createReqVO.getPurchaseReceiptRecordNumber()); - if(existInspectRequestMainDO == null && mode != 3){ - inspectRequestMainMapper.insert(createobj); - inspectRequestDetailMapper.insertBatch(subDOList); - }else if(existInspectRequestMainDO != null && mode != 2){ - inspectRequestMainMapper.updateById(createobj); - inspectRequestDetailMapper.updateBatch(subDOList); - } - } - }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - return errorList; - } // 新增校验 - private InspectRequestMainDO validatorToCreate(InspectRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO) { - InspectRequestMainDO mainDo = validatorMainMethod(createReqVO,businesstypeDO); + private InspectRequestMainDO validatorCreate(InspectRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { + InspectRequestMainDO mainDo = validatorMainMethod(createReqVO, businesstypeDO, requestsettingDO); //子表校验 List subList = createReqVO.getSubList(); List subDOList = InspectRequestDetailConvert.INSTANCE.convertList03(subList); for (InspectRequestDetailDO detailDO : subDOList) { - validatorDetailMethod(detailDO,mainDo,businesstypeDO); + validatorDetailMethod(detailDO, mainDo, businesstypeDO); } String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); mainDo.setNumber(number); @@ -339,37 +351,37 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService } //修改校验 - private InspectRequestMainDO validatorToUpdate(InspectRequestMainUpdateReqVO updateReqVO, BusinesstypeDO businesstypeDO) { - InspectRequestMainDO mainDo = validatorMainMethod(updateReqVO,businesstypeDO); + private InspectRequestMainDO validatorUpdate(InspectRequestMainUpdateReqVO updateReqVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { + InspectRequestMainDO mainDo = validatorMainMethod(updateReqVO, businesstypeDO, requestsettingDO); //子表校验 List subList = updateReqVO.getSubList(); List subDOList = InspectRequestDetailConvert.INSTANCE.convertList05(subList); for (InspectRequestDetailDO detailDO : subDOList) { - validatorDetailMethod(detailDO,mainDo,businesstypeDO); + validatorDetailMethod(detailDO, mainDo, businesstypeDO); } inspectRequestMainMapper.updateById(mainDo); inspectRequestDetailMapper.updateBatch(subDOList); return mainDo; } + //校验主表公共方法(适用于新增/修改) - private InspectRequestMainDO validatorMainMethod(InspectRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO){ + private InspectRequestMainDO validatorMainMethod(InspectRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { InspectRequestMainDO mainDo = InspectRequestMainConvert.INSTANCE.convert(baseVO); PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = validatorPurchasereceiptExist(mainDo.getPurchaseReceiptRecordNumber(), mainDo.getPoNumber(), mainDo.getPoLine(), mainDo.getItemCode()); - mainDo.setReceiveQty(purchasereceiptRecordDetailDO.getQty().intValue()); + mainDo.setReceiveQty(purchasereceiptRecordDetailDO.getQty()); validatorRule(mainDo); - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); - RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); return mainDo; } + //校验子表公共方法(适用于新增/修改) - private void validatorDetailMethod(InspectRequestDetailDO detailDo,InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { + private void validatorDetailMethod(InspectRequestDetailDO detailDo, InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); detailDo.setItemDesc1(itembasicDO.getDesc1()); detailDo.setItemDesc2(itembasicDO.getDesc2()); @@ -380,7 +392,7 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService validatorLocation(detailDo.getFromLocationCode()); validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); validatorIfInFromLocationType(detailDo.getFromLocationCode(), businesstypeDO); - validatorLlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), mainDo.getBatch(), detailDo.getFromLocationCode(), detailDo.getInventoryStatus()); + validatorLocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), mainDo.getBatch(), detailDo.getFromLocationCode(), detailDo.getInventoryStatus()); } /** @@ -389,24 +401,22 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService * @param mainDo * @return */ - private String validatorInspectRequestMainImport(InspectRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { + private String validatorInspectRequestMainImport(InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { StringBuilder message = new StringBuilder(); try { PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO = validatorPurchasereceiptExist(mainDo.getPurchaseReceiptRecordNumber(), mainDo.getPoNumber(), mainDo.getPoLine(), mainDo.getItemCode()); - mainDo.setReceiveQty(purchasereceiptRecordDetailDO.getQty().intValue()); - }catch (Exception ex) { + mainDo.setReceiveQty(purchasereceiptRecordDetailDO.getQty()); + } catch (Exception ex) { message.append(ex.getMessage()).append(","); } try { validatorRule(mainDo); - }catch (Exception ex) { + } catch (Exception ex) { message.append(ex.getMessage()).append(","); } - businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest"); if (businesstypeDO == null) { message.append("根据业务类型设置未查找到采购退货申请的相关业务类型"); - } - else { + } else { mainDo.setBusinessType(businesstypeDO.getCode()); mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); @@ -414,8 +424,7 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest"); if (requestsettingDO == null) { message.append("根据申请单设置未查找到采购退货申请的相关业务类型"); - } - else { + } else { mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); @@ -435,24 +444,25 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService * @param detailDo * @return */ - private String validatorInspectRequestDetailImport(InspectRequestDetailDO detailDo, InspectRequestMainDO mainDo,BusinesstypeDO businesstypeDO) { + private String validatorInspectRequestDetailImport(InspectRequestDetailDO detailDo, InspectRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { StringBuilder message = new StringBuilder(); + ItembasicDO itembasicDO = null; try { - ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); + itembasicDO = validatorItembasic(detailDo.getItemCode()); detailDo.setItemDesc1(itembasicDO.getDesc1()); detailDo.setItemDesc2(itembasicDO.getDesc2()); detailDo.setItemName(itembasicDO.getName()); detailDo.setProjectCode(itembasicDO.getProject()); - try { - this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); - } catch (Exception ex) { - message.append(ex.getMessage()).append(","); - } - try{ - validatorIfInType(itembasicDO.getType(), businesstypeDO); - }catch (Exception ex) { - message.append(ex.getMessage()).append(","); - } + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + validatorIfInType(itembasicDO.getType(), businesstypeDO); } catch (Exception ex) { message.append(ex.getMessage()).append(","); } @@ -461,18 +471,18 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService } catch (Exception ex) { message.append(ex.getMessage()).append(","); } - try{ + try { validatorIfOutInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); - }catch (Exception ex) { + } catch (Exception ex) { message.append(ex.getMessage()).append(","); } - try{ + try { validatorIfInFromLocationType(detailDo.getFromLocationCode(), businesstypeDO); - }catch (Exception ex) { + } catch (Exception ex) { message.append(ex.getMessage()).append(","); } try { - validatorLlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), mainDo.getBatch(), detailDo.getFromLocationCode(), detailDo.getInventoryStatus()); + validatorLocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), mainDo.getBatch(), detailDo.getFromLocationCode(), detailDo.getInventoryStatus()); } catch (Exception ex) { message.append(ex.getMessage()).append(","); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java index 49655431..bc157e4e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java @@ -1,5 +1,7 @@ package com.win.module.wms.service.purchasereceiptJob; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; @@ -10,12 +12,16 @@ 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.inspectRequest.vo.InspectRequestDetailCreateReqVO; +import com.win.module.wms.controller.inspectRequest.vo.InspectRequestMainCreateReqVO; import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailUpdateReqVO; import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainExportReqVO; import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainPageReqVO; import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainUpdateReqVO; +import com.win.module.wms.controller.rule.vo.RuleRespVO; 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.documentSwitch.SwitchDO; import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO; import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO; @@ -32,6 +38,9 @@ import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptReques 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.documentSwitch.SwitchService; +import com.win.module.wms.service.inspectRequest.InspectRequestMainService; +import com.win.module.wms.service.rule.RuleService; import com.win.module.wms.service.supplierdeliverRecord.SupplierdeliverRecordMainService; import com.win.module.wms.service.transaction.TransactionService; import com.win.module.wms.util.JobUtils; @@ -81,6 +90,12 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain private SerialNumberApi serialNumberApi; @Resource private JobUtils jobUtils; + @Resource + private SwitchService switchService; + @Resource + private InspectRequestMainService inspectRequestMainService; + @Resource + private RuleService ruleService; @Override public PageResult getPurchasereceiptJobMainSenior(CustomConditions conditions) { @@ -216,12 +231,14 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain //库存事务 List transactionCreateReqVOList = new ArrayList<>(); List purchasereceiptJobDetailUpdateReqVOList = purchasereceiptJobMainUpdateReqVO.getSubList(); + List purchasereceiptRecordDetailDOList = new ArrayList<>(); + List purchaseshortageDetailDOList = new ArrayList<>(); for(PurchasereceiptJobDetailDO purchasereceiptJobDetailDO : subList) { boolean isExists = false; + PurchasereceiptJobDetailUpdateReqVO purchasereceiptJobDetailUpdateReqVOTemp = null; for(PurchasereceiptJobDetailUpdateReqVO purchasereceiptJobDetailUpdateReqVO : purchasereceiptJobDetailUpdateReqVOList) { if(purchasereceiptJobDetailDO.getId().equals(purchasereceiptJobDetailUpdateReqVO.getId())) { - //实际收货数量 - purchasereceiptJobDetailUpdateReqVO.setQty(purchasereceiptJobDetailUpdateReqVO.getHandleQty()); + purchasereceiptJobDetailUpdateReqVOTemp = purchasereceiptJobDetailUpdateReqVO; isExists = true; break; } @@ -232,12 +249,17 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain purchasereceiptRecordDetailDO.setMasterId(purchasereceiptRecordMainDO.getId()); purchasereceiptRecordDetailDO.setNumber(number); purchasereceiptRecordDetailDO.setJobDetailId(String.valueOf(purchasereceiptJobDetailDO.getId())); + purchasereceiptRecordDetailDO.setFromBatch(purchasereceiptJobDetailDO.getBatch()); + purchasereceiptRecordDetailDO.setToBatch(purchasereceiptJobDetailUpdateReqVOTemp.getToBatch()); + purchasereceiptRecordDetailDO.setFromPackingNumber(purchasereceiptJobDetailDO.getPackingNumber()); + purchasereceiptRecordDetailDO.setToPackingNumber(purchasereceiptJobDetailUpdateReqVOTemp.getToPackingNumber()); + purchasereceiptRecordDetailDO.setQty(purchasereceiptJobDetailUpdateReqVOTemp.getHandleQty()); purchasereceiptRecordDetailDO.setId(null); purchasereceiptRecordDetailDO.setCreator(null); purchasereceiptRecordDetailDO.setCreateTime(null); purchasereceiptRecordDetailDO.setUpdater(null); purchasereceiptRecordDetailDO.setUpdateTime(null); - purchasereceiptRecordDetailMapper.insert(purchasereceiptRecordDetailDO); + purchasereceiptRecordDetailDOList.add(purchasereceiptRecordDetailDO); //添加库存事务list TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); BeanUtils.copyProperties(purchasereceiptRecordDetailDO, transactionCreateReqVO); @@ -262,15 +284,22 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain purchaseshortageDetailDO.setCreateTime(null); purchaseshortageDetailDO.setUpdater(null); purchaseshortageDetailDO.setUpdateTime(null); - purchaseshortageDetailMapper.insert(purchaseshortageDetailDO); + purchaseshortageDetailDOList.add(purchaseshortageDetailDO); } } + if(!purchasereceiptRecordDetailDOList.isEmpty()) { + purchasereceiptRecordDetailMapper.insertBatch(purchasereceiptRecordDetailDOList); + } + if(!purchaseshortageDetailDOList.isEmpty()) { + purchaseshortageDetailMapper.insertBatch(purchaseshortageDetailDOList); + } List typeList = new ArrayList<>(); typeList.add(JobStatusEnum.PENDING.getCode()); typeList.add(JobStatusEnum.PROCESSING.getCode()); Long count = purchasereceiptJobMainMapper.selectListCount(typeList, purchasereceiptJobMainDO.getRequestNumber()); PurchasereceiptRequestMainDO purchasereceiptRequestMainDO = purchasereceiptRequestMainMapper.selectByNumber(purchasereceiptJobMainDO.getRequestNumber()); - if(count == 0) {//申请单下所有任务全部完成 + //申请单下所有任务全部完成 + if(count == 0) { purchasereceiptRequestMainDO.setStatus(RequestStatusEnum.COMPLETED.getCode()); purchasereceiptRequestMainMapper.updateById(purchasereceiptRequestMainDO); } else if(purchasereceiptRequestMainDO.getStatus().equals(RequestStatusEnum.HANDLING.getCode())) {//部分完成 @@ -278,7 +307,63 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain purchasereceiptRequestMainMapper.updateById(purchasereceiptRequestMainDO); } //创建拣货申请 - + SwitchDO switchDO = switchService.selectSwitchExist("CreateInspectRequestAfterPurchaseReceiptRecordCreated"); + //需要增加到货检验申请 + if(switchDO.getEffectiveSetValue().equals("TRUE")) { + RuleRespVO ruleRespVO = ruleService.inspect(purchasereceiptRecordMainDO.getSupplierCode(), null); + JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration()); + if(!"EXAMPT".equals(String.valueOf(jsonObject.get("InspectType")))) { + //按零件号和批次分组 + Map> listMap = new HashMap<>(); + for(PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO : purchasereceiptRecordDetailDOList) { + String key = purchasereceiptRecordDetailDO.getItemCode() + "_" + purchasereceiptRecordDetailDO.getFromBatch(); + List list = listMap.get(key); + if(list == null) { + list = new ArrayList<>(); + } + list.add(purchasereceiptRecordDetailDO); + listMap.put(key, list); + } + //组装到货检验数据 + for(String mapKey : listMap.keySet()) { + List purchasereceiptRecordDetailDOList1 = listMap.get(mapKey); + //创建主表信息 + PurchasereceiptRecordDetailDO recordDetailDO = purchasereceiptRecordDetailDOList1.get(0); + InspectRequestMainCreateReqVO inspectRequestMainCreateReqVO = new InspectRequestMainCreateReqVO(); + String inspectRecordNumber = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_RECORD.getCode()); + inspectRequestMainCreateReqVO.setNumber(inspectRecordNumber); + inspectRequestMainCreateReqVO.setPurchaseReceiptRecordNumber(number); + inspectRequestMainCreateReqVO.setSupplierCode(purchasereceiptRecordMainDO.getSupplierCode()); + inspectRequestMainCreateReqVO.setItemCode(recordDetailDO.getItemCode()); + inspectRequestMainCreateReqVO.setBatch(recordDetailDO.getFromBatch()); + inspectRequestMainCreateReqVO.setPoNumber(recordDetailDO.getPoNumber()); + inspectRequestMainCreateReqVO.setPoLine(recordDetailDO.getPoLine()); + inspectRequestMainCreateReqVO.setUom(recordDetailDO.getUom()); + inspectRequestMainCreateReqVO.setReceiveQty(recordDetailDO.getQty()); + List inspectRequestDetailCreateReqVOList = new ArrayList<>(); + //创建子表信息 + for(PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO : purchasereceiptRecordDetailDOList1) { + InspectRequestDetailCreateReqVO inspectRequestDetailCreateReqVO = new InspectRequestDetailCreateReqVO(); + inspectRequestDetailCreateReqVO.setPackingNumber(purchasereceiptRecordDetailDO.getFromPackingNumber()); + inspectRequestDetailCreateReqVO.setContainerNumber(purchasereceiptRecordDetailDO.getFromContainerNumber()); + inspectRequestDetailCreateReqVO.setInventoryStatus(purchasereceiptRecordDetailDO.getInventoryStatus()); + inspectRequestDetailCreateReqVO.setFromLocationCode(purchasereceiptRecordDetailDO.getFromLocationCode()); + inspectRequestDetailCreateReqVO.setItemCode(purchasereceiptRecordDetailDO.getItemCode()); + inspectRequestDetailCreateReqVO.setItemName(purchasereceiptRecordDetailDO.getItemName()); + inspectRequestDetailCreateReqVO.setItemDesc1(purchasereceiptRecordDetailDO.getItemDesc1()); + inspectRequestDetailCreateReqVO.setItemDesc2(purchasereceiptRecordDetailDO.getItemDesc2()); + inspectRequestDetailCreateReqVO.setProjectCode(purchasereceiptRecordDetailDO.getProjectCode()); + inspectRequestDetailCreateReqVO.setQty(purchasereceiptRecordDetailDO.getQty()); + inspectRequestDetailCreateReqVO.setUom(purchasereceiptRecordDetailDO.getUom()); + //合计数量 + inspectRequestMainCreateReqVO.setReceiveQty(inspectRequestMainCreateReqVO.getReceiveQty().add(inspectRequestDetailCreateReqVO.getQty())); + inspectRequestDetailCreateReqVOList.add(inspectRequestDetailCreateReqVO); + } + inspectRequestMainCreateReqVO.setSubList(inspectRequestDetailCreateReqVOList); + inspectRequestMainService.createInspectRequestMain(inspectRequestMainCreateReqVO); + } + } + } //增加库存事务 transactionService.createTransaction(transactionCreateReqVOList); //变更记录 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java index 1716b4fc..a64be2c3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java @@ -81,6 +81,8 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq @Resource private SupplierService supplierService; @Resource + private SupplieritemService supplieritemService; + @Resource private RuleService ruleService; @Resource private SerialNumberApi serialNumberApi; @@ -97,6 +99,10 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq @Resource private JobUtils jobUtils; @Resource + private ShiftService shiftService; + @Resource + private PurchaseMainService purchaseMainService; + @Resource private PurchasereceiptRecordMainService purchasereceiptRecordMainService; @Resource private PurchasereceiptRecordDetailService purchasereceiptRecordDetailService; @@ -225,7 +231,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq boolean flag = true; for (PurchasereceiptRequestDetailDO detailDO : subDOList) { String messageDetail = this.validatePurchasereceiptRequestDetailImport(mainDO, detailDO); - if(!messageMain.isEmpty() || messageDetail.isEmpty()) { + if(!messageMain.isEmpty() || !messageDetail.isEmpty()) { PurchasereceiptRequestMainImportErrorVO importErrorVO = PurchasereceiptRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); importErrorVO.setImportStatus("失败"); messageMain = messageMain + messageDetail; @@ -405,8 +411,6 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq * @param mainDO 采购收货主 * @param detailDOList 采购收货子 */ - - @Transactional private void generateJob(PurchasereceiptRequestMainDO mainDO, List detailDOList) { RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest"); //跳过任务直接生成记录 @@ -484,14 +488,16 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq for(int i = 0; i < purchasereceiptRequestDetailDOList.size(); i++) { //PurchasereceiptJobMainCreateReqVO不包含id、创建人等信息 PurchasereceiptJobMainCreateReqVO purchasereceiptJobMainCreateReqVO; - List subList = null; + List subList = new ArrayList<>(); if(i % count == 0) { purchasereceiptJobMainCreateReqVO = PurchasereceiptJobMainConvert.INSTANCE.convert(mainDO); subList = new ArrayList<>(); purchasereceiptJobMainCreateReqVO.setSubList(subList); purchasereceiptJobMainCreateReqVOList.add(purchasereceiptJobMainCreateReqVO); } - PurchasereceiptJobDetailCreateReqVO purchasereceiptJobDetailCreateReqVO = PurchasereceiptJobDetailConvert.INSTANCE.convert(purchasereceiptRequestDetailDOList.get(i)); + PurchasereceiptRequestDetailDO purchasereceiptRequestDetailDO = purchasereceiptRequestDetailDOList.get(i); + PurchasereceiptJobDetailCreateReqVO purchasereceiptJobDetailCreateReqVO = PurchasereceiptJobDetailConvert.INSTANCE.convert(purchasereceiptRequestDetailDO); + purchasereceiptJobDetailCreateReqVO.setToLocationCode(purchasereceiptRequestDetailDO.getDefaultToLocationCode()); subList.add(purchasereceiptJobDetailCreateReqVO); } } @@ -505,13 +511,15 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReceiptJob"); purchasereceiptJobMainDO.setBusinessType(businesstypeDO.getCode()); purchasereceiptJobMainMapper.insert(purchasereceiptJobMainDO); - trendsApi.createTrends(purchasereceiptJobMainDO.getId(), "purchasereceiptJob", "采购收货申请生成采购收货任务", TrendsTypeEnum.CREATE); + List purchasereceiptJobDetailDOList = new ArrayList<>(); for(PurchasereceiptJobDetailCreateReqVO purchasereceiptJobDetailCreateReqVO : purchasereceiptJobMainCreateReqVO.getSubList()) { PurchasereceiptJobDetailDO purchasereceiptJobDetailDO = PurchasereceiptJobDetailConvert.INSTANCE.convert(purchasereceiptJobDetailCreateReqVO); purchasereceiptJobDetailDO.setNumber(number); purchasereceiptJobDetailDO.setMasterId(purchasereceiptJobMainDO.getId()); - purchasereceiptJobDetailMapper.insert(purchasereceiptJobDetailDO); + purchasereceiptJobDetailDOList.add(purchasereceiptJobDetailDO); } + purchasereceiptJobDetailMapper.insertBatch(purchasereceiptJobDetailDOList); + trendsApi.createTrends(purchasereceiptJobMainDO.getId(), "purchasereceiptJob", "采购收货申请生成采购收货任务", TrendsTypeEnum.CREATE); } } @@ -566,8 +574,8 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq } catch (Exception e) { message.append(e.getMessage()).append(","); } - if(!itembasicDO.getUom().equals(itembasicDO.getUom())) { - message.append("计量单位【").append(itembasicDO.getUom()).append("】错误,应该是【").append(itembasicDO.getUom()).append("】").append(","); + if(!detailDo.getUom().equals(itembasicDO.getUom())) { + message.append("计量单位【").append(detailDo.getUom()).append("】错误,应该是【").append(itembasicDO.getUom()).append("】").append(","); } try { this.validateItemPacking(detailDo); From 0f4f8add096517aa07d32a94d2e785c415afb6a0 Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Wed, 15 Nov 2023 09:33:09 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=94=B6=E8=B4=A7=E4=BB=BB=E5=8A=A1=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/PurchasereceiptRecordDetailBaseVO.java | 20 +++++------------ .../PurchasereceiptRecordDetailExcelVO.java | 22 +++++-------------- ...urchasereceiptRecordDetailExportReqVO.java | 4 ++-- .../PurchasereceiptRecordDetailPageReqVO.java | 4 ++-- .../PurchasereceiptRecordDetailDO.java | 20 ++++++----------- .../PurchasereceiptJobMainServiceImpl.java | 3 +++ 6 files changed, 26 insertions(+), 47 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailBaseVO.java index ea1a5bed..3c0b9c45 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailBaseVO.java @@ -1,20 +1,12 @@ package com.win.module.wms.controller.purchasereceiptRecord.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.time.LocalDateTime; -import javax.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -80,10 +72,10 @@ public class PurchasereceiptRecordDetailBaseVO { private String toLocationGroupCode; @Schema(description = "从库区代码") - private String fromAreaCodes; + private String fromAreaCode; @Schema(description = "到库区代码") - private String toAreaCodes; + private String toAreaCode; @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "订单号不能为空") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailExcelVO.java index 41837143..9fab3e02 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailExcelVO.java @@ -1,22 +1,12 @@ package com.win.module.wms.controller.purchasereceiptRecord.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.time.LocalDateTime; - import com.alibaba.excel.annotation.ExcelProperty; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; /** @@ -70,10 +60,10 @@ public class PurchasereceiptRecordDetailExcelVO { private String toLocationGroupCode; @ExcelProperty("从库区代码") - private String fromAreaCodes; + private String fromAreaCode; @ExcelProperty("到库区代码") - private String toAreaCodes; + private String toAreaCode; @ExcelProperty("订单号") private String poNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailExportReqVO.java index 09cf3d64..d5609654 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailExportReqVO.java @@ -62,10 +62,10 @@ public class PurchasereceiptRecordDetailExportReqVO { private String toLocationGroupCode; @Schema(description = "从库区代码") - private String fromAreaCodes; + private String fromAreaCode; @Schema(description = "到库区代码") - private String toAreaCodes; + private String toAreaCode; @Schema(description = "订单号") private String poNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailPageReqVO.java index 667c236a..ca807dbd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereceiptRecord/vo/PurchasereceiptRecordDetailPageReqVO.java @@ -67,10 +67,10 @@ public class PurchasereceiptRecordDetailPageReqVO extends PageParam { private String toLocationGroupCode; @Schema(description = "从库区代码") - private String fromAreaCodes; + private String fromAreaCode; @Schema(description = "到库区代码") - private String toAreaCodes; + private String toAreaCode; @Schema(description = "订单号") private String poNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereceiptRecord/PurchasereceiptRecordDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereceiptRecord/PurchasereceiptRecordDetailDO.java index 2acd887d..c941db03 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereceiptRecord/PurchasereceiptRecordDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchasereceiptRecord/PurchasereceiptRecordDetailDO.java @@ -1,19 +1,13 @@ package com.win.module.wms.dal.dataobject.purchasereceiptRecord; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.sun.xml.bind.v2.TODO; +import com.win.framework.mybatis.core.dataobject.BaseDO; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; + import java.math.BigDecimal; import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import com.win.framework.mybatis.core.dataobject.BaseDO; /** * 采购收货记录子 DO @@ -93,11 +87,11 @@ public class PurchasereceiptRecordDetailDO extends BaseDO { /** * 从库区代码 */ - private String fromAreaCodes; + private String fromAreaCode; /** * 到库区代码 */ - private String toAreaCodes; + private String toAreaCode; /** * 订单号 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java index bc157e4e..c6aa20fa 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java @@ -312,6 +312,7 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain if(switchDO.getEffectiveSetValue().equals("TRUE")) { RuleRespVO ruleRespVO = ruleService.inspect(purchasereceiptRecordMainDO.getSupplierCode(), null); JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration()); + //生成到货检验申请 if(!"EXAMPT".equals(String.valueOf(jsonObject.get("InspectType")))) { //按零件号和批次分组 Map> listMap = new HashMap<>(); @@ -362,6 +363,8 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain inspectRequestMainCreateReqVO.setSubList(inspectRequestDetailCreateReqVOList); inspectRequestMainService.createInspectRequestMain(inspectRequestMainCreateReqVO); } + } else {//免检,生成上架申请 + } } //增加库存事务 From 3d1f75757f5327586079ac8a2ab98c795fef3523 Mon Sep 17 00:00:00 2001 From: chenfang Date: Wed, 15 Nov 2023 09:43:39 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9mapper=E9=87=8Cget?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=AD=97=E6=AE=B5=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchasereceiptRecordDetailMapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRecord/PurchasereceiptRecordDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRecord/PurchasereceiptRecordDetailMapper.java index 13f2a460..62a31bd4 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRecord/PurchasereceiptRecordDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRecord/PurchasereceiptRecordDetailMapper.java @@ -36,8 +36,8 @@ public interface PurchasereceiptRecordDetailMapper extends BaseMapperX