diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkDetailController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkDetailController.java index 9a9d0fb9..0faba201 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkDetailController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkDetailController.java @@ -108,22 +108,4 @@ public class WorkDetailController { } return success(result); } - - @GetMapping("/export-excel") - @Operation(summary = "导出生产订单子 Excel") - @PreAuthorize("@ss.hasPermission('wms:work-detail:export')") - @OperateLog(type = EXPORT) - public void exportWorkDetailExcel(@Valid WorkDetailExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = workDetailService.getWorkDetailList(exportReqVO); - // 导出 Excel - List datas = WorkDetailConvert.INSTANCE.convertList02(list); - for(WorkDetailExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); - //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); - } - ExcelUtils.write(response, "生产订单子.xls", "数据", WorkDetailExcelVO.class, datas); - } - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkMainController.java index f0e682b4..ab26fc4e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkMainController.java @@ -3,14 +3,22 @@ package com.win.module.wms.controller.work; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ConvertUtil; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainExcelVO; import com.win.module.wms.controller.work.vo.*; +import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert; import com.win.module.wms.convert.work.WorkMainConvert; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; +import com.win.module.wms.dal.dataobject.work.WorkDetailDO; import com.win.module.wms.dal.dataobject.work.WorkMainDO; +import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.service.work.WorkDetailService; import com.win.module.wms.service.work.WorkMainService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -38,6 +46,8 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Validated public class WorkMainController { + @Resource + private WorkDetailService workDetailService; @Resource private WorkMainService workMainService; @@ -100,46 +110,75 @@ public class WorkMainController { PageResult pageResult = workMainService.getWorkMainSenior(conditions); PageResult result = WorkMainConvert.INSTANCE.convertPage(pageResult); for(WorkMainRespVO vo : result.getList()) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); + vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname()); + //后端创建个字段作为前端展示的虚拟字段 + vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname()); } return success(result); } @GetMapping("/export-excel") - @Operation(summary = "导出生产订单主 Excel") + @Operation(summary = "导出生产订单 Excel") @PreAuthorize("@ss.hasPermission('wms:work-main:export')") @OperateLog(type = EXPORT) public void exportWorkMainExcel(@Valid WorkMainExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { List list = workMainService.getWorkMainList(exportReqVO); - // 导出 Excel - List datas = WorkMainConvert.INSTANCE.convertList02(list); - for(WorkMainExcelVO vo : datas) { - AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator())); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + for(WorkMainExcelVO vo : resultList) { //后端创建个字段作为前端展示的虚拟字段 - vo.setCreator(user.getNickname()); + vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname()); + //后端创建个字段作为前端展示的虚拟字段 + vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname()); + } + ExcelUtils.write(response, "生产订单.xls", "数据", WorkMainExcelVO.class, resultList, mapDropDown); + } + + @GetMapping("/export-excel-senior") + @Operation(summary = "导出生产订单 Excel") + @PreAuthorize("@ss.hasPermission('wms:work-main:export')") + @OperateLog(type = EXPORT) + public void exportWorkMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException { + List list = workMainService.getWorkMainList(conditions); + //组装vo + Map mapDropDown = new HashMap<>(); + List resultList = this.getExcelVo(list, mapDropDown); + // 导出 Excel + ExcelUtils.write(response, "生产订单.xlsx", "数据", WorkMainExcelVO.class, resultList, mapDropDown); + } + + private List getExcelVo(List list, Map mapDropDown) { + String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE); + mapDropDown.put(13, available); + List resultList = new ArrayList<>(); + // 导出 + for(WorkMainDO mainDO : list) { + List subList = workDetailService.selectList(mainDO.getId()); + for(WorkDetailDO detailDO : subList) { + WorkMainExcelVO vo = WorkMainConvert.INSTANCE.convert(mainDO, detailDO); + resultList.add(vo); + } } - ExcelUtils.write(response, "生产订单主.xls", "数据", WorkMainExcelVO.class, datas); + return resultList; } @GetMapping("/get-import-template") - @Operation(summary = "获得导入采购索赔信息模板") + @Operation(summary = "获得导入生产订单模板") public void importTemplate(HttpServletResponse response) throws IOException { // 手动创建导出 demo List list = new ArrayList<>(); Map mapDropDown = new HashMap<>(); -// String[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON); -// mapDropDown.put(16, purchaseReturnReason); -// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); -// mapDropDown.put(25, uom); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(6, uom); // 输出 - ExcelUtils.write(response, "采购索赔信息导入模板.xlsx", "采购索赔信息列表", WorkMainImportVO.class, list, mapDropDown); + ExcelUtils.write(response, "生产订单导入模板.xlsx", "生产订单信息列表", WorkMainImportVO.class, list, mapDropDown); } @PostMapping("/import") - @Operation(summary = "导入要货计划") + @Operation(summary = "导入生产订单") @Parameters({ @Parameter(name = "file", description = "Excel 文件", required = true), @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainBaseVO.java index 2e1ea662..4ef25ebb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.work.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -44,6 +45,7 @@ public class WorkMainBaseVO { @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "单据号不能为空") + @OnlyOne private String number; @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExcelVO.java index 6f2f829c..13e7782e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExcelVO.java @@ -1,7 +1,10 @@ package com.win.module.wms.controller.work.vo; +import com.win.module.wms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + +import java.math.BigDecimal; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; @@ -21,6 +24,9 @@ import com.win.framework.excel.core.convert.DictConvert; @Data public class WorkMainExcelVO { + @ExcelProperty("单据号") + private String number; + @ExcelProperty("供应商代码") private String customerCode; @@ -37,9 +43,6 @@ public class WorkMainExcelVO { @ExcelProperty("版本") private String version; - @ExcelProperty("单据号") - private String number; - @ExcelProperty("业务类型") private String businessType; @@ -62,6 +65,31 @@ public class WorkMainExcelVO { private Integer currentStage; @ExcelProperty("是否可用") + @DictFormat(DictTypeConstants.TRUE_FALSE) private String available; + @ExcelProperty("行号") + private String lineNumber; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("完工数量") + private BigDecimal finishedQty; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("备注2") + private String remarkDetail; + + @ExcelProperty("订单数量") + private BigDecimal orderQty; + + @ExcelProperty("计量单位") + private String uom; + + @ExcelProperty("是否可用2") + @DictFormat(DictTypeConstants.TRUE_FALSE) + private String availableDetail; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExportReqVO.java index b6999772..994cffb8 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExportReqVO.java @@ -1,5 +1,7 @@ package com.win.module.wms.controller.work.vo; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.module.wms.enums.DictTypeConstants; import lombok.*; import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; @@ -57,6 +59,7 @@ public class WorkMainExportReqVO { private Integer currentStage; @Schema(description = "是否可用") + @DictFormat(DictTypeConstants.TRUE_FALSE) private String available; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainImportVO.java index 17bacbf3..ba7a7098 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainImportVO.java @@ -1,6 +1,9 @@ package com.win.module.wms.controller.work.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.annotations.OnlyOne; +import com.win.module.wms.enums.DictTypeConstants; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -40,5 +43,6 @@ public class WorkMainImportVO { @ExcelProperty("订单数量") private BigDecimal orderQty; @ExcelProperty("计量单位") + @DictFormat(DictTypeConstants.UOM) private String uom; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkMainConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkMainConvert.java index cc4140c4..99a87d16 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkMainConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkMainConvert.java @@ -4,11 +4,14 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.work.vo.WorkMainCreateReqVO; -import com.win.module.wms.controller.work.vo.WorkMainExcelVO; -import com.win.module.wms.controller.work.vo.WorkMainRespVO; -import com.win.module.wms.controller.work.vo.WorkMainUpdateReqVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainExcelVO; +import com.win.module.wms.controller.work.vo.*; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; +import com.win.module.wms.dal.dataobject.work.WorkDetailDO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import com.win.module.wms.dal.dataobject.work.WorkMainDO; @@ -34,4 +37,21 @@ public interface WorkMainConvert { List convertList02(List list); + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + }) + WorkMainImportErrorVO convert(WorkMainCreateReqVO mainDO, WorkDetailDO detailDO); + + @Mappings({ + @Mapping(source = "mainDO.number", target = "number"), + @Mapping(source = "mainDO.remark", target = "remark"), + @Mapping(source = "mainDO.createTime", target = "createTime"), + @Mapping(source = "mainDO.creator", target = "creator"), + @Mapping(source = "mainDO.updateTime", target = "updateTime"), + @Mapping(source = "mainDO.updater", target = "updater"), + @Mapping(source = "mainDO.available", target = "available"), + @Mapping(source = "detailDO.available", target = "availableDetail"), + @Mapping(source = "detailDO.remark", target = "remarkDetail"), + }) + WorkMainExcelVO convert(WorkMainDO mainDO, WorkDetailDO detailDO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/work/WorkDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/work/WorkDetailDO.java index ba7a6001..8343335e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/work/WorkDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/work/WorkDetailDO.java @@ -43,7 +43,7 @@ public class WorkDetailDO extends BaseDO { /** * 主表ID */ - private String masterId; + private Long masterId; /** * 单据号 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkDetailMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkDetailMapper.java index 5e618e06..a2f9a231 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkDetailMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkDetailMapper.java @@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.work.vo.WorkDetailExportReqVO; import com.win.module.wms.controller.work.vo.WorkDetailPageReqVO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; import com.win.module.wms.dal.dataobject.work.WorkDetailDO; import org.apache.ibatis.annotations.Mapper; @@ -41,22 +42,26 @@ public interface WorkDetailMapper extends BaseMapperX { .orderByDesc(WorkDetailDO::getId)); } - default List selectList(WorkDetailExportReqVO reqVO) { + default List selectList(Long masterId) { return selectList(new LambdaQueryWrapperX() - .eqIfPresent(WorkDetailDO::getLineNumber, reqVO.getLineNumber()) - .eqIfPresent(WorkDetailDO::getProjectCode, reqVO.getProjectCode()) - .eqIfPresent(WorkDetailDO::getFinishedQty, reqVO.getFinishedQty()) - .eqIfPresent(WorkDetailDO::getNumber, reqVO.getNumber()) - .eqIfPresent(WorkDetailDO::getItemCode, reqVO.getItemCode()) - .eqIfPresent(WorkDetailDO::getRemark, reqVO.getRemark()) - .betweenIfPresent(WorkDetailDO::getCreateTime, reqVO.getCreateTime()) - .eqIfPresent(WorkDetailDO::getCreator, reqVO.getCreator()) - .eqIfPresent(WorkDetailDO::getOrderQty, reqVO.getOrderQty()) - .eqIfPresent(WorkDetailDO::getUom, reqVO.getUom()) - .betweenIfPresent(WorkDetailDO::getUpdateTime, reqVO.getUpdateTime()) - .eqIfPresent(WorkDetailDO::getUpdater, reqVO.getUpdater()) - .eqIfPresent(WorkDetailDO::getAvailable, reqVO.getAvailable()) - .orderByDesc(WorkDetailDO::getId)); + .eq(WorkDetailDO::getMasterId, masterId)); } +// default List selectList(WorkDetailExportReqVO reqVO) { +// return selectList(new LambdaQueryWrapperX() +// .eqIfPresent(WorkDetailDO::getLineNumber, reqVO.getLineNumber()) +// .eqIfPresent(WorkDetailDO::getProjectCode, reqVO.getProjectCode()) +// .eqIfPresent(WorkDetailDO::getFinishedQty, reqVO.getFinishedQty()) +// .eqIfPresent(WorkDetailDO::getNumber, reqVO.getNumber()) +// .eqIfPresent(WorkDetailDO::getItemCode, reqVO.getItemCode()) +// .eqIfPresent(WorkDetailDO::getRemark, reqVO.getRemark()) +// .betweenIfPresent(WorkDetailDO::getCreateTime, reqVO.getCreateTime()) +// .eqIfPresent(WorkDetailDO::getCreator, reqVO.getCreator()) +// .eqIfPresent(WorkDetailDO::getOrderQty, reqVO.getOrderQty()) +// .eqIfPresent(WorkDetailDO::getUom, reqVO.getUom()) +// .betweenIfPresent(WorkDetailDO::getUpdateTime, reqVO.getUpdateTime()) +// .eqIfPresent(WorkDetailDO::getUpdater, reqVO.getUpdater()) +// .eqIfPresent(WorkDetailDO::getAvailable, reqVO.getAvailable()) +// .orderByDesc(WorkDetailDO::getId)); +// } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java index ffe8ac15..39e06e26 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java @@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.work.vo.WorkMainExportReqVO; import com.win.module.wms.controller.work.vo.WorkMainPageReqVO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import com.win.module.wms.dal.dataobject.work.WorkMainDO; import org.apache.ibatis.annotations.Mapper; @@ -66,4 +67,7 @@ public interface WorkMainMapper extends BaseMapperX { .orderByDesc(WorkMainDO::getId)); } + default List selectSeniorList(CustomConditions conditions) { + return selectList(QueryWrapperUtils.structure(conditions)); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailService.java index 7fed2b26..5dfca32c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailService.java @@ -9,6 +9,7 @@ import com.win.module.wms.controller.work.vo.WorkDetailExportReqVO; import com.win.module.wms.controller.work.vo.WorkDetailPageReqVO; import com.win.module.wms.controller.work.vo.WorkDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; import com.win.module.wms.dal.dataobject.work.WorkDetailDO; import com.win.framework.common.pojo.PageResult; @@ -78,6 +79,14 @@ public interface WorkDetailService { * @param exportReqVO 查询条件 * @return 生产订单子列表 */ - List getWorkDetailList(WorkDetailExportReqVO exportReqVO); +// List getWorkDetailList(WorkDetailExportReqVO exportReqVO); + + /** + * 根据主表id查询 + * + * @param masterId 主表id + * @return + */ + List selectList(Long masterId); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailServiceImpl.java index 61eaa818..dc3d1d3d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailServiceImpl.java @@ -5,6 +5,7 @@ import com.win.module.wms.controller.work.vo.WorkDetailCreateReqVO; import com.win.module.wms.controller.work.vo.WorkDetailExportReqVO; import com.win.module.wms.controller.work.vo.WorkDetailPageReqVO; import com.win.module.wms.controller.work.vo.WorkDetailUpdateReqVO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -84,9 +85,14 @@ public class WorkDetailServiceImpl implements WorkDetailService { return workDetailMapper.selectPage(pageReqVO); } +// @Override +// public List getWorkDetailList(WorkDetailExportReqVO exportReqVO) { +// return workDetailMapper.selectList(exportReqVO); +// } + @Override - public List getWorkDetailList(WorkDetailExportReqVO exportReqVO) { - return workDetailMapper.selectList(exportReqVO); + public List selectList(Long masterId) { + return workDetailMapper.selectList(masterId); } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainService.java index c6d1e630..e5564db1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainService.java @@ -3,6 +3,7 @@ package com.win.module.wms.service.work; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.work.vo.*; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import com.win.module.wms.dal.dataobject.work.WorkDetailDO; import com.win.module.wms.dal.dataobject.work.WorkMainDO; @@ -78,6 +79,14 @@ public interface WorkMainService { */ List getWorkMainList(WorkMainExportReqVO exportReqVO); + /** + * 获得生产订单主列表, 用于 Excel 导出 + * + * @param conditions 查询条件 + * @return 采购收货申请主列表 + */ + List getWorkMainList(CustomConditions conditions); + /** * Order----VW * 校验生产订单 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java index dc684d6e..8c2e1179 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java @@ -6,18 +6,35 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.common.util.validation.ValidationUtils; +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.purchasereceiptRequest.vo.PurchasereceiptRequestDetailCreateReqVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainExportReqVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO; import com.win.module.wms.controller.work.vo.*; +import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert; +import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert; import com.win.module.wms.convert.work.WorkDetailConvert; import com.win.module.wms.convert.work.WorkMainConvert; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.customer.CustomerDO; import com.win.module.wms.dal.dataobject.customeritem.CustomeritemDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.dataobject.saleprice.SalepriceDO; import com.win.module.wms.dal.dataobject.work.WorkDetailDO; import com.win.module.wms.dal.dataobject.work.WorkMainDO; import com.win.module.wms.dal.mysql.work.WorkDetailMapper; import com.win.module.wms.dal.mysql.work.WorkMainMapper; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.enums.request.RequestStatusState; +import com.win.module.wms.service.customer.CustomerService; import com.win.module.wms.service.customeritem.CustomeritemService; import com.win.module.wms.service.itembasic.ItembasicService; import com.win.module.wms.service.itempackaging.ItempackagingService; @@ -26,10 +43,13 @@ import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.supplieritem.SupplieritemService; 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; +import javax.validation.Validator; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -47,6 +67,14 @@ import static com.win.module.wms.enums.ErrorCodeConstants.WORK_MAIN_NOT_EXISTS; @Validated public class WorkMainServiceImpl implements WorkMainService { + @Resource + private CustomerService customerService; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private TrendsApi trendsApi; + @Resource + private Validator validator; @Resource private WorkMainMapper workMainMapper; @Resource @@ -123,6 +151,11 @@ public class WorkMainServiceImpl implements WorkMainService { return workMainMapper.selectList(exportReqVO); } + @Override + public List getWorkMainList(CustomConditions conditions) { + return workMainMapper.selectSeniorList(conditions); + } + @Override public WorkDetailDO selectWorkExist(String pnumber, String pitemCode) { QueryWrapper queryWrapperMain = new QueryWrapper(); @@ -143,114 +176,235 @@ public class WorkMainServiceImpl implements WorkMainService { } @Override + @Transactional public List importWorkMainList(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 -> { - // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList - String messageMain = ""; - //主表的验证 - //子表的验证 + WorkMainDO mainDO = WorkMainConvert.INSTANCE.convert(createReqVO); + String messageMain = this.validateWorkMainImport(mainDO); List subList = createReqVO.getSubList(); List subDOList = WorkDetailConvert.INSTANCE.convertList03(subList); - for (WorkDetailDO purchaseDetailDO : subDOList) { - String messageDetail = ""; - // 校验物品基础信息 - try { - ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); - if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { - messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; - } else { -// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1()); -// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2()); -// purchaseDetailDO.setItemName(itembasicDO.getName()); - purchaseDetailDO.setProjectCode(itembasicDO.getProject()); - } - if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { - messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; - } - purchaseDetailDO.setProjectCode(itembasicDO.getCode()); - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - - // 校验物品标包信息 - try { - ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailDO.getItemCode()); -// purchaseDetailDO.setStdPackUnit(itempackagingDO.getStdPackUnit()); -// purchaseDetailDO.setStdPackQty(itempackagingDO.getStdPackQty()); - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - // 校验客户物品基础信息 - try { - CustomeritemDO customeritemDO = customeritemService.selectCustomeritemExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode()); - if (customeritemDO == null) { - messageDetail += "未查找到客户" + createReqVO.getCustomerCode() + "与物品" + purchaseDetailDO.getItemCode() + "的对应关系" + ","; - } else { - //根据customeritemdto赋值 - } - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - // 校验销售价格 - try { - SalepriceDO salepriceDO = salepriceService.selectItemPackagingExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode()); - if (salepriceDO != null) { - } - } catch (ServiceException ex) { - messageDetail += ex.getMessage() + ","; - } - - WorkDetailCreateReqVO purchaseDetailCreateReqVO = WorkDetailConvert.INSTANCE.convert1(purchaseDetailDO); - WorkMainImportErrorVO importVO = WorkDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); - //进行子表的错误统计 - //主表没有错误 写入库里 - if (!messageMain.equals("") || !messageDetail.equals("")) { - importVO.setImportStatus("失败"); + // 是否有错误数据 + boolean flag = true; + for (WorkDetailDO detailDO : subDOList) { + String messageDetail = this.validateWorkDetailImport(mainDO, detailDO); + if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { + WorkMainImportErrorVO importErrorVO = WorkMainConvert.INSTANCE.convert(createReqVO, detailDO); + importErrorVO.setImportStatus("失败"); messageMain = messageMain + messageDetail; - importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); - errorList.add(importVO); - } else { - purchaseDetailDO.setNumber(createReqVO.getNumber()); -// purchaseDetailDO.setMasterId(createReqVO.getId()); + importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); + errorList.add(importErrorVO); + flag = false; } } - - if (errorList.isEmpty()) { - // 判断如果不存在,在进行插入 - WorkMainDO existPurchaseclaimRequestMainDO = workMainMapper.selectByNumber(createReqVO.getNumber()); - if (existPurchaseclaimRequestMainDO == null && mode != 3) { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - createReqVO.setType(null); - createReqVO.setVersion(null); - createReqVO.setCurrentStage(null); - WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO); - workMainMapper.insert(createObj); - workDetailMapper.insertBatch(subDOList); - } else if (existPurchaseclaimRequestMainDO != null && mode != 2) { - BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder"); - if (businesstypeDO != null) { - createReqVO.setBusinessType(businesstypeDO.getCode()); - } - createReqVO.setType(null); - createReqVO.setVersion(null); - createReqVO.setCurrentStage(null); - WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO); - workMainMapper.updateById(createObj); - workDetailMapper.updateBatch(subDOList); + //写入数据 + if(flag) { + //申请单目前只做新增 + String number = serialNumberApi.generateCode(RuleCodeEnum.WORK_ORDER.getCode()); + mainDO.setNumber(number); + mainDO.setAvailable("TRUE"); // 导入默认 可用 + mainDO.setBusinessType("ProductReceipt"); // 业务类型:制品收货 + workMainMapper.insert(mainDO); + //增加操作记录 + trendsApi.createTrends(mainDO.getId(), "workMain", "导入了生产订单", TrendsTypeEnum.CREATE); + int index = 0; + for (WorkDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDO.getId()); + detailDO.setNumber(number); + detailDO.setAvailable("TRUE"); // 导入默认 可用 + detailDO.setLineNumber("WODetail" + index); + detailDO.setFinishedQty(new BigDecimal(0)); + index++; } + workDetailMapper.insertBatch(subDOList); } }); + + +// List errorList = new ArrayList<>(); +// datas.forEach(createReqVO -> { +// // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList +// String messageMain = ""; +// //主表的验证 +// //子表的验证 +// List subList = createReqVO.getSubList(); +// List subDOList = WorkDetailConvert.INSTANCE.convertList03(subList); +// for (WorkDetailDO purchaseDetailDO : subDOList) { +// String messageDetail = ""; +// // 校验物品基础信息 +// try { +// ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); +// if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { +// messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; +// } else { +//// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1()); +//// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2()); +//// purchaseDetailDO.setItemName(itembasicDO.getName()); +// purchaseDetailDO.setProjectCode(itembasicDO.getProject()); +// } +// if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { +// messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; +// } +// purchaseDetailDO.setProjectCode(itembasicDO.getCode()); +// } catch (ServiceException ex) { +// messageDetail += ex.getMessage() + ","; +// } +// +// // 校验物品标包信息 +// try { +// ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailDO.getItemCode()); +//// purchaseDetailDO.setStdPackUnit(itempackagingDO.getStdPackUnit()); +//// purchaseDetailDO.setStdPackQty(itempackagingDO.getStdPackQty()); +// } catch (ServiceException ex) { +// messageDetail += ex.getMessage() + ","; +// } +// // 校验客户物品基础信息 +// try { +// CustomeritemDO customeritemDO = customeritemService.selectCustomeritemExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode()); +// if (customeritemDO == null) { +// messageDetail += "未查找到客户" + createReqVO.getCustomerCode() + "与物品" + purchaseDetailDO.getItemCode() + "的对应关系" + ","; +// } else { +// //根据customeritemdto赋值 +// } +// } catch (ServiceException ex) { +// messageDetail += ex.getMessage() + ","; +// } +// // 校验销售价格 +// try { +// SalepriceDO salepriceDO = salepriceService.selectItemPackagingExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode()); +// if (salepriceDO != null) { +// } +// } catch (ServiceException ex) { +// messageDetail += ex.getMessage() + ","; +// } +// +// WorkDetailCreateReqVO purchaseDetailCreateReqVO = WorkDetailConvert.INSTANCE.convert1(purchaseDetailDO); +// WorkMainImportErrorVO importVO = WorkDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); +// //进行子表的错误统计 +// //主表没有错误 写入库里 +// if (!messageMain.equals("") || !messageDetail.equals("")) { +// importVO.setImportStatus("失败"); +// messageMain = messageMain + messageDetail; +// importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); +// errorList.add(importVO); +// } else { +// purchaseDetailDO.setNumber(createReqVO.getNumber()); +//// purchaseDetailDO.setMasterId(createReqVO.getId()); +// } +// } +// +// if (errorList.isEmpty()) { +// // 判断如果不存在,在进行插入 +// WorkMainDO existPurchaseclaimRequestMainDO = workMainMapper.selectByNumber(createReqVO.getNumber()); +// if (existPurchaseclaimRequestMainDO == null && mode != 3) { +// BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder"); +// if (businesstypeDO != null) { +// createReqVO.setBusinessType(businesstypeDO.getCode()); +// } +// createReqVO.setType(null); +// createReqVO.setVersion(null); +// createReqVO.setCurrentStage(null); +// WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO); +// workMainMapper.insert(createObj); +// workDetailMapper.insertBatch(subDOList); +// } else if (existPurchaseclaimRequestMainDO != null && mode != 2) { +// BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder"); +// if (businesstypeDO != null) { +// createReqVO.setBusinessType(businesstypeDO.getCode()); +// } +// createReqVO.setType(null); +// createReqVO.setVersion(null); +// createReqVO.setCurrentStage(null); +// WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO); +// workMainMapper.updateById(createObj); +// workDetailMapper.updateBatch(subDOList); +// } +// } +// }); //错误不为空并非部分更新,手工回滚 if (!errorList.isEmpty() && !updatePart) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return errorList; } + + /** + * 校验物品信息并赋值 + * @param detailDo + * @return + */ + private ItembasicDO validateItem(WorkDetailDO detailDo) { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); + detailDo.setProjectCode(itembasicDO.getProject()); + return itembasicDO; + } + + /** + * 校验客户信息 + * @param mainDo + * @return + */ + private CustomerDO validateCustomer(WorkMainDO mainDo) { + return customerService.selectCustomerExist(mainDo.getCustomerCode()); + } + + /** + * 校验客户物品信息 + * @param detailDo + * @return + */ + private CustomeritemDO validateCustomeritem(WorkMainDO mainDo, WorkDetailDO detailDo) { + return customeritemService.selectCustomeritemExist(mainDo.getCustomerCode(),detailDo.getItemCode()); + } + + /** + * 校验导入,并赋值一些参数,未完全实现 + * @param mainDo + * @return + */ + private String validateWorkMainImport(WorkMainDO mainDo) { + StringBuilder message = new StringBuilder(); + try { + ValidationUtils.validate(validator, mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + try { + this.validateCustomer(mainDo); + } catch (Exception ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + /** + * 校验导入,并赋值一些参数,未完全实现 + * @param detailDo + * @return + */ + private String validateWorkDetailImport(WorkMainDO mainDo, WorkDetailDO detailDo) { + StringBuilder message = new StringBuilder(); + try { + ValidationUtils.validate(validator, detailDo); + } catch (Exception e) { + message.append(e.getMessage()).append(","); + } + try { + this.validateCustomeritem(mainDo, detailDo); + } catch (Exception e) { + message.append(e.getMessage()).append(","); + } + try { + this.validateItem(detailDo); + } catch (Exception e) { + message.append(e.getMessage()).append(","); + } + return message.toString(); + } } + +