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-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 270 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 237 insertions(+), 33 deletions(-) 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(); -- Gitblit v1.9.3