| | |
| | | download: true |
| | | }) |
| | | } |
| | | export function importDcaExcel (data) { |
| | | return request.post('/business/category/importDcaExcel', data) |
| | | } |
| | | export function exportDcaExcel (data) { |
| | | return request.post('/business/category/exportDcaExcel', encryptData(data), { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | |
| | | .el-transfer__buttons { |
| | | padding: 0 16px !important; |
| | | } |
| | | .tip-warn { |
| | | margin: 4px 0 25px 0; |
| | | font-size: 12px; |
| | | color: #999; |
| | | line-height: 25px; |
| | | i { |
| | | color: orange; |
| | | margin-right: 4px; |
| | | font-size: 14px; |
| | | position: relative; |
| | | top: 1px; |
| | | } |
| | | } |
| | | |
| | | // dialog |
| | | .eva-dialog { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-dialog |
| | | class="center-title" |
| | | :title="title" |
| | | width="55%" |
| | | top="30vh" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <p class="tip-warn"><i class="el-icon-warning"></i>导å
¥è¯´æï¼<br> |
| | | 1.请å
ä¸è½½æä»¶æ¨¡æ¿ï¼å¹¶æç
§æ¨¡æ¿è¦å»å¡«åè¡¨æ ¼å
容;<br> |
| | | 2.ä¸è½½æ¨¡ç为å½åç³»ç»å·²å½å
¥çå
¨é主é¢è§å¯é¡¹æ°æ®;<br> |
| | | 3.æ¯æ¬¡å
¨é导å
¥å°è¦çæ´æ°ä¸è¡¨æ ¼æ°æ®ãå±çº§å
³ç³»ä¸ä¸è´çæ°æ®é
置项ï¼è¯·è°¨æ
æä½ï¼<br> |
| | | </p> |
| | | <el-form class="demo-form-inline" > |
| | | <el-form-item label="鿩坼å
¥æä»¶" required> |
| | | <div style="width: 100%;display: flex;align-items: center;"> |
| | | <el-button type="primary" @click="clickRef">ç¹å»ä¸ä¼ </el-button> |
| | | <el-button type="text" @click="exportTemplate" :loading="exporting">ç¹å»ä¸è½½æ¨¡ç.EXCEL</el-button> |
| | | </div> |
| | | <div style="font-size: 14px; color: black;" v-if="fileName">{{fileName}}</div> |
| | | </el-form-item> |
| | | </el-form> |
| | | <input type="file" style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" /> |
| | | <template v-slot:footer> |
| | | <el-button @click="visible=false">è¿å</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import { importDcaExcel, exportDcaExcel } from '@/api/business/category' |
| | | export default { |
| | | name: 'OperaCategoryImportWindow', |
| | | extends: BaseOpera, |
| | | components: {}, |
| | | data () { |
| | | return { |
| | | exporting: false, |
| | | importing: false, |
| | | fileName: '' |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, companyType) { |
| | | this.title = title |
| | | this.fileName = '' |
| | | this.visible = true |
| | | }, |
| | | // å¯¼åºæ¨¡æ¿ |
| | | exportTemplate () { |
| | | this.$dialog.exportConfirm('确认导åºä¸è½½æ¨¡çåï¼') |
| | | .then(() => { |
| | | this.exporting = true |
| | | exportDcaExcel({}).then(response => { |
| | | this.exporting = false |
| | | this.download(response) |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.exporting = false |
| | | }) |
| | | }) |
| | | .catch(() => {}) |
| | | }, |
| | | clickRef () { |
| | | this.$refs.fileExcel.click() |
| | | }, |
| | | result (e) { |
| | | const data = new FormData() |
| | | data.append('file', e.target.files[0]) |
| | | importDcaExcel(data) |
| | | .then(res => { |
| | | this.$message.success('导å
¥æå') |
| | | this.$emit('success') |
| | | this.visible = false |
| | | }) |
| | | .catch(err => { |
| | | this.$message.error(err) |
| | | this.fileName = '' |
| | | }) |
| | | .finally(() => { |
| | | this.$refs.fileExcel.value = null |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | </style> |
| | |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="éæ©è´è´£äººï¼" prop="memberId"> |
| | | <el-select v-model="form.memberId" filterable remote :remote-method="loadMember" :loading="loading" placeholder="å¯è¾å
¥å§å | ææºå· | é¨é¨åç§°è¿è¡æç´¢"> |
| | | <el-form-item label="设置èå´" prop="isMember" :required="true"> |
| | | <el-radio-group v-model="form.isMember"> |
| | | <el-radio :label="0">ç´å±é¨é¨åå·¥</el-radio> |
| | | <el-radio :label="1">é¨é¨åå
¶ä¸çº§é¨é¨åå·¥</el-radio> |
| | | <el-radio :label="2">æå®äººå</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="æå±ç»ç»" prop="companyId" v-if="form.isMember==0 || form.isMember==1" :required="true"> |
| | | <treeselect |
| | | v-model="form.companyId" |
| | | placeholder="è¯·éæ©" |
| | | :options="companyTree" |
| | | :normalizer="normalizeOptions" |
| | | :default-expand-level="1" |
| | | noChildrenText="没æåé项" |
| | | noOptionsText="没æå¯é项" |
| | | noResultsText="没æå¹é
çç»æ" /> |
| | | </el-form-item> |
| | | <el-form-item label="éæ©è´è´£äººï¼" prop="memberIds" v-if="form.isMember==2" :required="true"> |
| | | <el-select v-model="form.memberIds" filterable :multiple="true" :loading="loading" placeholder="å¯è¾å
¥å§å | ææºå· | é¨é¨åç§°è¿è¡æç´¢"> |
| | | <el-option |
| | | v-for="item in memberList" |
| | | :key="item.id" |
| | |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { allList } from '@/api/business/member' |
| | | import { treeList } from '@/api/business/company' |
| | | |
| | | export default { |
| | | name: 'OperaManagersWindow', |
| | |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | type: '', |
| | | companyId: null, |
| | | memberId: '', |
| | | memberIds: [], |
| | | remark: '', |
| | | isQw: 0, |
| | | isEmail: 0 |
| | | isEmail: 0, |
| | | isMember: 0 |
| | | }, |
| | | companyTree: [], |
| | | loading: false, |
| | | memberList: [], |
| | | // éªè¯è§å |
| | | rules: { |
| | | memberId: [ |
| | | { required: true, message: 'è¯·éæ©è´è´£äºº' } |
| | | memberIds: [ |
| | | { required: true ,message: 'è¯·éæ©è´è´£äºº' } |
| | | ], |
| | | companyId: [ |
| | | { required: true, message: 'è¯·éæ©é¨é¨' } |
| | | ], |
| | | isMember: [ |
| | | { required: true, message: 'éæ©è®¾ç½®èå´' } |
| | | ] |
| | | } |
| | | } |
| | |
| | | }) |
| | | }, |
| | | methods: { |
| | | getfindCompanyTreePage () { |
| | | treeList({}) |
| | | .then(res => { |
| | | if (res && res.length > 0) { |
| | | res[0].fsStatus = 1 |
| | | this.companyTree = res |
| | | // this.searchForm.erpOrgId = res[0].erpId |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // è§èåéé¡¹æ°æ®çæ¹æ³ |
| | | normalizeOptions (node) { |
| | | if (node.childList && !node.childList.length) { |
| | | delete node.childList |
| | | } |
| | | return { |
| | | id: node.id, |
| | | label: node.name, |
| | | children: node.childList |
| | | } |
| | | }, |
| | | loadMember (query) { |
| | | this.memberList = [] |
| | | console.log(query) |
| | | if (!query || query == '') { |
| | | return |
| | | // return |
| | | } |
| | | this.loading = true |
| | | allList({ |
| | |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | this.memberList = [] |
| | | // this.loadMember() |
| | | this.getfindCompanyTreePage() |
| | | this.loadMember() |
| | | } |
| | | } |
| | | } |
| | |
| | | info: {}, |
| | | statusMap: { |
| | | 0: 'å¾
åé
WTS', |
| | | 1: 'å¾
åé
ä»»å¡', |
| | | 2: 'å¾
å·¥ç¨å¸å¤ç', |
| | | 3: '已解å³', |
| | | 4: '已解å³', |
| | | 5: '已解å³' |
| | | 1: 'å¾
åé
å·¥ç¨å¸', |
| | | 2: 'å¾
åé
ä»»å¡', |
| | | 3: 'SHEå
³é', |
| | | 4: 'WTSå
³é', |
| | | 5: 'å·¥ç¨å¸å
³é' |
| | | }, |
| | | cateList: { |
| | | 0: 'SHEäºä»¶å·¥å', |
| | |
| | | |
| | | .modal_wrap { |
| | | display: flex; |
| | | height: 100%; |
| | | height: aotu; |
| | | |
| | | .modal_content { |
| | | flex: 1; |
| | |
| | | statusMap: { |
| | | 0: 'å¾
åé
WTS', |
| | | 1: 'å¾
åé
ä»»å¡', |
| | | 2: 'å¾
å·¥ç¨å¸å¤ç', |
| | | 2: 'å¾
åé
ä»»å¡', |
| | | 3: '已解å³', |
| | | 4: '已解å³', |
| | | 5: '已解å³' |
| | |
| | | |
| | | .modal_wrap { |
| | | display: flex; |
| | | height: 100%; |
| | | height: auto; |
| | | |
| | | overflow: hidden; |
| | | .modal_content { |
| | |
| | | <el-table-column label="äºçº§ä¸»é¢" prop="categoryName" min-width="60"> </el-table-column> |
| | | <el-table-column label="è§å¯é¡¹" prop="problemTitle" min-width="100"> </el-table-column> |
| | | <el-table-column label="ä¸ç¬¦ååå " prop="eventInfo" min-width="120" /> |
| | | <el-table-column label="å¤çç¶æ" prop="status" min-width="80"> |
| | | <el-table-column label="ç¶æ" prop="status" min-width="80"> |
| | | <template slot-scope="{row}"> |
| | | <!-- <span :class="'statusInfo'+row.status" v-if="row.status ==0">å¾
å¤ç</span>--> |
| | | <span :class="'statusInfo'+row.status" v-if="row.status ==3 ||row.status ==4||row.status ==5">å·²å¤ç</span> |
| | | <span :class="'statusInfo'+row.status" v-else>å¤çä¸</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="statusInfo" label="ç¶ææè¿°" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span :class="'statusInfo'+row.status" >{{ row.statusName }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æä½" prop="status" min-width="80"> |
| | |
| | | dataList2: [], |
| | | statusMap: { |
| | | 0: 'å¾
åé
WTS', |
| | | 1: 'å¾
åé
ä»»å¡', |
| | | 2: 'å¾
å·¥ç¨å¸å¤ç', |
| | | 3: '已解å³', |
| | | 4: '已解å³', |
| | | 5: '已解å³' |
| | | 1: 'å¾
åé
å·¥ç¨å¸', |
| | | 2: 'å¾
åé
ä»»å¡', |
| | | 3: 'SHEå
³é', |
| | | 4: 'WTSå
³é', |
| | | 5: 'å·¥ç¨å¸å
³é' |
| | | }, |
| | | cateList: { |
| | | 0: 'SHEäºä»¶å·¥å', |
| | |
| | | |
| | | .modal_wrap { |
| | | display: flex; |
| | | height: 100%; |
| | | height: auto; |
| | | |
| | | .modal_content { |
| | | flex: 1; |
| | |
| | | statusMap: { |
| | | 0: 'å¾
åé
WTS', |
| | | 1: 'å¾
åé
ä»»å¡', |
| | | 2: 'å¾
å·¥ç¨å¸å¤ç', |
| | | 2: 'å¾
åé
ä»»å¡', |
| | | 3: '已解å³', |
| | | 4: '已解å³', |
| | | 5: '已解å³' |
| | |
| | | |
| | | .modal_wrap { |
| | | display: flex; |
| | | height: 100%; |
| | | height: auto; |
| | | |
| | | .modal_content { |
| | | flex: 1; |
| | |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-if="containPermissions(['business:category:create', 'business:category:delete' ])" > |
| | | <li> <el-button type="primary" :loading="isWorking.export" icon="el-icon-download" @click="exportDcaExcel">导åºå
¨é¨</el-button></li> |
| | | <li><el-button type="primary" |
| | | @click="$refs.operaCategoryWindow.open('æ°å»ºDCA主é¢åè§å¯é¡¹', null,categoryList ,4,searchForm.parentId)" icon="el-icon-plus" |
| | | v-permissions="['business:category:create']">æ°å»º</el-button></li> |
| | | <li> <el-button type="primary" :loading="importing" icon="el-icon-plus" @click="$refs.OperaCategoryImportWindow.open('æ¹é导å
¥ä¸»é¢è§å¯é¡¹')">å
¨é导å
¥</el-button></li> |
| | | <li><el-button type="danger" @click="deleteByIdInBatch(true,getfindTreePage)" icon="el-icon-delete" v-permissions="['business:category:delete']">æ¹éå é¤</el-button></li> |
| | | </ul> |
| | | <el-table :height="tableHeightNew" v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange"> |
| | |
| | | <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination"> |
| | | </pagination> |
| | | <OperaCategoryDcaProblemWindow ref="operaCategoryWindow" @success="handlePageChangeDo"/> |
| | | <OperaCategoryImportWindow ref="OperaCategoryImportWindow" @success="handlePageChangeDo" /> |
| | | </template> |
| | | </TableLayout1> |
| | | </template> |
| | |
| | | import Pagination from '@/components/common/Pagination' |
| | | import Tree from '@/components/common/Tree' |
| | | import { treeList } from '@/api/business/category' |
| | | import OperaCategoryImportWindow from '@/components/business/OperaCategoryImportWindow' |
| | | export default { |
| | | name: 'categoryDcaProblem', |
| | | extends: BaseTable, |
| | | components: { TableLayout1, Pagination, Tree, OperaCategoryDcaProblemWindow }, |
| | | components: { TableLayout1, Pagination, Tree, OperaCategoryDcaProblemWindow ,OperaCategoryImportWindow}, |
| | | data () { |
| | | return { |
| | | TreeList: [], |
| | | level: 0, |
| | | importing: false, |
| | | // æç´¢ |
| | | searchForm: { |
| | | name: '', |
| | |
| | | this.getfindTreePage() |
| | | }, |
| | | methods: { |
| | | exportDcaExcel () { |
| | | this.__checkApi() |
| | | this.$dialog.exportConfirm('确认导åºåï¼') |
| | | .then(() => { |
| | | this.isWorking.export = true |
| | | this.api.exportDcaExcel({}) |
| | | .then(response => { |
| | | this.download(response) |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking.export = false |
| | | }) |
| | | }) |
| | | .catch(() => {}) |
| | | }, |
| | | handlePageChangeDo () { |
| | | this.searchForm.isRoot = 1 |
| | | this.searchForm.level = 1 |
| | |
| | | this.searchForm.parentId = row.id |
| | | this.searchForm.isRoot = null |
| | | this.searchForm.parentIdPath = row.idPath |
| | | this.level= row.level |
| | | this.level = row.level |
| | | if (row.level === 2) { |
| | | this.searchForm.type = 6 |
| | | } else { |
| | |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:managers:create', 'business:managers:delete']"> |
| | | <li><el-button type="primary" @click="$refs.operaManagersWindow.open('æ°å»ºSHE责任人',{type:0})" icon="el-icon-plus" v-permissions="['business:managers:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:managers:delete']">å é¤</el-button></li> |
| | | <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:managers:delete']">å é¤</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | :height="tableHeightNew" |
| | |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:managers:create', 'business:managers:delete']"> |
| | | <li><el-button type="primary" @click="$refs.operaManagersWindow.open('æ°å»ºäºä»¶éç¥äººç®¡ç',{type:3})" icon="el-icon-plus" v-permissions="['business:managers:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:managers:delete']">å é¤</el-button></li> |
| | | <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:managers:delete']">å é¤</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | :height="tableHeightNew" |
| | |
| | | <el-form-item label="å·¥åå·" prop="code"> |
| | | <el-input v-model="searchForm.code" clearable placeholder="请è¾å
¥å·¥åå·" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶ææè¿°" prop="status"> |
| | | <el-select v-model="searchForm.status" placeholder="è¯·éæ©"> |
| | | <el-option label="å¾
åé
WTS" value="0"></el-option> |
| | | <el-option label="å¾
åé
å·¥ç¨å¸" value="1"></el-option> |
| | | <el-option label="SHEå
³é" value="2"></el-option> |
| | | <el-option label="WTSå
³é" value="3"></el-option> |
| | | <el-option label="å·¥ç¨å¸å
³é" value="4"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æäº¤æ¶é´" prop="queryStartTime"> |
| | | <el-date-picker type="datetime" v-model="searchForm.queryStartTime" value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="è¯·éæ©å¼å§æ¶é´" @change="changeRadio" /> |
| | |
| | | <el-table-column prop="typeName" label="é£é©ç±»å" min-width="100px"></el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <!-- |
| | | <span :class="'statusInfo'+row.status" v-if="row.status ==0">å¾
å¤ç</span> |
| | | --> |
| | | <span :class="'statusInfo'+row.status" v-if="row.status ==3 ||row.status ==4||row.status ==5">å·²å¤ç</span> |
| | | <span :class="'statusInfo'+row.status" v-else>æªå¤ç</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="statusInfo" label="ç¶ææè¿°" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span :class="'statusInfo'+row.status" >{{ row.statusName }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="submitDate" label="䏿¥æ¶é´" min-width="150px"></el-table-column> |
| | |
| | | typeId: null, |
| | | typeIdPath: null, |
| | | code: '', |
| | | status: null, |
| | | categoryList: [] |
| | | }, |
| | | categoryprops: { |
| | |
| | | <el-form-item label="å·¥åå·" prop="code"> |
| | | <el-input v-model="searchForm.code" style="width: 120px" clearable placeholder="å·¥åå·" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶ææè¿°" prop="status"> |
| | | <el-select v-model="searchForm.status" placeholder="è¯·éæ©"> |
| | | <el-option label="å¾
åé
WTS" value="0"></el-option> |
| | | <el-option label="å¾
åé
å·¥ç¨å¸" value="1"></el-option> |
| | | <el-option label="SHEå
³é" value="2"></el-option> |
| | | <el-option label="WTSå
³é" value="3"></el-option> |
| | | <el-option label="å·¥ç¨å¸å
³é" value="4"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æäº¤æ¶é´" prop="queryStartTime"> |
| | | <el-date-picker type="datetime" v-model="searchForm.queryStartTime" value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="å¼å§æ¶é´" @change="changeRadio" /> |
| | |
| | | stripe |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column prop="code" label="å·¥åå·" min-width="150px" fixed> |
| | | <el-table-column prop="code" label="å·¥åå·" min-width="160px" fixed> |
| | | <template slot-scope="{row}"> |
| | | <span style="color: #2E68EC;cursor: pointer" @click="$refs.operaWorkorderWindow.open('DCAäºä»¶å·¥å详æ
', row)" >{{ row.code || '-'}}</span> |
| | | </template> |
| | |
| | | <template slot-scope="{row}"> {{row.typeName}}/{{row.categoryName}} |
| | | </template> |
| | | </el-table-column> |
| | | <!-- |
| | | <el-table-column prop="categoryName" label="äºçº§ä¸»é¢" min-width="100px"></el-table-column> |
| | | --> |
| | | <el-table-column prop="problemTitle" label="ä¸ç¬¦å项" min-width="250px"></el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <!-- <span :class="'statusInfo'+row.status" v-if="row.status ==0">å¾
å¤ç</span>--> |
| | | <span :class="'statusInfo'+row.status" v-if="row.status ==3 ||row.status ==4||row.status ==5">å·²å¤ç</span> |
| | | <span :class="'statusInfo'+row.status" v-else>å¤çä¸</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="statusInfo" label="ç¶ææè¿°" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span :class="'statusInfo'+row.status" >{{ row.statusName}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="locationName" label="ä½ç½®" min-width="150px"></el-table-column> |
| | |
| | | categoryId: '', |
| | | typeId: '', |
| | | code: '', |
| | | status: null, |
| | | categoryList: [] |
| | | }, |
| | | categoryprops: { |
| | |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.dao.business.model.Category; |
| | | import com.doumee.dao.business.vo.CategoryDcaProblemDto; |
| | | import com.doumee.service.business.CategoryService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import io.swagger.annotations.*; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import java.io.File; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | public void exportExcel (@RequestBody PageWrap<Category> pageWrap, HttpServletResponse response) { |
| | | ExcelExporter.build(Category.class).export(categoryService.findPage(pageWrap).getRecords(), "å类信æ¯è¡¨", response); |
| | | } |
| | | @ApiOperation("导åºDCAExcel") |
| | | @PostMapping("/exportDcaExcel") |
| | | @EncryptionReq |
| | | @RequiresPermissions("business:category:exportExcel") |
| | | public void exportDcaExcel (@RequestBody Category pageWrap, HttpServletResponse response) { |
| | | ExcelExporter.build(CategoryDcaProblemDto.class).export(categoryService.findListForDca(pageWrap), "DCAäºä»¶ä¸»é¢åè§å¯é¡¹é
ç½®_"+System.currentTimeMillis(), response); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDæ¥è¯¢") |
| | | @GetMapping("/{id}") |
| | |
| | | public ApiResponse<List<Category>> tree (@RequestBody Category param){ |
| | | return ApiResponse.success(categoryService.treeList(param)); |
| | | } |
| | | |
| | | @ApiOperation(value = "DCA主é¢åè§å¯é¡¹ä¿¡æ¯å¯¼å
¥" ,notes = "ä¿åç³è¯·") |
| | | @PostMapping("/importDcaExcel") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class), |
| | | }) |
| | | @RequiresPermissions("business:member:create") |
| | | public ApiResponse<String> imporimportDcaExceltExcel (@ApiParam(value = "file") MultipartFile file ) { |
| | | return ApiResponse.success(categoryService.importDcaBatch(file)); |
| | | } |
| | | } |
| | |
| | | |
| | | @Slf4j |
| | | public class DmStdOutImpl extends StdOutImpl { |
| | | private Boolean isOff = false; |
| | | |
| | | public Boolean isOff() { |
| | | return isOff; |
| | | } |
| | | |
| | | public void setOff(Boolean off) { |
| | | isOff = off; |
| | | } |
| | | |
| | | public DmStdOutImpl(String clazz) { |
| | | super(clazz); |
| | | } |
| | | public DmStdOutImpl(String clazz,Boolean off) { |
| | | super(clazz); |
| | | this.isOff = off; |
| | | } |
| | | |
| | | public boolean isDebugEnabled() { |
| | |
| | | } |
| | | |
| | | public void debug(String s) { |
| | | if(isOff!=null && isOff()){ |
| | | return; |
| | | } |
| | | log.info(s); |
| | | // System.out.println(s); |
| | | } |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.ibatis.binding.MapperMethod; |
| | | import org.apache.ibatis.executor.Executor; |
| | | import org.apache.ibatis.logging.Log; |
| | | import org.apache.ibatis.mapping.MappedStatement; |
| | | import org.apache.ibatis.mapping.SqlCommandType; |
| | | import org.apache.ibatis.plugin.*; |
| | |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.ReflectionUtils; |
| | | |
| | | import java.lang.reflect.Constructor; |
| | | import java.lang.reflect.Field; |
| | | import java.lang.reflect.Method; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0]; |
| | | SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType(); |
| | | Object target = invocation.getArgs()[1]; |
| | | |
| | | if(target instanceof MapperMethod.ParamMap) { |
| | | try { |
| | | target = ((MapperMethod.ParamMap) target).get("param1"); |
| | |
| | | */ |
| | | interface CacheKey { |
| | | } |
| | | |
| | | public interface RedisKeys { |
| | | public static final String IMPORTING_CATEGORY = "IMPORTING_CATEGORY"; |
| | | } |
| | | /** |
| | | * æä½ç±»åï¼ç¨äºåæ¥å£éªè¯åç» |
| | | */ |
| | |
| | | |
| | | |
| | | public enum WorkOrderStatus{ |
| | | waitConfirm( 0, "å¾
åé
WTS","{title}䏿¥",""), |
| | | waitAllocation(1, "å¾
åé
ä»»å¡","å¾
åé
ä»»å¡",""), |
| | | waitDeal(2, "å¾
å¤ç","å¾
å¤ç",""), |
| | | sheClose(3, "已解å³","SHEå·²å
³é",""), |
| | | wtsClose(4, "已解å³","WTSå·²å
³é",""), |
| | | close(5, "已解å³","已解å³",""), |
| | | urge (6, "å¬ä¿","","") |
| | | waitConfirm( 0, "å¾
åé
WTS","{title}䏿¥","","å¾
åé
WTS" ), |
| | | waitAllocation(1, "å¾
åé
ä»»å¡","å¾
åé
ä»»å¡","","å¾
åé
ä»»å¡"), |
| | | waitDeal(2, "å¾
å¤ç","å¾
å¤ç","","å¾
å·¥ç¨å¸å¤ç"), |
| | | sheClose(3, "已解å³","SHEå·²å
³é","","SHEå·²å
³é"), |
| | | wtsClose(4, "已解å³","WTSå·²å
³é","","WTSå·²å
³é"), |
| | | close(5, "已解å³","已解å³","","å·¥ç¨å¸å
³é"), |
| | | urge (6, "å¬ä¿","","","") |
| | | ; |
| | | |
| | | private int status; |
| | | private String statusInfo; |
| | | private String statusName; |
| | | private String logTitle; |
| | | private String noticeContent; |
| | | |
| | | // æé æ¹æ³ |
| | | WorkOrderStatus(int status, String statusInfo,String logTitle,String noticeContent ) { |
| | | WorkOrderStatus(int status, String statusInfo,String logTitle,String noticeContent,String statusName ) { |
| | | this.status = status; |
| | | this.statusInfo = statusInfo; |
| | | this.logTitle = logTitle; |
| | | this.noticeContent = noticeContent; |
| | | this.statusName = statusName; |
| | | } |
| | | public static String getName(int index) { |
| | | for (WorkOrderStatus c : WorkOrderStatus.values()) { |
| | | if (c.getKey() == index) { |
| | | return c.statusInfo; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | public static String getStatusName(int index) { |
| | | for (WorkOrderStatus c : WorkOrderStatus.values()) { |
| | | if (c.getKey() == index) { |
| | | return c.statusName; |
| | | } |
| | | } |
| | | return null; |
| | |
| | | this.status = status; |
| | | } |
| | | |
| | | public int getStatus() { |
| | | return status; |
| | | } |
| | | |
| | | public void setStatus(int status) { |
| | | this.status = status; |
| | | } |
| | | |
| | | public String getStatusName() { |
| | | return statusName; |
| | | } |
| | | |
| | | public void setStatusName(String statusName) { |
| | | this.statusName = statusName; |
| | | } |
| | | |
| | | public String getStatusInfo() { |
| | | return statusInfo; |
| | | } |
| | |
| | | @ApiModelProperty(value = "ä¸çº§åç§°") |
| | | @TableField(exist = false) |
| | | private String parentName; |
| | | @ApiModelProperty(value = "ä¸ä¸çº§åç§°") |
| | | @TableField(exist = false) |
| | | private String rootName; |
| | | @ApiModelProperty(value = "æä½äººåå") |
| | | @TableField(exist = false) |
| | | private String editorName; |
| | |
| | | @ApiModelProperty(value = "åééå") |
| | | @TableField(exist = false) |
| | | private List<Category> childList; |
| | | |
| | | @ApiModelProperty(value = "åééå(æ¹é导å
¥å¯¹æ¯ä¸éï¼") |
| | | @TableField(exist = false) |
| | | private List<Category> childMatchList; |
| | | } |
| | |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 责任人信æ¯è¡¨ |
| | |
| | | @ApiModelProperty(value = "åå·¥ä¼å¾®ID") |
| | | @TableField(exist = false) |
| | | private String memberQwId; |
| | | @ApiModelProperty(value = "åå·¥ç¼ç éå") |
| | | @TableField(exist = false) |
| | | private List<Integer> memberIds; |
| | | @ApiModelProperty(value = "ç»ç»ç¼ç ID") |
| | | @TableField(exist = false) |
| | | private Integer companyId; |
| | | @ApiModelProperty(value = "设置èå´ 0ç´å±é¨é¨åå·¥ 1é¨é¨åå
¶ä¸çº§å¸æ©åå·¥ 2æå®äººå") |
| | | @TableField(exist = false) |
| | | private Integer isMember; |
| | | } |
| | |
| | | @ApiModelProperty(value = "è§£å³æ
åµï¼æ¥è¯¢ä½¿ç¨ï¼ï¼0=å¦ï¼1=æ¯ï¼",hidden = true) |
| | | @TableField(exist = false) |
| | | private Integer dealStatus; |
| | | @ApiModelProperty(value = "ç¶ææè¿°ï¼",hidden = true) |
| | | @TableField(exist = false) |
| | | private String statusName; |
| | | @ApiModelProperty(value = "ç»è®¡æ°ï¼",hidden = true) |
| | | @TableField(exist = false) |
| | | private Long num; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.business.vo; |
| | | |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * Created by IntelliJ IDEA. |
| | | * |
| | | * @Author : Rk |
| | | * @create 2023/7/13 10:40 |
| | | */ |
| | | @Data |
| | | @ApiModel("DCA主é¢è§å¯é¡¹å¯¼åºä¿¡æ¯") |
| | | public class CategoryDcaProblemDto { |
| | | @ApiModelProperty(value = "åºå·") |
| | | @ExcelColumn(name="åºå·",index =1 ,width = 4) |
| | | private Long index; |
| | | @ApiModelProperty(value = "ä¸çº§ä¸»é¢") |
| | | @ExcelColumn(name="ä¸çº§è§å¯ä¸»é¢",index =2 ,width = 10) |
| | | private String parentName; |
| | | @ApiModelProperty("äºçº§è§å¯ä¸»é¢") |
| | | @ExcelColumn(name="äºçº§è§å¯ä¸»é¢",index =3,width = 10) |
| | | private String typeName; |
| | | @ApiModelProperty(value = "è§å¯é¡¹" ) |
| | | @ExcelColumn(name="è§å¯é¡¹",index =4,width = 40 ) |
| | | private String problem; |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value = "ç¶æ ç¶æ 0å¾
确认/å¾
å审 1å¾
åé
/å¾
ç»å®¡ 2å¾
å¤ç 4WTSå
³é 5å·¥ç¨å¸å
³é", example = "1") |
| | | @ExcelColumn(name="ç¶æ",index =4,width = 4, valueMapping = "0=å¾
å¤ç;1=å¤çä¸;2=å¤çä¸;3=å·²å¤ç;4=å·²å¤ç;5=å·²å¤ç;") |
| | | private Integer status; |
| | | @ApiModelProperty(value = "ç¶ææè¿°") |
| | | @ExcelColumn(name="ç¶ææè¿°",index =5,width = 8) |
| | | private String statusName; |
| | | @ApiModelProperty(value = "䏿¥æ¶é´", example = "1") |
| | | @ExcelColumn(name="䏿¥æ¶é´",index =5 ,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 10) |
| | | @ExcelColumn(name="䏿¥æ¶é´",index =6 ,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 10) |
| | | private Date submitDate; |
| | | @ApiModelProperty(value = "åç°æ¶é´", example = "1") |
| | | @ExcelColumn(name="åç°æ¶é´",index =6 ,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 10) |
| | | @ExcelColumn(name="åç°æ¶é´",index =7 ,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 10) |
| | | private Date happenTime; |
| | | @ApiModelProperty(value = "åçå°ç¹", example = "1") |
| | | @ExcelColumn(name="åçå°ç¹",index =7 ,width = 6) |
| | | @ExcelColumn(name="åçå°ç¹",index =8 ,width = 6) |
| | | private String locationName; |
| | | @ApiModelProperty(value = "é£é©æè¿°", example = "1") |
| | | @ExcelColumn(name="é£é©æè¿°",index =11,width = 10) |
| | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.apache.ibatis.logging.nologging.NoLoggingImpl; |
| | | import org.apache.ibatis.logging.slf4j.Slf4jImpl; |
| | | |
| | | import java.util.Date; |
| | | |
| | |
| | | @ApiModelProperty(value = "ç¶æ ç¶æ 0å¾
确认/å¾
å审 1å¾
åé
/å¾
ç»å®¡ 2å¾
å¤ç 4WTSå
³é 5å·¥ç¨å¸å
³é", example = "1") |
| | | @ExcelColumn(name="ç¶æ",index =6,width = 4, valueMapping = "0=å¾
å¤ç;1=å¤çä¸;2=å¤çä¸;3=å·²å¤ç;4=å·²å¤ç;5=å·²å¤ç;") |
| | | private Integer status; |
| | | @ApiModelProperty(value = "ç¶ææè¿°") |
| | | @ExcelColumn(name="ç¶ææè¿°",index =5,width = 8) |
| | | private String statusName; |
| | | @ApiModelProperty(value = "䏿¥æ¶é´", example = "1") |
| | | @ExcelColumn(name="䏿¥æ¶é´",index =7 ,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 10) |
| | | private Date submitDate; |
| | |
| | | @ApiModelProperty(value = "ä½ç½®", example = "1") |
| | | @ExcelColumn(name="ä½ç½®",index =9 ,width = 6) |
| | | private String locationName; |
| | | |
| | | @ApiModelProperty(value = "ä¸ç¬¦ååå ", example = "1") |
| | | @ExcelColumn(name="ä¸ç¬¦ååå ",index =10,width = 10) |
| | | private String eventInfo; |
| | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.model.Category; |
| | | import com.doumee.dao.business.vo.CategoryDcaProblemDto; |
| | | import com.doumee.dao.web.vo.CategoryVO; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | * @return |
| | | */ |
| | | List<CategoryVO> getCategoryVOTree(String categoryType,Integer categoryId); |
| | | List<CategoryDcaProblemDto> findListForDca(Category category); |
| | | |
| | | List<CategoryVO> getCategoryVOList(Integer categoryType,Integer isRoot); |
| | | |
| | | List<CategoryVO> getCategoryVOForGCXTree(Integer categoryId); |
| | | |
| | | List<Category> treeList(Category param ); |
| | | |
| | | String importDcaBatch(MultipartFile file); |
| | | String initRedis(); |
| | | } |
| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.annotation.excel.ExcelImporter; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.CategoryMapper; |
| | | import com.doumee.dao.business.model.Category; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.Company; |
| | | import com.doumee.dao.business.vo.CategoryDcaProblemDto; |
| | | import com.doumee.dao.business.vo.CompanyTree; |
| | | import com.doumee.dao.web.vo.CategoryVO; |
| | | import com.doumee.dao.web.vo.CategoryVOTree; |
| | | import com.doumee.dao.business.model.Company; |
| | | import com.doumee.dao.business.model.Managers; |
| | | import com.doumee.dao.business.vo.CategoryTree; |
| | | import com.doumee.dao.business.vo.CompanyTree; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.CategoryService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import io.swagger.models.auth.In; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.poi.ss.usermodel.CellType; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import javax.annotation.Resource; |
| | | import java.io.Serializable; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.UUID; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @Service |
| | | public class CategoryServiceImpl implements CategoryService { |
| | | |
| | | @Resource(name="sessionRedisTemplate") |
| | | private RedisTemplate<Object, Serializable> redisTemplate; |
| | | @Autowired |
| | | private CategoryMapper categoryMapper; |
| | | |
| | |
| | | } |
| | | return categoryVOList; |
| | | } |
| | | public List<Category> findAllListForDca() { |
| | | List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda() |
| | | .eq(Category::getIsdeleted, Constants.ZERO) |
| | | .in(Category::getType, Constants.FOUR, Constants.SIX)//主é¢åè§å¯é¡¹ |
| | | .orderByAsc(Category::getSortnum) |
| | | ); |
| | | return categoryList; |
| | | } |
| | | public List<Category> findListForDcaTree( List<Category> categoryList) { |
| | | if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryList)) { |
| | | long index = 1; |
| | | List<Category> pList = new ArrayList<>(); |
| | | for (Category category : categoryList) { |
| | | if (category.getParentId() == null) { |
| | | category.setChildList(new ArrayList<>()); |
| | | for (Category cc : categoryList) { |
| | | if (Constants.equalsInteger(cc.getParentId(), category.getId())) { |
| | | cc.setChildList(new ArrayList<>()); |
| | | for (Category ccc : categoryList) { |
| | | if (Constants.equalsInteger(ccc.getParentId(), cc.getId())) { |
| | | cc.getChildList().add(ccc); |
| | | } |
| | | } |
| | | category.getChildList().add(cc); |
| | | } |
| | | } |
| | | pList.add(category); |
| | | } |
| | | } |
| | | return pList; |
| | | } |
| | | return null; |
| | | } |
| | | public List<Category> findImportTreeForDca ( List<CategoryDcaProblemDto> categoryList,LoginUserInfo user, Date date) { |
| | | List<Category> pList = new ArrayList<>(); |
| | | if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryList)) { |
| | | Integer index = 1; |
| | | for (CategoryDcaProblemDto categoryDcaProblemDto : categoryList) { |
| | | if(StringUtils.isBlank(categoryDcaProblemDto.getProblem()) |
| | | &&StringUtils.isBlank(categoryDcaProblemDto.getParentName()) |
| | | &&StringUtils.isBlank(categoryDcaProblemDto.getTypeName()) ){ |
| | | //å»ç©ºè¡ |
| | | continue; |
| | | } |
| | | if(StringUtils.isBlank(categoryDcaProblemDto.getParentName())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼è¡¨æ ¼ç¬¬ã"+(index + 1)+"ãè¡ä¸çº§ä¸»é¢ä¿¡æ¯ä¸è½ä¸ºç©ºï¼è¯·è¿åæ£æ¥è¡¨æ ¼ä¿¡æ¯ï¼"); |
| | | } |
| | | categoryDcaProblemDto.setProblem(StringUtils.defaultString(categoryDcaProblemDto.getProblem(),"").trim()); |
| | | categoryDcaProblemDto.setTypeName(StringUtils.defaultString(categoryDcaProblemDto.getTypeName(),"").trim()); |
| | | categoryDcaProblemDto.setParentName(StringUtils.defaultString(categoryDcaProblemDto.getParentName(),"").trim()); |
| | | Category first = getNewCateFromListByName(categoryDcaProblemDto.getParentName(), pList); |
| | | if(first == null){ |
| | | first = new Category(); |
| | | first.setIsdeleted(Constants.ZERO); |
| | | first.setCreateDate(date); |
| | | first.setCreator(user.getId()); |
| | | first.setIsdeleted(Constants.ZERO); |
| | | first.setStatus(Constants.ZERO); |
| | | first.setEditDate(date); |
| | | first.setEditor(user.getId()); |
| | | first.setName(categoryDcaProblemDto.getParentName()); |
| | | first.setType(Constants.FOUR);//ä¸»é¢ |
| | | first.setSortnum(index++); |
| | | first.setChildList(new ArrayList<>()); |
| | | pList.add(first); |
| | | List<Category> childList = getSecondListFromImport(first,0,categoryList); |
| | | first.setChildList(childList); |
| | | } |
| | | } |
| | | } |
| | | return pList; |
| | | } |
| | | |
| | | private List<Category> getSecondListFromImport(Category parent,int type, List<CategoryDcaProblemDto> categoryList) { |
| | | List<Category> pList = new ArrayList<>(); |
| | | Integer index = 1; |
| | | for (CategoryDcaProblemDto categoryDcaProblemDto : categoryList) { |
| | | if(type ==0 && (StringUtils.isBlank(categoryDcaProblemDto.getTypeName()) || StringUtils.isBlank(categoryDcaProblemDto.getProblem()))){ |
| | | //å»ç©ºè¡ |
| | | continue; |
| | | } |
| | | if(type ==1 &&(StringUtils.isBlank(categoryDcaProblemDto.getProblem()))){ |
| | | //å»ç©ºè¡ |
| | | continue; |
| | | } |
| | | if(type ==0 && StringUtils.isBlank(categoryDcaProblemDto.getTypeName())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼è¡¨æ ¼ç¬¬ã"+(index + 1)+"ãè¡äºçº§ä¸»é¢ä¿¡æ¯ä¸è½ä¸ºç©ºï¼è¯·è¿åæ£æ¥è¡¨æ ¼ä¿¡æ¯ï¼"); |
| | | } |
| | | if(type == 0 && !StringUtils.equals(categoryDcaProblemDto.getParentName(),parent.getName())){ |
| | | //åªå¤çå级 |
| | | continue; |
| | | } |
| | | if(type == 1 && !StringUtils.equals(categoryDcaProblemDto.getTypeName(),parent.getName())){ |
| | | //åªå¤çå级 |
| | | continue; |
| | | } |
| | | Category model = getNewCateFromListByName(type == 0 ?categoryDcaProblemDto.getTypeName():categoryDcaProblemDto.getProblem(), pList); |
| | | if(model == null){ |
| | | model = new Category(); |
| | | model.setIsdeleted(Constants.ZERO); |
| | | model.setCreateDate(parent.getCreateDate()); |
| | | model.setCreator(parent.getCreator()); |
| | | model.setIsdeleted(Constants.ZERO); |
| | | model.setStatus(Constants.ZERO); |
| | | model.setEditDate(parent.getCreateDate()); |
| | | model.setEditor(parent.getCreator()); |
| | | model.setName(type == 0 ?categoryDcaProblemDto.getTypeName():categoryDcaProblemDto.getProblem()); |
| | | model.setType(type == 0 ? Constants.FOUR:Constants.SIX);// |
| | | model.setSortnum(index++); |
| | | model.setChildList(new ArrayList<>()); |
| | | pList.add(model); |
| | | } |
| | | if(type == 0){ |
| | | //妿æ¯äºçº§ä¸»é¢å¤çè·ååéé¨é¨ |
| | | List<Category> childList = getSecondListFromImport(model,1,categoryList); |
| | | model.setChildList(childList); |
| | | } |
| | | } |
| | | return pList; |
| | | } |
| | | |
| | | private Category getNewCateFromListByName(String parentName, List<Category> pList) { |
| | | if(pList ==null){ |
| | | return null; |
| | | } |
| | | for(Category cate : pList){ |
| | | if(StringUtils.equals(parentName,cate.getName())){ |
| | | return cate; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | private Category getNewCateFromListByNameAndParent(String parentName,int type,boolean isRoot, List<Category> pList) { |
| | | for(Category cate : pList){ |
| | | if(StringUtils.equals(parentName,cate.getName()) && Constants.equalsInteger(cate.getType(),type)){ |
| | | if(isRoot && cate.getParentId()==null){ |
| | | return cate; |
| | | }else if(isRoot && cate.getParentId()==null){ |
| | | return cate; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public List<CategoryDcaProblemDto> findListForDca(Category param){ |
| | | long index =1; |
| | | List<CategoryDcaProblemDto> categoryVOList = new ArrayList<>(); |
| | | List<Category> pList = findListForDcaTree( findAllListForDca()); |
| | | for (Category category:pList) { |
| | | if(category.getChildList().size() ==0){ |
| | | CategoryDcaProblemDto categoryVO = new CategoryDcaProblemDto(); |
| | | categoryVO.setIndex(index); |
| | | categoryVO.setParentName(category.getName()); |
| | | index++; |
| | | categoryVOList.add(categoryVO); |
| | | }else{ |
| | | for (Category cc:category.getChildList()) { |
| | | if(cc.getChildList().size() ==0){ |
| | | CategoryDcaProblemDto categoryVO = new CategoryDcaProblemDto(); |
| | | categoryVO.setIndex(index); |
| | | categoryVO.setParentName(category.getName()); |
| | | categoryVO.setTypeName(cc.getName()); |
| | | index++; |
| | | categoryVOList.add(categoryVO); |
| | | }else{ |
| | | for (Category ccc:cc.getChildList()) { |
| | | CategoryDcaProblemDto categoryVO = new CategoryDcaProblemDto(); |
| | | categoryVO.setIndex(index); |
| | | categoryVO.setParentName(category.getName()); |
| | | categoryVO.setTypeName(cc.getName()); |
| | | categoryVO.setProblem(ccc.getName()); |
| | | index++; |
| | | categoryVOList.add(categoryVO); |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return categoryVOList; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @PostConstruct |
| | | public String initRedis(){ |
| | | redisTemplate.delete(Constants.RedisKeys.IMPORTING_CATEGORY); |
| | | return ""; |
| | | } |
| | | @Override |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public String importDcaBatch(MultipartFile file){ |
| | | Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_CATEGORY); |
| | | if(importing!=null && importing){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼å·²åå¨å工导å
¥ä»»å¡æ£å¨æ§è¡ä¸ï¼è¯·ç¨ååè¯ï¼"); |
| | | } |
| | | redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_CATEGORY,true); |
| | | try { |
| | | ExcelImporter ie = null; |
| | | List<CategoryDcaProblemDto> dataList =null; |
| | | try { |
| | | ie = new ExcelImporter(file,0,0, CellType.STRING); // ç¡®ä¿åå
æ ¼ç±»å为å符串); |
| | | dataList = ie.getDataList(CategoryDcaProblemDto.class,null); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if(dataList == null || dataList.size() ==0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼å½å
¥æ°æ®ä¸ºç©ºï¼"); |
| | | } |
| | | Date date = new Date(); |
| | | LoginUserInfo user = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); |
| | | List<Category> treeImportList = findImportTreeForDca(dataList,user,date);//æ¥è¯¢ç°æçå
¨é¨ä¸»é¢è§å¯é¡¹æ°æ® |
| | | if(treeImportList == null || treeImportList.size() ==0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼å½å
¥çæææ°æ®ä¸ºç©ºï¼"); |
| | | } |
| | | //æ¥è¯¢ç°æçå
¨é¨ä¸»é¢è§å¯é¡¹æ°æ® |
| | | List<Category> list = categoryMapper.selectJoinList(Category.class,new MPJLambdaWrapper<Category>() |
| | | .selectAll(Category.class) |
| | | // .select("t1.name",Category::getParentName) |
| | | // .select("t2.name",Category::getRootName) |
| | | // .leftJoin(Category.class,Category::getId,Category::getParentId) |
| | | // .leftJoin( "category t2 on t1.parent_id=t2.id") |
| | | .eq(Category::getIsdeleted, Constants.ZERO) |
| | | .in(Category::getType, Constants.FOUR, Constants.SIX)//主é¢åè§å¯é¡¹ |
| | | .orderByAsc(Category::getSortnum) |
| | | ) ; |
| | | List<Category> treeList = findListForDcaTree(list);//æ¥è¯¢ç°æçå
¨é¨ä¸»é¢è§å¯é¡¹æ°æ® |
| | | List<Integer> allUpdateIds = new ArrayList<>(); |
| | | dealImportNewOrUpdateBiz(treeList,treeImportList,allUpdateIds); |
| | | dealDeletedList(list,allUpdateIds,user,date);//å¤çå é¤çæ°æ®ä¿¡æ¯ |
| | | dealTreePathInfo(treeImportList); |
| | | return "导å
¥æå"; |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | }catch (Exception e){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"å工信æ¯å¯¼å
¥å¤±è´¥ï¼è¯·ç¨åéè¯"); |
| | | }finally { |
| | | redisTemplate.delete(Constants.RedisKeys.IMPORTING_CATEGORY); |
| | | } |
| | | } |
| | | |
| | | private void dealImportNewOrUpdateBiz(List<Category> treeList, List<Category> treeImportList, List<Integer> allUpdateIds) { |
| | | List<Category> newList = new ArrayList<>(); |
| | | List<Category> updateList = new ArrayList<>(); |
| | | for(Category tmodel :treeImportList){ |
| | | |
| | | //å¤çä¸çº§ä¸»é¢å¢æ¹é»è¾ |
| | | //æ¥è¯¢æ¯å¦åå¨åç§°ç¸åçä¸çº§ä¸»é¢ï¼åå¨åæ´æ°ï¼ä¸åå¨åæ°å¢ |
| | | Category first = getNewCateFromListByName(tmodel.getName(),treeList); |
| | | if(first!=null){ |
| | | tmodel.setId(first.getId()); |
| | | tmodel.setChildMatchList(first.getChildList()); |
| | | allUpdateIds.add(first.getId()); |
| | | updateList.add(tmodel); |
| | | }else{ |
| | | newList.add(tmodel); |
| | | } |
| | | } |
| | | |
| | | //å
æ¹éå¤çä¸çº§ä¸»é¢ç墿¹æ°æ®ï¼å·æ°ä¸çº§ä¸»é¢å¯¹è±¡çç¼ç |
| | | if(newList.size() >0){ |
| | | categoryMapper.insert(newList); |
| | | } |
| | | if( updateList.size() >0){ |
| | | for(Category update :updateList){ |
| | | categoryMapper.updateById(update); |
| | | } |
| | | } |
| | | dealSecChildList(newList,updateList,allUpdateIds,1);//å¤çäºçº§æ°æ® |
| | | } |
| | | |
| | | private void dealDeletedList(List<Category> list, List<Integer> allUpdateIds, LoginUserInfo user, Date date) { |
| | | List<Integer> deleteList = new ArrayList<>(); |
| | | for(Category cate : list){ |
| | | for(Integer nowId : allUpdateIds){ |
| | | if(Constants.equalsInteger(cate.getId(),nowId)){ |
| | | continue; |
| | | } |
| | | deleteList.add(cate.getId()); |
| | | } |
| | | } |
| | | if(deleteList.size() >0){ |
| | | //å é¤ä¸åå¨ç |
| | | categoryMapper.update(null,new UpdateWrapper<Category>().lambda() |
| | | .set(Category::getIsdeleted,Constants.ONE) |
| | | .set(Category::getEditor,user.getId()) |
| | | .set(Category::getEditDate,date) |
| | | .in(Category::getId,deleteList)); |
| | | } |
| | | } |
| | | |
| | | private void dealSecChildList(List<Category> newList, List<Category> updateList,List<Integer> allUpdateIds,int level) { |
| | | List<Category> childNewList = new ArrayList<>(); |
| | | List<Category> childUpdateList = new ArrayList<>(); |
| | | if(newList.size() >0 || updateList.size()>0) { |
| | | for(Category c : newList){ |
| | | if(c.getChildList()!=null && c.getChildList().size()>0){ |
| | | for(Category sec : c.getChildList()){ |
| | | sec.setParentId(c.getId()); |
| | | } |
| | | childNewList.addAll(c.getChildList()); |
| | | } |
| | | } |
| | | for(Category c : updateList){ |
| | | if(c.getChildList()!=null && c.getChildList().size()>0){ |
| | | List<Category> tList = c.getChildMatchList(); |
| | | for(Category sec : c.getChildList()){ |
| | | sec.setParentId(c.getId()); |
| | | Category mmodel = getNewCateFromListByName(sec.getName(),tList); |
| | | if(mmodel!=null){ |
| | | sec.setId(mmodel.getId()); |
| | | sec.setChildMatchList(mmodel.getChildList()); |
| | | allUpdateIds.add(mmodel.getId()); |
| | | childUpdateList.add(sec); |
| | | }else{ |
| | | childNewList.add(sec); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(childNewList.size() >0){ |
| | | categoryMapper.insert(childNewList); |
| | | } |
| | | if( childUpdateList.size() >0){ |
| | | for(Category update :childUpdateList){ |
| | | categoryMapper.updateById(update); |
| | | } |
| | | } |
| | | if(level == 1){ |
| | | dealSecChildList(childNewList,childUpdateList,allUpdateIds,2);//å¤çä¸çº§çº§æ°æ® |
| | | } |
| | | } |
| | | private void dealTreePathInfo(List<Category> tree) { |
| | | if(tree!=null || tree.size()>0){ |
| | | for(Category t : tree){ |
| | | t.setIdPath(t.getId()+"/"); |
| | | t.setNamePath(t.getName()); |
| | | categoryMapper.updateById(t); |
| | | dealChildParentId(t,t.getChildList()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void dealChildParentId(Category t, List<Category> childList) { |
| | | if(childList ==null || childList.size()==0){ |
| | | return; |
| | | } |
| | | for(Category c : childList){ |
| | | c.setParentId(t.getId()); |
| | | c.setIdPath(t.getIdPath()+c.getId()+"/"); |
| | | c.setNamePath(t.getNamePath()+"/"+c.getName()); |
| | | categoryMapper.updateById(c); |
| | | if(t.getChildList()!=null || t.getChildList().size()==0){ |
| | | //éå½å¤çåé |
| | | dealChildParentId(c,c.getChildList()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.Serializable; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | |
| | | @Service |
| | | public class CompanyServiceImpl implements CompanyService { |
| | | |
| | | @Resource(name="sessionRedisTemplate") |
| | | private RedisTemplate<Object, Serializable> redisTemplate; |
| | | @Autowired |
| | | private CompanyMapper companyMapper; |
| | | @Autowired |
| | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.CompanyMapper; |
| | | import com.doumee.dao.business.ManagersMapper; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.model.Company; |
| | | import com.doumee.dao.business.model.Managers; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | private ManagersMapper managersMapper; |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | @Autowired |
| | | private CompanyMapper companyMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public Integer create(Managers managers) { |
| | | Member member =memberMapper.selectById(managers.getMemberId()); |
| | | if(member == null || Constants.equalsInteger(member.getIsdeleted(),Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对ä¸èµ·ï¼è¯¥è´è´£äººä¿¡æ¯ä¸åå¨ï¼è¯·å·æ°é¡µé¢éè¯ï¼"); |
| | | |
| | | List<Managers> newList = new ArrayList<>(); |
| | | if( managers.getIsMember() == null || managers.getType() == null){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Managers model =managersMapper.selectOne(new LambdaQueryWrapper<Managers>().eq(Managers::getMemberId,managers.getMemberId()) |
| | | .eq(Managers::getType,managers.getType()) |
| | | .eq(Managers::getIsdeleted,Constants.ZERO) |
| | | ); |
| | | if(model !=null){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"该人åä¿¡æ¯å·²è®¾ç½®ï¼æ ééæ°æ·»å "); |
| | | List<Member> memberList = new ArrayList<>(); |
| | | List<Integer> memberIdList = new ArrayList<>(); |
| | | |
| | | //设置èå´ 0ç´å±é¨é¨åå·¥ 1é¨é¨åå
¶ä¸çº§å¸æ©åå·¥ 2æå®äººå |
| | | if(Constants.equalsInteger(managers.getIsMember(),Constants.ZERO) || Constants.equalsInteger(managers.getIsMember(),Constants.ONE)){ |
| | | //ç´å±é¨é¨ æ é¨é¨åå
¶åé¨é¨ |
| | | if(managers.getCompanyId() ==null ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Company company = companyMapper.selectById(managers.getCompanyId()); |
| | | if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对ä¸èµ·ï¼é¨é¨ä¿¡æ¯ä¸åå¨ï¼è¯·å·æ°é¡µé¢éè¯ï¼"); |
| | | } |
| | | memberList =memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>() |
| | | .selectAll(Member.class) |
| | | .eq(Member::getIsdeleted,Constants.ZERO) |
| | | .exists(Constants.equalsInteger(managers.getIsMember(),Constants.ZERO),"select (cm.id) from company_member cm where cm.company_id='"+company.getId()+"' and cm.member_id=t.id") |
| | | .exists(Constants.equalsInteger(managers.getIsMember(),Constants.ONE),"select (cm.id) from company_member cm where cm.company_id_path like '"+company.getIdPath()+"%' and cm.member_id=t.id")); |
| | | }else{ |
| | | if(managers.getMemberIds()==null || managers.getMemberIds().size()==0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼è¯·æè¦æ±éæ©æå®å工信æ¯ï¼"); |
| | | } |
| | | memberList =memberMapper.selectList(new LambdaQueryWrapper<Member>() |
| | | .eq(Member::getIsdeleted,Constants.ZERO) |
| | | .in(Member::getId,managers.getMemberIds())); |
| | | } |
| | | if(memberList.size() ==0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对ä¸èµ·ï¼éæ©èå´æªæ¥è¯¢å°ç¸å
³å工信æ¯ï¼æ¤æ¬¡è®¾ç½®æ æï¼"); |
| | | } |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | managers.setCreator(user.getId()); |
| | | managers.setCreateDate(new Date()); |
| | | managers.setIsdeleted(Constants.ZERO); |
| | | managers.setEditor(managers.getCreator()); |
| | | managers.setEditDate(managers.getCreateDate()); |
| | | managers.setStatus(Constants.ZERO); |
| | | managersMapper.insert(managers); |
| | | return managers.getId(); |
| | | |
| | | for(Member m :memberList){ |
| | | Managers mm = new Managers(); |
| | | mm.setCreator(user.getId()); |
| | | mm.setCreateDate(new Date()); |
| | | mm.setIsdeleted(Constants.ZERO); |
| | | mm.setEditor(managers.getCreator()); |
| | | mm.setEditDate(managers.getCreateDate()); |
| | | mm.setStatus(Constants.ZERO); |
| | | mm.setType(managers.getType()); |
| | | mm.setMemberId(m.getId()); |
| | | mm.setRemark(managers.getRemark()); |
| | | memberIdList.add(m.getId()); |
| | | newList.add(mm); |
| | | } |
| | | //æ¸
空åæçè®¾ç½®ä¿¡æ¯ |
| | | managersMapper.delete(new UpdateWrapper<Managers>().lambda() |
| | | .eq(Managers::getType,managers.getType()) |
| | | .in(Managers::getMemberId,memberIdList) |
| | | ); |
| | | managersMapper.insert(newList); |
| | | return newList.size(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestHeader; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.Serializable; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | |
| | | @Service |
| | | public class MemberServiceImpl implements MemberService { |
| | | |
| | | @Resource(name="sessionRedisTemplate") |
| | | private RedisTemplate<Object, Serializable> redisTemplate; |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | @Autowired |
| | |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | |
| | | workorder.setStatusName(Constants.WorkOrderStatus.getStatusName(workorder.getStatus())); |
| | | this.dealButton(workorder,member); |
| | | //æ¥è¯¢éä»¶ä¿¡æ¯ |
| | | List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getIsdeleted,Constants.ZERO) |
| | |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | pageWrap.getModel().setIsdeleted(Constants.ZERO); |
| | | MPJLambdaWrapper<Workorder> queryWrapper = getJoinQueryMapper(pageWrap.getModel()); |
| | | return PageData.from(workorderMapper.selectJoinPage(page,Workorder.class, queryWrapper)); |
| | | PageData<Workorder> result = PageData.from(workorderMapper.selectJoinPage(page,Workorder.class, queryWrapper)); |
| | | if(result!=null && result.getRecords()!=null){ |
| | | for(Workorder w : result.getRecords()){ |
| | | w.setStatusName(Constants.WorkOrderStatus.getStatusName(w.getStatus())); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | spring: |
| | | profiles: |
| | | active: test |
| | | active: dev |
| | | # JSONè¿åé
ç½® |
| | | jackson: |
| | | # é»è®¤æ¶åº |
| | |
| | | configuration: |
| | | map-underscore-to-camel-case: true |
| | | log-impl: com.doumee.config.mybatis.DmStdOutImpl |
| | | # log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl |
| | | # log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl |
| | | |
| | | |
| | | # ç¼åå
容设置 |
| | |
| | | |
| | | # æ¥å¿é
ç½® |
| | | logback: |
| | | level: INFO |
| | | level: ERROR |
| | | appender: ${project.env} |
| | | # daoå±çæ¥å¿è®¾ç½®ä¸ºdebugï¼æ¹ä¾¿æ¥çsql |
| | | logging: |
| | |
| | | com.doumee.dao.system.SystemJobListMapper: ERROR |
| | | com.doumee.dao.system.SystemJobSnippetMapper: ERROR |
| | | com.doumee.dao.system.SystemJobLogMapper: ERROR |
| | | com.doumee.dao.business: DEBUG |
| | | com.doumee.dao.business: ERROR |
| | | auth: |
| | | jwt: |
| | | enabled: true #æ¯å¦å¼å¯JWTç»å½è®¤è¯åè½ |