ludc
2023-10-17 d86b8fc93fad9b4986d125dab524f8ec6a2a5b85
Merge remote-tracking branch 'origin/master'
已修改11个文件
已添加1个文件
394 ■■■■ 文件已修改
Source/UBCS-WEB/src/api/system/dept.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/template/templateAttr.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/index/top/index.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/user.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/utils/ListUtil.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/data/data.xml 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/system/dept.js
@@ -81,3 +81,13 @@
  })
}
export const updateUserStatus = (params) => {
  return request({
    url: '/api/ubcs-user/user/updateUserStatus ',
    method: 'get',
    params:{
      ...params
    }
  })
}
Source/UBCS-WEB/src/api/template/templateAttr.js
@@ -244,7 +244,7 @@
//下载模板
export const downloadBatchImportApplyTemplate = (params) => {
  return request({
    url: '/api/ubcs-code/mdmEngineController/downloadImportExcel',
    url: '/api/ubcs-code/codeClassify/downloadImportExcel',
    method: 'get',
    params,
    responseType: 'blob'
Source/UBCS-WEB/src/page/index/top/index.vue
@@ -18,7 +18,11 @@
        <top-search></top-search>
      </span>
    </div>
    <div></div>
    <div class="top-bar__right">
      <el-tooltip style="margin-right: 35px">
        <p style="font-size: 20px;line-height: 20px">本系统为非涉密应用系统,禁止处理、存储、传输涉密信息</p>
      </el-tooltip>
      <el-tooltip v-if="showColor"
                  effect="dark"
                  :content="$t('navbar.color')"
@@ -101,6 +105,9 @@
          </el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown>
      <el-tooltip effect="dark" style="margin-left: 15px">
        <p style="font-size: 16px">当前登录用户:{{storedUsername}}</p>
      </el-tooltip>
      <el-dialog title="用户信息选择"
                 append-to-body
                 :visible.sync="userBox"
@@ -137,6 +144,7 @@
    name: "top",
    data() {
      return {
        storedUsername: '',
        userBox: false,
        userForm: {
          deptId: '',
@@ -191,6 +199,7 @@
    },
    mounted() {
      listenfullscreen(this.setScreen);
      this.storedUsername = localStorage.getItem('username');
    },
    computed: {
      ...mapState({
Source/UBCS-WEB/src/views/system/user.vue
@@ -177,7 +177,7 @@
  resetPassword, unlock
} from "@/api/system/user";
import {exportBlob} from "@/api/common";
import {getDeptTree, getDeptLazyTree} from "@/api/system/dept";
import {getDeptTree, getDeptLazyTree, updateUserStatus} from "@/api/system/dept";
import {getRoleTree} from "@/api/system/role";
import {getPostList} from "@/api/system/post";
import {mapGetters} from "vuex";
@@ -742,6 +742,9 @@
    }
  },
  created() {
    updateUserStatus({userid:'1702600796324032513',status:'true'}).then(res=>{
      console.log(res)
    })
    this.selecload()
    const arr=JSON.parse(localStorage.getItem("updataid"))
    if(arr.user_id != '0' && arr.tenant_id !== '000000'){
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/utils/ListUtil.java
@@ -5,8 +5,6 @@
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
import java.text.ParseException;
Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/data/data.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,195 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdm modelcode="wl" time="2023-10-15 10:14:48" uuid="20231015101448" state="3">
    <codeinfo>
        <typecode>180101</typecode>
        <wlid>44822D85-C496-37FB-1734-24AE2CD17628</wlid>
        <wlcode>B0203104500</wlcode>
        <desc>螺栓|GB/T 5789-1986|M10×80|8.8|钢|A或B型|氧化|Ct.O</desc>
        <fields>
            <field>
                <name>企业编码</name>
                <value>B0203104500</value>
            </field>
            <field>
                <name>所属分类编码</name>
                <value>180101</value>
            </field>
            <field>
                <name>长描述</name>
                <value>螺栓|GB/T 5789-1986|M10×80|8.8|钢|A或B型|氧化|Ct.O</value>
            </field>
            <field>
                <name>短描述</name>
                <value></value>
            </field>
            <field>
                <name>集团分类代码</name>
                <value>34151102</value>
            </field>
            <field>
                <name>集团分类名称</name>
                <value>螺栓</value>
            </field>
            <field>
                <name>所属单位</name>
                <value>中国北方车辆研究所</value>
            </field>
            <field>
                <name>物资名称</name>
                <value>六角法兰面螺栓-加大系列-B级</value>
            </field>
            <field>
                <name>物资简称</name>
                <value>螺栓</value>
            </field>
            <field>
                <name>物资别名</name>
                <value></value>
            </field>
            <field>
                <name>特殊要求</name>
                <value>Ct.O</value>
            </field>
            <field>
                <name>申请说明</name>
                <value>TT--Ct.O-B0203104500</value>
            </field>
            <field>
                <name>计量单位</name>
                <value>ä»¶(ä»¶)</value>
            </field>
            <field>
                <name>密级</name>
                <value>非涉密(非涉密)</value>
            </field>
            <field>
                <name>材质</name>
                <value>钢</value>
            </field>
            <field>
                <name>规格</name>
                <value>M10×80</value>
            </field>
            <field>
                <name>牌号</name>
                <value></value>
            </field>
            <field>
                <name>性能等级</name>
                <value>8.8</value>
            </field>
            <field>
                <name>表面处理</name>
                <value>氧化</value>
            </field>
            <field>
                <name>产品等级</name>
                <value>A或B型</value>
            </field>
            <field>
                <name>集团码</name>
                <value>200181516</value>
            </field>
            <field>
                <name>产品标准号</name>
                <value>GB/T 5789-1986</value>
            </field>
        </fields>
    </codeinfo>
    <codeinfo>
        <typecode>180101</typecode>
        <wlid>59988666-C390-0BEF-B415-84FAAE76DF7F</wlid>
        <wlcode>B0203104202</wlcode>
        <desc>螺栓|GB/T 5789-1986|M10×60|12.9|钢|A|氧化|Ct.O</desc>
        <fields>
            <field>
                <name>企业编码</name>
                <value>B0203104202</value>
            </field>
            <field>
                <name>所属分类编码</name>
                <value>180101</value>
            </field>
            <field>
                <name>长描述</name>
                <value>螺栓|GB/T 5789-1986|M10×60|12.9|钢|A|氧化|Ct.O</value>
            </field>
            <field>
                <name>短描述</name>
                <value></value>
            </field>
            <field>
                <name>集团分类代码</name>
                <value>34151102</value>
            </field>
            <field>
                <name>集团分类名称</name>
                <value>螺栓</value>
            </field>
            <field>
                <name>所属单位</name>
                <value>中国北方车辆研究所</value>
            </field>
            <field>
                <name>物资名称</name>
                <value>六角法兰面螺栓-加大系列-B级</value>
            </field>
            <field>
                <name>物资简称</name>
                <value>螺栓</value>
            </field>
            <field>
                <name>物资别名</name>
                <value></value>
            </field>
            <field>
                <name>特殊要求</name>
                <value>Ct.O</value>
            </field>
            <field>
                <name>申请说明</name>
                <value>TT--Ct.O-B0203104202</value>
            </field>
            <field>
                <name>计量单位</name>
                <value>ä»¶(ä»¶)</value>
            </field>
            <field>
                <name>密级</name>
                <value>非涉密(非涉密)</value>
            </field>
            <field>
                <name>材质</name>
                <value>钢</value>
            </field>
            <field>
                <name>规格</name>
                <value>M10×60</value>
            </field>
            <field>
                <name>牌号</name>
                <value></value>
            </field>
            <field>
                <name>性能等级</name>
                <value>12.9</value>
            </field>
            <field>
                <name>表面处理</name>
                <value>氧化</value>
            </field>
            <field>
                <name>产品等级</name>
                <value>A</value>
            </field>
            <field>
                <name>集团码</name>
                <value>200181515</value>
            </field>
            <field>
                <name>产品标准号</name>
                <value>GB/T 5789-1986</value>
            </field>
        </fields>
    </codeinfo>
</mdm>
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -1955,16 +1955,29 @@
        //都转换完了。需要批量检查
        //如果出错了,我们依然执行有效的数据,无效的数据写回到excel中
        Map<String,String> errorKeyMap=new HashMap<>();
        //1.分类注入
        batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
        //boolean
        reSwitchBooleanAttrOnOrder(attrVOS,cboList);
        // cboList.stream().forEach(cbo->{
        //2.校验规则
        batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
        //3.校验枚举是否正确
        batchSwitchEnumAttrOnOrder(attrVOS,cboList,errorMap);
        //4.时间格式的验证
        //4.时间的,必须统一为yyyy-MM-dd HH:mm:ss
        batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
        //5.处理参照的情况
        batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
        //6设置默认值
        batchSwitchAttrDefault(attrVOS, cboList);
        //2.判断必输项。。需要全部的属性,如果是必输,但是表单里面不显示的,只能是分类注入或者组合规则
        batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
        /**
         * å…³é”®ç†Ÿæ‚‰é”™è¯¯æç¤º
         */
        Map<String,String> errorKeyMap=new HashMap<>();
        //最后弄组合规则
        batchSwitchComponentAttrOnOrder(attrVOS,cboList);
        //3.判断关键属性
        CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
        Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
@@ -2001,20 +2014,6 @@
                errorKeyMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";关键属性与系统中的重复" );
            });
        }
        //分类注入
        batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
        //boolean
        reSwitchBooleanAttrOnOrder(attrVOS,cboList);
        // cboList.stream().forEach(cbo->{
        //4.校验规则
        batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
        //5.校验枚举是否正确
        batchSwitchEnumAttrOnOrder(attrVOS,cboList,errorMap);
        //6.时间格式的验证
        //6.时间的,必须统一为yyyy-MM-dd HH:mm:ss
        batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
        //7.处理参照的情况
        batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
        //校验属性是否正确错误信息
        if(errorMap.size()>0){
            String[] newMsg = {""};
@@ -2115,10 +2114,7 @@
        }
        //  });
        //设置默认值
        batchSwitchAttrDefault(attrVOS, cboList);
        //最后弄组合规则
        batchSwitchComponentAttrOnOrder(attrVOS,cboList);
        //要把以上的错误的都抛出后,再继续处理时间和组合规则
        List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
            String rowIndex =cbo.getAttributeValue(IMPORT_ROW_INDEX);
@@ -2377,20 +2373,20 @@
                throw new VciBaseException("数据不是{0}的状态,不允许修改", new String[]{CodeDefaultLC.EDITING.getText()});
            }*/
            if(operation.equals("update")) {
                //1. åˆ¤æ–­å¿…输项
                checkRequiredAttrOnOrder(templateVO, orderDTO, errorMap);
                //2.先注入,再组合,最后校验
                //1.先注入,再组合,最后校验
                switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO, errorMap);
                //3.处理组合规则。组合规则不能使用编码的属性,因为编码的生成可能是需要属性的
                //2.处理组合规则。组合规则不能使用编码的属性,因为编码的生成可能是需要属性的
                switchComponentAttrOnOrder(templateVO, orderDTO);
                //4.校验规则
                //3.校验规则
                checkVerifyOnOrder(templateVO, orderDTO, errorMap);
                //5.判断关键属性
                checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO, errorMap);
                //6.校验枚举的内容是否正确
                //4.校验枚举的内容是否正确
                checkEnumOnOrder(templateVO, orderDTO, errorMap);
                //7.处理时间格式,在数据库里面不论是字符串还是日期格式,都使用相同的格式存储
                //5.处理时间格式,在数据库里面不论是字符串还是日期格式,都使用相同的格式存储
                switchDateAttrOnOrder(templateVO, orderDTO);
                //6. åˆ¤æ–­å¿…输项
                checkRequiredAttrOnOrder(templateVO, orderDTO, errorMap);
                //7.判断关键属性
                checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO, errorMap);
                //默认的内容不能变,所以只需要拷贝自定义的相关属性即可
                copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true, errorMap);
                //企业码和集团码的不修改
@@ -3699,7 +3695,7 @@
     */
    private void batchCheckRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,Map<String,String> errorMap){
        Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter(s ->
            VciBaseUtil.getBoolean(s.getRequireFlag()) && StringUtils.isBlank(s.getComponentRule()) && StringUtils.isBlank(s.getClassifyInvokeLevel())//不能是组合的和分类注入的
            VciBaseUtil.getBoolean(s.getRequireFlag()) && StringUtils.isBlank(s.getComponentRule()) && (StringUtils.isBlank(s.getClassifyInvokeLevel())||s.getClassifyInvokeLevel().equals("none"))//不能是组合的和分类注入的
        ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
        //与MdmEngineServiceImpl里面的checkRequiredAttrOnOrder é€»è¾‘应该相似
        if(!CollectionUtils.isEmpty(requiredAttrMap)) {
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -31,6 +31,7 @@
import com.vci.ubcs.starter.web.util.VciDateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -278,8 +279,27 @@
                    QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
                    wrapper.eq("CREATECODEBTM",addCodeDOs.get(0).getCreateCodeBtm());
                    wrapper.in("ID",addCodeDOs.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
                    if(codeAllCodeService.count(wrapper)>0){
                    List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper);
                    List<CodeAllCode> takeBack = codeAllCodes.stream().filter(e -> e.getLcStatus().equals("TakeBack")).collect(Collectors.toList());
                    if(codeAllCodes.size()>takeBack.size()){
                        throw new ServiceException("生成编码数据ID已有历史记录,请确认如下生成的ID数据:"+ addCodeDOs.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
                    }
                    for (CodeAllCode codeAllCode : takeBack) {
                        codeAllCode.setTs(new Date());
                        codeAllCode.setLastModifyTime(new Date());
                        codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
                        Iterator<CodeAllCode> iterator = addCodeDOs.iterator();
                        while (iterator.hasNext()){
                            CodeAllCode next = iterator.next();
                            if(codeAllCode.getId().equals(next.getId())){
                                codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
                                codeAllCode.setLcStatus(next.getLcStatus());
                                iterator.remove();
                            }
                        }
                    }
                    if(takeBack.size()>0){
                        codeAllCodeService.updateBatchById(takeBack);
                    }
                    codeAllCodeService.saveBatch(addCodeDOs);
                }
@@ -365,9 +385,29 @@
            QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
            wrapper.eq("CREATECODEBTM",allCodeDOList.get(0).getCreateCodeBtm());
            wrapper.in("ID",allCodeDOList.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
            if(codeAllCodeService.count(wrapper)>0){
            List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper);
            List<CodeAllCode> takeBack = codeAllCodes.stream().filter(e -> e.getLcStatus().equals("TakeBack")).collect(Collectors.toList());
            if(codeAllCodes.size()>takeBack.size()){
                throw new ServiceException("生成编码数据ID已有历史记录,请确认如下生成的ID数据:"+ allCodeDOList.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
            }
            for (CodeAllCode codeAllCode : takeBack) {
                codeAllCode.setTs(new Date());
                codeAllCode.setLastModifyTime(new Date());
                codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
                Iterator<CodeAllCode> iterator = allCodeDOList.iterator();
                while (iterator.hasNext()){
                    CodeAllCode next = iterator.next();
                    if(codeAllCode.getId().equals(next.getId())){
                        codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
                        codeAllCode.setLcStatus(next.getLcStatus());
                        iterator.remove();
                    }
                }
            }
            if(takeBack.size()>0){
                codeAllCodeService.updateBatchById(takeBack);
            }
            codeAllCodeService.saveBatch(allCodeDOList);
//            iCodeWupinService.saveBatch(dataCBOList);
            mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -1661,9 +1661,9 @@
                                            if (!CollectionUtils.isEmpty(ListMap)) {
                                                ListMap.stream().forEach(map -> {
                                                    num[0]++;
                                                    String id = map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString();
                                                    String value = map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString();
                                                    String text = map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString();
                                                    String id =Func.isNull(map.getOrDefault("OID".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString();
                                                    String value = Func.isNull(map.getOrDefault(valueField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString();
                                                    String text =Func.isNull(map.getOrDefault(textField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString();
                                                    String description = map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString();
                                                    CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, "", description);
                                                    codeSectionValueVOList.add(sectionValueVO);
@@ -1750,11 +1750,11 @@
                                            if (!CollectionUtils.isEmpty(ListMap)) {
                                                ListMap.stream().forEach(map -> {
                                                    num[0]++;
                                                    String id = map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString();
                                                    String value = map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString();
                                                    String text = map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString();
                                                    String description = map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString();
                                                    String pid = map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), "").toString();
                                                    String id =Func.isNull(map.getOrDefault("OID".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString();
                                                    String value =Func.isNull(map.getOrDefault(valueField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString();
                                                    String text =Func.isNull(map.getOrDefault(textField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString();
                                                    String description =Func.isNull(map.getOrDefault("description".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString();
                                                    String pid =Func.isNull(map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), "").toString();
                                                    CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, pid, description);
                                                    codeSectionValueVOList.add(sectionValueVO);
                                                });
@@ -2135,7 +2135,7 @@
                if (!CollectionUtils.isEmpty(codeClassifyList)) {
                    codeClassifyList.stream().forEach(codeClassify -> {
                        CodeClassifyVO codeClassifyVO=  classifyService.getTopClassifyVO(codeClassify.getOid());
                        if(codeClassifyVO.getId().equals(libray)){
                        if(codeClassifyVO.getId().toLowerCase(Locale.ROOT).equals(libray.toLowerCase(Locale.ROOT))){
                            newCodeClassify[0] =codeClassify;
                        }
                    });
@@ -2177,7 +2177,7 @@
                if (!CollectionUtils.isEmpty(codeClassifyList)) {
                    codeClassifyList.stream().forEach(codeClassify -> {
                        CodeClassifyVO codeClassifyVO=  classifyService.getTopClassifyVO(codeClassify.getOid());
                        if(codeClassifyVO.getId().equals(libray)){
                        if(codeClassifyVO.getId().toLowerCase(Locale.ROOT).equals(libray.toLowerCase(Locale.ROOT))){
                            newCodeClassify[0] =codeClassify;
                        }
                    });
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java
@@ -376,4 +376,19 @@
        return R.data(userService.getByRoleUserList(user,roleName));
    }
    /**
     * èŽ·å–åˆ°æŒ‡å®šèº«ä»½æƒé™çš„ç”¨æˆ·åˆ—è¡¨
     * @param userIds userId集合
     * @param status åœç”¨/启用 true:启用,false:停用
     * @return
     */
    @PostMapping("/updateUserStatus")
    @ApiOperationSupport(order = 21)
    @ApiOperation(value = "获取到指定身份权限的用户列表", notes = "传入userId集合")
    public R<Boolean> updateUserStatus(String userIds,boolean status){
        if (StringUtil.isBlank(userIds)) {
            return R.fail("请至少选择一个用户");
        }
        return R.status(userService.updateUserStatus(userIds,status));
    }
}
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java
@@ -28,6 +28,7 @@
import org.springblade.core.mp.support.Query;
import com.vci.ubcs.system.user.vo.UserVO;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import java.util.List;
import java.util.Map;
@@ -260,4 +261,12 @@
     */
    List<Map<String,String>> getByRoleUserList(BladeUser user, String roleName);
    /***
     * æ›´æ–°ç”¨æˆ·å¯ç”¨åœç”¨çŠ¶æ€
     * @param userIds
     * @param status
     * @return
     */
     boolean updateUserStatus(String userIds,boolean status);
}
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
@@ -573,6 +573,21 @@
        return list.stream().distinct().collect(Collectors.toList());
    }
    /***
     * æ›´æ–°ç”¨æˆ·å¯ç”¨åœç”¨çŠ¶æ€
     * @param userIds
     * @param status
     * @return
     */
    @Override
    public boolean updateUserStatus(String userIds, boolean status) {
        Integer user_status=0;
        if(!status){
            user_status=1;
        }
        return this.update(Wrappers.<User>lambdaUpdate().in(User::getId, Func.toLongList(userIds)).set(User::getUserStatus,user_status));
    }
    /**
     * æ—¥æœŸæ—¶é—´æ ¼å¼è½¬å¤©
     * @param date