From 7795e413db43b5c2e282fcdb9607c059e09eceb5 Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期四, 19 十月 2023 08:49:16 +0800 Subject: [PATCH] 申请/维护接口人员存储测试 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 1097 +++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 797 insertions(+), 300 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 43a785c..3614e40 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 @@ -5,23 +5,27 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.vci.ubcs.code.applyjtcodeservice.vo.BaseModelVO; import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO; import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; -import com.vci.ubcs.code.constant.MdmBtmTypeConstant; import com.vci.ubcs.code.dto.CodeDeleteBatchDTO; import com.vci.ubcs.code.dto.CodeOrderDTO; import com.vci.ubcs.code.dto.datapush.BaseModelDTO; import com.vci.ubcs.code.entity.*; import com.vci.ubcs.code.enumpack.*; -import com.vci.ubcs.code.mapper.CodeWupinMapper; 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; import com.vci.ubcs.code.vo.pagemodel.UITablePageVO; import com.vci.ubcs.code.vo.pagemodel.*; +import com.vci.ubcs.code.wrapper.BaseMdodelWrapper; +import com.vci.ubcs.flow.core.dto.FlowStatusDTO; +import com.vci.ubcs.flow.core.feign.IMDMIFlowAttrClient; +import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO; import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant; import com.vci.ubcs.omd.cache.EnumCache; import com.vci.ubcs.omd.feign.*; @@ -35,6 +39,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; @@ -52,6 +57,7 @@ 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; @@ -66,6 +72,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; + import javax.annotation.Resource; import java.beans.BeanInfo; import java.beans.Introspector; @@ -90,7 +97,7 @@ * @date 2022-2-22 */ @Service -public class MdmEngineServiceImpl extends ServiceImpl<CodeWupinMapper, CodeWupin> implements MdmEngineService { +public class MdmEngineServiceImpl implements MdmEngineService { /** @@ -98,7 +105,6 @@ */ @Resource private CodeClstemplateServiceImpl templateService; - /** * 鐢熸垚缂栫爜鐨勬湇鍔� @@ -180,8 +186,6 @@ @Resource CommonsMapper commonsMapper; - @Resource - CodeWupinMapper codeWupinMapper; /** * 缂栫爜瑙勫垯鐨勬湇鍔� */ @@ -277,6 +281,11 @@ * 鏇挎崲瀛楃 */ public static final String SPECIAL_CHAR = "VCI"; + /** + * 涓绘暟鎹祦绋嬮樁娈垫湇鍔� + */ + @Autowired + private IMDMIFlowAttrClient imdmiFlowAttrClient; // @Autowired // private CodeOsbtmtypeMapper codeOsbtmtypeMapper;---- @@ -348,36 +357,32 @@ if (baseModels.size() == 0) { throw new VciBaseException("鏈煡璇㈠埌鐩稿叧鏁版嵁銆�"); } - // 寰呭畬鍠� - List<BtmTypeVO> cboList = null; // btmTypeClient.selectList(wrapper); //杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈� -// Map<String, String> conditionMap = new HashMap<>(); QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>(); allCodeWrapper.eq("createcodebtm", baseModelDTO.getBtmname()); allCodeWrapper.in("createcodeoid", oids); -// conditionMap.put("createcodeoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")"); -// conditionMap.put("createcodebtm", baseModelDTO.getBtmname()); - List<CodeAllCode> codeCbos = codeAllCodeService.selectByWrapper(allCodeWrapper); -// List<ClientBusinessObject> codeCbos = boService.queryCBO(MdmBtmTypeConstant.CODE_ALL_CODE, conditionMap); - // 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄� + List<CodeAllCode> codeCbos = codeAllCodeService.selectByWrapper(allCodeWrapper);// 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄� if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) { R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(baseModelDTO.getBtmname())); if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } - commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid())); + // 鐩存帴鍒犻櫎锛屼笉缁欑姸鎬� + commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid())); + // commonsMapper.updateByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid()),CodeDefaultLC.TASK_BACK.getValue()); } else { for (BaseModel baseModel : baseModels) { baseModel.setLcStatus(baseModelDTO.getLcStatus()); } - updateBatchByBaseModel(baseModelDTO.getBtmname(), baseModels); - // lifeCycleService.transCboStatus(cboList, baseModelDTO.getLcStatus()); - } + R r = updateBatchByBaseModel(baseModelDTO.getBtmname(), baseModels); + if(!r.isSuccess()){ + throw new VciBaseException("鏇存柊鏁版嵁鍑洪敊锛岄噸璇曪紒"+r.getMsg()); + } + } for (CodeAllCode codeCbo : codeCbos) { codeCbo.setLcStatus(baseModelDTO.getLcStatus()); } codeAllCodeService.updateBatchById(codeCbos); - // lifeCycleService.transCboStatus(codeCbos, baseModelDTO.getLcStatus()); } /** @@ -411,10 +416,23 @@ switchDateAttrOnOrder(templateVO, orderDTO); //9.鐢熸垚缂栫爜鐨勪俊鎭� // ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()); - BaseModel cbo = 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.setCreator(String.valueOf(AuthUtil.getUser().getAccount())); + 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 @@ -423,18 +441,11 @@ //澶囨敞 cbo.setDescription(orderDTO.getDescription()); cboList.add(cbo); -// -// cboList.add(cbo); + 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, cboList); return codeList.size() > 0 ? codeList.get(0) : ""; -// return null; } /** @@ -459,7 +470,7 @@ if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyInvokeLevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyInvokeLevel())) { //鎸囧畾浜嗗眰绾х殑 //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊� - List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList()); + List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> -o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList()); int level = VciBaseUtil.getInt(attrVO.getClassifyInvokeLevel()); if (classifyVOS.size() >= level && level > 0) { classifyVO = classifyVOS.get(level - 1); @@ -542,10 +553,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; } @@ -641,17 +657,21 @@ }); //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� - if (!CollectionUtils.isEmpty(conditionMap)) { + conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'"); // final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "}; - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmtypeid())); + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId())); // String referTable = VciBaseUtil.getTableName(referVO.getReferType()); if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } 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())) { //淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸� @@ -669,7 +689,94 @@ } } - /** + /** + * 鏍¢獙鍏抽敭灞炴�� + * + * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅 + */ + @Override + public List<Map> checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) { + List<Map>dataList=new ArrayList<>(); + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); + //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮� + CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo); + //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗 + //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴�� + Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + Map<String, String> conditionMap = new HashMap<>(); + boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag()); + //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖ + boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag()); + boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag()); + boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag()); + ketAttrMap.forEach((attrId, attrVO) -> { + String value = getValueFromOrderDTO(orderDTO, attrId); + if (value == null) { + value = ""; + } + wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap); + }); + + //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� + if (!CollectionUtils.isEmpty(conditionMap)) { + conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'"); +// final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "}; + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId())); +// String referTable = VciBaseUtil.getTableName(referVO.getReferType()); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + final String[] sql = {"select * from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "}; + conditionMap.forEach((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())) { + //淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸� + sql[0] += " and oid != '" + orderDTO.getOid() + "'"; + } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) { + sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'"; + } + sql[0] += " and lastR = '1' and lastV = '1' "; +// if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) { + dataList=commonsMapper.selectBySql(sql[0]); + if (!CollectionUtils.isEmpty(dataList)) { +// String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}"; +// String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"}; +// throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs); + return dataList; + } + } + return dataList; + } + + /** + * 鏍规嵁褰撳墠鐢宠缂栫爜鐨勫垎绫伙紝閫愬眰寰�涓婃牎楠屾槸鍚︾鍚堝睘浜庨厤缃殑涓殑鍒嗙被瀛愯妭鐐圭殑鍒� + * 绫伙紝濡傛灉绗﹀悎锛屽垯璇ュ垎绫荤敵璇风殑缂栫爜涓洪泦鍥㈢爜杩斿洖true锛屽弽涔嬪垯涓轰紒涓氱紪鐮佽繑鍥瀎alse + * @param parameter 浼犲叆鏁版嵁,classifyGroupCode:閰嶇疆鐨勪腑鐨勫垎绫婚《鑺傜偣锛宱id锛氶�夋嫨鑺傜偣鐨刼id + */ + @Override + public R checkGroupCode(Map<String, String> parameter) { + List<CodeClassify> codeClassifyList = classifyService.selectAllLevelParentByOid(parameter.get("oid")); + Set<String> configGroupCode = Arrays.stream(parameter.get("classifyGroupCode").split("#")).collect(Collectors.toSet()); +// Boolean checkGroupFlag = false;//鏄惁鏌ヨ鍒伴厤缃殑椤跺眰鍒嗙被涓� + for (int i = codeClassifyList.size()-1; i >= 0; i--) { + if(configGroupCode.contains(codeClassifyList.get(i).getId())){ +// checkGroupFlag = true; + return R.data("true"); + } +// if(checkGroupFlag && parameter.get("nowApplyCode").equals(codeClassifyList.get(i).getId())){ +// return R.data(true); +// } + } + return R.data("false"); + } + + /** * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞 * * @param value 褰撳墠鐨勫�� @@ -688,7 +795,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 = ""; @@ -724,8 +831,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); + } } } } @@ -794,39 +905,24 @@ } else { fullPath = classifyFullInfo.getCurrentClassifyVO().getOid(); } - -// BeanUtils. -// BeanUtils.copyProperties(orderDTO.getData(),cbo); -// cbo.setMaterialtype(Short.valueOf("1001")); -// orderDTO.getData().forEach((key, value) -> { -// if (!edit || (!checkUnAttrUnEdit(key) && -// !VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) { -// try { -// cbo.setAttributeValue(key, value); -// } catch (Exception e) { -// logger.error("璁剧疆灞炴�х殑鍊奸敊璇�", e); -// } -// } -// }); -// BeanMap beanMap = BeanMap.create(cbo); -// beanMap.putAll(orderDTO.getData()); - + orderDTO.getData().forEach((key, value) -> { + if (!edit || (!checkUnAttrUnEdit(key) && + !VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) { + try { + cbo.getData().put(cbo.getData().containsKey(key.toUpperCase())?key.toUpperCase():key, value); + } catch (Exception e) { + logger.error("璁剧疆灞炴�х殑鍊奸敊璇�", e); + } + } + }); try { - - BeanUtilForVCI.copyPropertiesIgnoreNull(BeanUtilForVCI.convertMap(BaseModel.class, orderDTO.getData()), cbo); - Map<String, String> data = new HashMap<>(); - data.put(CODE_CLASSIFY_OID_FIELD, classifyFullInfo.getCurrentClassifyVO().getOid()); - data.put(CODE_TEMPLATE_OID_FIELD, templateVO.getOid()); - data.put(CODE_FULL_PATH_FILED, fullPath); - cbo.setData(data); - cbo.setOid(VciBaseUtil.getPk()); - cbo.setCreateTime(new Date()); + Map<String, String> data = new HashMap<>(); + data.put(cbo.getData().containsKey(CODE_CLASSIFY_OID_FIELD.toUpperCase())?CODE_CLASSIFY_OID_FIELD.toUpperCase():CODE_CLASSIFY_OID_FIELD, classifyFullInfo.getCurrentClassifyVO().getOid()); + data.put(cbo.getData().containsKey(CODE_TEMPLATE_OID_FIELD.toUpperCase())?CODE_TEMPLATE_OID_FIELD.toUpperCase():CODE_TEMPLATE_OID_FIELD, templateVO.getOid()); + 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.setCreator(AuthUtil.getUser().getUserName()); cbo.setLastModifier(AuthUtil.getUser().getUserName()); -// cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid()); -// cbo.setTemplateOid(templateVO.getOid()); -// cbo.setCodeclsfpath(fullPath); cbo.setTs(new Date()); if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) { //TODO 鍏堝啓鍥哄畾锛屽悗闈㈢敓鍛藉懆鏈熷ソ浜嗗湪缂栧啓 @@ -880,7 +976,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()); } } @@ -910,7 +1006,7 @@ // baseModels.stream().forEach(model-> { try { - map = VciBaseUtil.convertBean2Map(cbo); + map = VciBaseUtil.convertBean2Map(cbo,null); } catch (Exception e) { throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); } @@ -936,6 +1032,26 @@ } } } + + /** + * 灏佽寮�鍏崇殑鍐呭锛屽父鐢ㄤ簬瀵煎嚭 + * @param dataMap 鏁版嵁鐨勫唴瀹� + * @param templateVO 妯℃澘鐨勬樉绀� + */ + @Override + public void wrapperBoolean(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO){ + List<String> booleanAttributes = templateVO.getAttributes().stream().filter(s -> VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(s.getAttributeDataType())).map(s -> s.getId().toLowerCase(Locale.ROOT)).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(booleanAttributes)){ + dataMap.stream().forEach(data -> { + booleanAttributes.stream().forEach(attrId->{ + if(data.containsKey(attrId)){ + String value = data.get(attrId); + data.put(attrId,BooleanEnum.TRUE.getValue().equalsIgnoreCase(value)?"鏄�":"鍚�"); + } + }); + }); + } + } @Override public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) { @@ -965,13 +1081,16 @@ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); List<UIFormItemVO> itemVOS = new ArrayList<>(); - Map<String, List<CodeClassifyTemplateAttrVO>> attrGroupMap = templateVO.getAttributes().stream(). - filter(s -> StringUtils.isNotBlank(s.getAttributeGroup())).collect(Collectors.groupingBy(s -> s.getAttributeGroup())); - templateVO.getAttributes().forEach(attrVO -> { - UIFormItemVO formItemVO = templateAttr2FormField(attrVO, templateVO.getBtmTypeId()); - itemVOS.add(formItemVO); - }); + Map<String, List<CodeClassifyTemplateAttrVO>> attrGroupMap = new HashMap<>(); + if (Func.isNotEmpty(templateVO.getAttributes())) { + attrGroupMap = templateVO.getAttributes().stream(). + filter(s -> StringUtils.isNotBlank(s.getAttributeGroup())).collect(Collectors.groupingBy(s -> s.getAttributeGroup())); + templateVO.getAttributes().forEach(attrVO -> { + UIFormItemVO formItemVO = templateAttr2FormField(attrVO, templateVO.getBtmTypeId()); + itemVOS.add(formItemVO); + }); + } //澶勭悊灞炴�у垎缁� if (!CollectionUtils.isEmpty(attrGroupMap)) { //鎸夌収鍒嗙粍鐨勫睘鎬ф帓鍒楋紝鎵惧埌姣忎竴涓垎缁勭殑绗竴涓睘鎬� @@ -984,7 +1103,11 @@ lineVO.setField(attrVO.getId() + "_line"); lineVO.setType("line"); lineVO.setText(key); - //鎵句綅缃� + List<CodeClassifyTemplateAttrVO> collect = value.stream().filter(s -> "true".equals(s.getFormDisplayFlag())).collect(Collectors.toList()); + if(collect.size() == 0){ + continue; + } + //鎵句綅缃� for (int i = 0; i < itemVOS.size(); i++) { UIFormItemVO record = itemVOS.get(i); if (record.getField().equalsIgnoreCase(attrVO.getId())) { @@ -1086,8 +1209,9 @@ itemVO.setType("refer"); itemVO.setShowField(itemVO.getField() + "name"); if (StringUtils.isNotBlank(attrVO.getReferConfig())) { - //閰嶇疆鐨勫唴瀹� - itemVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class)); + // 閰嶇疆鐨勫唴瀹� + // itemVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class)); + itemVO.setReferConfig(referConfigToUIUiTable(attrVO.getReferConfig())); } else { UIFormReferVO formReferVO = new UIFormReferVO(); formReferVO.setType("default"); @@ -1201,7 +1325,8 @@ fieldVO.setShowField(fieldVO.getField()); if (StringUtils.isNotBlank(attrVO.getReferConfig())) { //閰嶇疆鐨勫唴瀹� - fieldVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class)); + // fieldVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class)); + fieldVO.setReferConfig(referConfigToUIUiTable(attrVO.getReferConfig())); } else { UIFormReferVO formReferVO = new UIFormReferVO(); formReferVO.setType("default"); @@ -1229,11 +1354,61 @@ } fieldVO.setOptionJsMap(eventJsMap); fieldVO.setStyle(attrVO.getTableDisplayStyle()); + fieldVO.setTableDisplayFlag(attrVO.getTableDisplayFlag()); //鍒楄〃閲屼笉鍏佽鐩存帴缂栬緫 fieldVO.setDateFormate(attrVO.getCodeDateFormat()); return fieldVO; } + /** + * 灏唕eferconfig杞崲涓篔SON鏍煎紡鐨刄IFormReferVO + * @param codeReferConfigVO + * @return + */ + private UIFormReferVO referConfigToUIUiTable(String codeReferConfigVO){ + CodeReferConfigVO codeReferConfig = JSONObject.parseObject(codeReferConfigVO, CodeReferConfigVO.class); + // 鎷疯礉涓轰互鍓嶇殑鑰佸璞� + UIFormReferVO uiFormReferVO = new UIFormReferVO(); + org.springblade.core.tool.utils.BeanUtil.copy(codeReferConfig,uiFormReferVO); + + // 琛ㄦ牸鐨勮嚜瀹氫箟瀹氫箟 + UITableCustomDefineVO uiTableConfigVO = new UITableCustomDefineVO(); + uiTableConfigVO.setPage(new UITablePageVO(codeReferConfig.getLimit(),1)); + // 鍒楄〃鐨勫垪鐨勪俊鎭浆鎹� + List<UITableFieldVO> uiTableFieldVOs = new ArrayList<>(); + // 蹇�熸煡璇㈠垪 + List<UITableFieldVO> queryColumns = new ArrayList<>(); + if(!CollectionUtils.isEmpty(codeReferConfig.getCodeShowFieldConfigVOS())){ + codeReferConfig.getCodeShowFieldConfigVOS().stream().forEach(showField ->{ + UITableFieldVO tableColVO = new UITableFieldVO(); + org.springblade.core.tool.utils.BeanUtil.copy(showField,tableColVO); + tableColVO.setSortField(showField.getAttrSortField()); + uiTableFieldVOs.add(tableColVO); + if(showField.getIsQuery().equals("true")){ + queryColumns.add(tableColVO); + } + }); + } + // 鏄剧ず鐨勫垪 + uiTableConfigVO.setCols(uiTableFieldVOs); + // 蹇�熸煡璇㈠垪 + uiTableConfigVO.setQueryColumns(queryColumns); + //set缁欒〃鏍奸厤缃睘鎬� + uiFormReferVO.setTableConfig(uiTableConfigVO); + //瀛楁鍚嶄笉涓�鑷达紝闇�瑕佹墜鍔╯et + + uiFormReferVO.setMuti(StringUtils.isBlank(codeReferConfig.getIsMuti())?false:true); + uiFormReferVO.setInitSort(new UIFieldSortVO(codeReferConfig.getSortField(),codeReferConfig.getSortType())); + // 绛涢�夋潯浠� + HashMap<String, String> whereMap = new HashMap<>(); + if(!CollectionUtils.isEmpty(codeReferConfig.getCodeSrchCondConfigVOS())){ + codeReferConfig.getCodeSrchCondConfigVOS().stream().forEach(srch->{ + whereMap.put(srch.getFilterField()+srch.getFilterType(),srch.getFilterValue()); + }); + } + uiFormReferVO.setWhere(whereMap); + return uiFormReferVO; + } /** * 鐩镐技椤规煡璇� @@ -1277,7 +1452,7 @@ conditionMap.putAll(andConditionMap); PageHelper pageHelper = new PageHelper(-1); pageHelper.addDefaultDesc("id"); - return queryGrid(fullInfoBO.getTopClassifyVO().getBtmtypeid(), templateVO, conditionMap, pageHelper); + return queryGrid(fullInfoBO.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, pageHelper); } return new DataGrid<>(); } @@ -1298,11 +1473,11 @@ //璇存槑宸茬粡瀛樺湪 return resembleRuleService.getObjectByOid(currentClassifyVO.getCodeResembleRuleOid()); } - if (StringUtils.isBlank(currentClassifyVO.getParentcodeclassifyoid())) { + if (StringUtils.isBlank(currentClassifyVO.getParentCodeClassifyOid())) { return null; } Map<String, CodeClassifyVO> classifyVOMap = fullInfoBO.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); - return getUseResembleRule(fullInfoBO, classifyVOMap.getOrDefault(currentClassifyVO.getParentcodeclassifyoid(), null)); + return getUseResembleRule(fullInfoBO, classifyVOMap.getOrDefault(currentClassifyVO.getParentCodeClassifyOid(), null)); } /** @@ -1379,7 +1554,16 @@ public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) { CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper); // List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage()); - List<Map<String, String>> maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage()); + List<Map<String, String>> maps = null; + try { + maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage()); + }catch (Exception e){ + String errorMessage = e.getMessage(); + if (errorMessage.contains("鏃犳硶瑙f瀽鐨勬垚鍛樿闂〃杈惧紡")) { + throw new ServiceException("缂哄皯"+errorMessage.substring(errorMessage.indexOf("[t.") + 1, errorMessage.indexOf("]"))+"瀛楁"); + } + throw new ServiceException(e.getMessage()); + } DataGrid<Map<String, String>> dataGrid = new DataGrid<>(); List<Map<String, String>> dataList = new ArrayList<>(); @@ -1387,7 +1571,7 @@ maps.stream().forEach(map -> { Map<String, String> data = new HashMap<>(); for (String s : map.keySet()) { - data.put(s.toLowerCase(Locale.ROOT), String.valueOf(map.get(s))); + data.put(s.toLowerCase(Locale.ROOT), map.get(s)==null?null:String.valueOf(map.get(s))); } // map.forEach((key, value) -> { // data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); @@ -1442,26 +1626,32 @@ } //鍏堣浆鎹竴涓嬫椂闂存牸寮� List<String> finalOnlySelectAttrIdList = onlySelectAttrIdList.stream().collect(Collectors.toList()); - List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = templateVO.getAttributes().stream().filter( - s -> StringUtils.isNotBlank(s.getCodeDateFormat()) && - (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT))) - ).collect(Collectors.toList()); - //鏋氫妇鐨勫唴瀹� - List<CodeClassifyTemplateAttrVO> enumAttrVOs = templateVO.getAttributes().stream().filter( - s -> (StringUtils.isNotBlank(s.getEnumId()) || StringUtils.isNotBlank(s.getEnumString())) - && - (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT))) - ).collect(Collectors.toList()); + List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = new ArrayList<>(); + List<CodeClassifyTemplateAttrVO> enumAttrVOs = new ArrayList<>(); + if (Func.isNotEmpty(templateVO.getAttributes())) { + dateFormatAttrVOs = templateVO.getAttributes().stream().filter( + s -> StringUtils.isNotBlank(s.getCodeDateFormat()) && + (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT))) + ).collect(Collectors.toList()); + //鏋氫妇鐨勫唴瀹� + enumAttrVOs = templateVO.getAttributes().stream().filter( + s -> (StringUtils.isNotBlank(s.getEnumId()) || StringUtils.isNotBlank(s.getEnumString())) + && + (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT))) + ).collect(Collectors.toList()); + } List<String> userIds = new ArrayList<>(); - dataMap.stream().forEach(data -> { + List<CodeClassifyTemplateAttrVO> finalDateFormatAttrVOs = dateFormatAttrVOs; + List<CodeClassifyTemplateAttrVO> finalEnumAttrVOs = enumAttrVOs; + dataMap.stream().forEach(data -> { //澶勭悊鏃堕棿 if (!form) { //琛ㄥ崟鐨勬椂鍊欏彧鑳界敤缁熶竴鐨勬椂闂存牸寮� - wrapperDateFormat(dateFormatAttrVOs, data); + wrapperDateFormat(finalDateFormatAttrVOs, data); } //澶勭悊鏋氫妇 - wrapperEnum(enumAttrVOs, data); + wrapperEnum(finalEnumAttrVOs, data); String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD); String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION, ""); if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus)) @@ -1576,17 +1766,25 @@ //鍥犱负鍙傜収涓嶄竴瀹氭槸鍦ㄥ钩鍙扮殑灞炴�ф睜閲岄潰璁剧疆锛屾墍浠ユ垜浠緱闇�瑕佽嚜琛屽鐞� //鍙傝�僔ciQueryWrapper鏉ュ鐞� //1. 鎵惧埌鎵�鏈夌殑瀛楁锛� - Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); - List<String> selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList()); + Map<String, CodeClassifyTemplateAttrVO> attrVOMap = new HashMap<>(); + List<String> selectFieldList = new ArrayList<>(); + if(Func.isNotEmpty(templateVO.getAttributes())){ + attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList()); + } //鎵�鏈夌殑鍙傜収鐨勫瓧娈� Map<String/**灞炴�у瓧娈�**/, String> joinTableList = new ConcurrentHashMap<>(); - List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter( - s -> StringUtils.isNotBlank(s.getReferBtmId()) || StringUtils.isNotBlank(s.getReferConfig()) - ).collect(Collectors.toList()); + List<CodeClassifyTemplateAttrVO> referAttrVOs = null; + if (Func.isNotEmpty(templateVO.getAttributes())) { + referAttrVOs = templateVO.getAttributes().stream().filter( + s -> StringUtils.isNotBlank(s.getReferBtmId()) || StringUtils.isNotBlank(s.getReferConfig()) + ).collect(Collectors.toList()); + } Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫瓧娈�**/> referFieldMap = new ConcurrentHashMap<>(); if (!CollectionUtils.isEmpty(referAttrVOs)) { - referAttrVOs.parallelStream().forEach(attrVO -> { + List<String> finalSelectFieldList = selectFieldList; + referAttrVOs.parallelStream().forEach(attrVO -> { UIFormReferVO referVO = null; if (StringUtils.isNotBlank(attrVO.getReferConfig())) { referVO = JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class); @@ -1616,7 +1814,7 @@ showFieldInSource = textFields.get(0); } referFieldMap.put(attrVO.getId(), referTableNick + "." + showFieldInSource); - selectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField); + finalSelectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField); }); } R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getDefaultAttrByBtmId(btmType); @@ -1660,11 +1858,12 @@ } }); - andCondtionMap.forEach((k, v) -> { - andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap, btmType)); + Map<String, CodeClassifyTemplateAttrVO> finalAttrVOMap = attrVOMap; + andCondtionMap.forEach((k, v) -> { + andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, finalAttrVOMap, btmType)); }); orConditionMap.forEach((k, v) -> { - orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap, btmType)); + orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, finalAttrVOMap, btmType)); }); } //缁勫悎璧锋潵 @@ -1747,7 +1946,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"); @@ -1782,7 +1981,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")) { //璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓� @@ -1867,7 +2066,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)) { @@ -1979,7 +2178,7 @@ } R<BtmTypeVO> r = btmTypeClient.getDefaultAttrByBtmId(btmType); List<BtmTypeAttributeVO> attributes = r.getData().getAttributes(); - if (r.getCode() != 200 || attributes.isEmpty()) { + if (!r.isSuccess() || attributes.isEmpty()) { return false; } return attributes.stream().anyMatch(item -> item.getId().equals(selectKey)); @@ -2000,13 +2199,21 @@ sql.append("t."); } if (value.startsWith(QueryOptionConstant.IN)) { - sql.append(selectKey) + if(value.startsWith(QueryOptionConstant.IN+"('") && value.endsWith("')")){ + sql.append(selectKey) + .append(SPACE) + .append("in") + .append(SPACE) + .append(value.replace(QueryOptionConstant.IN, "")); + }else{ + sql.append(selectKey) .append(SPACE) .append("in") .append(SPACE) .append("(") .append(value.replace(QueryOptionConstant.IN, "")) .append(")"); + } } else if (value.startsWith(QueryOptionConstant.NOTIN)) { sql.append(selectKey) .append(SPACE) @@ -2102,22 +2309,15 @@ // CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 - List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), orderDTO.getOid()); + List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), orderDTO.getOid()); 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()); - - if (cbo != null) { + if (cbo == null) { throw new VciBaseException(DATA_OID_NOT_EXIST); } -// ClientBusinessObject cbo = cbos.get(0); if (!cbo.getTs().toString().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) { throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯"); } @@ -2127,9 +2327,16 @@ //娉ㄦ剰妯℃澘涓嶈兘浣跨敤鏁版嵁瀛樺偍鐨勬椂鍊欑殑妯℃澘锛屽洜涓哄彲鑳戒細鍙樺寲 - //1. 鍒ゆ柇蹇呰緭椤� + String codeClassifyOid=cbo.getData().get(CODE_CLASSIFY_OID_FIELD.toUpperCase()); + orderDTO.setCodeClassifyOid(codeClassifyOid); +// CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); +// CodeClassifyTemplateVO templateVO= this.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid()); + + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); - checkRequiredAttrOnOrder(templateVO, orderDTO); + orderDTO.setTemplateOid(templateVO.getOid()); + //1. 鍒ゆ柇蹇呰緭椤� + checkRequiredAttrOnOrder(templateVO, orderDTO); //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 @@ -2146,46 +2353,21 @@ copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� cbo.setDescription(orderDTO.getDescription()); - cbo.setName(orderDTO.getName()); +// cbo.setName(orderDTO.getName()); try { cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); cbo.setName(orderDTO.getName()); -//// cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); -// cbo.setAttributeValue("name", orderDTO.getName()); } catch (Exception e) { e.printStackTrace(); } +// cbo.getData().putAll(orderDTO.getData()); cbo.setLastModifyTime(new Date()); cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId())); - updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), Collections.singletonList(cbo)); -// codeWupinMapper.updateById(cbo); -// -// List<CodeWupinEntity> cboList = new ArrayList<>(); -// -// //澶囨敞 -// cbo.setDescription(orderDTO.getDescription()); -// cboList.add(cbo); -//// -//// cboList.add(cbo); -// List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(),cboList); -// -// -// List<String> charList = new ArrayList<>(); -// for (CodeWupinEntity wupinEntity : cboList) { -// charList.add(wupinEntity.getId()); -// } -// batchSaveSelectChar(templateVO, charList); -// return codeList.size() > 0 ? codeList.get(0) : ""; - - - //淇敼鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑 -// BatchCBO batchCBO = new BatchCBO(); -// batchCBO.getUpdateCbos().add(cbo); -// List<ClientBusinessObject> cboList = new ArrayList<>(); -// cboList.add(cbo); -// boService.persistenceBatch(batchCBO); - batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); -// batchSaveSelectChar(templateVO, Arrays.asList(cbo.getId())); + R r = updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), Collections.singletonList(cbo)); + if(!r.isSuccess()){ + throw new ServiceException(r.getMsg()); + } + batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); } /** @@ -2209,7 +2391,7 @@ oidCollection.stream().forEach(oids -> { Map<String, String> conditionMap = new HashMap<>(); // conditionMap.put("oid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")"); - List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), oids); + List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), oids); // boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), conditionMap); cboList.addAll(cbos); }); @@ -2223,7 +2405,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)) { @@ -2235,10 +2417,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("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } @@ -2262,7 +2444,6 @@ //鎵鹃樁娈� return phaseAttrService.listAttrByTemplateOidAndPhaseId(templateVO.getOid(), phase); } - /** * 璺緞涓婂寘鍚綋鍓嶅垎绫荤殑鎵�鏈夊垎绫讳俊鎭� @@ -2305,26 +2486,28 @@ //4. 鏌ヨ鐨勬椂鍊欙紝鐩存帴浣跨敤codeclsfpath鏉ユ煡璇� CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(codeClassifyOid); CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); - if (topClassifyVO == null || StringUtils.isBlank(topClassifyVO.getBtmtypeid())) { + if (topClassifyVO == null || StringUtils.isBlank(topClassifyVO.getBtmTypeId())) { throw new VciBaseException("褰撳墠涓婚搴撳垎绫绘病鏈夐《灞傚垎绫伙紝鎴栬�呴《灞傚垎绫绘病鏈夎缃笟鍔$被鍨�"); } - String btmTypeId = topClassifyVO.getBtmtypeid(); + String btmTypeId = topClassifyVO.getBtmTypeId(); if (StringUtils.isBlank(btmTypeId)) { return new DataGrid<>("杩欎釜鍒嗙被鎵�灞為《灞傚垎绫绘病鏈夋坊鍔犱笟鍔$被鍨�"); } 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(MdmBtmTypeConstant.CODE_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 )"); } @@ -2370,27 +2553,22 @@ 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); } - 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)) { + List<BaseModel> cboList = selectByTypeAndOid(topClassifyFullInfo.getTopClassifyVO().getBtmTypeId(), VciBaseUtil.array2String(orderDTOMap.keySet().toArray(new String[0]))); + 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, BaseModel> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); + 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())) { + if (!cbo.getTs().toString().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) { throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯"); } if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { @@ -2416,22 +2594,14 @@ //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); cbo.setName(orderDTO.getName()); -// try { -// 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); batchSaveSelectChar(firstTemplateVO, cboList); }); -// boService.persistenceBatch(batchCBO); - updateBatchByBaseModel(topClassifyFullInfo.getTopClassifyVO().getBtmtypeid(), updateList); + updateBatchByBaseModel(topClassifyFullInfo.getTopClassifyVO().getBtmTypeId(), updateList); return R.success("鎿嶄綔鎴愬姛锛�"); } @@ -2536,17 +2706,10 @@ orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); //闇�瑕佸崌鐗� -// ClientBusinessObjectOperation cboOperation = new ClientBusinessObjectOperation(); BaseModel cbo = null; -// try { -// //cbo = cboOperation.createBusinessObjectVersion(oldCbo,VciBaseUtil.getCurrentUserId()); cbo = reviseBusinessObject(oldCbo); -// } catch (VCIError e) { -// throw new VciBaseException("鍒濆鍖栫浉鍏崇殑鍐呭鍑虹幇浜嗛敊璇�", new String[0], e); -// } //1. 鍒ゆ柇蹇呰緭椤� - //CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); - checkRequiredAttrOnOrder(templateVO, orderDTO); + checkRequiredAttrOnOrder(templateVO, orderDTO); //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 @@ -2564,20 +2727,17 @@ //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); cbo.setName(orderDTO.getName()); -// try { 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(cbo.getCreateTime()); cbo.setLastModifyTime(cbo.getLastModifyTime()); -// List<ClientBusinessObject> cboList = new ArrayList<>(); -// cboList.add(cbo); + cbo.setTenantId(AuthUtil.getTenantId()); + oldCbo.setLastV("0"); + oldCbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId())); + oldCbo.setLastModifyTime(new Date()); try { -// cboOperation.saveRevisionBuinessObject(cbo); + updateBatchByBaseModel(oldCbo.getBtmname(), Collections.singletonList(oldCbo)); insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo)); } catch (Exception vciError) { throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); @@ -2607,15 +2767,105 @@ public CodeRuleVO getCodeRuleByClassifyOid(String codeClassifyOid) { VciBaseUtil.alertNotNull(codeClassifyOid, "鍒嗙被鐨勪富閿�"); CodeClassifyVO classifyVO = classifyService.getObjectByOid(codeClassifyOid); - String codeRuleOid = classifyVO.getCoderuleoid(); + 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(), + CodeSecTypeEnum.CODE_DATE_SEC.getValue() + ); + // 鍙鐮佹绫诲瀷 + List<String> readOnlyTypes = Arrays.asList( + CodeSecTypeEnum.CODE_LEVEL_SEC.getValue(), + CodeSecTypeEnum.CODE_ATTR_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.setCodeDateValue(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.setCodeDateValue(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.setCodeDateValue(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; + } /** * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒� @@ -2627,24 +2877,24 @@ public CodeRuleVO getCodeRuleByClassifyFullInfo(CodeClassifyFullInfoBO fullInfoBO) { //寰�涓婃壘 String codeRuleOid = ""; - if (StringUtils.isNotBlank(fullInfoBO.getCurrentClassifyVO().getCoderuleoid())) { - codeRuleOid = fullInfoBO.getCurrentClassifyVO().getCoderuleoid(); + if (StringUtils.isNotBlank(fullInfoBO.getCurrentClassifyVO().getCodeRuleOid())) { + codeRuleOid = fullInfoBO.getCurrentClassifyVO().getCodeRuleOid(); } else { if (CollectionUtils.isEmpty(fullInfoBO.getParentClassifyVOs())) { //璇存槑宸茬粡鏄渶楂樺眰绾�, - throw new VciBaseException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�"); + throw new ServiceException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�"); } 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++) { CodeClassifyVO record = parentClassifyVOList.get(i); - if (StringUtils.isNotBlank(record.getCoderuleoid())) { - codeRuleOid = record.getCoderuleoid(); + if (StringUtils.isNotBlank(record.getCodeRuleOid())) { + codeRuleOid = record.getCodeRuleOid(); break; } } if (StringUtils.isBlank(codeRuleOid)) { - throw new VciBaseException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�"); + throw new ServiceException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�"); } } return ruleService.getObjectHasSecByOid(codeRuleOid); @@ -2662,7 +2912,7 @@ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); //涓轰簡闃叉妯℃澘涓婄殑涓氬姟绫诲瀷涓庡垎绫讳笂涓嶅搴� CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(templateVO.getCodeclassifyoid()); - String btmId = topClassifyVO.getBtmtypeid(); + String btmId = topClassifyVO.getBtmTypeId(); //鏌ヨ鏁版嵁 Map<String, String> conditionMap = new HashMap<>(); conditionMap.put("t.oid", oid); @@ -2673,7 +2923,7 @@ cbosB.stream().forEach(map -> { Map<String, String> data = new HashMap<>(); for (Object o : map.keySet()) { - data.put(((String) o).toLowerCase(Locale.ROOT), String.valueOf(map.get(o))); + data.put(((String) o).toLowerCase(Locale.ROOT), map.get(o)==null?"":String.valueOf(map.get(o))); } cbos.add(data); }); @@ -2869,6 +3119,51 @@ return uiInfoVO; } + /** + * 浣跨敤鍒嗙被鐨勪富閿幏鍙栬〃鏍肩殑瀹氫箟-ubcs鍚庝慨鏀硅幏鍙栨祦绋嬮樁娈电啛鎮夎幏鍙栨柟娉� + * @param codeClassifyOid + * @param templateId + * @param taskId + * @param modelKey + * @return + */ + public MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid,String templateId,String taskId,String modelKey) { + MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); + CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); + uiInfoVO.setTemplateVO(templateVO); + UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO, true); + R<List<ProcessStageAttrVO>> r = imdmiFlowAttrClient.ssslist(templateId,modelKey,taskId); + List<ProcessStageAttrVO> stageAttrVOS = r.getData(); + List<String> attrList = new ArrayList<>(); + stageAttrVOS.stream().forEach(attr->{ + attrList.add(attr.getAttrId()); + }); + uiTableDefineVO.getCols().stream().forEach(list -> { + List<UITableFieldVO> visiableTableField = new ArrayList<>(); + visiableTableField = list.stream().filter(col -> + attrList.stream().anyMatch(s -> StringUtils.equalsIgnoreCase(col.getField(), s) || + (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s)) + || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s)) + )).collect(Collectors.toList()); + + visiableTableField.stream().forEach(vo -> { + uiTableDefineVO.setHasEditor(true); + if ("refer".equalsIgnoreCase(vo.getFieldType())) { + setReferConfig2EditConfig(vo); + } else if ("combox".equalsIgnoreCase(vo.getFieldType())) { + setComboxConfig2EditConfig(vo); + } else if (StringUtils.isNotBlank(vo.getDateFormate())) { + vo.setEdit("date"); + } else { + vo.setEdit(vo.getFieldType()); + } + }); + }); + uiInfoVO.setTableDefineVO(uiTableDefineVO); + wrapperResemble(templateVO, uiInfoVO); + return uiInfoVO; + } + /** * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸瀹氫箟鐨勪俊鎭� * @@ -2888,38 +3183,43 @@ List<UITableFieldVO> fieldVOList = new ArrayList<>(); Map<String, String> comboxOrReferFieldMap = new HashMap<>(); - templateVO.getAttributes().forEach(attrVO -> { - UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, forEdit); - if ("combox".equalsIgnoreCase(tableFieldVO.getFieldType())) { - comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField()); - } - if ("refer".equalsIgnoreCase(tableFieldVO.getFieldType())) { - comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField()); - } - if (StringUtils.isNotBlank(tableFieldVO.getEdit())) { - tableDefineVO.setHasEditor(true); - } - fieldVOList.add(tableFieldVO); - }); + if (Func.isNotEmpty(templateVO.getAttributes())) { + templateVO.getAttributes().forEach(attrVO -> { + UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, forEdit); + if ("combox".equalsIgnoreCase(tableFieldVO.getFieldType())) { + comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField()); + } + if ("refer".equalsIgnoreCase(tableFieldVO.getFieldType())) { + comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField()); + } + if (StringUtils.isNotBlank(tableFieldVO.getEdit())) { + tableDefineVO.setHasEditor(true); + } + fieldVOList.add(tableFieldVO); + }); + } List<List<UITableFieldVO>> cols = new ArrayList<>(); cols.add(fieldVOList); tableDefineVO.setCols(cols); Map<String, UITableFieldVO> fieldVOMap = fieldVOList.stream().collect(Collectors.toMap(s -> s.getField().toLowerCase(Locale.ROOT), t -> t)); - //鏌ヨ灞炴�� - List<CodeClassifyTemplateAttrVO> queryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getQueryAttrFlag())).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(queryAttrVOs)) { - List<UITableFieldVO> queryFieldVOs = new ArrayList<>(); - queryAttrVOs.stream().forEach(attrVO -> { - String attrId = attrVO.getId().toLowerCase(Locale.ROOT); - attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrVO.getId()).toLowerCase(Locale.ROOT); - if (fieldVOMap.containsKey(attrId)) { - queryFieldVOs.add(fieldVOMap.get(attrId)); - } - }); - tableDefineVO.setQueryColumns(queryFieldVOs); - } - //楂樼骇灞炴�� - List<CodeClassifyTemplateAttrVO> seniorQueryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getSeniorQueryAttrFlag())).collect(Collectors.toList()); + List<CodeClassifyTemplateAttrVO> seniorQueryAttrVOs = null; + if (Func.isNotEmpty(templateVO.getAttributes())) { + //鏌ヨ灞炴�� + List<CodeClassifyTemplateAttrVO> queryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getQueryAttrFlag())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(queryAttrVOs)) { + List<UITableFieldVO> queryFieldVOs = new ArrayList<>(); + queryAttrVOs.stream().forEach(attrVO -> { + String attrId = attrVO.getId().toLowerCase(Locale.ROOT); + attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrVO.getId()).toLowerCase(Locale.ROOT); + if (fieldVOMap.containsKey(attrId)) { + queryFieldVOs.add(fieldVOMap.get(attrId)); + } + }); + tableDefineVO.setQueryColumns(queryFieldVOs); + } + //楂樼骇灞炴�� + seniorQueryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getSeniorQueryAttrFlag())).collect(Collectors.toList()); + } if (!CollectionUtils.isEmpty(seniorQueryAttrVOs)) { List<UITableFieldVO> queryFieldVOs = new ArrayList<>(); seniorQueryAttrVOs.stream().forEach(attrVO -> { @@ -3104,12 +3404,12 @@ 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<>(); - // } - // //鏌ヨ鎵╁睍鎸夐挳 - // List<CodeButtonVO> buttonVOS = listButtonInToolbarByClassifyOid(codeClassifyOid); + // List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId); + // if (operationVOS == null) { + // operationVOS = new ArrayList<>(); + // } + // //鏌ヨ鎵╁睍鎸夐挳 + // List<CodeButtonVO> buttonVOS = listButtonInToolbarByClassifyOid(codeClassifyOid); List<SmOperationVO> operationVOS = new ArrayList<>(); if (!CollectionUtils.isEmpty(buttonVOS)) { for (int i = 0; i < buttonVOS.size(); i++) { @@ -3129,6 +3429,33 @@ } return uiInfoVO; } + @Override + public MdmUIInfoVO getFlowUIInfoByClassifyOid(String codeClassifyOid, String functionId,String templateId,String taskId,String modelKey){ +// MdmUIInfoVO uiInfoVO = getTableDefineByClassifyOid_v2(codeClassifyOid,templateId,taskId,modelKey); + MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid)); + R<List<ProcessStageAttrVO>> r = imdmiFlowAttrClient.ssslist(templateId,modelKey,taskId); + List<ProcessStageAttrVO> stageAttrVOS = r.getData(); + Set<String> attrSet = new HashSet<>(); + stageAttrVOS.stream().forEach(attr->{ + attrSet.add(attr.getAttrId()); + }); + + try { + + UITableDefineVO tableDefineVO = uiInfoVO.getTableDefineVO(); + List<List<UITableFieldVO>> tableFieldVOs = tableDefineVO.getCols(); + List<UITableFieldVO> uiTableFieldVOS = tableFieldVOs.get(0); + uiTableFieldVOS.stream().forEach(ui->{ +// if(!attrSet.contains(ui.getField())){ +// ui.setEdit(null); +// ui.setEditConfig(null); +// } + }); + }catch (Exception e){ + throw new ServiceException("妯℃澘娌℃湁瀹氫箟灞炴�э紝璇诲彇琛ㄥご澶辫触!"); + } + return uiInfoVO; + } /** * 浣跨敤鍒嗙被涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭� @@ -3179,17 +3506,61 @@ if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } - //灏哹ean杞负map,mybatis缁熶竴澶勭悊 + //鑾峰彇褰撳墠涓氬姟绫诲瀷鎵�鏈夊瓧娈电敤鏉ュ仛瀵规瘮 + R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(btmType); + if (!allAttributeByBtmId.isSuccess() || allAttributeByBtmId.getData().getAttributes().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲瀛楁淇℃伅锛岃妫�鏌ワ紒"); + } + Set<String> existFild = allAttributeByBtmId.getData().getAttributes().stream().map(btmTypeAttributeVO -> { + return btmTypeAttributeVO.getId().toLowerCase(); + }).collect(Collectors.toSet()); + //灏哹ean杞负map,mybatis缁熶竴澶勭悊 List<Map<String, String>> maps = new ArrayList<>(); baseModels.stream().forEach(model -> { try { - maps.add(VciBaseUtil.convertBean2Map(model)); + maps.add(VciBaseUtil.convertBean2Map(model,existFild)); } catch (Exception e) { throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.toString()); } }); 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闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖 @@ -3233,14 +3604,18 @@ && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) { setter.invoke(obj, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue()); map.remove(property.getName().toUpperCase()); - } else if (map.get(property.getName().toUpperCase()) != null) { - setter.invoke(obj, map.get(property.getName().toUpperCase())); + } else if (map.containsKey(property.getName().toUpperCase())) { + if(setter.getParameterTypes()[0].getSimpleName().equals("String")){ + setter.invoke(obj, map.get(property.getName().toUpperCase()) == null ? null:String.valueOf(map.get(property.getName().toUpperCase()))); + }else{ + setter.invoke(obj, map.get(property.getName().toUpperCase())); + } map.remove(property.getName().toUpperCase()); } } } for (Object key : map.keySet()) { - map.put(key, String.valueOf(map.get(key))); + map.put(key, map.get(key) == null ? null : String.valueOf(map.get(key))); } ((BaseModel) obj).setData(map); @@ -3251,7 +3626,6 @@ } return baseModels; } - /** * 鏍规嵁涓氬姟绫诲瀷鍚嶇О鍒涘缓涓氬姟鏁版嵁婧愬璞� @@ -3264,7 +3638,7 @@ if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } - String userName = String.valueOf(AuthUtil.getUser().getUserId()); +// String userName = String.valueOf(AuthUtil.getUser().getUserId()); BaseModel bo = new BaseModel(); // bo.setOid(VciBaseUtil.getPk()); // bo.setRevisionid(VciBaseUtil.getPk()); @@ -3274,16 +3648,16 @@ bo.setFirstR("1"); bo.setFirstV("1"); bo.setLastV("1"); - bo.setCreator(userName); - bo.setCreateTime(new Date()); - bo.setLastModifier(userName); - bo.setLastModifyTime(new Date()); bo.setRevisionRule(listR.getData().get(0).getRevisionRuleId()); - bo.setVersionRule(String.valueOf(listR.getData().get(0).getVersionRule())); + bo.setVersionRule("".equals(listR.getData().get(0).getVersionRule())?"0":listR.getData().get(0).getVersionRule()); if (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId())) { R<List<RevisionRuleVO>> revisionRuleVO = revisionRuleClient - .selectByIdCollection(Collections.singletonList(listR.getData().get(0).getRevisionRuleId())); - bo.setRevisionValue(revisionRuleVO.getData().get(0).getStartCode()); + .selectByIdCollection(Collections.singletonList(listR.getData().get(0).getRevisionRuleId().toLowerCase())); + if(revisionRuleVO.getData().size() != 0 ){ + bo.setRevisionValue(revisionRuleVO.getData().get(0).getStartCode()); + }else{ + bo.setRevisionValue("1"); + } } bo.setRevisionSeq(1); bo.setVersionSeq(1); @@ -3296,7 +3670,7 @@ bo.setId(""); bo.setName(""); bo.setDescription(""); - bo.setOwner(userName); + bo.setOwner("1"); // bo.setCheckinby(userName); bo.setCopyFromVersion(""); // this.initTypeAttributeValue(bo,btmTypeVO); @@ -3334,12 +3708,20 @@ if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } + //鑾峰彇褰撳墠涓氬姟绫诲瀷鎵�鏈夊瓧娈电敤鏉ュ仛瀵规瘮 + R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(btmType); + if (!allAttributeByBtmId.isSuccess() || allAttributeByBtmId.getData().getAttributes().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲瀛楁淇℃伅锛岃妫�鏌ワ紒"); + } + Set<String> existFild = allAttributeByBtmId.getData().getAttributes().stream().map(btmTypeAttributeVO -> { + return btmTypeAttributeVO.getId(); + }).collect(Collectors.toSet()); //灏哹ean杞负map,mybatis缁熶竴澶勭悊 List<Map<String, String>> maps = new ArrayList<>(); baseModels.stream().forEach(model -> { try { - maps.add(VciBaseUtil.convertBean2Map(model)); + maps.add(VciBaseUtil.convertBean2Map(model,existFild)); } catch (Exception e) { throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); } @@ -3353,20 +3735,79 @@ return R.success("鏇存柊鎴愬姛锛�"); } + /** + * 鏇存柊涓氬姟鏁版嵁鍚屾椂瀵圭爜鍊艰〃鏁版嵁鎿嶄綔鎺ュ彛 + * + * @param btmType 涓氬姟绫诲瀷 + * @param baseModels 澶勭悊鏁版嵁 + * @return 澶勭悊鐘舵�� + */ + @Transactional(rollbackFor = VciBaseException.class) + @Override + public R<Integer> updateBatchBtypeDatas(String btmType, List<BaseModel> baseModels) { - /** + //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + //鑾峰彇褰撳墠涓氬姟绫诲瀷鎵�鏈夊瓧娈电敤鏉ュ仛瀵规瘮 + R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(btmType); + if (!allAttributeByBtmId.isSuccess() || allAttributeByBtmId.getData().getAttributes().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲瀛楁淇℃伅锛岃妫�鏌ワ紒"); + } + Set<String> existFild = allAttributeByBtmId.getData().getAttributes().stream().map(btmTypeAttributeVO -> { + return btmTypeAttributeVO.getId(); + }).collect(Collectors.toSet()); + if(!CollectionUtils.isEmpty(baseModels)){ + List<String> oidList=baseModels.stream().filter(data-> com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(data.getOid())).map(BaseModel::getOid).distinct().collect(Collectors.toList()); + LambdaQueryWrapper<CodeAllCode> lqw = new LambdaQueryWrapper<>(); + lqw.in(CodeAllCode::getCreateCodeOid,oidList); + List<CodeAllCode> codeAllCodeList= codeAllCodeService.selectByWrapper(lqw); + Map<String, CodeAllCode> cboMap = codeAllCodeList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getCreateCodeOid(), t -> t)); + List<CodeAllCode> newCodeAllCodeList=new ArrayList<>(); + //灏哹ean杞负map,mybatis缁熶竴澶勭悊 + List<Map<String, String>> maps = new ArrayList<>(); + try { + baseModels.stream().forEach(baseModel->{ + String oid=baseModel.getOid(); + try { + maps.add(VciBaseUtil.convertBean2Map(baseModel,existFild)); + } catch (Exception e) { + throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); + } + if(cboMap.containsKey(oid)){ + CodeAllCode codeAllCode= cboMap.get(oid); + codeAllCode.setId(baseModel.getId()); + codeAllCode.setLastModifier(AuthUtil.getUser().getUserName()); + codeAllCode.setLastModifyTime(new Date()); + codeAllCode.setLcStatus(baseModel.getLcStatus()); + newCodeAllCodeList.add(codeAllCode); + } + }); + commonsMapper.updateBatchByBaseModel(listR.getData().get(0).getTableName(), maps); + codeAllCodeService.saveOrUpdateBatch(newCodeAllCodeList); + } catch (Exception e) { + throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); + } + + } + return R.success("鏇存柊鎴愬姛锛�"); + } + + /** * 鑾峰彇鍙傜収鐨勪俊鎭� * * @param referConfigVO 鍙傜収鐨勯厤缃� * @return 鍒楄〃鏁版嵁 */ @Override - public IPage<BaseModel> referDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject) throws VciBaseException { + public IPage<BaseModelVO> referDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject) throws VciBaseException { //checkReferConfig(referConfigVO); //浣跨敤涓氬姟绫诲瀷鏌ヨ R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(referConfigVO.getReferType()); - if (allAttributeByBtmId.getCode() != 200) { - throw new ServiceException("涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒锛�"); + if (!allAttributeByBtmId.isSuccess()) { + throw new ServiceException("涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒;"+allAttributeByBtmId.getMsg()); } if (Func.isEmpty(allAttributeByBtmId.getData())) { throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); @@ -3387,12 +3828,13 @@ } R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referConfigVO.getReferType())); - if (listR.getCode() != 200) { + if (!listR.isSuccess()) { throw new ServiceException(Func.isNotBlank(listR.getMsg()) ? listR.getMsg() : "涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒锛�"); } if (listR.getData().isEmpty()) { - throw new VciBaseException(Func.isNotBlank(listR.getMsg()) ? listR.getMsg() : "浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } + // TODO:鍙傜収閰嶇疆鐨勬ā绯婃煡璇㈣繃婊ゆ潯浠舵殏鏈鐞� String namesql = ""; if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("name"))) { String s = baseQueryObject.getConditionMap().get("name"); @@ -3409,22 +3851,22 @@ String lcstatusSql = ""; if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("lcstatus"))) { - lcstatusSql = "lcstatus =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lcstatus")); + lcstatusSql = "and lcstatus =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lcstatus")); } - String where = ""; +// String where = ""; - if (StringUtils.isNotBlank(codesql) || StringUtils.isNotBlank(lcstatusSql) || StringUtils.isNotBlank(namesql)) { - where="where "; - } +// if (StringUtils.isNotBlank(codesql) || StringUtils.isNotBlank(lcstatusSql) || StringUtils.isNotBlank(namesql)) { +// where = "where "; +// } String num1 = baseQueryObject.getPage() * baseQueryObject.getLimit() + ""; String num2 = ((baseQueryObject.getPage()) - 1) * baseQueryObject.getLimit() + 1 + ""; List<Map> maps = commonsMapper.selectBySql("select * from ( select rownum rn, t.* from (select * from " + listR.getData().get(0).getTableName() + SPACE + (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId()) ? (" where lastr = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastr").toString()) - + " and lastv =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and": where) + SPACE - + lcstatusSql + namesql + codesql + ") t where rownum <=" + num1 + ") where rn >=" + num2 - ); + + " and lastv =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 " + + lcstatusSql + namesql + codesql + ") t "+ (baseQueryObject.getLimit()==-1?")": ("where rownum <=" + num1 + ") where rn >=" + num2) + )); List<BaseModel> baseModels = new ArrayList<>(); //灏嗘煡璇㈠埌鐨勬暟鎹浆鎹负basemodel锛屼娇鐢ㄧ殑鍙嶅皠鏂瑰紡鏉ヨ繘琛屽垱寤虹殑 try { @@ -3442,23 +3884,28 @@ ZonedDateTime zdt = localDateTime.atZone(zoneId); Date date = Date.from(zdt.toInstant()); setter.invoke(obj, date); - map.remove(property.getName().toUpperCase()); + //map.remove(property.getName().toUpperCase()); } //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊 else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) { setter.invoke(obj, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue()); - map.remove(property.getName().toUpperCase()); + //map.remove(property.getName().toUpperCase()); } else if (map.get(property.getName().toUpperCase()) != null) { - setter.invoke(obj, map.get(property.getName().toUpperCase())); - map.remove(property.getName().toUpperCase()); + if(setter.getParameterTypes()[0].getSimpleName().equals("String")){ + setter.invoke(obj, map.get(property.getName().toUpperCase()) == null ? null:String.valueOf(map.get(property.getName().toUpperCase()))); + }else{ + setter.invoke(obj, map.get(property.getName().toUpperCase())); + } + //map.remove(property.getName().toUpperCase()); } } } for (Object key : map.keySet()) { map.put(key, String.valueOf(map.get(key))); } - - ((BaseModel) obj).setData(map); + Map<String, String> newMap = new HashMap<>(); + map.forEach((key, value) -> newMap.put(String.valueOf(key).toLowerCase(), String.valueOf(value))); + ((BaseModel) obj).setData(newMap); baseModels.add((BaseModel) obj); } } catch (Exception e) { @@ -3466,13 +3913,13 @@ } int total = commonsMapper.queryCountBySql("select count(*) from " + listR.getData().get(0).getTableName() + SPACE + (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId()) ? (" where lastr = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastr").toString()) - + "and lastv = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : where) + SPACE + + "and lastv = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 " + lcstatusSql + namesql + codesql ); - IPage<BaseModel> objectDataGrid = new Page<>(); + IPage<BaseModelVO> objectDataGrid = new Page<>(); objectDataGrid.setPages(baseQueryObject.getPage()); objectDataGrid.setCurrent(baseQueryObject.getPage()); - objectDataGrid.setRecords(baseModels); + objectDataGrid.setRecords(BaseMdodelWrapper.build().listVO(baseModels)); objectDataGrid.setSize(baseQueryObject.getLimit()); objectDataGrid.setTotal(total); return objectDataGrid; @@ -3543,7 +3990,48 @@ } else { if (StringUtils.isNotBlank(referConfigVO.getParentFieldName()) && StringUtils.isNotBlank(queryObject.getParentOid())) { queryObject.getConditionMap().put(referConfigVO.getParentFieldName(), queryObject.getParentOid()); - } + //鏌ヨ鍏ㄩ儴鐨勪俊鎭� + String parentOidSql = ""; + if (StringUtils.isNotBlank(referConfigVO.getParentValue())) { + String temp = referConfigVO.getParentValue(); + if (temp.startsWith(QueryOptionConstant.IN)) { + temp = temp.substring((QueryOptionConstant.IN).length()).trim(); + parentOidSql = " in " + "('" + queryObject.getParentOid() + "')"; + } else if (temp.startsWith(QueryOptionConstant.NOTIN)) { + parentOidSql = " not in " + "('" + queryObject.getParentOid() + "')"; + } else if (temp.startsWith(QueryOptionConstant.NOTEQUAL)) { + temp = temp.substring((QueryOptionConstant.NOTEQUAL).length()).trim(); + parentOidSql = QueryOptionConstant.NOTEQUAL + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } else if (temp.startsWith(QueryOptionConstant.MORETHAN)) { + temp = temp.substring((QueryOptionConstant.MORETHAN).length()).trim(); + parentOidSql = QueryOptionConstant.MORETHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } else if (temp.startsWith(QueryOptionConstant.MORE)) { + temp = temp.substring((QueryOptionConstant.MORE).length()).trim(); + parentOidSql = QueryOptionConstant.MORE + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } else if (temp.startsWith(QueryOptionConstant.LESSTHAN)) { + temp = temp.substring((QueryOptionConstant.LESSTHAN).length()).trim(); + parentOidSql = QueryOptionConstant.LESSTHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } else if (temp.startsWith(QueryOptionConstant.LESS)) { + temp = temp.substring((QueryOptionConstant.LESS).length()).trim(); + parentOidSql = QueryOptionConstant.LESS + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } else if (temp.startsWith(QueryOptionConstant.ISNOTNULL)) { + parentOidSql = " is not null"; + } else if (temp.startsWith(QueryOptionConstant.ISNULL)) { + parentOidSql = " is null"; + } else if (temp.contains("*")) { + parentOidSql = " like " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'").replace("*", "%"); + } else { + parentOidSql = " = " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } + + } + //鏌ヨ鍏ㄩ儴鐨勪俊鎭� + queryObject.getConditionMap().put("oid", QueryOptionConstant.IN + "(select oid from " + + getTableName(referConfigVO.getReferType()) + + " START WITH " + referConfigVO.getParentFieldName() + " " + + parentOidSql + + " CONNECT BY PRIOR " + oidFieldName + " = " + referConfigVO.getParentFieldName() + ")"); + } } LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>(); String sql = queryObject.getConditionMap().get("oid").substring(3); @@ -3556,7 +4044,6 @@ treeWrapperOptions.setParentOid(queryObject.getParentOid()); return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null); } - @Override public boolean checkUnAttrUnEdit(String attrName) { @@ -3585,8 +4072,6 @@ 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()); @@ -3600,16 +4085,13 @@ 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())); + toBo.setVersionRule(fromBo.getVersionRule());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()); -// VersionValueObject versionObj = this.getVersionValue(item.verRuleName); toBo.setVersionSeq(Integer.valueOf(nextRevision.get("VERSIONSEQ").toString())); toBo.setVersionValue(nextRevision.get("VERSIONVAL").toString()); toBo.setLctid(fromBo.getLctid()); @@ -3618,12 +4100,27 @@ 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; } + + /** + * 娴佺▼涓彉鏇寸姸鎬佸�� + * @param flowDTO + * @return + */ + @Override + public R processChangeStatus(FlowStatusDTO flowDTO) { + flowDTO.getOids().forEach(s -> { + BaseModelDTO baseModel = new BaseModelDTO(); + baseModel.setOid(s); + baseModel.setBtmname(flowDTO.getBtmType()); + baseModel.setLcStatus(String.valueOf(flowDTO.getVariableMap().getOrDefault("statusValue","Auditing"))); + changeStatus(baseModel); + }); + return R.success("鎴愬姛"); + } } -- Gitblit v1.9.3