ludc
2023-10-18 c3cb8a6ad58160f3f4bc5a8e7670b4c62ceca920
Merge remote-tracking branch 'origin/master'

# Conflicts:
# Source/UBCS-WEB/src/views/system/user.vue
已修改7个文件
324 ■■■■■ 文件已修改
Source/UBCS-WEB/src/api/system/statistic.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/docking/info.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/user.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/wel/Statistic.vue 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/wel/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/system/statistic.js
@@ -1,11 +1,23 @@
import request from '@/router/axios';
export const getList = (url, params) => {
//渲染
export const getList = (params) => {
  return request({
    url: url,
    url: '/api/ubcs-code/mdmCount/getMdmCounts',
    method: 'get',
    params: {
      ...params
    }
  })
}
export const save = (userId, mdmNameList) => {
  return request({
    url: '/api/ubcs-system/mdmCountConfig/save',
    method: 'post',
    data: {
      userId,
      mdmNameList
    }
  })
}
Source/UBCS-WEB/src/views/docking/info.vue
@@ -110,7 +110,6 @@
        addBtn: false,
        editBtn: false,
        delBtn: false,
        columnBtn: false,
        column: [ {
          label: '是否启用',
          prop: 'usedFlag',
Source/UBCS-WEB/src/views/system/user.vue
@@ -178,7 +178,7 @@
  updatePlatform,
  add,
  grant,
  resetPassword,
  resetPassword,
  unlock,
  updateUserStatus
} from "@/api/system/user";
Source/UBCS-WEB/src/views/wel/Statistic.vue
@@ -1,106 +1,188 @@
<template>
  <div>
        <avue-data-box :option="option" :animation="true"></avue-data-box>
  <div class="App" v-loading="this.loading">
    <div style="display: flex; justify-content: flex-end;margin-bottom: 10px">
      <el-button icon="el-icon-more" plain size="small" type="primary" @click="MoreHandler">更多</el-button>
    </div>
    <avue-data-box ref="dataBox" :animation="true" :option="option"  ></avue-data-box>
    <el-dialog :visible.sync="dialogTableVisible" append-to-body class="avue-dialog avue-dialog--top" title="主数据配置"
               top="0">
      <avue-crud ref="crud"
                 v-model="Crud.form"
                 :data="Crud.data"
                 :option="Crud.option"
                 @selection-change="selectionChange">
      </avue-crud>
      <div slot="footer" class="dialog-footer">
        <el-button plain type="primary" @click="SaveHandler">保存</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import {validatenull} from "@/util/validate";
import {getList} from "@/api/system/statistic";
import {flowRoute} from "@/util/flow";
import {getList, save} from "@/api/system/statistic";
export default {
name: "Statistic",
  data(){
  return {
    userId:'',
    countByServer:true,
    // listMyTask:[]
    option: {
      span:6,
      data: [
        {
          click: this.handleItemAClick,
          title: '物品主数据',
          count: 1723,
          icon: 'iconfont iconicon_doc',
          color: 'rgb(49, 180, 141)',
          uiUrl: "/MasterData/items?id=wupin@name=物品主数据",
          countUrl:'priceIndexController/countNeedConfirmPlan'
        },
        {
          click: this.handleItemBClick,
          title: '人员主数据',
          count: 1225,
          icon: 'iconfont iconicon_dispose',
          color: 'rgb(56, 161, 242)',
          uiUrl:'/MasterData/items?id=renyuan@@name=人员主数据',
          countUrl:'priceIndexController/countPricingPlan'
        },
        {
          click: this.handleItemCClick,
          title: 'Part',
          count: 523,
          icon: 'el-icon-setting',
          color: 'rgb(117, 56, 199)',
          uiUrl:'/MasterData/items?id=10@@name=Part',
          countUrl:'priceIndexController/countNeedFeedbackPlan'
        },
        {
          click: this.handleItemDClick,
          title: '供应商主数据',
          count: 0,
          icon: 'iconfont iconicon_work',
          color: 'rgb(255, 102, 51)',
          uiUrl:'/MasterData/items?id=gongyingshang@@name=供应商主数据',
          countUrl:'priceIndexController/countMyUnCreatePricePlan'
        },
      ]
    },
  }
  name: "Statistic",
  data() {
    return {
      loading:true,
      Crud: {
        form: '',
        data: [],
        option: {
          calcHeight: 80,
          tip: false,
          searchShow: false,
          addBtn: false,
          columnBtn: false,
          header: false,
          menu: false,
          border: true,
          index: true,
          selection: true,
          column: [
            {
              label: "主数据名称",
              prop: "menuName",
            },
            {
              label: "待办数据",
              prop: "mdmCount",
            },
            {
              label: "icon图标",
              prop: "icon",
              overHidden: true,
            },
            {
              label: "路由地址",
              prop: "menuRoute",
              overHidden: true,
            },
            {
              label: "code",
              prop: "code",
              overHidden: true,
            },
          ]
        }
      },
      userId: '',
      hexColor: '',
      newData: [],
      SelectRow: [],
      countByServer: true,
      dialogTableVisible: false,
      // listMyTask:[]
      option: {
        span: 6,
        data: []
      },
    }
  },
  created() {
    this.userId=sessionStorage.userId
    getList('/api/ubcs-code/mdmCount/getMdmCounts',{id:this.userId}).then(res=>{
      console.log(res)
    })
    this.MasterGetList();
  },
  computed(){
  mounted() {
   this.FontInfo()
  },
  computed() {
  },
  methods: {
    handleItemAClick() {
      this.$router.push({ path: "/MasterData/items?id=wupin@name=物品主数据"} );
    FontInfo(){
      this.$nextTick(() => {
        const dataFatherBox = this.$refs.dataBox.$el;
        console.log(dataFatherBox);
        this.$nextTick(() => {
          setTimeout(() => {
            //字体
            const info = dataFatherBox.querySelectorAll('.item-info .info');
            //边框
            const items = dataFatherBox.querySelectorAll('.item');
            // console.log('info', info);
            info.forEach((info) => {
              info.style.fontSize = '16px';
            });
            items.forEach((item) => {
              item.style.border = '1px solid  rgb(200, 200, 200, 1)';
            });
            this.loading=false;
          }, 1000); // 延迟1秒查找info元素
        });
      });
    },
    handleItemBClick() {
      this.$router.push({ path: '/MasterData/items?id=renyuan@@name=人员主数据'} );
    selectionChange(row) {
      // console.log(row)
      this.SelectRow = row;
    },
    handleItemCClick() {
      this.$router.push({ path: '/MasterData/items?id=10@@name=Part'} );
    SaveHandler() {
      if (this.SelectRow.length <= 0) {
        this.$message.warning('请选择一条数据!')
        return
      }
      let mdmNameList = [];
      mdmNameList = this.SelectRow.map(item => {
        return item.code
      })
      console.log(mdmNameList)
      save(this.userId, mdmNameList).then(res => {
        console.log(res)
        if (res.data.code === 200) {
          this.$message.success('保存成功!')
          //清除已有数组中push数据
          this.option.data = [];
          this.newData=[];
          this.MasterGetList()
          this.dialogTableVisible = false;
          //字体和边框重新加载
          this.loading=true;
          this.FontInfo()
        }
      })
    },
    handleItemDClick() {
      this.$router.push({ path: '/MasterData/items?id=gongyingshang@@name=供应商主数据'} );
    MoreHandler() {
      this.dialogTableVisible = true;
    },
    // getList() {
    //   // debugger
    //   Object.values(this.option.data).map(record => {
    //     record.count = record.count || 0;
    //     if (!this.countByServer) {
    //       // 是前端查询
    //       getList(record.countUrl, {}).then(res => {
    //         // console.log('res',res)
    //         if (res.data.data.success) {
    //           record.count = res.data.data.obj;
    //         } else {
    //           record.count = 0;
    //         }
    //       });
    //     }
    //     return {
    //       ...record
    //     };
    //   });
    // },
    // 随机色
    randomColor() {
      const r = Math.floor(Math.random() * 256); // 生成 0 到 255 之间的随机数
      const g = Math.floor(Math.random() * 256);
      const b = Math.floor(Math.random() * 256);
      // 将 RGB 值转换为十六进制表示形式
      const hexColor = "#" + r.toString(16).padStart(2, '0') + g.toString(16).padStart(2, '0') + b.toString(16).padStart(2, '0');
      return hexColor;
    },
    MasterGetList() {
      this.userId = localStorage.getItem('userId');
      getList({userId: this.userId}).then(res => {
        res.data.data.filter(item => {
          // console.log(item.icon)
          if (item.isDefault === 1) {
            this.hexColor = this.randomColor();
            this.option.data.push({
              click: (item) => {
                this.$router.push({path: item.uiUrl});
              },
              title: item.menuName,
              count: parseInt(item.mdmCount),
              icon: item.icon,
              code: item.code,
              isDefault: item.isDefault,
              color: this.hexColor,
              uiUrl: item.menuRoute,
              id: 'custom-title'
            });
          } else if (item.isDefault === 0) {
            this.newData.push(item);
            this.Crud.data = this.newData;
          }
        });
        // console.log(this.option.data);
        // console.log(this.newData);
      });
    }
  }
}
</script>
Source/UBCS-WEB/src/views/wel/index.vue
@@ -86,7 +86,7 @@
        todoData: [],
        // 代办流程任务option
        todoOption: {
          height:650,
          height:500,
          addBtn: false,
          header: false,
          align: 'center',
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -65,6 +65,7 @@
import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -2364,6 +2365,7 @@
            String dataStatus=cbo.getLcStatus();
            RowDatas rowData=codeDataMap.get(code);
            String status=rowData.getStatus();
            String lastModifier= rowData.getEditor();
            String operation=rowData.getOperation();
            if (cbo.getTs().compareTo(orderDTO.getTs())==0?false:true) {
                // throw new VciBaseException("数据不是最新的,可能他人已经修改,请刷新后再试");
@@ -2394,12 +2396,20 @@
                cbo.setName(orderDTO.getName());
                try {
                    cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
                    cbo.setAttributeValue("name", orderDTO.getName());
                //    cbo.setAttributeValue("name", orderDTO.getName());
                    //  if(finalIsProcess){//在流程中不允许更改
                    //     errorMap.put(code,errorMap.getOrDefault(code, errorMap.getOrDefault(code,"")+";数据"+code+"在流程中,不允许更改!"));
                    //  }else{
                    Date date=new Date();
                    cbo.setLcStatus(status);
                    cbo.setAttributeValue("lcstatus",status);
                    cbo.setLastModifyTime(date);
                    cbo.setLastModifier(lastModifier);
                    cbo.setLastModifyTime(date);
                    cbo.setAttributeValue("lastmodifier",lastModifier);
                    cbo.setAttributeValue("lastmodifytime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(date));
                    cbo.setTs(date);
                    cbo.setAttributeValue("ts",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(date));
                    //  }
                } catch (VciBaseException e) {
                    e.printStackTrace();
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -54,6 +54,7 @@
import com.vci.ubcs.system.vo.DeptVO;
import com.vci.ubcs.system.vo.RoleVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.auth.AuthenticationException;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@@ -235,7 +236,9 @@
            systemId = interParameterVO.getData().getSystemId();
            UserVO userVo = interParameterVO.getData().getUser();
            //免密登录申请token,request中添加用户信息
            passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT),this.getRequest());
            AuthUtil.getUser();
            List<ClassfyVO> classVOList = classfysVO.getClassify();
            InterParameterVO finalInterParameterVO = interParameterVO;
@@ -412,6 +415,7 @@
                if(personData==null){
                    throw new Throwable("传入参数为null");
                }
                passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(Locale.ROOT),this.getRequest());
                masterDataList = personData.getMasterData();
                String personLibrary = personAndDeptConfig.getPersonLibrary();
                if (StringUtils.isBlank(personLibrary)) {
@@ -684,6 +688,8 @@
                    throw new Throwable("传入参数为null");
                }
                systemCode=orgData.getSystemCode();
                passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(),this.getRequest());
                orgMasterDataList = orgData.getMasterData();
                String personLibrary = personAndDeptConfig.getPersonLibrary();
                if (StringUtils.isBlank(personLibrary)) {
@@ -973,7 +979,8 @@
            systemId = interParameterVO.getData().getSystemId();
            UserVO userVo = interParameterVO.getData().getUser();
            //免密登录申请token,request中添加用户信息
            passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT),this.getRequest());
            List<ClassfyVO> classVOList = classfysVO.getClassify();
            InterParameterVO finalInterParameterVO = interParameterVO;
            //这是账号信息
@@ -1146,7 +1153,8 @@
            QueryData queryData=queryClassifyVO.getData();
            UserVO userVo=queryData.getUser();
            //免密登录申请token,request中添加用户信息
            passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
            systemId=queryData.getSystemId();
            QueryLibraryVO libraryVO= queryData.getLibrary();
            String libId= libraryVO.getId();
@@ -1306,7 +1314,8 @@
            systemId=condtionsVO.getSystemId();
            UserVO userVo=condtionsVO.getUser();
            //免密登录申请token,request中添加用户信息
            passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
            CondtionVO condtionVO= condtionsVO.getCondtion();
            SessionInfo sessionInfo = new SessionInfo();
            sessionInfo.setUserId(userVo.getUserName());
@@ -1521,7 +1530,8 @@
            QueryData queryData=queryClassifyVO.getData();
            UserVO userVo=queryData.getUser();
            //免密登录申请token,request中添加用户信息
            passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
            systemId=queryData.getSystemId();
            QueryLibraryVO libraryVO= queryData.getLibrary();
            String libId= libraryVO.getId();
@@ -1978,7 +1988,8 @@
            systemId = applyBZParamVO.getData().getSystemId();
            UserVO userVo = applyBZParamVO.getData().getUser();
            //免密登录申请token,request中添加用户信息
            passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(), this.getRequest());
            //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(), this.getRequest());
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
            AuthUtil.getUser();
            //这是账号信息
            SessionInfo sessionInfo = new SessionInfo();
@@ -2135,7 +2146,7 @@
                if (!CollectionUtils.isEmpty(codeClassifyList)) {
                    codeClassifyList.stream().forEach(codeClassify -> {
                        CodeClassifyVO codeClassifyVO=  classifyService.getTopClassifyVO(codeClassify.getOid());
                        if(codeClassifyVO.getId().toLowerCase(Locale.ROOT).equals(libray.toLowerCase(Locale.ROOT))){
                        if(codeClassifyVO.getId().toUpperCase(Locale.ROOT).equals(libray.toUpperCase(Locale.ROOT))){
                            newCodeClassify[0] =codeClassify;
                        }
                    });
@@ -2177,7 +2188,7 @@
                if (!CollectionUtils.isEmpty(codeClassifyList)) {
                    codeClassifyList.stream().forEach(codeClassify -> {
                        CodeClassifyVO codeClassifyVO=  classifyService.getTopClassifyVO(codeClassify.getOid());
                        if(codeClassifyVO.getId().toLowerCase(Locale.ROOT).equals(libray.toLowerCase(Locale.ROOT))){
                        if(codeClassifyVO.getId().toUpperCase(Locale.ROOT).equals(libray.toUpperCase(Locale.ROOT))){
                            newCodeClassify[0] =codeClassify;
                        }
                    });
@@ -2312,9 +2323,9 @@
                    Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
                    log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置");
                    String path=stringStringMap.get(systemId);
                    if (libPropMaps.containsKey(libray)) {
                    if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) {
                        log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息");
                        List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray);
                        List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray.toUpperCase(Locale.ROOT));
                        propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
                        log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size());
                    }else{
@@ -2423,9 +2434,9 @@
                    Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
                    log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置");
                    String path=stringStringMap.get(systemId);
                    if (libPropMaps.containsKey(libray)) {
                    if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) {
                        log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息");
                        List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray);
                        List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray.toUpperCase(Locale.ROOT));
                        propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
                        log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size());
                    }else{