ludc
2023-07-18 ec407e8676f6245d88da3d9f729ad545ae3218c0
代码提交
已修改8个文件
已添加1个文件
350 ■■■■■ 文件已修改
Document/部署说明文档/410编码资源管理系统端口开放说明.docx 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/code.vue 200 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/service-start.sh 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-admin/src/main/resources/bootstrap.yml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Document/²¿Êð˵Ã÷Îĵµ/410±àÂë×ÊÔ´¹ÜÀíϵͳ¶Ë¿Ú¿ª·Å˵Ã÷.docx
Binary files differ
Source/UBCS-WEB/src/views/code/code.vue
@@ -933,7 +933,7 @@
          /** ç å€¼ç®¡ç†ç›¸å…³æ•°æ® */
          isShowBasicSecCodeValueMgr: false, //码段码值管理对话框
          codefixedsecOrCodeclassifysecOid: '', //存放基础码段点击码值管理时的当前行id,用于保存码值时使用
          codefixedsecOrCodeclassifysec: '', //存放基础码段点击码值管理时的当前行id,用于保存码值时使用
          selectedFixedOrCodeclassifyValue: '', //当前选中的码值数据
          //固定码段码值表单
          codeFixdForm: {
@@ -1201,7 +1201,7 @@
        },
        /** çˆ¶åˆ†ç±»é€‰æ‹©å¯¹è¯æ¡†ï¼Œç¬¬äºŒå±‚嵌套对话框,及其相关方法 */
        // ä¿å­˜å½“前父分类码段的选中行,并进行回显
        /** ä¿å­˜å½“前父分类码段的选中行,并进行回显 */
        saveSelectedParentClassify(){
          //console.log(this.parentClsfyParams.parentClassifySelectionList.length);
          if(this.parentClsfyParams.parentClassifySelectionList.length != 1){
@@ -1270,12 +1270,12 @@
        /** æ‰“开属性选取值,第二层嵌套对话框,及其相关方法 */
        // èŽ·å–å½“å‰è¢«é€‰ä¸­æ ‘èŠ‚ç‚¹çš„oid
        /** èŽ·å–å½“å‰è¢«é€‰ä¸­æ ‘èŠ‚ç‚¹çš„oid */
        nodeClick(data) {
          this.currentSelectTreeData = data;
          this.loadlistClassifyLinkAttr()
        },
        // åŠ è½½åˆ†ç±»è¿žæŽ¥å±žæ€§è¡¨æ ¼æ•°æ®
        /** åŠ è½½åˆ†ç±»è¿žæŽ¥å±žæ€§è¡¨æ ¼æ•°æ® */
        loadlistClassifyLinkAttr() {
          let attrParam = this.selectAttrParams;
          //console.log(this.currentSelectTreeData);
@@ -1300,31 +1300,31 @@
            this.selectAttrParams.selectAttrQeury = {};
          })
        },
        // ç‚¹å‡»æœç´¢åŽè§¦å‘该事件
        /** ç‚¹å‡»æœç´¢åŽè§¦å‘该事件 */
        selectAttrSearchChange(params, done) {
          this.selectAttrParams.selectAttrQeury = params;
          //console.log(params);  //这儿需要改
          this.loadlistClassifyLinkAttr();
          done();
        },
        // ä¸ºå±žæ€§é€‰å€¼ç•Œé¢ï¼Œå•击表格行时触发该事件
        /** ä¸ºå±žæ€§é€‰å€¼ç•Œé¢ï¼Œå•击表格行时触发该事件 */
        selectionAttrRowClick(row){
          this.$refs[this.selectAttrParams.ref].toggleSelection();
          this.selectAttrParams.selectionChangeAttrList = row;
          this.$refs[this.selectAttrParams.ref].setCurrentRow(row);
          this.$refs[this.selectAttrParams.ref].toggleRowSelection(row); //选中当前行
        },
        // å±žæ€§å–值当前选中行发生变化时触发
        /** å±žæ€§å–值当前选中行发生变化时触发 */
        selectionChangeAttr(list){
          this.selectAttrParams.selectionChangeAttrList = list;
          this.$refs[this.selectAttrParams.ref].setCurrentRow(this.selectAttrParams.selectionChangeAttrList[list.length-1]);
        },
        // é‡ç½®ä½å±žæ€§é€‰å–值表格的搜索框之后的回调
        /** é‡ç½®ä½å±žæ€§é€‰å–值表格的搜索框之后的回调 */
        searchAttrReset() {
          this.selectAttrParams.selectAttrQeury = {};
          this.loadlistClassifyLinkAttr()
        },
        // ä¸ºå±žæ€§é€‰å–值之后的回显
        /** ä¸ºå±žæ€§é€‰å–值之后的回显 */
        selectedListClassifyLinkAttr(){
          if(this.selectAttrParams.selectionChangeAttrList.length != 1){
            this.$message.warning("请选择一条数据!");
@@ -1343,7 +1343,7 @@
        /** åŸºç¡€ç æ®µè¡¨ä¸­çš„码值管理的相关方法 */
        // ç å€¼ç®¡ç†å¼¹çª—控制
        /** ç å€¼ç®¡ç†å¼¹çª—控制*/
        openBasicSecCodeValueMgr(row){
          //当前为固定码段码值管理码值管理
          if(row.secType === "codefixedsec"){
@@ -1354,10 +1354,10 @@
            this.isShowFixedForm = false;
            this.loadClassifyValueData(row);
          }
          this.codefixedsecOrCodeclassifysecOid = row.oid;
          this.codefixedsecOrCodeclassifysec = row;
          this.isShowBasicSecCodeValueMgr = true;
        },
        //加载固定码段码值表数据
        /** åŠ è½½å›ºå®šç æ®µç å€¼è¡¨æ•°æ®*/
        loadFixedValueTableData(row){
          this.fixedValueOptionLoading = true;
          gridCodeFixedValue(1, -1, {"codeFixedSecOid":row.oid}).then(res=>{
@@ -1366,7 +1366,7 @@
            this.fixedValueOptionLoading = false;
          })
        },
        //单击固定码段的码值表中行时触发的事件
        /** å•击固定码段的码值表中行时触发的事件*/
        selectedCodeValueRow(row){
          //console.log(row);
          this.selectedFixedOrCodeclassifyValue = row;
@@ -1374,20 +1374,15 @@
          this.codeFixdForm.description = row.description;
          this.codeFixdForm.codeFixedSecOid = row.codefixedsecoid;
        },
        //新增码值
        /** æ–°å¢žç å€¼*/
        addCodeSecValue(condition){
          if(condition === "codefixedsec"){
            if(this.codeFixdForm.id.trim() == ''){
              this.$message.warning("码值不能为空!");
            if(!this.tipsCodeSecValueMessage(this.codeFixdForm.id)){
              return;
            }
            if(this.codeFixdForm.id.trim().length >= 12 ){
              this.$message.warning("码值长度不能大于12!");
              return;
            }
            this.codeFixdForm.codeFixedSecOid = this.codefixedsecOrCodeclassifysecOid;
            this.codeFixdForm.codeFixedSecOid = this.codefixedsecOrCodeclassifysec.oid;
            addSaveCodeFixedValue(this.codeFixdForm).then(() => {
              this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid});
              this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysec.oid});
              this.clearFixedOrClassifyForm('codefixedsec');
              this.$message({
                type: "success",
@@ -1397,18 +1392,13 @@
              window.console.log(error);
            });
          }else {
            if(this.codeClassifyForm.id.trim() == ''){
              this.$message.warning("码值不能为空!");
            if(!this.tipsCodeSecValueMessage(this.codeClassifyForm.id)){
              return;
            }
            if(this.codeClassifyForm.id.trim().length > 4 ){
              this.$message.warning("码值长度不能大于4!");
              return;
            }
            this.codeClassifyForm.codeClassifySecOid = this.codefixedsecOrCodeclassifysecOid;
            this.codeClassifyForm.codeClassifySecOid = this.codefixedsecOrCodeclassifysec.oid;
            // console.log(this.codeClassifyForm);
            addSaveCodeClassifyValue(this.codeClassifyForm).then(() => {
              this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysecOid});
              this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysec.oid});
              this.clearFixedOrClassifyForm('codeclassifyvaluesec');
              this.$message({
                type: "success",
@@ -1422,7 +1412,7 @@
            });
          }
        },
        //清空码值表单
        /** æ¸…空码值表单 */
        clearFixedOrClassifyForm(condition){
          //点击取消时清空表单与当前选中的码值,并禁用按钮
          this.selectedFixedOrCodeclassifyValue = '';
@@ -1438,19 +1428,34 @@
            this.codeClassifyForm = this.$options.data().codeClassifyForm;
          }
        },
        //修改码值
        /** æ·»åŠ æˆ–ä¿®æ”¹ç å€¼ä¹‹å‰å¯¹ç å€¼é•¿åº¦æ ¹æ®è§„åˆ™è¿›è¡Œæ ¡éªŒ */
        tipsCodeSecValueMessage(id){
          if(id.trim() == ''){
            this.$message.warning("码值不能为空!");
            return false;
          }
          if(id.trim().length > this.codefixedsecOrCodeclassifysec.codeSecLength ){
            this.$message.warning("码值长度不能大于" + this.codefixedsecOrCodeclassifysec.codeSecLength);
            return false;
          }
          return true;
        },
        /** ä¿®æ”¹ç å€¼ */
        editCodeSecValue(condition){
          if(condition=='codefixedsec'){
            //以前是直接把当前选中行的所有数据都进行提交,但其实只需要传输一些比要参数即可,这儿做了修改,需要穿其他参数的请自行添加
            if(!this.tipsCodeSecValueMessage(this.codeFixdForm.id)){
              return;
            }
            //以前是直接把当前选中行的所有数据都进行提交,但其实只需要传输一些必要参数即可,这儿做了修改,需要传其他参数的请自行添加
            let editData = {
            "oid": this.selectedFixedOrCodeclassifyValue.oid,
            "ts": new Date().getTime(),
            "description": this.codeFixdForm.description,
            "id": this.codeFixdForm.id,
            "codeFixedSecOid":  this.selectedFixedOrCodeclassifyValue.codefixedsecoid
              "oid": this.selectedFixedOrCodeclassifyValue.oid,
              "ts": new Date().getTime(),
              "description": this.codeFixdForm.description,
              "id": this.codeFixdForm.id,
              "codeFixedSecOid":  this.selectedFixedOrCodeclassifyValue.codefixedsecoid
            }
            editCodeFixedValue(editData).then(() => {
                this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid})
                this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysec.oid})
                this.$message({
                  type: "success",
                  message: "操作成功!"
@@ -1459,14 +1464,17 @@
                window.console.log(error);
            });
          }else {
            if(!this.tipsCodeSecValueMessage(this.codeClassifyForm.id)){
              return;
            }
            this.codeClassifyForm.oid = this.selectedFixedOrCodeclassifyValue.attributes.oid;
            // åˆ†ç±»ç æ®µï¼Œå­åˆ†ç±»å’Œçˆ¶åˆ†ç±»ä¹‹é—´ä¸èƒ½ç›¸äº’更改
            if(this.checkClassUpdate(this.codefixedsecOrCodeclassifysecOid,this.codeClassifyForm.codeClassifySecOid)){
            if(this.checkClassUpdate(this.codefixedsecOrCodeclassifysec.oid,this.codeClassifyForm.codeClassifySecOid)){
              return;
            }
            this.$delete(this.codeClassifyForm,"parentClassifyValueOid");
            editCodeClassifyValue(this.codeClassifyForm).then(() => {
                this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysecOid})
                this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysec.oid})
                this.$message({
                  type: "success",
                  message: "操作成功!"
@@ -1477,7 +1485,7 @@
          }
        },
        //删除码值
        /** åˆ é™¤ç å€¼ */
        delCodeSecValue(condition){
          //固定码段码值删除
          if(condition == 'codefixedsec'){
@@ -1493,7 +1501,7 @@
            })
            .then(() => {
              this.selectedFixedOrCodeclassifyValue = '';
              this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid})
              this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysec.oid})
              this.clearFixedOrClassifyForm('codefixedsec');
              this.$message({
                type: "success",
@@ -1501,7 +1509,7 @@
              });
            });
          }else{
            if(this.checkClassUpdate(this.codefixedsecOrCodeclassifysecOid,this.codeClassifyForm.codeClassifySecOid)){
            if(this.checkClassUpdate(this.codefixedsecOrCodeclassifysec.oid,this.codeClassifyForm.codeClassifySecOid)){
              return;
            } 
            //分类码段码值删除
@@ -1516,7 +1524,7 @@
            })
            .then(() => {
              this.selectedFixedOrCodeclassifyValue = '';
              this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysecOid})
              this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysec.oid})
              this.clearFixedOrClassifyForm('codeclassifyvalue');
              this.$message({
                type: "success",
@@ -1525,7 +1533,7 @@
            });
          }
        },
        //对固定码值表进行:上移、下移、移除操作
        /** å¯¹å›ºå®šç å€¼è¡¨è¿›è¡Œï¼šä¸Šç§»ã€ä¸‹ç§»ã€ç§»é™¤æ“ä½œ*/
        codeFixedValueOpetion(condition,row){
          //console.log(this.fixedValueData[row.$index].orderNum);
          const index = row.$index;
@@ -1561,9 +1569,9 @@
          }
          //console.log(this.fixedValueData);
        },
        //对分类码值表进行:上移、下移、移除操作
        /** å¯¹åˆ†ç±»ç å€¼è¡¨è¿›è¡Œï¼šä¸Šç§»ã€ä¸‹ç§»ã€ç§»é™¤æ“ä½œ*/
        codeClassifyValueOpetion(condition){
          if(this.checkClassUpdate(this.codefixedsecOrCodeclassifysecOid,this.codeClassifyForm.codeClassifySecOid)){
          if(this.checkClassUpdate(this.codefixedsecOrCodeclassifysec.oid,this.codeClassifyForm.codeClassifySecOid)){
            return;
          } 
          //此处涉及到深浅拷贝问题,但是执行上下移保存操作之后会重新加载treedata,所以影响不大
@@ -1590,7 +1598,7 @@
            }
          }
        },
        //选中被调整顺序的两个树的节点
        /** é€‰ä¸­è¢«è°ƒæ•´é¡ºåºçš„两个树的节点*/
        getCodeClassifyValueTreeData(){
          const currentNodeTreeData = this.selectedFixedOrCodeclassifyValue;
          /**考虑几种情况,第一种当前上移|下移操作已经是边界,
@@ -1626,12 +1634,12 @@
            }
          }
        },
        //上移下移等操作的保存
        /** ä¸Šç§»ä¸‹ç§»ç­‰æ“ä½œçš„保存*/
        async saveCodeFixedOrClassifyValueOption(condition,editOrderNumdata){
          //保存对固定码段码值的上移下移移出等操作
          if(condition == "fixedValue"){
            let data = {
            "codeFixedSecOid": this.codefixedsecOrCodeclassifysecOid,
            "codeFixedSecOid": this.codefixedsecOrCodeclassifysec.oid,
            "dtoList": JSON.stringify(this.fixedValueData),
            }
            saveOrder(data).then(() => {
@@ -1647,7 +1655,7 @@
          }else {
            //保存对分类码值码段码值的上移下移移出等操作
            await saveCodeClassifyValueOrder({
              "codeClassifySecOid": this.codefixedsecOrCodeclassifysecOid,
              "codeClassifySecOid": this.codefixedsecOrCodeclassifysec.oid,
              "dtoList": JSON.stringify(editOrderNumdata),
            }).then(() => {
              this.$message({
@@ -1657,11 +1665,11 @@
              }, error => {
                window.console.log(error);
            });
            this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysecOid});
            this.loadClassifyValueData({"oid":this.codefixedsecOrCodeclassifysec.oid});
          }
        },
        //分类码值树data加载
        /** åˆ†ç±»ç å€¼æ ‘data加载*/
        loadClassifyValueData(row){
          //console.log(row);
          let condtionData = {
@@ -1677,7 +1685,7 @@
            //console.log(res.data);
          });
        },
        //分类码值树单击时触发的事件
        /** åˆ†ç±»ç å€¼æ ‘单击时触发的事件*/
        classisyValueTreeOnodeClick(node){
          //console.log(node);
          this.selectedFixedOrCodeclassifyValue = node;
@@ -1692,7 +1700,7 @@
         * @currentRowClassOid å½“前选中行oid
         * @updateClassOid è¦ä¿®æ”¹çš„分类码值oid
         */
         checkClassUpdate(currentRowClassOid,updateClassOid){
        checkClassUpdate(currentRowClassOid,updateClassOid){
          if(currentRowClassOid!=updateClassOid){
            this.$message({
              type: "error",
@@ -1703,7 +1711,7 @@
        },
        /** ç¼–码规则相关方法 */
        // æ‰“开高级查询窗口
        /** æ‰“开高级查询窗口 */
        openAdvancedQuery(condition){
          if(condition=='codeRule'){
            this.advancedQueryParam.options = [
@@ -1772,7 +1780,7 @@
          this.advancedQueryParam.currentOpen = condition;
          this.advancedQueryParam.advancedQuerySettingBox = true;
        },
        // æŸ¥è¯¢ä½¿ç”¨èŒƒå›´
        /** æŸ¥è¯¢ä½¿ç”¨èŒƒå›´*/
        handleRange(){
          if(!this.tipsMessage(this.selectionList)){
            return;
@@ -1780,7 +1788,7 @@
          this.codeRangeSettingBox = true;
          this.getRangeCodeList()
        },
        // åŠ è½½ä½¿ç”¨èŒƒå›´åˆ—è¡¨
        /** åŠ è½½ä½¿ç”¨èŒƒå›´åˆ—è¡¨*/
        getRangeCodeList(){
          this.dialogLoading = true;
          if(this.selectionList[0].oid==null){
@@ -1793,11 +1801,11 @@
            this.dialogLoading = false;
          });
        },
        // åˆ·æ–°ä½¿ç”¨èŒƒå›´åˆ—表
        /** åˆ·æ–°ä½¿ç”¨èŒƒå›´åˆ—表*/
        refreshUseRangeChange(){
          this.getRangeCodeList();
        },
        // å¯ç”¨ä¸Žåœç”¨
        /** å¯ç”¨ä¸Žåœç”¨*/
        enableOrDeactivatse(oId,update){
          updateStatus({"oid":oId,"ts":new Date().getTime,"update":update}).then(() => {
            this.onLoad(this.page);
@@ -1809,7 +1817,7 @@
            window.console.log(error);
          });
        },
        // æ‰“开编码规则克隆对话框
        /** æ‰“开编码规则克隆对话框*/
        openCodeRuleDialog() {
          if (!this.tipsMessage(this.selectionList)) {
            return;
@@ -1820,7 +1828,7 @@
          this.cloneCodeRuleForm.description = this.selectionList[0].description;
          this.loadBasic({"oid": this.selectionList[0].oid});
        },
        // å…‹éš†ç¼–码规则保存功能
        /** å…‹éš†ç¼–码规则保存功能*/
        saveCloneCodeRule(){
          let form = this.cloneCodeRuleForm;
          if(form.id.trim()==''){
@@ -1851,7 +1859,7 @@
          });
          //console.log(data);
        },
        // æ‰“开从其他编码规则中克隆码段对话框
        /** æ‰“开从其他编码规则中克隆码段对话框*/
        openOtherCodeRuleDialog(){
          if (!this.tipsMessage(this.selectionList)) {
            return;
@@ -1862,7 +1870,7 @@
          }
          this.cloneOtherCodeRuleSettingBox = true;
        },
        // ä»Žå…¶ä»–编码规则中克隆码段对话框-单击编码规则实现行选择
        //** ä»Žå…¶ä»–编码规则中克隆码段对话框-单击编码规则实现行选择*/
        codeOtherCloneRuleRowClick(row) {
          this.$refs.crudCloneCodeRuleOther.toggleSelection();
          this.selectionOtherCloneCodeRuleList = row;
@@ -1870,14 +1878,14 @@
          this.$refs.crudCloneCodeRuleOther.toggleRowSelection(row); //选中当前行
          this.loadBasic(row);
        },
        // ä»Žå…¶ä»–编码规则中克隆码段对话框-单击基础码段实现行选择
        /** ä»Žå…¶ä»–编码规则中克隆码段对话框-单击基础码段实现行选择*/
        codeOtherCloneBasicRowClick(row){
          this.$refs.crudCloneCodeBasicOther.toggleSelection();
          this.selectionOtherCloneCodeBasicList = row;
          this.$refs.crudCloneCodeBasicOther.setCurrentRow(row);
          this.$refs.crudCloneCodeBasicOther.toggleRowSelection(row); //选中当前行
        },
        // ä»Žå…¶ä»–规则克隆码段界面中编码规则当前选中行变化的时候触发
        /** ä»Žå…¶ä»–规则克隆码段界面中编码规则当前选中行变化的时候触发*/
        selectionOtherCloneCodeRuleChange(list) {
          //console.log(list);
          this.selectionOtherCloneCodeRuleList = list;
@@ -1893,7 +1901,7 @@
          this.selectionOtherCloneCodeBasicList = list;
          this.$refs.crudCloneCodeBasicOther.setCurrentRow(this.selectionOtherCloneCodeBasicList[list.length-1]);
        },
        // ä»Žå…¶ä»–编码规则中克隆码段信息
        /** ä»Žå…¶ä»–编码规则中克隆码段信息*/
        saveOtherCodeBasic(){
          let oid = this.selectionList[0].oid;
          let fromDialogPkCodebasic = this.selectionOtherCloneCodeBasicList;
@@ -1929,7 +1937,7 @@
            window.console.log(error);
          });
        },
        // æ¸…空码值
        /** æ¸…空码值*/
        clearAllCodeSec(){
          if(this.selectionList.length == 0){
            this.$message.warning("没有选择数据!");
@@ -1957,7 +1965,7 @@
              });
            });
        },
        // æ·»åŠ 
        /** æ·»åŠ */
        rowSave(row, done, loading) {
          console.log(row);
          add(row).then(() => {
@@ -1975,7 +1983,7 @@
        openEdit(row){
          this.$refs.crud.rowEdit(row,row.$index);
        },
        // ä¿®æ”¹
        /** ä¿®æ”¹*/
        rowUpdate(row, index, done, loading) {
          row.ts = new Date().getTime;
          update(row).then(() => {
@@ -1990,7 +1998,7 @@
            console.log(error);
          });
        },
        // åˆ é™¤
        /** åˆ é™¤*/
        handleDelete() {
          if(!this.tipsMessage(this.selectionList)){
            return;
@@ -2015,7 +2023,7 @@
              this.$refs.crud.toggleSelection();
            });
        },
        // æ‰“开修改
        // æ‰“开修改*/
        beforeOpen(done, type) {
          if (["edit", "view"].includes(type)) {
            getDetail(this.ruleForm.oid).then(res => {
@@ -2041,7 +2049,7 @@
          this.onLoad(this.page);
          done();
        },
        // ç¼–码规则当前选中行变化的时候触发
        /** ç¼–码规则当前选中行变化的时候触发*/
        selectionChange(list) {
          this.selectionList = list;
          //当前选中行为空的时候就将码段管理表格数据置空,并禁用相关功能
@@ -2055,7 +2063,7 @@
            this.loadBasic(this.selectionList[list.length-1]);
          }
        },
        // å•击编码规则实现行选择
        /** å•击编码规则实现行选择*/
        codeRuleRowClick (row) {
          // console.log(this.currentRuleLcStatus);
          this.$refs.crud.toggleSelection();
@@ -2104,12 +2112,12 @@
        /** åŸºç¡€ç æ®µç›¸å…³æ–¹æ³• */
        //防止打开过编辑窗口之后表单中存在值,所以需要清空,并初始化form表单属性
        /** é˜²æ­¢æ‰“开过编辑窗口之后表单中存在值,所以需要清空,并初始化form表单属性*/
        clearBasicAddForm(){
          this.form = this.$options.data().form;
          // this.changeSectypeFormItems(null);
        },
        // æ‰“开新增窗口
        /** æ‰“开新增窗口*/
        openAddBasicCodeSec(){
          if(!this.tipsMessage(this.selectionList)){
            return;
@@ -2121,7 +2129,7 @@
          this.openBasicDialog('add',null);
          this.loadCodeSecType();
        },
        // æ‰“开新增或编辑基础码段对话框
        /** æ‰“开新增或编辑基础码段对话框*/
        openBasicDialog(condition,row){
          //console.log(row);
          if(condition == 'add') {
@@ -2146,7 +2154,7 @@
          this.changeSectypeFormItems(condition == 'add' ? null:row);
          this.addBasicCodeSettingBox = true;
        },
        // æ–°å¢žåŸºç¡€ç æ®µ
        /** æ–°å¢žåŸºç¡€ç æ®µ*/
        async saveOrEditBasicCode(){
          if(this.selectionList[0].oid == null ||  this.selectionList[0].oid == ''){
            this.$message.warning('缺失必要参数,请重新选择编码规则后再试!');
@@ -2191,7 +2199,7 @@
            this.addBasicCodeSettingBox = false
          }
        },
        // å› ä¸ºelementui的表单校验设置不上所以采用判断的方式来做表单检验方式
        /** å› ä¸ºelementui的表单校验设置不上所以采用判断的方式来做表单检验方式*/
        checkForm(){
          let form = this.form;
          //console.log(form);
@@ -2372,7 +2380,7 @@
          }
          return true;
        },
        // åˆ¤æ–­æ•°æ®æ˜¯å¦é€‰æ‹©ä»¥åŠåªèƒ½é€‰æ‹©å•条数据
        /** åˆ¤æ–­æ•°æ®æ˜¯å¦é€‰æ‹©ä»¥åŠåªèƒ½é€‰æ‹©å•条数据*/
        tipsMessage(list){
          if(list.length != 1){
            this.$message.warning("请选择一条编码规则数据!");
@@ -2380,7 +2388,7 @@
          }
          return true;
        },
        // åŸºç¡€ç æ®µåˆ é™¤
        /** åŸºç¡€ç æ®µåˆ é™¤*/
        deleteBasicCode(){
          if(!this.tipsMessage(this.selectionBasicList)){
            return;
@@ -2404,7 +2412,7 @@
            this.$refs.crudBasic.toggleSelection();
          });
        },
        // ç‚¹å‡»è§¦å‘加载基础码段信息
        /** ç‚¹å‡»è§¦å‘加载基础码段信息*/
        loadBasic(row){
          if(this.cloneSettingBox){
            this.cloneTableLoading = true;
@@ -2419,7 +2427,7 @@
            this.sendGridCodeBasicSec({"pkCodeRule":row.oid},false);
          }
        },
        // å‘送加载基础码段的请求
        /** å‘送加载基础码段的请求*/
        sendGridCodeBasicSec(condition,isAdancedQuery/** æ˜¯å¦é«˜çº§æŸ¥è¯¢ */){
          // å¦‚果当前基础码段表中的搜索按钮被隐藏,就需要在此开启
          if(this.selectionList.length>=0 && !this.$refs.crudBasic.option.column[0].search){
@@ -2448,13 +2456,13 @@
            }
          });
        },
        // åŸºç¡€ç æ®µé€‰ä¸­æ—¶è§¦å‘
        /** åŸºç¡€ç æ®µé€‰ä¸­æ—¶è§¦å‘*/
        selectionBasicChange(list) {
          this.selectionBasicList = list;
          this.$refs.crudBasic.setCurrentRow(this.selectionBasicList[list.length-1]);
          //console.log(this.selectionBasicList);
        },
        // åŸºç¡€ç æ®µè¢«å•击表格行时触发
        /** åŸºç¡€ç æ®µè¢«å•击表格行时触发*/
        codeBasicSecRowClick(row){
          this.$refs.crudBasic.toggleSelection();
          this.selectionBasicList = row;
@@ -2469,7 +2477,7 @@
        basicSearchReset(){
          this.sendGridCodeBasicSec({"pkCodeRule":this.selectionList[this.selectionList.length-1].oid},false);
        },
        // ä¸Šç§»ä¸‹ç§»åŸºç¡€ç æ®µ
        /** ä¸Šç§»ä¸‹ç§»åŸºç¡€ç æ®µ*/
        async upOrderNum(row){
          if(!this.tipsMessage(this.selectionList)){
            return;
@@ -2513,11 +2521,11 @@
            });
          })
        },
        // åŸºç¡€ç æ®µåˆ·æ–°æ—¶æŸ¥è¯¢
        /** åŸºç¡€ç æ®µåˆ·æ–°æ—¶æŸ¥è¯¢*/
        refreshChangeBasicSec(){
          this.loadBasic(this.selectionList.at(-1));
        },
        // æ“ä½œåŸºç¡€ç æ®µä¸­æœç´¢æ¸…空等按钮的显示/隐藏
        /** æ“ä½œåŸºç¡€ç æ®µä¸­æœç´¢æ¸…空等按钮的显示/隐藏*/
        hideBasicTable(hideBoolean){
          this.$refs.crudBasic.option.refreshBtn = hideBoolean;
          this.$refs.crudBasic.option.column[0].search = hideBoolean;
@@ -2538,7 +2546,7 @@
        },
        /** ç¬¬ä¸€å±‚对话框相关方法 */
        // æ‰“开二层对话框方法
        /** æ‰“开二层对话框方法*/
        openAttrSelectOrGetValue(condition){
          if(condition === 'attr'){
            this.isShowSelectAttrOption = true;
@@ -2564,7 +2572,7 @@
          }
        },
        // ç‚¹å‡»è¾“入框的×号,清空输入框中的内容
        /** ç‚¹å‡»è¾“入框的×号,清空输入框中的内容*/
        clearAttrDataByIcon(condition){
          if(condition === 'attr'){
            this.form.referAttributeName = '';
@@ -2583,13 +2591,13 @@
            this.form.referConfig = '';
          }
        },
        // è¡¥ä½æ—¶çš„字符,实现可输可选
        /** è¡¥ä½æ—¶çš„字符,实现可输可选*/
        inputSelectBlur(e){
          if (e.target.value) {
            this.form.codeFillSeparator = e.target.value;
          }
        },
        // ç æ®µç±»åž‹æ”¹å˜æ—¶ï¼Œå¢žåŠ å¯¹åº”çš„form表单中的属性
        /** ç æ®µç±»åž‹æ”¹å˜æ—¶ï¼Œå¢žåŠ å¯¹åº”çš„form表单中的属性*/
        changeSectypeFormItems(row){
          //console.log(row);
          if(this.enumParam.secTypeList.length==0){
@@ -2705,7 +2713,7 @@
          }
          // console.log(this.form);
        },
        // ç¬¬ä¸€æ¬¡è¯·æ±‚的枚举数据放缓存
        /** ç¬¬ä¸€æ¬¡è¯·æ±‚的枚举数据放缓存*/
        getLocalStorageEnum(enumKey){
          let enumCach = JSON.parse(localStorage.getItem(enumKey));
          if(enumCach == null) {
@@ -2716,7 +2724,7 @@
          }
          return enumCach;
        },
        // ç»Ÿä¸€åŠ è½½æ‰€æœ‰æžšä¸¾æŸ¥è¯¢ï¼Œä¸»è¦æ˜¯ä¸ºé¿å…åˆ‡æ¢ç æ®µç±»åž‹æ—¶è¿˜æœªåŠ è½½å®Œæˆçš„æƒ…å†µ
        /** ç»Ÿä¸€åŠ è½½æ‰€æœ‰æžšä¸¾æŸ¥è¯¢ï¼Œä¸»è¦æ˜¯ä¸ºé¿å…åˆ‡æ¢ç æ®µç±»åž‹æ—¶è¿˜æœªåŠ è½½å®Œæˆçš„æƒ…å†µ*/
        loadTotalEnum(){
          this.loadCodeSecType();
          this.loadCodeSecLength();
@@ -2726,7 +2734,7 @@
          this.loadCodeCutType();
          this.loadCodeGetValueType();
        },
        //枚举和可输可选内容查询
        /** æžšä¸¾å’Œå¯è¾“可选内容查询 */
        loadCodeSecType(){
          this.enumParam.secTypeList = this.getLocalStorageEnum("codeSecType");
          this.loadCodeSecLength();
Source/UBCS/service-start.sh
@@ -26,8 +26,8 @@
 docker run -d -p 36004:36004 --name ubcs-flow vci-ubcs/ubcs-flow:latest
 #启动develop服务
 docker build -f ./ubcs-ops/ubcs-develop/Dockerfile -t vci-ubcs/ubcs-develop .
 docker run -d -p 36003:36003 --name ubcs-develop vci-ubcs/ubcs-develop:latest
# docker build -f ./ubcs-ops/ubcs-develop/Dockerfile -t vci-ubcs/ubcs-develop .
# docker run -d -p 36003:36003 --name ubcs-develop vci-ubcs/ubcs-develop:latest
 #启动jobAdmin服务
# docker build -f ./ubcs-ops/ubcs-xxljob-admin/Dockerfile -t vci-ubcs/ubcs-jobadmin .
Source/UBCS/ubcs-ops/ubcs-admin/src/main/resources/bootstrap.yml
@@ -20,13 +20,13 @@
          - consul
          - serverAddr
      # è‡ªå®šä¹‰UI界面
      ui:
        title: BladeX Monitor
        external-views:
          - label: æž¶æž„官网
            url: https://bladex.vip/
            order: 1
            iframe: true
#      ui:
#        title: BladeX Monitor
#        external-views:
#          - label: æž¶æž„官网
#            url: https://bladex.vip/
#            order: 1
#            iframe: true
      # ç”¨äºŽå†…网安全,判断 admin proxy
      instance-proxy:
        ignored-headers: "X-Forwarded-For"
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java
@@ -49,9 +49,9 @@
     */
    @GetMapping("/gridCodeFixedValue")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "分页 ç æ®µåŸºç¡€ä¿¡æ¯åˆ—表", notes = "CodeFixedValueVO")
    @ApiOperation(value = "固定码段的码值列表", notes = "CodeFixedValueVO")
    public R<IPage<CodeFixedValueVO>> gridCodeFixedValue(CodeFixedValueVO codeFixedValueVO, Query query){
        return R.data(codeFixedValueService.gridCodeFixedValue(codeFixedValueVO, Condition.getPage(query.setAscs("ordernum"))));
        return R.data(codeFixedValueService.gridCodeFixedValue(codeFixedValueVO, Condition.getPage(query.setAscs("orderNum"))));
    }
    /**
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -759,7 +759,6 @@
        return codeBasicSecDO;
    }
    /**
     * ä½¿ç”¨è§„则的主键获取对应的码段内容
     *
@@ -863,7 +862,10 @@
                CodeBasicSec codeBasicSec = codeBasicSecMapper.selectOne(Wrappers.<CodeBasicSec>query().lambda()
                    .eq(CodeBasicSec::getOid, codeBasicSecDO.getParentClassifySecOid())
                    .eq(CodeBasicSec::getSecType, codeBasicSecDO.getSecType()));
                codeBasicSecVO.setParentClassifySecText(codeBasicSec.getName());
                if(Func.isNotEmpty(codeBasicSec)){
                    codeBasicSecVO.setParentClassifySecOid(codeBasicSec.getOid());
                    codeBasicSecVO.setParentClassifySecText(codeBasicSec.getName());
                }
            }
            //如果有lcstatus的类的话
            if (true) {
@@ -872,4 +874,5 @@
        }
        return codeBasicSecVO;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java
@@ -66,7 +66,6 @@
     */
    @Override
    public List<Tree> treeCodeClassifyValue(TreeQueryObject treeQueryObject) throws VciBaseException {
        // List<CodeClassifyValueDO> doList =selectCodeClassifyValueDOByTree(treeQueryObject);
        List<CodeClassifyValue> doList = selectCodeClassifyValueDO4Tree(treeQueryObject);
        List<CodeClassifyValueVO> voList = CodeClassifyValueWrapper.build().listVO(doList);
        TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -38,6 +38,7 @@
import com.vci.ubcs.code.service.ICodeRuleService;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
@@ -443,8 +444,7 @@
            }
            // å‘布时将码段类型按照字符串分隔的形式拼接并存储
            String secTypeStr = codeBasicSecService.listCodeBasicSecByRuleOid(codeRuleDO.getOid()).stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
            codeRuleDO.setBasicSecTypes(secTypeStr);
            count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue()));
            count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue()).set(CodeRule::getBasicSecTypes,secTypeStr));
        } else {
            return R.fail("暂不支持的操作类型");
        }
@@ -507,76 +507,105 @@
    @Override
    public R checkLikeCodeRule(String oid) throws VciBaseException {
        // 1、查询出当前要发布的规则
        CodeRuleVO codeRuleVO = getObjectHasSecByOid(oid);
        // å½“前发布的规则不存在码段信息
        if(Func.isEmpty(codeRuleVO.getSecVOList())){
            return R.data(null);
        CodeRuleVO releaseCodeRule = getObjectHasSecByOid(oid);
        // å½“前发布的规则不存在码段信息,直接空信息返回
        if(Func.isEmpty(releaseCodeRule.getSecVOList())){
            return R.success("");
        }
        // 2、找出与当前发布的规则码段顺序一致的规则
        String secTypes = codeRuleVO.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
        //先查询出所有已发布的编码规则
        List<CodeRule> codeRuleList = codeRuleMapper.selectList(Wrappers.<CodeRule>query().lambda().eq(CodeRule::getLcStatus, FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED));
        String secTypes = releaseCodeRule.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
        // æŸ¥è¯¢å‡ºæ‰€æœ‰å·²å‘布的编码规则中码段类型顺序与当前要发布的规则顺序一致的编码规则,此时已近过滤掉大部分规则,运算量减小
        List<CodeRule> codeRuleList = codeRuleMapper.selectList(Wrappers.<CodeRule>query().lambda()
            .eq(CodeRule::getLcStatus, FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED)
            .eq(CodeRule::getBasicSecTypes,secTypes)
        );
        // ä¸ºç©ºï¼Œè¯æ˜Žä¸å­˜åœ¨ç±»åŒçš„编码规则直接返回
        if(Func.isEmpty(codeRuleList)){
            return R.success("");
        }
        // æŸ¥è¯¢å‡ºåŸºç¡€ç æ®µåˆ—表(按照orderNum升序排序)
        List<CodeRuleVO> codeRuleVOS = codeRuleDO2VOs(codeRuleList, true);
        // æ»¡è¶³ç æ®µç±»åž‹é¡ºåºä¸€è‡´çš„要求的编码规则,可以进入下一步比较规则
        List<CodeRuleVO> codeRuleVOStream = codeRuleVOS.parallelStream().filter(item -> {
            // å¯¹BasicSec使用orderNum排序(查询的时候其实已经排过一次序了),并将secType用逗号分隔拼接成一个字符串
            String itemSecTypes = item.getSecVOList().parallelStream().sorted(Comparator.comparing(CodeBasicSecVO::getOrderNum)).map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
            if (secTypes.equals(itemSecTypes)) {
                return true;
            }
            return false;
        }).collect(Collectors.toList());
        // 3、各类码段分别进行比对
        codeRuleVOStream.parallelStream().filter(item->{
            item.getSecVOList().stream().filter(basicSec->{
                switch (basicSec.getSecType()){
        List<CodeRuleVO> lastCodeRule = new ArrayList<>();
        codeRuleVOS.stream().forEach(item->{
            List<CodeBasicSecVO> secVOList = item.getSecVOList();
            boolean flag = true;
            for (int index = 0; index < secVOList.size(); index++) {
                // å½“前要发布的规则包含的码段信息
                CodeBasicSecVO releaseBasicSec = releaseCodeRule.getSecVOList().get(index);
                // å·²å‘布的规则包含的码段信息
                CodeBasicSecVO releasedBasicSec = secVOList.get(index);
                // å› ä¸ºç æ®µé¡ºåºéƒ½æ˜¯æŒ‰ç…§OrderNum排序的,所以直接按照下标两两比较就可以了
                switch (releasedBasicSec.getSecType()){
                    // å±žæ€§ç æ®µï¼Œæ¯”对属性和属性所在分类(referCodeClassifyOid)
                    case "codeattrsec":
                        List<CodeBasicSecVO> codeattrsec = this.getBasicSecBySecType("codeattrsec", codeRuleVO);
                        if(!releasedBasicSec.getReferCodeClassifyOid().equals(releaseBasicSec.getReferCodeClassifyOid())){
                            flag = false;
                        }
                        break;
                    // å¯å˜ç æ®µï¼Œæ¯”对码段长度,编码补位方式和补位时的字符
                    case "codevariablesec":
                        if(!(releasedBasicSec.getCodeSecLength().equals(releaseBasicSec.getCodeSecLength())
                            && releasedBasicSec.getCodeFillType().equals(releaseBasicSec.getCodeFillType())
                            && releasedBasicSec.getCodeFillSeparator().equals(releaseBasicSec.getCodeFillSeparator()))){
                            flag = false;
                        }
                        break;
                    // å›ºå®šç æ®µæ¯”对按升序排序的码值,
                    case "codefixedsec":
                        if(Func.isNotEmpty(releasedBasicSec.getFixedValueVOList()) && Func.isNotEmpty(releaseBasicSec.getFixedValueVOList())){
                            // å°†fixedValue按照逗号分隔拼接起来,以便比较,由于查询时已按照orderNum排过序了,所以不需要再次排序
                            String reledFixedValues = releasedBasicSec.getFixedValueVOList().stream().map(CodeFixedValueVO::getId).collect(Collectors.joining(","));
                            String releFixedValues = releaseBasicSec.getFixedValueVOList().stream().map(CodeFixedValueVO::getId).collect(Collectors.joining(","));
                            if(reledFixedValues.equals(releFixedValues)){
                                flag = false;
                            }
                        }
                        break;
                    // åˆ†ç±»ç æ®µæ¯”对按升序排序码值
                    case "codeclassifysec":
                        if(!releasedBasicSec.getReferCodeClassifyOid().equals(releaseBasicSec.getReferCodeClassifyOid())){
                            flag = false;
                        }
                        break;
                    // æ—¥æœŸç æ®µæ¯”对日期格式
                    case "codedatesec":
                        if(!releasedBasicSec.getCodeDateFormatStr().equals(releaseBasicSec.getCodeDateFormatStr())){
                            flag = false;
                        }
                        break;
                    // å¼•用码段,比对参照应用的业务类型
                    // å¼•用码段,比对参照引用的业务类型
                    case "coderefersec":
                        if(!releasedBasicSec.getReferBtmId().equals(releaseBasicSec.getReferBtmId())){
                            flag = false;
                        }
                        break;
                    // å±‚级码段,比对层级类型、层级的值、字符截取类型、取值类型
                    case "codelevelsec":
                        if(!(releasedBasicSec.getCodeLevelType().equals(releaseBasicSec.getCodeLevelType())
                            && releasedBasicSec.getCodeLevelValue().equals(releaseBasicSec.getCodeLevelValue())
                            && releasedBasicSec.getValueCutType().equals(releaseBasicSec.getValueCutType())
                            && releasedBasicSec.getCodeGetValueType().equals(releaseBasicSec.getCodeGetValueType()))){
                            flag = false;
                        }
                        break;
                    case "codeserialsec":
                    // æµæ°´ç æ®µæ¯”对码段的长度
                    case "codeserialsec":
                        if(!releasedBasicSec.getCodeFillLength().equals(releaseBasicSec.getCodeFillLength())){
                            flag = false;
                        }
                        break;
                    default:
                        return false;
                }
                return false;
            });
            return false;
            }
            // æ»¡è¶³æ‰€æœ‰ç æ®µç±»åž‹æ¯”对条件的规则
            if (flag) {
                lastCodeRule.add(item);
            }
        });
        // æœ€åŽå°†ç»“果进行返回
        // æœ€åŽå°†ç»“果进行处理并返回
        return null;
    }
    private List<CodeBasicSecVO> getBasicSecBySecType(String secType,CodeRuleVO codeRuleVO){
        List<CodeBasicSecVO> codeBasicSecVOList = codeRuleVO.getSecVOList().parallelStream().filter(item -> {
            if (item.getSecType().equals(secType)) {
                return true;
            }
            return false;
        }).collect(Collectors.toList());
        return codeBasicSecVOList;
    }
    /**
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml
@@ -45,8 +45,13 @@
  cronTime: "0 0/1 * * * ?"
  dataParamName: dataString
  dataTranTemp: D:\desktop
#统一接口相关配置
code:
  checkConfig: false
  universalinterface:
    checkSystemConfig: false
    attrconfig:
      #系统集成
      system_attrmap: {RLM: D:\RLM.xml,PDM: D:\pdm.xml,DMS: D:\DMS.xml}
#mybatis-plus-join:
#  table-alias: t