From 67b0b28fc5e4364c27362fcbf13b655a75b0315a Mon Sep 17 00:00:00 2001 From: ludc Date: 星期二, 27 六月 2023 20:12:06 +0800 Subject: [PATCH] 修改编码规则引用码段参照字段存储时json格式问题 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 715 +++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 445 insertions(+), 270 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 ca49405..c2df374 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 @@ -3,9 +3,9 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; -import com.fasterxml.jackson.databind.ObjectMapper; import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO; import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; @@ -23,11 +23,9 @@ import com.vci.ubcs.code.vo.pagemodel.UITablePageVO; import com.vci.ubcs.code.vo.pagemodel.*; import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant; -import com.vci.ubcs.omd.entity.BtmTypeAttribute; -import com.vci.ubcs.omd.feign.IAttributeClient; -import com.vci.ubcs.omd.feign.IBtmTypeClient; -import com.vci.ubcs.omd.feign.IEnumClient; -import com.vci.ubcs.omd.feign.IRevisionRuleClient; +import com.vci.ubcs.omd.cache.EnumCache; +import com.vci.ubcs.omd.feign.*; +import com.vci.ubcs.omd.utils.VciOmdUtil; import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.omd.vo.EnumVO; @@ -37,6 +35,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.UBCSSqlKeyword; import com.vci.ubcs.starter.web.constant.QueryOptionConstant; import com.vci.ubcs.starter.web.constant.RegExpConstant; import com.vci.ubcs.starter.web.enumpck.BooleanEnum; @@ -53,7 +52,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.apache.commons.collections4.MapUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.cache.utils.CacheUtil; @@ -61,6 +59,8 @@ import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringPool; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.Cache; @@ -101,8 +101,6 @@ @Resource private CodeClstemplateServiceImpl templateService; - @Resource - private IAttributeClient attributeClient; /** * 鐢熸垚缂栫爜鐨勬湇鍔� @@ -121,6 +119,11 @@ @Resource ISysClient iSysClient; /** + * 瀵嗙骇鏈嶅姟 + */ + @Resource + private IWebSecretClient secretService; + /** * 鐢ㄦ埛鏈嶅姟 */ @Resource @@ -136,6 +139,15 @@ */ @Autowired private FormulaServiceImpl formulaService; + + + /** + * 瀵筼md涓彁渚涚殑feign鎺ュ彛杩涜璋冪敤锛屼互鍙婂鐞嗙浉鍏抽�昏緫 + */ + @Autowired + ICodeReferBtmTypeService codeReferBtmTypeService; + + /** * 鐩镐技椤规煡璇㈣鍒� @@ -324,6 +336,7 @@ } return comboboxKVs; } + /** * 淇敼鐘舵�� * @@ -334,14 +347,6 @@ public void changeStatus(BaseModelDTO baseModelDTO) { VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��"); List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid()); -// List<ClientBusinessObject> cboList = boService.selectCBOByOidCollection(oids, baseModelDTO.getBtmname()); - // TODO 鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀� - QueryWrapper<BtmTypeVO> wrapper = new QueryWrapper<>(); - wrapper.eq("BTMNAME",baseModelDTO.getBtmname()); - wrapper.in("OID",oids); - // TODO 寰呭畬鍠� - //鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀� -// QueryWrapper<BtmTypeVO> wrapper = new QueryWrapper<>(); List<BaseModel> baseModels = new ArrayList<>(); baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid()); if(baseModels.size() == 0){ @@ -361,15 +366,7 @@ // 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄� if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) { R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(baseModelDTO.getBtmname())); -// String referTable = listR.getData().get(0).getTableName(); commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(),VciBaseUtil.toInSql(baseModelDTO.getOid())); - // BatchCBO batchCBO = new BatchCBO(); - // batchCBO.getDeleteCbos().addAll(cboList); - - // TODO 寰呭畬鍠� - //btmTypeClient.deleteBatchIds(cboList); - - //boService.persistenceBatch(batchCBO); } else { for (BaseModel baseModel : baseModels) { baseModel.setLcStatus(baseModelDTO.getLcStatus()); @@ -432,11 +429,11 @@ List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(),cboList); - List<String> charList = new ArrayList<>(); - for (BaseModel baseModel : cboList) { - charList.add(baseModel.getId()); - } - batchSaveSelectChar(templateVO, charList); +// List<String> charList = new ArrayList<>(); +// for (BaseModel baseModel : cboList) { +// charList.add(baseModel.getId()); +// } + batchSaveSelectChar(templateVO, cboList); return codeList.size() > 0 ? codeList.get(0) : ""; // return null; } @@ -660,7 +657,7 @@ } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) { sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'"; } - sql[0] += " and islastR = '1' and islastV = '1' "; + sql[0] += " and lastR = '1' and lastV = '1' "; // if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) { if (Integer.parseInt(commonsMapper.selectById(sql[0]).get(0)) > 0) { String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}"; @@ -846,9 +843,7 @@ } int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade())); - //鍚庣画鐪嬪瘑绾ф湇鍔℃槸鍚﹀彲鐢� -// if (secret == 0 || !secretService.checkDataSecret(secret)) { - if (secret == 0 ) { + if (secret == 0 || !secretService.checkDataSecret(secret).getData()) { Integer userSecret = VciBaseUtil.getCurrentUserSecret(); // cbo.setAttributeValue(SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret)); cbo.setSecretGrade(userSecret == null || userSecret == 0 ? UserSecretEnum.NONE.getValue() : userSecret); @@ -874,7 +869,6 @@ } try { String keyPrefix = BTM_INIT_CACHE.concat(StringPool.COLON).concat(AuthUtil.getTenantId()).concat(StringPool.COLON); -// String finalBtmName = btmName; Cache.ValueWrapper valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName))); if(valueWrapper == null){ CacheUtil.getCache(keyPrefix).put(keyPrefix.concat(String.valueOf(btmName)), createBaseModel(btmName)); @@ -885,68 +879,9 @@ logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄",e); throw new VciBaseException("initBtmError",new String[]{btmName}); } -// String userName = AuthUtil.getUser().getUserName(); -// CodeWupin wupinEntity = new CodeWupin(); -// wupinEntity.setOid(VciBaseUtil.getPk()); -//// bo.setRevisionid((new ObjectUtility()).getNewObjectID36()); -//// bo.setNameoid((new ObjectUtility()).getNewObjectID36()); -// wupinEntity.setBtmname(btmName); -// wupinEntity.setLastR(String.valueOf(1)); -// wupinEntity.setFirstR(String.valueOf(1)); -// wupinEntity.setFirstV(String.valueOf(1)); -// wupinEntity.setLastV(String.valueOf(1)); -// wupinEntity.setCreator(userName); -// wupinEntity.setCreateTime(new Date()); -// wupinEntity.setLastModifier(userName); -// wupinEntity.setLastModifyTime(new Date()); -// wupinEntity.setRevisionRule("numberversionrule"); -// wupinEntity.setVersionRule("0"); -//// if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){ -// // -//// OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid()); -// wupinEntity.setRevisionValue("1"); -//// } -// -// wupinEntity.setRevisionSeq(1); -// wupinEntity.setVersionSeq(1); -// //鎻掍釜鐐癸紝闇�瑕侀棶鍕囧摜鐗堟湰闂锛屽睍绀洪粯璁や负1 -// wupinEntity.setVersionValue("1"); -// wupinEntity.setLctid("wupinLC"); -// wupinEntity.setLcStatus("Editing"); -// wupinEntity.setId(""); -// wupinEntity.setName(""); -// wupinEntity.setDescription(""); -// wupinEntity.setOwner(userName); -// wupinEntity.setCheckinby(userName); -// wupinEntity.setCopyFromVersion(""); -// wupinEntity.setMaterialtype(1001); -// wupinEntity.setCaigouwl("true"); -// wupinEntity.setShifoupihaoguanli("true"); -// wupinEntity.setKucunwl("true"); -// wupinEntity.setXiaoshouwl("false"); -// wupinEntity.setPassing("true"); - -// this.initTypeAttributeValue(wupinEntity,btmTypeVO); -// return wupinEntity; - - -// return cbo; } - /** - * 鏄惁涓轰慨鏀瑰拷鐣ョ殑灞炴�� - * @param attrName 灞炴�х殑鍚嶅瓧 - * @return true 琛ㄧず搴旇蹇界暐 - */ - boolean checkUnAttrUnEdit(String attrName){ - return (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName) - ||"ts".equalsIgnoreCase(attrName) - || "lastmodifier".equalsIgnoreCase(attrName) - || "lastmodifytime".equalsIgnoreCase(attrName) - || "createtime".equalsIgnoreCase(attrName) - || "checkintime".equalsIgnoreCase(attrName) - ||"checkouttime".equalsIgnoreCase(attrName)); - } + /** * 淇濆瓨鍙緭鍙�夌殑淇℃伅 @@ -956,7 +891,7 @@ */ @Override public void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, /*List<ClientBusinessObject> cboList*/ - List<String> cboList) { + List<BaseModel> cboList) { if (templateVO != null && !CollectionUtils.isEmpty(cboList)) { //鏄紓姝ョ殑锛屾墍浠ョ洿鎺ュ惊鐜� List<CodeClassifyTemplateAttrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryIdentification())).collect(Collectors.toList()); @@ -964,13 +899,26 @@ if (!CollectionUtils.isEmpty(selectAttrVOs)) { // SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); selectAttrVOs.parallelStream().forEach(attrVO -> { - List<String> valuesList = cboList; -// cboList.parallelStream().forEach(cbo -> { + List<String> valuesList = new ArrayList<>(); + cboList.parallelStream().forEach(cbo -> { // String value = cbo.get.getAttributeValue(attrVO.getId()); -// if (StringUtils.isNotBlank(value)) { -// valuesList.add(value); -// } -// }); + + //灏哹ean杞负map,mybatis缁熶竴澶勭悊 + Map<String,String> map = null; + +// baseModels.stream().forEach(model-> { + try { + map = VciBaseUtil.convertBean2Map(cbo); + } catch (Exception e) { + throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); + } +// }); + + String value = map.get(attrVO.getId()); + if (StringUtils.isNotBlank(value)) { + valuesList.add(value); + } + }); if (!CollectionUtils.isEmpty(valuesList)) { for (String s : valuesList) { DictBiz dictBiz = new DictBiz(); @@ -1238,8 +1186,8 @@ fieldVO.setComboxKey(fieldVO.getField() + "_data"); } } else { -// List<KeyValue> osEnumItemVOList= enumService.getEnum(attrVO.getEnumId()); -// fieldVO.setData(osEnumItemVOList); + List<KeyValue> osEnumItemVOList= VciOmdUtil.enumsToListKeyVale(EnumCache.getList(attrVO.getEnumId())); + fieldVO.setData(osEnumItemVOList); } } //鐪嬫槸鍚︽湁鍙傜収 @@ -1710,10 +1658,10 @@ }); andCondtionMap.forEach((k, v) -> { - andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap)); + andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap,btmType)); }); orConditionMap.forEach((k, v) -> { - orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap)); + orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap,btmType)); }); } //缁勫悎璧锋潵 @@ -1741,7 +1689,7 @@ if (attrVOMap.keySet().contains("secretgrade")) { Integer userSecret = VciBaseUtil.getCurrentUserSecret(); if (userSecret == null || userSecret == 0) { -// userSecret = secretService.getMinUserSecret(); + userSecret = secretService.getMinUserSecret().getData(); } whereSql += " and ( t.secretGrade <= " + userSecret + ") "; } @@ -1785,8 +1733,149 @@ * @param attrVOMap 灞炴�х殑鏄犲皠 * @return Sql璇彞 */ - private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { - if (key.endsWith("_begin")) { + private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap,String btmType) { + if (!Func.hasEmpty(new Object[]{key,value}) && !key.endsWith("_ignore")) { + if (key.endsWith("_like")) { + String field = UBCSSqlKeyword.getColumn(key, "_like"); + if (referFieldMap.containsKey(field)) { + //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚� + return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "'%" + value + "%'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "'%" + getStringValueInWhere(field, value, attrVOMap) + "%'" + SPACE; + } + } else if (key.endsWith("_notequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_notequal"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + " != " + value + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + " != " + getStringValueInWhere(field, value, attrVOMap); + } + } else if (key.endsWith("_likeleft")) { + String field = UBCSSqlKeyword.getColumn(key, "_likeleft"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "%"+value + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "%" + getStringValueInWhere(field, value, attrVOMap) + SPACE; + } + } else if (key.endsWith("_likeright")) { + String field = UBCSSqlKeyword.getColumn(key, "_likeright"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + value + "%" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + getStringValueInWhere(field, value, attrVOMap)+ "%" + SPACE; + } + } else if (key.endsWith("_notlike")) { + String field = UBCSSqlKeyword.getColumn(key, "_notlike"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "NO LIKE" + SPACE + "%" + value + "%" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "NO LIKE " + "%"+getStringValueInWhere(field, value, attrVOMap)+ "%" + SPACE; + } + } else if (key.endsWith("_ge")) { + String field = UBCSSqlKeyword.getColumn(key, "_ge"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + " >= " + value + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(value, field, attrVOMap) + SPACE; + } + } else if (key.endsWith("_le")) { + //璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓� + String field = UBCSSqlKeyword.getColumn(key, "_le"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + " <= " + value + "" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + " <= " + getStringValueInWhere(field, value, attrVOMap) + SPACE; + } + } else if (key.endsWith("_gt")) { + String field = UBCSSqlKeyword.getColumn(key, "_gt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "> " + value + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "> " + getStringValueInWhere(field, value, attrVOMap) + SPACE; + } + } else if (key.endsWith("_lt")) { + String field = UBCSSqlKeyword.getColumn(key, "_lt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "< " + value + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "< " + getStringValueInWhere(field, value, attrVOMap) + SPACE; + } + } else if (key.endsWith("_datege")) { + String field = UBCSSqlKeyword.getColumn(key, "_datege"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + ">= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + ">= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_dategt")) { + String field = UBCSSqlKeyword.getColumn(key, "_dategt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "> '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "> '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_dateequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_datele")) { + String field = UBCSSqlKeyword.getColumn(key, "_datele"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "<= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "<= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_datelt")) { + String field = UBCSSqlKeyword.getColumn(key, "_datelt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "< '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "< '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_null")) { + String field = UBCSSqlKeyword.getColumn(key, "_null"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "IS NULL" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NULL" + SPACE; + } + } else if (key.endsWith("_notnull")) { + String field = UBCSSqlKeyword.getColumn(key, "_null"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "IS NOT NULL" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NOT NULL" + SPACE; + } + } else if(key.endsWith("_dateequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + }else if(key.endsWith("_equal")) { + String field = UBCSSqlKeyword.getColumn(key, "_equal"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE; + } + }else { + if (referFieldMap.containsKey(key)) { + //璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝 + String selectKey = referFieldMap.get(key); + return getSqlByValue(selectKey, value, null,btmType); + } else { + return getSqlByValue(key, value, attrVOMap,btmType); + } + } + } + return ""; + + /*if (key.endsWith("_begin")) { //璇存槑鏄�>=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓� String field = (key.substring(0, key.length() - 6).toLowerCase().trim()); if (referFieldMap.containsKey(field)) { @@ -1808,11 +1897,11 @@ if (referFieldMap.containsKey(key)) { //璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝 String selectKey = referFieldMap.get(key); - return getSqlByValue(selectKey, value, null); + return getSqlByValue(selectKey, value, null,btmType); } else { - return getSqlByValue(key, value, attrVOMap); + return getSqlByValue(key, value, attrVOMap,btmType); } - } + }*/ } @@ -1835,7 +1924,7 @@ } if (field.contains(".") && attrVOMap != null && attrVOMap.containsKey(field.split("\\.")[0].toLowerCase(Locale.ROOT))) { //鏄弬鐓� - return "'" + value + "'"; + return value; } else { return value; } @@ -1859,16 +1948,34 @@ || VciFieldTypeEnum.VTInteger.equals(fieldTypeEnum)) { return value; } else { - return "'" + value + "'"; + return value; } } else { if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) { return value; } - return "'" + value + "'"; + return value; } } + } + + /** + * 鏌ョ湅鏄惁榛樿灞炴�� + * @param selectKey + * @param btmType + * @return + */ + private boolean isDefaultAttr(String selectKey, String btmType){ + if(StringUtils.isBlank(btmType)){ + return false; + } + R<BtmTypeVO> r = btmTypeClient.getDefaultAttrByBtmId(btmType); + List<BtmTypeAttributeVO> attributes = r.getData().getAttributes(); + if(r.getCode() != 200 || attributes.isEmpty()){ + return false; + } + return attributes.stream().anyMatch(item->item.getId().equals(selectKey)); } /** @@ -1879,12 +1986,12 @@ * @param attrVOMap 灞炴�х殑鏄剧ず瀵硅薄鏄犲皠 * @return sql閲岀殑鍊� */ - private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { + private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap,String btmType) { StringBuilder sql = new StringBuilder(); - // TODO 寰呭畬鍠� - // if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) { - // sql.append("t."); - // } + // TODO 宸插畬鍠� + if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || isDefaultAttr(selectKey,btmType) || selectKey.matches(RegExpConstant.LETTER))) { + sql.append("t."); + } if (value.startsWith(QueryOptionConstant.IN)) { sql.append(selectKey) .append(SPACE) @@ -1988,12 +2095,15 @@ // CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 -// List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getOid())); + List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), orderDTO.getOid()); - QueryWrapper<CodeWupin> btmWrapper = new QueryWrapper<>(); - btmWrapper.eq("OID",orderDTO.getOid()); - CodeWupin cbo = codeWupinMapper.selectOne(btmWrapper); - + if (CollectionUtils.isEmpty(cbos)) { + throw new VciBaseException(DATA_OID_NOT_EXIST); + } +// QueryWrapper<CodeWupin> btmWrapper = new QueryWrapper<>(); +// btmWrapper.eq("OID",orderDTO.getOid()); +// CodeWupin cbo = codeWupinMapper.selectOne(btmWrapper); + BaseModel cbo = cbos.get(0); // CodeClstemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); // CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid()); @@ -2031,7 +2141,7 @@ cbo.setDescription(orderDTO.getDescription()); cbo.setName(orderDTO.getName()); try { - cbo.setDescription(orderDTO.getDescription()); + cbo.setDescription( StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); cbo.setName(orderDTO.getName()); //// cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); // cbo.setAttributeValue("name", orderDTO.getName()); @@ -2039,8 +2149,9 @@ e.printStackTrace(); } cbo.setLastModifyTime(new Date()); - cbo.setLastModifier(AuthUtil.getUser().getUserName()); - codeWupinMapper.updateById(cbo); + cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId())); + updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), Collections.singletonList(cbo)); +// codeWupinMapper.updateById(cbo); // // List<CodeWupinEntity> cboList = new ArrayList<>(); // @@ -2066,7 +2177,8 @@ // List<ClientBusinessObject> cboList = new ArrayList<>(); // cboList.add(cbo); // boService.persistenceBatch(batchCBO); - batchSaveSelectChar(templateVO, Arrays.asList(cbo.getId())); + batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); +// batchSaveSelectChar(templateVO, Arrays.asList(cbo.getId())); } /** @@ -2080,31 +2192,32 @@ deleteBatchDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(deleteBatchDTO.getCodeClassifyOid()); //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 - Collection<String> oidCollection = null; + Collection<String> oidCollection = new ArrayList<>(); for (Collection<String> strings : VciBaseUtil.switchCollectionForOracleIn(deleteBatchDTO.getOidList())) { oidCollection.addAll(strings); } - List<CodeWupin> cboList = codeWupinMapper.selectBatchIds(oidCollection); - // List<ClientBusinessObject> cboList = new ArrayList<>(); -// oidCollection.stream().forEach(oids -> { -// Map<String, String> conditionMap = new HashMap<>(); +// List<CodeWupin> cboList = codeWupinMapper.selectBatchIds(oidCollection); + List<BaseModel> cboList = new ArrayList<>(); + oidCollection.stream().forEach(oids -> { + Map<String, String> conditionMap = new HashMap<>(); // conditionMap.put("oid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")"); -// List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), conditionMap); -// cboList.addAll(cbos); -// }); + List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmtypeid(),oids); +// boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), conditionMap); + cboList.addAll(cbos); + }); if (CollectionUtils.isEmpty(cboList)) { throw new VciBaseException("鏁版嵁鍏ㄩ儴鍦ㄧ郴缁熶腑涓嶅瓨鍦�"); } - List<CodeWupin> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList()); + List<BaseModel> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(editCBOs)) { - CodeWupin cbo = editCBOs.get(0); + BaseModel cbo = editCBOs.get(0); throw new VciBaseException("缂栫爜涓簕0}绛夊叡{1}鏉℃暟鎹殑鐘舵�佷笉鏄痆{2}]锛屼笉鍏佽鍒犻櫎", new String[]{cbo.getId(), String.valueOf(editCBOs.size()), CodeDefaultLC.EDITING.getText()}); } //鍙兘鍒犻櫎鑷繁鍒涘缓鐨勬暟鎹� - String userId = AuthUtil.getUser().getUserName(); - for (CodeWupin clientBusinessObject : cboList) { + String userId = String.valueOf(AuthUtil.getUser().getUserId()); + for (BaseModel clientBusinessObject : cboList) { String creator = clientBusinessObject.getCreator(); if (!userId.equalsIgnoreCase(creator)) { throw new VciBaseException("缂栫爜涓�" + clientBusinessObject.getId() + "鐨勬暟鎹笉鏄綋鍓嶇敤鎴峰垱寤猴紝涓嶈兘鍒犻櫎锛�"); @@ -2116,7 +2229,14 @@ // WebUtil.setPersistence(false); // batchCBO.copyFromOther( productCodeService.recycleCode(classifyFullInfo.getCurrentClassifyVO().getBtmtypeid(), deleteBatchDTO.getOidList()); - baseMapper.deleteBatchIds(cboList); +// baseMapper.deleteBatchIds(cboList); + //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getCurrentClassifyVO().getBtmtypeid())); + if (listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(), + "'"+(StringUtils.join(cboList.stream().map(BaseModel::getOid).collect(Collectors.toSet()),"','"))+"'"); // ); // WebUtil.setPersistence(true); // boService.persistenceBatch(batchCBO); @@ -2234,67 +2354,77 @@ */ @Override public R batchUpdateCode(List<CodeOrderDTO> orderDTOList) { -// VciBaseUtil.alertNotNull(orderDTOList,"缂栫爜鐢宠鐩稿叧鐨勫睘鎬у唴瀹�"); -// orderDTOList.forEach(orderDTO -> { -// VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭", -// orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); -// }); -// Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); -// List<ClientBusinessObject> updateList = new ArrayList<>(); -// // 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫 -// CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid()); + VciBaseUtil.alertNotNull(orderDTOList,"缂栫爜鐢宠鐩稿叧鐨勫睘鎬у唴瀹�"); + orderDTOList.forEach(orderDTO -> { + VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭", + orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); + }); + Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); + List<BaseModel> updateList = new ArrayList<>(); + // 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫 + CodeClassifyFullInfoBO topClassifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid()); // Map<String,String> cboOidMap = new HashMap<>(); -// if (CollectionUtils.isEmpty(orderDTOMap.keySet())){ -// throw new VciBaseException(DATA_OID_NOT_EXIST); -// } + if (CollectionUtils.isEmpty(orderDTOMap.keySet())){ + throw new VciBaseException(DATA_OID_NOT_EXIST); + } + + List<BaseModel> cboList = selectByTypeAndOid(topClassifyFullInfo.getTopClassifyVO().getBtmtypeid(), VciBaseUtil.array2String(orderDTOMap.keySet().toArray(new String[0]))); // cboOidMap.put("oid",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(orderDTOMap.keySet().toArray(new String[0])) + ")"); // List<ClientBusinessObject> cboList = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), cboOidMap); -// if (CollectionUtils.isEmpty(cboList)){ -// throw new VciBaseException(DATA_OID_NOT_EXIST); -// } + if (CollectionUtils.isEmpty(cboList)){ + throw new VciBaseException(DATA_OID_NOT_EXIST); + } // BatchCBO batchCBO = new BatchCBO(); // CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid()); -// Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); -// orderDTOMap.keySet().stream().forEach(oid -> { -// CodeOrderDTO orderDTO = orderDTOMap.get(oid); -// ClientBusinessObject cbo = cboMap.get(oid); -// if (!cbo.getTs().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) { -// throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯"); -// } -// if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { -// throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()}); -// } -// //1. 鍒ゆ柇蹇呰緭椤� -// CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); -// checkRequiredAttrOnOrder(templateVO, orderDTO); -// //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� -// switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); -// //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 -// switchComponentAttrOnOrder(templateVO, orderDTO); -// //4.鏍¢獙瑙勫垯 -// checkVerifyOnOrder(templateVO, orderDTO); -// //5.鍒ゆ柇鍏抽敭灞炴�� -// checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); -// //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭� -// checkEnumOnOrder(templateVO, orderDTO); -// //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 -// switchDateAttrOnOrder(templateVO, orderDTO); -// //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙� -// copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); -// //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� -// cbo.setDescription(orderDTO.getDescription()); -// cbo.setName(orderDTO.getName()); + Map<String, BaseModel> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); + orderDTOMap.keySet().stream().forEach(oid -> { + CodeOrderDTO orderDTO = orderDTOMap.get(oid); + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid()); + BaseModel cbo = cboMap.get(oid); + String code=cbo.getId(); + if (!cbo.getTs().toString().contains(orderDTO.getTs().toString())) { + throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯"); + } + if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { + throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()}); + } + //1. 鍒ゆ柇蹇呰緭椤� + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); + checkRequiredAttrOnOrder(templateVO, orderDTO); + //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� + switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); + //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 + switchComponentAttrOnOrder(templateVO, orderDTO); + //4.鏍¢獙瑙勫垯 + checkVerifyOnOrder(templateVO, orderDTO); + //5.鍒ゆ柇鍏抽敭灞炴�� + checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); + //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭� + checkEnumOnOrder(templateVO, orderDTO); + //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 + switchDateAttrOnOrder(templateVO, orderDTO); + //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙� + copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); + //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� + cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); + cbo.setName(orderDTO.getName()); // try { -// cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); +// cbo.setAttributeValue("id",code); + cbo.setId(code); + cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); +// cbo.setAttributeValueWithNoCheck("description", StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); // cbo.setAttributeValue("name", orderDTO.getName()); + cbo.setName(orderDTO.getName()); // } catch (VCIError e) { // e.printStackTrace(); // } // batchCBO.getUpdateCbos().add(cbo); -// updateList.add(cbo); -// }); + updateList.add(cbo); + batchSaveSelectChar(firstTemplateVO, cboList); + }); // boService.persistenceBatch(batchCBO); -// batchSaveSelectChar(firstTemplateVO, cboList); + updateBatchByBaseModel(topClassifyFullInfo.getTopClassifyVO().getBtmtypeid(),updateList); return R.success("鎿嶄綔鎴愬姛锛�"); } @@ -2377,64 +2507,76 @@ */ @Override public void upSaveCode(CodeOrderDTO orderDTO) { + VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鏁版嵁鎵�鍦ㄤ笟鍔$被鍚嶇О", orderDTO.getBtmname()); + String btmName=orderDTO.getBtmname(); + //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 + List<BaseModel> cbos = selectByTypeAndOid(btmName, orderDTO.getCopyFromVersion()); + if (CollectionUtils.isEmpty(cbos)) { + throw new VciBaseException(DATA_OID_NOT_EXIST); + } + BaseModel oldCbo = cbos.get(0); + + if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) { + throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁告暟鎹洿鏀�", new String[]{CodeDefaultLC.RELEASED.getText()}); + } + + //鏍规嵁鏁版嵁鑾峰彇鍒嗙被oid + String codeClassifyOid=oldCbo.getData().get(CODE_CLASSIFY_OID_FIELD.toUpperCase()); + orderDTO.setCodeClassifyOid(codeClassifyOid); + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + CodeClassifyTemplateVO templateVO= this.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid()); + orderDTO.setTemplateOid(templateVO.getOid()); VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭涓虹┖", orderDTO.getCopyFromVersion(), "鍘熷鏁版嵁鐨勪富閿�", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); - CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); - //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 -// List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getCopyFromVersion())); -// if (CollectionUtils.isEmpty(cbos)) { -// throw new VciBaseException(DATA_OID_NOT_EXIST); -// } -// ClientBusinessObject oldCbo = cbos.get(0); -// if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) { -// throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁告暟鎹洿鏀�", new String[]{CodeDefaultLC.RELEASED.getText()}); -// } -// //闇�瑕佸崌鐗� + + //闇�瑕佸崌鐗� // ClientBusinessObjectOperation cboOperation = new ClientBusinessObjectOperation(); -// ClientBusinessObject cbo = null; + BaseModel cbo = null; // try { // //cbo = cboOperation.createBusinessObjectVersion(oldCbo,VciBaseUtil.getCurrentUserId()); -// cbo = cboOperation.reviseBusinessObject(oldCbo, ""); + cbo = reviseBusinessObject(oldCbo); // } catch (VCIError e) { // throw new VciBaseException("鍒濆鍖栫浉鍏崇殑鍐呭鍑虹幇浜嗛敊璇�", new String[0], e); // } -// //1. 鍒ゆ柇蹇呰緭椤� -// CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); -// checkRequiredAttrOnOrder(templateVO, orderDTO); -// //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� -// switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); -// //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 -// switchComponentAttrOnOrder(templateVO, orderDTO); -// //4.鏍¢獙瑙勫垯 -// checkVerifyOnOrder(templateVO, orderDTO); -// //5.鍒ゆ柇鍏抽敭灞炴�� -// checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); -// //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭� -// checkEnumOnOrder(templateVO, orderDTO); -// //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 -// switchDateAttrOnOrder(templateVO, orderDTO); -// //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙� -// copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); -// //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� -// cbo.setDescription(orderDTO.getDescription()); -// cbo.setName(orderDTO.getName()); + //1. 鍒ゆ柇蹇呰緭椤� + //CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); + checkRequiredAttrOnOrder(templateVO, orderDTO); + //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� + switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); + //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 + switchComponentAttrOnOrder(templateVO, orderDTO); + //4.鏍¢獙瑙勫垯 + checkVerifyOnOrder(templateVO, orderDTO); + //5.鍒ゆ柇鍏抽敭灞炴�� + checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); + //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭� + checkEnumOnOrder(templateVO, orderDTO); + //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 + switchDateAttrOnOrder(templateVO, orderDTO); + //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙� + copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); + //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� + cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); + cbo.setName(orderDTO.getName()); // try { -// cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); -// cbo.setAttributeValue("name", orderDTO.getName()); + cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); +// cbo.setAttributeValueWithNoCheck("description", StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); + cbo.setName(orderDTO.getName()); // } catch (VCIError e) { // e.printStackTrace(); // } -// //鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑 -// cbo.setCreateTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getCreateTime())), "yyyy-MM-dd HH:mm:ss")); -// cbo.setLastModifyTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getLastModifyTime())), "yyyy-MM-dd HH:mm:ss")); + //鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑 + cbo.setCreateTime(cbo.getCreateTime()); + cbo.setLastModifyTime(cbo.getLastModifyTime()); // List<ClientBusinessObject> cboList = new ArrayList<>(); // cboList.add(cbo); -// try { + try { // cboOperation.saveRevisionBuinessObject(cbo); -// } catch (VCIError vciError) { -// throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); -// } -// batchSaveSelectChar(templateVO, cboList); + insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo)); + } catch (Exception vciError) { + throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); + } + batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); } /** @@ -2963,12 +3105,11 @@ @Override public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId) { VciBaseUtil.alertNotNull(codeClassifyOid, "涓婚搴撳垎绫讳富閿�"); + MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid)); uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0); if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) { List<Menu> buttonVOS = iSysClient.getMenuButtonByType(uiInfoVO.getTemplateVO().getBtmTypeId()).getData(); - - //鍔熻兘鎸夐挳鏈嶅姟杩樻湭瀹炵幇锛岀瓑瀹炵幇浜嗭紝鍦ㄨ繘琛岃皟鐢� // List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId); // if (operationVOS == null) { // operationVOS = new ArrayList<>(); @@ -3218,52 +3359,33 @@ * 鑾峰彇鍙傜収鐨勪俊鎭� * * @param referConfigVO 鍙傜収鐨勯厤缃� - * @param pageHelper 鍒嗛〉鐨勫伐鍏� * @return 鍒楄〃鏁版嵁 */ @Override - public DataGrid referDataGrid(UIFormReferVO referConfigVO, PageHelper pageHelper) { -// checkReferConfig(referConfigVO); - //浣跨敤涓氬姟绫诲瀷鏌ヨ + public Page<BtmTypeVO> referDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject) { + // checkReferConfig(referConfigVO); + // 浣跨敤涓氬姟绫诲瀷鏌ヨ R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(referConfigVO.getReferType()); BtmTypeVO btmTypeVO = allAttributeByBtmId.getData(); - if (referConfigVO.getWhere() == null) { - referConfigVO.setWhere(new HashMap<>()); - } /** * 鍔犱笂鏌ヨ鏈�鏂扮増娆� */ - Map<String, String> conditionMap = new HashMap<>(); - conditionMap.put("lastr", "1"); - conditionMap.put("lastv", "1"); - referConfigVO.getWhere().putAll(conditionMap); - if (VciBaseUtil.containsKeyUnCaseForMap(referConfigVO.getWhere(), VciQueryWrapperForDO.LC_STATUS_FIELD) && + baseQueryObject.getConditionMap().put("lastr", "1"); + baseQueryObject.getConditionMap().put("lastv", "1"); + if (VciBaseUtil.containsKeyUnCaseForMap(baseQueryObject.getConditionMap(), VciQueryWrapperForDO.LC_STATUS_FIELD) && BtmTypeLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) { - referConfigVO.getWhere().put(VciQueryWrapperForDO.LC_STATUS_FIELD, FrameworkDataLCStatus.ENABLED.getValue()); + baseQueryObject.getConditionMap().put(VciQueryWrapperForDO.LC_STATUS_FIELD, FrameworkDataLCStatus.ENABLED.getValue()); } - if (VciBaseUtil.containsKeyUnCaseForMap(referConfigVO.getWhere(), VciQueryWrapperForDO.LC_STATUS_FIELD) && + if (VciBaseUtil.containsKeyUnCaseForMap(baseQueryObject.getConditionMap(), VciQueryWrapperForDO.LC_STATUS_FIELD) && BtmTypeLcStatusConstant.RELEASE_LIFE_CYCLE.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) { - referConfigVO.getWhere().put(VciQueryWrapperForDO.LC_STATUS_FIELD, CodeDefaultLC.RELEASED.getValue()); + baseQueryObject.getConditionMap().put(VciQueryWrapperForDO.LC_STATUS_FIELD, CodeDefaultLC.RELEASED.getValue()); } - BaseQueryObject baseQueryObject = new BaseQueryObject(); - Map<String, String> where = referConfigVO.getWhere(); - where.put("domain", AppConstant.APPLICATION_NAME_CODE); - baseQueryObject.setConditionMap(where); - baseQueryObject.setPage(pageHelper.getPage()); - baseQueryObject.setSort(pageHelper.getSort()); - baseQueryObject.setLimit(pageHelper.getLimit()); - baseQueryObject.setOrder(pageHelper.getOrder()); - R<List<BtmTypeVO>> ref = btmTypeClient.getRef(baseQueryObject); - DataGrid<BtmTypeVO> btmTypeVODataGrid = new DataGrid<>(); - List<BtmTypeVO> data = ref.getData(); - btmTypeVODataGrid.setData(data); - btmTypeVODataGrid.setCode(ref.getCode()); - btmTypeVODataGrid.setLimit(pageHelper.getLimit()); - btmTypeVODataGrid.setMsg(ref.getMsg()); - btmTypeVODataGrid.setSort(pageHelper.getSort()); - btmTypeVODataGrid.setOrder(pageHelper.getOrder()); - btmTypeVODataGrid.setPage(pageHelper.getPage()); - return btmTypeVODataGrid; + baseQueryObject.getConditionMap().put("domain", AppConstant.APPLICATION_NAME_CODE); + R<Page<BtmTypeVO>> refPage = btmTypeClient.getRefPage(baseQueryObject); + if(refPage.getCode() != 200){ + throw new ServiceException("涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒"); + } + return refPage.getData(); } /** @@ -3345,6 +3467,18 @@ return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null); } + + @Override + public boolean checkUnAttrUnEdit(String attrName) { + return (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName) + ||"ts".equalsIgnoreCase(attrName) + || "lastmodifier".equalsIgnoreCase(attrName) + || "lastmodifytime".equalsIgnoreCase(attrName) + || "createtime".equalsIgnoreCase(attrName) + || "checkintime".equalsIgnoreCase(attrName) + ||"checkouttime".equalsIgnoreCase(attrName)); + } + private String getTableName(String refertype){ if ("codeclassify".equals(refertype)){ return "pl_code_classify"; @@ -3358,4 +3492,45 @@ return "pl_code_"+refertype.trim().toLowerCase(); } + + public BaseModel reviseBusinessObject(BaseModel fromBo) { + BaseModel toBo = new BaseModel(); +// Map<String,String> data = new HashMap<>(); +// toBo.getData().put(data); + toBo.setOid(VciBaseUtil.getPk()); + toBo.setRevisionOid(VciBaseUtil.getPk()); + toBo.setNameOid(fromBo.getNameOid()); + toBo.setBtmname(fromBo.getBtmname()); + toBo.setLastR(String.valueOf(1)); + toBo.setFirstR(String.valueOf(0)); + toBo.setFirstV(String.valueOf(1)); + toBo.setLastV(String.valueOf(1)); + toBo.setCreator(String.valueOf(AuthUtil.getUser().getUserId())); + toBo.setCreateTime(new Date()); + toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId())); + toBo.setLastModifyTime(new Date()); + toBo.setRevisionRule(fromBo.getRevisionRule()); + toBo.setVersionRule(fromBo.getVersionRule()); +// RevisionValueObject rvObj = this.getNextRevision(fromBo.getBtmName(), fromBo.getNameoid(), item.revRuleName, item.revInput, revisionVal); + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(fromBo.getBtmname())); + 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()); +// VersionValueObject versionObj = this.getVersionValue(item.verRuleName); + toBo.setVersionSeq(Integer.valueOf(nextRevision.get("VERSIONSEQ").toString())); + toBo.setVersionValue(nextRevision.get("VERSIONVAL").toString()); + toBo.setLctid(fromBo.getLctid()); + toBo.setLcStatus("Editing"); + toBo.setId(fromBo.getId()); + toBo.setName(fromBo.getName()); + toBo.setDescription(fromBo.getDescription()); + toBo.setOwner(String.valueOf(AuthUtil.getUser().getUserId())); +// toBo.setCheckinBy(String.valueOf(AuthUtil.getUser().getUserId())); + toBo.setCopyFromVersion(fromBo.getOid()); + toBo.getData().putAll(fromBo.getData()); + toBo.getData().put("CHECKINBY",String.valueOf(AuthUtil.getUser().getUserId())); +// this.initRevisionTypeAttributeValue(fromBo, toBo); + return toBo; + + } } -- Gitblit v1.9.3