From 4136c16e52716975ff05e3b066f6719c5b7e2bd8 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 15 十一月 2023 16:10:01 +0800
Subject: [PATCH] 增加是否参与关键属性校验相关属性

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java |   67 +++++++++++++++++++++++++--------
 1 files changed, 51 insertions(+), 16 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index e594481..3d56800 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -69,7 +69,11 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.Cache;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.support.DefaultTransactionDefinition;
+import org.springframework.transaction.support.TransactionTemplate;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
@@ -99,10 +103,22 @@
 public class MdmEngineServiceImpl implements MdmEngineService {
 
 	/**
+	 * 澶氱嚎绋嬫柟寮忔壒閲忔墽琛屽紑鍚嚎绋嬫睜鐨勬�绘暟
+	 */
+	@Value("${batchadd.thread_num:10}")
+	private Integer THREAD_NUM;
+
+	/**
 	 * 鍗曟sql鐨勬渶澶氬鍏ユ暟閲�
 	 */
-	@Value("${import.maxNum}")
+	@Value("${batchadd.single_maxnum:200}")
 	private Integer MAX_IMPORT_NUM;
+
+	/**
+	 * 鏄惁寮�鍚绾跨▼鏂瑰紡瀵煎叆鍘嗗彶鏁版嵁
+	 */
+	@Value("${batchadd.is_thread_import:false}")
+	private boolean IS_THREAD_IMPORT;
 
     /**
      * 妯℃澘鐨勬湇鍔�
@@ -153,13 +169,11 @@
     @Autowired
     private FormulaServiceImpl formulaService;
 
-
     /**
      * 瀵筼md涓彁渚涚殑feign鎺ュ彛杩涜璋冪敤锛屼互鍙婂鐞嗙浉鍏抽�昏緫
      */
     @Autowired
     ICodeReferBtmTypeService codeReferBtmTypeService;
-
 
     /**
      * 鐩镐技椤规煡璇㈣鍒�
@@ -417,7 +431,7 @@
      * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
      * @return 杩斿洖缂栫爜鐨勫唴瀹�
      */
-    private String addSaveCode(CodeOrderDTO orderDTO,boolean authUser) throws Exception {
+	private String addSaveCode(CodeOrderDTO orderDTO, boolean authUser) throws Exception {
         VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭",
                 orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�");
         CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
@@ -980,7 +994,6 @@
             logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�", e);
         }
     }
-
 
     /**
      * 鍒濆鍖栦笟鍔$被鍨�
@@ -2760,6 +2773,7 @@
         cbo.setName(orderDTO.getName());
         //鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
         cbo.setCreateTime(cbo.getCreateTime());
+		cbo.setCreator(cbo.getCreator());
         cbo.setLastModifyTime(cbo.getLastModifyTime());
 		cbo.setTenantId(AuthUtil.getTenantId());
 		oldCbo.setLastV("0");
@@ -3530,7 +3544,6 @@
      * @return 澶勭悊鎴愬姛鏁版嵁鏉℃暟
      */
     @Override
-	@Transactional(rollbackFor = Exception.class)
     public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) {
         //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
         R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
@@ -3555,27 +3568,33 @@
                 throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.toString());
             }
         });
-		try {
-			bactchExecuteInsert(listR.getData().get(0).getTableName(),maps);
-		}catch (Exception e){
-			throw new ServiceException("鍒嗘壒鎵цinsert璇彞鎶ラ敊:"+e.getMessage());
+		// 鏄惁寮�鍚绾跨▼鎵ц鎻掑叆璇彞
+		if(IS_THREAD_IMPORT){
+			try {
+				threadBactchExecuteInsert(listR.getData().get(0).getTableName(),maps);
+			}catch (Exception e){
+				throw new ServiceException("鍒嗘壒鎵цinsert璇彞鎶ラ敊:"+e.getMessage());
+			}
+		}else {
+			bacthExcecuteInsert(listR.getData().get(0).getTableName(),maps);
 		}
+
         return maps.size();
     }
 
 	/**
-	 * 鍒嗘壒鎵цinsert璇彞
+	 * 澶氱嚎绋嬫柟寮忓垎鎵规墽琛宨nsert璇彞
 	 * @param tableName
 	 * @param maps
 	 * @throws ServiceException
 	 */
-	@Transactional(rollbackFor = Exception.class)
-	void bactchExecuteInsert(String tableName, List<Map<String, String>> maps) throws ServiceException{
-		ExecutorService executor = Executors.newFixedThreadPool(10); // 鍒涘缓涓�涓浐瀹氬ぇ灏忕殑绾跨▼姹�
+	private void threadBactchExecuteInsert(String tableName, List<Map<String, String>> maps) throws ServiceException{
+		ExecutorService executor = Executors.newFixedThreadPool(THREAD_NUM); // 鍒涘缓涓�涓浐瀹氬ぇ灏忕殑绾跨▼姹�
 		List<Map<String, String>> threadSafeMaps = new CopyOnWriteArrayList<>(maps);
+
 		for (int i = 0; i < threadSafeMaps.size(); i += MAX_IMPORT_NUM) {
 			final int startIndex = i;
-			final int endIndex = Math.min(i + MAX_IMPORT_NUM, maps.size());
+			final int endIndex = Math.min(i + MAX_IMPORT_NUM, threadSafeMaps.size());
 
 			executor.execute(() -> {
 				List<Map<String, String>> subList = threadSafeMaps.subList(startIndex, endIndex);
@@ -3583,6 +3602,7 @@
 				commonsMapper.insertByBaseModel(tableName, threadSafeMaps.get(0), subList);
 			});
 		}
+
 		// 鍏抽棴绾跨▼姹�
 		executor.shutdown();
 		try {
@@ -3591,6 +3611,21 @@
 		} catch (InterruptedException e) {
 			// 澶勭悊寮傚父
 			throw new ServiceException("澶氱嚎绋嬫柟寮忔墽琛屾壒閲忔彃鍏ユ椂浜х敓閿欒:"+e.getMessage());
+		}
+	}
+
+	/**
+	 * 鍗曠嚎绋嬫柟寮忓垎鎵规墽琛�
+	 * @param tableName
+	 * @param maps
+	 */
+	private void bacthExcecuteInsert(String tableName, List<Map<String, String>> maps){
+		for (int i = 0; i < maps.size(); i += MAX_IMPORT_NUM) {
+			final int startIndex = i;
+			final int endIndex = Math.min(i + MAX_IMPORT_NUM, maps.size());
+			List<Map<String, String>> subList = maps.subList(startIndex, endIndex);
+			// 璋冪敤鎻掑叆鏁版嵁搴撶殑鏂规硶
+			commonsMapper.insertByBaseModel(tableName, maps.get(0), subList);
 		}
 	}
 
@@ -4153,7 +4188,7 @@
         toBo.setLastV(String.valueOf(1));
 		// 鏁版嵁鍗囩増涓嶉渶瑕侀噸鏂拌缃垱寤轰汉锛屽彧瀵规渶鍚庝慨鏀逛汉鍋氭洿鏂板氨鍙互浜�
         //toBo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
-        toBo.setCreateTime(new Date());
+        toBo.setCreateTime(fromBo.getCreateTime());
         // toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
 		toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
         toBo.setLastModifyTime(new Date());

--
Gitblit v1.9.3