From acb7c4c272aa02c2ed24cde72db429defef9fb8f Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期四, 27 七月 2023 13:54:02 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 150 insertions(+), 16 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 35e96c2..b8a4da5 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 @@ -22,6 +22,9 @@ 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.flow.core.entity.ProcessStageAttr; +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.*; @@ -38,6 +41,7 @@ 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.constant.VciSystemVarConstants; import com.vci.ubcs.starter.web.enumpck.BooleanEnum; import com.vci.ubcs.starter.web.enumpck.UserSecretEnum; import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; @@ -66,6 +70,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.RequestBody; import javax.annotation.Resource; import java.beans.BeanInfo; @@ -278,6 +283,11 @@ * 鏇挎崲瀛楃 */ public static final String SPECIAL_CHAR = "VCI"; + /** + * 涓绘暟鎹祦绋嬮樁娈垫湇鍔� + */ + @Autowired + private IMDMIFlowAttrClient imdmiFlowAttrClient; // @Autowired // private CodeOsbtmtypeMapper codeOsbtmtypeMapper;---- @@ -349,8 +359,6 @@ 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<>(); @@ -366,19 +374,19 @@ 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()); } for (CodeAllCode codeCbo : codeCbos) { codeCbo.setLcStatus(baseModelDTO.getLcStatus()); } codeAllCodeService.updateBatchById(codeCbos); - // lifeCycleService.transCboStatus(codeCbos, baseModelDTO.getLcStatus()); } /** @@ -421,6 +429,7 @@ cbo.setLastModifyTime(new Date()); cbo.setCreator(AuthUtil.getUser().getUserName()); cbo.setLastModifier(AuthUtil.getUser().getUserName()); + cbo.setTenantId(AuthUtil.getTenantId()); // //TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁� cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName()); // //end -- modify by lihang @20220407 @@ -731,7 +740,7 @@ conditionMap.put(queryKey, queryValue); } else { //涓虹┖鐨勬椂鍊欎笉浠h〃涓嶆牎楠岋紝鍙槸涓嶅幓闄ょ浉鍏崇殑淇℃伅 - conditionMap.put("t." + attrId, value); + conditionMap.put("t." + attrId, "'" +value+ "'"); } } } @@ -908,7 +917,7 @@ // baseModels.stream().forEach(model-> { try { - map = VciBaseUtil.convertBean2Map(cbo); + map = VciBaseUtil.convertBean2Map(cbo,null); } catch (Exception e) { throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); } @@ -934,6 +943,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) { @@ -1380,7 +1409,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<>(); @@ -1388,7 +1426,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)); @@ -1995,7 +2033,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)); @@ -2016,13 +2054,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) @@ -2857,6 +2903,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; + } + /** * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸瀹氫箟鐨勪俊鎭� * @@ -3122,6 +3213,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; + } /** * 浣跨敤鍒嗙被涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭� @@ -3172,11 +3290,19 @@ 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(); + }).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()); } @@ -3327,12 +3453,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()); } @@ -3358,7 +3492,7 @@ //checkReferConfig(referConfigVO); //浣跨敤涓氬姟绫诲瀷鏌ヨ R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(referConfigVO.getReferType()); - if (allAttributeByBtmId.getCode() != 200) { + if (!allAttributeByBtmId.isSuccess()) { throw new ServiceException("涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒锛�"); } if (Func.isEmpty(allAttributeByBtmId.getData())) { @@ -3380,7 +3514,7 @@ } 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()) { -- Gitblit v1.9.3