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