From bac99eb3983ed78043e6326ae5fa1f6ff336e4dd Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期二, 31 十月 2023 16:30:41 +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 | 138 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 105 insertions(+), 33 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 0a3fb50..68a43ff 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; @@ -385,14 +383,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()); @@ -417,23 +436,30 @@ //9.鐢熸垚缂栫爜鐨勪俊鎭� // ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()); BaseModel cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmTypeId()); -// //榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐� -// //璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭 + //榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐� + //璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭 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 +515,6 @@ }); } } - /** * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊� @@ -727,7 +752,11 @@ } final String[] sql = {"select * 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())) { //淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸� @@ -916,7 +945,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 鍏堝啓鍥哄畾锛屽悗闈㈢敓鍛藉懆鏈熷ソ浜嗗湪缂栧啓 @@ -989,22 +1019,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)) { @@ -1390,7 +1420,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<>(); @@ -1939,7 +1970,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"); @@ -1974,7 +2005,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")) { //璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓� @@ -2059,7 +2090,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)) { @@ -2355,9 +2386,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)); } /** @@ -2395,7 +2429,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)) { @@ -2407,10 +2441,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("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } @@ -2724,7 +2758,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)); @@ -2876,7 +2910,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(); @@ -3515,6 +3549,42 @@ }); return commonsMapper.insertByBaseModel(listR.getData().get(0).getTableName(), maps.get(0), maps); } + /** + * 浼犲叆涓氬姟绫诲瀷浠ュ強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闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖 @@ -3733,7 +3803,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); @@ -4034,9 +4105,11 @@ 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())); @@ -4058,7 +4131,6 @@ toBo.getData().putAll(fromBo.getData()); toBo.getData().put("CHECKINBY", String.valueOf(AuthUtil.getUser().getUserId())); return toBo; - } /** -- Gitblit v1.9.3