| | |
| | | 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.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.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.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.*; |
| | |
| | | * @date 2022-2-22 |
| | | */ |
| | | @Service |
| | | public class MdmEngineServiceImpl extends ServiceImpl<CodeWupinMapper, CodeWupin> implements MdmEngineService { |
| | | public class MdmEngineServiceImpl implements MdmEngineService { |
| | | |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Resource |
| | | private CodeClstemplateServiceImpl templateService; |
| | | |
| | | |
| | | /** |
| | | * 生成编码的服务 |
| | |
| | | @Resource |
| | | CommonsMapper commonsMapper; |
| | | |
| | | @Resource |
| | | CodeWupinMapper codeWupinMapper; |
| | | /** |
| | | * 编码规则的服务 |
| | | */ |
| | |
| | | * 替换字符 |
| | | */ |
| | | public static final String SPECIAL_CHAR = "VCI"; |
| | | /** |
| | | * 主数据流程阶段服务 |
| | | */ |
| | | @Autowired |
| | | private IMDMIFlowAttrClient imdmiFlowAttrClient; |
| | | // @Autowired |
| | | // private CodeOsbtmtypeMapper codeOsbtmtypeMapper;---- |
| | | |
| | |
| | | if (baseModels.size() == 0) { |
| | | throw new VciBaseException("未查询到相关数据。"); |
| | | } |
| | | // 待完善 |
| | | List<BtmTypeVO> cboList = null; // btmTypeClient.selectList(wrapper); |
| | | //还需要修改allCode的生命周期 |
| | | // 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()); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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(AuthUtil.getUser().getUserName()); |
| | | cbo.setLastModifier(AuthUtil.getUser().getUserName()); |
| | | cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId())); |
| | | cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId())); |
| | | cbo.setTenantId(AuthUtil.getTenantId()); |
| | | if(StringUtils.isNotBlank(orderDTO.getLcStatus())||StringUtils.isNotBlank(orderDTO.getData().get("lcStatus"))){ |
| | | cbo.setLcStatus(StringUtils.isNotBlank(orderDTO.getLcStatus())?orderDTO.getLcStatus():orderDTO.getData().get("lcStatus")); |
| | | } |
| | | // //TODO:因为默认的属性都不拷贝,目前集团码叫name,并没有从DTO拷贝到cbo里。增加一个单独处理,以后再看要不要调整 |
| | | cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName()); |
| | | // //end -- modify by lihang @20220407 |
| | |
| | | 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, ""); |
| | |
| | | }); |
| | | |
| | | //没有限制分类,但是一个模板只可能在一个业务类型里面,所以直接查询这个业务类型即可 |
| | | |
| | | 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())) { |
| | | //修改的时候,需要排除自己 |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 校验关键属性 |
| | | * |
| | | * @param orderDTO 编码申请的相关的信息 |
| | | */ |
| | | 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) -> { |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 封装关键属性的查询语句 |
| | |
| | | boolean ignoreSpace = trim || trimAll; |
| | | if (StringUtils.isBlank(value)) { |
| | | //为空的时候,不能用QueryOperation.ISNULL,平台不知道啥时候不处理这种了 |
| | | conditionMap.put("t." + attrId, "null"); |
| | | conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL); |
| | | } else { |
| | | if (keyRuleVO != null) { |
| | | String queryKey = ""; |
| | |
| | | queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'"); |
| | | conditionMap.put(queryKey, queryValue); |
| | | } else { |
| | | //为空的时候不代表不校验,只是不去除相关的信息 |
| | | conditionMap.put("t." + attrId, value); |
| | | if(StringUtils.isNotBlank(value)) { |
| | | //为空的时候不代表不校验,只是不去除相关的信息 |
| | | conditionMap.put("t." + attrId, "'" + value + "'"); |
| | | }else{ |
| | | conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } 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))) { |
| | |
| | | } |
| | | } |
| | | }); |
| | | // BeanMap beanMap = BeanMap.create(cbo); |
| | | // beanMap.putAll(orderDTO.getData()); |
| | | |
| | | try { |
| | | 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()); |
| | |
| | | |
| | | // baseModels.stream().forEach(model-> { |
| | | try { |
| | | map = VciBaseUtil.convertBean2Map(cbo); |
| | | map = VciBaseUtil.convertBean2Map(cbo,null); |
| | | } catch (Exception e) { |
| | | throw new VciBaseException("类型转换错误:" + e.getMessage()); |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 封装开关的内容,常用于导出 |
| | | * @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) { |
| | |
| | | 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)) { |
| | | //按照分组的属性排列,找到每一个分组的第一个属性 |
| | |
| | | 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())) { |
| | |
| | | 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"); |
| | |
| | | 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"); |
| | |
| | | return fieldVO; |
| | | } |
| | | |
| | | /** |
| | | * 将referconfig转换为JSON格式的UIFormReferVO |
| | | * @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); |
| | | // 筛选条件 |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 相似项查询 |
| | |
| | | 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<>(); |
| | | } |
| | |
| | | //说明已经存在 |
| | | 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)); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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("无法解析的成员访问表达式")) { |
| | | 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<>(); |
| | |
| | | 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)); |
| | |
| | | } |
| | | //先转换一下时间格式 |
| | | 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)) |
| | |
| | | //因为参照不一定是在平台的属性池里面设置,所以我们得需要自行处理 |
| | | //参考VciQueryWrapper来处理 |
| | | //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); |
| | |
| | | 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); |
| | |
| | | } |
| | | }); |
| | | |
| | | 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)); |
| | | }); |
| | | } |
| | | //组合起来 |
| | |
| | | } |
| | | 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)); |
| | |
| | | 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) |
| | |
| | | // 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); |
| | |
| | | // cbo.getData().putAll(orderDTO.getData()); |
| | | cbo.setLastModifyTime(new Date()); |
| | | cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId())); |
| | | updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), Collections.singletonList(cbo)); |
| | | updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), Collections.singletonList(cbo)); |
| | | batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); |
| | | } |
| | | |
| | |
| | | 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); |
| | | }); |
| | |
| | | // batchCBO.getDeleteCbos().addAll(cboList); |
| | | // WebUtil.setPersistence(false); |
| | | // batchCBO.copyFromOther( |
| | | productCodeService.recycleCode(classifyFullInfo.getCurrentClassifyVO().getBtmtypeid(), deleteBatchDTO.getOidList()); |
| | | productCodeService.recycleCode(classifyFullInfo.getCurrentClassifyVO().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.getCurrentClassifyVO().getBtmTypeId())); |
| | | if (!listR.isSuccess() || listR.getData().size() == 0) { |
| | | throw new VciBaseException("传入业务类型未查询到相应表单,请检查!"); |
| | | } |
| | |
| | | //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) |
| | | |
| | | conditionMap.put("t." + CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + |
| | | btmTypeClient.selectByIdCollection(Collections.singletonList(MdmBtmTypeConstant.CODE_CLASSIFY)) |
| | | btmTypeClient.selectByIdCollection(Collections.singletonList("classify")) |
| | | .getData().get(0).getTableName() + " where lcstatus='" + FrameWorkDefaultValueConstant |
| | | .FRAMEWORK_DATA_ENABLED + "' start with parentCodeClassifyOid = '" + codeClassifyOid + |
| | | "' CONNECT BY PRIOR OID = parentCodeClassifyOid )"); |
| | |
| | | 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()) { |
| | |
| | | //企业码和集团码的不修改 |
| | | 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("操作成功!"); |
| | | } |
| | | |
| | |
| | | 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.处理组合规则。组合规则不能使用编码的属性,因为编码的生成可能是需要属性的 |
| | |
| | | //企业码和集团码的不修改 |
| | | 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); |
| | |
| | | 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); |
| | |
| | | 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())) { |
| | | //说明已经是最高层级, |
| | |
| | | //从最高的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; |
| | | } |
| | | } |
| | |
| | | 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); |
| | |
| | | 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); |
| | | }); |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 模板属性转换为表格定义的信息 |
| | | * |
| | |
| | | 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 -> { |
| | |
| | | } |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 使用分类主键获取工具栏中的按钮信息 |
| | |
| | | if (!listR.isSuccess() || listR.getData().size() == 0) { |
| | | throw new VciBaseException("传入业务类型未查询到相应表单,请检查!"); |
| | | } |
| | | //将bean转为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()); |
| | | //将bean转为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()); |
| | | } |
| | |
| | | && ("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); |
| | |
| | | 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()); |
| | |
| | | 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); |
| | |
| | | bo.setId(""); |
| | | bo.setName(""); |
| | | bo.setDescription(""); |
| | | bo.setOwner(userName); |
| | | bo.setOwner("1"); |
| | | // bo.setCheckinby(userName); |
| | | bo.setCopyFromVersion(""); |
| | | // this.initTypeAttributeValue(bo,btmTypeVO); |
| | |
| | | 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()); |
| | | //将bean转为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()); |
| | | } |
| | |
| | | //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())) { |
| | |
| | | } |
| | | |
| | | 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("传入业务类型未查询到相应表单,请检查!"); |
| | | } |
| | | String namesql = ""; |
| | | if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("name"))) { |
| | |
| | | |
| | | 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 = ""; |
| | | |
| | |
| | | |
| | | 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 + "1=1 and " |
| | | + 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 { |
| | |
| | | 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())); |
| | | 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()); |
| | | } |
| | | } |
| | |
| | | } |
| | | 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 + "1=1 and " |
| | | + "and lastv = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 " |
| | | + lcstatusSql + namesql + codesql |
| | | ); |
| | | IPage<BaseModel> objectDataGrid = new Page<>(); |
| | |
| | | } 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); |
| | |
| | | |
| | | public BaseModel reviseBusinessObject(BaseModel fromBo) { |
| | | BaseModel toBo = new BaseModel(); |
| | | // Map<String,String> data = new HashMap<>(); |
| | | // toBo.getData().put(data); |
| | | toBo.setOid(VciBaseUtil.getPk()); |
| | | toBo.setRevisionOid(VciBaseUtil.getPk()); |
| | | toBo.setNameOid(fromBo.getNameOid()); |
| | |
| | | toBo.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()); |
| | |
| | | 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("成功"); |
| | | } |
| | | } |