From 804c80b0fd284c7464066efbd5e5833ddacfb635 Mon Sep 17 00:00:00 2001 From: liding <756868258@qq.com> Date: 星期五, 11 四月 2025 13:11:16 +0800 Subject: [PATCH] 原辅材下单优化 --- basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java | 384 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 292 insertions(+), 92 deletions(-) diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java index e0a265f..7603c55 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java +++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java @@ -1,27 +1,23 @@ package com.ruoyi.basic.service.impl; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.*; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.basic.dto.*; +import com.ruoyi.basic.enums.StandardProductListChcekTypeEnums; import com.ruoyi.basic.mapper.*; import com.ruoyi.basic.pojo.*; import com.ruoyi.basic.service.StandardMethodListService; -import com.ruoyi.basic.service.StandardMethodService; +import com.ruoyi.basic.service.StandardProductListSupplierAskService; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.basic.dto.CopyStandardProductListDto; -import com.ruoyi.basic.dto.InsSampleReceiveDto; -import com.ruoyi.basic.dto.ProductDto; -import com.ruoyi.basic.dto.ResetTreeDragDTO; import com.ruoyi.basic.service.StandardProductListService; import lombok.AllArgsConstructor; -import org.apache.catalina.security.SecurityUtil; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -51,62 +47,78 @@ private ProductPartMapper productPartMapper; - private StructureTestObjectPartMapper structureTestObjectPartMapper; + private StructureTestObjectPartMapper structureTestObjectPartMapper; - @Autowired private StandardMethodListService standardMethodListService; - @Autowired private StructureItemParameterMapper structureItemParameterMapper; + + private ModelMapper modelMapper; + + private StandardProductListBackupRelMapper standardProductListBackupRelMapper; + + private StandardProductListUpdateRecordMapper standardProductListUpdateRecordMapper; + + private StandardProductListUpdateRecordRelMapper standardProductListUpdateRecordRelMapper; + + private StandardProductListSupplierAskService standardProductListSupplierAskService; + + private StandardProductListSupplierAskBackupRelMapper standardProductListSupplierAskBackupRelMapper; + + private StandardMethodMapper standardMethodMapper; @Override public int upStandardProductList(StandardProductList list) { + // 鏍规嵁id 鏌ヨ鍒板師濮嬪�� + StandardProductList standardProductList = standardProductListMapper.selectById(list.getId()); + if (ObjectUtils.isEmpty(standardProductList)) { + throw new RuntimeException("鏇存柊澶辫触,鏈煡鎵惧埌妫�鏌ラ」"); + } + // 鍒ゆ柇褰撳墠鐘舵�� 濡傛灉鏄鏍镐腑 + if (StandardProductListChcekTypeEnums.CHECK_ING.getCode().equals(list.getCheckStatus())) { + throw new RuntimeException("瀹℃牳涓笉鏀寔淇敼"); + } + // 鍒ゆ柇妫�楠岄」鏄惁涓烘槸鍚﹀鎵樿姹� 鏄殑璇濅笉闇�瑕佸仛澶囦唤鍜岀姸鎬佷慨鏀圭洿鎺ユ洿鏂� + StructureItemParameter structureItemParameter = structureItemParameterMapper.selectById(standardProductList.getStructureItemParameterId()); + if (!ObjectUtils.isEmpty(structureItemParameter) && "1".equals(structureItemParameter.getDelegateRequestFlag())) { + return standardProductListMapper.updateById(list); + } + // 鍒ゆ柇鏄惁涓虹敓鏁堢殑淇敼濡傛灉鏄笉鍋氬浠� + if (null != list.getState()) { + return standardProductListMapper.updateById(list); + } + // 鏌ヨ鏈�鏂扮殑涓�娆″叧鑱斿浠� 濡傛灉瀛樺湪璇存槑鏈鏍稿畬缁х画淇敼浜嗐�備笉鍋氭暟鎹鐞嗐�� + StandardProductListBackupRel standardProductListBackupRel = standardProductListBackupRelMapper.selectById(list.getId()); + if (ObjectUtils.isEmpty(standardProductListBackupRel)) { + StandardProductListBackupRel productListBackupRel = new StandardProductListBackupRel(); + BeanUtils.copyProperties(standardProductList, productListBackupRel); + standardProductListBackupRelMapper.insert(productListBackupRel); + } + // 鍏宠仈鍟嗗澶囦唤 + StandardProductListSupplierAsk standardProductListSupplierAsk = new StandardProductListSupplierAsk(); + standardProductListSupplierAsk.setProductListId(list.getId()); + standardProductListSupplierAskService.backupSupplierAsk(standardProductListSupplierAsk); + // 淇敼鐘舵�� + list.setCheckStatus(StandardProductListChcekTypeEnums.WAIT_CHECK.getCode()); return standardProductListMapper.updateById(list); } @Override public List<StandardProductList> selectStandardProductList(InsSampleReceiveDto insSample) { - // 鏄惁娌℃湁浜у搧 - boolean isNoSample = false; -// String[] models = insSample.getModel().split("-(?=[^-]*$)");//鎷嗗垎鏈�鍚庝竴涓��-銆� String model = insSample.getModel(); String modelNum = insSample.getModelNum(); - List<StandardProductList> list = standardProductListMapper.selectDetail(insSample.getStandardMethodListId(), 1, model, insSample.getIsCableTag()); - if (list.size() == 0) { - if (Objects.equals(insSample.getFactory(), "") || insSample.getFactory() == null) { - return null; - } - String[] split = insSample.getFactory().split(" - "); - split[3] = split[3].replace("- ", ""); - String tree = split[0] + " - " + split[1] + " - " + split[2] + " - " + split[3] + " - null"; - list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree, insSample.getIsCableTag()); - if (list.size() == 0) { - String tree1 = split[0] + " - " + split[1] + " - " + split[2] + " - null - " + split[3]; - list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree1, insSample.getIsCableTag()); - - // 鍙湁瀵硅薄鐨勪竴灞� - if (list.size() == 0) { - String tree2 = split[0] + " - " + split[1] + " - " + split[2] + " - null - null"; - list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree2, insSample.getIsCableTag()); - // 鏍峰搧鐩存帴璧嬪�兼牱鍝佸垎绫� - list.forEach(standardProductList -> standardProductList.setSample(standardProductList.getSampleType())); - isNoSample = true; - } - } + // 鏌ヨ妫�鏌ラ」鐩� + StandardProductListDto standardProductListDto = new StandardProductListDto(); + standardProductListDto.setTree(insSample.getFactory()); + standardProductListDto.setStandardMethodListIds(insSample.getStandardMethodListIds()); + standardProductListDto.setState(insSample.getState()); + List<StandardProductList> list = new ArrayList<>(); + if (CollectionUtils.isEmpty(standardProductListDto.getStandardMethodListIds())) { + return list; } - String[] split1 = insSample.getFactory().split(" - "); - if (!isNoSample) { - //鍒ゆ柇闀垮害 - if (split1.length > 4) { - if (ObjectUtils.isNotEmpty(split1[3])) { - list = list.stream().filter(list1 -> Objects.nonNull(list1.getSample()) && Objects.equals(list1.getSample(), split1[3])).collect(Collectors.toList()); - } else if (split1[3].equals("")) { - list = list.stream().filter(list1 -> Objects.nonNull(list1.getSampleType()) && Objects.equals(list1.getSampleType(), split1[2])).collect(Collectors.toList()); - } - } - } + list = standardProductListMapper.standardProductListNoPage(standardProductListDto); list = list.stream().filter(a -> { try { if (a.getSection() != null && !Objects.equals(a.getSection(), "")) { @@ -121,18 +133,54 @@ if (Objects.equals(a.getBsm(), "1")) { return true; } else { - if (sections.get(i).contains("&")) { - String[] split = sections.get(i).split("&"); - isIf = getIsIf(split[0], modelNum, cores.get(i), conductorMaterials.get(i), conductorTypes.get(i), insSample) - && getIsIf(split[1], modelNum, cores.get(i), conductorMaterials.get(i), conductorTypes.get(i), insSample); - } else { - isIf = getIsIf(sections.get(i), modelNum, cores.get(i), conductorMaterials.get(i), conductorTypes.get(i), insSample); + int firstIndex = a.getTree().indexOf(" - "); + String result2 = null; + if (firstIndex != -1) { + int secondIndex = a.getTree().indexOf(" - ", firstIndex + 3); + if (secondIndex != -1) { + int thirdIndex = a.getTree().indexOf(" - ", secondIndex + 3); + if (thirdIndex != -1) { + result2 = a.getTree().substring(secondIndex + 3, thirdIndex); + } + } } - if (isIf) { - a.setSection(sections.get(i)); - a.setAsk(asks.get(i)); - a.setTell(tells.get(i)); - return true; + // 鍒ゆ柇 鍘熻緟鏉� 鍖呮潗 + Set<String> targetStrings = new HashSet<>(); + targetStrings.add("鍘熻緟鏉�"); + targetStrings.add("鍖呮潗"); + boolean isType; + isType = targetStrings.contains(result2); + if (isType) { + if (StringUtils.isNotEmpty(modelNum)){ + String currentSection = sections.get(i); + String sectionValue = currentSection; + int equalIndex = currentSection.indexOf("="); + if (equalIndex != -1) { + sectionValue = currentSection.substring(equalIndex + 1); + } + if (modelNum.equals(sectionValue)) { + a.setSection(sections.get(i)); + a.setAsk(asks.get(i)); + a.setTell(tells.get(i)); + return true; + } + }else { + return false; + } + } else { + if (sections.get(i).contains("&")) { + String[] split = sections.get(i).split("&"); + isIf = getIsIf(split[0], modelNum, cores.get(i), conductorMaterials.get(i), conductorTypes.get(i), insSample) + && getIsIf(split[1], modelNum, cores.get(i), conductorMaterials.get(i), conductorTypes.get(i), insSample); + } else { + isIf = getIsIf(sections.get(i), modelNum, cores.get(i), conductorMaterials.get(i), conductorTypes.get(i), insSample); + } + if (isIf) { + a.setSection(sections.get(i)); + a.setAsk(asks.get(i)); + a.setTell(tells.get(i)); + return true; + } } } } @@ -197,18 +245,18 @@ } ProductPart productPart = productPartMapper.selectOne(new LambdaQueryWrapper<ProductPart>().eq(ProductPart::getPartNo, insSample.getPartNo())); - if (productPart != null){ - if (StringUtils.isNotEmpty(productPart.getInspectionItem())){ + if (productPart != null) { + if (StringUtils.isNotEmpty(productPart.getInspectionItem())) { String inspectionItem = productPart.getInspectionItem(); list = list.stream() - .filter(standardProductList -> inspectionItem.equals(standardProductList.getInspectionItem())) + .filter(standardProductList -> inspectionItem.contains(standardProductList.getInspectionItem())) .collect(Collectors.toList()); } } StructureTestObjectPart structureTestObjectPart = structureTestObjectPartMapper.selectOne(new LambdaQueryWrapper<StructureTestObjectPart>().eq(StructureTestObjectPart::getPartNo, insSample.getPartNo())); - if (structureTestObjectPart != null){ - if (StringUtils.isNotEmpty(structureTestObjectPart.getInspectionItem())){ + if (structureTestObjectPart != null) { + if (StringUtils.isNotEmpty(structureTestObjectPart.getInspectionItem())) { String inspectionItem = structureTestObjectPart.getInspectionItem(); list = list.stream() .filter(standardProductList -> inspectionItem.equals(standardProductList.getInspectionItem())) @@ -219,16 +267,15 @@ } /** - * - * @param str 鍒ゅ畾鍏紡 - * @param model 鍨嬪彿 - * @param standardCores 鑺暟 - * @param conductorMaterial 瀵间綋鏉愯川 - * @param conductorType 瀵间綋绫诲瀷 + * @param str 鍒ゅ畾鍏紡 + * @param model 鍨嬪彿 + * @param standardCores 鑺暟 + * @param conductorMaterial 瀵间綋鏉愯川 + * @param conductorType 瀵间綋绫诲瀷 * @param insSample * @return */ - private boolean getIsIf(String str, String model, String standardCores, String conductorMaterial, String conductorType,InsSampleReceiveDto insSample) { + private boolean getIsIf(String str, String model, String standardCores, String conductorMaterial, String conductorType, InsSampleReceiveDto insSample) { Matcher matcher = Pattern.compile("\\d+(\\.\\d+)?").matcher(model); String model2 = ""; while (matcher.find()) { @@ -290,6 +337,7 @@ String sampleType = ""; String sample = ""; String model = ""; + StringBuilder checkItemQueryTree = new StringBuilder(); // 妫�鏌ラ」鏌ヨ 鍙嫾鎺� 妫�鏌ュ璞�-浜у搧 // 杩斿洖缁撴灉 Map<String, Object> map = new HashMap<>(); @@ -300,60 +348,76 @@ boolean existWorkShopFlag = standardMethodListService.existWorkShop(tree); // 鎷兼帴鏍� String[] trees = tree.split(" - "); - if(trees == null && trees.length < 4){ + if (trees == null && trees.length < 4) { return map; } - StringBuilder queryTreeBuilder = new StringBuilder(); // 杞﹂棿灞傜骇澶氫竴灞傜骇 - if(existWorkShopFlag){ + if (existWorkShopFlag) { switch (trees.length) { case 7: - queryTreeBuilder.append("[").append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\",\"").append(trees[6]).append("\"").append("]"); sampleType = trees[4]; sample = trees[5]; model = trees[6]; + checkItemQueryTree.append("[").append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\"").append("]"); break; case 6: - queryTreeBuilder.append("[").append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\"").append("]"); sampleType = trees[4]; sample = trees[5]; + checkItemQueryTree.append("[").append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\"").append("]"); break; case 5: - queryTreeBuilder.append("[").append("\"").append(trees[4]).append("\"").append("]"); sampleType = trees[4]; + checkItemQueryTree.append("[").append("\"").append(trees[4]).append("\"").append("]"); break; } - }else { + } else { switch (trees.length) { case 6: - queryTreeBuilder.append("[").append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\",\"").append(trees[5]).append("\"").append("]"); sampleType = trees[3]; sample = trees[4]; model = trees[5]; + checkItemQueryTree.append("[").append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\"").append("]"); break; case 5: - queryTreeBuilder.append("[").append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\"").append("]"); sampleType = trees[3]; sample = trees[4]; + checkItemQueryTree.append("[").append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\"").append("]"); break; case 4: - queryTreeBuilder.append("[").append("\"").append(trees[3]).append("\"").append("]"); sampleType = trees[3]; + checkItemQueryTree.append("[").append("\"").append(trees[3]).append("\"").append("]"); break; } } - if(StringUtils.isEmpty(queryTreeBuilder.toString())){ + if (StringUtils.isEmpty(checkItemQueryTree.toString())) { return map; } - // 鏍规嵁妫�楠屽璞�/浜у搧/鍨嬪彿鏌ヨ妫�楠岄」 - List<StructureItemParameter> structureItemParameterList = structureItemParameterMapper.selectItemParameterBySample(queryTreeBuilder.toString()); + // 鍒ゆ柇鏄惁涓哄鎵樿姹傛爣鍑� + StandardMethod standardMethod = standardMethodMapper.selectById(id); + if (ObjectUtils.isEmpty(standardMethod)) { + return map; + } + StructureItemParameterDto structureItemParameterDto = new StructureItemParameterDto(); + if (standardMethod.getName().equals("濮旀墭瑕佹眰")) { + structureItemParameterDto.setDelegateRequestFlag("1"); + } else { + structureItemParameterDto.setDelegateRequestFlag("0"); + } + structureItemParameterDto.setTree(checkItemQueryTree.toString()); + // 鏍规嵁妫�楠屽璞�/浜у搧鏌ヨ妫�楠岄」 + List<StructureItemParameter> structureItemParameterList = structureItemParameterMapper.selectItemParameterBySample(structureItemParameterDto); + // 濡傛灉鏄骇鍝佺殑妫�鏌ラ」涓虹┖鍚戜笂鎺� + if (CollectionUtils.isEmpty(structureItemParameterList)) { + String query = "[\"" + sampleType + "\"]"; + structureItemParameterDto.setTree(query); + structureItemParameterList = structureItemParameterMapper.selectItemParameterBySample(structureItemParameterDto); + } // 鏌ヨ鏍囧噯搴撳凡缁戝畾妫�鏌ラ」鐩� List<StandardProductList> standardProductList = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery() .eq(StandardProductList::getStandardMethodListId, id) .like(StandardProductList::getTree, tree) .orderByAsc(StandardProductList::getSort)); - // 灏佽鍙傛暟 List<StandardProductList> batchInsertStandardProductListArray = new ArrayList<>(); @@ -362,31 +426,31 @@ boolean existFlag = false; // 鍒ゆ柇鏄惁宸茬粦瀹� for (StandardProductList productList : standardProductList) { - if(structureItemParameter.getId().equals(productList.getStructureItemParameterId())) { + if (structureItemParameter.getId().equals(productList.getStructureItemParameterId())) { BeanUtils.copyProperties(productList, addStandProductList); existFlag = true; break; } } // 濡傛灉鏈粦瀹� - if(!existFlag){ + if (!existFlag) { BeanUtils.copyProperties(structureItemParameter, addStandProductList); + addStandProductList.setTell(structureItemParameter.getAskTell()); addStandProductList.setStructureItemParameterId(structureItemParameter.getId()); - + addStandProductList.setManHour(Objects.toString(structureItemParameter.getManHour(), "")); } - addStandProductList.setId(null); + addStandProductList.setId(addStandProductList.getId() != null ? addStandProductList.getId() : IdWorker.getId()); batchInsertStandardProductListArray.add(addStandProductList); } - // 鎺掑簭澶勭悊 宸叉湁椤哄簭鎸夌収鍘熼『搴� 娌℃湁椤哄簭鐨勬寜鐓ф楠岄」鐨刬d鍗囧簭锛岄粯璁ゆ帓鍦ㄦ渶鍚� batchInsertStandardProductListArray.sort(Comparator.comparing((StandardProductList item) -> item.getSort() != null ? item.getSort() : Integer.MAX_VALUE) .thenComparing(StandardProductList::getStructureItemParameterId)); // 鍒犻櫎鍘熺粦瀹氭暟鎹� standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate() - .eq(StandardProductList::getStandardMethodListId, id) - .eq(StandardProductList::getTree, tree)); + .eq(StandardProductList::getStandardMethodListId, id) + .eq(StandardProductList::getTree, tree)); for (int i = 0; i < batchInsertStandardProductListArray.size(); i++) { StandardProductList productList = batchInsertStandardProductListArray.get(i); @@ -454,11 +518,34 @@ /** * 淇敼鏍囧噯搴撳尯闂� + * * @param list * @return */ @Override public boolean updateSection(StandardProductList list) { + // 鏍规嵁id 鏌ヨ鍒板師濮嬪�� + StandardProductList standardProductList = standardProductListMapper.selectById(list.getId()); + if (ObjectUtils.isEmpty(standardProductList)) { + throw new RuntimeException("鏇存柊澶辫触,鏈煡鎵惧埌妫�鏌ラ」"); + } + // 鍒ゆ柇褰撳墠鐘舵�� 濡傛灉鏄鏍镐腑 + if (StandardProductListChcekTypeEnums.CHECK_ING.getCode().equals(list.getCheckStatus())) { + throw new RuntimeException("瀹℃牳涓笉鏀寔淇敼"); + } + // 鏌ヨ鏈�鏂扮殑涓�娆″叧鑱斿浠� 濡傛灉瀛樺湪璇存槑鏈鏍稿畬缁х画淇敼浜嗐�備笉鍋氭暟鎹鐞嗐�� + StandardProductListBackupRel standardProductListBackupRel = standardProductListBackupRelMapper.selectById(list.getId()); + if (ObjectUtils.isEmpty(standardProductListBackupRel)) { + StandardProductListBackupRel productListBackupRel = new StandardProductListBackupRel(); + BeanUtils.copyProperties(standardProductList, productListBackupRel); + standardProductListBackupRelMapper.insert(productListBackupRel); + } + // 鍏宠仈鍟嗗澶囦唤 + StandardProductListSupplierAsk standardProductListSupplierAsk = new StandardProductListSupplierAsk(); + standardProductListSupplierAsk.setProductListId(list.getId()); + standardProductListSupplierAskService.backupSupplierAsk(standardProductListSupplierAsk); + // 淇敼鐘舵�� + list.setCheckStatus(StandardProductListChcekTypeEnums.WAIT_CHECK.getCode()); standardProductListMapper.updateSection(list); return true; } @@ -466,6 +553,7 @@ /** * 鏍囧噯搴撴嫋鎷� + * * @param resetTreeDragDTO */ @Override @@ -484,7 +572,7 @@ resetTreeDragDTO.getTree()); // 浠庝笅寰�涓� - } else if (beginIndex > endIndex){ + } else if (beginIndex > endIndex) { standardProductListMapper.updateSortDown(beginIndex, endIndex, methodId, @@ -505,6 +593,7 @@ /** * 妫�楠岄」瑕佹眰鍊煎姣� + * * @param copyDto * @return */ @@ -548,6 +637,7 @@ /** * 妫�楠岄」澶嶅埗瀵规瘮涓�涓� + * * @param dto * @return */ @@ -582,6 +672,7 @@ /** * 妫�楠岄」澶嶅埗鎺掑簭 + * * @param copyDto * @return */ @@ -611,6 +702,115 @@ this.updateBatchById(productLists); return false; } + + /** + * 鏍囧噯鏍戜笅妫�楠岄」鎻愪氦 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void productListSubmit(StandardProductListUpdateRecord standardProductListUpdateRecord) { + // 鏌ヨ鎵�鏈夊緟瀹℃牳鐨勬暟鎹� + QueryWrapper<StandardProductList> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("check_status", StandardProductListChcekTypeEnums.WAIT_CHECK.getCode()); + List<StandardProductList> unCheckStandardProductListArray = standardProductListMapper.selectList(queryWrapper); + if (CollectionUtils.isEmpty(unCheckStandardProductListArray)) { + throw new RuntimeException("鏆傛棤淇敼鏁版嵁"); + } + List<Long> standardProductListIds = new ArrayList<>(); + // 鎻掑叆淇敼璁板綍 + standardProductListUpdateRecordMapper.insert(standardProductListUpdateRecord); + // 鎻掑叆淇敼璁板綍鍏宠仈琛� + List<StandardProductListUpdateRecordRel> standardProductListUpdateRecordRelList = new ArrayList<>(); + for (StandardProductList standardProductList : unCheckStandardProductListArray) { + StandardProductListUpdateRecordRel standardProductListUpdateRecordRel = new StandardProductListUpdateRecordRel(); + BeanUtils.copyProperties(standardProductList, standardProductListUpdateRecordRel); + standardProductListUpdateRecordRel.setId(null); + standardProductListUpdateRecordRel.setStandardProductListId(standardProductList.getId()); + standardProductListUpdateRecordRel.setStandardProductListUpdateRecordId(standardProductListUpdateRecord.getId()); + standardProductListUpdateRecordRelList.add(standardProductListUpdateRecordRel); + standardProductListUpdateRecordRelMapper.insert(standardProductListUpdateRecordRel); + standardProductListIds.add(standardProductList.getId()); + } + + // 淇敼鏍囧噯鏍戜笅妫�鏌ラ」鐘舵�佷负瀹℃牳涓� + standardProductListMapper.updateProductListCheckStatus(standardProductListIds, StandardProductListChcekTypeEnums.CHECK_ING.getCode()); + } + + /** + * 鏍囧噯鏍戜笅妫�楠岄」瀹℃牳 + * + * @param standardProductListUpdateRecord + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void productListCheck(StandardProductListUpdateRecord standardProductListUpdateRecord) { + // 鏌ヨ鎵�鏈夊鏍镐腑鐨勬暟鎹� + QueryWrapper<StandardProductList> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("check_status", StandardProductListChcekTypeEnums.CHECK_ING.getCode()); + List<StandardProductList> standardProductListArray = standardProductListMapper.selectList(queryWrapper); + if (CollectionUtils.isEmpty(standardProductListArray)) { + return; + } + List<Long> standardProductListIds = new ArrayList<>(); + for (StandardProductList standardProductList : standardProductListArray) { + standardProductListIds.add(standardProductList.getId()); + } + // 瀹℃牳閫氳繃 + if (StandardProductListChcekTypeEnums.PASS_CHECK.getCode().equals(standardProductListUpdateRecord.getCheckStatus())) { + // 淇敼鐘舵�� + standardProductListMapper.updateProductListCheckStatus(standardProductListIds, StandardProductListChcekTypeEnums.PASS_CHECK.getCode()); + } + // 瀹℃牳鏈�氳繃 + if (StandardProductListChcekTypeEnums.NO_PASS_CHECK.getCode().equals(standardProductListUpdateRecord.getCheckStatus())) { + // 鏌ヨ鎵�鏈夋爣鍑嗘爲涓嬬殑妫�楠岄」鐩浠芥暟鎹� + List<StandardProductListBackupRel> standardProductListBackupRelList = standardProductListBackupRelMapper.selectBatchIds(standardProductListIds); + // 鍥炴粴鏍囧噯鏍戜笅鐨勬楠岄」鐩暟鎹� + for (StandardProductListBackupRel standardProductListBackupRel : standardProductListBackupRelList) { + StandardProductList standardProductList = new StandardProductList(); + BeanUtils.copyProperties(standardProductListBackupRel, standardProductList); + standardProductListMapper.updateById(standardProductList); + } + // 鍥炴粴妫�楠岄」鐩巶瀹跺瘑搴︾粦瀹氳〃鏁版嵁 + QueryWrapper<StandardProductListSupplierAskBackupRel> supplierAskBackupRelQueryWrapper = new QueryWrapper<>(); + supplierAskBackupRelQueryWrapper.in("product_list_id", standardProductListIds); + List<StandardProductListSupplierAskBackupRel> standardProductListSupplierAskBackupRelList = standardProductListSupplierAskBackupRelMapper.selectList(supplierAskBackupRelQueryWrapper); + if (!CollectionUtils.isEmpty(standardProductListSupplierAskBackupRelList)) { + QueryWrapper<StandardProductListSupplierAsk> deleteWrapper = new QueryWrapper<>(); + deleteWrapper.in("product_list_id", standardProductListIds); + standardProductListSupplierAskMapper.delete(deleteWrapper); + ArrayList<StandardProductListSupplierAsk> supplierAskRollBackList = new ArrayList<>(); + for (StandardProductListSupplierAskBackupRel standardProductListSupplierAskBackupRel : standardProductListSupplierAskBackupRelList) { + StandardProductListSupplierAsk standardProductListSupplierAsk = new StandardProductListSupplierAsk(); + BeanUtils.copyProperties(standardProductListSupplierAskBackupRel, standardProductListSupplierAsk); + supplierAskRollBackList.add(standardProductListSupplierAsk); + } + standardProductListSupplierAskMapper.batchInsertSupplierAsk(supplierAskRollBackList); + } + + } + // 鍒犻櫎鏍囧噯鏍戜笅鐨勬楠岄」鐩浠芥暟鎹� + standardProductListBackupRelMapper.deleteBatchIds(standardProductListIds); + // 鍒犻櫎缁戝畾鍘傚澶囦唤鏁版嵁 + standardProductListSupplierAskBackupRelMapper.batchDeleteByProductIds(standardProductListIds); + standardProductListUpdateRecordMapper.updateById(standardProductListUpdateRecord); + } + + /** + * 鏌ヨ鏍囧噯搴撴槸鍚﹀瓨鍦ㄥ鏍镐腑鐘舵�� + * + * @return + */ + @Override + public boolean existCheckingRecord() { + QueryWrapper<StandardProductListUpdateRecord> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("check_status", StandardProductListChcekTypeEnums.CHECK_ING.getCode()); + List<StandardProductListUpdateRecord> standardProductListUpdateRecordList = standardProductListUpdateRecordMapper.selectList(queryWrapper); + if (CollectionUtils.isEmpty(standardProductListUpdateRecordList)) { + return false; + } else { + return true; + } + } } -- Gitblit v1.9.3