From d53c34e999bed9cb93f8757aed161a4b590d64d1 Mon Sep 17 00:00:00 2001 From: whycxzp <perryhsu@163.com> Date: 星期六, 09 九月 2023 15:06:30 +0800 Subject: [PATCH] 产品bom新增,添加两个字段-厂家规格和替料 --- src/main/java/com/whyc/service/ProductService.java | 132 +++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 125 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/whyc/service/ProductService.java b/src/main/java/com/whyc/service/ProductService.java index 6b813f1..5c3b5cc 100644 --- a/src/main/java/com/whyc/service/ProductService.java +++ b/src/main/java/com/whyc/service/ProductService.java @@ -26,6 +26,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; +import java.util.regex.Pattern; import java.util.stream.Collectors; @Service @@ -224,12 +225,23 @@ int lastRowNum = sheet.getLastRowNum(); //鍙栫涓夎,骞朵互绗笁琛屽紑濮� Row row2 = sheet.getRow(1); + //鐜板湪瑙勫畾涓�17鍒� short lastCellNum = row2.getLastCellNum(); + if(lastCellNum !=18){ + return response.set(1, false, "涓婁紶鏂囦欢鐨刡om娓呭崟鍒楁暟涓嶅"); + } for (int k = 2; k < lastRowNum + 1; k++) { if(k==2){ product.setParentCode(sheet.getRow(2).getCell(1).getStringCellValue()); product.setParentName(sheet.getRow(2).getCell(2).getStringCellValue()); - product.setParentModel(sheet.getRow(2).getCell(3).getStringCellValue()); + String parentModel = sheet.getRow(2).getCell(3).getStringCellValue(); + String regexStr = "[\\/*?\"|:<>\\\\ \t]"; + boolean matches = Pattern.compile(regexStr).matcher(parentModel).find(); + if(!matches) { + product.setParentModel(parentModel); + }else{ + return response.set(1,false,"姣嶆枡鍨嬪彿鍖呭惈闈炴硶瀛楃:\\/*?\"|:<>鎴栫┖鏍�"); + } } ProductBom bom = new ProductBom(); for (int j = 0; j < lastCellNum; j++) { @@ -237,9 +249,9 @@ Cell cell = row.getCell(j); String cellValue = null; Double cellValueInt = 0d; - if (j == 9 || j == 0) { + if (j == 9 || j == 0) { //1鍜�10鍒椾负鏁板�� cellValueInt = cell.getNumericCellValue(); - } else if (j != 15) { + } else if (j != 16) { //16鍒椾负鍥剧墖 cellValue = cell.getStringCellValue(); } if(cellValue!=null) { @@ -291,22 +303,26 @@ } break; case 11: { - bom.setMaterial(cellValue); + bom.setProducerSpecification(cellValue); } break; case 12: { - bom.setThickness(cellValue); + bom.setMaterial(cellValue); } break; case 13: { - bom.setSurfaceDetail(cellValue); + bom.setThickness(cellValue); } break; case 14: { - bom.setNotes(cellValue); + bom.setSurfaceDetail(cellValue); } break; case 15: { + bom.setNotes(cellValue); + } + break; + case 16: { /* 寮冪敤,涓嶉�傜敤浜� 鍥剧墖涓嶆寜椤哄簭鎽嗘斁鎯呭喌 //鍥剧墖,浠�0寮�濮�,鍒板浘鐗噑ize涓烘 int m = k - 2; @@ -348,6 +364,16 @@ fileOutputStream.write(data); bom.setPictureUrl(picturePathFront); + } + } + break; + case 17: { + if(cellValue!=null && !cellValue.trim().equals("")) { + if(cellValue.contains(",") || cellValue.contains("锛�")){ + bom.setRelatedMaterialCodes(cellValue); + }else{ + return response.set(1, false, "涓婁紶鏂囦欢鐨刡om娓呭崟鍐呮浛鏂欐牸寮忎笉瀵�"); + } } } break; @@ -514,6 +540,95 @@ } } + //鏌ヨ鏄惁bomList涓湁鏇挎枡 + // 鏈夌殑璇�,妫�鏌ュ叧鑱旇〃涓槸鍚﹀凡瀛樺湪鎴栨湰鐗堟湰宸茬敓鏁� + List<MaterialProductHistory> newAddedList = new LinkedList<>(); + List<MaterialProductHistory> versionUpdateList = new LinkedList<>(); + + List<MaterialProductHistory> mpListInDB = mphService.getListByParentCodeAndCustomCodeAndSubMaterialIdAndVersion(parentCode,customCode,bomList,currentVersion); + List<String> subMaterialListInDB = mpListInDB.stream().map(mp->mp.getSubMaterial().getSubCode()+"_"+mp.getSubMaterial().getSubModel()).collect(Collectors.toList()); + bomList.forEach(bom->{ + if(bom.getRelatedMaterialCodes()!=null) { + String relatedMaterialCodes = bom.getRelatedMaterialCodes().trim(); + if (!relatedMaterialCodes.equals("")) { + if (subMaterialListInDB.contains(bom.getSubCode()+"_"+bom.getSubModel())) { //褰撳墠鐗╂枡鏈夋浛浠f枡 + String[] relatedList; + if (relatedMaterialCodes.contains(",")) { + relatedList = relatedMaterialCodes.split(","); + } else { + relatedList = relatedMaterialCodes.split("锛�"); + } + for (String related : relatedList) { + bom.setRelatedMaterialCodes(related); + boolean exists = false; + for (MaterialProductHistory mp : mpListInDB) { + //鐗╂枡鐩稿悓,鏇夸唬鏂欑浉鍚� + if ((mp.getSubMaterial().getSubCode()+"_"+mp.getSubMaterial().getSubModel()).equals(bom.getSubCode()+"_"+bom.getSubModel()) + && mp.getRelatedSubMaterial().getSubCode().equals(related)) { + //鍙彲鑳藉瓨鍦�0 鍜� 1 鐨勬儏鍐�,鍥犱负鏌ヨ鐨勬槸 >=涓婁釜鐗堟湰 + if (nextVersion - mp.getEVersion() == 0) { //宸插瓨鍦�,鏃犻渶娣诲姞 + //break; + } else if (nextVersion - mp.getEVersion() == 1) { //鏇存柊鍒板綋鍓嶇増鏈� + mp.setEVersion(nextVersion); + versionUpdateList.add(mp); + } + exists = true; + } + } + if(!exists) { //涓嶅瓨鍦ㄧ浉閭诲強鐩稿悓鐨勮褰曠増鏈�,鏂板 + MaterialProductHistory newTemp = new MaterialProductHistory(); + newTemp.setParentCode(parentCode); + newTemp.setCustomCode(customCode); + newTemp.setSubCode(bom.getSubCode()); + Material material = mService.getByCodeAndModel(bom.getSubCode(), bom.getSubModel()); + newTemp.setSubMaterialId(material.getId()); + newTemp.setSVersion(nextVersion); + newTemp.setEVersion(nextVersion); + newTemp.setQuantity(bom.getQuantity()); + //2323-09-08 涓庢潹绾㈠叞寰俊纭<灏辨寜鐓ф垜涓婁紶娓呭崟鐨勬椂闂达紝绯荤粺閲屾渶鏂扮殑鏄暐鍨嬪彿锛屽氨鍙栦粈涔堝瀷鍙�> + Material relatedMaterial = mService.getLastByCode(related); + newTemp.setMaterialId(relatedMaterial.getId()); + newTemp.setCreateTime(date); + newAddedList.add(newTemp); + } + } + } + else{ + String[] relatedList; + if (relatedMaterialCodes.contains(",")) { + relatedList = relatedMaterialCodes.split(","); + } else { + relatedList = relatedMaterialCodes.split("锛�"); + } + for (String related : relatedList) { + MaterialProductHistory newTemp = new MaterialProductHistory(); + newTemp.setParentCode(parentCode); + newTemp.setCustomCode(customCode); + newTemp.setSubCode(bom.getSubCode()); + Material material = mService.getByCodeAndModel(bom.getSubCode(), bom.getSubModel()); + newTemp.setSubMaterialId(material.getId()); + newTemp.setSVersion(nextVersion); + newTemp.setEVersion(nextVersion); + newTemp.setQuantity(bom.getQuantity()); + //2323-09-08 涓庢潹绾㈠叞寰俊纭<灏辨寜鐓ф垜涓婁紶娓呭崟鐨勬椂闂达紝绯荤粺閲屾渶鏂扮殑鏄暐鍨嬪彿锛屽氨鍙栦粈涔堝瀷鍙�> + Material relatedMaterial = mService.getLastByCode(related); + newTemp.setMaterialId(relatedMaterial.getId()); + newTemp.setCreateTime(date); + newAddedList.add(newTemp); + } + } + } + } + }); + //鎵ц鏇存柊 + if(newAddedList.size()!=0) { + mphService.insertBatch(newAddedList); + } + if(versionUpdateList.size()!=0) { + mphService.updateVersionBatch(versionUpdateList); + } + + //灏嗕骇鍝佹枃浠跺鍒惰嚦姝e紡璺緞 //鏂囦欢杞Щ,鏈窡瀛愪欢鎸傞挬鐨勬墍鏈夊浘绾稿浘鐗囪浆绉诲埌浜у搧鐗堟湰涓�:doc_file/product/{浜у搧鍨嬪彿}/standard鎴栬�厈customCode}}/{version}/ //璺熷瓙浠舵寕閽╃殑杞Щ鍒板瓙浠跺浘绾镐笅:doc_file/material/ @@ -561,6 +676,7 @@ bomHistory.setMaterial(bom.getMaterial()); bomHistory.setNotes(bom.getNotes()); bomHistory.setProducer(bom.getProducer()); + bomHistory.setProducerSpecification(bom.getProducerSpecification()); bomHistory.setSurfaceDetail(bom.getSurfaceDetail()); bomHistory.setThickness(bom.getThickness()); bomHistory.setSubSVersion(1); @@ -795,6 +911,7 @@ bom.setMaterial(bomMaterial.getMaterial()); bom.setNotes(bomMaterial.getNotes()); bom.setProducer(bomMaterial.getProducer()); + bom.setProducerSpecification(bomMaterial.getProducerSpecification()); bom.setSurfaceDetail(bomMaterial.getSurfaceDetail()); bom.setThickness(bomMaterial.getThickness()); bom.setSubVersion(1); @@ -814,6 +931,7 @@ bomHistory.setMaterial(bomMaterial.getMaterial()); bomHistory.setNotes(bomMaterial.getNotes()); bomHistory.setProducer(bomMaterial.getProducer()); + bomHistory.setProducerSpecification(bomMaterial.getProducerSpecification()); bomHistory.setSurfaceDetail(bomMaterial.getSurfaceDetail()); bomHistory.setThickness(bomMaterial.getThickness()); bomHistory.setSubSVersion(1); -- Gitblit v1.9.1