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 61d99318..8fbe9c32 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 @@ -465,6 +465,7 @@ public interface ErrorCodeConstants { ErrorCode PREPARETOISSUE_MAIN_NOT_EXISTS = new ErrorCode(1_000_085_000, "备料计划主不存在"); //备料计划子ErrorCode ErrorCode PREPARETOISSUE_DETAIL_NOT_EXISTS = new ErrorCode(1_000_085_001, "备料计划子不存在"); + ErrorCode PREPARETOISSUE_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_085_002, "导入备料计划不能为空"); //补料申请主ErrorCode ErrorCode REPLEINSH_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_086_000, "补料申请主不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java index cb39848c..eccaefb5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/IssueRequestMainController.java @@ -1,8 +1,15 @@ package com.win.module.wms.controller.issueRequest; 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.inspectRequest.vo.IssueRequestImportErrorVO; +import com.win.module.wms.controller.inspectRequest.vo.IssueRequestImportVO; +import com.win.module.wms.controller.inspectRequest.vo.IssueRequestMainCreateReqVO; +import com.win.module.wms.enums.DictTypeConstants; +import io.swagger.v3.oas.annotations.Parameters; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -13,6 +20,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; @@ -29,6 +38,7 @@ import com.win.module.wms.controller.issueRequest.vo.*; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.module.wms.convert.issueRequest.IssueRequestMainConvert; import com.win.module.wms.service.issueRequest.IssueRequestMainService; +import org.springframework.web.multipart.MultipartFile; @Tag(name = "管理后台 - 发料申请主") @RestController @@ -120,7 +130,47 @@ public class IssueRequestMainController { //后端创建个字段作为前端展示的虚拟字段 vo.setCreator(user.getNickname()); } - ExcelUtils.write(response, "发料申请主.xls", "数据", IssueRequestMainExcelVO.class, datas); + Map mapDropDown = new HashMap<>(); + String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(7, uom); + ExcelUtils.write(response, "发料申请主.xls", "数据", IssueRequestMainExcelVO.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[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM); + mapDropDown.put(7, uom); + // 输出 + ExcelUtils.write(response, "检验发料申请导入模板.xlsx", "发料申请信息列表", IssueRequestImportVO.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:inspect-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, IssueRequestImportVO.class); + ConvertUtil convertUtil = new ConvertUtil<>(IssueRequestMainCreateReqVO.class); + List createReqVOList = convertUtil.invoke(list).getDataList(); + List errorList = issueRequestMainService.importIssueRequestList(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/issueRequest/vo/IssueRequestImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestImportErrorVO.java new file mode 100644 index 00000000..84122758 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestImportErrorVO.java @@ -0,0 +1,25 @@ +package com.win.module.wms.controller.issueRequest.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 IssueRequestImportErrorVO extends IssueRequestImportVO { + + @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/issueRequest/vo/IssueRequestImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestImportVO.java new file mode 100644 index 00000000..cfd7ce2b --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestImportVO.java @@ -0,0 +1,50 @@ +package com.win.module.wms.controller.issueRequest.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 IssueRequestImportVO { + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("车间代码") + private String workshopCode; + + @ExcelProperty("使用在途库") + private String useOnTheWayLocation; + + @ExcelProperty("生产线代码") + private String productionLineCode; + + @ExcelProperty("工位代码") + private String workStationCode; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("数量") + private BigDecimal 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/issueRequest/vo/IssueRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainBaseVO.java index f60befb5..4928f5bf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainBaseVO.java @@ -1,5 +1,6 @@ package com.win.module.wms.controller.issueRequest.vo; +import com.win.framework.excel.core.annotations.OnlyOne; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -43,6 +44,7 @@ public class IssueRequestMainBaseVO { @Schema(description = "到库区代码范围") private String toAreaCodes; + @OnlyOne @Schema(description = "单据号") private String number; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainCreateReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainCreateReqVO.java index 7e9b3444..84704be5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainCreateReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/issueRequest/vo/IssueRequestMainCreateReqVO.java @@ -1,12 +1,20 @@ package com.win.module.wms.controller.issueRequest.vo; +import com.win.framework.excel.core.annotations.SubObject; +import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestDetailCreateReqVO; 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 IssueRequestMainCreateReqVO extends IssueRequestMainBaseVO { + @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 d28ea52c..586d2d0a 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 @@ -4,11 +4,11 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailCreateReqVO; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailExcelVO; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailRespVO; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailUpdateReqVO; +import com.win.module.wms.controller.issueRequest.vo.*; +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.IssueRequestDetailDO; @@ -34,4 +34,24 @@ public interface IssueRequestDetailConvert { 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"), + }) + IssueRequestDetailExcelVO convert(IssueRequestMainDO mainDO, IssueRequestDetailDO detailDO); + + @Mappings({ + @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 02bd2ea2..e0266e42 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 @@ -34,4 +34,5 @@ public interface IssueRequestMainConvert { List convertList02(List list); + IssueRequestMainCreateReqVO convert1(IssueRequestMainCreateReqVO createReqVO); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRequest/IssueRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRequest/IssueRequestMainMapper.java index f56eafe4..da6b06f2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRequest/IssueRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/issueRequest/IssueRequestMainMapper.java @@ -78,4 +78,7 @@ public interface IssueRequestMainMapper extends BaseMapperX .orderByDesc(IssueRequestMainDO::getId)); } + default IssueRequestMainDO selectWorkShopCodeAndUseOnTheWayLocation(String workshopCode, String useOnTheWayLocation){ + return selectOne(IssueRequestMainDO::getWorkshopCode,workshopCode, IssueRequestMainDO::getUseOnTheWayLocation,useOnTheWayLocation); + }; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java index fe7a7350..0d1cfdb1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainService.java @@ -4,10 +4,9 @@ import java.util.*; import javax.validation.*; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainExportReqVO; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainPageReqVO; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainUpdateReqVO; +import com.win.module.wms.controller.issueRequest.vo.*; +import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestImportErrorVO; +import com.win.module.wms.controller.purchasereturnRequest.vo.PurchasereturnRequestMainCreateReqVO; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; import com.win.framework.common.pojo.PageResult; @@ -80,4 +79,6 @@ public interface IssueRequestMainService { */ List getIssueRequestMainList(IssueRequestMainExportReqVO exportReqVO); + public List importIssueRequestList(List datas, Integer mode, boolean updatePart); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java index ef6a6e10..9d30d7f0 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/issueRequest/IssueRequestMainServiceImpl.java @@ -1,14 +1,43 @@ package com.win.module.wms.service.issueRequest; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.exceptions.UtilException; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.win.framework.common.pojo.CustomConditions; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainExportReqVO; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainPageReqVO; -import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainUpdateReqVO; +import com.win.framework.common.util.validation.ValidationUtils; +import com.win.framework.dict.core.util.DictFrameworkUtils; +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.rule.vo.RuleRespVO; +import com.win.module.wms.convert.issueRequest.IssueRequestDetailConvert; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestDetailDO; +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.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; +import com.win.module.wms.dal.mysql.issueRequest.IssueRequestDetailMapper; +import com.win.module.wms.enums.DictTypeConstants; +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.rule.RuleService; +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 javax.annotation.Resource; +import javax.validation.Validator; + +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.*; import com.win.module.wms.dal.dataobject.issueRequest.IssueRequestMainDO; @@ -31,6 +60,28 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { @Resource private IssueRequestMainMapper issueRequestMainMapper; + @Resource + private IssueRequestDetailMapper issueRequestDetailMapper; + @Resource + private Validator validator; + @Resource + private SerialNumberApi serialNumberApi; + @Resource + private ItembasicService itembasicService; + @Resource + private WorkshopService workshopService; + @Resource + private ProductionlineitemService productionlineitemService; + @Resource + private ProductionlineService productionlineService; + @Resource + private WorkstationService workstationService; + @Resource + private JobUtils jobUtils; + @Resource + private RuleService ruleService; + @Resource + private RequestsettingService requestsettingService; @Override public Long createIssueRequestMain(IssueRequestMainCreateReqVO createReqVO) { @@ -60,6 +111,8 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { private void validateIssueRequestMainExists(Long id) { if (issueRequestMainMapper.selectById(id) == null) { + return; + } else { throw exception(ISSUE_REQUEST_MAIN_NOT_EXISTS); } } @@ -78,6 +131,7 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { public PageResult getIssueRequestMainPage(IssueRequestMainPageReqVO pageReqVO) { return issueRequestMainMapper.selectPage(pageReqVO); } + @Override public PageResult getIssueRequestMainSenior(CustomConditions conditions) { return issueRequestMainMapper.selectSenior(conditions); @@ -88,4 +142,160 @@ public class IssueRequestMainServiceImpl implements IssueRequestMainService { return issueRequestMainMapper.selectList(exportReqVO); } + private void ifUomSuccess(String itemUom, String uom) { + if (!itemUom.equals(uom)) { + throw new UtilException("提示单位" + uom + "错误,应该是" + itemUom); + } + } + + private Boolean ifLocationCodeInRule(String itemCode, String locationCode, String ruleLocationCode) { + String[] ruleLocationCodes = ruleLocationCode.split(","); + Boolean request = false; + for (String code : ruleLocationCodes) { + if (code.equals(locationCode)) { + request = true; + } else { + throw new UtilException("未查找到零件" + itemCode + "与库位" + locationCode + "对应的上架策略"); + } + } + return request; + } + + @Override + @Transactional + public List importIssueRequestList(List datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(PREPARETOISSUE_REQUEST_IMPORT_LIST_IS_EMPTY); + } + List errorList = new ArrayList<>(); + datas.forEach(createReqVO -> { + String messageMain = ""; + BusinesstypeDO businesstypeDO = null; + //主表校验方法 + try { + validateIssueRequestMainExists(null); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + workshopService.selectWorkshopExist(createReqVO.getWorkshopCode()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + createReqVO.setRequestTime(LocalDateTime.now()); + try { + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); + if (requestsettingDO != null) { + createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); + createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); + createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); + createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); + } + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("IssueRequest"); + createReqVO.setBusinessType(businesstypeDO.getCode()); + createReqVO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); + createReqVO.setToLocationTypes(businesstypeDO.getInLocationTypes()); + createReqVO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); + createReqVO.setToAreaCodes(businesstypeDO.getInAreaCodes()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + ValidationUtils.validate(validator, createReqVO); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RETURN_REQUEST.getCode()); + createReqVO.setNumber(number); + List subList = createReqVO.getSubList(); + List subDOList = IssueRequestDetailConvert.INSTANCE.convertList03(subList); + for (IssueRequestDetailDO detailDO : subDOList) { + String messageDetail = ""; + // 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList + //子表校验方法 + try { + ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); + detailDO.setItemDesc1(itembasicDO.getDesc1()); + detailDO.setItemDesc2(itembasicDO.getDesc2()); + detailDO.setItemName(itembasicDO.getName()); + detailDO.setProjectCode(itembasicDO.getProject()); + try { + jobUtils.ifInType(itembasicDO.getType(), businesstypeDO); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + ifUomSuccess(itembasicDO.getUom(), detailDO.getUom()); + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + try { + ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDO.getProductionLineCode()); + detailDO.setToLocationCode(productionlineDO.getRawLocationCode()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + if (detailDO.getWorkStationCode() != "") { + WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDO.getWorkStationCode(), createReqVO.getWorkshopCode(), detailDO.getProductionLineCode()); + detailDO.setToLocationCode(workstationDO.getRawLocationCode()); + } + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + productionlineitemService.productionLineCodeAndpItemCodeExist(detailDO.getProductionLineCode(), detailDO.getItemCode()); + } catch (Exception ex) { + messageMain += ex.getMessage() + ","; + } + try { + RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, detailDO.getItemCode(), null, null, null, null, null, null); + JSONObject json = JSONUtil.parseObj(grounding); + String locationCode = json.get("LocationCode").toString(); + try { + ifLocationCodeInRule(detailDO.getItemCode(), detailDO.getToLocationCode(), locationCode); + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + } catch (Exception ex) { + messageDetail += ex.getMessage() + ","; + } + IssueRequestDetailCreateReqVO purchaseturnRequestDetailCreateReqVO = IssueRequestDetailConvert.INSTANCE.convert1(detailDO); + IssueRequestImportErrorVO importVO = IssueRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseturnRequestDetailCreateReqVO); + 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()); + } + } + IssueRequestMainDO createobj = IssueRequestMainConvert.INSTANCE.convert(createReqVO); + if (errorList.isEmpty()) { + IssueRequestMainDO existIssueRequestMainDO = issueRequestMainMapper.selectWorkShopCodeAndUseOnTheWayLocation(createReqVO.getWorkshopCode(), createobj.getUseOnTheWayLocation()); + if (existIssueRequestMainDO == null && mode != 3) { + issueRequestMainMapper.insert(createobj); + issueRequestDetailMapper.insertBatch(subDOList); + } else if (existIssueRequestMainDO != null && mode != 2) { + issueRequestMainMapper.updateById(createobj); + issueRequestDetailMapper.updateBatch(subDOList); + } + } + }); + //错误不为空并非部分更新,手工回滚 + if (!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return errorList; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/jobsetting/JobsettingService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/jobsetting/JobsettingService.java index 43dba645..d2171975 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/jobsetting/JobsettingService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/jobsetting/JobsettingService.java @@ -80,7 +80,7 @@ public interface JobsettingService { List importJobsettingList(List jobsettings, Integer mode, Boolean updatePart); /** - * Setting------QJS + * Setting------QJobs * 查询任务单设置是否存在 * @author chenfang * @param pcode code diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineService.java index b57566b6..097b9c2c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineService.java @@ -97,4 +97,13 @@ public interface ProductionlineService { * @return 分页列表 */ PageResult getProductionlineSenior(CustomConditions conditions); + + /** + * BQ---QPL + * 校验生产线基础信息 + * @author chenfang + * @param pproductionLineCode + * @return + */ + public ProductionlineDO productionLineCodeExist(String pproductionLineCode); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineServiceImpl.java index 7d24fcb1..380a2a8a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineServiceImpl.java @@ -13,6 +13,7 @@ import com.win.module.wms.convert.productionline.ProductionlineConvert; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; import com.win.module.wms.dal.dataobject.owner.OwnerDO; import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; +import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; import com.win.module.wms.dal.mysql.productionline.ProductionlineMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -196,4 +197,15 @@ public class ProductionlineServiceImpl implements ProductionlineService { return productionlineMapper.selectSenior(conditions); } + @Override + public ProductionlineDO productionLineCodeExist(String pproductionLineCode){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("code",pproductionLineCode); + ProductionlineDO productionlineDO = productionlineMapper.selectOne(queryWrapper); + if(productionlineDO != null && "TRUE".equals(productionlineDO.getAvailable())){ + return productionlineDO; + }else { + throw exception(PRODUCTIONLINE_NOT_EXISTS); + } + } } 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 05b7f925..8002809b 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 @@ -168,6 +168,7 @@ public class ProductionlineitemServiceImpl implements ProductionlineitemService } } //零件生产线关系有效 + @Override public List productionLineCodeAndpItemCodeExist(String pproductionLineCode,String pitemCode) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("production_line_code",pproductionLineCode); 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 eb24da21..c14aa3a5 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 @@ -155,7 +155,7 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest } private void selectUomExist(String itemUom,String uom) { - if(itemUom == uom){ + if(itemUom.equals(uom)){ return; }else { throw new UtilException("提示单位"+ uom + "错误,应该是" + itemUom); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/recordsetting/RecordsettingService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/recordsetting/RecordsettingService.java index a28f515e..cde9a025 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/recordsetting/RecordsettingService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/recordsetting/RecordsettingService.java @@ -81,7 +81,7 @@ public interface RecordsettingService { List importRecordsettingList(List recordsettings, Integer mode, Boolean updatePart); /** - * Setting-----QRS + * Setting-----QRecs * 查询记录单设置是否存在 * @author chenfang * @param pcode diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/requestsetting/RequestsettingService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/requestsetting/RequestsettingService.java index e2233256..478c4a6f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/requestsetting/RequestsettingService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/requestsetting/RequestsettingService.java @@ -78,7 +78,7 @@ public interface RequestsettingService { List importRequestsettingList(List requestsettings, Integer mode, Boolean updatePart); /** - * Setting-----QRS + * Setting-----QReqs * 查询申请单设置是否存在 * @author chenfang * @param pcode