From 111330b2dd0bccc176ab9c6324a6ed01d5bc0e93 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期四, 12 十月 2023 09:48:03 +0800
Subject: [PATCH] 历史导入编码最大流水值不正确问题修复

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java |   62 +++++++++++++++++++++----------
 1 files changed, 42 insertions(+), 20 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 cb60e19..ac1c84c 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
@@ -179,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);
@@ -495,7 +495,6 @@
 		return text;
 	}
 
-
 	/**
 	 * 鎵归噺鐢宠缂栫爜鏁版嵁
 	 *
@@ -538,7 +537,6 @@
 //		return null;
 		return codeImProtRusultVO;
 	}
-
 
 	/***
 	 * 浠庨《灞傛壒閲忕敵璇峰鍏ユ柟娉�
@@ -645,7 +643,6 @@
 
 			});
 
-
 			//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
 			//濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
 			//2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
@@ -719,10 +716,8 @@
 			createRedisDatas(uuid + "-ok",codeImprotDataVOS, newErrorMap,true);
 
 		});
+
 		//寰�鐗╁搧鑺傜偣涓婂姞妯℃澘
-
-
-
 		List<String> needRowIndexList=new ArrayList<>();
 		CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
 		if(errorMap.size()>0) {
@@ -792,6 +787,7 @@
 		String uuid=VciBaseUtil.getPk();
 		boolean isCreateUUid=false;
 		boolean isExport=false;
+		long start = System.currentTimeMillis();
 		for(int i=0;i<sheetDataSetList.size()-1;i++) {
 			if (CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(i).getRowData())
 				|| sheetDataSetList.get(i).getRowData().size() < 1) {
@@ -809,7 +805,6 @@
 			//     5.3 浼佷笟缂栫爜鐨勯暱搴︼紝鍜岀紪鐮佽鍒欑殑闀垮害瑕佸搴斾笂
 			//     5.4 鑾峰彇娴佹按鐮佹鐨勫�硷紝鍘婚櫎濉厖鐨勫瓧绗︼紝鐪嬫祦姘村彿鏄灏戯紝鐒跺悗灏嗘祦姘村彿鍜岀幇鍦ㄧ殑鏈�澶ф祦姘村彿鍒ゆ柇锛屽皬浜庡氨鐩存帴褰曞叆锛屽ぇ浜庡垯淇敼鏈�澶ф祦姘村彿
 			//     5.5 瀛樺偍浼佷笟缂栫爜鍒癮llcode涓�
-
 			//鏌ヨ鍒嗙被鍜屾ā鏉�
 			CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
 
@@ -944,7 +939,7 @@
 			ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
 				List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
 				List<ClientBusinessObject> thisCbos = cboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
-//鎴戜滑闇�瑕佸厛鏌ヨ涓�涓嬶紝鍐呭鏄惁宸茬粡瀛樺湪
+				//鎴戜滑闇�瑕佸厛鏌ヨ涓�涓嬶紝鍐呭鏄惁宸茬粡瀛樺湪
 				if(!CollectionUtils.isEmpty(thisCbos)){
 					List<String> existIds = new ArrayList<>();
 					VciBaseUtil.switchCollectionForOracleIn(thisCbos).stream().forEach(cbos -> {
@@ -1043,6 +1038,7 @@
 
 					if (!CollectionUtils.isEmpty(thisCbos)) {
 						try {
+							// TODO 澶氱嚎绋嬫祦闂
 							productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList);
 						} catch (Throwable e) {
 							log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
@@ -1061,6 +1057,8 @@
 				engineService.batchSaveSelectChar(templateVO, dataCBOIdList);
 			}
 		}
+		long end = System.currentTimeMillis();
+		//log.info("=============for鎵ц鏃堕棿================="+String.valueOf((end-start)/1000));
 		String excelFileName="";
 		if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) {
 			excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
@@ -1086,6 +1084,7 @@
 
 		return codeImProtRusultVO;
 	}
+
 	/*private void converBaseModels(List<ClientBusinessObject> clientBusinessObjects,List<BaseModel>dataCBOList){
 		clientBusinessObjects.stream().forEach(clientBusinessObject -> {
 			BaseModel baseModel=new BaseModel();
@@ -1099,6 +1098,7 @@
 		});
 
 	}*/
+
 	/***
 	 * 浠巈xecl閲屾瀯寤哄璞�
 	 * @param rowDataList
@@ -2327,13 +2327,19 @@
 		sb.append(" select * from ");
 		sb.append(tableName);
 		sb.append(" where 1=1 ");
+		sb.append(" and lastr=1 and lastv=1" );
 		if(isCodeOrGroupCode) {
-			sb.append(" and groupcode in (");
+			sb.append(" and ( groupcode in (");
+			sb.append(VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])));
+			sb.append(")");
+			sb.append(" or id in (");
+			sb.append(VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])));
+			sb.append("))");
 		}else{
 			sb.append(" and id in (");
+			sb.append(VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])));
+			sb.append(")");
 		}
-		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);
@@ -2423,7 +2429,7 @@
 					List<CodeAllCode>newCodeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCreateCodeOid, cbo.getOid()));
 					log.info("codeCbos size:" + newCodeAllCodeList.size());
 					if (!CollectionUtils.isEmpty(newCodeAllCodeList)) {
-						CodeAllCode codeCbo = codeAllCodeList.get(0);
+						CodeAllCode codeCbo = newCodeAllCodeList.get(0);
 						log.info("codeCbos code:" + codeCbo.getId());
 						codeCbo.setLcStatus(CodeDefaultLC.TASK_BACK.getValue());
 						codeAllCodeList.add(codeCbo);
@@ -2488,6 +2494,9 @@
 				//鏄惁璋冪敤闆嗗洟鎺ュ彛鐢宠鎺ュ彛
 				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());
 					}
@@ -2615,7 +2624,21 @@
 		//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
 
 		if (!CollectionUtils.isEmpty(conditionMap)) {
-			final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmTypeId()) + " t where 1 = 1 "};
+			String tableName="";
+			R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
+			if(r.isSuccess()) {
+				BtmTypeVO btmTypeVO = r.getData();
+				if (btmTypeVO != null) {
+					tableName = btmTypeVO.getTableName();
+
+				}
+			}
+			if (StringUtils.isBlank(tableName)) {
+				String errormsg="鏍规嵁涓氬姟绫诲瀷涓烘煡璇㈠埌鐩稿叧涓氬姟琛�";
+				errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+errormsg);
+				return;
+			}
+			final String[] sql = {"select count(*) from " + tableName + " t where 1 = 1 "};
 			conditionMap.forEach((key, value) -> {
 				if(StringUtils.isBlank(value)||value.equals(QueryOptionConstant.ISNULL)){
 					sql[0] += " and " + key + " is null ";
@@ -2835,6 +2858,9 @@
 			ClientBusinessObject sysDataObject= codeSystemObjectMap.get(code);
 			if(isCodeOrGroupCode){
 				code=sysDataObject.getAttributeValue("GROUPCODE");
+				if(StringUtils.isBlank(code)){
+					code=sysDataObject.getId();
+				}
 			}
 			CodeOrderDTO orderDTO = new CodeOrderDTO();
 			if(codeDataMap.containsKey(code)){
@@ -2843,11 +2869,7 @@
 				orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭
 				orderDTO.setOid(sysDataObject.getOid());//鏁版嵁oid
 				orderDTO.setLcStatus(rowDatas.getStatus());//鐘舵��
-				if(isCodeOrGroupCode){
-					orderDTO.setId(sysDataObject.getId());
-				}else{
-					orderDTO.setId(code);
-				}
+				orderDTO.setId(code);
 				orderDTO.setTs(sysDataObject.getTs());
 				orderDTO.setBtmname(codeClassifyVO.getBtmname());//涓氬姟绫诲瀷
 				orderDTO.setDescription("闆嗘垚璋冪敤:鏇存柊");//鏁版嵁鎻忚堪
@@ -4454,7 +4476,7 @@
 	 * @param idList
 	 * @param btmName
 	 */
-	private void sendApplyGroupcode(List<String> idList,String btmName,String operationType){
+	public 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);

--
Gitblit v1.9.3