From 1056fae380cb28ffc610d8f1de461bf9f5aec559 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 08 九月 2023 15:55:50 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 147 ++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 128 insertions(+), 19 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 da89285..eaca080 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
@@ -36,6 +36,7 @@
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.util.UBCSSqlKeyword;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.constant.RegExpConstant;
@@ -423,6 +424,9 @@
cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
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閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁�
cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName());
// //end -- modify by lihang @20220407
@@ -550,10 +554,15 @@
String value = null;
if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
- } else {
+ if(StringUtils.isBlank(value)){
+ value = orderDTO.getData().getOrDefault(attrId, "");
+ }
+ } else {
//璇存槑鏄嚜琛岄厤缃殑
//鍓嶇蹇呴』瑕佷紶閫掑皬鍐欑殑灞炴��
- value = orderDTO.getData().getOrDefault(attrId, "");
+ String orDefault = orderDTO.getData().getOrDefault(attrId, "");
+ value = Func.isBlank(orDefault) ? orderDTO.getData()
+ .getOrDefault(attrId.toUpperCase(Locale.ROOT), ""):orDefault;
}
return value;
}
@@ -659,7 +668,11 @@
}
final String[] sql = {"select count(*) from " + listR.getData().get(0).getTableName() + " 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())) {
//淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸�
@@ -680,10 +693,9 @@
/**
* 鏍¢獙鍏抽敭灞炴��
*
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param templateVO 妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
* @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
*/
+ @Override
public List<Map> checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) {
List<Map>dataList=new ArrayList<>();
CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
@@ -758,7 +770,7 @@
boolean ignoreSpace = trim || trimAll;
if (StringUtils.isBlank(value)) {
//涓虹┖鐨勬椂鍊欙紝涓嶈兘鐢≦ueryOperation.ISNULL锛屽钩鍙颁笉鐭ラ亾鍟ユ椂鍊欎笉澶勭悊杩欑浜�
- conditionMap.put("t." + attrId, "null");
+ conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL);
} else {
if (keyRuleVO != null) {
String queryKey = "";
@@ -794,8 +806,12 @@
queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'");
conditionMap.put(queryKey, queryValue);
} else {
- //涓虹┖鐨勬椂鍊欎笉浠h〃涓嶆牎楠岋紝鍙槸涓嶅幓闄ょ浉鍏崇殑淇℃伅
- conditionMap.put("t." + attrId, "'" +value+ "'");
+ if(StringUtils.isNotBlank(value)) {
+ //涓虹┖鐨勬椂鍊欎笉浠h〃涓嶆牎楠岋紝鍙槸涓嶅幓闄ょ浉鍏崇殑淇℃伅
+ conditionMap.put("t." + attrId, "'" + value + "'");
+ }else{
+ conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL);
+ }
}
}
}
@@ -935,7 +951,7 @@
return (BaseModel) valueWrapper.get();
} catch (Exception e) {
logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄", e);
- throw new VciBaseException("initBtmError", new String[]{btmName});
+ throw new ServiceException("initBtmError:"+"涓氬姟绫诲瀷锛�"+btmName+":"+e.getMessage());
}
}
@@ -1313,6 +1329,7 @@
}
fieldVO.setOptionJsMap(eventJsMap);
fieldVO.setStyle(attrVO.getTableDisplayStyle());
+ fieldVO.setTableDisplayFlag(attrVO.getTableDisplayFlag());
//鍒楄〃閲屼笉鍏佽鐩存帴缂栬緫
fieldVO.setDateFormate(attrVO.getCodeDateFormat());
return fieldVO;
@@ -1355,7 +1372,7 @@
uiFormReferVO.setTableConfig(uiTableConfigVO);
// 绛涢�夋潯浠�
HashMap<String, String> whereMap = new HashMap<>();
- if(!codeReferConfig.getCodeSrchCondConfigVOS().isEmpty()){
+ if(!CollectionUtils.isEmpty(codeReferConfig.getCodeSrchCondConfigVOS())){
codeReferConfig.getCodeSrchCondConfigVOS().stream().forEach(srch->{
whereMap.put(srch.getFilterField()+srch.getFilterType(),srch.getFilterValue());
});
@@ -2448,16 +2465,18 @@
if (conditionMap == null) {
conditionMap = new HashMap<>();
}
- //pageHelper.addDefaultDesc("createTime");
- pageHelper.addDefaultDesc("id");
+ pageHelper.addDefaultDesc("createTime");
+// pageHelper.addDefaultDesc("id");
if (!classifyService.checkHasChild(codeClassifyOid)) {
conditionMap.put("t." + CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
} else {
// conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
-
+ List<BtmTypeVO> classifyData = btmTypeClient.selectByIdCollection(Collections.singletonList(MdmBtmTypeConstant.CODE_CLASSIFY)).getData();
+ if(Func.isEmpty(classifyData)){
+ throw new ServiceException("涓氬姟绫诲瀷涓嫳鏂囧悕绉板拰鏌ヨ鏉′欢閰嶇疆涓嶄竴鑷达紝璇蜂慨鏀逛笟鍔$被鍨嬩腑鍒嗙被琛ㄨ嫳鏂囧悕绉颁负"+MdmBtmTypeConstant.CODE_CLASSIFY);
+ }
conditionMap.put("t." + CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " +
- btmTypeClient.selectByIdCollection(Collections.singletonList("classify"))
- .getData().get(0).getTableName() + " where lcstatus='" + FrameWorkDefaultValueConstant
+ classifyData.get(0).getTableName() + " where lcstatus='" + FrameWorkDefaultValueConstant
.FRAMEWORK_DATA_ENABLED + "' start with parentCodeClassifyOid = '" + codeClassifyOid +
"' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
}
@@ -2720,13 +2739,103 @@
String codeRuleOid = classifyVO.getCodeRuleOid();
if (StringUtils.isBlank(codeRuleOid)) {
//寰�涓婃壘
- CodeClassifyFullInfoBO fullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
- return getCodeRuleByClassifyFullInfo(fullInfo);
+ CodeRuleVO classifyFullInfoCodeRule = getCodeRuleByClassifyFullInfo(classifyService.getClassifyFullInfo(codeClassifyOid));
+ return toCodeValueApplyStatus(classifyFullInfoCodeRule);
}
- //鎴戜滑鏌ヨ缂栫爜瑙勫垯
- return ruleService.getObjectHasSecByOid(codeRuleOid);
+ //鏌ヨ缂栫爜瑙勫垯
+ CodeRuleVO objectHasSecByOid = ruleService.getObjectHasSecByOid(codeRuleOid);
+ return toCodeValueApplyStatus(objectHasSecByOid);
}
+ /**
+ * 缂栫爜鐢宠琛ㄥ崟锛岄殣钘忋�佸彲杈撱�佸彧璇昏浆鎹�
+ * @param codeRuleVO
+ * @return
+ */
+ private CodeRuleVO toCodeValueApplyStatus(CodeRuleVO codeRuleVO){
+ if(codeRuleVO.getSecVOList().isEmpty()){
+ return codeRuleVO;
+ }
+ // 鍙緭鐮佹绫诲瀷
+ List<String> inputTypes = Arrays.asList(
+ CodeSecTypeEnum.CODE_FIXED_SEC.getValue(),
+ CodeSecTypeEnum.CODE_VARIABLE_SEC.getValue(),
+ CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue(),
+ CodeSecTypeEnum.CODE_REFER_SEC.getValue()
+ );
+ // 鍙鐮佹绫诲瀷
+ List<String> readOnlyTypes = Arrays.asList(
+ CodeSecTypeEnum.CODE_LEVEL_SEC.getValue(),
+ CodeSecTypeEnum.CODE_ATTR_SEC.getValue(),
+ CodeSecTypeEnum.CODE_DATE_SEC.getValue()
+ );
+ // 闅愯棌鐮佹绫诲瀷
+ /*List<String> hideType = Arrays.asList(
+ CodeSecTypeEnum.CODE_SERIAL_SEC.getValue()
+ );*/
+ // 褰撳墠瑙勫垯鐨勬墍鏈夌被鍨嬬爜娈�
+ List<String> secTypeList = codeRuleVO.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.toList());
+ // 鎯呭喌涓� 鍏ㄩ儴鏄彧璇荤殑鐮佹绫诲瀷
+ boolean hasAllReadOnlyType =secTypeList.stream().allMatch(item -> readOnlyTypes.stream().anyMatch(item1-> item.equals(item1)));
+ // 鍏ㄩ儴鏄彧璇荤殑鐮佹绫诲瀷
+ if(hasAllReadOnlyType){
+ List<CodeBasicSecVO> basicSecVOS = codeRuleVO.getSecVOList().stream().map(secVO -> {
+ secVO.setCodeValueApplyStatus(3);
+ // 鏃ユ湡鐮佹璁剧疆榛樿鍊�
+ if (secVO.getSecType().equals(CodeSecTypeEnum.CODE_DATE_SEC.getValue())) {
+ try {
+ secVO.setCodeDateFormatStr(Func.format(new Date(),secVO.getCodeDateFormatStr()));
+ }catch (Exception e){
+ throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細"+e.getMessage());
+ }
+ }
+ return secVO;
+ }).collect(Collectors.toList());
+ codeRuleVO.setSecVOList(basicSecVOS);
+ return codeRuleVO;
+ }
+ // 鎯呭喌浜� 鍏ㄩ儴閮芥槸鍙緭鍏ョ被鍨嬬殑
+ boolean hasAllInputType = secTypeList.stream().allMatch(item -> inputTypes.stream().anyMatch(item1-> item.equals(item1)));
+ if(hasAllInputType){
+ List<CodeBasicSecVO> basicSecVOS = codeRuleVO.getSecVOList().stream().map(secVO -> {
+ secVO.setCodeValueApplyStatus(1);
+ // 鏃ユ湡鐮佹璁剧疆榛樿鍊�
+ if (secVO.getSecType().equals(CodeSecTypeEnum.CODE_DATE_SEC.getValue())) {
+ try {
+ secVO.setCodeDateFormatStr(Func.format(new Date(),secVO.getCodeDateFormatStr()));
+ }catch (Exception e){
+ throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細"+e.getMessage());
+ }
+ }
+ return secVO;
+ }).collect(Collectors.toList());
+ codeRuleVO.setSecVOList(basicSecVOS);
+ return codeRuleVO;
+ }
+ // 鎯呭喌涓夊寘鍚汉涓洪�夋嫨鐨勭爜娈碉紝鍙堟湁鍙绫诲瀷鐮佹鐨勶紝鎵�鏈夌爜娈甸兘瑕佹樉绀哄嚭鏉ワ紝鍙緭璁剧疆涓�1锛屽彧璇昏缃负2锛岄殣钘忚缃负3
+ List<CodeBasicSecVO> basicSecVOS = codeRuleVO.getSecVOList().stream().map(secVO -> {
+ if(inputTypes.contains(secVO.getSecType())){
+ secVO.setCodeValueApplyStatus(1);
+ }else if(readOnlyTypes.contains(secVO.getSecType())){
+ secVO.setCodeValueApplyStatus(2);
+ }else{
+ secVO.setCodeValueApplyStatus(3);
+ }
+ // 鏃ユ湡鐮佹璁剧疆榛樿鍊�
+ if (secVO.getSecType().equals(CodeSecTypeEnum.CODE_DATE_SEC.getValue())) {
+ try {
+ secVO.setCodeDateFormatStr(Func.format(new Date(),secVO.getCodeDateFormatStr()));
+ }catch (Exception e){
+ throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細"+e.getMessage());
+ }
+ }
+ return secVO;
+ }).collect(Collectors.toList());
+ codeRuleVO.setSecVOList(basicSecVOS);
+ codeRuleVO.setIsShowHideStatus(hasAllReadOnlyType ? "readOnly":(hasAllInputType ? "input":"readAndInput"));
+ return codeRuleVO;
+ }
+
/**
* 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒�
*
--
Gitblit v1.9.3