From d33ba05da2fbe74d8b85d393eca2a336f20f8688 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 30 八月 2023 18:19:25 +0800
Subject: [PATCH] 本地提交

---
 Source/UBCS/ubcs-gateway/src/main/resources/application-prod.yml                                      |   27 ------
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java |  212 +++++++++++++++++++++++++++++++++++++++++++---------
 2 files changed, 173 insertions(+), 66 deletions(-)

diff --git a/Source/UBCS/ubcs-gateway/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-gateway/src/main/resources/application-prod.yml
index 284519d..b8eaf54 100644
--- a/Source/UBCS/ubcs-gateway/src/main/resources/application-prod.yml
+++ b/Source/UBCS/ubcs-gateway/src/main/resources/application-prod.yml
@@ -1,19 +1,3 @@
-<<<<<<<< HEAD:Source/UBCS/ubcs-gateway/src/main/resources/application-prod.yml
-
-========
-server:
-  port: 37000
-
-spring:
-  cloud:
-    gateway:
-      discovery:
-        locator:
-          enabled: true
-    loadbalancer:
-      retry:
-        enabled: true
->>>>>>>> origin/master:Source/UBCS/ubcs-gateway/src/main/resources/application-dev.yml
 blade:
   #澶氬洟闃熷崗浣滄湇鍔¢厤缃�
   loadbalancer:
@@ -25,14 +9,3 @@
     prior-ip-pattern:
       - 192.168.0.*
       - 127.0.0.1
-server:
-  port: 80
-spring:
-  cloud:
-    gateway:
-      discovery:
-        locator:
-          enabled: true
-    loadbalancer:
-      retry:
-        enabled: true
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 1bd7198..77fd040 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
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient;
 import com.vci.ubcs.code.bo.AttributeValue;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
@@ -11,6 +12,7 @@
 import com.vci.ubcs.code.entity.CodeAllCode;
 import com.vci.ubcs.code.enumpack.CodeDefaultLC;
 import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
+import com.vci.ubcs.code.enumpack.sysIntegrationPushTypeEnum;
 import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
 import com.vci.ubcs.code.mapper.CommonsMapper;
 import com.vci.ubcs.code.service.*;
@@ -154,7 +156,11 @@
 	 */
 	@Autowired
 	private IBtmTypeClient btmTypeClient;
-
+	/***
+	 * 鐢宠闆嗗洟缂栫爜鏈嶅姟
+	 */
+	@Resource
+	private IMdmInterJtClient mdmInterJtClient;
 	/***
 	 * 瀵嗙骇鏈嶅姟
 	 */
@@ -173,7 +179,7 @@
 	 * @return excel鐨勬枃浠跺湴鍧�
 	 */
 	@Override
-	public  String downloadTopImportExcel(String codeClassifyOid){
+	public String downloadTopImportExcel(String codeClassifyOid){
 		List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>();
 		VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
 		CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
@@ -383,9 +389,9 @@
 					&& (isHistory || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
 			).collect(Collectors.toList());
 
-				if (CollectionUtils.isEmpty(templateAttrVOS)) {
-					throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
-				}
+			if (CollectionUtils.isEmpty(templateAttrVOS)) {
+				throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
+			}
 
 			List<CodeClassifyTemplateAttrVO> idAttrVOList = codeClassifyTemplateVO.getAttributes().stream().filter(s -> s.getId().equalsIgnoreCase(CODE_FIELD)).collect(Collectors.toList());
 			LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
@@ -1962,6 +1968,7 @@
 		CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
 		Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
 		Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+		Map<String,List<String>>keyAttrOkOidTORepeatOidMap= keyResultVO.getKeyAttrOkOidTORepeatOidMap();
 		if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
 			selfRepeatRowIndexList.stream().forEach(rowIndex->{
                /* //浼犲叆鏁版嵁涔嬮棿鍏抽敭灞炴�х殑鏍¢獙
@@ -2064,8 +2071,8 @@
 							String lcstatus =newCbo.getLcStatus();
 							String newOid =newCbo.getOid();
 							Date ts =newCbo.getTs();
-							groupCode=newCbo.getData().get("GROUPCODE");
-							code=newCbo.getId();
+							code = StringUtils.isBlank(newCbo.getId())?"":newCbo.getId();
+							groupCode=newCbo.getData().getOrDefault("GROUPCODE","");
 							String lastmodifier=newCbo.getLastModifier();
 							if (lcstatus!=null&&!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
 								newCbo.setOid(newOid);
@@ -2083,7 +2090,8 @@
 							XMLResultDataObjectDetailDO resultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
 							if(isCodeOrGroupCode) {
 								if(StringUtils.isBlank(groupCode)){
-									mes+="锛涚瓑寰呴泦鍥㈢紪鐮佽祴鍊�";
+									errorid="1";
+									mes+="锛涚敵璇风殑缂栫爜绫诲瀷涓洪泦鍥㈢爜锛岀瓑寰呴泦鍥㈢紪鐮佽祴鍊�";
 								}
 								resultDataObjectDetailDO.setCode(groupCode);
 							}else{
@@ -2125,27 +2133,46 @@
 			needSaveCboList.stream().forEach(clientBusinessObject -> {
 				BaseModel baseModel=new BaseModel();
 				BeanUtil.convert(clientBusinessObject,baseModel);
-			//(VciBaseUtil.objectToMapString(clientBusinessObject));
+				//(VciBaseUtil.objectToMapString(clientBusinessObject));
 				dataCBOList.add(baseModel);
 				allNeedSaveCboList.add(baseModel.getOid());
 			});
 			try {
+				List<String>applyGroupCodeIdList=new ArrayList<>();
 				productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
 				//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
 				engineService.batchSaveSelectChar(templateVO, dataCBOList);
 				// if(!isProcess){
 				dataCBOList.stream().forEach(needSaveCbo->{
+
 					XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
-					resultDataObjectDetailDO.setCode(needSaveCbo.getId());
+					String code=StringUtils.isBlank(needSaveCbo.getId())?" ":needSaveCbo.getId();
+					String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE"," ");
+					//resultDataObjectDetailDO.setCode(needSaveCbo.getId());
+					String msg="鐢宠缂栫爜鎴愬姛";
 					String oid=needSaveCbo.getOid();
 					String sourceOid=oid;
+					applyGroupCodeIdList.add(oid);
 					if(codeOidToSystemOidMap.containsKey(oid)){
 						sourceOid=codeOidToSystemOidMap.get(oid);
 					}
+					if(isCodeOrGroupCode) {
+						if(StringUtils.isBlank(groupCode)){
+							resultDataObjectDetailDO.setErrorid("1");
+							msg="鐢宠鐨勭紪鐮佺被鍨嬩负闆嗗洟鐮侊紝绛夊緟闆嗗洟缂栫爜璧嬪��";
+						}
+						resultDataObjectDetailDO.setCode(groupCode);
+					}else{
+						resultDataObjectDetailDO.setCode(code);
+						resultDataObjectDetailDO.setErrorid("0");
+					}
 					resultDataObjectDetailDO.setId(sourceOid);
-					resultDataObjectDetailDO.setErrorid("0");
-					resultDataObjectDetailDO.setMsg("鐢宠缂栫爜鎴愬姛");
+
+					resultDataObjectDetailDO.setMsg(msg);
 					resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
+					//澶勭悊浼犻�佺殑鏁版嵁涓叧閿睘鎬ч噸澶嶇殑锛岀洿鎺ユ嬁鍒板凡缁忕敵璇峰埌缂栫爜鐨勬暟鎹紪鐮佺洿鎺ュ皢璧嬬粰鍏抽敭灞炴�ч噸澶嶇殑鏁版嵁
+					LinkedList<XMLResultDataObjectDetailDO> repeatDataObjectDetailDOS=handleApplyDataKeyAttrRepeat(keyAttrOkOidTORepeatOidMap,codeOidToSystemOidMap,needSaveCbo,isCodeOrGroupCode);
+					resultDataObjectDetailDOs.addAll(repeatDataObjectDetailDOS);
 				});
                /* }else{
                     needSaveCboList.stream().forEach(needSaveCbo->{
@@ -2163,6 +2190,13 @@
                     });
 
                 }*/
+				//鏄惁璋冪敤闆嗗洟鎺ュ彛鐢宠鎺ュ彛
+				if(isCodeOrGroupCode){
+					if(!CollectionUtils.isEmpty(applyGroupCodeIdList)) {
+						this.sendApplyGroupcode(applyGroupCodeIdList, classifyFullInfo.getTopClassifyVO().getId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
+					}
+				}
+
 			}catch (Throwable e){
 				e.printStackTrace();
 				needSaveCboList.stream().forEach(needSaveCbo->{
@@ -2185,14 +2219,59 @@
 	}
 
 	/***
+	 *缁欏悓涓�鎵圭敵璇风紪鐮佸瓨鍦ㄥ叧閿睘鎬х殑鏁版嵁璧嬩笂涓�鑷寸紪鐮�
+	 * @param keyAttrOkOidTORepeatOidMap 涓�鎵圭敵璇锋暟鎹叧閿睘鎬т竴鑷寸殑閲嶅鏁版嵁鏄犲皠鍏崇郴
+	 * @param codeOidToSystemOidMap
+	 * @param needSaveCbo
+	 * @param isCodeOrGroupCode
+	 */
+	private LinkedList<XMLResultDataObjectDetailDO> handleApplyDataKeyAttrRepeat(Map<String,List<String>>keyAttrOkOidTORepeatOidMap,Map<String,String> codeOidToSystemOidMap,BaseModel needSaveCbo,boolean isCodeOrGroupCode){
+		LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs=new LinkedList<>();
+		String oid=needSaveCbo.getOid();
+		if(keyAttrOkOidTORepeatOidMap.containsKey(oid)){
+			List<String> repeatOidList= keyAttrOkOidTORepeatOidMap.get(oid);
+			if(!CollectionUtils.isEmpty(repeatOidList)){
+				String sourceNewOid=needSaveCbo.getOid();
+				String sourceOid=sourceNewOid;
+				if(codeOidToSystemOidMap.containsKey(oid)){
+					sourceOid=codeOidToSystemOidMap.get(oid);
+				}
+				String code=StringUtils.isBlank(needSaveCbo.getId())?" ":needSaveCbo.getId();
+				String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE"," ");
+				String finalSourceOid = sourceOid;
+				repeatOidList.stream().forEach(repeatOid->{
+					if(codeOidToSystemOidMap.containsKey(repeatOid)){
+						XMLResultDataObjectDetailDO repeatresultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+						String repeatSourceOid=codeOidToSystemOidMap.get(repeatOid);
+						String repeatMsg="姝ゆ暟鎹笌鐢宠鐨勭紪鐮佹暟鎹甶d涓恒��"+ finalSourceOid +"銆戠殑鍏抽敭灞炴�т竴鑷达紝鍒欏彇鐩稿悓缂栫爜";
+						if(isCodeOrGroupCode) {
+							if(StringUtils.isBlank(groupCode)){
+								repeatMsg="鐢宠鐨勭紪鐮佺被鍨嬩负闆嗗洟鐮侊紝绛夊緟闆嗗洟缂栫爜璧嬪��";
+							}
+							repeatresultDataObjectDetailDO.setCode(groupCode);
+						}else{
+							repeatresultDataObjectDetailDO.setCode(code);
+						}
+						repeatresultDataObjectDetailDO.setId(repeatSourceOid);
+						repeatresultDataObjectDetailDO.setErrorid("0");
+						repeatresultDataObjectDetailDO.setMsg(repeatMsg);
+						resultDataObjectDetailDOs.add(repeatresultDataObjectDetailDO);
+					}
+				});
+			}
+		}
+		return  resultDataObjectDetailDOs;
+	}
+	/***
 	 * 闆嗘垚鎵归噺鍚屾鏇存柊鎺ュ彛
 	 * @param codeClassifyVO;
 	 * @param dataObjectVO 鏁版嵁淇℃伅
 	 * @param resultDataObjectDetailDOs 閿欒淇℃伅
+	 * @param isCodeOrGroupCode 鏄惁鏇撮泦鍥㈢郴缁熸暟鎹�
 	 */
 	@Transactional(rollbackFor = VciBaseException.class)
 	@Override
-	public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
+	public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs,boolean isCodeOrGroupCode) {
 		String errorid="";
 		String msg="";
 		//鏌ヨ鍒嗙被鍜屾ā鏉�
@@ -2217,8 +2296,8 @@
 		List<String> titleRowData = dataObjectVO.getColName();
 		Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT), (o1, o2) -> o2));
 		getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
-		Map<String, String> cboOidMap = new HashMap<>();
-		cboOidMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])) + ")");
+		//Map<String, String> cboOidMap = new HashMap<>();
+		//cboOidMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])) + ")");
 		String tableName ="";
 		try {
 			R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
@@ -2248,15 +2327,21 @@
 		sb.append(" select * from ");
 		sb.append(tableName);
 		sb.append(" where 1=1 ");
-		sb.append(" id in (");
+		sb.append(" and lastr=1 and lastv=1" );
+		if(isCodeOrGroupCode) {
+			sb.append(" and groupcode in (");
+		}else{
+			sb.append(" and id in (");
+		}
 		sb.append(VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])));
 		sb.append(")");
+
 		List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString());
 		List<ClientBusinessObject> cboList=	ChangeMapTOClientBusinessObjects(dataMapList);
 		Map<String, ClientBusinessObject> codeSystemObjectMap = cboList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
 		Map<String, String> errorMap = new HashMap<>();
 		List<CodeOrderDTO> codeOrderDTOList = new ArrayList<>();
-		this.getCodeOrderDTOs(codeClassifyVO, templateVO, codeDataMap, codeSystemObjectMap, codeOrderDTOList, errorMap);
+		this.getCodeOrderDTOs(codeClassifyVO, templateVO, codeDataMap, codeSystemObjectMap, codeOrderDTOList, errorMap,isCodeOrGroupCode);
 		// List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS=codeClassifyProcessTempService.listProcessTemplate(templateVO.getOid(),"code_cls_flow_use_order");
 		boolean isProcess=false;
 		/**  if(!CollectionUtils.isEmpty(codeClassifyProcessTempVOS)){
@@ -2278,7 +2363,7 @@
 			RowDatas rowData=codeDataMap.get(code);
 			String status=rowData.getStatus();
 			String operation=rowData.getOperation();
-			if (cbo.getTs().compareTo(orderDTO.getTs())==0?true:false) {
+			if (cbo.getTs().compareTo(orderDTO.getTs())==0?false:true) {
 				// throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
 				errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
 			}
@@ -2320,7 +2405,7 @@
 
 				List<CodeAllCode>newCodeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCreateCodeOid, cbo.getOid()));
 				if (!CollectionUtils.isEmpty(newCodeAllCodeList)) {
-					CodeAllCode codeCbo = codeAllCodeList.get(0);
+					CodeAllCode codeCbo = newCodeAllCodeList.get(0);
 					log.info("codeCbos code:" + codeCbo.getId());
 					codeCbo.setLcStatus(status);
 					codeAllCodeList.add(codeCbo);
@@ -2397,9 +2482,16 @@
 			//瀛樺偍鏁版嵁
 			try {
 				engineService.updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(),updateList);
-				codeAllCodeService.saveBatch(codeAllCodeList);
+				codeAllCodeService.saveOrUpdateBatch(codeAllCodeList);
 				if(deleteList.size()>0) {
 					commonsMapper.deleteByTaleAndOid(tableName, VciBaseUtil.array2String(deleteList.toArray(new String[]{})));
+				}
+				//鏄惁璋冪敤闆嗗洟鎺ュ彛鐢宠鎺ュ彛
+				if(isCodeOrGroupCode){
+					List<String> IdList=resultDataObjectDetailDOs.stream().filter(xMLResultDataObjectDetailDO-> com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(xMLResultDataObjectDetailDO.getId())).map(XMLResultDataObjectDetailDO::getId).distinct().collect(Collectors.toList());
+					if(!CollectionUtils.isEmpty(IdList)) {
+						this.sendApplyGroupcode(IdList, classifyFullInfo.getTopClassifyVO().getBtmTypeId(),sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue());
+					}
 				}
 				errorid="0";
 				msg="鏇存柊/鐘舵�佹洿鏀�/鍒犻櫎鎴愬姛锛�";
@@ -2524,17 +2616,22 @@
 		//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
 
 		if (!CollectionUtils.isEmpty(conditionMap)) {
-			final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmTypeId()) + " where 1 = 1 "};
+			final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmTypeId()) + " t where 1 = 1 "};
 			conditionMap.forEach((key, value) -> {
-				sql[0] += " and " + key + " = " + value;
+				if(StringUtils.isBlank(value)||value.equals(QueryOptionConstant.ISNULL)){
+					sql[0] += " and " + key + " is null ";
+				}else{
+					sql[0] += " and " + key + " = " + value;
+				}
+
 			});
 			if (StringUtils.isNotBlank(orderDTO.getOid())) {
 				//淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸�
-				sql[0] += " and oid != '" + orderDTO.getOid() + "'";
+				sql[0] += " and t.oid != '" + orderDTO.getOid() + "'";
 			} else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
-				sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
+				sql[0] += " and t.oid != '" + orderDTO.getCopyFromVersion() + "'";
 			}
-			sql[0] += " and lastR = '1' and lastV = '1' ";
+			sql[0] += " and t.lastR = '1' and t.lastV = '1' ";
 			if (commonsMapper.queryCountBySql(sql[0]) > 0) {
 				String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}";
 				String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"};
@@ -2629,7 +2726,7 @@
 //					if (lifeCycleVO != null) {
 //						cbo.setLcStatus(lifeCycleVO.getStartStatus());
 //					} else {
-						cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+					cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
 //					}
 				} else {
 					cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
@@ -2734,17 +2831,24 @@
 	 * @param errorMap
 	 * @return
 	 */
-	private void   getCodeOrderDTOs(CodeClassifyVO codeClassifyVO,CodeClassifyTemplateVO templateVO,Map<String ,RowDatas>codeDataMap,Map<String, ClientBusinessObject> codeSystemObjectMap,List<CodeOrderDTO> codeOrderDTOList,Map<String,String> errorMap){
-		codeDataMap.keySet().forEach(code->{
-			RowDatas rowDatas=codeDataMap.get(code);
-			Map<String, String> data= rowDatas.getFiledValue();
+	private void getCodeOrderDTOs(CodeClassifyVO codeClassifyVO,CodeClassifyTemplateVO templateVO,Map<String ,RowDatas>codeDataMap,Map<String, ClientBusinessObject> codeSystemObjectMap,List<CodeOrderDTO> codeOrderDTOList,Map<String,String> errorMap,boolean isCodeOrGroupCode){
+		codeSystemObjectMap.keySet().forEach(code->{
+			ClientBusinessObject sysDataObject= codeSystemObjectMap.get(code);
+			if(isCodeOrGroupCode){
+				code=sysDataObject.getAttributeValue("GROUPCODE");
+			}
 			CodeOrderDTO orderDTO = new CodeOrderDTO();
-			if(codeSystemObjectMap.containsKey(code)){
-				ClientBusinessObject sysDataObject= codeSystemObjectMap.get(code);
+			if(codeDataMap.containsKey(code)){
+				RowDatas rowDatas=codeDataMap.get(code);
+				Map<String, String> data= rowDatas.getFiledValue();
 				orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭
 				orderDTO.setOid(sysDataObject.getOid());//鏁版嵁oid
 				orderDTO.setLcStatus(rowDatas.getStatus());//鐘舵��
-				orderDTO.setId(code);
+				if(isCodeOrGroupCode){
+					orderDTO.setId(sysDataObject.getId());
+				}else{
+					orderDTO.setId(code);
+				}
 				orderDTO.setTs(sysDataObject.getTs());
 				orderDTO.setBtmname(codeClassifyVO.getBtmname());//涓氬姟绫诲瀷
 				orderDTO.setDescription("闆嗘垚璋冪敤:鏇存柊");//鏁版嵁鎻忚堪
@@ -3022,7 +3126,7 @@
 							String fullPath,boolean newCode){
 		rowDataList.stream().forEach(rowData -> {
 			ClientBusinessObject cbo=new ClientBusinessObject();
-			 DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmTypeId());
+			DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmTypeId());
 			rowData.getData().forEach((index,value)->{
 				String field = fieldIndexMap.get(index);
 				if (StringUtils.isBlank(field)) {
@@ -3665,7 +3769,8 @@
 		CodeImportResultVO resultVO = new CodeImportResultVO();
 		resultVO.setKeyAttrRuleInfo(String.format(keyRuleVO ==null?"":"鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}",
 			new String[]{trim?"鏄�":"鍚�",ignoreCase?"鏄�":"鍚�",ignoreWidth?"鏄�":"鍚�",trimAll?"鏄�":"鍚�"}));
-		resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO));
+		//resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO));
+		getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO,resultVO);
 		if(!CollectionUtils.isEmpty(resultVO.getSelfRepeatRowIndexList())){
 			//鎴戜滑绉婚櫎鏈韩閲嶅鐨勬暟鎹�
 			cboList = cboList.stream().filter(s->!resultVO.getSelfRepeatRowIndexList().contains(s.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
@@ -3824,9 +3929,10 @@
 	 * @param keyRuleVO 鍏抽敭灞炴�ф帶鍒惰鍒�
 	 * @return 閲嶅鐨勮鍙�
 	 */
-	private Set<String> getSelfRepeatRowIndex(Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap,
-											  List<ClientBusinessObject> dataList,CodeKeyAttrRepeatVO keyRuleVO){
+	private void getSelfRepeatRowIndex(Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap,
+									   List<ClientBusinessObject> dataList,CodeKeyAttrRepeatVO keyRuleVO,CodeImportResultVO resultVO){
 		Set<String> selfRepeatRowIndexList = new CopyOnWriteArraySet<>();
+		Map<String,List<String>> keyAttrOkOidTORepeatOidMap=new HashMap<>();
 		boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
 		//鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
 		boolean trim =keyRuleVO ==null?false:  VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
@@ -3835,8 +3941,10 @@
 		//蹇呴』灏嗗睘鎬ф寜鐓ч『搴忔帓搴忓ソ
 		List<CodeClassifyTemplateAttrVO> attrVOList = ketAttrMap.values().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
 		Map<String/**琛屽彿**/,String/**鍏抽敭灞炴�х殑缁勫悎鍐呭**/> rowIndexKeyStringMap = new HashMap<>();
+		Map<String/**鍏抽敭灞炴�х殑缁勫悎鍐呭**/,String/**绗竴涓叧閿睘鎬х殑鏁版嵁oid**/> okOidKeyStringMap = new HashMap<>();
 		dataList.parallelStream().forEach(cbo-> {
 			String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+			String oid=cbo.getOid();
 			StringBuilder sb = new StringBuilder();
 			for (int i = 0; i < attrVOList.size(); i++) {
 				CodeClassifyTemplateAttrVO attrVO = attrVOList.get(i);
@@ -3862,12 +3970,25 @@
 			String keyString = sb.toString();
 			if(rowIndexKeyStringMap.containsValue(keyString) && StringUtils.isNotBlank(keyString)){
 				selfRepeatRowIndexList.add(rowIndex);
+				String okOid=okOidKeyStringMap.getOrDefault(keyString,"");
+				if(StringUtils.isNotBlank(okOid)){
+					List<String>newOidList=new ArrayList<>();
+					newOidList.add(oid);
+					if(keyAttrOkOidTORepeatOidMap.containsKey(okOid)){
+						List<String> oldOidList=	keyAttrOkOidTORepeatOidMap.get(okOid);
+						newOidList.addAll(oldOidList);
+
+					}
+					keyAttrOkOidTORepeatOidMap.put(okOid,newOidList);
+				}
 			}else {
+				okOidKeyStringMap.put(sb.toString(),oid);
 				rowIndexKeyStringMap.put(rowIndex, sb.toString());
 			}
 		});
 		//鍥犱负鍙槸鍏抽敭灞炴�ч噸澶嶏紝鎵�浠ユ垜浠笉鑳介噸澶嶇殑澶氭潯閫変竴鏉℃潵鎶ラ敊
-		return selfRepeatRowIndexList;
+		resultVO.setKeyAttrRepeatRowIndexList(selfRepeatRowIndexList);
+		resultVO.setKeyAttrOkOidTORepeatOidMap(keyAttrOkOidTORepeatOidMap);
 	}
 	/**
 	 * excel鐨勬爣棰樹笂鑾峰彇瀛楁鎵�鍦ㄧ殑浣嶇疆
@@ -3901,7 +4022,7 @@
 			DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
 			for (String key:dataMap.keySet()){
 				Object value= dataMap.getOrDefault(key,"");
-				clientBusinessObject.setAttributeValue(key,value.toString());
+				clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString());
 			}
 			clientBusinessObjectList.add(clientBusinessObject);
 		});
@@ -4329,4 +4450,17 @@
 		}
 	}
 
+	/***
+	 * 鐢宠闆嗗洟缂栫爜
+	 * @param idList
+	 * @param btmName
+	 */
+	private void sendApplyGroupcode(List<String> idList,String btmName,String operationType){
+		String oids=VciBaseUtil.array2String(idList.toArray(new String[]{}));
+		if(operationType.equals(sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue())) {
+			mdmInterJtClient.applyGroupCode(oids,btmName);
+		}else if(operationType.equals(sysIntegrationPushTypeEnum.ACCPET_EDITCODE)){
+			mdmInterJtClient.receiveEditApply(oids,btmName);
+		}
+	}
 }

--
Gitblit v1.9.3