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