From 74448f9a9f1f8cb779023db3ea9eda762fc6ad0a Mon Sep 17 00:00:00 2001 From: zhuguifei <zhuguifei@zhuguifeideiMac.local> Date: 星期五, 28 二月 2025 14:29:42 +0800 Subject: [PATCH] 维修工接单、维修 --- eims-ui/apps/web-antd/src/constants/dict/index.ts | 16 + eims-ui/apps/web-antd/src/views/eims/repair-record/data.tsx | 23 ++ eims-ui/apps/web-antd/src/views/eims/repair-res/repair-res-drawer.vue | 132 ++++++++++++++++++ eims-ui/apps/web-antd/src/views/eims/repair-record/index.vue | 11 + eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java | 26 ++- eims-ui/apps/web-antd/src/views/eims/repair-req/data.tsx | 4 eims-ui/apps/web-antd/src/views/eims/repair-req/index.vue | 19 + eims-ui/packages/@core/base/shared/src/constants/dict-enum.ts | 3 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java | 49 +++++- eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue | 58 +++++++ eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/utils/DataFilterUtil.java | 2 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java | 6 eims-ui/apps/web-antd/src/views/eims/repair-res/data.tsx | 52 ++++--- eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairRecordVo.java | 8 + eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairReqServiceImpl.java | 2 15 files changed, 341 insertions(+), 70 deletions(-) diff --git a/eims-ui/apps/web-antd/src/constants/dict/index.ts b/eims-ui/apps/web-antd/src/constants/dict/index.ts index 8856576..7fe5f13 100644 --- a/eims-ui/apps/web-antd/src/constants/dict/index.ts +++ b/eims-ui/apps/web-antd/src/constants/dict/index.ts @@ -25,7 +25,17 @@ * 鎶ヤ慨鐘舵�� */ export enum REPAIR_REQ_STATUS { - JIEDAN = '0', // 寰呮帴鍗� - WEIXIU = '1', // 缁翠慨涓� - WANCHENG = '2' // 宸插畬鎴� + DAIJIEDAN = '0', // 寰呮帴鍗� + WANCHENG = '3', // 宸插畬鎴� + WEIXIU = '2', // 缁翠慨涓� + YIJIEDAN = '1' // 宸叉帴鍗� +} + +/** + * 缁翠慨宸ュ崟鐘舵�� + */ +export enum REPAIR_RES_STATUS { + WANCHENG = '3', // 宸插畬鎴� + WEIXIU = '2', // 缁翠慨涓� + YIJIEDAN = '1' // 宸叉帴鍗� } diff --git a/eims-ui/apps/web-antd/src/views/eims/repair-record/data.tsx b/eims-ui/apps/web-antd/src/views/eims/repair-record/data.tsx index ba5426d..3c57b6a 100644 --- a/eims-ui/apps/web-antd/src/views/eims/repair-record/data.tsx +++ b/eims-ui/apps/web-antd/src/views/eims/repair-record/data.tsx @@ -1,27 +1,42 @@ import type { VxeGridProps } from '#/adapter/vxe-table'; +import { DictEnum } from '@vben/constants'; +import { renderDict } from '#/utils/render'; export const columns: VxeGridProps['columns'] = [ { type: 'checkbox', width: 60, fixed: 'left' }, { + title: '澶勭悊鏃堕棿', + field: 'handleTime', + width: 200 + }, + { title: '鎿嶄綔鐢ㄦ埛', - field: 'operaUser', - width: 160, + field: 'operaUserName', + width: 160 }, { title: '鎿嶄綔', field: 'opera', width: 100, + slots: { + default: ({ row }) => { + if (!row.opera) { + return ''; + } + return renderDict(row.opera, DictEnum.REPAIR_RECORD_HANDLE); + } + } }, { title: '鎿嶄綔缁撴灉', field: 'operaResult', - width: 160, + width: 160 }, { title: '', field: 'blank', - minWidth: 100, + minWidth: 100 } ]; diff --git a/eims-ui/apps/web-antd/src/views/eims/repair-record/index.vue b/eims-ui/apps/web-antd/src/views/eims/repair-record/index.vue index 84de92f..1e1becc 100644 --- a/eims-ui/apps/web-antd/src/views/eims/repair-record/index.vue +++ b/eims-ui/apps/web-antd/src/views/eims/repair-record/index.vue @@ -70,6 +70,17 @@ // 浣跨敤 watch 鐩戝惉 resId 鐨勫彉鍖� watch( + () => props.reqId, + (newVal, oldVal) => { + if (newVal !== oldVal && newVal) { + tableApi.query(); + } + }, + { immediate: false } +); + +// 浣跨敤 watch 鐩戝惉 resId 鐨勫彉鍖� +watch( () => props.resId, (newVal, oldVal) => { if (newVal !== oldVal && newVal) { diff --git a/eims-ui/apps/web-antd/src/views/eims/repair-req/data.tsx b/eims-ui/apps/web-antd/src/views/eims/repair-req/data.tsx index a2afe69..f6ce668 100644 --- a/eims-ui/apps/web-antd/src/views/eims/repair-req/data.tsx +++ b/eims-ui/apps/web-antd/src/views/eims/repair-req/data.tsx @@ -232,6 +232,10 @@ getPopupContainer, options: getDictOptions(DictEnum.REPAIR_REQ_STATUS) }, + dependencies: { + show: () => false, + triggerFields: [''] + }, fieldName: 'status', defaultValue: '0', label: '澶勭悊鐘舵��' diff --git a/eims-ui/apps/web-antd/src/views/eims/repair-req/index.vue b/eims-ui/apps/web-antd/src/views/eims/repair-req/index.vue index 3dff59f..b686dd0 100644 --- a/eims-ui/apps/web-antd/src/views/eims/repair-req/index.vue +++ b/eims-ui/apps/web-antd/src/views/eims/repair-req/index.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> import type { Recordable } from '@vben/types'; -import { onMounted } from 'vue'; +import { onMounted, ref } from 'vue'; import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui'; import { $t } from '@vben/locales'; @@ -19,6 +19,7 @@ import { columns, querySchema } from './data'; import repairReqDrawer from './repair-req-drawer.vue'; import sendWorkDrawer from './send-work-drawer.vue'; +import RepairRecord from '#/views/eims/repair-record/index.vue'; interface Props { filterFlag?: boolean; @@ -93,12 +94,16 @@ }, id: 'eims-repair-req-index' }; - +const reqId = ref<string>(); const [BasicTable, tableApi] = useVbenVxeGrid({ formOptions, gridOptions, gridEvents: { - sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams) + sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams), + cellClick: (e: any) => { + const { row } = e; + reqId.value = row.id; + } } }); @@ -114,7 +119,8 @@ function openSendWork() { const rows = tableApi.grid.getCheckboxRecords(); const ids = rows.map((row: any) => row.id).join(','); - const filterData = rows.filter((item) => item.status === REPAIR_REQ_STATUS.WEIXIU || item.status === REPAIR_REQ_STATUS.WANCHENG); + // 涓嶅厑璁搁�夋嫨寰呮帴鍗曚互澶栫姸鎬佺殑鏁版嵁 + const filterData = rows.filter((item) => item.status !== REPAIR_REQ_STATUS.DAIJIEDAN); if (rows.length === 0) { message.warn('璇烽�夋嫨鎶ヤ慨鍗曞悗娲惧伐锛�'); return; @@ -244,8 +250,8 @@ <template> <Page :auto-content-height="true"> - <div class="flex h-full gap-[8px]"> - <BasicTable class="flex-1 overflow-hidden" table-title="鏁呴殰鎶ヤ慨鍒楄〃"> + <div class="flex h-full gap-[8px] flex-col"> + <BasicTable class="h-2/3" table-title="鏁呴殰鎶ヤ慨鍒楄〃"> <template #toolbar-tools> <Space> <a-button v-access:code="['eims:repairReq:send']" @click="openSendWork"> 娲惧伐 </a-button> @@ -280,6 +286,7 @@ </Space> </template> </BasicTable> + <RepairRecord :req-id="reqId" class="h-1/3" table-title="缁翠慨璁板綍" /> </div> <RepairReqDrawer @reload="tableApi.query()" /> <SendWorkDrawer @reload="tableApi.query()" /> diff --git a/eims-ui/apps/web-antd/src/views/eims/repair-res/data.tsx b/eims-ui/apps/web-antd/src/views/eims/repair-res/data.tsx index 22f5166..3f5d7b4 100644 --- a/eims-ui/apps/web-antd/src/views/eims/repair-res/data.tsx +++ b/eims-ui/apps/web-antd/src/views/eims/repair-res/data.tsx @@ -3,14 +3,10 @@ import { DictEnum } from '@vben/constants'; import { getPopupContainer } from '@vben/utils'; -import dayjs from 'dayjs'; - import { type FormSchemaGetter } from '#/adapter/form'; import { REPAIR_REQ_TYPE } from '#/constants/dict'; import { getDictOptions } from '#/utils/dict'; import { renderDict } from '#/utils/render'; - -const curDateTime = dayjs().format('YYYY-MM-DD HH:mm:ss'); export const querySchema: FormSchemaGetter = () => [ { @@ -76,7 +72,7 @@ { title: '鎶ヤ慨鍗曞彿', field: 'reqCode', - minWidth: 160, + minWidth: 160 }, { title: '缁翠慨閮ㄩ棬', @@ -167,7 +163,7 @@ fixed: 'right', slots: { default: 'action' }, title: '鎿嶄綔', - width: 130 + width: 200 } ]; @@ -187,7 +183,8 @@ show: () => false, triggerFields: [''] }, - label: '鎶ヤ慨id' + label: '鎶ヤ慨id', + rules: 'required' }, { component: 'Input', @@ -196,7 +193,8 @@ show: () => false, triggerFields: [''] }, - label: '鎶ヤ慨浜�' + label: '鎶ヤ慨浜�', + rules: 'required' }, { component: 'Input', @@ -205,35 +203,41 @@ show: () => false, triggerFields: [''] }, - label: '鎶ヤ慨閮ㄩ棬' + label: '鎶ヤ慨閮ㄩ棬', + rules: 'required' }, { component: 'Input', fieldName: 'reqCode', - label: '鎶ヤ慨鍗曞彿' + label: '鎶ヤ慨鍗曞彿', + rules: 'required' }, { component: 'Input', fieldName: 'resCode', - label: '缁翠慨鍗曞彿' + label: '缁翠慨鍗曞彿', + rules: 'required' }, { component: 'Textarea', formItemClass: 'items-baseline', fieldName: 'resReason', - label: '鍘熷洜鍒嗘瀽' + label: '鍘熷洜鍒嗘瀽', + rules: 'required' }, { component: 'Textarea', formItemClass: 'items-baseline', fieldName: 'resHandle', - label: '澶勭悊鎺柦' + label: '澶勭悊鎺柦', + rules: 'required' }, { component: 'Textarea', formItemClass: 'items-baseline', fieldName: 'resPrevent', - label: '棰勯槻鎺柦' + label: '棰勯槻鎺柦', + rules: 'required' }, { component: 'Input', @@ -260,8 +264,9 @@ options: getDictOptions(DictEnum.REPAIR_RES_STATUS) }, fieldName: 'status', - defaultValue: '0', - label: '缁翠慨鐘舵��' + defaultValue: '1', + label: '缁翠慨鐘舵��', + rules: 'required' }, { component: 'DatePicker', @@ -271,9 +276,9 @@ valueFormat: 'YYYY-MM-DD HH:mm:ss', getPopupContainer }, - defaultValue: curDateTime, fieldName: 'startTime', - label: '寮�濮嬫椂闂�' + label: '寮�濮嬫椂闂�', + rules: 'required' }, { component: 'DatePicker', @@ -292,8 +297,8 @@ defaultValue: undefined, fieldName: 'resDept', label: '缁翠慨閮ㄩ棬', - help: `鎶ヤ慨浜哄憳鎵�灞為儴闂╜ - // rules: 'selectRequired', + help: `鎶ヤ慨浜哄憳鎵�灞為儴闂╜, + rules: 'selectRequired' }, { component: 'Select', @@ -303,14 +308,13 @@ getPopupContainer }, fieldName: 'resUser', - label: '缁翠慨浜�' + label: '缁翠慨浜�', + rules: 'selectRequired' }, { component: 'Textarea', formItemClass: 'items-baseline', fieldName: 'remark', label: '澶囨敞' - }, + } ]; - - diff --git a/eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue b/eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue index 3b24afa..b2b4668 100644 --- a/eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue +++ b/eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue @@ -1,8 +1,9 @@ <script setup lang="ts"> import type { Recordable } from '@vben/types'; -import { onMounted, ref } from 'vue'; +import { computed, onMounted, ref } from 'vue'; +import { useAccess } from '@vben/access'; import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui'; import { $t } from '@vben/locales'; import { useUserStore } from '@vben/stores'; @@ -11,8 +12,9 @@ import { Modal, Popconfirm, Space } from 'ant-design-vue'; import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table'; -import { delRepairRes, listRepairRes, repairResExport } from '#/api/eims/repair-res'; +import { delRepairRes, listRepairRes, repairResExport, updateRepairRes } from '#/api/eims/repair-res'; import { getDeptTree, userList } from '#/api/system/user'; +import { REPAIR_RES_STATUS } from '#/constants/dict'; import { commonDownloadExcel } from '#/utils/file/download'; import RepairRecord from '../repair-record/index.vue'; @@ -102,6 +104,27 @@ repairResDrawerApi.open(); } +async function handleEditStatus(record: Recordable<any>, status: string) { + repairResDrawerApi.setData({ id: record.id, action: status, status }); + repairResDrawerApi.open(); +} + +const { hasAccessByRoles } = useAccess(); +const isSuperAdmin = computed(() => hasAccessByRoles(['superadmin'])); + +function weixiu(row: any) { + return (isSuperAdmin.value || row.resUser === userId) && row.status === REPAIR_RES_STATUS.YIJIEDAN; +} + +function wancheng(row: any) { + return (isSuperAdmin.value || row.resUser === userId) && row.status === REPAIR_RES_STATUS.WEIXIU; +} + +async function handleRepairStatus(record: Recordable<any>, status: string) { + record.status = status; + handleConfirm(record); +} + async function handleDelete(row: Recordable<any>) { await delRepairRes(row.id); await tableApi.query(); @@ -125,6 +148,15 @@ commonDownloadExcel(repairResExport, '缁翠慨宸ュ崟璁板綍', tableApi.formApi.form.values, { fieldMappingTime: formOptions.fieldMappingTime }); +} + +async function handleConfirm(data: any) { + try { + await updateRepairRes(data); + } catch (error) { + console.error(error); + } finally { + } } onMounted(async () => { @@ -217,14 +249,30 @@ > {{ $t('pages.common.delete') }} </a-button> - <a-button type="primary" v-access:code="['eims:repairRes:add']" @click="handleAdd"> - {{ $t('pages.common.add') }} - </a-button> + <a-button type="primary" v-access:code="['eims:repairRes:add']" @click="handleAdd"> 鎺ュ崟</a-button> </Space> </template> <template #action="{ row }"> <Space> + <ghost-button + v-if="weixiu(row)" + class="btn-success" + v-access:code="['eims:repairRes:edit']" + @click.stop="handleEditStatus(row, REPAIR_RES_STATUS.WEIXIU)" + > + 缁翠慨 + </ghost-button> + + <ghost-button + v-if="wancheng(row)" + class="btn-success" + v-access:code="['eims:repairRes:edit']" + @click.stop="handleEditStatus(row, REPAIR_RES_STATUS.WANCHENG)" + > + 瀹屾垚 + </ghost-button> + <ghost-button v-access:code="['eims:repairRes:edit']" @click.stop="handleEdit(row)"> {{ $t('pages.common.edit') }} </ghost-button> diff --git a/eims-ui/apps/web-antd/src/views/eims/repair-res/repair-res-drawer.vue b/eims-ui/apps/web-antd/src/views/eims/repair-res/repair-res-drawer.vue index a38953a..2313d88 100644 --- a/eims-ui/apps/web-antd/src/views/eims/repair-res/repair-res-drawer.vue +++ b/eims-ui/apps/web-antd/src/views/eims/repair-res/repair-res-drawer.vue @@ -10,6 +10,7 @@ import { useVbenForm } from '#/adapter/form'; import { addRepairRes, getRepairRes, updateRepairRes } from '#/api/eims/repair-res'; import { getDeptTree, userList } from '#/api/system/user'; +import { REPAIR_RES_STATUS } from '#/constants/dict'; import reqModal from '#/views/eims/components/repair-req-modal.vue'; import { drawerSchema } from './data'; @@ -44,6 +45,7 @@ drawerApi.drawerLoading(true); const { id } = drawerApi.getData() as { id?: number | string }; + const { action } = drawerApi.getData() as { action?: string }; const { resUser } = drawerApi.getData() as { resUser?: number | string }; const { resDept } = drawerApi.getData() as { resDept?: number | string }; isUpdate.value = !!id; @@ -70,11 +72,141 @@ await setupUserOptions(record.resDept); } } + showAllColumns(); + // 鏍规嵁action 鏄剧ず闅愯棌鍒� + if (action && action === REPAIR_RES_STATUS.WEIXIU) { + await formApi.setValues({ 'status': REPAIR_RES_STATUS.WEIXIU }); + showWeixiuColumns(); + } else if (action && action === REPAIR_RES_STATUS.WANCHENG) { + await formApi.setValues({ 'status': REPAIR_RES_STATUS.WANCHENG }); + showWanchengColumns(); + } drawerApi.drawerLoading(false); } }); +function showAllColumns() { + const show = true; + formApi.updateSchema([ + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'resReason' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'resHandle' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'resPrevent' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'status' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'endTime' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'resDept' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'resUser' + } + ]); +} +function showWeixiuColumns() { + const show = false; + formApi.updateSchema([ + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'resReason' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'resHandle' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'resPrevent' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'status' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'endTime' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'resDept' + }, + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'resUser' + } + ]); +} +function showWanchengColumns() { + const show = false; + formApi.updateSchema([ + { + dependencies: { + show: () => show, + triggerFields: [''] + }, + fieldName: 'status' + } + ]); +} + const [ReqModal, reqModalApi] = useVbenModal({ connectedComponent: reqModal, draggable: true, diff --git a/eims-ui/packages/@core/base/shared/src/constants/dict-enum.ts b/eims-ui/packages/@core/base/shared/src/constants/dict-enum.ts index a5f4fd5..a1bfb45 100644 --- a/eims-ui/packages/@core/base/shared/src/constants/dict-enum.ts +++ b/eims-ui/packages/@core/base/shared/src/constants/dict-enum.ts @@ -7,9 +7,10 @@ FIXTURE_BORROW_RECORD_STATUS = 'fixture_borrow_record_status', // 宸ュ叿锛堟不鍏凤級鍊熺敤璁板綍鐘舵�� FIXTURE_BORROW_STATUS = 'fixture_borrow_status', // 宸ュ叿锛堟不鍏凤級鍊熺敤鐘舵�� REPAIR_FAULT_TYPE = 'repair_fault_type', // 鎶ヤ慨鐘舵�� + REPAIR_RECORD_HANDLE = 'repair_record_handle', // 缁翠慨璁板綍鎿嶄綔 REPAIR_REQ_STATUS = 'repair_req_status', // 鎶ヤ慨鐘舵�� - REPAIR_RES_STATUS = 'repair_res_status', // 缁翠慨鐘舵�� REPAIR_REQ_TYPE = 'repair_req_type', // 鎶ヤ慨绫诲瀷 + REPAIR_RES_STATUS = 'repair_res_status', // 缁翠慨鐘舵�� REPAIR_URGENCY_LEVEL = 'repair_urgency_level', // 鎶ヤ慨绱ф�ョ▼搴� SYS_COMMON_STATUS = 'sys_common_status', SYS_DEVICE_TYPE = 'sys_device_type', // 璁惧绫诲瀷 diff --git a/eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java b/eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java index a8332e8..878a0bb 100644 --- a/eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java +++ b/eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java @@ -21,17 +21,17 @@ String REPAIR_REQ_STATUS = "repair_req_status"; interface REPAIR_REQ_STATUS_DETAIL { /** - * 鎺ュ崟 + * 宸叉帴鍗� */ - String JIEDAN = "0"; + String YIJIEDAN = "1"; /** * 缁翠慨 */ - String WEIXIU = "1"; + String WEIXIU = "2"; /** * 瀹屾垚 */ - String WANCHENG = "2"; + String WANCHENG = "3"; } /** @@ -40,13 +40,18 @@ String REPAIR_RES_STATUS = "repair_res_status"; interface REPAIR_RES_STATUS_DETAIL { /** + * 鎺ュ崟 + */ + String YIJIEDAN = "1"; + + /** * 缁翠慨 */ - String WEIXIU = "0"; + String WEIXIU = "2"; /** * 瀹屾垚 */ - String WANCHENG = "1"; + String WANCHENG = "3"; } /** @@ -61,12 +66,17 @@ /** * 鎺ュ崟 */ - String JIEDAN = "2"; + String YIJIEDAN = "2"; + + /** + * 缁翠慨 + */ + String WEIXIU = "3"; /** * 瀹屾垚 */ - String WANCHENG = "3"; + String WANCHENG = "4"; } } diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java index 2ab96cc..1b373af 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java @@ -32,7 +32,6 @@ /** * 鎶ヤ慨鍗昳d */ - @NotNull(message = "鎶ヤ慨鍗曚笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class }) private Long reqId; private Long reqUser;//鎶ヤ慨浜� @@ -42,19 +41,16 @@ /** * 缁翠慨鍗曞彿 */ - @NotNull(message = "鎶ヤ慨鍗曠紪鍙蜂笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class }) private String resCode; /** * 缁翠慨浜� */ - @NotNull(message = "缁翠慨浜轰笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class }) private Long resUser; /** * 缁翠慨浜洪儴闂� */ - @NotNull(message = "缁翠慨浜洪儴闂ㄤ笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class }) private Long resDept; /** @@ -76,13 +72,11 @@ /** * 缁翠慨鐘舵��(瀛楀吀) */ - @NotBlank(message = "缁翠慨鐘舵��(瀛楀吀)涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class }) private String status; /** * 寮�濮嬫椂闂� */ - @NotNull(message = "寮�濮嬫椂闂翠笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class }) private Date startTime; /** diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairRecordVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairRecordVo.java index b548da6..4385855 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairRecordVo.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairRecordVo.java @@ -2,6 +2,8 @@ import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; import org.dromara.eims.domain.EimsRepairRecord; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -31,7 +33,7 @@ private static final long serialVersionUID = 1L; /** - * + * */ @ExcelProperty(value = "") private Long id; @@ -60,6 +62,10 @@ @ExcelProperty(value = "鎿嶄綔鐢ㄦ埛") private Long operaUser; + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "operaUser") + private Long operaUserName; + + /** * 鎿嶄綔(瀛楀吀) */ diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairReqServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairReqServiceImpl.java index 437c0e7..3ef90e9 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairReqServiceImpl.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairReqServiceImpl.java @@ -191,7 +191,7 @@ //鏂板鐘舵�� record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.XINZENG); record.setOperaUser(add.getCreateBy()); - record.setOperaResult("鏂板锛岀敓鎴愭姤淇崟"); + record.setOperaResult("鐢熸垚鎶ヤ慨鍗�"); //鏂板鏃剁敓鎴愯褰� recordMapper.insert(record); } diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java index d809c00..0158ac9 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.SneakyThrows; import org.dromara.common.core.constant.DictConstants; +import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.service.RepairResService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.SpringUtils; @@ -15,6 +16,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.eims.domain.*; import org.dromara.eims.domain.vo.EimsRepairReqVo; import org.dromara.eims.mapper.EimsRepairRecordMapper; @@ -23,6 +25,7 @@ import org.dromara.system.domain.SysDept; import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.mapper.SysDeptMapper; +import org.redisson.misc.LogHelper; import org.springframework.stereotype.Service; import org.dromara.eims.domain.bo.EimsRepairResBo; import org.dromara.eims.domain.vo.EimsRepairResVo; @@ -115,7 +118,7 @@ // 鏂板缁翠慨宸ュ崟鐨勬椂鍊欐洿鏂版姤淇崟鏁版嵁 EimsRepairReqVo reqVo = reqMapper.selectVoById(bo.getReqId()); reqVo.setRepairId(add.getId()); - reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.WEIXIU); + reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.YIJIEDAN); EimsRepairReq req = MapstructUtils.convert(reqVo, EimsRepairReq.class); reqMapper.updateById(req); @@ -135,9 +138,9 @@ record.setResId(add.getId()); record.setHandleTime(new Date()); //鎺ュ崟鐘舵�� - record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.JIEDAN); + record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.YIJIEDAN); record.setOperaUser(add.getCreateBy()); - record.setOperaResult("鎺ュ崟锛岀敓鎴愮淮淇伐鍗�"); + record.setOperaResult("鐢熸垚缁翠慨宸ュ崟"); //鏂板鏃剁敓鎴愯褰� recordMapper.insert(record); @@ -161,8 +164,7 @@ insert.setResCode(reqVo.getCode().replace("BXD","WXD")); insert.setResUser(bo.getResUser()); insert.setResDept(bo.getResDept()); - insert.setStatus(DictConstants.REPAIR_RES_STATUS_DETAIL.WEIXIU); - insert.setStartTime(new Date()); + insert.setStatus(DictConstants.REPAIR_RES_STATUS_DETAIL.YIJIEDAN); Boolean b = insertByBo(insert); if(!b)throw new Exception(""); } @@ -178,29 +180,56 @@ @Transactional(rollbackFor = Exception.class) @Override public Boolean updateByBo(EimsRepairResBo bo) { + LoginUser loginUser = LoginHelper.getLoginUser(); EimsRepairRes update = MapstructUtils.convert(bo, EimsRepairRes.class); EimsRepairResVo resVo = baseMapper.selectVoById(bo.getId()); String status = resVo.getStatus(); - //棣栨鏇存柊闇�瑕佸悓姝ユ洿鏂版姤淇崟鐘舵�� + //缁翠慨宸ュ崟寮�濮嬬淮淇紝鍚屾鏇存柊鎶ヤ慨鍗� 浠ュ強 缁翠慨璁板綍 + if (bo.getStatus().equals(DictConstants.REPAIR_RES_STATUS_DETAIL.WEIXIU) && + status.equals(DictConstants.REPAIR_RES_STATUS_DETAIL.YIJIEDAN)) { + //1.璁剧疆寮�濮嬬淮淇椂闂� + + //2.鏇存柊鎶ヤ慨鍗曚负缁翠慨鐘舵�� + EimsRepairReqVo reqVo = reqMapper.selectVoById(bo.getReqId()); + reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.WEIXIU); + EimsRepairReq req = MapstructUtils.convert(reqVo, EimsRepairReq.class); + reqMapper.updateById(req); + + //3.鐢熸垚缁翠慨璁板綍 + EimsRepairRecord record = new EimsRepairRecord(); + record.setResId(bo.getId()); + record.setReqId(bo.getReqId()); + record.setHandleTime(new Date()); + record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.WEIXIU); + assert loginUser != null; + record.setOperaUser(loginUser.getUserId()); + record.setOperaResult("寮�濮嬬淮淇�"); + recordMapper.insert(record); + } + + + //缁翠慨宸ュ崟瀹屾垚锛屽悓姝ユ洿鏂版姤淇崟 浠ュ強 缁翠慨璁板綍 if (bo.getStatus().equals(DictConstants.REPAIR_RES_STATUS_DETAIL.WANCHENG) && status.equals(DictConstants.REPAIR_RES_STATUS_DETAIL.WEIXIU)) { + //1.璁剧疆缁撴潫缁翠慨鏃堕棿 + + //2.鏇存柊鎶ヤ慨鍗曚负瀹屾垚鐘舵�� EimsRepairReqVo reqVo = reqMapper.selectVoById(bo.getReqId()); reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.WANCHENG); EimsRepairReq req = MapstructUtils.convert(reqVo, EimsRepairReq.class); reqMapper.updateById(req); - //鐢熸垚缁翠慨璁板綍 + //3.鐢熸垚缁翠慨璁板綍 EimsRepairRecord record = new EimsRepairRecord(); record.setResId(bo.getId()); record.setReqId(bo.getReqId()); record.setHandleTime(new Date()); - //瀹屾垚鐘舵�� record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.WANCHENG); - record.setOperaUser(bo.getUpdateBy()); + assert loginUser != null; + record.setOperaUser(loginUser.getUserId()); record.setOperaResult("瀹屾垚缁翠慨宸ュ崟"); recordMapper.insert(record); - } validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/utils/DataFilterUtil.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/utils/DataFilterUtil.java index 03f16af..4b54247 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/utils/DataFilterUtil.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/utils/DataFilterUtil.java @@ -40,7 +40,7 @@ userList.add(loginUser.getUserId()); }else if (rolePermission.contains(Role.repair.name())) { //TODO 缁翠慨宸ュ彧鑳芥煡璇㈡湭鎺ュ崟鐘舵�佺殑鎶ヤ慨鍗曪紙鍏蜂綋鐘舵�佸弬鑰冨瓧鍏竢epair_req_status锛� - bo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.JIEDAN); + bo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.YIJIEDAN); } if(userList.size()>0){ params.put("createBy", userList); -- Gitblit v1.9.3