From 980a7eab362b5a8c00f13427c73053382ca4ba44 Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期三, 06 十二月 2023 09:31:31 +0800 Subject: [PATCH] 集团码导入功能开发 --- Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/utils/VciBaseUtil.java | 19 ++ Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java | 2 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java | 12 + Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java | 9 + Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 270 +++++++++++++++++++++++++++++---- Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/Test.java | 51 ++++++ Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java | 57 +++--- Source/UBCS/ubcs-codeApply/src/main/java/Test.java | 11 + Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java | 42 ++++ Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeLibTreeCellRenderer.java | 2 10 files changed, 410 insertions(+), 65 deletions(-) diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/Test.java b/Source/UBCS/ubcs-codeApply/src/main/java/Test.java new file mode 100644 index 0000000..f68ed4d --- /dev/null +++ b/Source/UBCS/ubcs-codeApply/src/main/java/Test.java @@ -0,0 +1,11 @@ +import java.util.Arrays; +import java.util.List; + +public class Test { + + public static void main(String[] args) { + String []res={"5","6","7","8","3"}; + List<String> newList=Arrays.asList(res); + System.out.println(res); + } +} diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeLibTreeCellRenderer.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeLibTreeCellRenderer.java index 7df4a90..dbb03db 100644 --- a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeLibTreeCellRenderer.java +++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeLibTreeCellRenderer.java @@ -1,5 +1,7 @@ package com.vci.rmip.code.client.codeapply.Apply410; +import com.vci.base.ui.image.bundle.BundleImage; +import com.vci.base.ui.tree.VCIBaseTreeNode; import com.vci.rmip.code.client.codeapply.Apply410.object.CodeClassify; import javax.swing.*; diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/Test.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/Test.java index df4e461..e3c6266 100644 --- a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/Test.java +++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/Test.java @@ -1,10 +1,17 @@ package com.vci.rmip.code.client.codeapply.Apply410; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Pattern; + public class Test { public static void main(String[] args) { - String res=intToRoman(101); + String res=intToRoman(1004); System.out.println("缃楅┈鏁板瓧->"+res); + boolean isInterger=isRomanNumber(1004+""); + int resInt=r2a(res); + System.out.println("闃挎媺浼暟瀛�->"+resInt); } public static String intToRoman(int num) { int[] values={1000,900,500,400,100,90,50,40,10,9,5,4,1}; @@ -26,4 +33,46 @@ String I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}; return M[num/1000]+C[(num%1000)/100]+X[(num%100)/10]+I[num%10]; } + /*** + * 鏍¢獙鏄惁鏄綏椹暟瀛� + * @param s + * @return + */ + public static boolean isRomanNumber(String s) { + // 妫�鏌ヨ緭鍏ョ殑瀛楃涓叉槸鍚︿负绌� + if (s == null || s.length() == 0) { + return false; + } + // 灏嗚緭鍏ョ殑瀛楃涓茶浆鎹负澶у啓瀛楁瘝 + s = s.toUpperCase(); + // 杩斿洖缁撴灉 + Pattern pattern = Pattern.compile("^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$"); + return pattern.matcher(s ).matches(); + } + /** + * 鎶婄綏椹暟瀛楄浆鎹负闃挎媺浼暟瀛� + * + * @param m + * @return + */ + public static int r2a(String m) { + int graph[] = new int[400]; + graph['I'] = 1; + graph['V'] = 5; + graph['X'] = 10; + graph['L'] = 50; + graph['C'] = 100; + graph['D'] = 500; + graph['M'] = 1000; + char[] num = m.toCharArray(); + int sum = graph[num[0]]; + for (int i = 0; i < num.length - 1; i++) { + if (graph[num[i]] >= graph[num[i + 1]]) { + sum += graph[num[i + 1]]; + } else { + sum = sum + graph[num[i + 1]] - 2 * graph[num[i]]; + } + } + return sum; + } } diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/utils/VciBaseUtil.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/utils/VciBaseUtil.java index 55a3a9d..748c47e 100644 --- a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/utils/VciBaseUtil.java +++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/utils/VciBaseUtil.java @@ -1388,6 +1388,25 @@ return sb.toString(); } + public static String intToRomanOne(int num) { + int[] values={1000,900,500,400,100,90,50,40,10,9,5,4,1}; + String[] romans={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; + StringBuilder sb=new StringBuilder(); + for(int i=0;i<values.length;i++){ + while(num>=values[i]){ + num=num-values[i]; + sb.append(romans[i]); + } + } + return sb.toString(); + } + public static String intToRomanTwo(int num) { + String M[] = {"", "M", "MM", "MMM"}; + String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}; + String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}; + String I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}; + return M[num/1000]+C[(num%1000)/100]+X[(num%100)/10]+I[num%10]; + } } diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java index 451b70f..71e2e91 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java +++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java @@ -1,5 +1,7 @@ package com.vci.ubcs.code.dto; +import com.vci.ubcs.code.entity.CodeAllCode; +import com.vci.ubcs.starter.revision.model.BaseModel; import lombok.Data; import java.util.ArrayList; @@ -18,9 +20,13 @@ */ private LinkedList<String> fieldList=new LinkedList<>(); /** - * 鏁版嵁闆嗘垚 + * 鏁版嵁瀛樺偍 */ private List<Map<String,String>> dataList=new ArrayList<>(); + /**** + * 绯荤粺涓殑鏁版嵁瀛樺偍 + */ + private List<BaseModel>oldList=new ArrayList<>(); /*** * 鍒楀悕 */ @@ -29,4 +35,8 @@ * 闆嗗洟灞炴�т笌缂栫爜灞炴�ф槧灏勫叧绯� */ private List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=new ArrayList<>(); + /** + * 鏇存柊鐨勭爜鍊煎璞� + */ + List<CodeAllCode> codeAllCodeList=new ArrayList<>(); } diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java index 383a2aa..b479d79 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java @@ -101,12 +101,13 @@ * @return * @throws VciBaseException */ - public static <T extends BaseModel> T copplyDefaultAttrAssimt(Map<String,String> dataMap, T object) throws VciBaseException { + public static <T extends BaseModel> T copplyDefaultAttrAssimt(Map<String,String> dataMap, T object,boolean isCase) throws VciBaseException { BaseModel baseModel = object; + baseModel.getData().putAll(dataMap); try { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - baseModel.setOid(dataMap.getOrDefault("OID","")); - baseModel.setId(dataMap.getOrDefault("ID","")); + baseModel.setOid(dataMap.getOrDefault(isCase?"OID":"oid","")); + baseModel.setId(dataMap.getOrDefault(isCase?"ID":"id","")); Map<String,Object> newDataMap=new HashMap<>(); /*for (String key:dataMap.keySet()){ Object value=dataMap.get(key); @@ -116,52 +117,56 @@ newDataMap.put(key.toLowerCase(Locale.ROOT),value); });*/ //baseModel.setData((Map)newDataMap); - Object createTimeObj=dataMap.getOrDefault("CREATETIME",""); + Object createTimeObj=dataMap.getOrDefault(isCase?"CREATETIME":"createtime",""); if(createTimeObj!=null) { String createTime = createTimeObj.toString(); baseModel.setCreateTime(chageStringToDate(createTime)); } - baseModel.setNameOid(dataMap.getOrDefault("NAMEOID","")); + baseModel.setNameOid(dataMap.getOrDefault(isCase?"NAMEOID":"nameoid","")); - Object lastModifyTimeObj=dataMap.getOrDefault("LASTMODIFYTIME",""); + Object lastModifyTimeObj=dataMap.getOrDefault(isCase?"LASTMODIFYTIME":"lastmodifytime",""); if(lastModifyTimeObj!=null) { String lastModifyTime = lastModifyTimeObj.toString(); baseModel.setLastModifyTime(chageStringToDate(lastModifyTime)); } - Object tsObj=dataMap.getOrDefault("TS",""); + Object tsObj=dataMap.getOrDefault(isCase?"TS":"ts",""); if(tsObj!=null) { String ts = tsObj.toString(); baseModel.setTs(chageStringToDate(ts)); } - baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID","")); + baseModel.setRevisionOid(dataMap.getOrDefault(isCase?"REVISIONOID":"revisionoid","")); //鐢ㄦ埛id ; 瑕佹眰鏀规垚浜嗚处鍙� // String userId = AuthUtil.getUserId().toString(); - baseModel.setBtmname(dataMap.getOrDefault("BTMNAME","")); - baseModel.setCreator(dataMap.getOrDefault("CREATOR","")); - baseModel.setFirstR(dataMap.getOrDefault("FIRSTR","")); - baseModel.setFirstV(dataMap.getOrDefault("FIRSTV","")); - baseModel.setLastR(dataMap.getOrDefault("LASTR","")); - baseModel.setLastV(dataMap.getOrDefault("LASTV","")); - Object revisionseq =dataMap.getOrDefault("REVISIONSEQ",""); + baseModel.setBtmname(dataMap.getOrDefault(isCase?"BTMNAME":"btmname","")); + baseModel.setCreator(dataMap.getOrDefault(isCase?"CREATOR":"creator","")); + baseModel.setFirstR(dataMap.getOrDefault(isCase?"FIRSTR":"firstr","")); + baseModel.setFirstV(dataMap.getOrDefault(isCase?"FIRSTV":"firstv","")); + baseModel.setLastR(dataMap.getOrDefault(isCase?"LASTR":"lastr","")); + baseModel.setLastV(dataMap.getOrDefault(isCase?"LASTV":"lastv","")); + Object revisionseq =dataMap.getOrDefault(isCase?"REVISIONSEQ":"revisionseq",""); if(revisionseq!=null){ baseModel.setRevisionSeq(chageStringToInt(revisionseq.toString())); } - baseModel.setOwner(dataMap.getOrDefault("OWNER","")); - Object versionseq =dataMap.getOrDefault("VERSIONSEQ",""); + baseModel.setOwner(dataMap.getOrDefault(isCase?"OWNER":"owner","")); + Object versionseq =dataMap.getOrDefault(isCase?"VERSIONSEQ":"versionseq",""); if(versionseq!=null){ baseModel.setVersionSeq(chageStringToInt(versionseq.toString())); } - baseModel.setVersionRule(dataMap.getOrDefault("VERSIONRULE","")); - baseModel.setVersionValue(dataMap.getOrDefault("VERSIONVALUE","")); - baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID","")); + baseModel.setVersionRule(dataMap.getOrDefault(isCase?"VERSIONRULE":"versionrule","")); + baseModel.setVersionValue(dataMap.getOrDefault(isCase?"VERSIONVALUE":"versionvalue","")); + + baseModel.setRevisionRule(dataMap.getOrDefault(isCase?"REVISIONRULE":"revisionrule","")); + + baseModel.setRevisionOid(dataMap.getOrDefault(isCase?"REVISIONOID":"revisionoid","")); + baseModel.setRevisionValue(dataMap.getOrDefault(isCase?"REVISIONVALUE":"revisionvalue","")); baseModel.setLastModifier(AuthUtil.getUser().getAccount()); - baseModel.setLcStatus(dataMap.getOrDefault("LCSTATUS","")); - baseModel.setName(dataMap.getOrDefault("NAME","")); - baseModel.setTenantId(dataMap.getOrDefault("TENADTID","")); - baseModel.setDescription(dataMap.getOrDefault("DESCRIOTION","")); - baseModel.setCopyFromVersion(dataMap.getOrDefault("COPYFROMVERSION","")); - Object secretgrade=dataMap.get("SECRETGRADE"); + baseModel.setLcStatus(dataMap.getOrDefault(isCase?"LCSTATUS":"lcstatus","")); + baseModel.setName(dataMap.getOrDefault(isCase?"NAME":"name","")); + baseModel.setTenantId(dataMap.getOrDefault(isCase?"TENANT_ID":"tenant_id","")); + baseModel.setDescription(dataMap.getOrDefault(isCase?"DESCRIPTION":"description","")); + baseModel.setCopyFromVersion(dataMap.getOrDefault(isCase?"COPYFROMVERSION":"copyfromversion","")); + Object secretgrade=dataMap.get(isCase?"SECRETGRADE":"secretgrade"); if(secretgrade!=null){ baseModel.setSecretGrade(chageStringToInt(secretgrade.toString())); } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java index e82445c..061a6b4 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java @@ -844,17 +844,53 @@ */ @GetMapping("/exportGroupCodeExcel") @VciBusinessLog(operateName = "瀵煎嚭闆嗗洟鐮�") - public void exportGroupCodeExcel(String codeClassifyOid, HttpServletResponse response) throws IOException{ - + public R exportGroupCodeExcel(String codeClassifyOid, HttpServletResponse response) throws IOException{ try { String excelName = mdmIOService.exportGroupCodeExcel(codeClassifyOid); + ControllerUtil.writeFileToResponse(response,excelName); } catch (Throwable e) { //濡傛灉鍑洪敊,鎶婇敊璇俊鎭啓鍒皌ext String msg = LangBaseUtil.getErrorMsg(e); if(StringUtils.isBlank(msg)){ msg = "鏈煡閿欒"; } - ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null); + return R.fail(msg); + // ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null); } + return R.status(true); + } + + /*** + * 闆嗗洟鐮佸鍏� + * @param codeClassifyOid + * @param file + * @param response + * @return + */ + @PostMapping("/importGroupCode") + public R importGroupCode(String codeClassifyOid,MultipartFile file,HttpServletResponse response){ + + String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + file.getOriginalFilename(); + File file1 = new File(excelFileName); + try { + file.transferTo(new File(excelFileName)); + mdmIOService.importGroupCode(codeClassifyOid,file1); + return R.success("鎿嶄綔鎴愬姛锛�"); + }catch (Throwable e) { + logger.error("瀵煎叆閿欒",e); + String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒.txt"; + LocalFileUtil.writeContentToFile(LangBaseUtil.getErrorMsg(e),errorFile); + String uuid=ControllerUtil.putErrorFile(errorFile); + CodeImProtRusultVO codeImProtRusultVO =new CodeImProtRusultVO(); + codeImProtRusultVO.setRedisUuid(""); + codeImProtRusultVO.setFileOid(uuid); + codeImProtRusultVO.setFilePath(errorFile); + R r = R.fail("瀵煎叆澶辫触"); + r.setData(codeImProtRusultVO); + return r; + }finally { + file1.delete(); + } + } } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java index 659128b..741918d 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java @@ -143,4 +143,13 @@ * @return */ String exportGroupCodeExcel(String classOid) throws ServiceException; + + /** + * 闆嗗洟鐮佸鍏� + * @param codeClassifyOid + * @param file + * @return + * @throws ServiceException + */ + public String importGroupCode(String codeClassifyOid, File file) throws Throwable; } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java index e5dcdbd..6f0f849 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java @@ -31,6 +31,7 @@ import com.vci.ubcs.omd.feign.IBtmTypeClient; import com.vci.ubcs.omd.feign.IWebSecretClient; import com.vci.ubcs.omd.vo.BtmTypeVO; +import com.vci.ubcs.omd.vo.RevisionRuleVO; import com.vci.ubcs.starter.bo.WriteExcelData; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.poi.bo.ReadExcelOption; @@ -59,6 +60,7 @@ import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Workbook; +import org.aspectj.apache.bcel.classfile.Code; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; @@ -821,7 +823,7 @@ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒� batchCheckRequiredAttrOnOrder(templateVO,allCboList,errorMap); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList,errorMap); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList,false,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){ @@ -1094,7 +1096,7 @@ batchSwitchComponentAttrOnOrder(attrVOS, cboList); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,false,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) { @@ -1615,7 +1617,7 @@ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒� batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO,cboList,false,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){ @@ -2102,7 +2104,7 @@ //鏈�鍚庡紕缁勫悎瑙勫垯 batchSwitchComponentAttrOnOrder(attrVOS,cboList); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList,errorMap); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList,false,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){ @@ -2308,7 +2310,7 @@ //鏈�鍚庡紕缁勫悎瑙勫垯 batchSwitchComponentAttrOnOrder(attrVOS,cboList); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorKeyMap); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,false,errorKeyMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); @@ -4241,7 +4243,7 @@ * @param cboList 鎵归噺鐨勬暟鎹� */ private CodeImportResultVO batchCheckKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, - List<ClientBusinessObject> cboList,Map<String,String> errorMap) { + List<ClientBusinessObject> cboList,boolean isEdit,Map<String,String> errorMap) { //涓嶮dmEngineServiceImpl閲岀殑checkKeyAttrOnOrder鐩镐技 //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮� CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo); @@ -4288,6 +4290,12 @@ if(Func.isNotBlank(isParticipateCheckOids)){ conditionMap.put("t.codeclsfid",QueryOptionConstant.NOTIN+isParticipateCheckOids); } + if(isEdit){//濡傛灉鏄洿鏀瑰垯闇�鎺掗櫎绯荤粺鏈韩 + conditionMap.put("t.id",QueryOptionConstant.NOTEQUAL+cbo.getId()); + } + conditionMap.put("t.lastr", "1"); + conditionMap.put("t.lastv", "1"); + CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, null); List<String> repeatData = commonsMapper.selectList(sqlBO.getSqlId()); if(!repeatData.isEmpty()){ @@ -4296,7 +4304,7 @@ List<BaseModel> newCboList = new ArrayList<>(); newDataList.stream().forEach(stringStringMap -> { BaseModel baseModel=new BaseModel(); - DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel); + DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,true); baseModel.setData(stringStringMap); newCboList.add(baseModel); }); @@ -4522,7 +4530,7 @@ List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>(); oldDataMap.stream().forEach(dataMap->{ ClientBusinessObject clientBusinessObject=new ClientBusinessObject(); - DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject); + DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject,true); for (String key:dataMap.keySet()){ Object value= dataMap.getOrDefault(key,""); clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString()); @@ -4974,7 +4982,7 @@ * @return */ @Override - public String exportGroupCodeExcel(String codeClassifyOid) throws ServiceException { + public String exportGroupCodeExcel(String codeClassifyOid) throws VciBaseException { VciBaseUtil.alertNotNull(codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭"); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); CodeClassifyVO codeClassifyVO= classifyFullInfo.getCurrentClassifyVO(); @@ -4985,8 +4993,8 @@ ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO(); createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//缁勭粐鏁版嵁 - if(!CollectionUtils.isEmpty(execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS())){ - throw new ServiceException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆"); + if(CollectionUtils.isEmpty(execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS())){ + throw new VciBaseException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆"); } fieldList=execGroupCodePortDataDTO.getFieldList(); List<Map<String,String>>dataList=new ArrayList<>(); @@ -5006,9 +5014,7 @@ List<WriteExcelData> excelDataList = new ArrayList<>(); Workbook workbook = new HSSFWorkbook(); List<CodeAndGroupCodeAttrMappingDTO> codeAndGroupCodeAttrMappingDTOList= execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS(); - Map<String, CodeAndGroupCodeAttrMappingDTO> jAttrVOMap = codeAndGroupCodeAttrMappingDTOList.stream().filter(s-> finalFieldList.contains(s.getTargetAttrKey().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getTargetAttrKey().toLowerCase(Locale.ROOT), t -> t)); - WriteExcelData codeExcelData = new WriteExcelData(0, 0, "浼佷笟缂栫爜"); WriteExcelData groupExcelData = new WriteExcelData(0, 1, "闆嗗洟鐮�"); excelDataList.add(codeExcelData); @@ -5086,7 +5092,9 @@ * @param file * @return */ - public String improtGroupCode(String codeClassifyOid, File file) throws ServiceException { + @Transactional(rollbackFor = VciBaseException.class) + @Override + public String importGroupCode(String codeClassifyOid, File file) throws Throwable { VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�"); ReadExcelOption reo = new ReadExcelOption(); reo.setReadAllSheet(true); @@ -5096,14 +5104,14 @@ throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�"); } CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); - CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO(); - //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 + //鑾峰彇鏈�鏂扮殑妯℃澘 + CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid); //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) ).collect(Collectors.toList()); ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO(); createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//缁勭粐鏁版嵁 List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS(); - if(!CollectionUtils.isEmpty(codeAttrMapGroupAttrDTOS)){ + if(CollectionUtils.isEmpty(codeAttrMapGroupAttrDTOS)){ throw new ServiceException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆"); } Map<String, CodeAndGroupCodeAttrMappingDTO> codeSystemObjectMap = codeAttrMapGroupAttrDTOS.stream().filter(codeAttrMappingDTO -> codeAttrMappingDTO != null && StringUtils.isNotBlank(codeAttrMappingDTO.getSourceAttrName())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getSourceAttrName(), t -> t)); @@ -5112,28 +5120,219 @@ Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>(); getGroupCodeFieldIndexMap(titleRowData,codeAttrMapGroupAttrDTOS,fieldIndexMap); //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜� - List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT)) + /** List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT)) && com.alibaba.cloud.commons.lang.StringUtils.isBlank(s.getComponentRule()) && com.alibaba.cloud.commons.lang.StringUtils.isBlank(s.getClassifyInvokeAttr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓 ).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(unExistAttrVOs)){ String message=unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName).collect(Collectors.joining(SERIAL_UNIT_SPACE)); throw new VciBaseException("銆�" + message + "銆戣繖浜涘睘鎬у湪excel涓病鏈夋壘鍒�"); - } + }**/ List<ClientBusinessObject> cboList = new ArrayList<>(); List<SheetRowData> rowDataList = dataSet.getRowData(); getExportGroupCodeDatas(fieldIndexMap,rowDataList,cboList);//鏋勫缓鏁版嵁瀵硅薄 + List<String> codeList= cboList.stream().map(ClientBusinessObject::getId).collect(Collectors.toList()); List<Map<String,String>>dataList=new ArrayList<>(); - getDatas(classifyFullInfo,templateVO,execGroupCodePortDataDTO.getFieldList(),dataList,codeList); - //鏌ヨ绯荤粺涓瓨鍦� - if(!CollectionUtils.isEmpty(dataList)){ + Map<String,String> errorMap=new HashMap<>(); + batchSwitchCheckExist(errorMap,cboList,classifyFullInfo,templateVO,execGroupCodePortDataDTO,fieldIndexMap); + //鍒ゆ柇蹇呰緭椤� + batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap); + // //浼樺厛鏍¢獙缂栫爜鏄惁瀛樺湪 + // batchCheckIdExistOnOrder(templateVO, cboList, errorMap); + //boolean + reSwitchBooleanAttrOnOrder(attrVOS, cboList); + // 鏋氫妇鐨勫唴瀹归渶瑕佹牴鎹悕绉拌浆鎹负鏋氫妇鐨勫�� + batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap); + batchSwitchReferAttrOnOrder(attrVOS, cboList, errorMap); + //6.澶勭悊鍒嗙被娉ㄥ叆 + batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo,false); + + //璁剧疆榛樿鍊� + batchSwitchAttrDefault(attrVOS, cboList); + + //7.澶勭悊缁勫悎瑙勫垯 + batchSwitchComponentAttrOnOrder(attrVOS, cboList); + //4.鏍¢獙瑙勫垯 + batchCheckVerifyOnOrder(attrVOS, cboList, errorMap); + //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss + batchSwitchDateAttrOnOrder(attrVOS, cboList, errorMap); + //3.鍒ゆ柇鍏抽敭灞炴�� + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,true,errorMap); + Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); + Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); + if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) { + selfRepeatRowIndexList.stream().forEach(rowIndex -> { + errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍦ㄥ綋鍓峞xcel鏂囦欢涓叧閿睘鎬ч噸澶�"); + }); } - return ""; - } + if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) { + keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> { + errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex, "")); + }); + } + Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>(); + createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, templateVO); + String excelFileName=""; + if(errorMap.size()==0) { + try { + String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId(); + List<BaseModel>oldCbos= execGroupCodePortDataDTO.getOldList(); + List<BaseModel>newCbos=new ArrayList<>(); + // 淇敼鐗堟鍙� + engineService.updateBatchByBaseModel(btmTypeId,oldCbos); + List<CodeAllCode> codeAllCodeList=new ArrayList<>(); + cboList.stream().forEach(clientBusinessObject -> { + BaseModel newBaseModel=new BaseModel(); + DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(clientBusinessObject.getData(),newBaseModel,true); + newCbos.add(newBaseModel); + }); + // 鎻掑叆鏂扮殑鏁版嵁 + engineService.insertBatchByType(btmTypeId, newCbos); + codeAllCodeService.saveOrUpdateBatch(execGroupCodePortDataDTO.getCodeAllCodeList()); + engineService.batchSaveSelectChar(templateVO, newCbos); + // 璁板綍鏁版嵁鏇存敼鏃ュ織 + saveLogUtil.operateLog("鏁版嵁鏇存敼", false, StringUtil.format("{}\n淇敼涓�:\n{}", JSON.toJSONString(oldCbos), JSON.toJSONString(newCbos))); + } catch (Exception vciError) { + // 璁板綍鏁版嵁鏇存敼鎶ラ敊鏃剁殑鏃ュ織 + saveLogUtil.operateLog("鏁版嵁鏇存敼", true, vciError.toString()); + throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); + } + }else{ + excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls"; + WriteExcelOption eo = new WriteExcelOption(); + shetNameMap.forEach((shetName, errorDataList) -> { + eo.addSheetDataList(shetName, errorDataList); + }); + try { + new File(excelFileName).createNewFile(); + } catch (IOException e) { + throw new VciBaseException(LangBaseUtil.getErrorMsg(e)); + } + ExcelUtil.writeDataToFile(excelFileName, eo); + } + return excelFileName; + } + public void batchSwitchCheckExist(Map<String,String> errorMap,List<ClientBusinessObject> cboList,CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,ExecGroupCodePortDataDTO execGroupCodePortDataDTO,Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap){ + List<BaseModel> oldBaseModelList=new ArrayList<>(); + List<CodeAllCode> codeAllCodeList=new ArrayList<>(); + cboList.stream().forEach(clientBusinessObject -> { + String code=clientBusinessObject.getId(); + String rowIndex=clientBusinessObject.getAttributeValue(IMPORT_ROW_INDEX); + List<Map<String,String>>dataList=new ArrayList<>(); + List<String> fieldList= execGroupCodePortDataDTO.getFieldList(); + getDatas(classifyFullInfo,templateVO,execGroupCodePortDataDTO.getFieldList(),dataList,Arrays.asList(code)); + if(!CollectionUtils.isEmpty(dataList)){ + Map<String,String> newDataMap=new HashMap<>();//灏嗘柊瀵硅薄灞炴�ф殏鏃跺瓨鍌ㄥ湪Map<> + newDataMap.putAll(clientBusinessObject.getData()); + Map<String,String> dataMap=dataList.get(0); + BaseModel oldBaseModel=new BaseModel(); + + DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,oldBaseModel,false); + String oldOid=oldBaseModel.getOid(); + + clientBusinessObject.setCopyFromVersion(oldOid); + clientBusinessObject.setAttributeValueWithNoCheck("copyfromversion",oldOid); + String oid=VciBaseUtil.getPk(); + clientBusinessObject.setOid(oid); + clientBusinessObject.setAttributeValueWithNoCheck("oid",oid); + clientBusinessObject.setBtmname(oldBaseModel.getBtmname()); + clientBusinessObject.setAttributeValueWithNoCheck("btmname",oldBaseModel.getBtmname()); + clientBusinessObject.setLastR("1"); + clientBusinessObject.setAttributeValueWithNoCheck("lastr","1"); + clientBusinessObject.setFirstR("1"); + clientBusinessObject.setAttributeValueWithNoCheck("firstr","1"); + clientBusinessObject.setFirstV("1"); + clientBusinessObject.setAttributeValueWithNoCheck("firstv","1"); + clientBusinessObject.setLastV("1"); + clientBusinessObject.setAttributeValueWithNoCheck("lastv","1"); + clientBusinessObject.setRevisionSeq(1); + clientBusinessObject.setAttributeValueWithNoCheck("revisionseq","1"); + clientBusinessObject.setVersionSeq(1); + clientBusinessObject.setAttributeValueWithNoCheck("versionseq","1"); + clientBusinessObject.setRevisionRule(oldBaseModel.getRevisionRule()); + clientBusinessObject.setAttributeValueWithNoCheck("revisionrule",oldBaseModel.getRevisionRule()); + clientBusinessObject.setVersionRule(oldBaseModel.getRevisionRule()); + clientBusinessObject.setAttributeValueWithNoCheck("versionrule",oldBaseModel.getVersionRule()); + clientBusinessObject.setVersionValue(oldBaseModel.getVersionValue()); + clientBusinessObject.setAttributeValueWithNoCheck("versionvalue",oldBaseModel.getVersionValue()); + clientBusinessObject.setLctid(oldBaseModel.getLctid()); + clientBusinessObject.setAttributeValueWithNoCheck("lctid",oldBaseModel.getLctid()); + clientBusinessObject.setId(oldBaseModel.getId()); + clientBusinessObject.setAttributeValueWithNoCheck("id",oldBaseModel.getId()); + clientBusinessObject.setName(oldBaseModel.getName()); + clientBusinessObject.setAttributeValueWithNoCheck("name",oldBaseModel.getName()); + clientBusinessObject.setLcStatus(CodeDefaultLC.RELEASED.getValue()); + clientBusinessObject.setAttributeValueWithNoCheck("lcstatus",CodeDefaultLC.RELEASED.getValue()); + clientBusinessObject.setDescription("瀵煎叆闆嗗洟鐮�"); + clientBusinessObject.setAttributeValueWithNoCheck("description","瀵煎叆闆嗗洟鐮�"); + clientBusinessObject.setOwner("1"); + clientBusinessObject.setAttributeValueWithNoCheck("owner","1"); + clientBusinessObject.setTenantId(AuthUtil.getTenantId()); + clientBusinessObject.setAttributeValueWithNoCheck("tenant_id",AuthUtil.getTenantId()); + clientBusinessObject.setCreator(oldBaseModel.getCreator()); + clientBusinessObject.setAttributeValueWithNoCheck("creator",oldBaseModel.getCreator()); + SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + clientBusinessObject.setCreateTime(oldBaseModel.getCreateTime()); + clientBusinessObject.setAttributeValueWithNoCheck("createtime", formatter.format(oldBaseModel.getCreateTime())); + clientBusinessObject.setLastModifier(AuthUtil.getUserAccount()); + clientBusinessObject.setAttributeValueWithNoCheck("lastmodifier",AuthUtil.getUserAccount()); + clientBusinessObject.setCreateTime(new Date()); + clientBusinessObject.setAttributeValueWithNoCheck("lastmodifytime", formatter.format(new Date())); + clientBusinessObject.setRevisionValue(String.valueOf(Integer.parseInt(oldBaseModel.getRevisionValue())+1)); + clientBusinessObject.setRevisionOid(oldBaseModel.getRevisionOid()); + clientBusinessObject.setAttributeValueWithNoCheck("revisionoid",oldBaseModel.getRevisionOid()); + clientBusinessObject.setAttributeValueWithNoCheck("revisionvalue",String.valueOf(Integer.parseInt(oldBaseModel.getRevisionValue())+1)); + + clientBusinessObject.setNameOid(oldBaseModel.getNameOid()); + clientBusinessObject.setAttributeValueWithNoCheck("nameoid",oldBaseModel.getNameOid()); + + clientBusinessObject.setAttributeValueWithNoCheck(CODE_CLASSIFY_OID_FIELD,oldBaseModel.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,"")); + clientBusinessObject.setAttributeValueWithNoCheck(CODE_FULL_PATH_FILED,oldBaseModel.getData().getOrDefault(CODE_FULL_PATH_FILED,"")); + clientBusinessObject.setAttributeValueWithNoCheck(CODE_TEMPLATE_OID_FIELD,oldBaseModel.getData().getOrDefault(CODE_TEMPLATE_OID_FIELD,"")); + clientBusinessObject.setTs(new Date()); + clientBusinessObject.setAttributeValueWithNoCheck("ts",formatter.format(new Date())); + oldBaseModel.setLastV("0"); + oldBaseModel.getData().put("lastv","0"); + oldBaseModelList.add(oldBaseModel); + List<CodeAllCode> oldCodeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getId,code)); + CodeAllCode codeAllCode=new CodeAllCode(); + if(!CollectionUtils.isEmpty(oldCodeAllCodeList)){ + codeAllCode=oldCodeAllCodeList.get(0); + codeAllCode.setId(code); + codeAllCode.setLcStatus(CodeDefaultLC.RELEASED.getValue()); + codeAllCode.setCreateCodeOid(clientBusinessObject.getOid()); + codeAllCode.setCreateCodeBtm(clientBusinessObject.getBtmname()); + codeAllCode.setLastModifyTime(new Date()); + codeAllCode.setLastModifier(AuthUtil.getUserAccount()); + codeAllCodeList.add(codeAllCode); + if(!oldBaseModel.getLcStatus().equals(CodeDefaultLC.RELEASED.getValue())||!codeAllCode.getLcStatus().equals(CodeDefaultLC.RELEASED.getValue())){ + errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍦ㄧ郴缁熶腑鏁版嵁涓嶆槸鍙戝竷鐘舵��"); + } + }else{ + errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍦ㄧ郴缁熶腑鏈煡璇㈠埌鐩稿簲鐨勭爜鍊兼暟鎹�"); + } + //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 + List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!fieldIndexMap.containsValue(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + ).collect(Collectors.toList()); + attrVOS.stream().forEach(codeClassifyTemplateAttrVO -> {//灏嗕笉闇�瑕佹洿鏀圭殑榛樿瀛楁鎴栬�呬笉鏇存敼鐨勫睘鎬у鍒跺埌鏂扮殑鐗堟湰涓� + String arrtibuteKey=codeClassifyTemplateAttrVO.getId(); + Map<String,String>attrDataMap=oldBaseModel.getData(); + if(attrDataMap.containsKey(arrtibuteKey)){ + String arrtibuteValue=attrDataMap.get(arrtibuteKey); + clientBusinessObject.setAttributeValueWithNoCheck(arrtibuteKey,arrtibuteValue); + } + }); + }else{ + errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍦ㄧ郴缁熶腑鏈煡璇㈠埌鐩稿簲鐨勬渶鏂扮増鏁版嵁"); + } + }); + execGroupCodePortDataDTO.setOldList(oldBaseModelList); + execGroupCodePortDataDTO.setCodeAllCodeList(codeAllCodeList); + } /** * * @param fieldIndexMap @@ -5142,8 +5341,10 @@ */ private void getExportGroupCodeDatas(Map<Integer,String> fieldIndexMap,List<SheetRowData> rowDataList,List<ClientBusinessObject>cboList){ rowDataList.stream().forEach(sheetRowData -> { + String rowIndex= sheetRowData.getRowIndex(); + ClientBusinessObject cbo=new ClientBusinessObject(); + cbo.setAttributeValue(IMPORT_ROW_INDEX,rowIndex); sheetRowData.getData().forEach((index,value)->{ - ClientBusinessObject cbo=new ClientBusinessObject(); String field = fieldIndexMap.get(index); if (StringUtils.isBlank(field)) { throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�"); @@ -5156,8 +5357,8 @@ } catch (VciBaseException e) { log.error("璁剧疆灞炴�х殑鍊奸敊璇�", e); } - cboList.add(cbo); }); + cboList.add(cbo); }); } /*** @@ -5205,16 +5406,19 @@ Map<String, CodeAndGroupCodeAttrMappingDTO> codeSystemObjectMap = codeAttrMapGroupAttrDTOS.stream().filter(codeAttrMappingDTO -> codeAttrMappingDTO != null && StringUtils.isNotBlank(codeAttrMappingDTO.getSourceAttrName())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getSourceAttrName(), t -> t)); for (int i = 0; i < titleRowData.size(); i++) { String title = titleRowData.get(i); - CodeAndGroupCodeAttrMappingDTO codeAndGroupCodeAttrMappingDTO =codeSystemObjectMap.get(title.replace(KEY_ATTR_CHAR,"").replace(REQUIRED_CHAR,"")); - String id=codeAndGroupCodeAttrMappingDTO.getTargetAttrKey(); - if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "闆嗗洟鐮�".equalsIgnoreCase(title)){ + String id = ""; + if ("闆嗗洟鐮�".equalsIgnoreCase(title)) { id = CODE_GROUP_FIELD; } - if(com.alibaba.cloud.commons.lang.StringUtils.isBlank(id) && "浼佷笟缂栫爜".equalsIgnoreCase(title)){ + if ("浼佷笟缂栫爜".equalsIgnoreCase(title)) { id = CODE_FIELD; } - if(com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(id)){ - fieldIndexMap.put(i,id); + if(codeSystemObjectMap.containsKey(title)) { + CodeAndGroupCodeAttrMappingDTO codeAndGroupCodeAttrMappingDTO = codeSystemObjectMap.get(title.replace(KEY_ATTR_CHAR, "").replace(REQUIRED_CHAR, "")); + id = codeAndGroupCodeAttrMappingDTO.getTargetAttrKey(); + } + if (com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(id)) { + fieldIndexMap.put(i, id); } } @@ -5227,7 +5431,7 @@ * @param selectFieldList * @param dataList */ - private void getDatas(CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,LinkedList<String> selectFieldList,List<Map<String,String>>dataList,List<String> codeList ){ + private void getDatas(CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,LinkedList<String> selectFieldList,List<Map<String,String>>dataList,List<String> codeList){ //鍏堟煡璇㈡暟鎹� String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId(); String codeClassifyOid=classifyFullInfo.getCurrentClassifyVO().getOid(); diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java index a51667b..edcb828 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java @@ -2297,7 +2297,7 @@ List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>(); oldDataMap.stream().forEach(dataMap->{ ClientBusinessObject clientBusinessObject=new ClientBusinessObject(); - DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject); + DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject,true); for (String key:dataMap.keySet()){ Object value= dataMap.getOrDefault(key,""); clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString()); -- Gitblit v1.9.3