From df64c34d92cbe8501bbbfe837bc491a47452c0b6 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期一, 09 六月 2025 10:58:19 +0800
Subject: [PATCH] feat(eims): 新增保养工单批量修改功能并优化相关领域对象
---
eims-ui-mobile/env/.env.production | 2
eims-ui-mobile/env/.env | 3
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/MaintOrderBo.java | 10
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java | 66 +++
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java | 81 ++--
eims-ui-mobile/src/pages/inspect/insp-st.vue | 12
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrder.java | 9
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderController.java | 19 +
eims-ui-mobile/src/pages/maint/maint-order.vue | 467 ++++++++++++++++++++--------
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderBo.java | 15
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintOrderService.java | 13
eims-ui-mobile/src/pages/inspect/insp-record.vue | 151 +++++++--
eims-ui-mobile/package.json | 2
eims-ui-mobile/src/pages/repair/repair-fb.vue | 10
eims-ui-mobile/src/pages/fixture/fixture-list.vue | 4
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java | 2
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutdtBo.java | 15
eims-ui-mobile/src/pages/spare/spare-list.vue | 6
eims-ui-mobile/src/service/maint.ts | 7
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutdtVo.java | 2
eims-ui-mobile/env/.env.development | 2
eims-ui-mobile/src/pages/repair/res-list.vue | 2
eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java | 10
eims-ui-mobile/src/pages/maint/maint-st.vue | 10
eims-ui-mobile/src/pages/scan/index.vue | 4
eims-ui-mobile/src/pages/equ/equ-list.vue | 4
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderVo.java | 15
eims-ui-mobile/src/pages/home/index.vue | 8
eims-ui-mobile/src/pages/repair/req-list.vue | 4
29 files changed, 695 insertions(+), 260 deletions(-)
diff --git a/eims-ui-mobile/env/.env b/eims-ui-mobile/env/.env
index c2a782d..e417350 100644
--- a/eims-ui-mobile/env/.env
+++ b/eims-ui-mobile/env/.env
@@ -7,8 +7,7 @@
# h5閮ㄧ讲缃戠珯鐨刡ase锛岄厤缃埌 manifest.config.ts 閲岀殑 h5.router.base
VITE_APP_PUBLIC_BASE=/
-VITE_SERVER_BASEURL = 'http://lanpucloud.cn:8091'
-VITE_UPLOAD_BASEURL = 'http://lanpucloud.cn:8091/resource/oss/upload'
+
# 鏈変簺鍚屽鍙兘闇�瑕佸湪寰俊灏忕▼搴忛噷闈㈡牴鎹� develop銆乼rial銆乺elease 鍒嗗埆璁剧疆涓婁紶鍦板潃锛屽弬鑰冧唬鐮佸涓嬨��
# 涓嬮潰鐨勫彉閲忓鏋滄病鏈夎缃紝浼氶粯璁や娇鐢� VITE_SERVER_BASEURL or VITE_UPLOAD_BASEURL
diff --git a/eims-ui-mobile/env/.env.development b/eims-ui-mobile/env/.env.development
index 04fa273..28d8b10 100644
--- a/eims-ui-mobile/env/.env.development
+++ b/eims-ui-mobile/env/.env.development
@@ -4,3 +4,5 @@
VITE_DELETE_CONSOLE = false
# 鏄惁寮�鍚痵ourcemap
VITE_SHOW_SOURCEMAP = true
+VITE_SERVER_BASEURL = 'http://192.168.21.236:8080'
+VITE_UPLOAD_BASEURL = 'http://192.168.21.236:8080/resource/oss/upload'
diff --git a/eims-ui-mobile/env/.env.production b/eims-ui-mobile/env/.env.production
index 8a1b50c..b6ac6b3 100644
--- a/eims-ui-mobile/env/.env.production
+++ b/eims-ui-mobile/env/.env.production
@@ -4,3 +4,5 @@
VITE_DELETE_CONSOLE = true
# 鏄惁寮�鍚痵ourcemap
VITE_SHOW_SOURCEMAP = false
+VITE_SERVER_BASEURL = 'http://lanpucloud.cn:8091'
+VITE_UPLOAD_BASEURL = 'http://lanpucloud.cn:8091/resource/oss/upload'
diff --git a/eims-ui-mobile/package.json b/eims-ui-mobile/package.json
index 06ef415..d581eb7 100644
--- a/eims-ui-mobile/package.json
+++ b/eims-ui-mobile/package.json
@@ -110,7 +110,7 @@
"qs": "6.5.3",
"vue": "3.4.21",
"vue-i18n": "^9.1.9",
- "wot-design-uni": "^1.4.0",
+ "wot-design-uni": "^1.9.1",
"z-paging": "^2.8.4"
},
"devDependencies": {
diff --git a/eims-ui-mobile/src/pages/equ/equ-list.vue b/eims-ui-mobile/src/pages/equ/equ-list.vue
index e185716..3223131 100644
--- a/eims-ui-mobile/src/pages/equ/equ-list.vue
+++ b/eims-ui-mobile/src/pages/equ/equ-list.vue
@@ -39,7 +39,7 @@
<view class="flex justify-between items-baseline">
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <text class="ml-1 text-xs">{{ item.assetNo }}</text>
+ <text class="ml-1 text-sm">{{ item.assetNo }}</text>
<wd-tag v-if="item.status === '0'" class="ml-2" bg-color="cyan">璇曠敤</wd-tag>
<wd-tag v-else-if="item.status === '1'" class="ml-2" type="success">浣跨敤</wd-tag>
<wd-tag v-else-if="item.status === '2'" class="ml-2" type="danger">鍋滅敤</wd-tag>
@@ -61,7 +61,7 @@
{{ item.equName }}
<text class="text-color-gray ml-2 text-mini">{{ item.modelNo }}</text>
</view>
- <view class="text-color-gray text-xs mt-1">
+ <view class="text-color-gray text-sm mt-1">
{{ item.location }} | {{ item.madeIn }}
</view>
</view>
diff --git a/eims-ui-mobile/src/pages/fixture/fixture-list.vue b/eims-ui-mobile/src/pages/fixture/fixture-list.vue
index e245676..5d1dabc 100644
--- a/eims-ui-mobile/src/pages/fixture/fixture-list.vue
+++ b/eims-ui-mobile/src/pages/fixture/fixture-list.vue
@@ -22,7 +22,7 @@
<view class="flex justify-between items-center">
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <text class="ml-1 text-xs">{{ item.fixtureName }}</text>
+ <text class="ml-1 text-sm">{{ item.fixtureName }}</text>
<text class="ml-1 text-mini text-color-gray">{{ item.assetNo }}</text>
</view>
@@ -40,7 +40,7 @@
<text class="text-color-gray ml-2 text-mini">瑙勬牸: {{ item.specNo }}</text>
<text class="text-color-gray ml-2 text-mini">鍨嬪彿: {{ item.modelNo }}</text>
</view>
- <view class="text-color-gray text-xs mt-1 flex">
+ <view class="text-color-gray text-sm mt-1 flex">
<template
v-if="!item.borrowStatus || item.borrowStatus === '0'"
>
diff --git a/eims-ui-mobile/src/pages/home/index.vue b/eims-ui-mobile/src/pages/home/index.vue
index 5bac502..52dcd4e 100644
--- a/eims-ui-mobile/src/pages/home/index.vue
+++ b/eims-ui-mobile/src/pages/home/index.vue
@@ -61,7 +61,7 @@
<template #title>
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <view class="ml-1 text-xs">鏁版嵁鎬昏</view>
+ <view class="ml-1 text-sm">鏁版嵁鎬昏</view>
</view>
</template>
<view class="flex flex-row justify-around">
@@ -85,7 +85,7 @@
<template #title>
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <view class="ml-1 text-xs">蹇嵎鎿嶄綔</view>
+ <view class="ml-1 text-sm">蹇嵎鎿嶄綔</view>
</view>
</template>
<wd-grid :column="4">
@@ -108,7 +108,7 @@
<template #title>
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <view class="ml-1 text-xs">璁惧绠$悊</view>
+ <view class="ml-1 text-sm">璁惧绠$悊</view>
</view>
</template>
<wd-grid :column="4">
@@ -130,7 +130,7 @@
<template #title>
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <view class="ml-1 text-xs">鍙拌处鐩稿叧</view>
+ <view class="ml-1 text-sm">鍙拌处鐩稿叧</view>
</view>
</template>
<wd-grid :column="4">
diff --git a/eims-ui-mobile/src/pages/inspect/insp-record.vue b/eims-ui-mobile/src/pages/inspect/insp-record.vue
index a276635..42d7841 100644
--- a/eims-ui-mobile/src/pages/inspect/insp-record.vue
+++ b/eims-ui-mobile/src/pages/inspect/insp-record.vue
@@ -6,7 +6,13 @@
}
</route>
<template>
- <z-paging ref="paging" v-model="dataList" :auto="false" @query="queryList" show-refresher-update-time>
+ <z-paging
+ ref="paging"
+ v-model="dataList"
+ :auto="false"
+ @query="queryList"
+ show-refresher-update-time
+ >
<template #top>
<wd-navbar
title="鐐规璁板綍"
@@ -24,10 +30,13 @@
<wd-card type="rectangle">
<template #title>
<view class="flex justify-between">
- <view class="flex items-center menu-title-box">
+ <view
+ class="flex items-center menu-title-box center"
+ style="align-content: center; flex-wrap: wrap"
+ >
<view class="menu-indicator"></view>
- <view class="ml-1 text-sm align-center">{{ inspSt.equName }}</view>
- <view class="text-color-gray ml-2 text-mini">{{ inspSt.assetNo }}</view>
+ <view class="ml-1 text-lg align-center">{{ inspSt.equName }}</view>
+ <view class="text-color-gray ml-2 text-sm">{{ inspSt.assetNo }}</view>
</view>
<view class="flex items-center">
@@ -38,19 +47,19 @@
<view class="flex h-[140rpx]" items-center>
<image class="slot-img text-center" src="/static/images/camera.png" />
<view class="flex-1">
- <view class="text-color-gray text-xs mt-1 flex">
+ <view class="text-color-gray text-sm mt-1 flex">
<text class="mr-3">鐐规鎬绘暟: {{ dataCount }}</text>
|
<text class="mx-3">宸茬偣妫�: {{ checkCount }}</text>
|
<text class="ml-3">鏈偣妫�: {{ dataCount - checkCount }}</text>
</view>
- <view class="text-color-gray text-xs mt-2 flex">
+ <view class="text-color-gray text-sm mt-2 flex">
<text class="mr-3">姝e父: {{ normalNum }}</text>
|
<text class="mx-3">寮傚父: {{ abNormalNum }}</text>
</view>
- <view class="text-color-gray text-xs mt-2 flex">
+ <view class="text-color-gray text-sm mt-2 flex">
<text>鐘舵�侊細</text>
<template v-if="dataCount > 0 && dataCount === checkCount">
<wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
@@ -61,7 +70,7 @@
<text class="ml-1">杩涜涓�</text>
</template>
</view>
- <view class="text-color-gray text-xs mt-2 flex">鍒涘缓鏃堕棿: {{ inspSt.createTime }}</view>
+ <view class="text-color-gray text-sm mt-2 flex">鍒涘缓鏃堕棿: {{ inspSt.createTime }}</view>
</view>
</view>
</wd-card>
@@ -71,18 +80,23 @@
<view class="w-full h-[24rpx]"></view>
<wd-cell>
<template #title>
- <text class="text-color-gray">鐐规椤�</text>
+ <text class="text-color-gray text-sm">鐐规椤�</text>
</template>
- <wd-button size="small" type="text" @click.stop="toggleCollapse">
- {{ isAllExpanded ? '鍏ㄩ儴鎶樺彔' : '鍏ㄩ儴灞曞紑' }}
- </wd-button>
+ <!-- <wd-button size="small" type="text" @click.stop="toggleCollapse">-->
+ <!-- {{ isAllExpanded ? '鍏ㄩ儴鎶樺彔' : '鍏ㄩ儴灞曞紑' }}-->
+ <!-- </wd-button>-->
</wd-cell>
- <wd-collapse v-model="collSelects" title="鐐规椤�" ref="collapseRef">
- <wd-collapse-item :name="item.id" v-for="(item, index) in dataList" disabled>
+ <wd-collapse v-model="collSelects" title="鐐规椤�" ref="collapseRef" accordion>
+ <wd-collapse-item
+ :name="item.id"
+ v-for="(item, index) in dataList"
+ :key="item.id"
+ :class="getItemClass(item)"
+ >
<template #title="{ expanded, disabled, isFirst }">
<view class="flex justify-between">
- <view class="flex justify-center items-center" style="max-width: 60%;">
- <text class="text-sm" >{{ item.inspName }}</text>
+ <view class="flex justify-center items-center" style="max-width: 60%">
+ <text class="text-sm">{{ item.inspName }}</text>
</view>
<view class="flex items-center">
@@ -105,18 +119,27 @@
</view>
</view>
</template>
- <view class="text-color-gray text-xs flex justify-between">
+
+ <view v-if="item.showDesc" class="mt-2">
+ <wd-input
+ v-model="item.inspDesc"
+ placeholder="璇疯緭鍏ュ紓甯告弿杩�"
+ clearable
+ :maxlength="200"
+ />
+ </view>
+ <view class="text-color-gray text-sm flex justify-between">
<text class="mr-3">鐐规浜�: {{ item.inspUserName }}</text>
<text class="mx-3">鐐规鏃堕棿: {{ item.inspTime }}</text>
</view>
</wd-collapse-item>
</wd-collapse>
- <view class="w-full h-[24rpx]"></view>
- <wd-cell>
- <template #title>
- <text class="text-color-gray">鍏朵粬</text>
- </template>
- </wd-cell>
+ <!-- <view class="w-full h-[24rpx]"></view>-->
+ <!-- <wd-cell>-->
+ <!--<!– <template #title>–>-->
+ <!--<!– <text class="text-color-gray">鍏朵粬</text>–>-->
+ <!--<!– </template>–>-->
+ <!-- </wd-cell>-->
<view class="w-full h-[1px] bg-base"></view>
<wd-input
label="杩愯鏃堕棿"
@@ -125,6 +148,7 @@
v-model="inspSt.runTimes"
placeholder="璇疯緭鍏ヨ繍琛屾椂闂�(h)"
inputmode="numeric"
+ size="large"
/>
<wd-input
label="鏁呴殰鏃堕棿"
@@ -133,6 +157,7 @@
v-model="inspSt.faultTimes"
placeholder="璇疯緭鍏ユ晠闅滄椂闂�(h)"
inputmode="numeric"
+ size="large"
/>
<wd-textarea
label="鐗硅浜嬮」"
@@ -144,13 +169,17 @@
show-word-limit
placeholder="璇疯緭鍏ョ壒璁颁簨椤�"
clearable
+ size="large"
/>
+ <!-- 鏂板鎻愪氦鎸夐挳 -->
+ <view class="flex justify-center mt-4">
+ <wd-button type="primary" block size="large" @click="handleClickRight">鎻愪氦</wd-button>
+ </view>
</view>
</z-paging>
</template>
<script setup lang="ts">
-import { ref } from 'vue'
import { useUserStore, useAccessStore, useSystemConfigStore } from '@/store'
import { isLeader, isOperatorOrRepair } from '@/utils/RoleUtils'
import {
@@ -194,7 +223,8 @@
const userStore = useUserStore()
-const collSelects = ref<string[]>([])
+const collSelects = ref('')
+const selectedItems = ref([])
// 鐐规姹囨�绘暟鎹�(涓婁釜椤甸潰浼犲��)
const inspSt = reactive<InspSt>({
@@ -237,7 +267,19 @@
}
function inspResultClick(item: any) {
- // userStore?.userInfo?.userId
+ console.log('inspResultClick', userStore.userInfo)
+ // 鑷姩濉厖鐐规浜哄拰鏃堕棿
+ item.inspUserName = userStore?.userInfo?.realName || ''
+ // 淇敼鏃堕棿鏍煎紡涓� YYYY-MM-DD HH:mm:ss
+ const now = new Date()
+ item.inspTime = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`
+
+ if (item.inspResult === '2') {
+ item.showDesc = true
+ } else {
+ item.showDesc = false
+ item.inspDesc = ''
+ }
}
const goBack = () => {
@@ -245,10 +287,9 @@
}
function handleClickRight() {
- if(isOperatorOrRepair()){
+ if (isOperatorOrRepair()) {
handleConfirm()
}
-
}
const toggleCollapse = () => {
@@ -257,10 +298,31 @@
}
function handleConfirm() {
+ console.log('handleConfirm')
if (!dataChange.value) {
message.alert('璇锋搷浣滃悗鎻愪氦!')
return false
}
+
+ // 妫�鏌ユ槸鍚︽湁寮傚父椤规湭濉啓鎻忚堪
+ const invalidItems = dataList.value.filter(
+ (item) => item.inspResult === '2' && !item.inspDesc?.trim(),
+ )
+ if (invalidItems.length > 0) {
+ message.alert('璇峰~鍐欐墍鏈夊紓甯搁」鐨勫紓甯告弿杩�!')
+ return false
+ }
+
+ // 杩囨护鍑哄凡閫夋嫨鐨勯」鐩�
+ selectedItems.value = dataList.value.filter(
+ (item) => item.inspResult === '1' || item.inspResult === '2',
+ )
+
+ if (selectedItems.value.length === 0) {
+ message.alert('璇疯嚦灏戦�夋嫨涓�涓偣妫�椤�!')
+ return false
+ }
+
message
.confirm({
msg: '纭畾鎻愪氦锛�',
@@ -278,8 +340,9 @@
}
function updateData(resolve: any) {
+ console.log('updateData', selectedItems.value)
const params = {
- inspRecordList: dataList.value,
+ inspRecordList: selectedItems.value,
}
// 鏇存柊鐐规璁板綍
updateInspRecordBatch(params)
@@ -313,8 +376,17 @@
*/
function itemClick(item: any) {}
+function getItemClass(item: any) {
+ if (item.inspResult === '1') {
+ return 'status-normal'
+ } else if (item.inspResult === '2') {
+ return 'status-abnormal'
+ }
+ return ''
+}
+
watch(
- () => [...dataList.value], // 浣跨敤鎵╁睍杩愮畻绗﹀垱寤烘柊鏁扮粍浠ヨЕ鍙戠洃鍚�
+ () => [...dataList.value, inspSt], // 浣跨敤鎵╁睍杩愮畻绗﹀垱寤烘柊鏁扮粍浠ヨЕ鍙戠洃鍚�
(newVal, oldVal) => {
if (oldVal.length > 0) {
dataChange.value = true
@@ -375,7 +447,7 @@
margin-right: 24rpx;
}
.text-mini {
- font-size: 22rpx;
+ font-size: 24rpx;
}
.menu-indicator {
@@ -394,13 +466,26 @@
background: $uni-color-primary;
}
:deep(.wd-navbar__text) {
- font-size: 26rpx;
+ font-size: 28rpx;
color: white;
}
:deep(.wd-icon-arrow-left:before),
:deep(.wd-navbar__title) {
color: white;
font-weight: 0;
- font-size: 32rpx;
+ font-size: 34rpx;
+}
+
+// 鏂板鏍峰紡锛氱偣妫�椤硅儗鏅壊
+.status-normal {
+ background-color: #e6f7ff; // 姝e父鐘舵�佽儗鏅壊锛堢豢鑹诧級
+}
+
+.status-abnormal {
+ background-color: #fffbe6; // 寮傚父鐘舵�佽儗鏅壊锛堥粍鑹诧級
+}
+:deep(.wd-radio-group) {
+ // 鏀逛负鏃犺儗鏅壊
+ background-color: transparent;
}
</style>
diff --git a/eims-ui-mobile/src/pages/inspect/insp-st.vue b/eims-ui-mobile/src/pages/inspect/insp-st.vue
index 9e495be..0eb3a03 100644
--- a/eims-ui-mobile/src/pages/inspect/insp-st.vue
+++ b/eims-ui-mobile/src/pages/inspect/insp-st.vue
@@ -43,19 +43,19 @@
<view class="flex h-[140rpx]" items-center>
<image class="slot-img text-center" src="/static/images/camera.png" />
<view class="flex-1">
- <view class="text-color-gray text-xs mt-1 flex">
- <text class="mr-3">鐐规鎬绘暟: {{ item.recordCount }}</text>
+ <view class="text-color-gray text-sm mt-1 flex">
+ <text class="mr-3">鎬绘暟: {{ item.recordCount }}</text>
|
<text class="mx-3">宸茬偣妫�: {{ item.checkCount }}</text>
|
<text class="ml-3">鏈偣妫�: {{ item.unCheckCount }}</text>
</view>
- <view class="text-color-gray text-xs mt-2 flex">
+ <view class="text-color-gray text-sm mt-2 flex">
<text class="mr-3">姝e父: {{ item.normalNum }}</text>
|
<text class="mx-3">寮傚父: {{ item.abNormalNum }}</text>
</view>
- <view class="text-color-gray text-xs mt-2 flex">
+ <view class="text-color-gray text-sm mt-2 flex">
<text>鐘舵�侊細</text>
<template v-if="item.recordCount === item.checkCount">
<wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
@@ -66,7 +66,7 @@
<text class="ml-1">杩涜涓�</text>
</template>
</view>
- <view class="text-color-gray text-xs mt-2 flex">鍒涘缓鏃堕棿: {{ item.createTime }}</view>
+ <view class="text-color-gray text-sm mt-2 flex">鍒涘缓鏃堕棿: {{ item.createTime }}</view>
</view>
<wd-button size="small" icon="edit-outline" @click.stop="itemClick(item)">鏄庣粏</wd-button>
</view>
@@ -164,7 +164,7 @@
height: 40rpx;
}
.text-mini {
- font-size: 22rpx;
+ font-size: 24rpx;
}
.menu-indicator {
diff --git a/eims-ui-mobile/src/pages/maint/maint-order.vue b/eims-ui-mobile/src/pages/maint/maint-order.vue
index 7f2da57..88398ec 100644
--- a/eims-ui-mobile/src/pages/maint/maint-order.vue
+++ b/eims-ui-mobile/src/pages/maint/maint-order.vue
@@ -39,31 +39,31 @@
<view class="flex justify-between">
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <view class="ml-1 text-sm align-center">{{ maintSt.equName }}</view>
- <view class="text-color-gray ml-2 text-mini">{{ maintSt.assetNo }}</view>
+ <view class="ml-1 text-lg align-center">{{ maintSt.equName }}</view>
+ <view class="text-color-gray ml-2 text-sm">{{ maintSt.assetNo }}</view>
</view>
<view class="flex items-center">
- <text class="text-color-gray text-mini">{{ maintSt.planTime }}</text>
+ <text class="text-color-gray text-sm">{{ maintSt.planTime }}</text>
</view>
</view>
</template>
<view class="flex h-[140rpx]" items-center>
<image class="slot-img text-center" src="/static/images/camera.png" />
<view class="flex-1">
- <view class="text-color-gray text-xs mt-1 flex">
+ <view class="text-color-gray text-sm mt-1 flex">
<text class="mr-3">宸ュ崟鎬绘暟: {{ maintSt.orderCount }}</text>
|
<text class="mx-3">宸插畬鎴�: {{ maintSt.wcCount }}</text>
</view>
- <view class="text-color-gray text-xs mt-2 flex">
+ <view class="text-color-gray text-sm mt-2 flex">
<text class="mr-3">寰呬繚鍏�: {{ maintSt.dbyCount }}</text>
|
<text class="mx-3">淇濆吇涓�: {{ maintSt.byCount }}</text>
|
<text class="ml-3">寰呴獙璇�: {{ maintSt.dyzCount }}</text>
</view>
- <view class="text-color-gray text-xs mt-2 flex">
+ <view class="text-color-gray text-sm mt-2 flex">
<text>鐘舵�侊細</text>
<template v-if="maintSt.status === '1'">
<wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
@@ -75,7 +75,7 @@
</template>
</view>
- <view class="text-color-gray text-xs mt-2 flex">
+ <view class="text-color-gray text-sm mt-2 flex">
鍒涘缓鏃堕棿: {{ maintSt.createTime }}
</view>
</view>
@@ -87,145 +87,118 @@
<view class="w-full h-[24rpx]"></view>
<wd-cell class="mb-[2px]">
<template #title>
- <text class="text-color-gray">淇濆吇椤�</text>
+ <text class="text-color-gray text-sm">淇濆吇椤�</text>
</template>
</wd-cell>
- <wd-card type="rectangle" v-for="(item, index) in dataList" :key="item.id">
+ <wd-card type="rectangle" v-for="(item, index) in dataList" :key="item.id" :class="['status-' + item.maintFun]">
<template #title>
- <view class="flex justify-between">
- <view class="flex items-center menu-title-box">
- <view class="menu-indicator"></view>
- <view class="ml-1 text-sm align-center">
- <wd-text :text="item.maintName" :lines="1"></wd-text>
- </view>
+ <view class="flex items-center">
+ <view class="menu-indicator"></view>
+ <view class="ml-1 text-sm align-center">
+ <wd-text color="black" :text="item.maintName"></wd-text>
</view>
-
- <view class="flex items-center w-[20%] justify-end">
- <text class="text-color-gray text-mini">
- {{ item?.planTime }}
- </text>
+ <!-- 鏂板鐘舵�佹樉绀猴紝缁戝畾鐐瑰嚮浜嬩欢 -->
+ <view
+ v-if="item.status === '2'"
+ class="ml-auto text-sm"
+ style="width: 60px; text-align: end"
+ :style="{ color: getStatusColor(item.maintFun) }"
+ @click.stop="handleUndoAction(item)"
+ >
+ {{ getStatusText(item.maintFun) }}
</view>
</view>
</template>
- <view class="flex h-[200rpx]" items-center>
- <image class="slot-img text-center" src="/static/ico/ico-platform.png" />
- <view class="flex-1 text-color-gray text-xs flex-row">
- <view class="mr-3 mt-2">淇濆吇鍗曞彿: {{ item.maintCode }}</view>
- <view class="mr-3 mt-2">璁″垝淇濆吇鏃ユ湡: {{ item.planTime }}</view>
- <view class="mr-3 mt-2">淇濆吇寮�濮嬫椂闂�: {{ item.startTime }}</view>
- <view class="mr-3 mt-2">淇濆吇缁撴潫鏃堕棿: {{ item.endTime }}</view>
- <view class="text-color-gray text-xs mt-2 flex">
- <text>鐘舵�侊細</text>
- <template v-if="item.status === '0'">
- <wd-icon class="icon-color-warning" name="books" size="34rpx"></wd-icon>
- <text class="ml-1">寰呬繚鍏�</text>
- </template>
- <template v-else-if="item.status === '1'">
- <wd-icon class="icon-color-base" name="books" size="34rpx"></wd-icon>
- <text class="ml-1">淇濆吇涓�</text>
- </template>
- <template v-else-if="item.status === '2'">
- <wd-icon class="icon-color-purple" name="books" size="34rpx"></wd-icon>
- <text class="ml-1">寰呴獙璇�</text>
- </template>
- <template v-else-if="item.status === '3'">
- <wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
- <text class="ml-1">宸插畬鎴�</text>
- </template>
- <text class="mx-3">|</text>
- <wd-icon class="icon-color-base" name="camera" size="30rpx"></wd-icon>
- <text class="ml-1">{{ item.maintUserName }}</text>
+
+ <!-- 鎸夐挳鍖哄煙 -->
+ <view v-if="item.maintFun == null" class="flex justify-around mt-2">
+ <wd-button
+ type="primary"
+ size="small"
+ class="mr-2"
+ @click.stop="handleAction(item, '0')"
+ >
+ 妫�鏌�
+ </wd-button>
+ <wd-button
+ type="success"
+ size="small"
+ class="mr-2"
+ @click.stop="handleAction(item, '1')"
+ >
+ 淇濆吇
+ </wd-button>
+ <wd-button type="warning" size="small" @click.stop="handleAction(item, '2')">
+ 缁翠慨
+ </wd-button>
+ </view>
+
+ <!-- 姝f枃鍖哄煙 -->
+ <view v-else class="mt-2">
+ <!-- 淇濆吇璇存槑鍖哄煙 -->
+ <view v-if="item.maintFun === '1'" class="mt-2">
+ <wd-input
+ v-model="item.maintDesc"
+ placeholder="璇疯緭鍏ヤ繚鍏昏鏄�"
+ clearable
+ :maxlength="200"
+ />
+ </view>
+
+ <!-- 缁翠慨璇存槑鍖哄煙 -->
+ <view v-if="item.maintFun === '2'" class="mt-2">
+ <wd-input
+ v-model="item.repairDesc"
+ placeholder="璇疯緭鍏ョ淮淇鏄�"
+ clearable
+ :maxlength="200"
+ />
+ </view>
+
+
+ <!-- 澶囦欢淇℃伅褰曞叆鍖哄煙 -->
+ <view v-if="item.spareParts && item.spareParts.length > 0" class="mt-2">
+ <view
+ v-for="(part, partIndex) in item.spareParts"
+ :key="partIndex"
+ class="flex justify-between mt-1"
+ >
+ <wd-input
+ v-model="part.name"
+ label="鍚嶇О"
+ label-width="100rpx"
+ placeholder="澶囦欢鍚嶇О"
+
+
+ />
+ <wd-input
+ v-model="part.quantity"
+ label="鏁伴噺" label-width="100rpx"
+ placeholder="鏁伴噺" type="number" :maxlength="5" />
</view>
</view>
- <!--鎿嶄綔宸ユ垨缁翠慨宸ヨ鑹�-->
- <template v-if="isOperatorOrRepair()">
- <view class="flex flex-col justify-between" v-if="item.status === '0'">
- <wd-button
- size="small"
- icon="edit-outline"
- @click.stop="handleStartMaint(item)"
- >
- 寮�濮嬩繚鍏�
- </wd-button>
+ <!-- 缁翠慨璇存槑鍖哄煙 -->
+ <view v-if="item.maintFun === '2'" class="mt-2">
+ <wd-button type="info" size="small" @click.stop="addSparePart(item, index)">
+ 娣诲姞澶囦欢
+ </wd-button>
+ </view>
- <wd-button
- class="mt-3"
- size="small"
- icon="edit-outline"
- @click.stop="handleMaintFinish(item)"
- >
- 涓�閿繚鍏�
- </wd-button>
- </view>
- <wd-button
- v-if="item.status === '1'"
- size="small"
- icon="edit-outline"
- @click.stop="itemClick(item)"
- >
- 淇濆吇涓�
- </wd-button>
- <wd-button
- v-if="item.status === '2'"
- size="small"
- icon="edit-outline"
- @click.stop="itemClick(item)"
- >
- 寰呴獙璇�
- </wd-button>
-
- <wd-button
- v-if="item.status === '3'"
- size="small"
- icon="check-outline"
- @click.stop="itemClick(item)"
- >
- 宸插畬鎴�
- </wd-button>
- </template>
-
- <!--绠$悊鍛樿鑹�-->
- <template v-else-if="isLeader()">
- <wd-button v-if="item.status === '0'" size="small" icon="warn-bold" disabled>
- 寰呬繚鍏�
- </wd-button>
- <wd-button v-if="item.status === '1'" size="small" icon="warn-bold" disabled>
- 淇濆吇涓�
- </wd-button>
-
- <wd-button
- v-if="item.status === '2'"
- size="small"
- icon="edit-outline"
- @click.stop="itemClick(item)"
- >
- 寰呴獙璇�
- </wd-button>
-
- <wd-button
- v-if="item.status === '3'"
- size="small"
- icon="check-outline"
- @click.stop="itemClick(item)"
- >
- 宸插畬鎴�
- </wd-button>
- </template>
+ <!-- 淇濆吇浜哄拰淇濆吇鏃堕棿鍖哄煙 -->
+ <view class="flex justify-between mt-2">
+ <text>淇濆吇浜�: {{ item.maintUserName }}</text>
+ <text>淇濆吇鏃堕棿: {{ item.endTime }}</text>
+ </view>
</view>
</wd-card>
- <wd-cell>
- <template #title>
- <text class="text-color-gray">鍏朵粬淇℃伅</text>
- </template>
- </wd-cell>
- <view class="h-[2px] w-full bg-base"></view>
+
<wd-textarea
label="鐗硅浜嬮」"
label-width="200rpx"
type="textarea"
- v-model="maintSt.specialNote"
+ v-model="specialNote"
auto-height
:maxlength="200"
show-word-limit
@@ -233,22 +206,63 @@
clearable
/>
</view>
+ <!-- 鏂板鎻愪氦鎸夐挳 -->
+ <view class="flex justify-center mt-4">
+ <wd-button type="primary" block size="large" @click="handleClickRight">鎻愪氦</wd-button>
+ </view>
</z-paging>
+
+ <!-- 澶囦欢閫夋嫨寮瑰嚭灞� -->
+ <wd-popup v-model="showSparePopup" position="bottom" height="33.33vh">
+ <view class="flex justify-between p-2 bg-white">
+ <wd-button type="text" @click="closeSparePopup">鍙栨秷</wd-button>
+ <wd-button type="text" @click="addOtherSparePart">鍏朵粬</wd-button>
+
+ </view>
+ <wd-input
+ v-model="searchKeyword"
+ placeholder="璇疯緭鍏ュ浠跺悕绉版垨鍨嬪彿"
+ clearable
+ @input="filterSpareParts"
+ />
+ <view class="p-2">
+ <view
+ v-for="(part, index) in sparePartsList"
+ :key="index"
+ class="flex justify-between items-center p-2 border-b"
+ @click="selectFilteredSparePart(part)"
+ >
+ <text>{{ part.name }} ({{ part.code }})</text>
+ <text>鍓╀綑: {{ part.actualStock }}</text>
+ </view>
+ </view>
+ </wd-popup>
+
+
</template>
+
<script setup lang="ts">
import type { MaintStVO } from '@/service/maint.d'
-import { getMaintSt, getMaintStOrderList, updateMaintOrder, updateMaintSt } from '@/service/maint'
+import { getMaintSt, getMaintStOrderList, updateMaintOrder, updateMaintSt, updateMaintOrderBatch } from '@/service/maint'
import { ref, reactive } from 'vue'
import { useToast, useMessage } from 'wot-design-uni'
import { isLeader, isOperatorOrRepair } from '@/utils/RoleUtils'
import { formatDate } from '@/utils/DateUtils'
+import { useUserStore } from "@/store";
+import { getSpareList } from '@/service/spare'
+
const message = useMessage()
const toast = useToast()
-
+const userStore = useUserStore()
const paging = ref(null)
const dataList = ref([])
const maintStId = ref('')
-
+const showSparePopup = ref(false)
+const selectedPartIndex = ref(-1)
+const sparePartsList = ref([])
+const searchKeyword = ref('')
+const dataChange = ref(false)
+const specialNote = ref('')
interface QueryParams {
pageNum: number
pageSize: number
@@ -272,7 +286,7 @@
const queryList = (pageNum?: number, pageSize?: number) => {
const params: QueryParams = {
pageNum,
- pageSize,
+ pageSize: 30,
maintCode: maintCode.value,
}
getMaintStOrderList(params)
@@ -307,6 +321,65 @@
uni.navigateTo({
url: `/pages/maint/order-detail?id=${item.id}`,
})
+}
+
+// 澶囦欢閫夋嫨鐩稿叧閫昏緫
+function addSparePart(item: any, index: number) {
+ if (!item.spareParts) {
+ item.spareParts = []
+ }
+ selectedPartIndex.value = index
+ // item.spareParts.push({ name: '', quantity: '' })
+ selectSparePart(item)
+}
+
+function selectSparePart(item: any) {
+ showSparePopup.value = true
+
+ loadSpareParts()
+}
+
+function loadSpareParts(value?: string) {
+ getSpareList({ name: value }).then((res: any) => {
+ sparePartsList.value = res.rows
+
+ })
+}
+
+function filterSpareParts() {
+ if (!searchKeyword.value) {
+ loadSpareParts()
+ } else {
+ loadSpareParts(searchKeyword.value)
+ }
+}
+
+function selectFilteredSparePart(part: any) {
+ dataList.value[selectedPartIndex.value].spareParts.push({
+ id: part.id,
+ name: part.name,
+ quantity: '',
+ })
+ closeSparePopup()
+}
+
+function closeSparePopup() {
+ showSparePopup.value = false
+ selectedPartIndex.value = -1
+ searchKeyword.value = ''
+}
+
+function confirmSpareSelection() {
+ closeSparePopup()
+}
+
+function addOtherSparePart() {
+ dataList.value[selectedPartIndex.value].spareParts.push({
+ id: '',
+ name: '',
+ quantity: '',
+ })
+ closeSparePopup();
}
/**
@@ -380,19 +453,36 @@
}
function handleUpdateMaintSt() {
- if (maintSt.orderCount !== maintSt.wcCount) {
- toast.info('璇峰厛瀹屾垚鎵�鏈変繚鍏婚」锛�')
+ // if (maintSt.orderCount !== maintSt.wcCount) {
+ // toast.info('璇峰厛瀹屾垚鎵�鏈変繚鍏婚」锛�')
+ // return false
+ // }
+ // 鍏堝垽鏂繚鍏婚」鏄惁鏈夋洿鏀�
+ console.log('handleUPdateMaintst', dataChange.value)
+ if (!dataChange.value) {
+ message.alert('璇锋搷浣滃悗鎻愪氦!')
return false
}
+ // 杩囨护鎺� maintFun涓虹┖鐨勪繚鍏婚」
+ const submitList = dataList.value.filter((item) => item.maintFun != null)
+ // 濡傛灉maintFun涓�1鐨勫垯鍒ゆ柇淇濆吇璇存槑涓嶈兘涓虹┖锛屽鏋滀负2鍒欏垽鏂淮淇鏄庝笉鑳戒负绌�
+ if (submitList.some((item) => item.maintFun === '1' && !item.maintDesc)) {
+ toast.info('璇峰~鍐欎繚鍏昏鏄庯紒')
+ return false
+ } else if (submitList.some((item) => item.maintFun === '2' && !item.repairDesc)) {
+ toast.info('璇峰~鍐欑淮淇鏄庯紒')
+ return false
+ }
+
const data: any = Object.assign(
{},
{
id: maintSt.id,
orderCount: maintSt.orderCount,
- wcCount: maintSt.wcCount,
+ wcCount: submitList.length,
status: maintSt.status,
- specialNote: maintSt.specialNote,
+ specialNote: specialNote.value,
},
)
if (data.orderCount === data.wcCount) {
@@ -403,6 +493,7 @@
msg: '纭畾鏇存柊宸ュ崟姹囨�绘暟鎹紵',
title: '鎻愮ず',
beforeConfirm: ({ resolve }) => {
+ updateMaintOrderBatch({maintOrderList:submitList})
updateMaintSt(data)
.then((res: any) => {
resolve(true)
@@ -457,6 +548,90 @@
maintStId.value = options.id
reloadData()
})
+watch(
+ () => [...dataList.value, specialNote.value ], // 浣跨敤鎵╁睍杩愮畻绗﹀垱寤烘柊鏁扮粍浠ヨЕ鍙戠洃鍚�
+ (newVal, oldVal) => {
+ if (oldVal.length > 0) {
+ console.log('dataChange',oldVal, newVal)
+ dataChange.value = true
+ }
+ },
+ { deep: true },
+)
+/**
+ * 澶勭悊鎸夐挳鐐瑰嚮浜嬩欢
+ * @param item 淇濆吇椤�
+ * @param action 鎿嶄綔绫诲瀷锛坈heck/check/maintain/repair锛�
+ */
+function handleAction(item: any, action: number) {
+ // 璁剧疆褰撳墠閫変腑鐨勬搷浣滅被鍨�
+ item.maintFun = action
+ item.status = '2'
+ // 鑷姩濉厖淇濆吇浜哄拰鏃堕棿
+ item.maintUserName = userStore?.userInfo?.realName || ''
+ const now = new Date()
+ item.endTime = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`;
+ console.log('handleAction', item)
+}
+
+/**
+ * 鎾ら攢淇濆吇鎿嶄綔
+ * @param item 淇濆吇椤�
+ */
+function handleUndoAction(item: any) {
+ message
+ .confirm({
+ msg: '纭畾鎾ら攢褰撳墠鎿嶄綔锛�',
+ title: '鎻愮ず',
+ beforeConfirm: ({ resolve }) => {
+ // 閲嶇疆鐘舵�佸拰鐩稿叧瀛楁
+ item.maintFun = null;
+ item.status = '0';
+ item.maintDesc = '';
+ item.repairDesc = '';
+ item.spareParts = [];
+ item.maintUserName = '';
+ item.endTime = '';
+ resolve(true);
+ },
+ })
+ .then(() => {
+ toast.success('鎿嶄綔宸叉挙閿�');
+ dataChange.value = true;
+ })
+ .catch((error) => {
+ console.log(error);
+ });
+}
+
+// 鏂板鏂规硶锛氳幏鍙栫姸鎬佹枃鏈�
+function getStatusText(maintFun: string): string {
+ switch (maintFun) {
+ case '0':
+ return '宸叉鏌�';
+ case '1':
+ return '宸蹭繚鍏�';
+ case '2':
+ return '宸茬淮淇�';
+ default:
+ return '';
+ }
+}
+
+// 鏂板鏂规硶锛氳幏鍙栫姸鎬侀鑹�
+function getStatusColor(maintFun: string): string {
+ switch (maintFun) {
+ case '0':
+ return '#007bff'; // 妫�鏌ユ寜閽鑹�
+ case '1':
+ return '#28a745'; // 淇濆吇鎸夐挳棰滆壊
+ case '2':
+ return '#ffc107'; // 缁翠慨鎸夐挳棰滆壊
+ default:
+ return '#000';
+ }
+}
+
</script>
<style scoped lang="scss">
@@ -472,7 +647,7 @@
}
.text-mini {
- font-size: 22rpx;
+ font-size: 24rpx;
}
.menu-indicator {
@@ -494,7 +669,7 @@
}
:deep(.wd-navbar__text) {
- font-size: 26rpx;
+ font-size: 28rpx;
color: white;
}
@@ -502,6 +677,20 @@
:deep(.wd-navbar__title) {
color: white;
font-weight: 0;
- font-size: 32rpx;
+ font-size: 34rpx;
+}
+
+// 鏂板鏍峰紡锛氬姩鎬佽缃崱鐗囪儗鏅壊
+:deep(.wd-card) {
+ transition: background-color 0.3s ease;
+ &.status-0 {
+ background-color: #e6f7ff; // 妫�鏌ョ姸鎬佽儗鏅壊
+ }
+ &.status-1 {
+ background-color: #f6ffed; // 淇濆吇鐘舵�佽儗鏅壊
+ }
+ &.status-2 {
+ background-color: #fffbe6; // 缁翠慨鐘舵�佽儗鏅壊
+ }
}
</style>
diff --git a/eims-ui-mobile/src/pages/maint/maint-st.vue b/eims-ui-mobile/src/pages/maint/maint-st.vue
index c535f0b..6704e0b 100644
--- a/eims-ui-mobile/src/pages/maint/maint-st.vue
+++ b/eims-ui-mobile/src/pages/maint/maint-st.vue
@@ -43,19 +43,19 @@
<view class="flex h-[140rpx]" items-center>
<image class="slot-img text-center" src="/static/images/camera.png" />
<view class="flex-1">
- <view class="text-color-gray text-xs mt-1 flex">
+ <view class="text-color-gray text-sm mt-1 flex">
<text class="mr-3">宸ュ崟鎬绘暟: {{ item.orderCount }}</text>
|
<text class="mx-3">宸插畬鎴�: {{ item.wcCount }}</text>
</view>
- <view class="text-color-gray text-xs mt-2 flex">
+ <view class="text-color-gray text-sm mt-2 flex">
<text class="mr-3">寰呬繚鍏�: {{ item.dbyCount }}</text>
|
<text class="mx-3">淇濆吇涓�: {{ item.byCount }}</text>
|
<text class="ml-3">寰呴獙璇�: {{ item.dyzCount }}</text>
</view>
- <view class="text-color-gray text-xs mt-2 flex">
+ <view class="text-color-gray text-sm mt-2 flex">
<text>鐘舵�侊細</text>
<template v-if="item.status === '1'">
<wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
@@ -66,7 +66,7 @@
<text class="ml-1">杩涜涓�</text>
</template>
</view>
- <view class="text-color-gray text-xs mt-2 flex">鍒涘缓鏃堕棿: {{ item.createTime }}</view>
+ <view class="text-color-gray text-sm mt-2 flex">鍒涘缓鏃堕棿: {{ item.createTime }}</view>
</view>
<wd-button size="small" icon="edit-outline" @click.stop="itemClick(item)">鏄庣粏</wd-button>
</view>
@@ -208,7 +208,7 @@
height: 40rpx;
}
.text-mini {
- font-size: 22rpx;
+ font-size: 24rpx;
}
.menu-indicator {
diff --git a/eims-ui-mobile/src/pages/repair/repair-fb.vue b/eims-ui-mobile/src/pages/repair/repair-fb.vue
index ae8aaea..125226f 100644
--- a/eims-ui-mobile/src/pages/repair/repair-fb.vue
+++ b/eims-ui-mobile/src/pages/repair/repair-fb.vue
@@ -29,20 +29,20 @@
<template #title>
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <view class="ml-1 text-xs">缁翠慨姒傝</view>
+ <view class="ml-1 text-sm">缁翠慨姒傝</view>
</view>
</template>
<wd-steps :active="repairRecordList.length" vertical class="px-4">
<wd-step v-for="(item, index) in repairRecordList">
<template #title>
<view class="flex items-center menu-title-box">
- <view class="ml-1 text-xs">{{ item?.operaResult }}</view>
+ <view class="ml-1 text-sm">{{ item?.operaResult }}</view>
</view>
</template>
<template #description>
<view class="flex items-center menu-title-box">
- <view class="ml-1 text-xs">{{ item?.operaUserName }}</view>
- <view class="ml-1 text-xs">{{ item?.handleTime }}</view>
+ <view class="ml-1 text-sm">{{ item?.operaUserName }}</view>
+ <view class="ml-1 text-sm">{{ item?.handleTime }}</view>
</view>
</template>
</wd-step>
@@ -53,7 +53,7 @@
<template #title>
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <view class="ml-1 text-xs">缁翠慨璇勪环</view>
+ <view class="ml-1 text-sm">缁翠慨璇勪环</view>
</view>
</template>
<wd-cell title="缁翠慨婊℃剰搴�">
diff --git a/eims-ui-mobile/src/pages/repair/req-list.vue b/eims-ui-mobile/src/pages/repair/req-list.vue
index 5759003..c93a9ea 100644
--- a/eims-ui-mobile/src/pages/repair/req-list.vue
+++ b/eims-ui-mobile/src/pages/repair/req-list.vue
@@ -52,7 +52,7 @@
<view class="flex justify-between items-center">
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <text class="ml-1 text-xs">{{ item.code }}</text>
+ <text class="ml-1 text-sm">{{ item.code }}</text>
</view>
<view>
@@ -114,7 +114,7 @@
<text>鎶ヤ慨浜�: {{ item.reqUserName }}</text>
</view>
</view>
- <view class="text-color-gray text-xs mt-1">
+ <view class="text-color-gray text-sm mt-1">
{{ item.location }} {{ item.madeIn }}
</view>
</view>
diff --git a/eims-ui-mobile/src/pages/repair/res-list.vue b/eims-ui-mobile/src/pages/repair/res-list.vue
index 087fb22..914a751 100644
--- a/eims-ui-mobile/src/pages/repair/res-list.vue
+++ b/eims-ui-mobile/src/pages/repair/res-list.vue
@@ -50,7 +50,7 @@
<view class="flex justify-between items-center">
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <text class="ml-1 text-xs">{{ item.resCode }}</text>
+ <text class="ml-1 text-sm">{{ item.resCode }}</text>
<text class="text-color-gray ml-2 text-mini">鎺ュ崟:{{ item.createTime }}</text>
</view>
diff --git a/eims-ui-mobile/src/pages/scan/index.vue b/eims-ui-mobile/src/pages/scan/index.vue
index 0d2ee20..b9ccad5 100644
--- a/eims-ui-mobile/src/pages/scan/index.vue
+++ b/eims-ui-mobile/src/pages/scan/index.vue
@@ -19,7 +19,7 @@
<view class="flex justify-between items-baseline">
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <text class="ml-1 text-xs">{{ model.assetNo }}</text>
+ <text class="ml-1 text-sm">{{ model.assetNo }}</text>
<wd-tag v-if="model.status === '0'" class="ml-2" bg-color="cyan">璇曠敤</wd-tag>
<wd-tag v-else-if="model.status === '1'" class="ml-2" type="success">浣跨敤</wd-tag>
<wd-tag v-else-if="model.status === '2'" class="ml-2" type="danger">鍋滅敤</wd-tag>
@@ -41,7 +41,7 @@
{{ model.equName }}
<text class="text-color-gray ml-2 text-mini">{{ model.modelNo }}</text>
</view>
- <view class="text-color-gray text-xs mt-1">
+ <view class="text-color-gray text-sm mt-1">
{{ model.location }} | {{ model.madeIn }}
</view>
</view>
diff --git a/eims-ui-mobile/src/pages/spare/spare-list.vue b/eims-ui-mobile/src/pages/spare/spare-list.vue
index 6d2fd19..56d23f4 100644
--- a/eims-ui-mobile/src/pages/spare/spare-list.vue
+++ b/eims-ui-mobile/src/pages/spare/spare-list.vue
@@ -22,7 +22,7 @@
<view class="flex justify-between items-baseline">
<view class="flex items-center menu-title-box">
<view class="menu-indicator"></view>
- <text class="ml-1 text-xs">{{ item.code }}</text>
+ <text class="ml-1 text-sm">{{ item.code }}</text>
</view>
<view>
@@ -38,10 +38,10 @@
{{ item.name }}
<text class="text-color-gray ml-2 text-mini">{{ item.modelNo }}</text>
</view>
- <view class="text-color-gray text-xs mt-1">
+ <view class="text-color-gray text-sm mt-1">
搴撳瓨: {{ item.actualStock }} | 鍗曚环: {{ item.referPrice }}
</view>
- <view class="text-color-gray text-xs mt-1">
+ <view class="text-color-gray text-sm mt-1">
渚涘簲鍟�: {{ item.supplier }}
</view>
</view>
diff --git a/eims-ui-mobile/src/service/maint.ts b/eims-ui-mobile/src/service/maint.ts
index 4ffeaa9..efa2c6d 100644
--- a/eims-ui-mobile/src/service/maint.ts
+++ b/eims-ui-mobile/src/service/maint.ts
@@ -48,3 +48,10 @@
export const updateMaintOrder = (data: any) => {
return http.put<void>('/eims/maintOrder', data)
}
+
+/**
+ * 鎵归噺鏇存柊淇濆吇宸ュ崟
+ */
+export const updateMaintOrderBatch = (data: any) => {
+ return http.put<void>('/eims/maintOrder/editBatch', data)
+}
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 b659746..e1f3e62 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
@@ -219,6 +219,16 @@
String CK = "2"; // 棰嗙敤鍑哄簱
}
+ /**
+ * 淇濆吇鏂规硶
+ */
+ String MAINT_METHOD = "maint_method";
+ interface MAINT_METHOD_DETAIL {
+ String CHECK = "0";
+ String MAINT = "1";
+ String REPAIR = "2";
+ }
+
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderController.java
index b633ce4..fe4f775 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderController.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderController.java
@@ -11,8 +11,10 @@
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.common.core.constant.DictConstants;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.StringUtils;
+import org.dromara.eims.domain.bo.MaintOrderBo;
import org.dromara.eims.domain.vo.MaintOrdeGroupVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
@@ -79,7 +81,14 @@
params.put("beginPlanTime",startOfMonth);
params.put("endPlanTime",endOfMonth);
- return eimsMaintOrderService.queryPageListCustom(bo, pageQuery);
+ TableDataInfo<EimsMaintOrderVo> tableDataInfo = eimsMaintOrderService.queryPageListCustom(bo, pageQuery);
+ tableDataInfo.getRows().forEach(e -> {
+ // 濡傛灉淇濆吇鏂规硶鏄淮淇紝鏌ヨ鍏宠仈鐨勫浠�
+ if (DictConstants.MAINT_METHOD_DETAIL.REPAIR.equals(e.getMaintFun())) {
+ e.setSpareParts(eimsMaintOrderService.querySpareParts(e.getMaintCode()));
+ }
+ });
+ return tableDataInfo;
}
/**
@@ -127,6 +136,14 @@
return toAjax(eimsMaintOrderService.updateByBo(bo));
}
+ @SaCheckPermission("eims:maintOrder:edit")
+ @Log(title = "淇濆吇宸ュ崟-鎵归噺淇敼", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping("editBatch")
+ public R<Void> editBatch(@Validated(EditGroup.class) @RequestBody MaintOrderBo bo) {
+ return toAjax(eimsMaintOrderService.updateBatchByBo(bo));
+ }
+
/**
* 鍒犻櫎淇濆吇宸ュ崟
*
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrder.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrder.java
index af7cf77..8aae23b 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrder.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrder.java
@@ -113,5 +113,14 @@
*/
private String remark;
+ /**
+ * 淇濆吇鏂瑰紡锛�0-妫�鏌ワ紝1-淇濆吇锛�2-缁翠慨锛�
+ */
+ private String maintFun;
+
+ /**
+ * 缁翠慨璇存槑
+ */
+ private String repairDesc;
}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderBo.java
index 0ff70f0..625c6ee 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderBo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderBo.java
@@ -9,7 +9,10 @@
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
+import java.util.List;
+
import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.eims.domain.EimsSpareInout;
/**
* 淇濆吇宸ュ崟涓氬姟瀵硅薄 eims_maint_order
@@ -114,9 +117,21 @@
*/
private String remark;
+ /**
+ * 淇濆吇鏂瑰紡锛�0-妫�鏌ワ紝1-淇濆吇锛�2-缁翠慨锛�
+ */
+ private String maintFun;
+
+ /**
+ * 缁翠慨璇存槑
+ */
+ private String repairDesc;
// 鍏宠仈琛ㄥ瓧娈�
private String equName;
+ private String maintUserName;
+
+ private List<EimsSpareBo> spareParts;
}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java
index f46d491..a996c44 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java
@@ -33,7 +33,6 @@
/**
* 绫诲瀷
*/
- @NotNull(message = "绫诲瀷涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
private Long type;
/**
@@ -45,7 +44,6 @@
/**
* 澶囦欢缂栫爜
*/
- @NotBlank(message = "澶囦欢缂栫爜涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
private String code;
/**
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutdtBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutdtBo.java
index 5f62b5a..f68725b 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutdtBo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutdtBo.java
@@ -21,7 +21,7 @@
public class EimsSpareInoutdtBo extends BaseEntity {
/**
- *
+ *
*/
@NotNull(message = "涓嶈兘涓虹┖", groups = { EditGroup.class })
private Long id;
@@ -29,7 +29,7 @@
/**
* 鍑哄簱鍗曟垨鍏ュ簱鍗昳d
*/
- @NotNull(message = "鍑哄簱鍗曟垨鍏ュ簱鍗昳d涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+
private Long inoutId;
/**
@@ -41,13 +41,13 @@
/**
* 涔嬪墠搴撳瓨
*/
- @NotNull(message = "涔嬪墠搴撳瓨涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+
private Long beforeStock;
/**
* 瀹為檯搴撳瓨
*/
- @NotNull(message = "瀹為檯搴撳瓨涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+
private Long actualStock;
/**
@@ -59,13 +59,13 @@
/**
* 鍗曚环
*/
- @NotNull(message = "鍗曚环涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+
private Long unitPrice;
/**
* 閲戦
*/
- @NotNull(message = "閲戦涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+
private Long amount;
/**
@@ -74,4 +74,7 @@
private String remark;
+ private String spareName;
+
+
}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/MaintOrderBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/MaintOrderBo.java
new file mode 100644
index 0000000..24e3fe9
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/MaintOrderBo.java
@@ -0,0 +1,10 @@
+package org.dromara.eims.domain.bo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MaintOrderBo {
+ private List<EimsMaintOrderBo> maintOrderList;
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderVo.java
index 4ba8284..1a43656 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderVo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderVo.java
@@ -12,11 +12,12 @@
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
+import org.dromara.eims.domain.bo.EimsSpareBo;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
-
+import java.util.List;
/**
@@ -155,5 +156,17 @@
@ExcelProperty(value = "澶囨敞")
private String remark;
+ /**
+ * 淇濆吇鏂瑰紡锛�0-妫�鏌ワ紝1-淇濆吇锛�2-缁翠慨锛�
+ */
+ private String maintFun;
+
+ /**
+ * 缁翠慨璇存槑
+ */
+ private String repairDesc;
+
+ private List<EimsSpareVo> spareParts;
+
}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutdtVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutdtVo.java
index a4203cf..90d66ee 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutdtVo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutdtVo.java
@@ -94,4 +94,6 @@
private String unit;
+
+
}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintOrderService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintOrderService.java
index 0496614..61b350c 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintOrderService.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintOrderService.java
@@ -1,9 +1,12 @@
package org.dromara.eims.service;
+import org.dromara.eims.domain.bo.EimsSpareBo;
+import org.dromara.eims.domain.bo.MaintOrderBo;
import org.dromara.eims.domain.vo.EimsMaintOrderVo;
import org.dromara.eims.domain.bo.EimsMaintOrderBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.eims.domain.vo.EimsSpareVo;
import org.dromara.eims.domain.vo.MaintOrdeGroupVo;
import java.util.Collection;
@@ -59,6 +62,14 @@
Boolean updateByBo(EimsMaintOrderBo bo);
/**
+ * 鎵归噺淇敼淇濆吇宸ュ崟
+ *
+ * @param bo 淇濆吇宸ュ崟涓氬姟瀵硅薄
+ * @return 鎿嶄綔缁撴灉
+ */
+ boolean updateBatchByBo(MaintOrderBo bo);
+
+ /**
* 鏍¢獙骞舵壒閲忓垹闄や繚鍏诲伐鍗曚俊鎭�
*
* @param ids 寰呭垹闄ょ殑涓婚敭闆嗗悎
@@ -83,4 +94,6 @@
* @return
*/
TableDataInfo<MaintOrdeGroupVo> queryPageGroupList(EimsMaintOrderBo bo, PageQuery pageQuery);
+
+ List<EimsSpareVo> querySpareParts(String id);
}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java
index b01acb4..c85145d 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java
@@ -20,17 +20,19 @@
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.eims.domain.EimsMaintPlan;
-import org.dromara.eims.domain.bo.EimsMaintPlanBo;
-import org.dromara.eims.domain.vo.EimsEquVo;
-import org.dromara.eims.domain.vo.MaintOrdeGroupVo;
+import org.dromara.eims.domain.EimsSpareInout;
+import org.dromara.eims.domain.bo.EimsSpareBo;
+import org.dromara.eims.domain.bo.EimsSpareInoutBo;
+import org.dromara.eims.domain.bo.MaintOrderBo;
+import org.dromara.eims.domain.vo.*;
import org.dromara.eims.mapper.EimsEquMapper;
import org.dromara.eims.mapper.EimsMaintPlanMapper;
+import org.dromara.eims.service.IEimsSpareInoutService;
import org.dromara.system.domain.SysDept;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.mapper.SysDeptMapper;
import org.springframework.stereotype.Service;
import org.dromara.eims.domain.bo.EimsMaintOrderBo;
-import org.dromara.eims.domain.vo.EimsMaintOrderVo;
import org.dromara.eims.domain.EimsMaintOrder;
import org.dromara.eims.mapper.EimsMaintOrderMapper;
import org.dromara.eims.service.IEimsMaintOrderService;
@@ -52,6 +54,7 @@
private final EimsMaintPlanMapper planMapper;
private final SysDeptMapper sysDeptMapper;
private final EimsEquMapper equMapper;
+ private final IEimsSpareInoutService spareInoutService;
/**
* 鏌ヨ淇濆吇宸ュ崟
@@ -293,6 +296,45 @@
}
/**
+ * 鎵归噺淇敼淇濆吇宸ュ崟
+ *
+ * @param bo 淇濆吇宸ュ崟
+ * @return 鏄惁淇敼鎴愬姛
+ */
+ @Override
+ public boolean updateBatchByBo(MaintOrderBo bo) {
+ LoginUser loginUser = LoginHelper.getLoginUser();
+ List<EimsMaintOrder> list = MapstructUtils.convert(bo.getMaintOrderList(), EimsMaintOrder.class);
+ list.forEach(e -> {
+ e.setStatus(DictConstants.MAINT_ORDER_STATUS_DETAIL.DAIYANZHENG);
+ e.setEndTime(new Date());
+ e.setMaintUser(loginUser.getUserId());
+ e.setUpdateTime(new Date());
+ });
+ bo.getMaintOrderList().forEach(item -> {
+ // 鍒ゆ柇澶囦欢鍒楄〃鏄惁涓虹┖锛屼笉涓虹┖鍒欐柊澧炰竴涓浠跺嚭搴撳崟锛屽悓鏃跺鍔犲嚭搴撴槑缁�
+ if (item.getSpareParts() != null && item.getSpareParts().size() > 0) {
+ EimsSpareInoutBo spareInoutBo = new EimsSpareInoutBo();
+ // 鏍规嵁鏃ユ湡鐢熸垚鍗曞彿锛屾牸寮忎负CK+鏃ユ湡+娴佹按鍙�
+ spareInoutBo.setOrderCode("CK"+DateUtils.dateTimeNow("yyyyMMddHHmmss"));
+ spareInoutBo.setOrderTime(new Date());
+ spareInoutBo.setType(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK);
+ spareInoutBo.setPartnerName(loginUser.getNickname());
+ spareInoutBo.setSpareList(item.getSpareParts());
+ spareInoutBo.setChargeUser(loginUser.getUserId());
+ spareInoutBo.setChargeDept(loginUser.getDeptId());
+ spareInoutBo.setAssociatedOrder(item.getMaintCode());
+ // 淇濆瓨杩涙暟鎹簱
+ Boolean b = spareInoutService.insertByBo(spareInoutBo);
+
+
+ }
+ });
+
+ return baseMapper.updateBatchById(list);
+ }
+
+ /**
* 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
*/
private void validEntityBeforeSave(EimsMaintOrder entity){
@@ -326,4 +368,20 @@
}
return String.join(StringUtils.SEPARATOR, list);
}
+
+
+ @Override
+ public List<EimsSpareVo> querySpareParts(String code) {
+ // 鏌ヨ鍏宠仈鐨勫浠讹紝鍏崇郴濡備笅锛氬浠跺嚭鍏ュ簱鍗曠殑associatedOrder 鍏宠仈浼犲叆鐨刢ode,澶囦欢鍑哄叆搴撴槑缁嗛�氳繃鍑哄叆搴撳崟鐨刬d鍏宠仈锛屽浠跺悕绉伴�氳繃鍑哄叆搴撴槑缁嗕腑鐨剆pareId鍏宠仈
+
+ EimsSpareInoutBo bo = new EimsSpareInoutBo();
+ bo.setAssociatedOrder(code);
+ List<EimsSpareInoutVo> list = spareInoutService.queryList(bo);
+ if (!list.isEmpty()) {
+ // 鏌ヨ澶囦欢鏄庣粏鍜屽悕绉�
+ EimsSpareInoutVo eimsSpareInoutVo = spareInoutService.queryById(list.get(0).getId());
+ return eimsSpareInoutVo.getSpareList();
+ }
+ return List.of();
+ }
}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java
index 334eb44..28f0446 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java
@@ -136,58 +136,61 @@
if (flag) {
bo.setId(add.getId());
}
- //鍏ュ簱锛嬪簱瀛� 鍑哄簱-搴撳瓨 锛堥粯璁ゅ叆搴擄級
- int OperationType;
-
- //鍑哄簱
- if(bo.getType().equals(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK)){
- OperationType = -1;
- } else {
- OperationType = 1;
- }
+ // 鍏ュ簱锛嬪簱瀛� 鍑哄簱-搴撳瓨 锛堥粯璁ゅ叆搴擄級
+ int OperationType = bo.getType().equals(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK) ? -1 : 1;
List<EimsSpareBo> spareList = Optional.ofNullable(bo.getSpareList()).orElse(new ArrayList<>());
- // 鎻掑叆鍑哄簱鏄庣粏
- List<EimsSpareInoutdt> dtList = spareList.stream()
- .map(eimsSpareBo -> {
- EimsSpareInoutdt dt = new EimsSpareInoutdt();
- dt.setInoutId(add.getId());
- dt.setSpareId(eimsSpareBo.getId());
- dt.setBeforeStock(eimsSpareBo.getActualStock());
- // 娉ㄦ剰鍏ュ簱鍑哄簱
- dt.setActualStock(eimsSpareBo.getActualStock() + (eimsSpareBo.getQuantity() * OperationType));
- dt.setQuantity(eimsSpareBo.getQuantity());
- // 璁剧疆鍗曚环鍜岄噾棰�
- Optional.ofNullable(eimsSpareBo.getReferPrice()).ifPresent(referPrice -> {
- dt.setUnitPrice(referPrice);
- dt.setAmount(referPrice.multiply(BigDecimal.valueOf(eimsSpareBo.getQuantity())));
- });
+ // 鍚堝苟涓ゆ寰幆涓轰竴娆″惊鐜�
+ List<EimsSpareInoutdt> dtList = new ArrayList<>();
+ List<EimsSpare> updateSpareList = new ArrayList<>();
- return dt;
- })
- .toList();
+ for (EimsSpareBo eimsSpareBo : spareList) {
+ EimsSpare spare = spareMapper.selectById(eimsSpareBo.getId());
+ if (spare == null) {
+ spare = new EimsSpare();
+ spare.setName(eimsSpareBo.getName());
+ spare.setCode(eimsSpareBo.getCode());
+ spare.setActualStock(100L);
+ spareMapper.insert(spare);
+ eimsSpareBo.setId(spare.getId());
+ }
+
+ // 鎻掑叆鍑哄簱鏄庣粏
+ EimsSpareInoutdt dt = new EimsSpareInoutdt();
+ dt.setInoutId(add.getId());
+ dt.setSpareId(spare.getId());
+ dt.setBeforeStock(spare.getActualStock());
+ dt.setActualStock(spare.getActualStock() + (eimsSpareBo.getQuantity() * OperationType));
+ dt.setQuantity(eimsSpareBo.getQuantity());
+
+ // 璁剧疆鍗曚环鍜岄噾棰�
+ Optional.ofNullable(spare.getReferPrice()).ifPresent(referPrice -> {
+ dt.setUnitPrice(referPrice);
+ dt.setAmount(referPrice.multiply(BigDecimal.valueOf(eimsSpareBo.getQuantity())));
+ });
+ dtList.add(dt);
+
+ // 鏇存柊澶囦欢搴撳瓨
+ EimsSpare updatedSpare = new EimsSpare();
+ updatedSpare.setId(spare.getId());
+ updatedSpare.setActualStock(spare.getActualStock() + (eimsSpareBo.getQuantity() * OperationType));
+ Optional.ofNullable(spare.getReferPrice()).ifPresent(referPrice -> {
+ updatedSpare.setStockAmount(referPrice.multiply(BigDecimal.valueOf(updatedSpare.getActualStock())));
+ });
+ updateSpareList.add(updatedSpare);
+ }
// 鎵归噺鎻掑叆鏁版嵁
if (!dtList.isEmpty()) {
inoutdtMapper.insertBatch(dtList);
}
- // 鏇存柊澶囦欢鐨勫簱瀛�
- List<EimsSpare> updateSpareList = spareList.stream().map(spareBo -> {
- EimsSpare spare = new EimsSpare();
- spare.setId(spareBo.getId());
- spare.setActualStock(spareBo.getActualStock() + (spareBo.getQuantity() * OperationType));
- // 璁剧疆鍗曚环鍜岄噾棰�
- Optional.ofNullable(spareBo.getReferPrice()).ifPresent(referPrice -> {
- spare.setStockAmount(referPrice.multiply(BigDecimal.valueOf(spare.getActualStock())));
- });
- return spare;
- }).toList();
-
+ // 鎵归噺鏇存柊澶囦欢搴撳瓨
if (!updateSpareList.isEmpty()) {
spareMapper.updateBatchById(updateSpareList);
}
+
return flag;
}
--
Gitblit v1.9.3