From afd4b25f5744725c92be40217aae0760289b4671 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期二, 08 四月 2025 11:19:05 +0800 Subject: [PATCH] 标准库添加委托要求功能 --- basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java | 543 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 338 insertions(+), 205 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 06567df..305e77c 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,26 +1,25 @@ 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.StandardProductListSupplierAskService; import com.ruoyi.common.exception.base.BaseException; +import com.ruoyi.common.utils.QueryWrappers; 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.mapper.IfsInventoryQuantityMapper; -import com.ruoyi.basic.mapper.StandardProductListMapper; -import com.ruoyi.basic.mapper.StandardProductListSupplierAskMapper; -import com.ruoyi.basic.mapper.StandardTreeMapper; -import com.ruoyi.basic.pojo.StandardProductList; -import com.ruoyi.basic.pojo.StandardProductListSupplierAsk; -import com.ruoyi.basic.pojo.StandardTree; import com.ruoyi.basic.service.StandardProductListService; import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -48,9 +47,62 @@ private StandardProductListSupplierAskMapper standardProductListSupplierAskMapper; + private ProductPartMapper productPartMapper; + + private StructureTestObjectPartMapper structureTestObjectPartMapper; + + @Autowired + private StandardMethodListService standardMethodListService; + + @Autowired + private StructureItemParameterMapper structureItemParameterMapper; + + @Autowired + private ModelMapper modelMapper; + + @Autowired + private StandardProductListBackupRelMapper standardProductListBackupRelMapper; + + @Autowired + private StandardProductListUpdateRecordMapper standardProductListUpdateRecordMapper; + + @Autowired + private StandardProductListUpdateRecordRelMapper standardProductListUpdateRecordRelMapper; + + @Autowired + private StandardProductListSupplierAskService standardProductListSupplierAskService; + + @Autowired + private StandardProductListSupplierAskBackupRelMapper standardProductListSupplierAskBackupRelMapper; + + @Autowired + 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("瀹℃牳涓笉鏀寔淇敼"); + } + // 鏌ヨ鏈�鏂扮殑涓�娆″叧鑱斿浠� 濡傛灉瀛樺湪璇存槑鏈鏍稿畬缁х画淇敼浜嗐�備笉鍋氭暟鎹鐞嗐�� + 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); } @@ -185,6 +237,25 @@ } } + ProductPart productPart = productPartMapper.selectOne(new LambdaQueryWrapper<ProductPart>().eq(ProductPart::getPartNo, insSample.getPartNo())); + if (productPart != null){ + if (StringUtils.isNotEmpty(productPart.getInspectionItem())){ + String inspectionItem = productPart.getInspectionItem(); + list = list.stream() + .filter(standardProductList -> inspectionItem.equals(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())){ + String inspectionItem = structureTestObjectPart.getInspectionItem(); + list = list.stream() + .filter(standardProductList -> inspectionItem.equals(standardProductList.getInspectionItem())) + .collect(Collectors.toList()); + } + } return list; } @@ -257,210 +328,142 @@ @Override @Transactional(rollbackFor = Exception.class) public Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree) { + String sampleType = ""; + String sample = ""; + String model = ""; + StringBuilder checkItemQueryTree = new StringBuilder(); // 妫�鏌ラ」鏌ヨ 鍙嫾鎺� 妫�鏌ュ璞�-浜у搧 + + // 杩斿洖缁撴灉 + Map<String, Object> map = new HashMap<>(); + map.put("productList", null); + map.put("total", 0); + + // 鍒ゆ柇鏄惁鍖呭惈杞﹂棿 + boolean existWorkShopFlag = standardMethodListService.existWorkShop(tree); + // 鎷兼帴鏍� String[] trees = tree.split(" - "); - // 鍒ゆ柇鏄惁鎷栨嫿 - boolean isDrag = false; - List<StandardProductList> list = new ArrayList<>(); - if (trees.length == 3) { - List<StandardTree> treeList = new ArrayList<>(); - StandardTree standardTree = new StandardTree(); - standardTree.setFactory(trees[0]); - standardTree.setLaboratory(trees[1]); - standardTree.setSampleType(trees[2]); - List<ProductDto> pList = standardTreeMapper.selectPList(trees[2]); - if (pList.size() == 0 || pList.get(0) == null) { - List<StandardTree> treeList1 = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2])); - if (treeList1.size() == 0) { - treeList.add(standardTree); - } else { - treeList.addAll(treeList1); - } - } else { - for (ProductDto p : pList) { - standardTree.setSample(p.getName()); - List<StandardTree> treeList1 = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, p.getName())); - if (treeList1.size() == 0) { - treeList.add(JSON.parseObject(JSON.toJSONString(standardTree), StandardTree.class)); - } else { - treeList.addAll(treeList1); - } - } - } - for (StandardTree standardTree2 : treeList) { - String tree2 = trees[0] + " - " + trees[1] + " - " + trees[2] + " - " + standardTree2.getSample() + " - " + standardTree2.getModel(); - list.addAll(standardTreeMapper.selectStandardProductListByTree("\"" + trees[2] + "\"", standardTree2.getSample(), standardTree2.getModel(), tree2, trees[1])); - list.addAll(standardTreeMapper.selectStandardProductListByTree2("\"" + trees[2] + "\",\"" + standardTree2.getSample() + "\"", standardTree2.getSample(), standardTree2.getModel(), tree2, trees[1])); - } - } else if (trees.length == 4) { - // 鍒ゆ柇绗洓灞傛槸鍚︽湁鍨嬪彿 - Long count = standardProductListMapper.selectCount(Wrappers.<StandardProductList>lambdaQuery() - .eq(StandardProductList::getStandardMethodListId, id) - .isNull(StandardProductList::getModel) - .like(StandardProductList::getTree, tree)); - if (count == 0) { - isDrag = true; - } - - isDrag = true; - List<StandardTree> treeList = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3])); - if (treeList.size() == 0) { - StandardTree standardTree = new StandardTree(); - standardTree.setFactory(trees[0]); - standardTree.setLaboratory(trees[1]); - standardTree.setSampleType(trees[2]); - standardTree.setSample(trees[3]); - treeList.add(standardTree); - } - for (StandardTree standardTree : treeList) { - String str = tree + " - " + standardTree.getModel(); - list.addAll(standardTreeMapper.selectStandardProductListByTree("\"" + trees[2] + "\"", standardTree.getSample(), standardTree.getModel(), str, trees[1])); - list.addAll(standardTreeMapper.selectStandardProductListByTree2("\"" + trees[2] + "\",\"" + trees[3] + "\"", standardTree.getSample(), standardTree.getModel(), str, trees[1])); - } - } else { - isDrag = true; - list.addAll(standardTreeMapper.selectStandardProductListByTree("\"" + trees[2] + "\"", trees[3].equals("null") ? null : trees[3], trees[4], tree, trees[1])); - list.addAll(standardTreeMapper.selectStandardProductListByTree2("\"" + trees[2] + "\",\"" + trees[3] + "\"", trees[3].equals("null") ? null : trees[3], trees[4], tree, trees[1])); + if(trees == null && trees.length < 4){ + return map; } - for (StandardProductList productList : list) { - productList.setId(IdWorker.getId()); + // 杞﹂棿灞傜骇澶氫竴灞傜骇 + if(existWorkShopFlag){ + switch (trees.length) { + case 7: + sampleType = trees[4]; + sample = trees[5]; + model = trees[6]; + checkItemQueryTree.append("[").append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\"").append("]"); + break; + case 6: + sampleType = trees[4]; + sample = trees[5]; + checkItemQueryTree.append("[").append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\"").append("]"); + break; + case 5: + sampleType = trees[4]; + checkItemQueryTree.append("[").append("\"").append(trees[4]).append("\"").append("]"); + break; + } + }else { + switch (trees.length) { + case 6: + sampleType = trees[3]; + sample = trees[4]; + model = trees[5]; + checkItemQueryTree.append("[").append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\"").append("]"); + break; + case 5: + sampleType = trees[3]; + sample = trees[4]; + checkItemQueryTree.append("[").append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\"").append("]"); + break; + case 4: + sampleType = trees[3]; + checkItemQueryTree.append("[").append("\"").append(trees[3]).append("\"").append("]"); + break; + } } - List<StandardProductList> standardProductLists; - - if (isDrag) { - standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery() - .eq(StandardProductList::getStandardMethodListId, id) - .like(StandardProductList::getTree, tree) - .orderByAsc(StandardProductList::getSort)); - // 鍒ゆ柇鏄惁鏈夋病鏈夊簭鍙风殑, 娌℃湁搴忓彿閲嶇疆 - boolean b = standardProductLists.stream().anyMatch(standardProductList -> standardProductList.getSort() == null); - } else { - standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery() - .eq(StandardProductList::getStandardMethodListId, id) - .like(StandardProductList::getTree, tree)); + if(StringUtils.isEmpty(checkItemQueryTree.toString())){ + return map; } + // 鍒ゆ柇鏄惁涓哄鎵樿姹傛爣鍑� + 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()); - for (StandardProductList sp : standardProductLists) { - for (StandardProductList pl : list) { - // 鍒ゆ柇鏉′欢鏄惁鍙湁涓�涓�, 鏈変竴涓殑璇濋粯璁ょ涓�涓� - String radiusList = pl.getRadiusList(); - if (StringUtils.isNotBlank(radiusList) && !radiusList.equals("null") && !radiusList.equals("\"\"")) { - JSONArray jsonArray = JSON.parseArray(radiusList); - List<String> radius = jsonArray.toJavaList(String.class); - if (CollectionUtils.isNotEmpty(radius) && radius.size() == 1) { - pl.setRadius(radius.get(0)); - } - } - if (Objects.equals(sp.getInspectionItem(), pl.getInspectionItem()) - && Objects.equals((sp.getInspectionItemSubclass() == null) ? "" : sp.getInspectionItemSubclass(), pl.getInspectionItemSubclass() == null ? "" : pl.getInspectionItemSubclass()) -// && Objects.equals(sp.getSample(), pl.getSample()) - && Objects.equals(sp.getModel(), pl.getModel()) - && sp.getTree().indexOf(pl.getSample() == null ? "null" : pl.getSample()) > -1 - && Objects.equals(sp.getStructureItemParameterId(), pl.getStructureItemParameterId())) { - pl.setId(sp.getId()); - // 娣诲姞鎺掑簭瀛楁 - pl.setSort(sp.getSort()); - if (sp.getState() != null && !sp.getState().equals("")) { - pl.setState(sp.getState()); - } else { - pl.setState(id == 0 ? 1 : 0); - } - if (sp.getMethodS() != null && !sp.getMethodS().equals("")) { - pl.setMethod(sp.getMethodS()); - } - if (sp.getRadius() != null && !sp.getRadius().equals("")) { - pl.setRadius(sp.getRadius()); - } - if (sp.getRates() != null && !sp.getRates().equals("")) { - pl.setRates(sp.getRates()); - } - if (sp.getAsk() != null && !sp.getAsk().equals("")) { - pl.setAsk(sp.getAsk()); - } - if (sp.getTell() != null && !sp.getTell().equals("")) { - pl.setTell(sp.getTell()); - } - if (sp.getPrice() != null && !sp.getPrice().equals("")) { - pl.setPrice(sp.getPrice()); - } - if (sp.getManHour() != null && !sp.getManHour().equals("")) { - pl.setManHour(sp.getManHour()); - } - if (sp.getSection() != null && !sp.getSection().equals("")) { - pl.setSection(sp.getSection()); - } - if (sp.getCores() != null && !sp.getCores().equals("")) { - pl.setCores(sp.getCores()); - } - if (sp.getConductorMaterial() != null && !sp.getConductorMaterial().equals("")) { - pl.setConductorMaterial(sp.getConductorMaterial()); - } - if (sp.getConductorType() != null && !sp.getConductorType().equals("")) { - pl.setConductorType(sp.getConductorType()); - } - if (sp.getTemplateId() != null && !sp.getTemplateId().equals("")) { - pl.setTemplateId(sp.getTemplateId()); - } + // 鏍规嵁妫�楠屽璞�/浜у搧鏌ヨ妫�楠岄」 + 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<>(); + for (StructureItemParameter structureItemParameter : structureItemParameterList) { + StandardProductList addStandProductList = new StandardProductList(); + boolean existFlag = false; + // 鍒ゆ柇鏄惁宸茬粦瀹� + for (StandardProductList productList : standardProductList) { + if(structureItemParameter.getId().equals(productList.getStructureItemParameterId())) { + BeanUtils.copyProperties(productList, addStandProductList); + existFlag = true; break; } } - } + // 濡傛灉鏈粦瀹� + if(!existFlag){ + BeanUtils.copyProperties(structureItemParameter, addStandProductList); + addStandProductList.setStructureItemParameterId(structureItemParameter.getId()); - Integer userId = SecurityUtils.getUserId().intValue(); - if (trees.length == 5) { - standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate() - .eq(StandardProductList::getStandardMethodListId, id) - .eq(StandardProductList::getTree, tree)); - } else { - standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate() - .eq(StandardProductList::getStandardMethodListId, id) - .like(StandardProductList::getTree, tree)); - } - - - List<StandardProductList> productLists = list.stream().map(a -> { - a.setFactory(trees[0]); - a.setLaboratory(trees[1]); - a.setSampleType(trees[2]); - a.setCreateUser(userId); - a.setUpdateUser(userId); - a.setStandardMethodListId(id); - return a; - }).collect(Collectors.toList()); -// this.saveBatch(productLists); - // 鎵归噺娣诲姞鏍囧噯 - if (CollectionUtils.isNotEmpty(productLists)) { - baseMapper.saveBatchProductLists(productLists); - } - - - Collections.sort(list, (o1, o2) -> { - String field1 = o1.getManHourGroup(); - String field2 = o2.getManHourGroup(); - - boolean isEmpty1 = field1 == null || field1.isEmpty(); - boolean isEmpty2 = field2 == null || field2.isEmpty(); - - if (isEmpty1 && isEmpty2) { - return 0; - } else if (isEmpty1) { - return 1; - } else if (isEmpty2) { - return -1; - } else { - int num1 = extractNumber(field1); - int num2 = extractNumber(field2); - return Integer.compare(num1, num2); } - }); - // 鎸夌収绱㈠紩鎺掑簭 - if (isDrag) { - list.sort((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort()) - - (o2.getSort() == null ? 0 : o2.getSort())); - } + addStandProductList.setId(addStandProductList.getId() != null ? addStandProductList.getId() : IdWorker.getId()); + batchInsertStandardProductListArray.add(addStandProductList); - Map<String, Object> map = new HashMap<>(); - map.put("productList", list); - map.put("total", list.size()); + } + // 鎺掑簭澶勭悊 宸叉湁椤哄簭鎸夌収鍘熼『搴� 娌℃湁椤哄簭鐨勬寜鐓ф楠岄」鐨刬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)); + + for (int i = 0; i < batchInsertStandardProductListArray.size(); i++) { + StandardProductList productList = batchInsertStandardProductListArray.get(i); + productList.setTree(tree); + productList.setFactory(trees[0]); + productList.setLaboratory(trees[1]); + productList.setSampleType(sampleType); + productList.setSample(sample); + productList.setModel(model); + productList.setCreateUser(SecurityUtils.getUserId().intValue()); + productList.setUpdateUser(SecurityUtils.getUserId().intValue()); + productList.setStandardMethodListId(id); + productList.setSort(i); + } + // 鎵归噺娣诲姞鏍囧噯 + if (CollectionUtils.isNotEmpty(batchInsertStandardProductListArray)) { + baseMapper.saveBatchProductLists(batchInsertStandardProductListArray); + } + map.put("productList", batchInsertStandardProductListArray); + map.put("total", batchInsertStandardProductListArray.size()); return map; } @@ -513,6 +516,28 @@ */ @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; } @@ -665,6 +690,114 @@ 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