| | |
| | | package com.vci.ubcs.code.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; |
| | | import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO; |
| | | import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; |
| | | 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.vo.pagemodel.UITableFieldVO; |
| | | import com.vci.ubcs.code.vo.pagemodel.UITablePageVO; |
| | | import com.vci.ubcs.code.vo.pagemodel.*; |
| | | import com.vci.ubcs.omd.feign.IAttributeClient; |
| | | import com.vci.ubcs.omd.feign.IBtmTypeClient; |
| | | import com.vci.ubcs.omd.feign.IEnumClient; |
| | | import com.vci.ubcs.omd.feign.IRevisionRuleClient; |
| | | import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant; |
| | | import com.vci.ubcs.omd.cache.EnumCache; |
| | | import com.vci.ubcs.omd.feign.*; |
| | | import com.vci.ubcs.omd.utils.VciOmdUtil; |
| | | import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; |
| | | import com.vci.ubcs.omd.vo.BtmTypeVO; |
| | | import com.vci.ubcs.omd.vo.EnumVO; |
| | | import com.vci.ubcs.omd.vo.RevisionRuleVO; |
| | | import com.vci.ubcs.starter.exception.VciBaseException; |
| | | import com.vci.ubcs.starter.revision.model.BaseModel; |
| | | 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.web.constant.QueryOptionConstant; |
| | |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springblade.core.cache.utils.CacheUtil; |
| | | import org.springblade.core.launch.constant.AppConstant; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.StringPool; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.cache.Cache; |
| | | 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.IntrospectionException; |
| | | import java.beans.Introspector; |
| | | import java.beans.PropertyDescriptor; |
| | | import java.lang.reflect.Field; |
| | | import java.lang.reflect.InvocationTargetException; |
| | | import java.lang.reflect.Method; |
| | | import java.math.BigDecimal; |
| | | import java.sql.SQLException; |
| | | import java.sql.Timestamp; |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneId; |
| | | import java.time.ZonedDateTime; |
| | |
| | | @Resource |
| | | private CodeClstemplateServiceImpl templateService; |
| | | |
| | | @Resource |
| | | private IAttributeClient attributeClient; |
| | | |
| | | /** |
| | | * 生成编码的服务 |
| | |
| | | */ |
| | | @Resource |
| | | ISysClient iSysClient; |
| | | /** |
| | | * 密级服务 |
| | | */ |
| | | @Resource |
| | | private IWebSecretClient secretService; |
| | | /** |
| | | * 用户服务 |
| | | */ |
| | |
| | | /** |
| | | * 替换字符 |
| | | */ |
| | | public static final String SPECIAL_CHAR = "VCI"; |
| | | public static final String SPECIAL_CHAR = "VCI"; |
| | | // @Autowired |
| | | // private CodeOsbtmtypeMapper codeOsbtmtypeMapper;---- |
| | | |
| | |
| | | // Dict dict = new Dict(); |
| | | // dict.setParentId(Long.valueOf(attrVO.getEnumid())); |
| | | R<List<EnumVO>> list = enumClient.getList(attrVO.getEnumId()); |
| | | if(list.isSuccess()){ |
| | | if (list.isSuccess()) { |
| | | for (EnumVO datum : list.getData()) { |
| | | KeyValue keyValue = new KeyValue(); |
| | | keyValue.setKey(datum.getItemValue()); |
| | |
| | | } |
| | | return comboboxKVs; |
| | | } |
| | | |
| | | /** |
| | | * 修改状态 |
| | | * |
| | | * @param baseModelDTO 数据传输对象 |
| | | */ |
| | | @Transactional |
| | | @Override |
| | | public void changeStatus(BaseModelDTO baseModelDTO) { |
| | | VciBaseUtil.alertNotNull(baseModelDTO, "数据信息", baseModelDTO.getOid(), "主键", baseModelDTO.getBtmname(), "业务类型", baseModelDTO.getLcStatus(), "目标状态"); |
| | | List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid()); |
| | | // List<ClientBusinessObject> cboList = boService.selectCBOByOidCollection(oids, baseModelDTO.getBtmname()); |
| | | //插个点 业务类型完成后需要修改 |
| | | QueryWrapper<BtmTypeVO> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("BTMNAME",baseModelDTO.getBtmname()); |
| | | wrapper.in("OID",oids); |
| | | List<BaseModel> baseModels = new ArrayList<>(); |
| | | baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid()); |
| | | if(baseModels.size() == 0){ |
| | | throw new VciBaseException("未查询到相关数据。"); |
| | | } |
| | | // 待完善 |
| | | List<BtmTypeVO> cboList = null; // btmTypeClient.selectList(wrapper); |
| | | //还需要修改allCode的生命周期 |
| | |
| | | // List<ClientBusinessObject> codeCbos = boService.queryCBO(MdmBtmTypeConstant.CODE_ALL_CODE, conditionMap); |
| | | // 回收需要业务数据删除 |
| | | if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) { |
| | | // BatchCBO batchCBO = new BatchCBO(); |
| | | // batchCBO.getDeleteCbos().addAll(cboList); |
| | | |
| | | // 待完善 |
| | | //btmTypeClient.deleteBatchIds(cboList); |
| | | |
| | | //boService.persistenceBatch(batchCBO); |
| | | R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(baseModelDTO.getBtmname())); |
| | | commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(),VciBaseUtil.toInSql(baseModelDTO.getOid())); |
| | | } 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()); |
| | | } |
| | | |
| | |
| | | List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(),cboList); |
| | | |
| | | |
| | | List<String> charList = new ArrayList<>(); |
| | | for (BaseModel baseModel : cboList) { |
| | | charList.add(baseModel.getId()); |
| | | } |
| | | batchSaveSelectChar(templateVO, charList); |
| | | // List<String> charList = new ArrayList<>(); |
| | | // for (BaseModel baseModel : cboList) { |
| | | // charList.add(baseModel.getId()); |
| | | // } |
| | | batchSaveSelectChar(templateVO, cboList); |
| | | return codeList.size() > 0 ? codeList.get(0) : ""; |
| | | // return null; |
| | | } |
| | |
| | | //没有限制分类,但是一个模板只可能在一个业务类型里面,所以直接查询这个业务类型即可 |
| | | |
| | | if (!CollectionUtils.isEmpty(conditionMap)) { |
| | | //表需要改 |
| | | // final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "}; |
| | | final String[] sql = {"select count(*) from pl_code_wupin t where 1 = 1 "}; |
| | | R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmtypeid())); |
| | | // String referTable = VciBaseUtil.getTableName(referVO.getReferType()); |
| | | final String[] sql = {"select count(*) from "+ listR.getData().get(0).getTableName() +" t where 1 = 1 "}; |
| | | conditionMap.forEach((key, value) -> { |
| | | sql[0] += " and " + key + " = " + value; |
| | | }); |
| | |
| | | } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) { |
| | | sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'"; |
| | | } |
| | | sql[0] += " and islastR = '1' and islastV = '1' "; |
| | | sql[0] += " and lastR = '1' and lastV = '1' "; |
| | | // if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) { |
| | | if (Integer.parseInt(commonsMapper.selectById(sql[0]).get(0)) > 0) { |
| | | String ruleInfoMsg = keyRuleVO == null ? "" : "查询规则:去除空格--{0},忽略大小写--{1},忽略全半角--{2},忽略全部空格--{3}"; |
| | |
| | | } |
| | | |
| | | int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade())); |
| | | //后续看密级服务是否可用 |
| | | // if (secret == 0 || !secretService.checkDataSecret(secret)) { |
| | | if (secret == 0 ) { |
| | | if (secret == 0 || !secretService.checkDataSecret(secret).getData()) { |
| | | Integer userSecret = VciBaseUtil.getCurrentUserSecret(); |
| | | // cbo.setAttributeValue(SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret)); |
| | | cbo.setSecretGrade(userSecret == null || userSecret == 0 ? UserSecretEnum.NONE.getValue() : userSecret); |
| | |
| | | } |
| | | try { |
| | | String keyPrefix = BTM_INIT_CACHE.concat(StringPool.COLON).concat(AuthUtil.getTenantId()).concat(StringPool.COLON); |
| | | // String finalBtmName = btmName; |
| | | Cache.ValueWrapper valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName))); |
| | | if(valueWrapper == null){ |
| | | CacheUtil.getCache(keyPrefix).put(keyPrefix.concat(String.valueOf(btmName)), createBaseModel(btmName)); |
| | |
| | | logger.error("创建业务类型对象",e); |
| | | throw new VciBaseException("initBtmError",new String[]{btmName}); |
| | | } |
| | | // String userName = AuthUtil.getUser().getUserName(); |
| | | // CodeWupin wupinEntity = new CodeWupin(); |
| | | // wupinEntity.setOid(VciBaseUtil.getPk()); |
| | | //// bo.setRevisionid((new ObjectUtility()).getNewObjectID36()); |
| | | //// bo.setNameoid((new ObjectUtility()).getNewObjectID36()); |
| | | // wupinEntity.setBtmname(btmName); |
| | | // wupinEntity.setLastR(String.valueOf(1)); |
| | | // wupinEntity.setFirstR(String.valueOf(1)); |
| | | // wupinEntity.setFirstV(String.valueOf(1)); |
| | | // wupinEntity.setLastV(String.valueOf(1)); |
| | | // wupinEntity.setCreator(userName); |
| | | // wupinEntity.setCreateTime(new Date()); |
| | | // wupinEntity.setLastModifier(userName); |
| | | // wupinEntity.setLastModifyTime(new Date()); |
| | | // wupinEntity.setRevisionRule("numberversionrule"); |
| | | // wupinEntity.setVersionRule("0"); |
| | | //// if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){ |
| | | // // |
| | | //// OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid()); |
| | | // wupinEntity.setRevisionValue("1"); |
| | | //// } |
| | | // |
| | | // wupinEntity.setRevisionSeq(1); |
| | | // wupinEntity.setVersionSeq(1); |
| | | // //插个点,需要问勇哥版本问题,展示默认为1 |
| | | // wupinEntity.setVersionValue("1"); |
| | | // wupinEntity.setLctid("wupinLC"); |
| | | // wupinEntity.setLcStatus("Editing"); |
| | | // wupinEntity.setId(""); |
| | | // wupinEntity.setName(""); |
| | | // wupinEntity.setDescription(""); |
| | | // wupinEntity.setOwner(userName); |
| | | // wupinEntity.setCheckinby(userName); |
| | | // wupinEntity.setCopyFromVersion(""); |
| | | // wupinEntity.setMaterialtype(1001); |
| | | // wupinEntity.setCaigouwl("true"); |
| | | // wupinEntity.setShifoupihaoguanli("true"); |
| | | // wupinEntity.setKucunwl("true"); |
| | | // wupinEntity.setXiaoshouwl("false"); |
| | | // wupinEntity.setPassing("true"); |
| | | |
| | | // this.initTypeAttributeValue(wupinEntity,btmTypeVO); |
| | | // return wupinEntity; |
| | | |
| | | |
| | | // return cbo; |
| | | } |
| | | |
| | | /** |
| | | * 是否为修改忽略的属性 |
| | | * @param attrName 属性的名字 |
| | | * @return true 表示应该忽略 |
| | | */ |
| | | boolean checkUnAttrUnEdit(String attrName){ |
| | | return (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName) |
| | | ||"ts".equalsIgnoreCase(attrName) |
| | | || "lastmodifier".equalsIgnoreCase(attrName) |
| | | || "lastmodifytime".equalsIgnoreCase(attrName) |
| | | || "createtime".equalsIgnoreCase(attrName) |
| | | || "checkintime".equalsIgnoreCase(attrName) |
| | | ||"checkouttime".equalsIgnoreCase(attrName)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 保存可输可选的信息 |
| | |
| | | */ |
| | | @Override |
| | | public void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, /*List<ClientBusinessObject> cboList*/ |
| | | List<String> cboList) { |
| | | List<BaseModel> cboList) { |
| | | if (templateVO != null && !CollectionUtils.isEmpty(cboList)) { |
| | | //是异步的,所以直接循环 |
| | | List<CodeClassifyTemplateAttrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryIdentification())).collect(Collectors.toList()); |
| | |
| | | if (!CollectionUtils.isEmpty(selectAttrVOs)) { |
| | | // SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); |
| | | selectAttrVOs.parallelStream().forEach(attrVO -> { |
| | | List<String> valuesList = cboList; |
| | | // cboList.parallelStream().forEach(cbo -> { |
| | | List<String> valuesList = new ArrayList<>(); |
| | | cboList.parallelStream().forEach(cbo -> { |
| | | // String value = cbo.get.getAttributeValue(attrVO.getId()); |
| | | // if (StringUtils.isNotBlank(value)) { |
| | | // valuesList.add(value); |
| | | // } |
| | | // }); |
| | | |
| | | //将bean转为map,mybatis统一处理 |
| | | Map<String,String> map = null; |
| | | |
| | | // baseModels.stream().forEach(model-> { |
| | | try { |
| | | map = VciBaseUtil.convertBean2Map(cbo); |
| | | } catch (Exception e) { |
| | | throw new VciBaseException("类型转换错误:" + e.getMessage()); |
| | | } |
| | | // }); |
| | | |
| | | String value = map.get(attrVO.getId()); |
| | | if (StringUtils.isNotBlank(value)) { |
| | | valuesList.add(value); |
| | | } |
| | | }); |
| | | if (!CollectionUtils.isEmpty(valuesList)) { |
| | | for (String s : valuesList) { |
| | | DictBiz dictBiz = new DictBiz(); |
| | |
| | | //处理所有的列,这个模板没有合并的表头的情况 |
| | | List<UITableFieldVO> fieldVOList = new ArrayList<>(); |
| | | resembleAttrList.forEach(attrVO -> { |
| | | UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO,false); |
| | | UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, false); |
| | | tableFieldVO.setHidden(false); |
| | | fieldVOList.add(tableFieldVO); |
| | | }); |
| | |
| | | /** |
| | | * 模板属性转换为表格显示的配置 |
| | | * |
| | | * @param attrVO 模板属性 |
| | | * @param attrVO 模板属性 |
| | | * @param forEdit 是否是编辑所需 |
| | | * @return 表格的字段 |
| | | */ |
| | | @Override |
| | | public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO,boolean forEdit) { |
| | | public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO, boolean forEdit) { |
| | | UITableFieldVO fieldVO = new UITableFieldVO(); |
| | | if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) { |
| | | attrVO.setEnumId(MY_DATA_SECRET); |
| | |
| | | fieldVO.setSort(true); |
| | | fieldVO.setSortField(fieldVO.getField()); |
| | | fieldVO.setQueryField(fieldVO.getField()); |
| | | if (forEdit){ |
| | | if (forEdit) { |
| | | fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormDisplayFlag())); |
| | | }else { |
| | | } else { |
| | | fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getTableDisplayFlag())); |
| | | } |
| | | if (attrVO.getAttrTableWidth() != null && attrVO.getAttrTableWidth() > 0) { |
| | |
| | | if (StringUtils.isBlank(attrVO.getEnumId())) { |
| | | fieldVO.setComboxKey(fieldVO.getField() + "_data"); |
| | | } |
| | | }else { |
| | | // List<KeyValue> osEnumItemVOList= enumService.getEnum(attrVO.getEnumId()); |
| | | // fieldVO.setData(osEnumItemVOList); |
| | | } else { |
| | | List<KeyValue> osEnumItemVOList= VciOmdUtil.enumsToListKeyVale(EnumCache.getList(attrVO.getEnumId())); |
| | | fieldVO.setData(osEnumItemVOList); |
| | | } |
| | | } |
| | | //看是否有参照 |
| | |
| | | } |
| | | } |
| | | queryValue = String.format(temp, (trim ? value.trim() : value)); |
| | | temp = temp.replace("to_single_byte('%s')","to_single_byte(%s)"); |
| | | queryKey = String.format(temp, "t."+attrId); |
| | | temp = temp.replace("to_single_byte('%s')", "to_single_byte(%s)"); |
| | | queryKey = String.format(temp, "t." + attrId); |
| | | conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue); |
| | | } |
| | | } |
| | |
| | | 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 = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage()); |
| | | |
| | | DataGrid<Map<String, String>> dataGrid = new DataGrid<>(); |
| | | List<Map<String, String>> dataList = new ArrayList<>(); |
| | | // if (!CollectionUtils.isEmpty(maps)) { |
| | | // maps.stream().forEach(map -> { |
| | | // Map<String, String> data = new HashMap<>(); |
| | | // map.forEach((key, value) -> { |
| | | // data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); |
| | | // }); |
| | | // dataList.add(data); |
| | | // }); |
| | | // } |
| | | // dataGrid.setData(dataList); |
| | | if (!CollectionUtils.isEmpty(maps)) { |
| | | wrapperData(maps, templateVO, sqlBO.getSelectFieldList(), false); |
| | | 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))); |
| | | } |
| | | // map.forEach((key, value) -> { |
| | | // data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); |
| | | // }); |
| | | for (String s : map.keySet()) { |
| | | data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s))); |
| | | } |
| | | dataList.add(data); |
| | | }); |
| | | dataGrid.setData(dataList); |
| | | dataGrid.setTotal(Long.parseLong(commonsMapper.selectBySql(sqlBO.getSqlCount()).get(0).values().toArray()[0].toString())); |
| | | wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), false); |
| | | // maps.stream().forEach(map -> { |
| | | // Map<String, String> data = new HashMap<>(); |
| | | //// map.forEach((key, value) -> { |
| | | //// data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); |
| | | //// }); |
| | | // for (String s : map.keySet()) { |
| | | // data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s))); |
| | | // } |
| | | // dataList.add(data); |
| | | // }); |
| | | } |
| | | // dataGrid.setData(dataList); |
| | | // if (!CollectionUtils.isEmpty(maps)) { |
| | | // wrapperData(maps, templateVO, sqlBO.getSelectFieldList(), false); |
| | | // maps.stream().forEach(map -> { |
| | | // Map<String, String> data = new HashMap<>(); |
| | | //// map.forEach((key, value) -> { |
| | | //// data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); |
| | | //// }); |
| | | // for (String s : map.keySet()) { |
| | | // data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s))); |
| | | // } |
| | | // dataList.add(data); |
| | | // }); |
| | | dataGrid.setData(dataList); |
| | | dataGrid.setTotal(Long.parseLong(commonsMapper.selectBySql(sqlBO.getSqlCount()).get(0).values().toArray()[0].toString())); |
| | | // } |
| | | return dataGrid; |
| | | } |
| | | |
| | |
| | | * @param dataMap 数据的映射 |
| | | * @param templateVO 模板的属性 |
| | | * @param onlySelectAttrIdList 仅仅查询的属性字段 |
| | | * @param form 表单里使用 |
| | | * @param form 表单里使用 |
| | | */ |
| | | @Override |
| | | public void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO, |
| | |
| | | //处理枚举 |
| | | wrapperEnum(enumAttrVOs, data); |
| | | String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD); |
| | | String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION,""); |
| | | String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION, ""); |
| | | if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus)) |
| | | && StringUtils.isBlank(copyFromVersion) |
| | | ) { |
| | | data.put(VciQueryWrapperForDO.ID_FIELD, "******"); |
| | | } |
| | | data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), CodeDefaultLC.getTextByValue(lcstatus)); |
| | | if(CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) |
| | | && StringUtils.isNotBlank(copyFromVersion)){ |
| | | if (CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) |
| | | && StringUtils.isNotBlank(copyFromVersion)) { |
| | | data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), "修改中"); |
| | | } |
| | | if (data.containsKey("creator")) { |
| | |
| | | if (!CollectionUtils.isEmpty(userIds)) { |
| | | Map<String, User> userVOMap = new HashMap<>(); |
| | | for (String userId : userIds) { |
| | | if(!StringUtils.isNumeric(userId)){ |
| | | if (!StringUtils.isNumeric(userId)) { |
| | | continue; |
| | | } |
| | | User data = iUserClient.userInfoById(Long.valueOf(userId)).getData(); |
| | | if(data != null){ |
| | | userVOMap.put(String.valueOf(data.getId()),data); |
| | | if (data != null) { |
| | | userVOMap.put(String.valueOf(data.getId()), data); |
| | | } |
| | | } |
| | | // Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); |
| | |
| | | // selectFieldList.add(attrId.getOid()); |
| | | // } |
| | | // }); |
| | | if(allAttributeByBtmId.getData() != null ){ |
| | | if (allAttributeByBtmId.getData() != null) { |
| | | for (BtmTypeAttributeVO attribute : allAttributeByBtmId.getData().getAttributes()) { |
| | | if (!selectFieldList.contains(attribute.getId()) && !"secretgrade".equalsIgnoreCase(attribute.getId())) { |
| | | selectFieldList.add(attribute.getId()); |
| | |
| | | }); |
| | | |
| | | andCondtionMap.forEach((k, v) -> { |
| | | andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap)); |
| | | andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap,btmType)); |
| | | }); |
| | | orConditionMap.forEach((k, v) -> { |
| | | orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap)); |
| | | orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap,btmType)); |
| | | }); |
| | | } |
| | | //组合起来 |
| | |
| | | if (attrVOMap.keySet().contains("secretgrade")) { |
| | | Integer userSecret = VciBaseUtil.getCurrentUserSecret(); |
| | | if (userSecret == null || userSecret == 0) { |
| | | // userSecret = secretService.getMinUserSecret(); |
| | | userSecret = secretService.getMinUserSecret().getData(); |
| | | } |
| | | whereSql += " and ( t.secretGrade <= " + userSecret + ") "; |
| | | } |
| | | //要改,表明获取有问题 |
| | | // String tableName = VciBaseUtil.getTableName(btmType); |
| | | // String tableName = "pl_code_wupin"; |
| | | R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); |
| | | // String referTable = VciBaseUtil.getTableName(referVO.getReferType()); |
| | | String tableName = listR.getData().get(0).getTableName(); |
| | |
| | | * @param attrVOMap 属性的映射 |
| | | * @return Sql语句 |
| | | */ |
| | | private String getConditionSql(String key, String value, Map<String/**参照的属性**/, String/**实际的属性**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { |
| | | private String getConditionSql(String key, String value, Map<String/**参照的属性**/, String/**实际的属性**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap,String btmType) { |
| | | /*if (!Func.hasEmpty(new Object[]{key,value}) && !key.endsWith("_ignore")) { |
| | | if (key.endsWith("_like")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_like"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | //说明还是参照里面的,我们默认这种情况下都是字符串吧,因为参照的属性不一定用的平台的属性池里的,所以大部分情况下,显示的属性都是字符串吧 |
| | | return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "concat(%,"+"concat(" + value + ",%)" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "concat(%,"+"concat(" + getStringValueInWhere(field, value, attrVOMap) + ",%)" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_notequal")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_notequal"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | //说明还是参照里面的,我们默认这种情况下都是字符串吧,因为参照的属性不一定用的平台的属性池里的,所以大部分情况下,显示的属性都是字符串吧 |
| | | return referFieldMap.get(field) + SPACE + " != '" + value + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + " != " + getStringValueInWhere(field, value, attrVOMap); |
| | | } |
| | | } else if (key.endsWith("_likeleft")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_likeleft"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "concat(%,"+value+")" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "concat(%,"+getStringValueInWhere(field, value, attrVOMap)+")" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_likeright")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_likeright"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "concat("+value+",%)" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "concat("+getStringValueInWhere(field, value, attrVOMap)+",%)" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_notlike")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_notlike"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "NO LIKE" + SPACE + "concat(%,concat("+value+",%)" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "NO LIKE " + "concat(%,concat"+getStringValueInWhere(field, value, attrVOMap)+",%)" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_ge")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_ge"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | //说明还是参照里面的,我们默认这种情况下都是字符串吧,因为参照的属性不一定用的平台的属性池里的,所以大部分情况下,显示的属性都是字符串吧 |
| | | return referFieldMap.get(field) + SPACE + " >= '" + value + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + " >= '" + getStringValueInWhere(value, field, attrVOMap) + "'" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_le")) { |
| | | //说明是<=的。我们需要先获取一下 |
| | | String field = UBCSSqlKeyword.getColumn(key, "_le"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | //说明还是参照里面的,我们默认这种情况下都是字符串吧,因为参照的属性不一定用的平台的属性池里的,所以大部分情况下,显示的属性都是字符串吧 |
| | | return referFieldMap.get(field) + SPACE + " <= '" + value + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + " <= '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_gt")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_gt"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "> '" + value + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "> '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_lt")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_lt"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | //说明还是参照里面的,我们默认这种情况下都是字符串吧,因为参照的属性不一定用的平台的属性池里的,所以大部分情况下,显示的属性都是字符串吧 |
| | | return referFieldMap.get(field) + SPACE + "< '" + value + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "< '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_datege")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_datege"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | //说明还是参照里面的,我们默认这种情况下都是字符串吧,因为参照的属性不一定用的平台的属性池里的,所以大部分情况下,显示的属性都是字符串吧 |
| | | return referFieldMap.get(field) + SPACE + ">= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + ">= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_dategt")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_dategt"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "> '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "> '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_dateequal")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_datele")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_datele"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "<= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "<= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_datelt")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_datelt"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "< '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "< '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_null")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_null"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "IS NULL" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NULL" + SPACE; |
| | | } |
| | | } else if (key.endsWith("_notnull")) { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_null"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "IS NOT NULL" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NOT NULL" + SPACE; |
| | | } |
| | | } else { |
| | | String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); |
| | | if (referFieldMap.containsKey(field)) { |
| | | return referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE; |
| | | } else { |
| | | return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + getStringValueInWhere(field, value, attrVOMap)+ "'" + SPACE; |
| | | } |
| | | } |
| | | |
| | | }*/ |
| | | if (key.endsWith("_begin")) { |
| | | //说明是>=的。我们需要先获取一下 |
| | | String field = (key.substring(0, key.length() - 6).toLowerCase().trim()); |
| | |
| | | if (referFieldMap.containsKey(key)) { |
| | | //说明是参照的,我们参照的查询都认为是字符串,如果是时间格式的查询肯定有问题, |
| | | String selectKey = referFieldMap.get(key); |
| | | return getSqlByValue(selectKey, value, null); |
| | | return getSqlByValue(selectKey, value, null,btmType); |
| | | } else { |
| | | return getSqlByValue(key, value, attrVOMap); |
| | | return getSqlByValue(key, value, attrVOMap,btmType); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查看是否默认属性 |
| | | * @param selectKey |
| | | * @param btmType |
| | | * @return |
| | | */ |
| | | private boolean isDefaultAttr(String selectKey, String btmType){ |
| | | if(StringUtils.isBlank(btmType)){ |
| | | return false; |
| | | } |
| | | R<BtmTypeVO> r = btmTypeClient.getDefaultAttrByBtmId(btmType); |
| | | List<BtmTypeAttributeVO> attributes = r.getData().getAttributes(); |
| | | if(r.getCode() != 200 || attributes.isEmpty()){ |
| | | return false; |
| | | } |
| | | return attributes.stream().anyMatch(item->item.getId().equals(selectKey)); |
| | | } |
| | | |
| | | /** |
| | | * 封装最终的sql语句中的值部分 |
| | | * |
| | | * @param selectKey 查询的字段 |
| | |
| | | * @param attrVOMap 属性的显示对象映射 |
| | | * @return sql里的值 |
| | | */ |
| | | private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { |
| | | private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap,String btmType) { |
| | | StringBuilder sql = new StringBuilder(); |
| | | //待完善 |
| | | // if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) { |
| | | // sql.append("t."); |
| | | // } |
| | | // TODO 已完善 |
| | | if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || isDefaultAttr(selectKey,btmType) || selectKey.matches(RegExpConstant.LETTER))) { |
| | | sql.append("t."); |
| | | } |
| | | if (value.startsWith(QueryOptionConstant.IN)) { |
| | | sql.append(selectKey) |
| | | .append(SPACE) |
| | |
| | | // CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); |
| | | //找业务类型,然后使用主键去获取数据库里的数据 |
| | | // List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getOid())); |
| | | List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), orderDTO.getOid()); |
| | | |
| | | QueryWrapper<CodeWupin> btmWrapper = new QueryWrapper<>(); |
| | | btmWrapper.eq("OID",orderDTO.getOid()); |
| | | CodeWupin cbo = codeWupinMapper.selectOne(btmWrapper); |
| | | |
| | | if (CollectionUtils.isEmpty(cbos)) { |
| | | throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | } |
| | | // QueryWrapper<CodeWupin> btmWrapper = new QueryWrapper<>(); |
| | | // btmWrapper.eq("OID",orderDTO.getOid()); |
| | | // CodeWupin cbo = codeWupinMapper.selectOne(btmWrapper); |
| | | BaseModel cbo = cbos.get(0); |
| | | // CodeClstemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | // CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid()); |
| | | |
| | |
| | | cbo.setDescription(orderDTO.getDescription()); |
| | | cbo.setName(orderDTO.getName()); |
| | | try { |
| | | cbo.setDescription(orderDTO.getDescription()); |
| | | cbo.setDescription( StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); |
| | | cbo.setName(orderDTO.getName()); |
| | | //// cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); |
| | | // cbo.setAttributeValue("name", orderDTO.getName()); |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | cbo.setLastModifyTime(new Date()); |
| | | cbo.setLastModifier(AuthUtil.getUser().getUserName()); |
| | | codeWupinMapper.updateById(cbo); |
| | | cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId())); |
| | | updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), Collections.singletonList(cbo)); |
| | | // codeWupinMapper.updateById(cbo); |
| | | // |
| | | // List<CodeWupinEntity> cboList = new ArrayList<>(); |
| | | // |
| | |
| | | // 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, Arrays.asList(cbo.getId())); |
| | | batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); |
| | | // batchSaveSelectChar(templateVO, Arrays.asList(cbo.getId())); |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | //只能删除自己创建的数据 |
| | | String userId = AuthUtil.getUser().getUserName(); |
| | | for (CodeWupin clientBusinessObject:cboList){ |
| | | for (CodeWupin clientBusinessObject : cboList) { |
| | | String creator = clientBusinessObject.getCreator(); |
| | | if(!userId.equalsIgnoreCase(creator)){ |
| | | throw new VciBaseException("编码为"+clientBusinessObject.getId()+"的数据不是当前用户创建,不能删除!"); |
| | | if (!userId.equalsIgnoreCase(creator)) { |
| | | throw new VciBaseException("编码为" + clientBusinessObject.getId() + "的数据不是当前用户创建,不能删除!"); |
| | | } |
| | | |
| | | } |
| | |
| | | //pageHelper.addDefaultDesc("createTime"); |
| | | pageHelper.addDefaultDesc("id"); |
| | | if (!classifyService.checkHasChild(codeClassifyOid)) { |
| | | conditionMap.put(CODE_CLASSIFY_OID_FIELD, 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(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from pl_code_classify where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED + |
| | | "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )"); |
| | | |
| | | 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 |
| | | .FRAMEWORK_DATA_ENABLED + "' start with parentCodeClassifyOid = '" + codeClassifyOid + |
| | | "' CONNECT BY PRIOR OID = parentCodeClassifyOid )"); |
| | | } |
| | | conditionMap.put("lastr", "1"); |
| | | conditionMap.put("lastv", "1"); |
| | | conditionMap.put("t.lastr", "1"); |
| | | conditionMap.put("t.lastv", "1"); |
| | | return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper); |
| | | // List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList()); |
| | | // //参照让平台直接查询就行 |
| | |
| | | */ |
| | | @Override |
| | | public R batchUpdateCode(List<CodeOrderDTO> orderDTOList) { |
| | | // VciBaseUtil.alertNotNull(orderDTOList,"编码申请相关的属性内容"); |
| | | // orderDTOList.forEach(orderDTO -> { |
| | | // VciBaseUtil.alertNotNull(orderDTO, "编码申请相关的属性的内容都为空", orderDTO.getOid(), "数据主键", |
| | | // orderDTO.getCodeClassifyOid(), "主题库分类的主键"); |
| | | // }); |
| | | // Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); |
| | | // List<ClientBusinessObject> updateList = new ArrayList<>(); |
| | | // // 应该都是一个分类下的业务数据,找第一条的就行 |
| | | // CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid()); |
| | | VciBaseUtil.alertNotNull(orderDTOList,"编码申请相关的属性内容"); |
| | | orderDTOList.forEach(orderDTO -> { |
| | | VciBaseUtil.alertNotNull(orderDTO, "编码申请相关的属性的内容都为空", orderDTO.getOid(), "数据主键", |
| | | orderDTO.getCodeClassifyOid(), "主题库分类的主键"); |
| | | }); |
| | | Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); |
| | | List<BaseModel> updateList = new ArrayList<>(); |
| | | // 应该都是一个分类下的业务数据,找第一条的就行 |
| | | CodeClassifyFullInfoBO topClassifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid()); |
| | | // Map<String,String> cboOidMap = new HashMap<>(); |
| | | // if (CollectionUtils.isEmpty(orderDTOMap.keySet())){ |
| | | // throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | // } |
| | | if (CollectionUtils.isEmpty(orderDTOMap.keySet())){ |
| | | throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | } |
| | | |
| | | List<BaseModel> cboList = selectByTypeAndOid(topClassifyFullInfo.getTopClassifyVO().getBtmtypeid(), VciBaseUtil.array2String(orderDTOMap.keySet().toArray(new String[0]))); |
| | | // cboOidMap.put("oid",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(orderDTOMap.keySet().toArray(new String[0])) + ")"); |
| | | // List<ClientBusinessObject> cboList = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), cboOidMap); |
| | | // if (CollectionUtils.isEmpty(cboList)){ |
| | | // throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | // } |
| | | if (CollectionUtils.isEmpty(cboList)){ |
| | | throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | } |
| | | // BatchCBO batchCBO = new BatchCBO(); |
| | | // CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid()); |
| | | // Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); |
| | | // orderDTOMap.keySet().stream().forEach(oid -> { |
| | | // CodeOrderDTO orderDTO = orderDTOMap.get(oid); |
| | | // ClientBusinessObject cbo = cboMap.get(oid); |
| | | // if (!cbo.getTs().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) { |
| | | // throw new VciBaseException("数据不是最新的,可能他人已经修改,请刷新后再试"); |
| | | // } |
| | | // if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { |
| | | // throw new VciBaseException("数据不是{0}的状态,不允许修改", new String[]{CodeDefaultLC.EDITING.getText()}); |
| | | // } |
| | | // //1. 判断必输项 |
| | | // CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | // checkRequiredAttrOnOrder(templateVO, orderDTO); |
| | | // //2.先注入,再组合,最后校验 |
| | | // switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); |
| | | // //3.处理组合规则。组合规则不能使用编码的属性,因为编码的生成可能是需要属性的 |
| | | // switchComponentAttrOnOrder(templateVO, orderDTO); |
| | | // //4.校验规则 |
| | | // checkVerifyOnOrder(templateVO, orderDTO); |
| | | // //5.判断关键属性 |
| | | // checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); |
| | | // //6.校验枚举的内容是否正确 |
| | | // checkEnumOnOrder(templateVO, orderDTO); |
| | | // //7.处理时间格式,在数据库里面不论是字符串还是日期格式,都使用相同的格式存储 |
| | | // switchDateAttrOnOrder(templateVO, orderDTO); |
| | | // //默认的内容不能变,所以只需要拷贝自定义的相关属性即可 |
| | | // copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); |
| | | // //企业码和集团码的不修改 |
| | | // cbo.setDescription(orderDTO.getDescription()); |
| | | // cbo.setName(orderDTO.getName()); |
| | | Map<String, BaseModel> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); |
| | | orderDTOMap.keySet().stream().forEach(oid -> { |
| | | CodeOrderDTO orderDTO = orderDTOMap.get(oid); |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); |
| | | CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid()); |
| | | BaseModel cbo = cboMap.get(oid); |
| | | String code=cbo.getId(); |
| | | if (!cbo.getTs().toString().contains(orderDTO.getTs().toString())) { |
| | | throw new VciBaseException("数据不是最新的,可能他人已经修改,请刷新后再试"); |
| | | } |
| | | if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { |
| | | throw new VciBaseException("数据不是{0}的状态,不允许修改", new String[]{CodeDefaultLC.EDITING.getText()}); |
| | | } |
| | | //1. 判断必输项 |
| | | CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | checkRequiredAttrOnOrder(templateVO, orderDTO); |
| | | //2.先注入,再组合,最后校验 |
| | | switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); |
| | | //3.处理组合规则。组合规则不能使用编码的属性,因为编码的生成可能是需要属性的 |
| | | switchComponentAttrOnOrder(templateVO, orderDTO); |
| | | //4.校验规则 |
| | | checkVerifyOnOrder(templateVO, orderDTO); |
| | | //5.判断关键属性 |
| | | checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); |
| | | //6.校验枚举的内容是否正确 |
| | | checkEnumOnOrder(templateVO, orderDTO); |
| | | //7.处理时间格式,在数据库里面不论是字符串还是日期格式,都使用相同的格式存储 |
| | | switchDateAttrOnOrder(templateVO, orderDTO); |
| | | //默认的内容不能变,所以只需要拷贝自定义的相关属性即可 |
| | | copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); |
| | | //企业码和集团码的不修改 |
| | | cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); |
| | | cbo.setName(orderDTO.getName()); |
| | | // try { |
| | | // cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); |
| | | // cbo.setAttributeValue("id",code); |
| | | cbo.setId(code); |
| | | cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); |
| | | // cbo.setAttributeValueWithNoCheck("description", StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); |
| | | // cbo.setAttributeValue("name", orderDTO.getName()); |
| | | cbo.setName(orderDTO.getName()); |
| | | // } catch (VCIError e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // batchCBO.getUpdateCbos().add(cbo); |
| | | // updateList.add(cbo); |
| | | // }); |
| | | updateList.add(cbo); |
| | | batchSaveSelectChar(firstTemplateVO, cboList); |
| | | }); |
| | | // boService.persistenceBatch(batchCBO); |
| | | // batchSaveSelectChar(firstTemplateVO, cboList); |
| | | updateBatchByBaseModel(topClassifyFullInfo.getTopClassifyVO().getBtmtypeid(),updateList); |
| | | return R.success("操作成功!"); |
| | | } |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public void upSaveCode(CodeOrderDTO orderDTO) { |
| | | VciBaseUtil.alertNotNull(orderDTO, "编码数据所在业务类名称", orderDTO.getBtmname()); |
| | | String btmName=orderDTO.getBtmname(); |
| | | //找业务类型,然后使用主键去获取数据库里的数据 |
| | | List<BaseModel> cbos = selectByTypeAndOid(btmName, orderDTO.getCopyFromVersion()); |
| | | if (CollectionUtils.isEmpty(cbos)) { |
| | | throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | } |
| | | BaseModel oldCbo = cbos.get(0); |
| | | |
| | | if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) { |
| | | throw new VciBaseException("数据不是{0}的状态,不允许数据更改", new String[]{CodeDefaultLC.RELEASED.getText()}); |
| | | } |
| | | |
| | | //根据数据获取分类oid |
| | | String codeClassifyOid=oldCbo.getData().get(CODE_CLASSIFY_OID_FIELD.toUpperCase()); |
| | | orderDTO.setCodeClassifyOid(codeClassifyOid); |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); |
| | | CodeClassifyTemplateVO templateVO= this.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid()); |
| | | orderDTO.setTemplateOid(templateVO.getOid()); |
| | | VciBaseUtil.alertNotNull(orderDTO, "编码申请相关的属性的内容为空", orderDTO.getCopyFromVersion(), "原始数据的主键", |
| | | orderDTO.getCodeClassifyOid(), "主题库分类的主键"); |
| | | CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); |
| | | //找业务类型,然后使用主键去获取数据库里的数据 |
| | | // List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getCopyFromVersion())); |
| | | // if (CollectionUtils.isEmpty(cbos)) { |
| | | // throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | // } |
| | | // ClientBusinessObject oldCbo = cbos.get(0); |
| | | // if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) { |
| | | // throw new VciBaseException("数据不是{0}的状态,不允许数据更改", new String[]{CodeDefaultLC.RELEASED.getText()}); |
| | | // } |
| | | // //需要升版 |
| | | |
| | | //需要升版 |
| | | // ClientBusinessObjectOperation cboOperation = new ClientBusinessObjectOperation(); |
| | | // ClientBusinessObject cbo = null; |
| | | BaseModel cbo = null; |
| | | // try { |
| | | // //cbo = cboOperation.createBusinessObjectVersion(oldCbo,VciBaseUtil.getCurrentUserId()); |
| | | // cbo = cboOperation.reviseBusinessObject(oldCbo, ""); |
| | | cbo = reviseBusinessObject(oldCbo); |
| | | // } catch (VCIError e) { |
| | | // throw new VciBaseException("初始化相关的内容出现了错误", new String[0], e); |
| | | // } |
| | | // //1. 判断必输项 |
| | | // CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | // checkRequiredAttrOnOrder(templateVO, orderDTO); |
| | | // //2.先注入,再组合,最后校验 |
| | | // switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); |
| | | // //3.处理组合规则。组合规则不能使用编码的属性,因为编码的生成可能是需要属性的 |
| | | // switchComponentAttrOnOrder(templateVO, orderDTO); |
| | | // //4.校验规则 |
| | | // checkVerifyOnOrder(templateVO, orderDTO); |
| | | // //5.判断关键属性 |
| | | // checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); |
| | | // //6.校验枚举的内容是否正确 |
| | | // checkEnumOnOrder(templateVO, orderDTO); |
| | | // //7.处理时间格式,在数据库里面不论是字符串还是日期格式,都使用相同的格式存储 |
| | | // switchDateAttrOnOrder(templateVO, orderDTO); |
| | | // //默认的内容不能变,所以只需要拷贝自定义的相关属性即可 |
| | | // copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); |
| | | // //企业码和集团码的不修改 |
| | | // cbo.setDescription(orderDTO.getDescription()); |
| | | // cbo.setName(orderDTO.getName()); |
| | | //1. 判断必输项 |
| | | //CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); |
| | | checkRequiredAttrOnOrder(templateVO, orderDTO); |
| | | //2.先注入,再组合,最后校验 |
| | | switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); |
| | | //3.处理组合规则。组合规则不能使用编码的属性,因为编码的生成可能是需要属性的 |
| | | switchComponentAttrOnOrder(templateVO, orderDTO); |
| | | //4.校验规则 |
| | | checkVerifyOnOrder(templateVO, orderDTO); |
| | | //5.判断关键属性 |
| | | checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); |
| | | //6.校验枚举的内容是否正确 |
| | | checkEnumOnOrder(templateVO, orderDTO); |
| | | //7.处理时间格式,在数据库里面不论是字符串还是日期格式,都使用相同的格式存储 |
| | | switchDateAttrOnOrder(templateVO, orderDTO); |
| | | //默认的内容不能变,所以只需要拷贝自定义的相关属性即可 |
| | | copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); |
| | | //企业码和集团码的不修改 |
| | | cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); |
| | | cbo.setName(orderDTO.getName()); |
| | | // try { |
| | | // cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); |
| | | // cbo.setAttributeValue("name", orderDTO.getName()); |
| | | cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); |
| | | // cbo.setAttributeValueWithNoCheck("description", StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription()); |
| | | cbo.setName(orderDTO.getName()); |
| | | // } catch (VCIError e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // //数据的时候,编码是不变的 |
| | | // cbo.setCreateTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getCreateTime())), "yyyy-MM-dd HH:mm:ss")); |
| | | // cbo.setLastModifyTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getLastModifyTime())), "yyyy-MM-dd HH:mm:ss")); |
| | | //数据的时候,编码是不变的 |
| | | cbo.setCreateTime(cbo.getCreateTime()); |
| | | cbo.setLastModifyTime(cbo.getLastModifyTime()); |
| | | // List<ClientBusinessObject> cboList = new ArrayList<>(); |
| | | // cboList.add(cbo); |
| | | // try { |
| | | try { |
| | | // cboOperation.saveRevisionBuinessObject(cbo); |
| | | // } catch (VCIError vciError) { |
| | | // throw new VciBaseException("数据更改保存出错了", new String[0], vciError); |
| | | // } |
| | | // batchSaveSelectChar(templateVO, cboList); |
| | | insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo)); |
| | | } catch (Exception vciError) { |
| | | throw new VciBaseException("数据更改保存出错了", new String[0], vciError); |
| | | } |
| | | batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); |
| | | } |
| | | |
| | | /** |
| | |
| | | String btmId = topClassifyVO.getBtmtypeid(); |
| | | //查询数据 |
| | | Map<String, String> conditionMap = new HashMap<>(); |
| | | conditionMap.put("t.oid",oid); |
| | | conditionMap.put("t.oid", oid); |
| | | CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1)); |
| | | //我们使用和业务类型的来查询 |
| | | List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); |
| | | List<Map<String,String>> cbos = new ArrayList<>(); |
| | | List<Map<String, String>> cbos = new ArrayList<>(); |
| | | cbosB.stream().forEach(map -> { |
| | | Map<String, String> data = new HashMap<>(); |
| | | for (Object o : map.keySet()) { |
| | |
| | | throw new VciBaseException("数据在系统中不存在,是否因为修改过业务类型?"); |
| | | } |
| | | // Map<String, String> data = new HashMap<>(); |
| | | Map<String,String> cbo = cbos.get(0); |
| | | Map<String, String> cbo = cbos.get(0); |
| | | // WebUtil.copyValueToMapFromCbos(cbo, data); |
| | | List<Map<String, String>> dataList = new ArrayList<>(); |
| | | dataList.add(cbo); |
| | |
| | | QueryWrapper<CodeWupin> wrapper = new QueryWrapper(); |
| | | if (conditionMap.get("oid").contains(",")) { |
| | | // oidMap.put("oid", QueryOptionConstant.IN +"("+ VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")"); |
| | | wrapper.in("oid",oidList); |
| | | wrapper.in("oid", oidList); |
| | | } else { |
| | | // oidMap.put("oid", conditionMap.get("oid")); |
| | | wrapper.in("oid",conditionMap.get("oid")); |
| | | wrapper.in("oid", conditionMap.get("oid")); |
| | | } |
| | | if (CollectionUtils.isEmpty(oidMap)) { |
| | | throw new VciBaseException("业务数据主键不能为空"); |
| | |
| | | CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0)); |
| | | templateVO.setAttributes(codeClassifyTemplateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList)); |
| | | try { |
| | | if (oidList.size() > 1){ |
| | | DataGrid<Map<String,String>> allDataGrid = new DataGrid<>(); |
| | | List<Map<String,String>> allData = new ArrayList<>(); |
| | | if (oidList.size() > 1) { |
| | | DataGrid<Map<String, String>> allDataGrid = new DataGrid<>(); |
| | | List<Map<String, String>> allData = new ArrayList<>(); |
| | | oidList.forEach(oid -> { |
| | | Map<String,String> condition = new HashMap<>(); |
| | | condition.put("oid",oid); |
| | | Map<String, String> condition = new HashMap<>(); |
| | | condition.put("oid", oid); |
| | | DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper); |
| | | allData.addAll(dataGrid.getData()); |
| | | }); |
| | | allDataGrid.setData(allData); |
| | | return allDataGrid; |
| | | }else { |
| | | } else { |
| | | return queryGrid(btmType, templateVO, conditionMap, pageHelper); |
| | | } |
| | | } catch (Exception e) { |
| | |
| | | MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); |
| | | CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); |
| | | uiInfoVO.setTemplateVO(templateVO); |
| | | UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO,true); |
| | | UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO, true); |
| | | List<String> phaseAttrIdList = listPhaseAttrByClassifyOid(codeClassifyOid, phase); |
| | | uiTableDefineVO.getCols().stream().forEach(list -> { |
| | | List<UITableFieldVO> visiableTableField=new ArrayList<>(); |
| | | if(StringUtils.isNotBlank(phase)) { |
| | | List<UITableFieldVO> visiableTableField = new ArrayList<>(); |
| | | if (StringUtils.isNotBlank(phase)) { |
| | | visiableTableField = list.stream().filter(col -> |
| | | phaseAttrIdList.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()); |
| | | }else{ |
| | | visiableTableField= list.stream().filter(col -> |
| | | } else { |
| | | visiableTableField = list.stream().filter(col -> |
| | | templateVO.getAttributes().stream().anyMatch(s -> |
| | | (!s.getReadOnlyFlag().equalsIgnoreCase("true")&& StringUtils.equalsIgnoreCase(col.getField(), s.getId())) || |
| | | (!s.getReadOnlyFlag().equalsIgnoreCase("true") && StringUtils.equalsIgnoreCase(col.getField(), s.getId())) || |
| | | (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s.getId())) |
| | | || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s.getId())) |
| | | )).collect(Collectors.toList()); |
| | |
| | | setReferConfig2EditConfig(vo); |
| | | } else if ("combox".equalsIgnoreCase(vo.getFieldType())) { |
| | | setComboxConfig2EditConfig(vo); |
| | | } else if (StringUtils.isNotBlank(vo.getDateFormate())){ |
| | | } else if (StringUtils.isNotBlank(vo.getDateFormate())) { |
| | | vo.setEdit("date"); |
| | | }else { |
| | | } else { |
| | | vo.setEdit(vo.getFieldType()); |
| | | } |
| | | }); |
| | |
| | | * @param vo 表格字段显示对象 |
| | | */ |
| | | private void setReferConfig2EditConfig(UITableFieldVO vo) { |
| | | if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())){ |
| | | if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())) { |
| | | vo.getReferConfig().getWhere().keySet().forEach(key -> { |
| | | vo.getReferConfig().getWhere().put(key, "'" + vo.getReferConfig().getWhere().get(key) + "'"); |
| | | }); |
| | | } |
| | | if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())){ |
| | | if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())) { |
| | | String parentValue = vo.getReferConfig().getParentValue(); |
| | | parentValue ="\\" + parentValue.replaceAll("'","{vci-quote}").replaceAll("=","{vci-equals}"); |
| | | parentValue = "\\" + parentValue.replaceAll("'", "{vci-quote}").replaceAll("=", "{vci-equals}"); |
| | | vo.getReferConfig().setParentValue(parentValue); |
| | | } |
| | | String referConfig = vo.getReferConfig().toString() |
| | |
| | | */ |
| | | private void setComboxConfig2EditConfig(UITableFieldVO vo) { |
| | | vo.setEditConfig("{editable:true,comboxKey:'" + vo.getComboxKey() + "'"); |
| | | if (!CollectionUtils.isEmpty(vo.getData())){ |
| | | vo.setEditConfig(vo.getEditConfig()+", comboxConfig:"); |
| | | if (!CollectionUtils.isEmpty(vo.getData())) { |
| | | vo.setEditConfig(vo.getEditConfig() + ", comboxConfig:"); |
| | | for (int i = 0; i < vo.getData().size(); i++) { |
| | | KeyValue data = vo.getData().get(i); |
| | | if (i == vo.getData().size() -1){ |
| | | vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'}]}"); |
| | | }else if (i == 0){ |
| | | vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},"); |
| | | }else{ |
| | | vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},"); |
| | | if (i == vo.getData().size() - 1) { |
| | | vo.setEditConfig(vo.getEditConfig() + "{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'}]}"); |
| | | } else if (i == 0) { |
| | | vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'},"); |
| | | } else { |
| | | vo.setEditConfig(vo.getEditConfig() + "{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'},"); |
| | | } |
| | | } |
| | | vo.setEditConfig(vo.getEditConfig() + ",valueField:'" + vo.getQueryField() + "'"); |
| | |
| | | @Override |
| | | public MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath) { |
| | | CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(idPath); |
| | | if(classifyVO !=null){ |
| | | if (classifyVO != null) { |
| | | return getFormDefineByClassifyOid(classifyVO.getOid()); |
| | | } |
| | | return null; |
| | |
| | | MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); |
| | | uiInfoVO.setTemplateVO(templateVO); |
| | | //我们需要将模板转换为表格相关的显示信息 |
| | | uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(),false)); |
| | | uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(), false)); |
| | | //需要去看扩展的按钮,只有列表里面本身才添加进去,工具栏上的单独获取 |
| | | List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateVO.getOid(), true); |
| | | if (!CollectionUtils.isEmpty(buttonVOS)) { |
| | |
| | | @Override |
| | | public MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath, String functionId) { |
| | | CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(codeClassifyIdPath); |
| | | if(classifyVO !=null){ |
| | | return getUIInfoByClassifyOid(classifyVO.getOid(),functionId); |
| | | if (classifyVO != null) { |
| | | return getUIInfoByClassifyOid(classifyVO.getOid(), functionId); |
| | | } |
| | | return null; |
| | | } |
| | |
| | | @Override |
| | | public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId) { |
| | | VciBaseUtil.alertNotNull(codeClassifyOid, "主题库分类主键"); |
| | | |
| | | MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid)); |
| | | uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0); |
| | | if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) { |
| | | List<Menu> buttonVOS = iSysClient.getMenuButtonByType(uiInfoVO.getTemplateVO().getBtmTypeId()).getData(); |
| | | |
| | | //功能按钮服务还未实现,等实现了,在进行调用 |
| | | // List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId); |
| | | // if (operationVOS == null) { |
| | | // operationVOS = new ArrayList<>(); |
| | |
| | | * @return 处理成功数据条数 |
| | | */ |
| | | @Override |
| | | public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception { |
| | | public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) { |
| | | //使用传入的业务类型查询表 |
| | | R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); |
| | | if(listR.getData().size() == 0){ |
| | |
| | | * 传入业务类型以及相oid集合查询数据进行返回 |
| | | * |
| | | * @param btmType 业务类型 |
| | | * @param oids 需要查询的oid集合 逗号分开 |
| | | * @param oids 需要查询的oid集合 逗号分开 |
| | | * @return 查询出的数据 |
| | | */ |
| | | @Override |
| | | public List<BaseModel> selectByTypeAndOid(String btmType, String oids) throws IllegalAccessException, NoSuchFieldException, InstantiationException, InvocationTargetException, IntrospectionException, SQLException { |
| | | public List<BaseModel> selectByTypeAndOid(String btmType, String oids) { |
| | | |
| | | //使用传入的业务类型查询表 |
| | | R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); |
| | | if(listR.getData().size() == 0){ |
| | | if (listR.getData().size() == 0) { |
| | | throw new VciBaseException("传入业务类型未查询到相应表单,请检查!"); |
| | | } |
| | | //查询数据 |
| | |
| | | |
| | | List<BaseModel> baseModels = new ArrayList<>(); |
| | | //将查询到的数据转换为basemodel,使用的反射方式来进行创建的 |
| | | for (Map map : maps) { |
| | | Object obj = BaseModel.class.newInstance(); |
| | | BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); |
| | | PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); |
| | | for (PropertyDescriptor property : propertyDescriptors) { |
| | | Method setter = property.getWriteMethod(); |
| | | if (setter != null) { |
| | | //oracle的时间为TIMESTAMP的,需要进行转换成data,否则将报错 |
| | | if(map.get(property.getName().toUpperCase()) instanceof TIMESTAMP){ |
| | | LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime(); |
| | | ZoneId zoneId = ZoneId.systemDefault(); |
| | | ZonedDateTime zdt = localDateTime.atZone(zoneId); |
| | | Date date = Date.from(zdt.toInstant()); |
| | | setter.invoke(obj,date); |
| | | 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()); |
| | | }else if(map.get(property.getName().toUpperCase()) != null){ |
| | | setter.invoke(obj, map.get(property.getName().toUpperCase())); |
| | | map.remove(property.getName().toUpperCase()); |
| | | try{ |
| | | for (Map map : maps) { |
| | | Object obj = BaseModel.class.newInstance(); |
| | | BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); |
| | | PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); |
| | | for (PropertyDescriptor property : propertyDescriptors) { |
| | | Method setter = property.getWriteMethod(); |
| | | if (setter != null) { |
| | | //oracle的时间为TIMESTAMP的,需要进行转换成data,否则将报错 |
| | | if(map.get(property.getName().toUpperCase()) instanceof TIMESTAMP){ |
| | | LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime(); |
| | | ZoneId zoneId = ZoneId.systemDefault(); |
| | | ZonedDateTime zdt = localDateTime.atZone(zoneId); |
| | | Date date = Date.from(zdt.toInstant()); |
| | | setter.invoke(obj,date); |
| | | 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()); |
| | | }else if(map.get(property.getName().toUpperCase()) != null){ |
| | | 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))); |
| | | } |
| | | for (Object key : map.keySet()) { |
| | | map.put(key,String.valueOf(map.get(key))); |
| | | } |
| | | |
| | | ((BaseModel) obj).setData(map); |
| | | baseModels.add((BaseModel) obj); |
| | | ((BaseModel) obj).setData(map); |
| | | baseModels.add((BaseModel) obj); |
| | | } |
| | | }catch (Exception e){ |
| | | throw new VciBaseException("查询失败:" + e.getMessage()); |
| | | } |
| | | return baseModels; |
| | | } |
| | |
| | | * @return 处理状态 |
| | | */ |
| | | @Override |
| | | public R updateBatchByBaseModel(String btmType, List<BaseModel> baseModels) throws Exception { |
| | | public R updateBatchByBaseModel(String btmType, List<BaseModel> baseModels) { |
| | | //使用传入的业务类型查询表 |
| | | R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); |
| | | if(listR.getData().size() == 0){ |
| | |
| | | |
| | | return R.success("更新成功!"); |
| | | } |
| | | |
| | | /** |
| | | * 获取参照的信息 |
| | | * |
| | | * @param referConfigVO 参照的配置 |
| | | * @param pageHelper 分页的工具 |
| | | * @return 列表数据 |
| | | */ |
| | | @Override |
| | | public DataGrid referDataGrid(UIFormReferVO referConfigVO, PageHelper pageHelper) { |
| | | // checkReferConfig(referConfigVO); |
| | | //使用业务类型查询 |
| | | R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(referConfigVO.getReferType()); |
| | | BtmTypeVO btmTypeVO = allAttributeByBtmId.getData(); |
| | | if (referConfigVO.getWhere() == null) { |
| | | referConfigVO.setWhere(new HashMap<>()); |
| | | } |
| | | /** |
| | | * 加上查询最新版次 |
| | | */ |
| | | Map<String, String> conditionMap = new HashMap<>(); |
| | | conditionMap.put("lastr", "1"); |
| | | conditionMap.put("lastv", "1"); |
| | | referConfigVO.getWhere().putAll(conditionMap); |
| | | if (VciBaseUtil.containsKeyUnCaseForMap(referConfigVO.getWhere(), VciQueryWrapperForDO.LC_STATUS_FIELD) && |
| | | BtmTypeLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) { |
| | | referConfigVO.getWhere().put(VciQueryWrapperForDO.LC_STATUS_FIELD, FrameworkDataLCStatus.ENABLED.getValue()); |
| | | } |
| | | if (VciBaseUtil.containsKeyUnCaseForMap(referConfigVO.getWhere(), VciQueryWrapperForDO.LC_STATUS_FIELD) && |
| | | BtmTypeLcStatusConstant.RELEASE_LIFE_CYCLE.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) { |
| | | referConfigVO.getWhere().put(VciQueryWrapperForDO.LC_STATUS_FIELD, CodeDefaultLC.RELEASED.getValue()); |
| | | } |
| | | BaseQueryObject baseQueryObject = new BaseQueryObject(); |
| | | Map<String, String> where = referConfigVO.getWhere(); |
| | | where.put("domain", AppConstant.APPLICATION_NAME_CODE); |
| | | baseQueryObject.setConditionMap(where); |
| | | baseQueryObject.setPage(pageHelper.getPage()); |
| | | baseQueryObject.setSort(pageHelper.getSort()); |
| | | baseQueryObject.setLimit(pageHelper.getLimit()); |
| | | baseQueryObject.setOrder(pageHelper.getOrder()); |
| | | R<List<BtmTypeVO>> ref = btmTypeClient.getRef(baseQueryObject); |
| | | DataGrid<BtmTypeVO> btmTypeVODataGrid = new DataGrid<>(); |
| | | List<BtmTypeVO> data = ref.getData(); |
| | | btmTypeVODataGrid.setData(data); |
| | | btmTypeVODataGrid.setCode(ref.getCode()); |
| | | btmTypeVODataGrid.setLimit(pageHelper.getLimit()); |
| | | btmTypeVODataGrid.setMsg(ref.getMsg()); |
| | | btmTypeVODataGrid.setSort(pageHelper.getSort()); |
| | | btmTypeVODataGrid.setOrder(pageHelper.getOrder()); |
| | | btmTypeVODataGrid.setPage(pageHelper.getPage()); |
| | | return btmTypeVODataGrid; |
| | | } |
| | | |
| | | /** |
| | | * 获取树形的参照 |
| | | * |
| | | * @param referConfigVO 参照的配置 |
| | | * @return 树形的数据 |
| | | */ |
| | | @Override |
| | | public List<Tree> referTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject) { |
| | | if (queryObject.getConditionMap() == null) { |
| | | queryObject.setConditionMap(new HashMap<>()); |
| | | } |
| | | |
| | | if (queryObject.getParentOid()==null){ |
| | | LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>(); |
| | | String parentValue = referConfigVO.getParentValue().substring(3); |
| | | lqw.inSql(CodeClassify::getOid,parentValue); |
| | | List<String> codeClassifies = classifyService.select1(lqw); |
| | | String oid = codeClassifies.get(0); |
| | | queryObject.setParentOid(oid); |
| | | } |
| | | String oidFieldName = StringUtils.isNotBlank(referConfigVO.getParentUsedField()) ? referConfigVO.getParentUsedField() : referConfigVO.getValueField(); |
| | | if (queryObject.isQueryAllLevel()) { |
| | | 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 " + ((temp.startsWith("(") && temp.endsWith(")")) ? temp : "(" + temp + ")"); |
| | | } else if (temp.startsWith(QueryOptionConstant.NOTIN)) { |
| | | parentOidSql = " not in " + ((temp.startsWith("(") && temp.endsWith(")")) ? temp : "(" + temp + ")"); |
| | | } 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() + ")"); |
| | | } else { |
| | | if (StringUtils.isNotBlank(referConfigVO.getParentFieldName()) && StringUtils.isNotBlank(queryObject.getParentOid())) { |
| | | queryObject.getConditionMap().put(referConfigVO.getParentFieldName(), queryObject.getParentOid()); |
| | | } |
| | | } |
| | | LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>(); |
| | | String sql = queryObject.getConditionMap().get("oid").substring(3); |
| | | lqw.inSql(CodeClassify::getOid,sql); |
| | | List<CodeClassify> codeClassifies = classifyService.selectByWrapper(lqw); |
| | | TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(referConfigVO.getParentFieldName()); |
| | | treeWrapperOptions.setOidFieldName(oidFieldName); |
| | | treeWrapperOptions.setTextFieldName(referConfigVO.getTextField()); |
| | | treeWrapperOptions.setMultipleSelect(referConfigVO.isMuti()); |
| | | treeWrapperOptions.setParentOid(queryObject.getParentOid()); |
| | | return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null); |
| | | } |
| | | |
| | | |
| | | private String getTableName(String refertype){ |
| | | if ("codeclassify".equals(refertype)){ |
| | | return "pl_code_classify"; |
| | | } |
| | | if ("table".equals(refertype)){ |
| | | return "pl_code_test_table"; |
| | | } |
| | | if ("testBtmType".equals(refertype)){ |
| | | return "PLBT_code_testBtmType"; |
| | | } |
| | | |
| | | return "pl_code_"+refertype.trim().toLowerCase(); |
| | | } |
| | | |
| | | public BaseModel reviseBusinessObject(BaseModel fromBo) { |
| | | BaseModel toBo = new BaseModel(); |
| | | // Map<String,String> data = new HashMap<>(); |
| | | // toBo.getData().put(data); |
| | | toBo.setOid(VciBaseUtil.getPk()); |
| | | toBo.setRevisionOid(VciBaseUtil.getPk()); |
| | | toBo.setNameOid(fromBo.getNameOid()); |
| | | toBo.setBtmname(fromBo.getBtmname()); |
| | | toBo.setLastR(String.valueOf(1)); |
| | | toBo.setFirstR(String.valueOf(0)); |
| | | toBo.setFirstV(String.valueOf(1)); |
| | | toBo.setLastV(String.valueOf(1)); |
| | | toBo.setCreator(String.valueOf(AuthUtil.getUser().getUserId())); |
| | | toBo.setCreateTime(new Date()); |
| | | toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId())); |
| | | toBo.setLastModifyTime(new Date()); |
| | | toBo.setRevisionRule(fromBo.getRevisionRule()); |
| | | toBo.setVersionRule(fromBo.getVersionRule()); |
| | | // RevisionValueObject rvObj = this.getNextRevision(fromBo.getBtmName(), fromBo.getNameoid(), item.revRuleName, item.revInput, revisionVal); |
| | | R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(fromBo.getBtmname())); |
| | | Map<String, Object> nextRevision = commonsMapper.getNextRevision(listR.getData().get(0).getTableName(), fromBo.getNameOid()); |
| | | toBo.setRevisionSeq(Integer.parseInt(nextRevision.get("REVISIONSEQ").toString())); |
| | | toBo.setRevisionValue(nextRevision.get("REVISIONVAL").toString()); |
| | | // VersionValueObject versionObj = this.getVersionValue(item.verRuleName); |
| | | toBo.setVersionSeq(Integer.valueOf(nextRevision.get("VERSIONSEQ").toString())); |
| | | toBo.setVersionValue(nextRevision.get("VERSIONVAL").toString()); |
| | | toBo.setLctid(fromBo.getLctid()); |
| | | toBo.setLcStatus("Editing"); |
| | | toBo.setId(fromBo.getId()); |
| | | toBo.setName(fromBo.getName()); |
| | | toBo.setDescription(fromBo.getDescription()); |
| | | toBo.setOwner(String.valueOf(AuthUtil.getUser().getUserId())); |
| | | // toBo.setCheckinBy(String.valueOf(AuthUtil.getUser().getUserId())); |
| | | toBo.setCopyFromVersion(fromBo.getOid()); |
| | | toBo.getData().putAll(fromBo.getData()); |
| | | toBo.getData().put("CHECKINBY",String.valueOf(AuthUtil.getUser().getUserId())); |
| | | // this.initRevisionTypeAttributeValue(fromBo, toBo); |
| | | return toBo; |
| | | |
| | | } |
| | | } |