From ec4d16c8a630960a4671a60f4d1957fd3de9def3 Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期四, 27 二月 2025 16:53:59 +0800
Subject: [PATCH] 完成维修工单查看维修记录子表
---
eims-ui/apps/web-antd/src/constants/dict/index.ts | 9
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairRecordServiceImpl.java | 133 ++++++
eims-ui/apps/web-antd/src/api/eims/repair-res/index.ts | 10
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairRecordBo.java | 73 +++
eims-ui/apps/web-antd/src/views/eims/repair-record/data.tsx | 27 +
eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java | 3
eims-ui/apps/web-antd/src/views/eims/repair-res/repair-res-drawer.vue | 2
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsRepairRecordController.java | 105 ++++
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsRepairResController.java | 10
eims-ui/apps/web-antd/src/api/eims/repair-record/index.ts | 60 ++
eims-ui/apps/web-antd/src/views/eims/repair-record/index.vue | 87 +++
eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java | 10
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java | 82 +++
eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsRepairRecordMapper.xml | 7
eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java | 7
eims-ui/apps/web-antd/src/views/eims/fixture/index.vue | 1
eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue | 17
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/utils/DataFilterUtil.java | 14
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsRepairRes.java | 4
eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java | 29 +
eims-ui/apps/web-antd/src/views/eims/repair-req/send-work-drawer.vue | 142 ++++++
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsRepairRecord.java | 68 +++
eims-ui/apps/web-antd/src/api/system/user/index.ts | 35
eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java | 20
eims-ui/apps/web-antd/src/views/eims/repair-req/data.tsx | 38 +
eims-ui/apps/web-antd/src/views/eims/repair-req/index.vue | 34 +
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsRepairRecordService.java | 68 +++
eims-ui/apps/web-antd/src/views/eims/repair-req/repair-req-drawer.vue | 9
eims-ui/apps/web-antd/src/api/eims/repair-record/model.d.ts | 41 +
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsRepairRecordMapper.java | 15
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsRepairResService.java | 8
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairResBo.java | 16
eims-ui/apps/web-antd/src/views/eims/repair-res/data.tsx | 20
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairResVo.java | 4
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairRecordVo.java | 82 +++
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairReqServiceImpl.java | 23
36 files changed, 1,254 insertions(+), 59 deletions(-)
diff --git a/eims-ui/apps/web-antd/src/api/eims/repair-record/index.ts b/eims-ui/apps/web-antd/src/api/eims/repair-record/index.ts
new file mode 100644
index 0000000..66f7458
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/api/eims/repair-record/index.ts
@@ -0,0 +1,60 @@
+import type { RepairRecordVO } from './model';
+
+import type { ID, IDS } from '#/api/common';
+
+import { commonExport } from '#/api/helper';
+import { requestClient } from '#/api/request';
+
+enum Api {
+ repairRecordExport = '/eims/repairRecord/export',
+ repairRecordList = '/eims/repairRecord/list',
+ root = '/eims/repairRecord'
+}
+
+/**
+ * 鏌ヨ缁翠慨璁板綍鍒楄〃
+ * @param query
+ * @returns {*}
+ */
+
+export function listRepairRecord(params?: any) {
+ return requestClient.get<RepairRecordVO[]>(Api.repairRecordList, { params });
+}
+
+/**
+ * 鏌ヨ缁翠慨璁板綍璇︾粏
+ * @param RepairRecordId
+ */
+export function getRepairRecord(RepairRecordId: ID) {
+ return requestClient.get<RepairRecordVO>(`${Api.root}/${RepairRecordId}`);
+}
+
+/**
+ * 鏂板缁翠慨璁板綍
+ * @param data
+ */
+export function addRepairRecord(data: any) {
+ return requestClient.postWithMsg<void>(`${Api.root}`, data);
+}
+/**
+ * 淇敼缁翠慨璁板綍
+ * @param data
+ */
+export function updateRepairRecord(data: any) {
+ return requestClient.putWithMsg<void>(Api.root, data);
+}
+
+/**
+ * 鍒犻櫎缁翠慨璁板綍
+ * @param RepairRecordId
+ */
+export function delRepairRecord(RepairRecordId: IDS) {
+ return requestClient.deleteWithMsg<void>(`${Api.root}/${RepairRecordId}`);
+}
+/**
+ * 瀵煎嚭
+ * @param
+ */
+export function RepairRecordExport(data: any) {
+ return commonExport(Api.repairRecordExport, data);
+}
diff --git a/eims-ui/apps/web-antd/src/api/eims/repair-record/model.d.ts b/eims-ui/apps/web-antd/src/api/eims/repair-record/model.d.ts
new file mode 100644
index 0000000..749ab97
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/api/eims/repair-record/model.d.ts
@@ -0,0 +1,41 @@
+export interface RepairRecordVO {
+ /**
+ *
+ */
+ id: number | string;
+
+ /**
+ * 鎶ヤ慨鍗昳d
+ */
+ reqId: number | string;
+
+ /**
+ * 缁翠慨鍗昳d
+ */
+ resId: number | string;
+
+ /**
+ * 澶勭悊鏃堕棿
+ */
+ handleTime: string;
+
+ /**
+ * 鎿嶄綔鐢ㄦ埛
+ */
+ operaUser: number;
+
+ /**
+ * 鎿嶄綔(瀛楀吀)
+ */
+ opera: string;
+
+ /**
+ * 鎿嶄綔缁撴灉
+ */
+ operaResult: string;
+
+ /**
+ * 澶囨敞
+ */
+ remark: string;
+}
diff --git a/eims-ui/apps/web-antd/src/api/eims/repair-res/index.ts b/eims-ui/apps/web-antd/src/api/eims/repair-res/index.ts
index 40b166f..9d4bd8a 100644
--- a/eims-ui/apps/web-antd/src/api/eims/repair-res/index.ts
+++ b/eims-ui/apps/web-antd/src/api/eims/repair-res/index.ts
@@ -34,7 +34,15 @@
* @param data
*/
export function addRepairRes(data: any) {
- return requestClient.postWithMsg<void>(Api.root, data);
+ return requestClient.postWithMsg<void>(`${Api.root}/add`, data);
+}
+
+/**
+ * 鏂板缁翠慨宸ュ崟-鎵归噺
+ * @param data
+ */
+export function addBatchRepairRes(data: any) {
+ return requestClient.postWithMsg<void>(`${Api.root}/addBatch`, data);
}
/**
diff --git a/eims-ui/apps/web-antd/src/api/system/user/index.ts b/eims-ui/apps/web-antd/src/api/system/user/index.ts
index ff2a3d5..249ebc2 100644
--- a/eims-ui/apps/web-antd/src/api/system/user/index.ts
+++ b/eims-ui/apps/web-antd/src/api/system/user/index.ts
@@ -1,10 +1,4 @@
-import type {
- DeptTree,
- ResetPwdParam,
- User,
- UserImportParam,
- UserInfoResponse,
-} from './model';
+import type { DeptTree, ResetPwdParam, User, UserImportParam, UserInfoResponse } from './model';
import type { ID, IDS, PageQuery, PageResult } from '#/api/common';
@@ -12,6 +6,7 @@
import { requestClient } from '#/api/request';
enum Api {
+ deptRoleUserList = '/system/user/deptRoleUser',
deptTree = '/system/user/deptTree',
listDeptUsers = '/system/user/list/dept',
root = '/system/user',
@@ -21,7 +16,7 @@
userImportTemplate = '/system/user/importTemplate',
userList = '/system/user/list',
userResetPassword = '/system/user/resetPwd',
- userStatusChange = '/system/user/changeStatus',
+ userStatusChange = '/system/user/changeStatus'
}
/**
@@ -31,6 +26,10 @@
*/
export function userList(params?: PageQuery) {
return requestClient.get<PageResult<User>>(Api.userList, { params });
+}
+
+export function deptRoleUserList(params?: any) {
+ return requestClient.get<User[]>(Api.deptRoleUserList, { params });
}
/**
@@ -48,16 +47,12 @@
* @returns void
*/
export function userImportData(data: UserImportParam) {
- return requestClient.post<{ code: number; msg: string }>(
- Api.userImport,
- data,
- {
- headers: {
- 'Content-Type': ContentTypeEnum.FORM_DATA,
- },
- isTransformResponse: false,
+ return requestClient.post<{ code: number; msg: string }>(Api.userImport, data, {
+ headers: {
+ 'Content-Type': ContentTypeEnum.FORM_DATA
},
- );
+ isTransformResponse: false
+ });
}
/**
@@ -70,8 +65,8 @@
{},
{
isTransformResponse: false,
- responseType: 'blob',
- },
+ responseType: 'blob'
+ }
);
}
@@ -129,7 +124,7 @@
*/
export function userResetPassword(data: ResetPwdParam) {
return requestClient.putWithMsg<void>(Api.userResetPassword, data, {
- encrypt: true,
+ encrypt: true
});
}
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 e43f742..8856576 100644
--- a/eims-ui/apps/web-antd/src/constants/dict/index.ts
+++ b/eims-ui/apps/web-antd/src/constants/dict/index.ts
@@ -20,5 +20,12 @@
EQU = '1', // 璁惧鏁呴殰
FIXTURE = '2', // 宸ュ叿鏁呴殰
OTHER = '3' // 鍏朵粬鏁呴殰
-
+}
+/**
+ * 鎶ヤ慨鐘舵��
+ */
+export enum REPAIR_REQ_STATUS {
+ JIEDAN = '0', // 寰呮帴鍗�
+ WEIXIU = '1', // 缁翠慨涓�
+ WANCHENG = '2' // 宸插畬鎴�
}
diff --git a/eims-ui/apps/web-antd/src/views/eims/fixture/index.vue b/eims-ui/apps/web-antd/src/views/eims/fixture/index.vue
index 91c51ba..cdcde58 100644
--- a/eims-ui/apps/web-antd/src/views/eims/fixture/index.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/fixture/index.vue
@@ -108,7 +108,6 @@
sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams),
cellClick: (e: any) => {
const { row } = e;
- console.error()
handleBorroeList(row)
}
}
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
new file mode 100644
index 0000000..ba5426d
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/views/eims/repair-record/data.tsx
@@ -0,0 +1,27 @@
+import type { VxeGridProps } from '#/adapter/vxe-table';
+
+
+
+export const columns: VxeGridProps['columns'] = [
+ { type: 'checkbox', width: 60, fixed: 'left' },
+ {
+ title: '鎿嶄綔鐢ㄦ埛',
+ field: 'operaUser',
+ width: 160,
+ },
+ {
+ title: '鎿嶄綔',
+ field: 'opera',
+ width: 100,
+ },
+ {
+ title: '鎿嶄綔缁撴灉',
+ field: 'operaResult',
+ width: 160,
+ },
+ {
+ title: '',
+ field: 'blank',
+ 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
new file mode 100644
index 0000000..84de92f
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/views/eims/repair-record/index.vue
@@ -0,0 +1,87 @@
+<script setup lang="ts">
+import { watch } from 'vue';
+
+import { useVbenVxeGrid, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
+import { listRepairRecord } from '#/api/eims/repair-record';
+
+import { columns } from '../repair-record/data';
+
+interface Props {
+ reqId?: string;
+ resId?: string;
+}
+
+const props = defineProps<Props>();
+
+const gridOptions: VxeGridProps = {
+ checkboxConfig: {
+ // 楂樹寒
+ highlight: true,
+ // 缈婚〉鏃朵繚鐣欓�変腑鐘舵��
+ reserve: true
+ // 鐐瑰嚮琛岄�変腑
+ // trigger: 'row'
+ },
+ columns,
+ height: 'auto',
+ keepSource: true,
+ pagerConfig: {},
+ proxyConfig: {
+ ajax: {
+ query: async ({ page }, formValues = {}) => {
+ if (props.reqId) {
+ const params = { reqId: props.reqId };
+ Object.assign(formValues, params);
+ } else if (props.resId) {
+ const params = { resId: props.resId };
+ Object.assign(formValues, params);
+ } else {
+ const params = { resId: -1 };
+ Object.assign(formValues, params);
+ }
+ return await listRepairRecord({
+ pageNum: page.currentPage,
+ pageSize: page.pageSize,
+ ...formValues
+ // ...useRoleBaseFilters()
+ });
+ }
+ }
+ },
+ rowConfig: {
+ isHover: true,
+ keyField: 'id'
+ },
+ sortConfig: {
+ // 杩滅▼鎺掑簭
+ remote: true,
+ // 鏀寔澶氬瓧娈垫帓搴� 榛樿鍏抽棴
+ multiple: true
+ },
+ id: 'eims-repair-record-index'
+};
+
+const [BasicTable, tableApi] = useVbenVxeGrid({
+ gridOptions,
+ gridEvents: {
+ sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams)
+ }
+});
+
+// 浣跨敤 watch 鐩戝惉 resId 鐨勫彉鍖�
+watch(
+ () => props.resId,
+ (newVal, oldVal) => {
+ if (newVal !== oldVal && newVal) {
+ tableApi.query();
+ }
+ },
+ { immediate: false }
+);
+</script>
+
+<template>
+ <div class="w-full">
+ <BasicTable table-title="鎿嶄綔璁板綍" />
+ </div>
+</template>
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 972afef..a2afe69 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
@@ -303,3 +303,41 @@
label: '鎶ヤ慨浜�'
}
];
+
+export const modalSchema: FormSchemaGetter = () => [
+ {
+ component: 'Input',
+ dependencies: {
+ show: () => false,
+ triggerFields: ['']
+ },
+ fieldName: 'id'
+ },
+ {
+ component: 'Input',
+ dependencies: {
+ show: () => false,
+ triggerFields: ['']
+ },
+ fieldName: 'batchReqIds'
+ },
+ {
+ component: 'TreeSelect',
+ // 鍦╠rawer閲屾洿鏂� 杩欓噷涓嶉渶瑕侀粯璁ょ殑componentProps
+ defaultValue: undefined,
+ fieldName: 'resDept',
+ label: '缁翠慨閮ㄩ棬',
+ help: `鎶ヤ慨浜哄憳鎵�灞為儴闂╜
+ // rules: 'selectRequired',
+ },
+ {
+ component: 'Select',
+ componentProps: {
+ showSearch: true,
+ allowClear: true,
+ getPopupContainer
+ },
+ fieldName: 'resUser',
+ 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 fae59d3..3dff59f 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
@@ -8,23 +8,23 @@
import { useUserStore } from '@vben/stores';
import { addFullName, getPopupContainer, getVxePopupContainer } from '@vben/utils';
-import { Modal, Popconfirm, Space } from 'ant-design-vue';
+import { message, Modal, Popconfirm, Space } from 'ant-design-vue';
import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
import { delRepairReq, listRepairReq, repairReqExport } from '#/api/eims/repair-req';
import { getDeptTree, userList } from '#/api/system/user';
+import { REPAIR_REQ_STATUS } from '#/constants/dict';
import { commonDownloadExcel } from '#/utils/file/download';
import { columns, querySchema } from './data';
import repairReqDrawer from './repair-req-drawer.vue';
-
+import sendWorkDrawer from './send-work-drawer.vue';
interface Props {
filterFlag?: boolean;
status?: string;
}
const props = withDefaults(defineProps<Props>(), { filterFlag: false, status: undefined });
-
const userStore = useUserStore();
const userId = userStore.userInfo?.userId;
@@ -33,7 +33,6 @@
defineExpose({
tableSelect
});
-
const formOptions: VbenFormProps = {
commonConfig: {
@@ -107,6 +106,26 @@
connectedComponent: repairReqDrawer
});
+const [SendWorkDrawer, drawerApi] = useVbenDrawer({
+ connectedComponent: sendWorkDrawer,
+ title: '娲惧伐'
+});
+
+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);
+ if (rows.length === 0) {
+ message.warn('璇烽�夋嫨鎶ヤ慨鍗曞悗娲惧伐锛�');
+ return;
+ } else if (filterData.length > 0) {
+ message.warn('璇烽�夋嫨鏈帴鍗曟姤淇崟鍚庢淳宸ワ紒');
+ return;
+ }
+ drawerApi.setData({ batchReqIds: ids });
+ drawerApi.open();
+}
+
function handleAdd() {
repairReqDrawerApi.setData({ reqUser: userId, reqDept: deptId });
repairReqDrawerApi.open();
@@ -141,6 +160,11 @@
fieldMappingTime: formOptions.fieldMappingTime
});
}
+
+/**
+ * 娲惧伐
+ */
+function handleSendWork() {}
onMounted(async () => {
await setupDeptSelect();
@@ -224,6 +248,7 @@
<BasicTable class="flex-1 overflow-hidden" table-title="鏁呴殰鎶ヤ慨鍒楄〃">
<template #toolbar-tools>
<Space>
+ <a-button v-access:code="['eims:repairReq:send']" @click="openSendWork"> 娲惧伐 </a-button>
<a-button v-access:code="['eims:repairReq:export']" @click="handleDownloadExcel">
{{ $t('pages.common.export') }}
</a-button>
@@ -257,5 +282,6 @@
</BasicTable>
</div>
<RepairReqDrawer @reload="tableApi.query()" />
+ <SendWorkDrawer @reload="tableApi.query()" />
</Page>
</template>
diff --git a/eims-ui/apps/web-antd/src/views/eims/repair-req/repair-req-drawer.vue b/eims-ui/apps/web-antd/src/views/eims/repair-req/repair-req-drawer.vue
index 5314997..13c08df 100644
--- a/eims-ui/apps/web-antd/src/views/eims/repair-req/repair-req-drawer.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/repair-req/repair-req-drawer.vue
@@ -98,7 +98,7 @@
await setupDeptSelect();
await setupEquTypeSelect();
// 鏂板鏃堕粯璁ゅ~鍏呯櫥褰曚汉涓烘姤淇汉
- if (!isUpdate.value && reqUser !== null && reqDept !== null) {
+ if (!isUpdate.value && reqUser && reqDept ) {
await formApi.setValues({ 'reqUser': reqUser, 'reqDept': reqDept });
await setupUserOptions(reqDept);
}
@@ -291,6 +291,7 @@
async function updateEqu(equ: any) {
await formApi.setValues({ 'equId': equ.equId, 'equName': equ.equName });
}
+
/**
* 鏇存柊閫夋嫨鐨勫伐鍏�
* @param fixture
@@ -307,10 +308,12 @@
<CodeInput v-bind="slotProps" :disabled="isUpdate" prefix="BXD" />
</template>
<template #equName="slotProps">
- <InputSearch :enter-button="true" placeholder="璇烽�夋嫨璁惧" @search="onSearchEqu" v-bind="slotProps" :disabled="isUpdate" />
+ <InputSearch :enter-button="true" placeholder="璇烽�夋嫨璁惧" @search="onSearchEqu" v-bind="slotProps"
+ :disabled="isUpdate" />
</template>
<template #fixtureName="slotProps">
- <InputSearch :enter-button="true" placeholder="璇烽�夋嫨宸ュ叿" @search="onSearchFixture" v-bind="slotProps" :disabled="isUpdate" />
+ <InputSearch :enter-button="true" placeholder="璇烽�夋嫨宸ュ叿" @search="onSearchFixture" v-bind="slotProps"
+ :disabled="isUpdate" />
</template>
</BasicForm>
<EquModal class="w-[1200px]" @update-equ="updateEqu" />
diff --git a/eims-ui/apps/web-antd/src/views/eims/repair-req/send-work-drawer.vue b/eims-ui/apps/web-antd/src/views/eims/repair-req/send-work-drawer.vue
new file mode 100644
index 0000000..241ddee
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/views/eims/repair-req/send-work-drawer.vue
@@ -0,0 +1,142 @@
+<script setup lang="ts">
+import { ref } from 'vue';
+import { useVbenDrawer } from '@vben/common-ui';
+import { addFullName, cloneDeep, getPopupContainer } from '@vben/utils';
+
+import { useVbenForm } from '#/adapter/form';
+import { addBatchRepairRes, getRepairRes, updateRepairRes } from '#/api/eims/repair-res';
+import { deptRoleUserList, getDeptTree } from '#/api/system/user';
+
+import { modalSchema } from './data';
+
+const emit = defineEmits<{ reload: [] }>();
+
+const isUpdate = ref(false);
+const [BasicForm, formApi] = useVbenForm({
+ commonConfig: {
+ formItemClass: 'col-span-2',
+ componentProps: {
+ class: 'w-full'
+ },
+ labelWidth: 120
+ },
+ schema: modalSchema(),
+ showDefaultActions: false,
+ wrapperClass: 'grid-cols-2'
+});
+
+const [BasicDrawer, drawerApi] = useVbenDrawer({
+ onCancel: handleCancel,
+ onConfirm: handleConfirm,
+ async onOpenChange(isOpen) {
+ if (!isOpen) {
+ return null;
+ }
+ drawerApi.drawerLoading(true);
+ const { id } = drawerApi.getData() as { id?: number | string };
+ const { batchReqIds } = drawerApi.getData() as { batchReqIds?: string };
+ await formApi.setValues({ batchReqIds });
+ isUpdate.value = !!id;
+ // 鍒濆鍖�
+ await setupDeptSelect();
+ // 鏇存柊 && 璧嬪��
+ if (isUpdate.value && id) {
+ const record = await getRepairRes(id);
+ await formApi.setValues(record);
+ }
+ drawerApi.drawerLoading(false);
+ }
+});
+
+/**
+ * 鐢ㄦ埛鐨勫姞杞�
+ */
+async function setupUserOptions(deptId: any) {
+ const params = { deptId, roleKey: 'repair' };
+ const userList = await deptRoleUserList(params);
+ const options = userList.map((item) => ({
+ label: item.nickName || item.userName,
+ value: item.userId
+ }));
+ // 绛涢��
+ const filterOption = (input: string, option: any) => {
+ return option.label.toLowerCase().includes(input.toLowerCase());
+ };
+
+ const placeholder = options.length > 0 ? '璇烽�夋嫨' : '璇ラ儴闂ㄤ笅鏆傛棤鐢ㄦ埛';
+ formApi.updateSchema([
+ {
+ componentProps: { options, placeholder, filterOption },
+ fieldName: 'resUser'
+ }
+ ]);
+}
+
+/**
+ * 鍒濆鍖栭儴闂ㄩ�夋嫨
+ */
+async function setupDeptSelect() {
+ // updateSchema
+ const deptTree = await getDeptTree();
+ // 閫変腑鍚庢樉绀哄湪杈撳叆妗嗙殑鍊� 鍗崇埗鑺傜偣 / 瀛愯妭鐐�
+ addFullName(deptTree, 'label', ' / ');
+ formApi.updateSchema([
+ {
+ componentProps: (formModel) => ({
+ class: 'w-full',
+ fieldNames: {
+ key: 'id',
+ value: 'id',
+ children: 'children'
+ },
+ getPopupContainer,
+ async onSelect(deptId: number | string) {
+ /** 鏍规嵁閮ㄩ棬ID鍔犺浇鐢ㄦ埛 */
+ await setupUserOptions(deptId);
+ /** 鍙樺寲鍚庨渶瑕侀噸鏂伴�夋嫨鐢ㄦ埛 */
+ formModel.resUser = undefined;
+ },
+ placeholder: '璇烽�夋嫨',
+ showSearch: true,
+ treeData: deptTree,
+ treeDefaultExpandAll: true,
+ treeLine: { showLeafIcon: false },
+ // 绛涢�夌殑瀛楁
+ treeNodeFilterProp: 'label',
+ // 閫変腑鍚庢樉绀哄湪杈撳叆妗嗙殑鍊�
+ treeNodeLabelProp: 'fullName'
+ }),
+ fieldName: 'resDept'
+ }
+ ]);
+}
+
+async function handleConfirm() {
+ try {
+ drawerApi.drawerLoading(true);
+ const { valid } = await formApi.validate();
+ if (!valid) {
+ return;
+ }
+ const data = cloneDeep(await formApi.getValues());
+ await (isUpdate.value ? updateRepairRes(data) : addBatchRepairRes(data));
+ emit('reload');
+ await handleCancel();
+ } catch (error) {
+ console.error(error);
+ } finally {
+ drawerApi.drawerLoading(false);
+ }
+}
+
+async function handleCancel() {
+ drawerApi.close();
+ await formApi.resetForm();
+}
+</script>
+
+<template>
+ <BasicDrawer :close-on-click-modal="false" class="w-[600px]">
+ <BasicForm />
+ </BasicDrawer>
+</template>
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 7056d1a..22f5166 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
@@ -191,6 +191,24 @@
},
{
component: 'Input',
+ fieldName: 'reqUser',
+ dependencies: {
+ show: () => false,
+ triggerFields: ['']
+ },
+ label: '鎶ヤ慨浜�'
+ },
+ {
+ component: 'Input',
+ fieldName: 'reqDept',
+ dependencies: {
+ show: () => false,
+ triggerFields: ['']
+ },
+ label: '鎶ヤ慨閮ㄩ棬'
+ },
+ {
+ component: 'Input',
fieldName: 'reqCode',
label: '鎶ヤ慨鍗曞彿'
},
@@ -294,3 +312,5 @@
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 d4f5852..3b24afa 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,10 +1,11 @@
<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';
+import { useUserStore } from '@vben/stores';
import { addFullName, getPopupContainer, getVxePopupContainer } from '@vben/utils';
import { Modal, Popconfirm, Space } from 'ant-design-vue';
@@ -14,9 +15,9 @@
import { getDeptTree, userList } from '#/api/system/user';
import { commonDownloadExcel } from '#/utils/file/download';
+import RepairRecord from '../repair-record/index.vue';
import { columns, querySchema } from './data';
import repairResDrawer from './repair-res-drawer.vue';
-import { useUserStore } from '@vben/stores';
const userStore = useUserStore();
const userId = userStore.userInfo?.userId;
@@ -74,11 +75,16 @@
id: 'eims-repair-res-index'
};
+const resId = 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;
+ resId.value = row.id;
+ }
}
});
@@ -195,8 +201,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:repairRes:export']" @click="handleDownloadExcel">
@@ -230,6 +236,7 @@
</Space>
</template>
</BasicTable>
+ <RepairRecord :res-id="resId" class="h-1/3" table-title="缁翠慨璁板綍" />
</div>
<RepairResDrawer @reload="tableApi.query()" />
</Page>
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 c2eb892..a38953a 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
@@ -194,7 +194,7 @@
});
}
const resCode = `WXD${req.code.slice(3)}`;
- await formApi.setValues({ 'reqId': req.id, 'reqCode': req.code, 'resCode': resCode });
+ await formApi.setValues({ 'reqId': req.id, 'reqUser': req.reqUser, 'reqDept': req.reqDept, 'reqCode': req.code, 'resCode': resCode });
}
</script>
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 23c83b8..a8332e8 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
@@ -49,4 +49,24 @@
String WANCHENG = "1";
}
+ /**
+ * 缁翠慨宸ュ崟鐘舵��
+ */
+ String REPAIR_RECORD_HANDLE = "repair_record_handle";
+ interface REPAIR_RECORD_HANDLE_DETAIL {
+ /**
+ * 鏂板
+ */
+ String XINZENG = "1";
+ /**
+ * 鎺ュ崟
+ */
+ String JIEDAN = "2";
+
+ /**
+ * 瀹屾垚
+ */
+ String WANCHENG = "3";
+ }
+
}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsRepairRecordController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsRepairRecordController.java
new file mode 100644
index 0000000..d653cce
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsRepairRecordController.java
@@ -0,0 +1,105 @@
+package org.dromara.eims.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.eims.domain.vo.EimsRepairRecordVo;
+import org.dromara.eims.domain.bo.EimsRepairRecordBo;
+import org.dromara.eims.service.IEimsRepairRecordService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 缁翠慨璁板綍
+ *
+ * @author zhuguifei
+ * @date 2025-02-26
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/eims/repairRecord")
+public class EimsRepairRecordController extends BaseController {
+
+ private final IEimsRepairRecordService eimsRepairRecordService;
+
+ /**
+ * 鏌ヨ缁翠慨璁板綍鍒楄〃
+ */
+ @SaCheckPermission("eims:repairRecord:list")
+ @GetMapping("/list")
+ public TableDataInfo<EimsRepairRecordVo> list(EimsRepairRecordBo bo, PageQuery pageQuery) {
+ return eimsRepairRecordService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 瀵煎嚭缁翠慨璁板綍鍒楄〃
+ */
+ @SaCheckPermission("eims:repairRecord:export")
+ @Log(title = "缁翠慨璁板綍", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(EimsRepairRecordBo bo, HttpServletResponse response) {
+ List<EimsRepairRecordVo> list = eimsRepairRecordService.queryList(bo);
+ ExcelUtil.exportExcel(list, "缁翠慨璁板綍", EimsRepairRecordVo.class, response);
+ }
+
+ /**
+ * 鑾峰彇缁翠慨璁板綍璇︾粏淇℃伅
+ *
+ * @param id 涓婚敭
+ */
+ @SaCheckPermission("eims:repairRecord:query")
+ @GetMapping("/{id}")
+ public R<EimsRepairRecordVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
+ @PathVariable Long id) {
+ return R.ok(eimsRepairRecordService.queryById(id));
+ }
+
+ /**
+ * 鏂板缁翠慨璁板綍
+ */
+ @SaCheckPermission("eims:repairRecord:add")
+ @Log(title = "缁翠慨璁板綍", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsRepairRecordBo bo) {
+ return toAjax(eimsRepairRecordService.insertByBo(bo));
+ }
+
+ /**
+ * 淇敼缁翠慨璁板綍
+ */
+ @SaCheckPermission("eims:repairRecord:edit")
+ @Log(title = "缁翠慨璁板綍", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsRepairRecordBo bo) {
+ return toAjax(eimsRepairRecordService.updateByBo(bo));
+ }
+
+ /**
+ * 鍒犻櫎缁翠慨璁板綍
+ *
+ * @param ids 涓婚敭涓�
+ */
+ @SaCheckPermission("eims:repairRecord:remove")
+ @Log(title = "缁翠慨璁板綍", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
+ @PathVariable Long[] ids) {
+ return toAjax(eimsRepairRecordService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsRepairResController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsRepairResController.java
index b770326..ff1be67 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsRepairResController.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsRepairResController.java
@@ -75,11 +75,19 @@
@SaCheckPermission("eims:repairRes:add")
@Log(title = "缁翠慨宸ュ崟", businessType = BusinessType.INSERT)
@RepeatSubmit()
- @PostMapping()
+ @PostMapping("add")
public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsRepairResBo bo) {
return toAjax(eimsRepairResService.insertByBo(bo));
}
+ @SaCheckPermission("eims:repairRes:add")
+ @Log(title = "缁翠慨宸ュ崟-鎵归噺", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping("addBatch")
+ public R<Void> addBatch(@RequestBody EimsRepairResBo bo) {
+ return toAjax(eimsRepairResService.insertBatchByBo(bo));
+ }
+
/**
* 淇敼缁翠慨宸ュ崟
*/
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsRepairRecord.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsRepairRecord.java
new file mode 100644
index 0000000..3b65277
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsRepairRecord.java
@@ -0,0 +1,68 @@
+package org.dromara.eims.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 缁翠慨璁板綍瀵硅薄 eims_repair_record
+ *
+ * @author zhuguifei
+ * @date 2025-02-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("eims_repair_record")
+public class EimsRepairRecord extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 鎶ヤ慨鍗昳d
+ */
+ private Long reqId;
+
+ /**
+ * 缁翠慨鍗昳d
+ */
+ private Long resId;
+
+ /**
+ * 澶勭悊鏃堕棿
+ */
+ private Date handleTime;
+
+ /**
+ * 鎿嶄綔鐢ㄦ埛
+ */
+ private Long operaUser;
+
+ /**
+ * 鎿嶄綔(瀛楀吀)
+ */
+ private String opera;
+
+ /**
+ * 鎿嶄綔缁撴灉
+ */
+ private String operaResult;
+
+ /**
+ * 澶囨敞
+ */
+ private String remark;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsRepairRes.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsRepairRes.java
index ee1b8a3..32c55c9 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsRepairRes.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsRepairRes.java
@@ -35,6 +35,10 @@
*/
private Long reqId;
+ private Long reqUser;//鎶ヤ慨浜�
+
+ private Long reqDept;//鎶ヤ慨浜洪儴闂�
+
/**
* 缁翠慨鍗曞彿
*/
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairRecordBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairRecordBo.java
new file mode 100644
index 0000000..58bf446
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsRepairRecordBo.java
@@ -0,0 +1,73 @@
+package org.dromara.eims.domain.bo;
+
+import org.dromara.eims.domain.EimsRepairRecord;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 缁翠慨璁板綍涓氬姟瀵硅薄 eims_repair_record
+ *
+ * @author zhuguifei
+ * @date 2025-02-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = EimsRepairRecord.class, reverseConvertGenerate = false)
+public class EimsRepairRecordBo extends BaseEntity {
+
+ /**
+ *
+ */
+ @NotNull(message = "涓嶈兘涓虹┖", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 鎶ヤ慨鍗昳d
+ */
+ @NotNull(message = "鎶ヤ慨鍗昳d涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+ private Long reqId;
+
+ /**
+ * 缁翠慨鍗昳d
+ */
+ @NotNull(message = "缁翠慨鍗昳d涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+ private Long resId;
+
+ /**
+ * 澶勭悊鏃堕棿
+ */
+ @NotNull(message = "澶勭悊鏃堕棿涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+ private Date handleTime;
+
+ /**
+ * 鎿嶄綔鐢ㄦ埛
+ */
+ @NotNull(message = "鎿嶄綔鐢ㄦ埛涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+ private Long operaUser;
+
+ /**
+ * 鎿嶄綔(瀛楀吀)
+ */
+ @NotBlank(message = "鎿嶄綔(瀛楀吀)涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+ private String opera;
+
+ /**
+ * 鎿嶄綔缁撴灉
+ */
+ @NotBlank(message = "鎿嶄綔缁撴灉涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+ private String operaResult;
+
+ /**
+ * 澶囨敞
+ */
+ private String remark;
+
+
+}
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 54407d4..2ab96cc 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
@@ -35,6 +35,10 @@
@NotNull(message = "鎶ヤ慨鍗曚笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
private Long reqId;
+ private Long reqUser;//鎶ヤ慨浜�
+
+ private Long reqDept;//鎶ヤ慨浜洪儴闂�
+
/**
* 缁翠慨鍗曞彿
*/
@@ -102,9 +106,19 @@
private String remark;
+ //杈呭姪瀛楁
+ /**
+ * 闇�瑕佹壒閲忔坊鍔犵殑鎶ヤ慨鍗曞彿
+ */
+ private String batchReqIds;
+
+
// 鍏宠仈琛ㄥ瓧娈�
private String reqCode;//鎶ヤ慨鍗曠紪鐮�
- private String reqUser;//鎶ヤ慨浜�
+
+
+
+
}
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
new file mode 100644
index 0000000..b548da6
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairRecordVo.java
@@ -0,0 +1,82 @@
+package org.dromara.eims.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.eims.domain.EimsRepairRecord;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 缁翠慨璁板綍瑙嗗浘瀵硅薄 eims_repair_record
+ *
+ * @author zhuguifei
+ * @date 2025-02-26
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = EimsRepairRecord.class)
+public class EimsRepairRecordVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ */
+ @ExcelProperty(value = "")
+ private Long id;
+
+ /**
+ * 鎶ヤ慨鍗昳d
+ */
+ @ExcelProperty(value = "鎶ヤ慨鍗昳d")
+ private Long reqId;
+
+ /**
+ * 缁翠慨鍗昳d
+ */
+ @ExcelProperty(value = "缁翠慨鍗昳d")
+ private Long resId;
+
+ /**
+ * 澶勭悊鏃堕棿
+ */
+ @ExcelProperty(value = "澶勭悊鏃堕棿")
+ private Date handleTime;
+
+ /**
+ * 鎿嶄綔鐢ㄦ埛
+ */
+ @ExcelProperty(value = "鎿嶄綔鐢ㄦ埛")
+ private Long operaUser;
+
+ /**
+ * 鎿嶄綔(瀛楀吀)
+ */
+ @ExcelProperty(value = "鎿嶄綔(瀛楀吀)")
+ private String opera;
+
+ /**
+ * 鎿嶄綔缁撴灉
+ */
+ @ExcelProperty(value = "鎿嶄綔缁撴灉")
+ private String operaResult;
+
+ /**
+ * 澶囨敞
+ */
+ @ExcelProperty(value = "澶囨敞")
+ private String remark;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairResVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairResVo.java
index 1060606..397e720 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairResVo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsRepairResVo.java
@@ -44,6 +44,10 @@
@ExcelProperty(value = "鎶ヤ慨鍗昳d")
private Long reqId;
+ private Long reqUser;//鎶ヤ慨浜�
+
+ private Long reqDept;//鎶ヤ慨浜洪儴闂�
+
/**
* 缁翠慨鍗曞彿
*/
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsRepairRecordMapper.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsRepairRecordMapper.java
new file mode 100644
index 0000000..5c2205d
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsRepairRecordMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.eims.mapper;
+
+import org.dromara.eims.domain.EimsRepairRecord;
+import org.dromara.eims.domain.vo.EimsRepairRecordVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 缁翠慨璁板綍Mapper鎺ュ彛
+ *
+ * @author zhuguifei
+ * @date 2025-02-26
+ */
+public interface EimsRepairRecordMapper extends BaseMapperPlus<EimsRepairRecord, EimsRepairRecordVo> {
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsRepairRecordService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsRepairRecordService.java
new file mode 100644
index 0000000..b25f3dc
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsRepairRecordService.java
@@ -0,0 +1,68 @@
+package org.dromara.eims.service;
+
+import org.dromara.eims.domain.vo.EimsRepairRecordVo;
+import org.dromara.eims.domain.bo.EimsRepairRecordBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 缁翠慨璁板綍Service鎺ュ彛
+ *
+ * @author zhuguifei
+ * @date 2025-02-26
+ */
+public interface IEimsRepairRecordService {
+
+ /**
+ * 鏌ヨ缁翠慨璁板綍
+ *
+ * @param id 涓婚敭
+ * @return 缁翠慨璁板綍
+ */
+ EimsRepairRecordVo queryById(Long id);
+
+ /**
+ * 鍒嗛〉鏌ヨ缁翠慨璁板綍鍒楄〃
+ *
+ * @param bo 鏌ヨ鏉′欢
+ * @param pageQuery 鍒嗛〉鍙傛暟
+ * @return 缁翠慨璁板綍鍒嗛〉鍒楄〃
+ */
+ TableDataInfo<EimsRepairRecordVo> queryPageList(EimsRepairRecordBo bo, PageQuery pageQuery);
+
+ /**
+ * 鏌ヨ绗﹀悎鏉′欢鐨勭淮淇褰曞垪琛�
+ *
+ * @param bo 鏌ヨ鏉′欢
+ * @return 缁翠慨璁板綍鍒楄〃
+ */
+ List<EimsRepairRecordVo> queryList(EimsRepairRecordBo bo);
+
+ /**
+ * 鏂板缁翠慨璁板綍
+ *
+ * @param bo 缁翠慨璁板綍
+ * @return 鏄惁鏂板鎴愬姛
+ */
+ Boolean insertByBo(EimsRepairRecordBo bo);
+
+ /**
+ * 淇敼缁翠慨璁板綍
+ *
+ * @param bo 缁翠慨璁板綍
+ * @return 鏄惁淇敼鎴愬姛
+ */
+ Boolean updateByBo(EimsRepairRecordBo bo);
+
+ /**
+ * 鏍¢獙骞舵壒閲忓垹闄ょ淮淇褰曚俊鎭�
+ *
+ * @param ids 寰呭垹闄ょ殑涓婚敭闆嗗悎
+ * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+ * @return 鏄惁鍒犻櫎鎴愬姛
+ */
+ Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsRepairResService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsRepairResService.java
index 00c9d02..3f0da6e 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsRepairResService.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsRepairResService.java
@@ -52,6 +52,14 @@
Boolean insertByBo(EimsRepairResBo bo);
/**
+ * 鏂板缁翠慨宸ュ崟-鎵归噺
+ *
+ * @param bo 缁翠慨宸ュ崟
+ * @return 鏄惁鏂板鎴愬姛
+ */
+ Boolean insertBatchByBo(EimsRepairResBo bo);
+
+ /**
* 淇敼缁翠慨宸ュ崟
*
* @param bo 缁翠慨宸ュ崟
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairRecordServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairRecordServiceImpl.java
new file mode 100644
index 0000000..a6221c5
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairRecordServiceImpl.java
@@ -0,0 +1,133 @@
+package org.dromara.eims.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.eims.domain.bo.EimsRepairRecordBo;
+import org.dromara.eims.domain.vo.EimsRepairRecordVo;
+import org.dromara.eims.domain.EimsRepairRecord;
+import org.dromara.eims.mapper.EimsRepairRecordMapper;
+import org.dromara.eims.service.IEimsRepairRecordService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 缁翠慨璁板綍Service涓氬姟灞傚鐞�
+ *
+ * @author zhuguifei
+ * @date 2025-02-26
+ */
+@RequiredArgsConstructor
+@Service
+public class EimsRepairRecordServiceImpl implements IEimsRepairRecordService {
+
+ private final EimsRepairRecordMapper baseMapper;
+
+ /**
+ * 鏌ヨ缁翠慨璁板綍
+ *
+ * @param id 涓婚敭
+ * @return 缁翠慨璁板綍
+ */
+ @Override
+ public EimsRepairRecordVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ缁翠慨璁板綍鍒楄〃
+ *
+ * @param bo 鏌ヨ鏉′欢
+ * @param pageQuery 鍒嗛〉鍙傛暟
+ * @return 缁翠慨璁板綍鍒嗛〉鍒楄〃
+ */
+ @Override
+ public TableDataInfo<EimsRepairRecordVo> queryPageList(EimsRepairRecordBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper<EimsRepairRecord> lqw = buildQueryWrapper(bo);
+ Page<EimsRepairRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 鏌ヨ绗﹀悎鏉′欢鐨勭淮淇褰曞垪琛�
+ *
+ * @param bo 鏌ヨ鏉′欢
+ * @return 缁翠慨璁板綍鍒楄〃
+ */
+ @Override
+ public List<EimsRepairRecordVo> queryList(EimsRepairRecordBo bo) {
+ LambdaQueryWrapper<EimsRepairRecord> lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper<EimsRepairRecord> buildQueryWrapper(EimsRepairRecordBo bo) {
+ Map<String, Object> params = bo.getParams();
+ LambdaQueryWrapper<EimsRepairRecord> lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getReqId() != null, EimsRepairRecord::getReqId, bo.getReqId());
+ lqw.eq(bo.getResId() != null, EimsRepairRecord::getResId, bo.getResId());
+ lqw.eq(bo.getHandleTime() != null, EimsRepairRecord::getHandleTime, bo.getHandleTime());
+ lqw.eq(bo.getOperaUser() != null, EimsRepairRecord::getOperaUser, bo.getOperaUser());
+ lqw.eq(StringUtils.isNotBlank(bo.getOpera()), EimsRepairRecord::getOpera, bo.getOpera());
+ return lqw;
+ }
+
+ /**
+ * 鏂板缁翠慨璁板綍
+ *
+ * @param bo 缁翠慨璁板綍
+ * @return 鏄惁鏂板鎴愬姛
+ */
+ @Override
+ public Boolean insertByBo(EimsRepairRecordBo bo) {
+ EimsRepairRecord add = MapstructUtils.convert(bo, EimsRepairRecord.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 淇敼缁翠慨璁板綍
+ *
+ * @param bo 缁翠慨璁板綍
+ * @return 鏄惁淇敼鎴愬姛
+ */
+ @Override
+ public Boolean updateByBo(EimsRepairRecordBo bo) {
+ EimsRepairRecord update = MapstructUtils.convert(bo, EimsRepairRecord.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+ */
+ private void validEntityBeforeSave(EimsRepairRecord entity){
+ //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+ }
+
+ /**
+ * 鏍¢獙骞舵壒閲忓垹闄ょ淮淇褰曚俊鎭�
+ *
+ * @param ids 寰呭垹闄ょ殑涓婚敭闆嗗悎
+ * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+ * @return 鏄惁鍒犻櫎鎴愬姛
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+ if(isValid){
+ //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
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 edff66a..437c0e7 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
@@ -3,6 +3,7 @@
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.dromara.common.core.constant.DictConstants;
import org.dromara.common.core.service.RepairReqService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.SpringUtils;
@@ -15,8 +16,10 @@
import lombok.RequiredArgsConstructor;
import org.dromara.eims.domain.EimsEqu;
import org.dromara.eims.domain.EimsFixtureBorrow;
+import org.dromara.eims.domain.EimsRepairRecord;
import org.dromara.eims.domain.vo.EimsFixtureVo;
import org.dromara.eims.domain.vo.EimsInventoryDetailVo;
+import org.dromara.eims.mapper.EimsRepairRecordMapper;
import org.dromara.eims.utils.DataFilterUtil;
import org.dromara.system.domain.SysDept;
import org.dromara.system.domain.vo.SysDeptVo;
@@ -27,11 +30,9 @@
import org.dromara.eims.domain.EimsRepairReq;
import org.dromara.eims.mapper.EimsRepairReqMapper;
import org.dromara.eims.service.IEimsRepairReqService;
+import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.util.*;
/**
* 鏁呴殰鎶ヤ慨Service涓氬姟灞傚鐞�
@@ -44,6 +45,7 @@
public class EimsRepairReqServiceImpl implements IEimsRepairReqService, RepairReqService {
private final EimsRepairReqMapper baseMapper;
+ private final EimsRepairRecordMapper recordMapper;
private final SysDeptMapper sysDeptMapper;
/**
@@ -73,7 +75,7 @@
@Override
public TableDataInfo<EimsRepairReqVo> queryPageListCustom(EimsRepairReqBo bo, PageQuery pageQuery) {
- //DataFilterUtil.getInstance().filterRepairReq(bo);
+ DataFilterUtil.getInstance().filterRepairReq(bo);
Page<EimsRepairReqVo> page = baseMapper.selectRepairReqList(pageQuery.build(), buildWrapper(bo));
return TableDataInfo.build(page);
}
@@ -174,6 +176,7 @@
* @param bo 鏁呴殰鎶ヤ慨
* @return 鏄惁鏂板鎴愬姛
*/
+ @Transactional(rollbackFor = Exception.class)
@Override
public Boolean insertByBo(EimsRepairReqBo bo) {
EimsRepairReq add = MapstructUtils.convert(bo, EimsRepairReq.class);
@@ -181,6 +184,16 @@
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
+ //鏂板鎶ヤ慨鍗曟椂鐢熸垚缁翠慨璁板綍
+ EimsRepairRecord record = new EimsRepairRecord();
+ record.setReqId(add.getId());
+ record.setHandleTime(new Date());
+ //鏂板鐘舵��
+ record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.XINZENG);
+ record.setOperaUser(add.getCreateBy());
+ record.setOperaResult("鏂板锛岀敓鎴愭姤淇崟");
+ //鏂板鏃剁敓鎴愯褰�
+ recordMapper.insert(record);
}
return flag;
}
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 8fa2a81..d809c00 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
@@ -3,6 +3,7 @@
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.SneakyThrows;
import org.dromara.common.core.constant.DictConstants;
import org.dromara.common.core.service.RepairResService;
import org.dromara.common.core.utils.MapstructUtils;
@@ -14,10 +15,9 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
-import org.dromara.eims.domain.EimsEqu;
-import org.dromara.eims.domain.EimsFixture;
-import org.dromara.eims.domain.EimsRepairReq;
+import org.dromara.eims.domain.*;
import org.dromara.eims.domain.vo.EimsRepairReqVo;
+import org.dromara.eims.mapper.EimsRepairRecordMapper;
import org.dromara.eims.mapper.EimsRepairReqMapper;
import org.dromara.eims.utils.DataFilterUtil;
import org.dromara.system.domain.SysDept;
@@ -26,15 +26,11 @@
import org.springframework.stereotype.Service;
import org.dromara.eims.domain.bo.EimsRepairResBo;
import org.dromara.eims.domain.vo.EimsRepairResVo;
-import org.dromara.eims.domain.EimsRepairRes;
import org.dromara.eims.mapper.EimsRepairResMapper;
import org.dromara.eims.service.IEimsRepairResService;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.util.*;
/**
* 缁翠慨宸ュ崟Service涓氬姟灞傚鐞�
@@ -49,6 +45,7 @@
private final EimsRepairResMapper baseMapper;
private final EimsRepairReqMapper reqMapper;
private final SysDeptMapper deptMapper;
+ private final EimsRepairRecordMapper recordMapper;
/**
* 鏌ヨ缁翠慨宸ュ崟
@@ -121,8 +118,55 @@
reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.WEIXIU);
EimsRepairReq req = MapstructUtils.convert(reqVo, EimsRepairReq.class);
reqMapper.updateById(req);
+
+ //灏嗘柊澧炴姤淇崟鏃剁淮淇褰曠殑缁翠慨宸ュ崟id鏇存柊
+ LambdaQueryWrapper<EimsRepairRecord> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(EimsRepairRecord::getReqId, add.getReqId());
+ EimsRepairRecord one = recordMapper.selectOne(queryWrapper);
+ if(one!=null){
+ one.setResId(add.getId());
+ recordMapper.updateById(one);
+ }
+
+
+ //鐢熸垚缁翠慨璁板綍
+ EimsRepairRecord record = new EimsRepairRecord();
+ record.setReqId(add.getReqId());
+ record.setResId(add.getId());
+ record.setHandleTime(new Date());
+ //鎺ュ崟鐘舵��
+ record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.JIEDAN);
+ record.setOperaUser(add.getCreateBy());
+ record.setOperaResult("鎺ュ崟锛岀敓鎴愮淮淇伐鍗�");
+ //鏂板鏃剁敓鎴愯褰�
+ recordMapper.insert(record);
+
+
}
return flag;
+ }
+
+ @SneakyThrows
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public Boolean insertBatchByBo(EimsRepairResBo bo){
+ String batchReqIds = bo.getBatchReqIds();
+ boolean result = StringUtils.isNotEmpty(batchReqIds);
+ for (String reqId : batchReqIds.split(",")) {
+ EimsRepairReqVo reqVo = reqMapper.selectVoById(reqId);
+ EimsRepairResBo insert = new EimsRepairResBo();
+ insert.setReqId(reqVo.getId());
+ insert.setReqUser(reqVo.getReqUser());
+ insert.setReqDept(reqVo.getReqDept());
+ 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());
+ Boolean b = insertByBo(insert);
+ if(!b)throw new Exception("");
+ }
+ return result;
}
/**
@@ -145,6 +189,18 @@
reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.WANCHENG);
EimsRepairReq req = MapstructUtils.convert(reqVo, EimsRepairReq.class);
reqMapper.updateById(req);
+
+ //鐢熸垚缁翠慨璁板綍
+ 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());
+ record.setOperaResult("瀹屾垚缁翠慨宸ュ崟");
+ recordMapper.insert(record);
+
}
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
@@ -174,6 +230,7 @@
@Override
public TableDataInfo<EimsRepairResVo> queryPageListCustom(EimsRepairResBo bo, PageQuery pageQuery) {
+ DataFilterUtil.getInstance().filterRepairRes(bo);
Page<EimsRepairResVo> page = baseMapper.selectRepairResList(pageQuery.build(), buildWrapper(bo));
return TableDataInfo.build(page);
}
@@ -184,9 +241,14 @@
qw.like(StringUtils.isNotBlank(bo.getResCode()), "res.res_code", bo.getResCode());
qw.like(StringUtils.isNotBlank(bo.getReqCode()), "req.code", bo.getReqCode());
qw.eq(bo.getResUser() != null, "res.res_user", bo.getResUser());
+ qw.eq(bo.getReqUser() != null, "res.req_user", bo.getReqUser());
- List<Long> allDescendantIds = getAllDescendantIds(bo.getResDept());
- qw.in(bo.getResDept() != null, "res.res_dept", allDescendantIds);
+ List<Long> resDeptIds = getAllDescendantIds(bo.getResDept());
+ qw.in(bo.getResDept() != null, "res.res_dept", resDeptIds);
+
+ List<Long> reqDeptIds = getAllDescendantIds(bo.getReqDept());
+ qw.in(bo.getReqDept() != null, "res.req_dept", reqDeptIds);
+
qw.eq(StringUtils.isNotBlank(bo.getStatus()), "res.status", bo.getStatus());
qw.orderByDesc("res.create_time");
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 8ecc5d3..03f16af 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
@@ -42,7 +42,10 @@
//TODO 缁翠慨宸ュ彧鑳芥煡璇㈡湭鎺ュ崟鐘舵�佺殑鎶ヤ慨鍗曪紙鍏蜂綋鐘舵�佸弬鑰冨瓧鍏竢epair_req_status锛�
bo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.JIEDAN);
}
- params.put("createBy", userList);
+ if(userList.size()>0){
+ params.put("createBy", userList);
+ }
+
}
//缁翠慨宸ュ崟
@@ -50,19 +53,18 @@
LoginUser loginUser = LoginHelper.getLoginUser();
Set<String> rolePermission = loginUser.getRolePermission();
Map<String, Object> params = bo.getParams();
- List<Long> userList = new ArrayList<>();
if (rolePermission == null) {
//娌℃湁鏉冮檺涓嶅厑璁告煡璇㈡暟鎹�
- userList.add(-1L);
+ bo.setReqUser(-1L);
+ bo.setResUser(-1L);
}else if (rolePermission.contains(Role.operator.name())) {
//鎿嶄綔宸ュ彧鑳芥煡璇㈣嚜宸辩殑鏁版嵁
- userList.add(loginUser.getUserId());
+ bo.setReqUser(loginUser.getUserId());
}else if (rolePermission.contains(Role.repair.name())) {
//TODO 缁翠慨宸ュ彧鑳芥煡璇㈡湭鎺ュ崟鐘舵�佺殑鎶ヤ慨鍗曪紙鍏蜂綋鐘舵�佸弬鑰冨瓧鍏竢epair_req_status锛�
- bo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.JIEDAN);
+ bo.setResUser(loginUser.getUserId());
}
- params.put("createBy", userList);
}
}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsRepairRecordMapper.xml b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsRepairRecordMapper.xml
new file mode 100644
index 0000000..149772e
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsRepairRecordMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.eims.mapper.EimsRepairRecordMapper">
+
+</mapper>
diff --git a/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
index 36104d6..63f611b 100644
--- a/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
+++ b/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
@@ -64,6 +64,16 @@
return userService.selectPageUserList(user, pageQuery);
}
+
+ /**
+ * 鑾峰彇鐢ㄦ埛鍒楄〃
+ */
+ @SaCheckPermission("system:user:list")
+ @GetMapping("/deptRoleUser")
+ public R<List<SysUserVo>> deptRoleUser(SysUserBo user) {
+ return R.ok(userService.selectDeptRoleUserList(user));
+ }
+
/**
* 瀵煎嚭鐢ㄦ埛鍒楄〃
*/
diff --git a/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java b/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java
index 7ad2759..3f0ab03 100644
--- a/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java
+++ b/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java
@@ -103,6 +103,9 @@
*/
private Long roleId;
+
+ private String roleKey;
+
/**
* 鎺掗櫎涓嶆煡璇㈢殑鐢ㄦ埛(宸ヤ綔娴佺敤)
*/
diff --git a/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java b/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
index 0325a25..2663db0 100644
--- a/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
+++ b/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
@@ -219,4 +219,11 @@
* @return 缁撴灉
*/
List<SysUserVo> selectUserListByDept(Long deptId);
+
+ /**
+ * 閫氳繃閮ㄩ棬鍜岃鑹叉煡璇㈢敤鎴�
+ * @param user
+ * @return
+ */
+ List<SysUserVo> selectDeptRoleUserList(SysUserBo user);
}
diff --git a/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
index 2540606..e2b2e6e 100644
--- a/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
+++ b/eims/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
@@ -42,6 +42,8 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
* 鐢ㄦ埛 涓氬姟灞傚鐞�
@@ -556,6 +558,33 @@
return baseMapper.selectVoList(lqw);
}
+ @Override
+ public List<SysUserVo> selectDeptRoleUserList(SysUserBo user) {
+ List<SysUserVo> result = new ArrayList<>();
+ if (user.getDeptId() == null) return result;
+ LambdaQueryWrapper<SysUser> queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.eq(SysUser::getDeptId, user.getDeptId());
+ List<SysUserVo> deptUserList = baseMapper.selectVoList(queryWrapper);
+ if (user.getRoleKey() != null) {
+ LambdaQueryWrapper<SysRole> roleWrapper = Wrappers.lambdaQuery();
+ roleWrapper.eq(SysRole::getRoleKey, user.getRoleKey());
+ SysRole sysRole = roleMapper.selectOne(roleWrapper);
+ if (sysRole != null) {
+ LambdaQueryWrapper<SysUserRole> userRoleWrapper = Wrappers.lambdaQuery();
+ userRoleWrapper.eq(SysUserRole::getRoleId, sysRole.getRoleId());
+ List<SysUserRole> sysUserRoles = userRoleMapper.selectList(userRoleWrapper);
+ Set<Long> roleUserIds = sysUserRoles.stream()
+ .map(SysUserRole::getUserId)
+ .collect(Collectors.toSet());
+ deptUserList = deptUserList.stream()
+ .filter(u -> roleUserIds.contains(u.getUserId()))
+ .toList();
+ result.addAll(deptUserList);
+ }
+ }
+ return result;
+ }
+
/**
* 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛璐︽埛
*
--
Gitblit v1.9.3