1428594221
2023-06-14 931eb15f748f181fbf347508830f21830f09c863
默认参照数接口,默认参照列表接口
已修改5个文件
226 ■■■■■ 文件已修改
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -12,10 +12,9 @@
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.starter.annotation.VciBusinessLog;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.pagemodel.*;
import com.vci.ubcs.starter.web.util.ControllerUtil;
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
@@ -531,4 +530,25 @@
//        return engineService.updateBatchByBaseModel("wupin", models);
//        return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId);
    }
    /**
     * 默认的参照列表
     * @param referConfigVO 参照的配置信息
     * @return 执行的结果
     */
    @GetMapping("/defaultReferDataGrid")
    public DataGrid defaultReferDataGrid(UIFormReferVO referConfigVO, PageHelper pageHelper){
        return engineService.referDataGrid(referConfigVO,pageHelper);
    }
    /**
     * 默认的树形参照列表
     * @param referConfigVO 参照的配置信息
     * @return 执行的结果
     */
    @GetMapping("/defaultReferTree")
    public List<Tree> defaultReferTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject){
        return engineService.referTree(referConfigVO,queryObject);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
@@ -32,6 +32,20 @@
     */
    List<CodeClassify> selectByWrapper(Wrapper wrapper);
    /**
     * 使用查询封装器来查询
     * @param wrapper 查询封装器
     * @return 数据对象
     */
    List<String> select1(Wrapper wrapper);
    /**
     * 自定义分页
     *
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -12,6 +12,7 @@
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.*;
import org.springblade.core.tool.api.R;
@@ -395,4 +396,19 @@
     */
    R updateBatchByBaseModel(String btmType, List<BaseModel> baseModels);
    /**
     * 默认列表
     * @param referConfigVO
     * @param pageHelper
     * @return
     */
    DataGrid referDataGrid(UIFormReferVO referConfigVO, PageHelper pageHelper);
    /**
     * 获取树形的参照
     * @param referConfigVO 参照的配置
     * @return 树形的数据
     */
    List<Tree> referTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -106,6 +106,20 @@
        return codeClassifyMapper.selectList(wrapper);
    }
    /**
     * 查询
     * @param wrapper 查询封装器
     * @return
     */
    @Override
    public List<String> select1(Wrapper wrapper) {
        return codeClassifyMapper.selectObjs(wrapper);
    }
    @Override
    public IPage<CodeClassifyVO> selectPlCodeClassifyPage(IPage<CodeClassifyVO> page, CodeClassifyVO plCodeClassify) {
        return page.setRecords(codeClassifyMapper.selectPlCodeClassifyPage(page, plCodeClassify));
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -1,6 +1,7 @@
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;
@@ -21,6 +22,8 @@
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.constant.BtmTypeLcStatusConstant;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.feign.IAttributeClient;
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.feign.IEnumClient;
@@ -31,6 +34,7 @@
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;
@@ -49,9 +53,12 @@
import com.vci.ubcs.system.user.feign.IUserClient;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import oracle.sql.TIMESTAMP;
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringPool;
@@ -60,6 +67,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import plm.bs.bom.clientobject.ClientBusinessObject;
import javax.annotation.Resource;
import java.beans.BeanInfo;
@@ -323,7 +331,6 @@
        }
        return comboboxKVs;
    }
    /**
     * 修改状态
     *
@@ -2060,8 +2067,6 @@
//        return codeList.size() > 0 ? codeList.get(0) : "";
        //修改的时候,编码是不变的
//        BatchCBO batchCBO = new BatchCBO();
//        batchCBO.getUpdateCbos().add(cbo);
@@ -3215,4 +3220,149 @@
        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();
    }
}