From 62ca1dae28650985ef17880ebf419d6be697d44e Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期一, 13 十一月 2023 16:19:01 +0800
Subject: [PATCH] 日期整合代码
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 280 ++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 222 insertions(+), 58 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 0befb67..a515f25 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
@@ -16,7 +16,6 @@
import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
-import com.vci.ubcs.code.util.ClientBusinessObject;
import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
import com.vci.ubcs.code.vo.CodeReferConfigVO;
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
@@ -57,7 +56,6 @@
import com.vci.ubcs.system.user.feign.IUserClient;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import oracle.sql.TIMESTAMP;
-import org.aspectj.apache.bcel.classfile.Code;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
@@ -68,9 +66,14 @@
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springframework.beans.factory.annotation.Autowired;
+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;
@@ -83,7 +86,7 @@
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -99,12 +102,29 @@
@Service
public class MdmEngineServiceImpl implements MdmEngineService {
+ /**
+ * 澶氱嚎绋嬫柟寮忔壒閲忔墽琛屽紑鍚嚎绋嬫睜鐨勬�绘暟
+ */
+ @Value("${batchadd.thread_num:10}")
+ private Integer THREAD_NUM;
+
+ /**
+ * 鍗曟sql鐨勬渶澶氬鍏ユ暟閲�
+ */
+ @Value("${batchadd.single_maxnum:200}")
+ private Integer MAX_IMPORT_NUM;
+
+ /**
+ * 鏄惁寮�鍚绾跨▼鏂瑰紡瀵煎叆鍘嗗彶鏁版嵁
+ */
+ @Value("${batchadd.is_thread_import:false}")
+ private boolean IS_THREAD_IMPORT;
/**
* 妯℃澘鐨勬湇鍔�
*/
@Resource
- private CodeClstemplateServiceImpl templateService;
+ private ICodeClstemplateService templateService;
/**
* 鐢熸垚缂栫爜鐨勬湇鍔�
@@ -137,6 +157,11 @@
*/
@Resource
IEnumClient enumClient;
+ /**
+ * 鐗堟湰瑙勫垯鏈嶅姟
+ */
+ @Resource
+ private IRevisionRuleClient revisionRuleClient;
/**
* 鍏紡鐨勬湇鍔�
@@ -144,13 +169,11 @@
@Autowired
private FormulaServiceImpl formulaService;
-
/**
* 瀵筼md涓彁渚涚殑feign鎺ュ彛杩涜璋冪敤锛屼互鍙婂鐞嗙浉鍏抽�昏緫
*/
@Autowired
ICodeReferBtmTypeService codeReferBtmTypeService;
-
/**
* 鐩镐技椤规煡璇㈣鍒�
@@ -174,17 +197,12 @@
*/
@Autowired
private IBtmTypeClient btmTypeClient;
- /**
- * 鐗堟湰瑙勫垯鐨勬湇鍔�
- */
- @Resource
- private IRevisionRuleClient revisionRuleClient;
-//
+
/**
* 閫氱敤鏌ヨ
*/
@Resource
- CommonsMapper commonsMapper;
+ private CommonsMapper commonsMapper;
/**
* 缂栫爜瑙勫垯鐨勬湇鍔�
@@ -385,14 +403,35 @@
codeAllCodeService.updateBatchById(codeCbos);
}
+ /**
+ * 鐢宠鍗曚竴缂栫爜
+ *
+ * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
+ * @return 杩斿洖缂栫爜鐨勫唴瀹�
+ */
+ @Override
+ public String addSaveCode(CodeOrderDTO orderDTO) throws Exception {
+ return addSaveCode(orderDTO,true);
+ }
+
+ /***
+ * 闆嗘垚鍙彉鐮佹鐢宠鎺ュ彛
+ * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public String addSaveCodeNotauthUser(CodeOrderDTO orderDTO, boolean authUser) throws Exception {
+ return addSaveCode(orderDTO,authUser);
+ }
+
/**
* 鐢宠鍗曚竴缂栫爜
*
* @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
* @return 杩斿洖缂栫爜鐨勫唴瀹�
*/
- @Override
- public String addSaveCode(CodeOrderDTO orderDTO) 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());
@@ -414,26 +453,33 @@
checkEnumOnOrder(templateVO, orderDTO);
//8.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
switchDateAttrOnOrder(templateVO, orderDTO);
- //9.鐢熸垚缂栫爜鐨勪俊鎭�
-// ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
- BaseModel cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmTypeId());
-// //榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐�
-// //璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭
+ //9.鐢熸垚缂栫爜鐨勪俊鎭� 锛屽垵濮嬪寲涓氬姟绫诲瀷锛氱紦瀛樺厛鍙栨秷锛屽洜涓虹増鏈鍒欎細鍑虹幇鍙樺姩鐨勬儏鍐垫墍浠ユ棤娉曚娇鐢ㄧ紦瀛�
+ // BaseModel cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmTypeId());
+ BaseModel cbo = createBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId().trim().toLowerCase());
+ //榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐�
+ //璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭
copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, false);
cbo.setOid(VciBaseUtil.getPk());
cbo.setRevisionOid(VciBaseUtil.getPk());
cbo.setNameOid(VciBaseUtil.getPk());
cbo.setCreateTime(new Date());
cbo.setLastModifyTime(new Date());
- cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
- cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
+ //cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));銆�
+ if(authUser) {
+ // 瑕佹眰鏄剧ず璐﹀彿锛屾墍浠ュ仛浜嗘洿鏀�
+ cbo.setCreator(String.valueOf(AuthUtil.getUser().getAccount()));
+ cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
+ }else{
+ cbo.setCreator(orderDTO.getCreator());
+ cbo.setLastModifier(orderDTO.getLastModifier());
+ }
cbo.setTenantId(AuthUtil.getTenantId());
if(StringUtils.isNotBlank(orderDTO.getLcStatus())||StringUtils.isNotBlank(orderDTO.getData().get("lcStatus"))){
cbo.setLcStatus(StringUtils.isNotBlank(orderDTO.getLcStatus())?orderDTO.getLcStatus():orderDTO.getData().get("lcStatus"));
}
-// //TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁�
+ //TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁�
cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName());
-// //end -- modify by lihang @20220407
+ //end -- modify by lihang @20220407
List<BaseModel> cboList = new ArrayList<>();
//澶囨敞
@@ -489,7 +535,6 @@
});
}
}
-
/**
* 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊�
@@ -920,7 +965,8 @@
data.put(cbo.getData().containsKey(CODE_FULL_PATH_FILED.toUpperCase())?CODE_FULL_PATH_FILED.toUpperCase():CODE_FULL_PATH_FILED, fullPath);
cbo.getData().putAll(data);
cbo.setLastModifyTime(new Date());
- cbo.setLastModifier(AuthUtil.getUser().getUserName());
+ //cbo.setLastModifier(AuthUtil.getUser().getUserName());
+ cbo.setLastModifier(AuthUtil.getUser().getAccount());
cbo.setTs(new Date());
if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
//TODO 鍏堝啓鍥哄畾锛屽悗闈㈢敓鍛藉懆鏈熷ソ浜嗗湪缂栧啓
@@ -993,22 +1039,22 @@
List<CodeClassifyTemplateAttrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryIdentification())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(selectAttrVOs)) {
-// SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
selectAttrVOs.parallelStream().forEach(attrVO -> {
List<String> valuesList = new ArrayList<>();
cboList.parallelStream().forEach(cbo -> {
-// String value = cbo.get.getAttributeValue(attrVO.getId());
+ //String value = cbo.get.getAttributeValue(attrVO.getId());
//灏哹ean杞负map,mybatis缁熶竴澶勭悊
Map<String, String> map = null;
-// baseModels.stream().forEach(model-> {
+ //baseModels.stream().forEach(model-> {
try {
map = VciBaseUtil.convertBean2Map(cbo,null);
} catch (Exception e) {
throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage());
}
-// });
+ //});
String value = map.get(attrVO.getId());
if (StringUtils.isNotBlank(value)) {
@@ -1394,7 +1440,8 @@
//set缁欒〃鏍奸厤缃睘鎬�
uiFormReferVO.setTableConfig(uiTableConfigVO);
//瀛楁鍚嶄笉涓�鑷达紝闇�瑕佹墜鍔╯et
- uiFormReferVO.setMuti(Func.toBoolean(codeReferConfig.getIsMuti()));
+
+ uiFormReferVO.setMuti(StringUtils.isBlank(codeReferConfig.getIsMuti())?false:true);
uiFormReferVO.setInitSort(new UIFieldSortVO(codeReferConfig.getSortField(),codeReferConfig.getSortType()));
// 绛涢�夋潯浠�
HashMap<String, String> whereMap = new HashMap<>();
@@ -1536,7 +1583,6 @@
conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue);
}
}
-
/**
* 鏌ヨ缂栫爜鏁版嵁鐨勫垪琛�
@@ -1943,7 +1989,7 @@
//璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "'%" + value + "%'" + SPACE;
} else {
- return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "'%" + getStringValueInWhere(field, value, attrVOMap) + "%'" + SPACE;
+ return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "'%" + value + "%'" + SPACE;
}
} else if (key.endsWith("_notequal")) {
String field = UBCSSqlKeyword.getColumn(key, "_notequal");
@@ -1978,7 +2024,7 @@
if (referFieldMap.containsKey(field)) {
return referFieldMap.get(field) + SPACE + " >= " + value + SPACE;
} else {
- return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(value, field, attrVOMap) + SPACE;
+ return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(field, value, attrVOMap) + SPACE;
}
} else if (key.endsWith("_le")) {
//璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓�
@@ -2063,7 +2109,7 @@
if (referFieldMap.containsKey(field)) {
return referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE;
} else {
- return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE;
+ return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE;
}
} else {
// if (referFieldMap.containsKey(key)) {
@@ -2359,9 +2405,12 @@
}
// cbo.getData().putAll(orderDTO.getData());
cbo.setLastModifyTime(new Date());
- cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
- updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), Collections.singletonList(cbo));
- batchSaveSelectChar(templateVO, Collections.singletonList(cbo));
+ cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
+ R r = updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), Collections.singletonList(cbo));
+ if(!r.isSuccess()){
+ throw new ServiceException(r.getMsg());
+ }
+ batchSaveSelectChar(templateVO, Collections.singletonList(cbo));
}
/**
@@ -2399,7 +2448,7 @@
}
//鍙兘鍒犻櫎鑷繁鍒涘缓鐨勬暟鎹�
- String userId = String.valueOf(AuthUtil.getUser().getUserId());
+ String userId = String.valueOf(AuthUtil.getUser().getAccount());
for (BaseModel clientBusinessObject : cboList) {
String creator = clientBusinessObject.getCreator();
if (!userId.equalsIgnoreCase(creator)) {
@@ -2411,10 +2460,10 @@
// batchCBO.getDeleteCbos().addAll(cboList);
// WebUtil.setPersistence(false);
// batchCBO.copyFromOther(
- productCodeService.recycleCode(classifyFullInfo.getCurrentClassifyVO().getBtmTypeId(), deleteBatchDTO.getOidList());
+ productCodeService.recycleCode(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), deleteBatchDTO.getOidList());
// baseMapper.deleteBatchIds(cboList);
//浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
- R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getCurrentClassifyVO().getBtmTypeId()));
+ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId()));
if (!listR.isSuccess() || listR.getData().size() == 0) {
throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
}
@@ -2728,7 +2777,7 @@
cbo.setLastModifyTime(cbo.getLastModifyTime());
cbo.setTenantId(AuthUtil.getTenantId());
oldCbo.setLastV("0");
- oldCbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
+ oldCbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
oldCbo.setLastModifyTime(new Date());
try {
updateBatchByBaseModel(oldCbo.getBtmname(), Collections.singletonList(oldCbo));
@@ -2880,7 +2929,7 @@
}
List<CodeClassifyVO> parentClassifyVOList = fullInfoBO.getParentClassifyVOs().stream().sorted((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel())).collect(Collectors.toList());
//浠庢渶楂樼殑level寮�濮嬭幏鍙�
- for (int i = 0; i < parentClassifyVOList.size(); i++) {
+ for (int i = parentClassifyVOList.size()-1; i >= 0; i--) {
CodeClassifyVO record = parentClassifyVOList.get(i);
if (StringUtils.isNotBlank(record.getCodeRuleOid())) {
codeRuleOid = record.getCodeRuleOid();
@@ -2934,7 +2983,7 @@
wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true);
R<List<Map<String, String>>> result = R.data(Collections.singletonList(cbo));
//鎴戜滑瑕佺湅鏄惁涓嶆槸鍗囩増鐨勶紝鍗囩増鐨勮瘽锛岄渶瑕佸姣斾笉鐩哥瓑鐨勫睘鎬�
- String copy = cbo.get("copyfromversion");
+/* String copy = cbo.get("copyfromversion");
// if (StringUtils.isBlank(copy)) {
// copy = cbo.getAttributeValue("copyfromversion");
// }
@@ -2953,11 +3002,12 @@
Map<String, String> difFieldMap = new HashMap<>();
Map<String, String> finalOldData = oldData;
cbo.forEach((key, value) -> {
- String oldValue = finalOldData.getOrDefault(key, "");
- if (value == null) {
+ // 杩欏効oldmap涓殑鍏ㄦ槸澶у啓锛岃�宑bo涓殑鍏ㄦ槸灏忓啓鎵�浠ヤ細鎷夸笉鍒板彧锛岃繖鍎跨洿鎺ュ鐞嗘垚灏忓啓鎷夸笉鍒板氨鐢ㄥぇ鍐欐嬁
+ String oldValue = String.valueOf(finalOldData.getOrDefault(key.toUpperCase(Locale.ROOT), finalOldData.getOrDefault(key, "")));
+ if (value == null || value == "null") {
value = "";
}
- if (oldValue == null) {
+ if (oldValue == null || oldValue == "null") {
oldValue = "";
}
if (!value.equalsIgnoreCase(oldValue)) {
@@ -2968,7 +3018,7 @@
difFieldList.add(difFieldMap);
result.setData(difFieldList);
}
- }
+ }*/
return result;
}
@@ -3326,7 +3376,6 @@
return getTableDefineByTemplateVO(templateService.getObjectHasAttrByOid(templateOid));
}
-
/**
* 浣跨敤妯℃澘鏄剧ず瀵硅薄杞崲涓鸿〃鏍肩殑淇℃伅锛堝寘鍚墿灞曠殑鎸夐挳锛�
*
@@ -3423,6 +3472,7 @@
}
return uiInfoVO;
}
+
@Override
public MdmUIInfoVO getFlowUIInfoByClassifyOid(String codeClassifyOid, String functionId,String templateId,String taskId,String modelKey){
// MdmUIInfoVO uiInfoVO = getTableDefineByClassifyOid_v2(codeClassifyOid,templateId,taskId,modelKey);
@@ -3510,6 +3560,7 @@
}).collect(Collectors.toSet());
//灏哹ean杞负map,mybatis缁熶竴澶勭悊
List<Map<String, String>> maps = new ArrayList<>();
+
baseModels.stream().forEach(model -> {
try {
maps.add(VciBaseUtil.convertBean2Map(model,existFild));
@@ -3517,8 +3568,103 @@
throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.toString());
}
});
- return commonsMapper.insertByBaseModel(listR.getData().get(0).getTableName(), maps.get(0), maps);
+ // 鏄惁寮�鍚绾跨▼鎵ц鎻掑叆璇彞
+ 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();
}
+
+ /**
+ * 澶氱嚎绋嬫柟寮忓垎鎵规墽琛宨nsert璇彞
+ * @param tableName
+ * @param maps
+ * @throws ServiceException
+ */
+ 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, threadSafeMaps.size());
+
+ executor.execute(() -> {
+ List<Map<String, String>> subList = threadSafeMaps.subList(startIndex, endIndex);
+ // 璋冪敤鎻掑叆鏁版嵁搴撶殑鏂规硶
+ commonsMapper.insertByBaseModel(tableName, threadSafeMaps.get(0), subList);
+ });
+ }
+
+ // 鍏抽棴绾跨▼姹�
+ executor.shutdown();
+ try {
+ // 绛夊緟鎵�鏈変换鍔℃墽琛屽畬鎴�
+ executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
+ } 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);
+ }
+ }
+
+ /**
+ * 浼犲叆涓氬姟绫诲瀷浠ュ強ID鏌ヨ涓氬姟琛ㄦ暟鎹槸鍚﹂噸澶�
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param ids 澶勭悊鏁版嵁
+ * @return 鏌ヨ鍒版暟鎹殑鎬绘暟
+ */
+ @Override
+ public Integer selectIdsCounts(String btmType, List<String> ids) {
+ //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
+ if (!listR.isSuccess() || listR.getData().size() == 0) {
+ throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+ }
+ return commonsMapper.queryCountBySql("select count(*) from " +
+ listR.getData().get(0).getTableName() + " where id in ("+ ids.stream().map(s -> "'" + s + "'").collect(Collectors.joining(",")) +")");
+ }
+
+ /**
+ * 浼犲叆涓氬姟绫诲瀷浠ュ強ID銆丱ID鏌ヨ涓氬姟琛ㄦ暟鎹槸鍚﹂噸澶�
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param id 澶勭悊鏁版嵁id
+ * @param oid 澶勭悊鏁版嵁oid
+ * @return 鏌ヨ鍒版暟鎹殑鎬绘暟
+ */
+ @Override
+ public Integer selectIdAndOidCounts(String btmType, String id, String oid) {
+ //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
+ if (!listR.isSuccess() || listR.getData().size() == 0) {
+ throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+ }
+ return commonsMapper.queryCountBySql("select count(*) from " +
+ listR.getData().get(0).getTableName() + " where id ='" + id + "' and oid <> '" + oid + "'");
+ }
/**
* 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖
@@ -3737,7 +3883,8 @@
if(cboMap.containsKey(oid)){
CodeAllCode codeAllCode= cboMap.get(oid);
codeAllCode.setId(baseModel.getId());
- codeAllCode.setLastModifier(AuthUtil.getUser().getUserName());
+ // codeAllCode.setLastModifier(AuthUtil.getUser().getUserName());
+ codeAllCode.setLastModifier(AuthUtil.getUser().getAccount());
codeAllCode.setLastModifyTime(new Date());
codeAllCode.setLcStatus(baseModel.getLcStatus());
newCodeAllCodeList.add(codeAllCode);
@@ -4035,21 +4182,39 @@
toBo.setNameOid(fromBo.getNameOid());
toBo.setBtmname(fromBo.getBtmname());
toBo.setLastR(String.valueOf(1));
+ // 鍗囩増灏咶irstR淇敼涓�0
toBo.setFirstR(String.valueOf(0));
toBo.setFirstV(String.valueOf(1));
toBo.setLastV(String.valueOf(1));
- toBo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
+ // 鏁版嵁鍗囩増涓嶉渶瑕侀噸鏂拌缃垱寤轰汉锛屽彧瀵规渶鍚庝慨鏀逛汉鍋氭洿鏂板氨鍙互浜�
+ //toBo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
toBo.setCreateTime(new Date());
- toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
+ // toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
+ toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
toBo.setLastModifyTime(new Date());
toBo.setRevisionRule(fromBo.getRevisionRule());
- toBo.setVersionRule(fromBo.getVersionRule());R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(fromBo.getBtmname()));
+ toBo.setVersionRule(fromBo.getVersionRule());
+ //鏌ヨ涓氬姟绫诲瀷淇℃伅锛屽彲浠ヨ幏鍙栧埌鐗堟湰瑙勫垯淇℃伅锛坮evisionRuleId锛�
+ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(fromBo.getBtmname()));
if (!listR.isSuccess() || listR.getData().size() == 0) {
throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
}
- Map<String, Object> nextRevision = commonsMapper.getNextRevision(listR.getData().get(0).getTableName(), fromBo.getNameOid());
- toBo.setRevisionSeq(Integer.parseInt(nextRevision.get("REVISIONSEQ").toString()));
- toBo.setRevisionValue(nextRevision.get("REVISIONVAL").toString());
+ //Map<String, Object> nextRevision = commonsMapper.getNextRevision(listR.getData().get(0).getTableName(), fromBo.getNameOid());
+ /*
+ TODO:杩欐槸涓�涓緟鍚庢湡瀹屽杽鐨勫姛鑳斤紝鐩墠瀹炵幇鏂瑰紡鏄紝鍏堟煡璇㈠嚭褰撳墠鏁版嵁鐨勫ぇ鐗堟湰瑙勫垯锛�
+ 鐒跺悗鍐嶆煡璇笟鍔¤〃浣跨敤鐨勮鍒欑殑姝ラ暱鏄灏戠劧鍚庤绠楀嚭璇ュ崌鐗堜负澶氬皯
+ */
+ Map<String, Object> nextRevision = commonsMapper.getCurrentRevision(listR.getData().get(0).getTableName(), fromBo.getNameOid());
+ R<RevisionRuleVO> revisionRuleVOR = revisionRuleClient.selectById(listR.getData().get(0).getRevisionRuleId());
+ String revisionval = nextRevision.get("REVISIONVAL").toString();
+ // 鏈煡璇㈠埌鐗堟湰瑙勫垯锛岄粯璁ょ洿鎺ョ粰澶х増鏈姞涓�
+ if(!revisionRuleVOR.isSuccess() || Func.isEmpty(revisionRuleVOR.getData())){
+ revisionval = String.valueOf((Integer.parseInt(revisionval)+1));
+ }else {
+ revisionval = String.valueOf(Integer.parseInt(revisionval)+revisionRuleVOR.getData().getSerialStep());
+ }
+ toBo.setRevisionValue(revisionval);
+ toBo.setRevisionSeq(Integer.parseInt(nextRevision.get("REVISIONSEQ").toString()));
toBo.setVersionSeq(Integer.valueOf(nextRevision.get("VERSIONSEQ").toString()));
toBo.setVersionValue(nextRevision.get("VERSIONVAL").toString());
toBo.setLctid(fromBo.getLctid());
@@ -4062,7 +4227,6 @@
toBo.getData().putAll(fromBo.getData());
toBo.getData().put("CHECKINBY", String.valueOf(AuthUtil.getUser().getUserId()));
return toBo;
-
}
/**
--
Gitblit v1.9.3