From 1b8098b7f79b66a80e5ca49d8765606cb5fa0408 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 30 十一月 2023 19:11:00 +0800 Subject: [PATCH] 操作日志完善 --- Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java | 35 + Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java | 39 + Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java | 7 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/字符集.json | 5 Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/vo/UserVO.java | 20 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java | 2 Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java | 7 Source/UBCS-WEB/src/views/monitor/log/operateLog.vue | 18 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeRuleCharacterEnum.java | 135 ++++ Source/UBCS-WEB/vue.config.js | 6 Source/UBCS-WEB/src/views/system/user.vue | 10 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java | 1 Source/UBCS-WEB/package.json | 54 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java | 32 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeRuleCharacterWapper.java | 73 ++ Source/UBCS-WEB/src/components/Master/MasterTree.vue | 4 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java | 2 Source/UBCS-WEB/src/views/ruleBasic/delimiterConfig.vue | 13 Source/UBCS-WEB/src/views/code/code.vue | 2 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RoleController.java | 15 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 869 +++++++++++++------------ Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue | 17 Source/UBCS-WEB/src/views/MasterData/items.vue | 4 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleService.java | 14 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRuleCharacter.java | 53 + Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java | 17 Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java | 17 Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java | 16 /dev/null | 13 Source/UBCS-WEB/src/views/ruleBasic/paddingCharacter.vue | 13 Source/UBCS-WEB/src/views/docking/info.vue | 18 Source/UBCS-WEB/src/components/FormTemplate/index.vue | 8 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java | 5 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SaveLogUtil.java | 24 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 104 ++- Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue | 13 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java | 113 +++ Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java | 15 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeRuleCharacterMapper.xml | 36 + Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml | 16 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/MdmEnumIdConstant.java | 5 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java | 29 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeRuleCharacterMapper.java | 7 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java | 59 + Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java | 11 45 files changed, 1,408 insertions(+), 568 deletions(-) diff --git a/Source/UBCS-WEB/package.json b/Source/UBCS-WEB/package.json index 0b035b2..4e9dfc2 100644 --- a/Source/UBCS-WEB/package.json +++ b/Source/UBCS-WEB/package.json @@ -11,44 +11,44 @@ "test:e2e": "vue-cli-service test:e2e" }, "dependencies": { - "avue-plugin-ueditor": "0.1.4", - "axios": "0.18.0", - "babel-polyfill": "6.26.0", - "classlist-polyfill": "1.2.0", - "crypto-js": "4.1.1", + "avue-plugin-ueditor": "^0.1.4", + "axios": "^0.18.0", + "babel-polyfill": "^6.26.0", + "classlist-polyfill": "^1.2.0", + "crypto-js": "^4.1.1", "echarts": "4.9.0", - "element-ui": "2.15.6", - "instead": "1.0.3", - "js-base64": "2.5.1", - "js-cookie": "2.2.0", - "js-md5": "0.7.3", - "js-pinyin": "0.2.4", - "mockjs": "1.0.1-beta3", - "moment": "2.29.4", - "node-gyp": "4.0.0", + "element-ui": "^2.15.6", + "instead": "^1.0.3", + "js-base64": "^2.5.1", + "js-cookie": "^2.2.0", + "js-md5": "^0.7.3", + "js-pinyin": "^0.2.4", + "mockjs": "^1.0.1-beta3", + "moment": "^2.29.4", + "node-gyp": "^4.0.0", "nprogress": "0.2.0", "portfinder": "1.0.23", "save": "2.9.0", "script-loader": "0.7.2", "vue": "2.6.10", - "vue-axios": "2.1.2", - "vue-clipboard2": "0.3.3", + "vue-axios": "^2.1.2", + "vue-clipboard2": "^0.3.3", "vue-echarts": "5.0.0-beta.0", "vue-flowchart-editor": "1.0.2", - "vue-i18n": "8.7.0", - "vue-router": "3.0.1", - "vuex": "3.1.1" + "vue-i18n": "^8.7.0", + "vue-router": "^3.0.1", + "vuex": "^3.1.1" }, "devDependencies": { - "@vue/cli-plugin-babel": "3.1.1", - "@vue/cli-plugin-eslint": "3.1.5", - "@vue/cli-service": "3.1.4", - "@vue/composition-api": "1.7.2", - "chai": "4.1.2", + "@vue/cli-plugin-babel": "^3.5.0", + "@vue/cli-plugin-eslint": "^3.5.0", + "@vue/cli-service": "^3.5.0", + "@vue/composition-api": "^1.7.2", + "chai": "^4.1.2", "node-sass": "6.0.1", - "sass-loader": "10.0.5", - "vue-template-compiler": "2.5.17", - "webpack-bundle-analyzer": "3.0.3" + "sass-loader": "10.3.1", + "vue-template-compiler": "2.6.10", + "webpack-bundle-analyzer": "^3.0.3" }, "lint-staged": { "*.js": [ diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue index 5849e98..bfd0254 100644 --- a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue +++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue @@ -278,7 +278,6 @@ let columnItem = { change: (val) => { - console.log(val) if (val.column.field === "drawingno") { this.codeattrsecValue = val.value; return; @@ -600,12 +599,16 @@ // 鑾峰彇琛ㄥ崟璇︽儏鏁版嵁 getFormDetail() { if (this.type === "add") return; - getFormDetail({templateOid: this.templateOid, oid: this.rowOid}).then( - (res) => { - this.form = Object.assign(this.form, res.data.data[0]); - this.loading = false; - } - ); + if(this.templateOid){ + getFormDetail({templateOid: this.templateOid, oid: this.rowOid}).then( + (res) => { + this.form = Object.assign(this.form, res.data.data[0]); + this.loading = false; + } + ); + return; + } + }, setReferValue(data) { if (data.field) { diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue index 573c4b5..2567d87 100644 --- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue +++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue @@ -250,9 +250,11 @@ }, methods: { openDialog() { + //鏂板鍜屼慨鏀瑰叡鍚岃皟鐢� this.getFormTemplate(); - if (this.type === "add") { + if (this.type === "add" || (this.type !== "add" && this.status === "amend")) { this.getCodeRule(); + return; } }, close() { @@ -260,6 +262,7 @@ }, // 鎺ュ彛鑾峰彇琛ㄥ崟鏁版嵁 getFormTemplate() { + //鏂板鍜屼慨鏀瑰叡鍚岃皟鐢� getFormTemplate({ templateOid: this.templateOid, codeClassifyOid: this.codeClassifyOid, @@ -277,6 +280,7 @@ } else { this.showResembleQuery = false; } + //浼犻�掕〃鍗曚笂鏂瑰尯鍩熸暟鎹� 锛堟柊澧炲拰淇敼锛� this.$nextTick(() => { this.$refs.FormTemplate.templateRender( res.data.formDefineVO.items @@ -319,7 +323,7 @@ that.secVOList = (res.data.data.secVOList || []).filter((item) => typeList.includes(item.secType) ); - if (that.secVOList.length > 0 && that.type === "add") { + if (that.secVOList.length > 0 && that.type === "add" ||(that.type !== "add" && that.status === "amend")) { that.showCodeApply = true; that.activeName = "codeApply"; diff --git a/Source/UBCS-WEB/src/components/Master/MasterTree.vue b/Source/UBCS-WEB/src/components/Master/MasterTree.vue index 3948716..b34e705 100644 --- a/Source/UBCS-WEB/src/components/Master/MasterTree.vue +++ b/Source/UBCS-WEB/src/components/Master/MasterTree.vue @@ -1,12 +1,12 @@ <template> - <div class="app" style="display: flex;"> + <div class="app" style="position: relative;"> <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="Treedata" :defaultExpandAll="false" :option="Treeoption" style="width: fit-content;" @node-click="nodeClick"> <template slot-scope="{ node }"> <span v-html="node.label"></span> </template> </avue-tree> - <div style="display: inline-block;"> + <div style="position: absolute; right: 0px; top: -1px;"> <el-link class="refresh-icon" icon="el-icon-refresh" @click="getTreeLists"></el-link> </div> </div> diff --git a/Source/UBCS-WEB/src/views/MasterData/items.vue b/Source/UBCS-WEB/src/views/MasterData/items.vue index f84b48b..c0a80c0 100644 --- a/Source/UBCS-WEB/src/views/MasterData/items.vue +++ b/Source/UBCS-WEB/src/views/MasterData/items.vue @@ -1,7 +1,7 @@ <template> <el-container> - <el-aside> - <basic-container style="overflow: hidden;"> + <el-aside style="width:250px"> + <basic-container> <!-- 鏍戠粍浠�--> <master-tree :currentPage="this.currentPage" diff --git a/Source/UBCS-WEB/src/views/code/code.vue b/Source/UBCS-WEB/src/views/code/code.vue index 9668e7d..4b0e705 100644 --- a/Source/UBCS-WEB/src/views/code/code.vue +++ b/Source/UBCS-WEB/src/views/code/code.vue @@ -1385,7 +1385,7 @@ cols: [ {title: '绠楁硶缂栧彿', field: 'id', width: 200}, {title: '绠楁硶鍚嶇О', field: 'name', width: 150}, - {title: '鑷畾涔夋祦姘碆ean', field: 'classFullName', width: 300}, + {title: '绫诲叏璺緞', field: 'classFullName', width: 300}, {title: '绫诲瀷', field: 'serialType', width: 300}, {title: '鎻忚堪', field: 'description'} ], diff --git a/Source/UBCS-WEB/src/views/docking/info.vue b/Source/UBCS-WEB/src/views/docking/info.vue index 973fcd7..f7cbbc7 100644 --- a/Source/UBCS-WEB/src/views/docking/info.vue +++ b/Source/UBCS-WEB/src/views/docking/info.vue @@ -266,15 +266,15 @@ }, computed: { ...mapGetters(["permission"]), - permissionList(){ - return{ - sync:this.vaildData(this.permission.info.info_sync,false), - add:this.vaildData(this.permission.info.info_add,false), - query:this.vaildData(this.permission.info.info_query,false), - edit:this.vaildData(this.permission.info.info_edit,false), - delete:this.vaildData(this.permission.info.info_delete,false), - enable:this.vaildData(this.permission.info.info_enable,false), - stop:this.vaildData(this.permission.info.info_stop,false), + permissionList() { + return { + sync: this.vaildData(this.permission.info.info_sync, false), + add: this.vaildData(this.permission.info.info_add, false), + query: this.vaildData(this.permission.info.info_query, false), + edit: this.vaildData(this.permission.info.info_edit, false), + delete: this.vaildData(this.permission.info.info_delete, false), + enable: this.vaildData(this.permission.info.info_enable, false), + stop: this.vaildData(this.permission.info.info_stop, false), } }, oids() { diff --git a/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue b/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue index b797733..0a8653f 100644 --- a/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue +++ b/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue @@ -14,6 +14,11 @@ @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> + <template slot="description" slot-scope="scope"> + <avue-text-ellipsis :text="scope.row.description" :height="50"> + <small slot="more">...</small> + </avue-text-ellipsis> + </template> </avue-crud> </basic-container> </template> @@ -89,7 +94,10 @@ { label: "鎻忚堪", prop: "description", - width:'300' + span: 24, + minRows: 20, + type: "textarea", + slot: true, }, ] }, @@ -130,14 +138,6 @@ }, underscoreName(key) { return key.replace(/([A-Z])/g, "_$1").toLowerCase(); - }, - beforeOpen(done, type) { - if (["edit", "view"].includes(type)) { - getUsualLogs(this.form.id).then(res => { - this.form = res.data.data; - }); - } - done(); }, currentChange(currentPage){ this.page.currentPage = currentPage; diff --git a/Source/UBCS-WEB/src/views/ruleBasic/delimiterConfig.vue b/Source/UBCS-WEB/src/views/ruleBasic/delimiterConfig.vue new file mode 100644 index 0000000..867a34d --- /dev/null +++ b/Source/UBCS-WEB/src/views/ruleBasic/delimiterConfig.vue @@ -0,0 +1,13 @@ +<template> + +</template> + +<script> +export default { + name: "delimiterConfig" +} +</script> + +<style scoped> + +</style> diff --git a/Source/UBCS-WEB/src/views/ruleBasic/paddingCharacter.vue b/Source/UBCS-WEB/src/views/ruleBasic/paddingCharacter.vue new file mode 100644 index 0000000..9de161e --- /dev/null +++ b/Source/UBCS-WEB/src/views/ruleBasic/paddingCharacter.vue @@ -0,0 +1,13 @@ +<template> + +</template> + +<script> +export default { + name: "paddingCharacter" +} +</script> + +<style scoped> + +</style> diff --git a/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue b/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue new file mode 100644 index 0000000..f983576 --- /dev/null +++ b/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue @@ -0,0 +1,13 @@ +<template> + +</template> + +<script> +export default { +name: "usableCharacter" +} +</script> + +<style scoped> + +</style> diff --git a/Source/UBCS-WEB/src/views/system/user.vue b/Source/UBCS-WEB/src/views/system/user.vue index 8503d84..838ec38 100644 --- a/Source/UBCS-WEB/src/views/system/user.vue +++ b/Source/UBCS-WEB/src/views/system/user.vue @@ -186,7 +186,7 @@ import {exportBlob} from "@/api/common"; import {getDeptTree, getDeptLazyTree} from "@/api/system/dept"; import {getRoleTree} from "@/api/system/role"; -import {getPostList} from "@/api/system/post"; +//import {getPostList} from "@/api/system/post"; import {mapGetters} from "vuex"; import website from '@/config/website'; import {getToken} from '@/util/auth'; @@ -894,10 +894,10 @@ const column = this.findObject(this.option.group, "deptId"); column.dicData = res.data.data; }); - getPostList(tenantId).then(res => { - const column = this.findObject(this.option.group, "postId"); - column.dicData = res.data.data; - }); + // getPostList(tenantId).then(res => { + // const column = this.findObject(this.option.group, "postId"); + // column.dicData = res.data.data; + // }); }, submitRole() { const roleList = this.$refs.treeRole.getCheckedKeys().join(","); diff --git a/Source/UBCS-WEB/vue.config.js b/Source/UBCS-WEB/vue.config.js index 264ceae..80aaff2 100644 --- a/Source/UBCS-WEB/vue.config.js +++ b/Source/UBCS-WEB/vue.config.js @@ -26,11 +26,11 @@ proxy: { '/api': { //鏈湴鏈嶅姟鎺ュ彛鍦板潃 - target: 'http://127.0.0.1:37000', + // target: 'http://127.0.0.1:37000', // target: 'http://192.168.1.51:37000', - // target: 'http://dev.vci-tech.com:37000', + target: 'http://dev.vci-tech.com:37000', //yxc - // target: 'http:// 192.168.0.104:37000', + // target: 'http:// 192.168.0.100:37000', // target: 'http://192.168.0.105:37000', // target: 'http://192.168.0.103:37000', // target: 'http://192.168.1.63:37000', diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java index 887df95..50f1e7e 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java +++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java @@ -25,6 +25,7 @@ * 妯℃澘鐨勪富閿� */ private String templateOid; + /** * 缂栫爜瑙勫垯鐨勪富閿� */ diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRuleCharacter.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRuleCharacter.java new file mode 100644 index 0000000..a161963 --- /dev/null +++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRuleCharacter.java @@ -0,0 +1,53 @@ +package com.vci.ubcs.code.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.vci.ubcs.starter.constant.CodeTableNameConstant; +import com.vci.ubcs.starter.revision.model.BaseModel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; + +/** + * 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄 + * + * @author xj + * @date 2023-11-30 + */ +@TableName(CodeTableNameConstant.PL_CODE_RULE_CHARACTER) +@ApiModel(value = "CodeRuleCharacter瀵硅薄", description = "缂栫爜瑙勫垯瀛楃闆�") +@EqualsAndHashCode(callSuper = true) +@Data +public class CodeRuleCharacter extends BaseModel{ + /** + * 绂佹淇敼杩欎釜鍊� + */ + private static final long serialVersionUID = 4615707119066298941L; + /*** + * 鍙樿鍒檕id + */ + @NotBlank(message = "瑙勫垯鐨勪富閿笉鑳戒负绌�") + @ApiModelProperty(value = "瑙勫垯鐨勪富閿笉鑳戒负绌�") + private String codeRuleId; + /** + * 瀛楃闆� + */ + @ApiModelProperty(value = "瀛楃闆�") + private String chartValue; + /*** + * 瀛楃绫诲瀷 + */ + @ApiModelProperty(value = "瀛楃绫诲瀷") + @NotBlank(message = "瀛楃绫诲瀷涓嶈兘涓虹┖") + private String chartType; + + /*** + * 瀛楃绫诲瀷鏄剧ず鍊� + */ + @ApiModelProperty(value = "瀛楃绫诲瀷鏄剧ず鍊�") + @TableField(exist = false) + private String chartTypeText; +} diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java new file mode 100644 index 0000000..74ce347 --- /dev/null +++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java @@ -0,0 +1,35 @@ +package com.vci.ubcs.code.vo.pagemodel; + +import com.vci.ubcs.starter.revision.model.BaseModel; +import lombok.Data; + +/** + * 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄 + * + * @author xj + * @date 2023-11-30 + */ +@Data +public class CodeRuleCharacterVO extends BaseModel { + /** + * 绂佹淇敼杩欎釜鍊� + */ + private static final long serialVersionUID = 4615707119066298949L; + /*** + * 瑙勫垯oid + */ + private String codeRuleId; + /** + * 瀛楃闆� + */ + private String chartValue; + /*** + * 瀛楃绫诲瀷 + */ + private String chartType; + /*** + * 瀛楃绫诲瀷鏄剧ず鍊� + */ + private String chartTypeText; + +} diff --git "a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\345\255\227\347\254\246\351\233\206.json" "b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\345\255\227\347\254\246\351\233\206.json" new file mode 100644 index 0000000..2f0428d --- /dev/null +++ "b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\345\255\227\347\254\246\351\233\206.json" @@ -0,0 +1,5 @@ +{ + "codeRuleId": "1729702446013485056", + "chartValue": "abckzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz", + "chartType": "charset" +} diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java index c6600ee..4dc9ca2 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java +++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java @@ -133,4 +133,21 @@ this.userStatus = userStatus; } + @Override + public String toString() { + return "鍩烘湰淇℃伅:{" + + "鐢ㄦ埛缂栧彿='" + code + '\'' + + ", 鐢ㄦ埛骞冲彴=" + userType + + ", 璐﹀彿='" + account + '\'' + + ", 鏄电О='" + name + '\'' + + ", 鐪熷悕='" + realName + '\'' + + ", 閭='" + email + '\'' + + ", 鐢佃瘽='" + phone + '\'' + + ", 鐢熸棩=" + birthday + + ", 鎬у埆=" + sex + + ", 瀵嗙骇='" + secretGrade + '\'' + + ", 鐢ㄦ埛鐘舵��=" + userStatus + + '}'; + } + } diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/vo/UserVO.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/vo/UserVO.java index 5e2b2b1..7f3913b 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/vo/UserVO.java +++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/vo/UserVO.java @@ -23,13 +23,16 @@ import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; /** * 瑙嗗浘瀹炰綋绫� * * @author Chill */ -@Data +@Getter +@Setter @EqualsAndHashCode(callSuper = true) @ApiModel(value = "UserVO瀵硅薄", description = "UserVO瀵硅薄") public class UserVO extends User { @@ -96,4 +99,19 @@ * 璐﹀彿鏄惁鍋滅敤 0涓哄惎鐢紝1涓哄惎鐢� */ private String userStatusText; + + @Override + public String toString() { + return "鐢ㄦ埛淇℃伅{[" + + super.toString()+ "]" + + ", roleName='" + roleName + '\'' + + ", tenantName='" + tenantName + '\'' + + ", userTypeName='" + userTypeName + '\'' + + ", deptName='" + deptName + '\'' + + ", postName='" + postName + '\'' + + ", sexName='" + sexName + '\'' + + ", userStatusText='" + userStatusText + '\'' + + '}'; + } + } diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java index b227b64..74a8a3f 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java @@ -78,6 +78,11 @@ public static final String PL_CODE_RULE = "PL_CODE_RULE"; /** + * 缂栫爜瑙勫垯瀛楃闆� + */ + public static final String PL_CODE_RULE_CHARACTER = "PL_CODE_RULE_CHARACTER"; + + /** * 缂栫爜瑙勫垯鐨勬祦姘村�� */ public static final String PL_CODE_SERIALVALUE = "PL_CODE_SERIALVALUE"; diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SaveLogUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SaveLogUtil.java new file mode 100644 index 0000000..1f3877d --- /dev/null +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SaveLogUtil.java @@ -0,0 +1,24 @@ +package com.vci.ubcs.starter.util; + +import org.springblade.core.log.annotation.GrantLog; +import org.springblade.core.log.annotation.OperateLog; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +/** + * @author ludc + * @date 2023/11/29 12:39 + */ +@Configuration +public class SaveLogUtil { + + /** + * 鎿嶄綔鏃ュ織鎻掑叆鎿嶄綔 + * @param res + */ + @OperateLog + public boolean operateLog(String type,boolean isException/*鏄惁瑙﹀彂浜嗗紓甯�*/,String res){ + return true; + } + +} diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/MdmEnumIdConstant.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/MdmEnumIdConstant.java index b6b2664..cb5d649 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/MdmEnumIdConstant.java +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/MdmEnumIdConstant.java @@ -80,4 +80,9 @@ * 绯荤粺鎺ュ彛绫诲瀷 */ public static final String SYS_INTEGRATION_LOG_TYPE="sysIntegrationLogType"; + + /*** + * 绯荤粺鎺ュ彛绫诲瀷 + */ + public static final String CODE_RULE_CHARACTER_TYPE="code_rule_character_type"; } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/Test.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/Test.java deleted file mode 100644 index 8322537..0000000 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/Test.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.vci.ubcs.code.algorithm; - -import java.util.Arrays; -import java.util.List; - -public class Test { - - public static void main(String[] args) { - String []res={"5","6","7","8","3"}; - List<String> newList=Arrays.asList(res); - System.out.println(res); - } -} diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java new file mode 100644 index 0000000..a7f08a7 --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java @@ -0,0 +1,59 @@ +package com.vci.ubcs.code.controller; + +import com.vci.ubcs.code.service.ICodeRuleCharacterService; +import com.vci.ubcs.code.vo.pagemodel.CodeRuleCharacterVO; +import org.springblade.core.tool.api.R; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/*** + * 瑙勫垯瀛楃闆嗛厤缃� + * @author xj + * @date 2023-11-30 + */ +@RestController +@RequestMapping("/codeRuleCharacterController") +public class CodeRuleCharacterController { + @Resource + private ICodeRuleCharacterService iCodeRuleCharacterService; + /** + * 浣跨敤缂栫爜瑙勫垯oid鑾峰彇鏁版嵁 + * @param codeRuleId 瑙勫垯oid + * @return 鏁版嵁鍐呭 + */ + @GetMapping("/list") + public R<List<Map<String,String>>> getDataByOid(@RequestParam("codeRuleId")String codeRuleId,@RequestParam("chartType")String chartType){ + return R.data(iCodeRuleCharacterService.getDataByRuleId(codeRuleId,chartType)); + } + /** + * 淇濆瓨瑙勫垯瀵硅薄 + * @param codeRuleCharacterVO 瑙勫垯瀛楃瀵硅薄 + * @return 鏁版嵁鍐呭 + */ + @PostMapping("/addSave") + public R addSave(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){ + return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO); + } + /** + * 淇敼瑙勫垯瀵硅薄 + * @param codeRuleCharacterVO 瑙勫垯瀛楃瀵硅薄 + * @return 鏁版嵁鍐呭 + */ + @PostMapping("/editSave") + public R editSave(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){ + return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO); + } + + /** + * 淇敼瑙勫垯瀵硅薄 + * @param codeRuleCharacterVO 瑙勫垯瀛楃瀵硅薄 + * @return 鏁版嵁鍐呭 + */ + @PostMapping("/delete") + public R delete(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){ + return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO); + } +} diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java index 97cb6df..dd8b910 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java @@ -16,6 +16,7 @@ import com.vci.ubcs.starter.revision.model.BaseModel; import com.vci.ubcs.starter.revision.model.TreeQueryObject; import com.vci.ubcs.starter.util.LocalFileUtil; +import com.vci.ubcs.starter.util.SaveLogUtil; import com.vci.ubcs.starter.web.pagemodel.*; import com.vci.ubcs.starter.web.util.ControllerUtil; import com.vci.ubcs.starter.web.util.LangBaseUtil; @@ -55,7 +56,11 @@ */ @Autowired private MdmIOService mdmIOService; - + /** + * 鏃ュ織淇濆瓨宸ュ叿绫� + */ + @Autowired + private SaveLogUtil saveLogUtil; /** * 涓嬭浇鎵归噺鐢宠鐨勫鍏ユā鏉� @@ -144,7 +149,7 @@ } /** - * 鎵归噺鐢宠缂栫爜鐨勪俊鎭� + * 鎵归噺鐢宠缂栫爜鐨勪俊鎭紙褰撳墠鍒嗙被涓婃壒閲忕敵璇凤級 * @param secDTOList 鐢宠缂栫爜鐨勪俊鎭紝蹇呴』鍖呭惈鐮佹鍜屽垎绫讳富閿殑淇℃伅 * @param file 鏂囦欢鐨勫唴瀹� */ @@ -237,7 +242,7 @@ } /** - * 瀵煎叆鍘嗗彶鏁版嵁 + * 瀵煎叆鍘嗗彶鏁版嵁(浠庨《灞傚垎绫诲鐨�) * @param codeClassifyOid 鍒嗙被鐨勪富閿� * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬� * @param file 鏂囦欢鐨勫唴瀹� @@ -302,7 +307,15 @@ @PostMapping("/addSaveCode") @VciBusinessLog(operateName = "鐢宠鍗曚釜缂栫爜") public R addSaveCode(@RequestBody CodeOrderDTO orderDTO) throws Exception { - return R.success(engineService.addSaveCode(orderDTO)); + String s = null; + try { + s = engineService.addSaveCode(orderDTO); + saveLogUtil.operateLog("缂栫爜鐢宠",false,orderDTO.toString()); + }catch (Exception e){ + saveLogUtil.operateLog("缂栫爜鐢宠",true,e.getMessage()); + throw e; + } + return R.success(s); } /** @@ -429,6 +442,7 @@ public DataGrid<Map<String,String>> gridResemble(String codeClassifyOid,String redisOid){ return mdmIOService.gridDatas(codeClassifyOid,redisOid); } + /*** * 瀵煎叆鏁版嵁 * @param codeImprotSaveDatVO//鏁版嵁瀵硅薄 @@ -436,11 +450,11 @@ */ @PostMapping("/batchImportData") public R batchImportData(@RequestBody CodeImprotParmaDatVO codeImprotSaveDatVO){ - return mdmIOService.batchImportData(codeImprotSaveDatVO.getCodeImprotSaveDatVOList(),codeImprotSaveDatVO.getClassifyAttr(),codeImprotSaveDatVO.getImprot()); + return mdmIOService.batchImportData(codeImprotSaveDatVO.getCodeImprotSaveDatVOList(),codeImprotSaveDatVO.getClassifyAttr(),codeImprotSaveDatVO.getImprot()); } /*** - *鏍规嵁鏁版嵁oid浠庣紦瀛樹腑绉婚櫎鏁版嵁 + * 鏍规嵁鏁版嵁oid浠庣紦瀛樹腑绉婚櫎鏁版嵁 * @param redisOid redisid * @param codeClassifyOid 瀛樺偍瑙勫垯鐨刼id * @param dataOids 鎵�闇�鍒犻櫎鐨勬暟鎹� @@ -450,6 +464,7 @@ public R deleteDatas(String redisOid,String codeClassifyOid,String dataOids){ return mdmIOService.deleteDatas(redisOid,codeClassifyOid,dataOids); } + /** * 鎵归噺淇濆瓨娴佺▼鎵ц椤甸潰淇敼鐨勫唴瀹� * @param orderDTOList 缂栫爜鐩稿叧鐨勪俊鎭紝涓嶉渶瑕佺爜娈电殑淇℃伅 @@ -514,7 +529,7 @@ @PostMapping("/upSaveCode") public R upSaveCode(@RequestBody CodeOrderDTO orderDTO){ engineService.upSaveCode(orderDTO); - return R.success("鎿嶄綔鎴愬姛锛�"); + return R.success("鎿嶄綔鎴愬姛锛�"); } /** diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeRuleCharacterEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeRuleCharacterEnum.java new file mode 100644 index 0000000..e48ba2b --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeRuleCharacterEnum.java @@ -0,0 +1,135 @@ +package com.vci.ubcs.code.enumpack; + +import com.vci.ubcs.starter.annotation.VciEnum; +import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant; +import com.vci.ubcs.starter.web.enumpck.BaseEnum; + +/** + * 缂栫爜瑙勫垯鐮佹瀛楃鎺у埗绫诲瀷 + * @author weidy + * @date 2022-1-17 + */ +@VciEnum(name = MdmEnumIdConstant.CODE_RULE_CHARACTER_TYPE,text = "缂栫爜瑙勫垯鐮佹瀛楃鎺у埗绫诲瀷",description = "") +public enum CodeRuleCharacterEnum implements BaseEnum { + /** + * 鍙敤瀛楃闆� + */ + CODE_RULE_CHARACTER_CHARSET("charset","鍙敤瀛楃闆�"), + + /** + * 鍙敤瀛楃闆� + */ + CODE_RULE_CHARACTER_FILLERCHAR("fillerChar","鍙敤瀛楃闆�"), + + /** + * 琛ヤ綅瀛楃 + */ + CODE_RULE_CHARACTER_SEPARATOR("separator","琛ヤ綅瀛楃"), + /** + *鍓嶅悗缂�瀛楃 + */ + CODE_RULE_CHARACTER_PREFIX("prefix","鍓嶅悗缂�瀛楃"); + /** + * 鏋氫妇鐨勫�� + */ + private String value; + + /** + * 鏋氫妇鏄剧ず鏂囨湰 + */ + private String text; + + /** + * 鑾峰彇鏋氫妇鍊� + * + * @return 鏋氫妇鍊� + */ + @Override + public String getValue() { + return value; + } + + /** + * 璁剧疆鏋氫妇鍊� + * + * @param value 鏋氫妇鍊� + */ + public void setValue(String value) { + this.value = value; + } + + /** + * 鑾峰彇鏋氫妇鏄剧ず鏂囨湰 + * + * @return 鏄剧ず鏂囨湰 + */ + @Override + public String getText() { + return text; + } + + /** + * 璁剧疆鏄剧ず鏂囨湰 + * + * @param text 鏄剧ず鏂囨湰 + */ + public void setText(String text) { + this.text = text; + } + + /** + * 鏋勯�犲嚱鏁� + * + * @param value 鍊� + * @param text 鏄剧ず鏂囨湰 + */ + private CodeRuleCharacterEnum(String value, String text) { + this.value = value; + this.text = text; + } + + /** + * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧�� + * + * @param text 鍚嶇О + * @return 鏋氫妇鍊� + */ + public static String getValueByText(String text) { + for (CodeRuleCharacterEnum wenum : CodeRuleCharacterEnum.values()) { + if (wenum.getText().equalsIgnoreCase(text)) { + return wenum.getValue(); + } + } + return ""; + } + + /** + * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉� + * + * @param value 鏋氫妇鍊� + * @return 鍚嶇О + */ + public static String getTextByValue(String value) { + for (CodeRuleCharacterEnum wenum : CodeRuleCharacterEnum.values()) { + if (wenum.getValue().equalsIgnoreCase(value)) { + return wenum.getText(); + } + } + return ""; + } + + /** + * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞� + * + * @param value 鏋氫妇鍊� + * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull + */ + public static CodeRuleCharacterEnum forValue(String value) { + for (CodeRuleCharacterEnum wenum : CodeRuleCharacterEnum.values()) { + if (wenum.getValue().equalsIgnoreCase(value)) { + return wenum; + } + } + return null; + } +} diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeRuleCharacterMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeRuleCharacterMapper.java new file mode 100644 index 0000000..164f486 --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeRuleCharacterMapper.java @@ -0,0 +1,7 @@ +package com.vci.ubcs.code.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.vci.ubcs.code.entity.CodeRuleCharacter; + +public interface CodeRuleCharacterMapper extends BaseMapper<CodeRuleCharacter>{ +} diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java new file mode 100644 index 0000000..f96aada --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java @@ -0,0 +1,39 @@ +package com.vci.ubcs.code.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.github.yulichang.base.MPJBaseService; +import com.vci.ubcs.code.entity.CodeAllCode; +import com.vci.ubcs.code.entity.CodeClassify; +import com.vci.ubcs.code.entity.CodeResembleRule; +import com.vci.ubcs.code.entity.CodeRuleCharacter; +import com.vci.ubcs.code.vo.pagemodel.CodeRuleCharacterVO; +import com.vci.ubcs.starter.exception.VciBaseException; +import org.springblade.core.tool.api.R; + +import java.util.List; +import java.util.Map; + +/*** + * 瑙勫垯瀛楃闆嗛厤缃� + * @author xj + * @date 2023-11-30 + */ +public interface ICodeRuleCharacterService extends IService<CodeRuleCharacter> { + + /** + * 浣跨敤缂栫爜瑙勫垯oid鑾峰彇鏁版嵁 + * @param codeRuleId + * @param chartType + * @return + * @throws VciBaseException + */ + List<Map<String,String>> getDataByRuleId(String codeRuleId,String chartType)throws VciBaseException; + + /*** + * 淇濆瓨缂栫爜瑙勫垯瀛楃闆� + * @param codeRuleCharacterVO + * @return + */ + R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO)throws VciBaseException; + +} diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java index e1332d8..d063ec2 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java @@ -40,7 +40,7 @@ * @param file excel鏂囦欢鐨勪俊鎭� * @return 鏈夐敊璇俊鎭殑excel */ - CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file); + CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file) throws Exception; /*** *鎵归噺鐢宠缂栫爜鏁版嵁 diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java index ae01ddd..7e1a226 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -207,12 +208,16 @@ // 涓嶄负绌哄氨闇�瑕佽褰撳墠鍒嗙被涓嬫墍鏈夊瓙鍒嗙被鐨刬sParticipateCheck if(!codeClassifies.isEmpty()){ List<String> oids = codeClassifies.stream().map(CodeClassify::getOid).collect(Collectors.toList()); - updateAttr = codeClassifyMapper.update( - null, - Wrappers.<CodeClassify>update() - .lambda().in(CodeClassify::getOid, oids) - .set(CodeClassify::getIsParticipateCheck, codeClassifyEntity.getIsParticipateCheck()) - ); + LambdaUpdateWrapper<CodeClassify> updateWrapper = Wrappers.<CodeClassify>update() + .lambda().in(CodeClassify::getOid, oids) + .set(CodeClassify::getIsParticipateCheck, codeClassifyEntity.getIsParticipateCheck()); + // 鐖跺垎绫荤殑涓氬姟绫诲瀷鍋氫簡鏇存敼锛屾墍鏈夊瓙鍒嗙被鐨勯兘寰楄繘琛屾洿鏀� + if(!codeClassifyEntity.getBtmTypeId().equals(detail.getBtmTypeId())){ + updateWrapper.set(CodeClassify::getBtmTypeId,codeClassifyEntity.getBtmTypeId()) + .set(CodeClassify::getBtmTypeName,codeClassifyEntity.getBtmTypeName()); + } + updateAttr = codeClassifyMapper.update(null,updateWrapper); + } // //澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊銆傚彧鏈夊惎鐢ㄧ姸鎬佺殑鍒嗙被鎵嶆帹閫� diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java new file mode 100644 index 0000000..aaabd6f --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java @@ -0,0 +1,113 @@ +package com.vci.ubcs.code.service.impl; + +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.base.Joiner; +import com.vci.ubcs.code.entity.CodeRuleCharacter; +import com.vci.ubcs.code.mapper.CodeRuleCharacterMapper; +import com.vci.ubcs.code.service.ICodeRuleCharacterService; +import com.vci.ubcs.code.vo.pagemodel.CodeRuleCharacterVO; +import com.vci.ubcs.starter.exception.VciBaseException; +import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; +import com.vci.ubcs.starter.web.util.VciBaseUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/*** + * 缂栫爜瑙勫垯瀛楃闆嗘湇鍔� + * @author xj + * @date 2023-11-30 + */ +@Service +public class CodeRuleCharacterServiceImpl extends ServiceImpl<CodeRuleCharacterMapper, CodeRuleCharacter> implements ICodeRuleCharacterService { + + @Autowired + private CodeRuleCharacterMapper codeRuleCharacterMapper; + /*** + * 浣跨敤缂栫爜瑙勫垯oid鑾峰彇鏁版嵁 + * @param codeRuleId + * @param chartType + * @return + * @throws VciBaseException + */ + @Override + public List<Map<String, String>> getDataByRuleId(String codeRuleId,String chartType) throws VciBaseException { + List<Map<String,String>> charValueList=new ArrayList<>(); + CodeRuleCharacter codeRuleCharacter=codeRuleCharacterMapper.selectOne(Wrappers.<CodeRuleCharacter>query().lambda().eq(CodeRuleCharacter::getCodeRuleId,codeRuleId).eq(CodeRuleCharacter::getChartType,chartType)); + List<Character> characterList=codeRuleCharacter.getChartValue().chars().mapToObj(c -> (char) c).collect(Collectors.toList()); + for (int i = 0; i < characterList.size(); i += 15) { + final int startIndex = i; + final int endIndex = Math.min(i + 15, characterList.size()); + List<Character> subList = characterList.subList(startIndex, endIndex); + Map<String, String> chartMap=new HashMap<>(); + // 璋冪敤鎻掑叆鏁版嵁搴撶殑鏂规硶 + for (int j=1;j<subList.size()+1;j++){ + String characterValue=subList.get(j-1)==null?"":subList.get(j-1).toString(); + chartMap.put(String.valueOf(j),String.valueOf(characterValue)); + } + charValueList.add(chartMap); + } + return charValueList; + } + /*** + * 瀛楃闆嗘暟鎹繚瀛� + * @param codeRuleCharacterVO + * @return + * @throws VciBaseException + */ + @Override + public R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO) throws VciBaseException { + VciBaseUtil.alertNotNull(codeRuleCharacterVO.getCodeRuleId(),"缂栫爜瑙勫垯id",codeRuleCharacterVO.getChartType(),"瀛楃闆嗙被鍨�"); + CodeRuleCharacter codeRuleCharacter=codeRuleCharacterMapper.selectOne(Wrappers.<CodeRuleCharacter>query().lambda().eq(CodeRuleCharacter::getCodeRuleId,codeRuleCharacterVO.getCodeRuleId()).eq(CodeRuleCharacter::getChartType,codeRuleCharacterVO.getChartType())); + if(codeRuleCharacter!=null&& StringUtils.isNotBlank(codeRuleCharacter.getOid())) { + List<Character> oldCharacterList = StringUtils.isBlank(codeRuleCharacter.getChartValue())?new ArrayList<>():codeRuleCharacter.getChartValue().chars().mapToObj(c -> (char) c).collect(Collectors.toList()); + List<Character> newCharacterList = StringUtils.isBlank(codeRuleCharacterVO.getChartValue())?new ArrayList<>():codeRuleCharacterVO.getChartValue().chars().mapToObj(c -> (char) c).collect(Collectors.toList()); + List<Character> intersectList = intersect(oldCharacterList, newCharacterList); + if (intersectList.size() > 0) { + String ss = Joiner.on(",").join(intersectList); + throw new VciBaseException("绯荤粺涓瓨鍦ㄧ浉搴旂殑瀛楃:銆�" + ss + "銆�"); + } + List<Character> allCharacterList = union(oldCharacterList, newCharacterList); + String str = allCharacterList.stream().map(integer -> Func.isNotEmpty(integer)?integer.toString():"").collect(Collectors.joining()); + codeRuleCharacter.setChartValue(str); + codeRuleCharacterMapper.updateById(codeRuleCharacter); + }else{ + codeRuleCharacter=new CodeRuleCharacter(); + DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeRuleCharacter,"character"); + codeRuleCharacter.setCodeRuleId(codeRuleCharacterVO.getCodeRuleId()); + codeRuleCharacter.setChartType(codeRuleCharacterVO.getChartType()); + codeRuleCharacter.setChartValue(codeRuleCharacterVO.getChartValue()); + codeRuleCharacterMapper.insert(codeRuleCharacter); + } + return R.status(true); + } + /** + * 浜ら泦 + * @param list1 + * @param list2 + * @return + */ + private static List<Character> intersect(List<Character> list1, List<Character> list2) { + List<Character> intersect = list1.stream().filter(item -> list2.contains(item)).collect(Collectors.toList()); + return intersect; + } + + /** + * 骞堕泦锛堝幓閲嶏級 + * @param list1 + * @param list2 + * @return + */ + private static List<Character> union(List<Character> list1, List<Character> list2) { + list1.addAll(list2); + return list1.stream().distinct().collect(Collectors.toList()); + } + +} diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java index 749bcb2..2dd56b5 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java @@ -1,5 +1,6 @@ package com.vci.ubcs.code.service.impl; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -42,6 +43,7 @@ import com.vci.ubcs.starter.revision.model.TreeWrapperOptions; import com.vci.ubcs.starter.revision.service.RevisionModelUtil; import com.vci.ubcs.starter.util.MdmBtmTypeConstant; +import com.vci.ubcs.starter.util.SaveLogUtil; import com.vci.ubcs.starter.util.UBCSSqlKeyword; import com.vci.ubcs.starter.web.constant.QueryOptionConstant; import com.vci.ubcs.starter.web.constant.RegExpConstant; @@ -62,12 +64,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.cache.utils.CacheUtil; +import org.springblade.core.log.annotation.OperateLog; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringPool; +import org.springblade.core.tool.utils.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.Cache; @@ -346,8 +350,15 @@ */ @Autowired private IMDMIFlowAttrClient imdmiFlowAttrClient; -// @Autowired -// private CodeOsbtmtypeMapper codeOsbtmtypeMapper;---- + + // @Autowired + // private CodeOsbtmtypeMapper codeOsbtmtypeMapper; + + /** + * 鏃ュ織淇濆瓨宸ュ叿绫� + */ + @Autowired + private SaveLogUtil saveLogUtil; /** @@ -410,39 +421,52 @@ @Transactional @Override public void changeStatus(BaseModelDTO baseModelDTO) { - VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��"); - List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid()); - List<BaseModel> baseModels = new ArrayList<>(); - baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid()); - if (baseModels.size() == 0) { - throw new VciBaseException("鏈煡璇㈠埌鐩稿叧鏁版嵁銆�"); - } - //杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈� - QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>(); - allCodeWrapper.eq("createcodebtm", baseModelDTO.getBtmname()); - allCodeWrapper.in("createcodeoid", oids); - List<CodeAllCode> codeCbos = codeAllCodeService.selectByWrapper(allCodeWrapper);// 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄� - if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) { - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(baseModelDTO.getBtmname())); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } - // 鐩存帴鍒犻櫎锛屼笉缁欑姸鎬� - commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid())); - // commonsMapper.updateByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid()),CodeDefaultLC.TASK_BACK.getValue()); - } else { - for (BaseModel baseModel : baseModels) { - baseModel.setLcStatus(baseModelDTO.getLcStatus()); - } - R r = updateBatchByBaseModel(baseModelDTO.getBtmname(), baseModels); - if(!r.isSuccess()){ - throw new VciBaseException("鏇存柊鏁版嵁鍑洪敊锛岄噸璇曪紒"+r.getMsg()); + try { + VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��"); + List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid()); + List<BaseModel> baseModels = new ArrayList<>(); + baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid()); + if (baseModels.size() == 0) { + throw new VciBaseException("鏈煡璇㈠埌鐩稿叧鏁版嵁銆�"); } + //杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈� + QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>(); + allCodeWrapper.eq("createcodebtm", baseModelDTO.getBtmname()); + allCodeWrapper.in("createcodeoid", oids); + List<CodeAllCode> codeCbos = codeAllCodeService.selectByWrapper(allCodeWrapper);// 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄� + if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) { + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(baseModelDTO.getBtmname())); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + // 鐩存帴鍒犻櫎锛屼笉缁欑姸鎬� + commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid())); + // commonsMapper.updateByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid()),CodeDefaultLC.TASK_BACK.getValue()); + } else { + for (BaseModel baseModel : baseModels) { + baseModel.setLcStatus(baseModelDTO.getLcStatus()); + } + R r = updateBatchByBaseModel(baseModelDTO.getBtmname(), baseModels); + if(!r.isSuccess()){ + throw new VciBaseException("鏇存柊鏁版嵁鍑洪敊锛岄噸璇曪紒"+r.getMsg()); + } + } + for (CodeAllCode codeCbo : codeCbos) { + codeCbo.setLcStatus(baseModelDTO.getLcStatus()); + } + codeAllCodeService.updateBatchById(codeCbos); + + //璁板綍鏃ュ織淇℃伅 + saveLogUtil.operateLog( + CodeDefaultLC.getTextByValue(baseModelDTO.getLcStatus()), + false, + JSON.toJSONString(baseModels) + ); + }catch (Exception e){ + // 鎻掑叆鏇存敼鏃ュ織璁板綍 + saveLogUtil.operateLog(CodeDefaultLC.getTextByValue(baseModelDTO.getLcStatus()),true,e.getMessage()); + throw e; } - for (CodeAllCode codeCbo : codeCbos) { - codeCbo.setLcStatus(baseModelDTO.getLcStatus()); - } - codeAllCodeService.updateBatchById(codeCbos); } /** @@ -2705,6 +2729,7 @@ cbo.setLastModifyTime(new Date()); cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); R r = updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), Collections.singletonList(cbo)); + if(!r.isSuccess()){ throw new ServiceException(r.getMsg()); } @@ -3079,11 +3104,18 @@ oldCbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); oldCbo.setLastModifyTime(new Date()); try { + // 淇敼鐗堟鍙� updateBatchByBaseModel(oldCbo.getBtmname(), Collections.singletonList(oldCbo)); + // 鎻掑叆鏂扮殑鏁版嵁 insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo)); - } catch (Exception vciError) { - throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); - } + // 璁板綍鏁版嵁鏇存敼鏃ュ織 + saveLogUtil.operateLog("鏁版嵁鏇存敼",false, StringUtil.format("{}\n淇敼涓�:\n{}",JSON.toJSONString(Collections.singletonList(oldCbo)),JSON.toJSONString(Collections.singletonList(cbo)))); + } catch (Exception vciError) { + // 璁板綍鏁版嵁鏇存敼鎶ラ敊鏃剁殑鏃ュ織 + saveLogUtil.operateLog("鏁版嵁鏇存敼",true,vciError.getMessage()); + throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); + } + batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java index 87cfaee..371139a 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java @@ -1,5 +1,6 @@ package com.vci.ubcs.code.service.impl; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -37,6 +38,7 @@ import com.vci.ubcs.starter.revision.model.BaseModel; import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; import com.vci.ubcs.starter.util.LocalFileUtil; +import com.vci.ubcs.starter.util.SaveLogUtil; import com.vci.ubcs.starter.web.constant.QueryOptionConstant; import com.vci.ubcs.starter.web.enumpck.BooleanEnum; import com.vci.ubcs.starter.web.enumpck.UserSecretEnum; @@ -56,6 +58,7 @@ import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; +import org.springblade.core.tool.utils.StringUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -72,6 +75,7 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import static com.alibaba.druid.util.FnvHash.Constants.LIMIT; @@ -175,6 +179,11 @@ */ @Resource private IWebSecretClient secretService; + /** + * 鏃ュ織淇濆瓨宸ュ叿绫� + */ + @Autowired + private SaveLogUtil saveLogUtil; /** * 瀵煎嚭鐨勫崄涓囨潯 @@ -538,7 +547,7 @@ * @return 鏈夐敊璇俊鎭殑excel鐨勬枃浠� */ @Override - public CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file) { + public CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file) throws Exception { VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�"); ReadExcelOption reo = new ReadExcelOption(); reo.setReadAllSheet(true); @@ -810,322 +819,331 @@ */ @Override public CodeImProtRusultVO batchImportHistoryData(String codeClassifyOid, String classifyAttr,File file) throws Throwable{ - VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�"); - ReadExcelOption reo = new ReadExcelOption(); - reo.setReadAllSheet(true); - List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo); - if (sheetDataSetList.size() > LIMIT + 1) { - throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�"); - } - Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>(); - //鐩镐技椤圭洰鏌ラ噸 - String uuid=VciBaseUtil.getPk(); - boolean isCreateUUid=false; - boolean isExport=false; - //long start = System.currentTimeMillis(); - for(int i=0;i<sheetDataSetList.size()-1;i++) { - if (CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(i).getRowData()) - || sheetDataSetList.get(i).getRowData().size() < 1) { - continue; + try { + VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�"); + ReadExcelOption reo = new ReadExcelOption(); + reo.setReadAllSheet(true); + List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo); + if (sheetDataSetList.size() > LIMIT + 1) { + throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�"); } - // 鍗曟瀵煎叆鏁伴噺闄愬埗 - if(sheetDataSetList.get(i).getRowData().size() > IMPORT_DATA_LIMIT){ - throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�"+IMPORT_DATA_LIMIT+"鏉$殑鏁版嵁"); - } - //鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜 - //----閫昏緫鍐呭---- - //1. 鍒嗙被鐨勮矾寰勫彲浠ュ湪椤甸潰涓婇�夋嫨鏄垎绫荤紪鍙疯繕鏄垎绫荤殑鍚嶇О - //2. 鍒嗙被鐨勮矾寰勶紝蹇呴』鏄綋鍓嶅鍏ラ�夋嫨鐨勫垎绫荤殑鑺傜偣锛屼互鍙婂叾涓嬬骇鑺傜偣 - //3. 閫氳繃鏁版嵁瑕佸鍏ョ殑鍒嗙被鍘绘煡鎵惧搴旂殑缂栫爜瑙勫垯 - //4. 鏁版嵁瀛樺偍鍜屾壒閲忕敵璇蜂竴鏍凤紝 - //5. 闇�瑕佸崟鐙鐞嗕紒涓氱紪鐮佺殑鍐呭锛� - // 5.1 浼佷笟缂栫爜鍦ㄥ綋鍓峞xcel閲屼笉鑳介噸澶� - // 5.2 浼佷笟缂栫爜鍦ㄧ郴缁熶腑涓嶈兘閲嶅锛堝彲浠ユ槸宸茬粡鍥炴敹鐨勶級 - // 5.3 浼佷笟缂栫爜鐨勯暱搴︼紝鍜岀紪鐮佽鍒欑殑闀垮害瑕佸搴斾笂 - // 5.4 鑾峰彇娴佹按鐮佹鐨勫�硷紝鍘婚櫎濉厖鐨勫瓧绗︼紝鐪嬫祦姘村彿鏄灏戯紝鐒跺悗灏嗘祦姘村彿鍜岀幇鍦ㄧ殑鏈�澶ф祦姘村彿鍒ゆ柇锛屽皬浜庡氨鐩存帴褰曞叆锛屽ぇ浜庡垯淇敼鏈�澶ф祦姘村彿 - // 5.5 瀛樺偍浼佷笟缂栫爜鍒癮llcode涓� - //鏌ヨ鍒嗙被鍜屾ā鏉� + Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>(); + //鐩镐技椤圭洰鏌ラ噸 + String uuid=VciBaseUtil.getPk(); + boolean isCreateUUid=false; + boolean isExport=false; + //long start = System.currentTimeMillis(); + // 璁板綍瀵煎叆鎴愬姛鐨勬�绘暟 + List<Integer> importCount = new ArrayList<>(); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); - - //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬� - SheetDataSet dataSet = sheetDataSetList.get(i); - List<SheetRowData> rowDataList = dataSet.getRowData(); - - //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰� - CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO(); - /** if (!templateService.checkChildHasSameTemplate(classifyFullInfo.getCurrentClassifyVO().getOid())) { - throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�"); - }***/ - //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌� - //鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇 - List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(codeClassifyOid, true, classifyAttr, true); - Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t)); - List<String> titleRowData = dataSet.getColName(); - Map<String, String> errorMap = new ConcurrentHashMap<>(); - pathMap.put("#current#",classifyFullInfo.getCurrentClassifyVO()); - - try { - List<CodeClassifyTemplateVO> templateVOList= checkSamesTemplate(titleRowData,sheetDataSetList,i,pathMap,errorMap); - templateVO= templateVOList.get(0); - }catch (Throwable e){ - throw new VciBaseException(e.getMessage()); - } - - List<SheetRowData> needowDataList = rowDataList.stream().filter(cbo -> { - String rowIndex = cbo.getRowIndex(); - return !errorMap.containsKey(rowIndex); - }).collect(Collectors.toList()); - - //checkTemplateSync(sheetDataSetList, templateVO,i); - //杩欓噷涓嶉櫎鍘婚粯璁ょ殑灞炴�� - List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes(); - Map<Integer/**鍒楀彿**/, String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>(); - - Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId())); - String idFieldName = attrVOS.stream().filter(s -> VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).findFirst().orElseGet(() -> new CodeClassifyTemplateAttrVO()).getName(); - getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap); - //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹� - List<ClientBusinessObject> cboList = new ArrayList<>(); - String fullPath = getFullPath(classifyFullInfo); - //鎴戜滑闇�瑕佽幏鍙栧埌鎵�鏈夌殑涓嬬骇鍒嗙被鐨刼id鐨勮矾寰勶紝鍥犱负鍚庨潰闇�瑕� - Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath); - excelToCbo(classifyFullInfo, fieldIndexMap, needowDataList, templateVO, cboList, fullPath, false); - - - Map<String/**涓婚敭**/, CodeClassifyVO> classifyVOMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); - classifyVOMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO()); - pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO()); - - //鍒ゆ柇缂栧彿鍦╡xcel閲屾湰韬氨閲嶅鐨� - Map<String, Long> idCountMap = cboList.stream().collect(Collectors.groupingBy(ClientBusinessObject::getId, Collectors.counting())); - List<String> repeatIdList = new ArrayList<>(); - idCountMap.forEach((id, count) -> { - if (count > 1) { - repeatIdList.add(id); + for(int i=0;i<sheetDataSetList.size()-1;i++) { + if (CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(i).getRowData()) + || sheetDataSetList.get(i).getRowData().size() < 1) { + continue; } - }); - if (!CollectionUtils.isEmpty(repeatIdList)) { - cboList.stream().filter(s -> repeatIdList.contains(s.getId())).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).forEach(rowIndex -> { - errorMap.put(rowIndex, "缂栧彿鍦ㄥ綋鍓峞xcel涓噸澶�;"); - }); - } - //鎴戜滑闇�瑕佸垽鏂繖浜涘垎绫荤殑妯℃澘鏄笉鏄竴鏍风殑锛屽彧闇�瑕佹牎楠岋紝涓嶇敤鑾峰彇 - //妫�鏌ュ垎绫荤殑璺緞 - checkClassifyPathInHistory(cboList, errorMap, pathMap, childOidPathMap); + // 鍗曟瀵煎叆鏁伴噺闄愬埗 + if(sheetDataSetList.get(i).getRowData().size() > IMPORT_DATA_LIMIT){ + throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�"+IMPORT_DATA_LIMIT+"鏉$殑鏁版嵁"); + } + //鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜 + //----閫昏緫鍐呭---- + //1. 鍒嗙被鐨勮矾寰勫彲浠ュ湪椤甸潰涓婇�夋嫨鏄垎绫荤紪鍙疯繕鏄垎绫荤殑鍚嶇О + //2. 鍒嗙被鐨勮矾寰勶紝蹇呴』鏄綋鍓嶅鍏ラ�夋嫨鐨勫垎绫荤殑鑺傜偣锛屼互鍙婂叾涓嬬骇鑺傜偣 + //3. 閫氳繃鏁版嵁瑕佸鍏ョ殑鍒嗙被鍘绘煡鎵惧搴旂殑缂栫爜瑙勫垯 + //4. 鏁版嵁瀛樺偍鍜屾壒閲忕敵璇蜂竴鏍凤紝 + //5. 闇�瑕佸崟鐙鐞嗕紒涓氱紪鐮佺殑鍐呭锛� + // 5.1 浼佷笟缂栫爜鍦ㄥ綋鍓峞xcel閲屼笉鑳介噸澶� + // 5.2 浼佷笟缂栫爜鍦ㄧ郴缁熶腑涓嶈兘閲嶅锛堝彲浠ユ槸宸茬粡鍥炴敹鐨勶級 + // 5.3 浼佷笟缂栫爜鐨勯暱搴︼紝鍜岀紪鐮佽鍒欑殑闀垮害瑕佸搴斾笂 + // 5.4 鑾峰彇娴佹按鐮佹鐨勫�硷紝鍘婚櫎濉厖鐨勫瓧绗︼紝鐪嬫祦姘村彿鏄灏戯紝鐒跺悗灏嗘祦姘村彿鍜岀幇鍦ㄧ殑鏈�澶ф祦姘村彿鍒ゆ柇锛屽皬浜庡氨鐩存帴褰曞叆锛屽ぇ浜庡垯淇敼鏈�澶ф祦姘村彿 + // 5.5 瀛樺偍浼佷笟缂栫爜鍒癮llcode涓� + //鏌ヨ鍒嗙被鍜屾ā鏉� - //妫�鏌ヨ鍒� - Map<String/**鍒嗙被涓婚敭**/, String/**瑙勫垯涓婚敭**/> ruleOidMap = new ConcurrentHashMap<String, String>(); - List<String> unExistRuleClassifyOidList = new CopyOnWriteArrayList<>(); - checkRuleOidInHistory(classifyVOMap, ruleOidMap, unExistRuleClassifyOidList); - //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓� + //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬� + SheetDataSet dataSet = sheetDataSetList.get(i); + List<SheetRowData> rowDataList = dataSet.getRowData(); - //鎴戜滑鏍规嵁鍑洪敊鐨勫垎绫荤殑涓婚敭锛屽幓鎵捐鍙� - if (!CollectionUtils.isEmpty(unExistRuleClassifyOidList)) { - cboList.stream().forEach(cbo -> { - if (unExistRuleClassifyOidList.contains(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD))) { - String row_index = cbo.getAttributeValue(IMPORT_ROW_INDEX); - errorMap.put(row_index, errorMap.getOrDefault(row_index, "") + ";鏍规嵁鍒嗙被璺緞瀵瑰簲鐨勫垎绫伙紝娌℃湁璁剧疆缂栫爜瑙勫垯"); + //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰� + CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO(); + /** if (!templateService.checkChildHasSameTemplate(classifyFullInfo.getCurrentClassifyVO().getOid())) { + throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�"); + }***/ + //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌� + //鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇 + List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(codeClassifyOid, true, classifyAttr, true); + Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t)); + List<String> titleRowData = dataSet.getColName(); + Map<String, String> errorMap = new ConcurrentHashMap<>(); + pathMap.put("#current#",classifyFullInfo.getCurrentClassifyVO()); + + try { + List<CodeClassifyTemplateVO> templateVOList= checkSamesTemplate(titleRowData,sheetDataSetList,i,pathMap,errorMap); + templateVO= templateVOList.get(0); + }catch (Throwable e){ + throw new VciBaseException(e.getMessage()); + } + + List<SheetRowData> needowDataList = rowDataList.stream().filter(cbo -> { + String rowIndex = cbo.getRowIndex(); + return !errorMap.containsKey(rowIndex); + }).collect(Collectors.toList()); + + //checkTemplateSync(sheetDataSetList, templateVO,i); + //杩欓噷涓嶉櫎鍘婚粯璁ょ殑灞炴�� + List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes(); + Map<Integer/**鍒楀彿**/, String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>(); + + Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId())); + String idFieldName = attrVOS.stream().filter(s -> VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).findFirst().orElseGet(() -> new CodeClassifyTemplateAttrVO()).getName(); + getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap); + //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹� + List<ClientBusinessObject> cboList = new ArrayList<>(); + String fullPath = getFullPath(classifyFullInfo); + //鎴戜滑闇�瑕佽幏鍙栧埌鎵�鏈夌殑涓嬬骇鍒嗙被鐨刼id鐨勮矾寰勶紝鍥犱负鍚庨潰闇�瑕� + Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath); + excelToCbo(classifyFullInfo, fieldIndexMap, needowDataList, templateVO, cboList, fullPath, false); + + + Map<String/**涓婚敭**/, CodeClassifyVO> classifyVOMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); + classifyVOMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO()); + pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO()); + + //鍒ゆ柇缂栧彿鍦╡xcel閲屾湰韬氨閲嶅鐨� + Map<String, Long> idCountMap = cboList.stream().collect(Collectors.groupingBy(ClientBusinessObject::getId, Collectors.counting())); + List<String> repeatIdList = new ArrayList<>(); + idCountMap.forEach((id, count) -> { + if (count > 1) { + repeatIdList.add(id); } }); - } - - //鍒ゆ柇蹇呰緭椤� - batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap); - - //浼樺厛鏍¢獙缂栫爜鏄惁瀛樺湪 - batchCheckIdExistOnOrder(templateVO, cboList, errorMap); - - //boolean - reSwitchBooleanAttrOnOrder(attrVOS, cboList); - - // 鏋氫妇鐨勫唴瀹归渶瑕佹牴鎹悕绉拌浆鎹负鏋氫妇鐨勫�� - batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap); - - batchSwitchReferAttrOnOrder(attrVOS, cboList, errorMap); - - //6.澶勭悊鍒嗙被娉ㄥ叆 - batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo,true); - - //璁剧疆榛樿鍊� - batchSwitchAttrDefault(attrVOS, cboList); - - //7.澶勭悊缁勫悎瑙勫垯 - batchSwitchComponentAttrOnOrder(attrVOS, cboList); - - //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); - Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); - Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); - if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) { - selfRepeatRowIndexList.stream().forEach(rowIndex -> { - errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍦ㄥ綋鍓峞xcel鏂囦欢涓叧閿睘鎬ч噸澶�"); - }); - } - if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) { - keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> { - errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex, "")); - }); - } - //4.鏍¢獙瑙勫垯 - batchCheckVerifyOnOrder(attrVOS, cboList, errorMap); - - //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss - batchSwitchDateAttrOnOrder(attrVOS, cboList, errorMap); - if (CollectionUtils.isEmpty(ruleOidMap.values())) { - throw new VciBaseException("瀵煎叆鐨勬暟鎹墍閫夋嫨鐨勫垎绫婚兘娌℃湁璁剧疆缂栫爜瑙勫垯"); - } - // TODO: 璇ョ敤oid鏌ヨ瑙勫垯鐨勶紝鍒敤id - Map<String, CodeRuleVO> ruleVOMap = ruleService.listCodeRuleByOids(ruleOidMap.values()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); - //鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭� - Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>(); - checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap); - ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> { - List<String> rowIndexList = ruleRowIndexMap.get(ruleOid); - List<ClientBusinessObject> thisCbos = cboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList()); - //鎴戜滑闇�瑕佸厛鏌ヨ涓�涓嬶紝鍐呭鏄惁宸茬粡瀛樺湪 - if(!CollectionUtils.isEmpty(thisCbos)){ - List<String> existIds = new ArrayList<>(); - VciBaseUtil.switchCollectionForOracleIn(thisCbos).stream().forEach(cbos -> { - List<CodeAllCode> codeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCodeRuleOid, ruleOid) - .notIn(CodeAllCode::getId,cbos.stream().map(s -> s.getId()).collect(Collectors.toSet()).toArray(new String[0])) - .notIn(CodeAllCode::getLcStatus,CodeAllCodeLC.TASK_BACK.getValue() + "','" + CodeAllCodeLC.OBSOLETED.getValue()) - ); - existIds.addAll(Optional.ofNullable(codeAllCodeList).orElseGet(() -> new ArrayList<>()).stream().map(s -> { - String id = s.getId(); - if (StringUtils.isBlank(id)) { - id = s.getId(); - } - return id; - }).collect(Collectors.toList())); + if (!CollectionUtils.isEmpty(repeatIdList)) { + cboList.stream().filter(s -> repeatIdList.contains(s.getId())).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).forEach(rowIndex -> { + errorMap.put(rowIndex, "缂栧彿鍦ㄥ綋鍓峞xcel涓噸澶�;"); }); - List<String> existIdCbos = thisCbos.stream().filter(s -> { - String id = s.getId(); - if (StringUtils.isBlank(id)) { - id = s.getAttributeValue("id"); + } + //鎴戜滑闇�瑕佸垽鏂繖浜涘垎绫荤殑妯℃澘鏄笉鏄竴鏍风殑锛屽彧闇�瑕佹牎楠岋紝涓嶇敤鑾峰彇 + //妫�鏌ュ垎绫荤殑璺緞 + checkClassifyPathInHistory(cboList, errorMap, pathMap, childOidPathMap); + + //妫�鏌ヨ鍒� + Map<String/**鍒嗙被涓婚敭**/, String/**瑙勫垯涓婚敭**/> ruleOidMap = new ConcurrentHashMap<String, String>(); + List<String> unExistRuleClassifyOidList = new CopyOnWriteArrayList<>(); + checkRuleOidInHistory(classifyVOMap, ruleOidMap, unExistRuleClassifyOidList); + //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓� + + //鎴戜滑鏍规嵁鍑洪敊鐨勫垎绫荤殑涓婚敭锛屽幓鎵捐鍙� + if (!CollectionUtils.isEmpty(unExistRuleClassifyOidList)) { + cboList.stream().forEach(cbo -> { + if (unExistRuleClassifyOidList.contains(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD))) { + String row_index = cbo.getAttributeValue(IMPORT_ROW_INDEX); + errorMap.put(row_index, errorMap.getOrDefault(row_index, "") + ";鏍规嵁鍒嗙被璺緞瀵瑰簲鐨勫垎绫伙紝娌℃湁璁剧疆缂栫爜瑙勫垯"); } - return existIds.contains(id); - }).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(existIdCbos)) { - thisCbos = thisCbos.stream().filter(s -> { + }); + } + + //鍒ゆ柇蹇呰緭椤� + batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap); + + //浼樺厛鏍¢獙缂栫爜鏄惁瀛樺湪 + batchCheckIdExistOnOrder(templateVO, cboList, errorMap); + + //boolean + reSwitchBooleanAttrOnOrder(attrVOS, cboList); + + // 鏋氫妇鐨勫唴瀹归渶瑕佹牴鎹悕绉拌浆鎹负鏋氫妇鐨勫�� + batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap); + + batchSwitchReferAttrOnOrder(attrVOS, cboList, errorMap); + + //6.澶勭悊鍒嗙被娉ㄥ叆 + batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo,true); + + //璁剧疆榛樿鍊� + batchSwitchAttrDefault(attrVOS, cboList); + + //7.澶勭悊缁勫悎瑙勫垯 + batchSwitchComponentAttrOnOrder(attrVOS, cboList); + + //3.鍒ゆ柇鍏抽敭灞炴�� + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); + Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); + Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); + if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) { + selfRepeatRowIndexList.stream().forEach(rowIndex -> { + errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍦ㄥ綋鍓峞xcel鏂囦欢涓叧閿睘鎬ч噸澶�"); + }); + } + if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) { + keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> { + errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex, "")); + }); + } + //4.鏍¢獙瑙勫垯 + batchCheckVerifyOnOrder(attrVOS, cboList, errorMap); + + //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss + batchSwitchDateAttrOnOrder(attrVOS, cboList, errorMap); + if (CollectionUtils.isEmpty(ruleOidMap.values())) { + throw new VciBaseException("瀵煎叆鐨勬暟鎹墍閫夋嫨鐨勫垎绫婚兘娌℃湁璁剧疆缂栫爜瑙勫垯"); + } + // TODO: 璇ョ敤oid鏌ヨ瑙勫垯鐨勶紝鍒敤id + Map<String, CodeRuleVO> ruleVOMap = ruleService.listCodeRuleByOids(ruleOidMap.values()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); + //鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭� + Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>(); + checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap); + ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> { + List<String> rowIndexList = ruleRowIndexMap.get(ruleOid); + List<ClientBusinessObject> thisCbos = cboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList()); + //鎴戜滑闇�瑕佸厛鏌ヨ涓�涓嬶紝鍐呭鏄惁宸茬粡瀛樺湪 + if(!CollectionUtils.isEmpty(thisCbos)){ + List<String> existIds = new ArrayList<>(); + VciBaseUtil.switchCollectionForOracleIn(thisCbos).stream().forEach(cbos -> { + List<CodeAllCode> codeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCodeRuleOid, ruleOid) + .notIn(CodeAllCode::getId,cbos.stream().map(s -> s.getId()).collect(Collectors.toSet()).toArray(new String[0])) + .notIn(CodeAllCode::getLcStatus,CodeAllCodeLC.TASK_BACK.getValue() + "','" + CodeAllCodeLC.OBSOLETED.getValue()) + ); + existIds.addAll(Optional.ofNullable(codeAllCodeList).orElseGet(() -> new ArrayList<>()).stream().map(s -> { + String id = s.getId(); + if (StringUtils.isBlank(id)) { + id = s.getId(); + } + return id; + }).collect(Collectors.toList())); + }); + List<String> existIdCbos = thisCbos.stream().filter(s -> { String id = s.getId(); if (StringUtils.isBlank(id)) { id = s.getAttributeValue("id"); } - return !existIdCbos.contains(id); - }).collect(Collectors.toList()); - existIdCbos.stream().forEach(rowIndex -> { - errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";銆�" + idFieldName + "銆戝湪绯荤粺涓凡缁忚鍗犵敤"); - }); - } - } - }); - - Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t)); - if (errorMap.size() > 0) { - isExport=true; - createRedisDatas(uuid + "-error", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap, false); - } - createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, templateVO); - List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> { - String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); - return !errorMap.containsKey(rowIndex); - }).collect(Collectors.toList()); - //鐩镐技鏍¢獙 - Map<String, String> resembleMap = new HashMap<>(); - List<DataResembleVO> dataResembleVOS = new ArrayList<>(); - String btmtypeid = classifyFullInfo.getTopClassifyVO().getBtmTypeId(); - bathcResembleQuery(templateVO.getCodeclassifyoid(), templateVO, needSaveCboList, resembleMap, btmtypeid, dataResembleVOS); - if (resembleMap.size() > 0) { - if (!CollectionUtils.isEmpty(dataResembleVOS)) { - bladeRedis.set(uuid + "-resemble-data", dataResembleVOS); - createRedisDatas(uuid + "-resemble", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false); - } - } - //鐢熸垚class缂撳瓨 - Map<String, String> rowIndexClsOidMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t.getAttributeValue(CODE_CLASSIFY_OID_FIELD))); - createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,true); - //鑾峰彇缂栫爜锛屾煡璇㈠湪绯荤粺涓槸鍚﹁鍏朵粬鐨勫紩鐢ㄤ簡 - //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨� - Map<String, String> newErrorMap = new HashMap<>(); - newErrorMap.putAll(resembleMap); - newErrorMap.putAll(errorMap); - //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒� - needSaveCboList = cboList.stream().filter(cbo -> { - String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); - return !newErrorMap.containsKey(rowIndex); - }).collect(Collectors.toList()); - if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){ - isCreateUUid=true; - } - - List<String> needRowIndexList = needSaveCboList.stream().filter(s -> errorMap.containsKey(s.getAttributeValue(IMPORT_ROW_INDEX))).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toList()); - if (isExport||newErrorMap.size() > 0) { - createRedisDatas(uuid + "-ok", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap, true); - } else { - List<BaseModel> dataCBOIdList=new ArrayList<>(); - //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); - List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList; - CodeClassifyTemplateVO finalTemplateVO = templateVO; - ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> { - //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); - List<String> rowIndexList = ruleRowIndexMap.get(ruleOid); - List<ClientBusinessObject> thisCbos = finalNeedSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList()); - List<BaseModel> dataCBOList=new CopyOnWriteArrayList<>(); - thisCbos.stream().forEach(clientBusinessObject -> { - BaseModel baseModel=new BaseModel(); - BeanUtil.convert(clientBusinessObject,baseModel); - //baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject)); - dataCBOList.add(baseModel); - dataCBOIdList.add(baseModel); - }); - - if (!CollectionUtils.isEmpty(thisCbos)) { - try { - // TODO 澶氱嚎绋嬫祦闂 - productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList); - } catch (Throwable e) { - log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e); - thisCbos.stream().forEach(cbo -> { - String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); - errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage()); + return existIds.contains(id); + }).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(existIdCbos)) { + thisCbos = thisCbos.stream().filter(s -> { + String id = s.getId(); + if (StringUtils.isBlank(id)) { + id = s.getAttributeValue("id"); + } + return !existIdCbos.contains(id); + }).collect(Collectors.toList()); + existIdCbos.stream().forEach(rowIndex -> { + errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";銆�" + idFieldName + "銆戝湪绯荤粺涓凡缁忚鍗犵敤"); }); - } } }); - if (errorMap.size() > 0) { - isExport = true; - } - createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, finalTemplateVO); - engineService.batchSaveSelectChar(templateVO, dataCBOIdList); - } - } - //long end = System.currentTimeMillis(); - //log.info("=============for鎵ц鏃堕棿================="+String.valueOf((end-start)/1000)); - String excelFileName=""; - if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) { - excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls"; - WriteExcelOption eo = new WriteExcelOption(); - shetNameMap.forEach((shetName, errorDataList) -> { - eo.addSheetDataList(shetName, errorDataList); - }); - try { - new File(excelFileName).createNewFile(); - } catch (IOException e) { - throw new VciBaseException(LangBaseUtil.getErrorMsg(e)); - } - ExcelUtil.writeDataToFile(excelFileName, eo); - } - CodeImProtRusultVO codeImProtRusultVO=new CodeImProtRusultVO(); - if(StringUtils.isNotBlank(excelFileName)) { - codeImProtRusultVO.setFilePath(excelFileName); - codeImProtRusultVO.setFileOid(""); - } - if(isCreateUUid){ - codeImProtRusultVO.setRedisUuid(uuid); - } - return codeImProtRusultVO; + Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t)); + if (errorMap.size() > 0) { + isExport=true; + createRedisDatas(uuid + "-error", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap, false); + } + createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, templateVO); + List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> { + String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); + return !errorMap.containsKey(rowIndex); + }).collect(Collectors.toList()); + //鐩镐技鏍¢獙 + Map<String, String> resembleMap = new HashMap<>(); + List<DataResembleVO> dataResembleVOS = new ArrayList<>(); + String btmtypeid = classifyFullInfo.getTopClassifyVO().getBtmTypeId(); + bathcResembleQuery(templateVO.getCodeclassifyoid(), templateVO, needSaveCboList, resembleMap, btmtypeid, dataResembleVOS); + if (resembleMap.size() > 0) { + if (!CollectionUtils.isEmpty(dataResembleVOS)) { + bladeRedis.set(uuid + "-resemble-data", dataResembleVOS); + createRedisDatas(uuid + "-resemble", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false); + } + } + //鐢熸垚class缂撳瓨 + Map<String, String> rowIndexClsOidMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t.getAttributeValue(CODE_CLASSIFY_OID_FIELD))); + createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,true); + //鑾峰彇缂栫爜锛屾煡璇㈠湪绯荤粺涓槸鍚﹁鍏朵粬鐨勫紩鐢ㄤ簡 + //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨� + Map<String, String> newErrorMap = new HashMap<>(); + newErrorMap.putAll(resembleMap); + newErrorMap.putAll(errorMap); + //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒� + needSaveCboList = cboList.stream().filter(cbo -> { + String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); + return !newErrorMap.containsKey(rowIndex); + }).collect(Collectors.toList()); + if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){ + isCreateUUid=true; + } + + List<String> needRowIndexList = needSaveCboList.stream().filter(s -> errorMap.containsKey(s.getAttributeValue(IMPORT_ROW_INDEX))).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toList()); + if (isExport||newErrorMap.size() > 0) { + createRedisDatas(uuid + "-ok", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap, true); + } else { + List<BaseModel> dataCBOIdList=new ArrayList<>(); + //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); + List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList; + CodeClassifyTemplateVO finalTemplateVO = templateVO; + ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> { + //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); + List<String> rowIndexList = ruleRowIndexMap.get(ruleOid); + List<ClientBusinessObject> thisCbos = finalNeedSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList()); + List<BaseModel> dataCBOList=new CopyOnWriteArrayList<>(); + thisCbos.stream().forEach(clientBusinessObject -> { + BaseModel baseModel=new BaseModel(); + BeanUtil.convert(clientBusinessObject,baseModel); + //baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject)); + dataCBOList.add(baseModel); + dataCBOIdList.add(baseModel); + }); + + if (!CollectionUtils.isEmpty(thisCbos)) { + try { + // TODO 澶氱嚎绋嬫祦闂 + productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList); + importCount.add(dataCBOList.size()); + } catch (Throwable e) { + log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e); + thisCbos.stream().forEach(cbo -> { + String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); + errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage()); + }); + } + } + }); + if (errorMap.size() > 0) { + isExport = true; + } + createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, finalTemplateVO); + engineService.batchSaveSelectChar(templateVO, dataCBOIdList); + } + } + //long end = System.currentTimeMillis(); + //log.info("=============for鎵ц鏃堕棿================="+String.valueOf((end-start)/1000)); + String excelFileName=""; + if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) { + excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls"; + WriteExcelOption eo = new WriteExcelOption(); + shetNameMap.forEach((shetName, errorDataList) -> { + eo.addSheetDataList(shetName, errorDataList); + }); + try { + new File(excelFileName).createNewFile(); + } catch (IOException e) { + throw new VciBaseException(LangBaseUtil.getErrorMsg(e)); + } + ExcelUtil.writeDataToFile(excelFileName, eo); + } + CodeImProtRusultVO codeImProtRusultVO=new CodeImProtRusultVO(); + if(StringUtils.isNotBlank(excelFileName)) { + codeImProtRusultVO.setFilePath(excelFileName); + codeImProtRusultVO.setFileOid(""); + saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(shetNameMap)) ); + }else{ + saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",false, StringUtil.format("瀵煎叆鍒板垎绫粄}涓紝瀵煎叆鎴愬姛鎬绘暟涓猴細{}", JSON.toJSONString(classifyFullInfo),importCount.get(0))); + } + if(isCreateUUid){ + codeImProtRusultVO.setRedisUuid(uuid); + } + return codeImProtRusultVO; + }catch (Exception e){ + saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true,e.getMessage()); + throw e; + } } /*private void converBaseModels(List<ClientBusinessObject> clientBusinessObjects,List<BaseModel>dataCBOList){ @@ -1291,7 +1309,6 @@ } - /*** * 鎵归噺澶勭悊鐢宠鏁版嵁 * @param orderDTO @@ -1299,140 +1316,148 @@ * @param dataSet * @return */ - private String batchImportCodes(CodeOrderDTO orderDTO,CodeClassifyTemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType){ + private String batchImportCodes(CodeOrderDTO orderDTO,CodeClassifyTemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType) throws Exception { List<String> codeList=new ArrayList<>(); - CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); - //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇 - CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); - //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈� - engineService.checkSecValueOnOrder(ruleVO,orderDTO); - List<SheetRowData> rowDataList = dataSet.getRowData(); + String uuid = ""; + try { + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇 + CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); + //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈� + engineService.checkSecValueOnOrder(ruleVO,orderDTO); + List<SheetRowData> rowDataList = dataSet.getRowData(); - //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 - List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> - !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) - ).collect(Collectors.toList()); - Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>(); - List<String> titleRowData = dataSet.getColName(); - Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2)); - getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap); + //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆 + List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> + !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + ).collect(Collectors.toList()); + Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>(); + List<String> titleRowData = dataSet.getColName(); + Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2)); + getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap); - //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜� - List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT)) - && StringUtils.isBlank(s.getComponentRule()) && StringUtils.isBlank(s.getClassifyInvokeAttr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓 - ).collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(unExistAttrVOs)){ - throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪鍒楄〃涓病鏈夋壘鍒�"); - } - List<ClientBusinessObject> cboList = new ArrayList<>(); - String fullPath = getFullPath(classifyFullInfo); - excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,true); - - //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌� - //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓� - //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒� - batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap); - //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); - Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); - Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); - if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){ - selfRepeatRowIndexList.stream().forEach(rowIndex->{ - errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" ); - }); - } - if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){ - keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{ - errorMap.put(rowIndex,"鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"")); - }); - } - //鍒嗙被娉ㄥ叆 - batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false); - //boolean - reSwitchBooleanAttrOnOrder(attrVOS,cboList); - //4.鏍¢獙瑙勫垯 - batchCheckVerifyOnOrder(attrVOS, cboList,errorMap); - if(isEnumType) {//鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収 - //5.鏍¢獙鏋氫妇鏄惁姝g‘ - batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap); - //7.澶勭悊鍙傜収鐨勬儏鍐� - batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap); - } - //6.鏃堕棿鏍煎紡鐨勯獙璇� - //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss - batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap); - //鏈�鍚庡紕缁勫悎瑙勫垯 - batchSwitchComponentAttrOnOrder(attrVOS,cboList); - String uuid=VciBaseUtil.getPk(); - Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t)); - - if(errorMap.size()>0) { - createRedisDatas(uuid + "-error",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap,false); - } - boolean isCreateUUid=false; - List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> { - String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); - return !errorMap.containsKey(rowIndex); - }).collect(Collectors.toList()); - //鐩镐技鏍¢獙 - Map<String,String>resembleMap=new HashMap<>(); - List<DataResembleVO> dataResembleVOS=new ArrayList<>(); - String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmTypeId(); - bathcResembleQuery(orderDTO.getCodeClassifyOid(),templateVO,needSaveCboList,resembleMap,btmtypeid,dataResembleVOS); - if(resembleMap.size()>0) { - isCreateUUid=true; - if(!CollectionUtils.isEmpty(dataResembleVOS)) { - bladeRedis.set(uuid + "-resemble-data", dataResembleVOS); - createRedisDatas(uuid + "-resemble",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false); + //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜� + List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT)) + && StringUtils.isBlank(s.getComponentRule()) && StringUtils.isBlank(s.getClassifyInvokeAttr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓 + ).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(unExistAttrVOs)){ + throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪鍒楄〃涓病鏈夋壘鍒�"); } - } - //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨� - Map<String,String> newErrorMap=new HashMap<>(); - newErrorMap.putAll(resembleMap); - newErrorMap.putAll(errorMap); - needSaveCboList = cboList.stream().filter(cbo -> { - String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); - return !newErrorMap.containsKey(rowIndex); - }).collect(Collectors.toList()); - if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){ - isCreateUUid=true; - } - createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,false); - if(newErrorMap.size()>0) { - createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true); - }else { - uuid=""; + List<ClientBusinessObject> cboList = new ArrayList<>(); + String fullPath = getFullPath(classifyFullInfo); + excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,true); - //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒� + //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌� + //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓� + //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒� + batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap); + //3.鍒ゆ柇鍏抽敭灞炴�� + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); + Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); + Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); + if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){ + selfRepeatRowIndexList.stream().forEach(rowIndex->{ + errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" ); + }); + } + if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){ + keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{ + errorMap.put(rowIndex,"鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"")); + }); + } + //鍒嗙被娉ㄥ叆 + batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false); + //boolean + reSwitchBooleanAttrOnOrder(attrVOS,cboList); + //4.鏍¢獙瑙勫垯 + batchCheckVerifyOnOrder(attrVOS, cboList,errorMap); + if(isEnumType) {//鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収 + //5.鏍¢獙鏋氫妇鏄惁姝g‘ + batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap); + //7.澶勭悊鍙傜収鐨勬儏鍐� + batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap); + } + //6.鏃堕棿鏍煎紡鐨勯獙璇� + //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss + batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap); + //鏈�鍚庡紕缁勫悎瑙勫垯 + batchSwitchComponentAttrOnOrder(attrVOS,cboList); + uuid=VciBaseUtil.getPk(); + Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t)); + + if(errorMap.size()>0) { + createRedisDatas(uuid + "-error",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap,false); + } + boolean isCreateUUid=false; + List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> { + String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); + return !errorMap.containsKey(rowIndex); + }).collect(Collectors.toList()); + //鐩镐技鏍¢獙 + Map<String,String>resembleMap=new HashMap<>(); + List<DataResembleVO> dataResembleVOS=new ArrayList<>(); + String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmTypeId(); + bathcResembleQuery(orderDTO.getCodeClassifyOid(),templateVO,needSaveCboList,resembleMap,btmtypeid,dataResembleVOS); + if(resembleMap.size()>0) { + isCreateUUid=true; + if(!CollectionUtils.isEmpty(dataResembleVOS)) { + bladeRedis.set(uuid + "-resemble-data", dataResembleVOS); + createRedisDatas(uuid + "-resemble",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false); + } + } + //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨� + Map<String,String> newErrorMap=new HashMap<>(); + newErrorMap.putAll(resembleMap); + newErrorMap.putAll(errorMap); needSaveCboList = cboList.stream().filter(cbo -> { String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); return !newErrorMap.containsKey(rowIndex); }).collect(Collectors.toList()); + if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){ + isCreateUUid=true; + } + createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,false); + if(newErrorMap.size()>0) { + createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true); + }else { + uuid=""; - if (!CollectionUtils.isEmpty(needSaveCboList)) { - //9.鎴戜滑澶勭悊涓氬姟鏁版嵁 - //鐢熸垚缂栫爜鐨勫唴瀹� - List<String> dataCBOIdList=new ArrayList<>(); - List<BaseModel> dataCBOList=new ArrayList<>(); - cboList.stream().forEach(clientBusinessObject -> { - BaseModel baseModel=new BaseModel(); - BeanUtil.convert(clientBusinessObject,baseModel); - //baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject)); - dataCBOList.add(baseModel); - dataCBOIdList.add(baseModel.getOid()); - }); - try { - codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList); - //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰 - engineService.batchSaveSelectChar(templateVO, dataCBOList); - } catch (Exception e) { - e.printStackTrace(); - log.error("鎵逛簡鐢宠鏃跺け璐�"); + //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒� + needSaveCboList = cboList.stream().filter(cbo -> { + String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); + return !newErrorMap.containsKey(rowIndex); + }).collect(Collectors.toList()); + + if (!CollectionUtils.isEmpty(needSaveCboList)) { + //9.鎴戜滑澶勭悊涓氬姟鏁版嵁 + //鐢熸垚缂栫爜鐨勫唴瀹� + List<String> dataCBOIdList=new ArrayList<>(); + List<BaseModel> dataCBOList=new ArrayList<>(); + cboList.stream().forEach(clientBusinessObject -> { + BaseModel baseModel=new BaseModel(); + BeanUtil.convert(clientBusinessObject,baseModel); + //baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject)); + dataCBOList.add(baseModel); + dataCBOIdList.add(baseModel.getOid()); + }); + try { + codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList); + //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰 + engineService.batchSaveSelectChar(templateVO, dataCBOList); + } catch (Exception e) { + e.printStackTrace(); + log.error("鎵归噺鐢宠鏃跺け璐�"); + throw e; + } } } - } - if(!isCreateUUid){ - return uuid=""; + if(!isCreateUUid){ + return uuid=""; + } + saveLogUtil.operateLog("鎵归噺鐢宠缂栫爜",false, StringUtil.format("鎵归噺瀵煎叆鐢宠鎴愬姛鍏眥}鏉℃暟鎹紝鐢熸垚鐨勭爜鍊煎涓嬨�恵}銆�",codeList.size(),codeList)); + }catch (Exception e){ + saveLogUtil.operateLog("鎵归噺鐢宠缂栫爜",true,e.getMessage()); + throw e; } return uuid; } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java index 5220c0c..42fab2c 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java @@ -183,7 +183,7 @@ serialDb = killFillChar(subSecValue,secVO.getCodeFillSeparator(), OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType())); } - Double newSerialDb= CustomSerialEnum.getDoubleCustomSerialValue(secValue,secVO.getCustomCodeSerialType()); + Double newSerialDb= CustomSerialEnum.getDoubleCustomSerialValue(serialDb,secVO.getCustomCodeSerialType()); HashMap<String, String> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>()); Double maxValue=newSerialDb; if(thisUnitMaxMap.containsKey(secOid)){ diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeRuleCharacterWapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeRuleCharacterWapper.java new file mode 100644 index 0000000..70acd48 --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeRuleCharacterWapper.java @@ -0,0 +1,73 @@ +package com.vci.ubcs.code.wrapper; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.vci.ubcs.code.entity.CodeRuleCharacter; +import com.vci.ubcs.code.enumpack.CodeRuleCharacterEnum; +import com.vci.ubcs.code.vo.pagemodel.CodeRuleCharacterVO; +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.core.tool.utils.BeanUtil; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Objects; + +/** + * 缂栫爜瀛楃鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈� + * @author xj + * @date 2023-11-30 + */ +public class CodeRuleCharacterWapper extends BaseEntityWrapper<CodeRuleCharacter, CodeRuleCharacterVO> { + public static CodeRuleCharacterWapper build() { + return new CodeRuleCharacterWapper(); + } + @Override + public CodeRuleCharacterVO entityVO(CodeRuleCharacter entity) { + entity.setChartTypeText(CodeRuleCharacterEnum.getTextByValue(entity.getChartType())); + CodeRuleCharacterVO VO = Objects.requireNonNull(BeanUtil.copy(entity, CodeRuleCharacterVO.class)); + return VO; + } + + /*** + * 鏁扮粍瀵硅薄杞崲 + * @param entitys + * @return + */ + public List<CodeRuleCharacterVO> entityVOs(Collection<CodeRuleCharacter> entitys) { + if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();} + List<CodeRuleCharacterVO> vos=new ArrayList<>(); + if(!CollectionUtils.isEmpty(entitys)) { + entitys.stream().forEach(vo -> { + vos.add(entityVO(vo)); + }); + } + return vos; + } + + + /*** + * 鏁扮粍瀵硅薄杞崲 + * @param vos + * @return + */ + public List<CodeRuleCharacter> voentitys(Collection<CodeRuleCharacterVO> vos) { + if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();} + List<CodeRuleCharacter>entitys =new ArrayList<>(); + if(!CollectionUtils.isEmpty(vos)) { + vos.stream().forEach(vo -> { + entitys.add(voentity(vo)); + }); + } + return entitys; + } + + /*** + * 鏁扮粍瀵硅薄杞崲 + * @param vo + * @return + */ + public CodeRuleCharacter voentity( CodeRuleCharacterVO vo) { + CodeRuleCharacter entity = Objects.requireNonNull(BeanUtil.copy(vo, CodeRuleCharacter.class)); + return entity; + } +} diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeRuleCharacterMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeRuleCharacterMapper.xml new file mode 100644 index 0000000..014cd51 --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeRuleCharacterMapper.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.vci.ubcs.code.mapper.CodeRuleCharacterMapper"> + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="CodeResembleRuleResultMap" type="com.vci.ubcs.code.entity.CodeRuleCharacter"> + <id property="oid" column="OID"/> + <result property="btmname" column="BTMNAME"/> + <result property="revisionOid" column="REVISIONOID"/> + <result property="nameOid" column="NAMEOID"/> + <result property="lastR" column="LASTR"/> + <result property="firstR" column="FIRSTR"/> + <result property="lastV" column="LASTV"/> + <result property="firstV" column="FIRSTV"/> + <result property="creator" column="CREATOR"/> + <result property="createTime" column="CREATETIME"/> + <result property="lastModifier" column="LASTMODIFIER"/> + <result property="lastModifyTime" column="LASTMODIFYTIME"/> + <result property="revisionRule" column="REVISIONVALUE"/> + <result property="versionRule" column="VISIONRULE"/> + <result property="revisionValue" column="REVISIONRULE"/> + <result property="versionValue" column="VERSIONVALUE"/> + <result property="revisionSeq" column="REVISIONSEQ"/> + <result property="versionSeq" column="VERSIONSEQ"/> + <result property="lctid" column="LCTID"/> + <result property="lcStatus" column="LCSTATUS"/> + <result property="ts" column="TS"/> + <result property="id" column="ID"/> + <result property="name" column="NAME"/> + <result property="description" column="DESCRIPTION"/> + <result property="owner" column="OWNER"/> + <result property="copyFromVersion" column="COPYFROMVERSION"/> + <result property="codeRuleId" column="CODERULEID"/> + <result property="chartValue" column="CHARTVALUE"/> + <result property="chartType" column="CHARTTYPE"/> + </resultMap> +</mapper> diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml index 6d2babb..2f65641 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml @@ -98,19 +98,19 @@ </update > <select id="getNextRevision" resultType="map" > - select max(revisionSeq) + 1 revisionSeq, - max(RevisionValue) + 1 revisionVal, - max(VersionSeq) + 1 VersionSeq, - max(VersionValue) + 1 VersionVal + select max(revisionSeq) + 1 REVISIONSEQ, + max(RevisionValue) + 1 REVISIONVAL, + max(VersionSeq) + 1 VERSIONSEQ, + max(VersionValue) + 1 VERSIONVAL from ${tableName} where nameoid = #{nameoid} </select> <select id="getCurrentRevision" resultType="map" > - select max(revisionSeq) revisionSeq, - max(RevisionValue) revisionVal, - max(VersionSeq) VersionSeq, - max(VersionValue) VersionVal + select max(revisionSeq) REVISIONSEQ, + max(RevisionValue) REVISIONVAL, + max(VersionSeq) VERSIONSEQ, + max(VersionValue) VERSIONVAL from ${tableName} where nameoid = #{nameoid} </select> diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RoleController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RoleController.java index 6709c7e..508ea8d 100644 --- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RoleController.java +++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RoleController.java @@ -46,6 +46,9 @@ import javax.validation.Valid; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.stream.Collector; +import java.util.stream.Collectors; import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE; @@ -128,7 +131,6 @@ return R.status(roleService.submit(role)); } - /** * 鍒犻櫎 */ @@ -150,7 +152,16 @@ public R grant(@RequestBody GrantVO grantVO) { CacheUtil.clear(SYS_CACHE); CacheUtil.clear(SYS_CACHE, Boolean.FALSE); - boolean temp = roleService.grant(grantVO.getRoleIds(), grantVO.getMenuIds(), grantVO.getDataScopeIds(), grantVO.getApiScopeIds()); + boolean temp = false; + try { + temp = roleService.grant(grantVO.getRoleIds(), grantVO.getMenuIds(), grantVO.getDataScopeIds(), grantVO.getApiScopeIds()); + // 鎻掑叆鎺堟潈鏃ュ織 + roleService.grantLog(roleService.getGrantRoleResString(grantVO.getRoleIds()),false); + }catch (Exception e){ + // 澶辫触鏃舵彃鍏ュ紓甯镐俊鎭埌鏃ュ織涓� + roleService.grantLog(e.getMessage(),true); + throw e; + } return R.status(temp); } diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java index 1f8a2cd..1a01e58 100644 --- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java +++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java @@ -87,6 +87,13 @@ List<TreeNode> grantTree(BladeUser user); /** + * 鏍规嵁瑙掕壊id鑾峰彇鑿滃崟鏍戝舰缁撴瀯 + * @param roleId + * @return + */ + List<TreeNode> grantTreeByRoleIds(List<Long> roleId); + + /** * 椤堕儴鑿滃崟鏍戝舰缁撴瀯 * * @param user diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleService.java index 879d3aa..140a760 100644 --- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleService.java +++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleService.java @@ -68,6 +68,20 @@ boolean grant(@NotEmpty List<Long> roleIds, List<Long> menuIds, List<Long> dataScopeIds, List<Long> apiScopeIds); /** + * 瑙掕壊鏉冮檺閰嶇疆鏃ュ織璁板綍 + * @param roleRes + * @return + */ + boolean grantLog(String roleRes, boolean isException); + + /** + * 鑾峰彇瑙掕壊鎺堟潈鏃ュ織鐨勪俊鎭� + * @param roleId + * @return + */ + String getGrantRoleResString(List<Long> roleId); + + /** * 鑾峰彇瑙掕壊ID * * @param tenantId diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java index e06b155..8e3fd78 100644 --- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java @@ -162,6 +162,17 @@ return ForestNodeMerger.merge(tenantPackageTree(menuTree, user.getTenantId())); } + /** + * 鏍规嵁瑙掕壊id鑾峰彇鑿滃崟鏍戝舰缁撴瀯 + * @param roleId + * @return + */ + @Override + public List<TreeNode> grantTreeByRoleIds(List<Long> roleId) { + List<TreeNode> menuTree = baseMapper.grantTreeByRole(roleId); + return ForestNodeMerger.merge(menuTree); + } + @Override public List<TreeNode> grantTopTree(BladeUser user) { List<TreeNode> menuTree = user.getTenantId().equals(NacosConfigCache.getAdminUserInfo().getTenantId()) ? baseMapper.grantTopTree() : baseMapper.grantTopTreeByRole(Func.toLongList(user.getRoleId())); diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java index d90ff86..77a94c9 100644 --- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java @@ -16,29 +16,34 @@ */ package com.vci.ubcs.system.service.impl; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.system.mapper.RoleMapper; +import com.vci.ubcs.system.service.IMenuService; import com.vci.ubcs.system.service.IRoleMenuService; import com.vci.ubcs.system.service.IRoleScopeService; import com.vci.ubcs.system.service.IRoleService; import com.vci.ubcs.system.vo.DeptVO; import com.vci.ubcs.system.wrapper.RoleWrapper; import lombok.AllArgsConstructor; +import org.springblade.core.log.annotation.GrantLog; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.constant.RoleConstant; import org.springblade.core.tool.node.ForestNodeMerger; +import org.springblade.core.tool.node.TreeNode; import org.springblade.core.tool.utils.CollectionUtil; import org.springblade.core.tool.utils.Func; import com.vci.ubcs.system.entity.Role; import com.vci.ubcs.system.entity.RoleMenu; import com.vci.ubcs.system.entity.RoleScope; import com.vci.ubcs.system.vo.RoleVO; +import org.springblade.core.tool.utils.StringUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -64,6 +69,7 @@ private final IRoleMenuService roleMenuService; private final IRoleScopeService roleScopeService; + private final IMenuService menuService; @Override public IPage<RoleVO> selectRolePage(IPage<RoleVO> page, RoleVO role) { @@ -93,6 +99,32 @@ return grantRoleMenu(roleIds, menuIds) && grantDataScope(roleIds, dataScopeIds) && grantApiScope(roleIds, apiScopeIds); } + /** + * 瑙掕壊鏉冮檺閰嶇疆鏃ュ織璁板綍 + * @param roleRes + * @return + */ + @Override + @GrantLog("grantRole") + public boolean grantLog(String roleRes, boolean isException) { + + return false; + } + + /** + * 鑾峰彇瑙掕壊鎺堟潈鏃ュ織鐨勪俊鎭� + * @param roleId + * @return + */ + @Override + public String getGrantRoleResString(List<Long> roleId) { + // 鑾峰彇鍒拌彍鍗曚俊鎭紝鍐嶈幏鍙栧埌瑙掕壊淇℃伅锛岃繘琛屾嫾鎺� + List<TreeNode> menuTree = menuService.grantTreeByRoleIds(roleId); + List<String> roleNames = this.baseMapper.getRoleNames(new Long[]{roleId.get(0)}); + String res = roleNames.get(0) + "鎺堟潈涓�:{" + JSON.toJSONString(menuTree)+"}"; + return res; + } + private boolean grantRoleMenu(List<Long> roleIds, List<Long> menuIds) { // 闃叉瓒婃潈閰嶇疆瓒呯瑙掕壊 Long administratorCount = baseMapper.selectCount(Wrappers.<Role>query().lambda().eq(Role::getRoleAlias, RoleConstant.ADMINISTRATOR).in(Role::getId, roleIds)); diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java index 6c6c537..9bfdd3c 100644 --- a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java +++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java @@ -191,11 +191,20 @@ */ @PostMapping("/grant") @ApiOperationSupport(order = 7) - @ApiOperation(value = "鏉冮檺璁剧疆", notes = "浼犲叆roleId闆嗗悎浠ュ強menuId闆嗗悎") + @ApiOperation(value = "鏉冮檺璁剧疆", notes = "浼犲叆userIds闆嗗悎浠ュ強roleIds闆嗗悎") //@PreAuth(RoleConstant.HAS_ROLE_ADMIN) public R grant(@ApiParam(value = "userId闆嗗悎", required = true) @RequestParam String userIds, @ApiParam(value = "roleId闆嗗悎", required = true) @RequestParam String roleIds) { - boolean temp = userService.grant(userIds, roleIds); + boolean temp = false; + try { + temp = userService.grant(userIds, roleIds); + // 鎻掑叆鎺堟潈鏃ュ織 + userService.grantLog(UserWrapper.build().entityVO(userService.getById(userIds)).toString(),false); + }catch (Exception e){ + // 鎻掑叆鎺堟潈鏃ュ織 + userService.grantLog(e.getMessage(),true); + throw e; + } return R.status(temp); } @@ -286,7 +295,6 @@ ExcelUtil.export(response, "鐢ㄦ埛鏁版嵁妯℃澘", "鐢ㄦ埛鏁版嵁琛�", list, UserExcel.class); } - /** * 绗笁鏂规敞鍐岀敤鎴� */ @@ -296,7 +304,6 @@ public R registerGuest(User user, Long oauthId) { return R.status(userService.registerGuest(user, oauthId)); } - /** * 閰嶇疆鐢ㄦ埛骞冲彴淇℃伅 diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java index ea01d96..2a233e5 100644 --- a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java +++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java @@ -186,6 +186,13 @@ boolean grant(String userIds, String roleIds); /** + * 璁板綍鎺堟潈鏃ュ織 + * @param res + * @return + */ + boolean grantLog(String res, boolean isException); + + /** * 鍒濆鍖栧瘑鐮� * * @param userIds diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java index 7fbd48d..ff717d9 100644 --- a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java @@ -45,6 +45,7 @@ import com.vci.ubcs.system.user.vo.UserVO; import com.vci.ubcs.system.user.wrapper.UserWrapper; import lombok.RequiredArgsConstructor; +import org.springblade.core.log.annotation.GrantLog; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.support.Condition; @@ -127,6 +128,7 @@ @Override @Transactional(rollbackFor = Exception.class) + @GrantLog("grantUser") public boolean updateUser(User user) { String tenantId = user.getTenantId(); Long userCount = baseMapper.selectCount( @@ -135,6 +137,7 @@ .eq(User::getAccount, user.getAccount()) .notIn(User::getId, user.getId()) ); + // 鍒ゆ柇鏄惁琚慨鏀逛负宸插瓨鍦ㄧ殑鐢ㄦ埛鍚� if (userCount > 0L) { throw new ServiceException(StringUtil.format("褰撳墠鐢ㄦ埛 [{}] 宸插瓨鍦�!", user.getAccount())); } @@ -179,6 +182,9 @@ private boolean submitUserDept(User user) { List<Long> deptIdList = Func.toLongList(user.getDeptId()); + if(deptIdList.isEmpty()){ + return true; + } List<UserDept> userDeptList = new ArrayList<>(); deptIdList.forEach(deptId -> { UserDept userDept = new UserDept(); @@ -348,6 +354,16 @@ return this.update(user, Wrappers.<User>update().lambda().in(User::getId, Func.toLongList(userIds))); } + /** + * 鎺堟潈鏃ュ織鎻掑叆鎿嶄綔 + * @param res + */ + @Override + @GrantLog("grantUser") + public boolean grantLog(String res, boolean isException){ + return true; + } + @Override public boolean resetPassword(String userIds) { User user = new User(); -- Gitblit v1.9.3