bug列表296首页统计查询配置方式调整一下,配置方式和主数据授权按钮查询冲突,业务类型提示信息修改
已修改8个文件
122 ■■■■■ 文件已修改
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/BusinessEdit.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmCountServiceImpl.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/controller/DdlController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/IDdlService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -646,8 +646,9 @@
      }
      this.btmType.attributes = this.btmType.attributes.filter(item => !item.isDefaultAttr);
      add(this.btmType, true).then(res => {
        // console.log(res)
        // 添加完成,回调父组件的刷新
        this.$message.success('保存成功');
        this.$message.success(res.data.msg);
        this.cancleSubmitBtmType();
        this.$emit('refreshTable');
      })
Source/UBCS-WEB/src/views/modeling/BusinessEdit.vue
@@ -682,8 +682,9 @@
      }
      this.btmType.attributes = this.btmType.attributes.filter(item => !item.isDefaultAttr);
      add(this.btmType,true).then(res => {
        // console.log(res)
        // 添加完成,回调父组件的刷新
        this.$message.success('保存成功');
        this.$message.success(res.data.msg);
        this.cancleSubmitBtmType();
        this.$emit('refreshTable');
      })
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmCountServiceImpl.java
@@ -7,6 +7,7 @@
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.ICodeClassifyService;
import com.vci.ubcs.code.service.IMdmCountService;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.system.entity.MdmCountConfig;
import com.vci.ubcs.system.entity.Menu;
import com.vci.ubcs.system.feign.ISysClient;
@@ -18,10 +19,9 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.vci.ubcs.starter.web.util.VciBaseUtil.getTableName;
@@ -58,18 +58,24 @@
        if(Func.isBlank(userId) && Func.isBlank(AuthUtil.getUserId().toString())){
            throw new ServiceException("必传参数用户id不能为空");
        }
        /** 1、先查询出各分类顶层节点有哪些主数据,拿到业务类型名称,相当于拿到主数据表名
            顶层节点的btmtypeid还需要用作查询条件对应的菜单表的code字段
            但是为了减少查询次数,就需在查询是使用btmtypeid字段进行排序
        /** 1、先查询出各分类顶层节点有哪些主数据,拿到绑定的业务类型名称,相当于拿到主数据表名
            顶层节点的btmtypeid(2024年1月31日的时候改成了用分类的id)去查询对应的菜单表的code字段
             ,查询出主数据管理下面有哪些主数据的
            但是为了减少查询次数,就需在查询是使用id字段进行排序
         */
        LambdaQueryWrapper<CodeClassify> wrapper = Wrappers.<CodeClassify>query()
            .lambda()
            .isNull(CodeClassify::getParentCodeClassifyOid).select(CodeClassify::getBtmTypeId)
            .orderByAsc(CodeClassify::getBtmTypeId);
            .isNull(CodeClassify::getParentCodeClassifyOid)/*顶层节点*/
            .orderByAsc(CodeClassify::getId);
        // 加上租户查询条件
        if(!VciBaseUtil.checkAdminTenant()){
            wrapper.eq(CodeClassify::getTenantId,AuthUtil.getTenantId());
        }
        List<CodeClassify> codeClassifies = codeClassifyService.list(wrapper);
        List<String> btmTypeIds = codeClassifies.stream().map(CodeClassify::getBtmTypeId).collect(Collectors.toList());
        // List<String> btmTypeIds = codeClassifies.stream().map(CodeClassify::getBtmTypeId).collect(Collectors.toList());
        List<String> classifyIds = codeClassifies.stream().map(CodeClassify::getId).collect(Collectors.toList());
        // 2、然后feign调用需要查询出菜单路由和图标
        R<List<Menu>> menuList = sysClient.getMenuByCodes(btmTypeIds,Func.toLong(userId));
        R<List<Menu>> menuList = sysClient.getMenuByCodes(classifyIds,Func.toLong(userId));
        if(!menuList.isSuccess()){
            throw new ServiceException("获取主数据统计时,主数据菜单查询失败,原因:"+menuList.getMsg());
        }
@@ -80,6 +86,7 @@
            throw new ServiceException("获取主数据统计项配置时出现错误,原因:"+mdmCountConfig.getMsg());
        }
        List<String> mdmNames = null;
        //首页配置显示少于5个就默认显示前五个
        if(Func.isBlank(mdmCountConfig.getData().getMdmName())){
            AtomicInteger count = new AtomicInteger();
            mdmNames = menuList.getData().stream().map(item->{
@@ -92,12 +99,29 @@
            mdmNames = Arrays.stream(mdmCountConfig.getData().getMdmName().split(",")).collect(Collectors.toList());
        }
        final List<String> mdmNamesFinal = mdmNames;
        // 4、然后set进对象中
        /* 4、获取表名,当前未获取到表名,菜单的code值对应了分类的id,
            未对应业务类型的id,所以需要通过菜单的id筛选出配置并且在使用的主数据分类,
            然后通过分类信息查询到业务类型id,在通过业务类型接口查询出表名(这一步可以先省略因为分类上关联的业务类型id也可以拼接出表名)
        */
        // 获取分类上的业务类型的id
        Map<String, String> btmTypeIdMaps = menuList.getData().stream()
        .filter(menu -> codeClassifies.stream()
            .anyMatch(codeClassify -> codeClassify.getId().equals(menu.getCode()))
        ).collect(Collectors.toMap(
            Menu::getCode,
            menu -> codeClassifies.stream()
                .filter(codeClassify -> codeClassify.getId().equals(menu.getCode()))
                .findFirst()
                .map(CodeClassify::getBtmTypeId)
                .orElse(null)
        ));
        // 5、然后set进对象中
        menuList.getData().stream().forEach(item->{
            Integer isDefault = mdmNamesFinal.contains(item.getCode()) ? 1:0;
            MdmCount mdmCount = new MdmCount(
                item.getName(),
                getCountByTableName(item.getCode()), /*查询主数据总数*/
                getCountByTableName(btmTypeIdMaps.get(item.getCode())), /*查询主数据总数*/
                item.getPath(),
                item.getSource(),
                item.getCode(),
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
@@ -108,7 +108,7 @@
        <where>
             1=1
            <if test="oid != null and oid != ''">
               and  codeclassify0.parentcodeclassifyoid = ${oid}
               and codeclassify0.parentcodeclassifyoid = ${oid}
            </if>
            <if test="oid = null">
               and codeclassify0.parentcodeclassifyoid is null
@@ -117,7 +117,7 @@
               and  codeclassify0.tenant_id = #{tenantId}
            </if>
        </where>
        order by lastmodifytime asc
        order by id asc
    </select>
    <select id="selectAllLevelChildHasPath" resultMap="plCodeClassifyResultMap">
@@ -320,20 +320,13 @@
        left join pl_code_resemblerule coderesembleruleoid
        on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
        where codeclassify0.lcstatus = #{lcstatus}
        and codeclassify0.parentcodeclassifyoid in (
            SELECT
                OID
            FROM
                PL_CODE_CLASSIFY
            WHERE
                parentcodeclassifyoid IS NULL
                AND id = #{id}
        )
        or codeclassify0.parentcodeclassifyoid IS NULL
        and codeclassify0.id = #{id}
        <if test="tenantId != null and tenantId != ''">
            and codeclassify0.tenant_id = #{tenantId}
            AND codeclassify0.tenant_id = #{tenantId}
        </if>
        START WITH
            codeclassify0.ID = #{id}
        CONNECT BY
        PRIOR codeclassify0.OID = codeclassify0.parentCodeClassifyOid
        order by id asc
    </select>
@@ -611,6 +604,5 @@
        and isparticipatecheck = 0
        and oid != #{currentOid}
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/controller/DdlController.java
@@ -43,7 +43,7 @@
    @PostMapping("/submit")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "新增或修改", notes = "业务类型链接类型传输对象")
    public R submitBtmType(@RequestBody BtmAndLinkTypeDdlDTO ddlDTO) {
    public R<List<ModifyAttributeInfo>> submitBtmType(@RequestBody BtmAndLinkTypeDdlDTO ddlDTO) {
        try {
            return ddlService.submit(ddlDTO);
        } catch (Throwable e) {
@@ -112,4 +112,5 @@
        Func.requireNotNull(addColumnDTO,"添加的对象");
        return R.status(ddlService.addColumnForTable(addColumnDTO));
    }
}
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/IDdlService.java
@@ -10,6 +10,7 @@
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.tool.api.R;
import java.rmi.ServerException;
import java.util.Collection;
import java.util.List;
@@ -195,7 +196,7 @@
     * @param ddlDTO 业务类型传输对象
     * @return 执行结果
     */
    R submit(BtmAndLinkTypeDdlDTO ddlDTO) throws Throwable;
    R submit(BtmAndLinkTypeDdlDTO ddlDTO) throws ServerException;
    /**
     * 按表名获取表信息
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
@@ -1,6 +1,5 @@
package com.vci.ubcs.ddl.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.nacos.shaded.com.google.protobuf.ServiceException;
import com.vci.ubcs.ddl.bo.DdlTableBO;
@@ -33,8 +32,8 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.rmi.ServerException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@@ -81,25 +80,25 @@
    private final Map<String, LinkTypeVO> idLinkMap = new ConcurrentHashMap<>();
    private void putBtm(@NotNull BtmTypeVO... voList) throws Throwable {
    private void putBtm(@NotNull BtmTypeVO... voList) throws ServiceException {
        String collect = Arrays.stream(voList).map(BtmTypeVO::getId).filter(idBtmMap::containsKey).collect(Collectors.joining(","));
        if (StringUtils.isBlank(collect)) {
            Arrays.stream(voList).forEach(vo -> {
                idBtmMap.put(vo.getId(), vo);
            });
        } else {
            throw new Throwable("业务类型:[" + collect + "]正在被其他用户操作");
            throw new ServiceException("业务类型:[" + collect + "]正在被其他用户操作");
        }
    }
    private void putLink(@NotNull LinkTypeVO... voList) throws Throwable {
    private void putLink(@NotNull LinkTypeVO... voList) throws ServiceException {
        String collect = Arrays.stream(voList).map(LinkTypeVO::getId).filter(idLinkMap::containsKey).collect(Collectors.joining(","));
        if (StringUtils.isBlank(collect)) {
            Arrays.stream(voList).forEach(vo -> {
                idLinkMap.put(vo.getId(), vo);
            });
        } else {
            throw new Throwable("链接类型:[" + collect + "]正在被其他用户操作");
            throw new ServiceException("链接类型:[" + collect + "]正在被其他用户操作");
        }
    }
@@ -765,9 +764,9 @@
                if (StringUtils.isNotBlank(s.getModifyAttributes()) || StringUtils.isNotBlank(s.getDeleteAttributes())) {
                    //需要去判断是否可以更改
                    if (checkTableHasDataByTableName(s.getTableName())) {
                        //有数据的话,得需要判断属性是否可以修改
                        //有数据的话,得需要判断属性是否可以删除
                        if (StringUtils.isNotBlank(s.getDeleteAttributes())) {
                            s.setHandleResult("表格存在数据,不允许删除字段");
                            s.setHandleResult("表格存在数据,不允许删除"+ s.getDeleteAttributes() +"字段");
                            return;
                        }
                        List<DdlTableInDataBaseBO> columnInDbList = selectTableColumnInfo(s.getTableName());
@@ -976,7 +975,7 @@
     * @return 执行结果
     */
    @Override
    public R<List<ModifyAttributeInfo>> submit(BtmAndLinkTypeDdlDTO ddlDTO) throws Throwable {
    public R<List<ModifyAttributeInfo>> submit(BtmAndLinkTypeDdlDTO ddlDTO) throws ServerException {
        try {
            List<ModifyAttributeInfo> changedList = new ArrayList<>();
            if (!CollectionUtils.isEmpty(ddlDTO.getBtmTypeList())) {
@@ -991,8 +990,13 @@
                changedList.addAll(checkDifferent(null,linkTypeList));
                removeLink(linkTypeList.toArray(new LinkTypeVO[0]));
            }
            String msg = changedList.isEmpty() ? "数据库操作成功" : changedList.get(0).getHandleResult();
            R<List<ModifyAttributeInfo>> result = R.success(msg);
            String msg = "数据库操作成功";
            R<List<ModifyAttributeInfo>> result = new R<>();
            if((!changedList.isEmpty())&&Func.isEmpty(changedList.get(0).getHandleResult())){
                result = R.success(msg);
            }else {
                result = R.fail(changedList.get(0).getHandleResult());
            }
            result.setData(changedList);
            return result;
        } catch (Exception e) {
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java
@@ -87,7 +87,7 @@
    @ApiOperation(value = "查询列表", notes = "传入查询")
    public R<IPage<AttributeVO>> pageList(@ApiIgnore @RequestParam Map<String, Object> condition, Query query) {
        IPage<AttributeVO> pageVO = new Page<>();
        IPage<Attribute> page = attributeService.page(Condition.getPage(query), Condition.getQueryWrapper(condition, Attribute.class).lambda().orderByAsc(Attribute::getId));
        IPage<Attribute> page = attributeService.page(Condition.getPage(query), Condition.getQueryWrapper(condition, Attribute.class).lambda().orderByDesc(Attribute::getCreateTime));
        BeanUtil.copy(page,pageVO);
        pageVO.setRecords( AttributeWrapper.build().listEntityVO(page.getRecords()));
        return R.data(pageVO);
@@ -118,12 +118,11 @@
        return R.data(pageVO);
    }
        /**
         * 新增或修改
         * @param dto 元数据页面传输对象
         * @return 执行结果
         */
    /**
     * 新增或修改
     * @param dto 元数据页面传输对象
     * @return 执行结果
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改", notes = "传入元数据对象")
@@ -156,4 +155,5 @@
    public R applyRange(String oid){
        return R.data(attributeService.applyRange(oid));
    }
}