From cb19937239b42f51c6e8525450d08e93225117bc Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期三, 14 五月 2025 13:16:02 +0800
Subject: [PATCH] 新增部分移动端接口

---
 eims-ui-mobile/src/service/mobile.ts                                                                 |   12 +
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/MobileServiceImpl.java        |  122 +++++++++++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java |   13 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IMobileService.java                |   18 +
 eims-ui-mobile/src/pages/home/index.vue                                                              |  409 +++++++++++++++++++++++++-----------
 eims-ui-mobile/src/pages/inspect/insp-record.vue                                                     |    2 
 eims-ui-mobile/src/pages/repair/req-list.vue                                                         |    5 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/MobileController.java           |   39 +++
 8 files changed, 484 insertions(+), 136 deletions(-)

diff --git a/eims-ui-mobile/src/pages/home/index.vue b/eims-ui-mobile/src/pages/home/index.vue
index b04275b..8033aef 100644
--- a/eims-ui-mobile/src/pages/home/index.vue
+++ b/eims-ui-mobile/src/pages/home/index.vue
@@ -8,149 +8,180 @@
 }
 </route>
 <template>
-  <view
-    class="bg-base overflow-hidden"
-    :style="{
-      marginTop: safeAreaInsets?.top + 'px',
-    }"
+  <z-paging
+    ref="paging"
+    v-model="dataList"
+    @query="queryList"
+    show-refresher-update-time
+    hide-empty-view
   >
-    <view class="bg-white h-[80rpx] px-2 flex items-center justify-between">
-      <view class="flex items-center" @click="handleUserInfo">
-        <wd-icon name="user" size="40rpx" class="icon-color-base"></wd-icon>
-        <text class="ml-1 text-color-base">{{ realName }}</text>
-      </view>
-
-      <view class="flex items-center">
-        <wd-icon name="notification" size="40rpx" class="icon-color-base mr-3" @click="handleInfo"></wd-icon>
-        <wd-icon name="tips" size="40rpx" class="icon-color-base mr-3" @click="handleInfo"></wd-icon>
-        <wd-icon name="app" size="40rpx" class="icon-color-base" @click="handleInfo"></wd-icon>
-      </view>
-    </view>
-
-    <view class="bg-white py-2 px-2">
-      <wd-img class="w-full h-[260rpx]" src="/static/images/pic4.jpeg" />
-    </view>
-    <view class="bg-noti flex flex-row">
-      <wd-notice-bar
-        text="杩欐槸涓�鏉℃秷鎭彁绀轰俊鎭紝杩欐槸涓�鏉℃秷鎭彁绀轰俊鎭紝杩欐槸涓�鏉℃秷鎭彁绀轰俊鎭�"
-        prefix="clock"
-        type="info"
-        :scrollable="false"
-        custom-class="flex-1  overflow-hidden"
-      />
-      <wd-button type="text" class="w-[120rpx]">鏌ョ湅</wd-button>
-    </view>
-
-    <view class="bg-white">
-      <wd-card type="rectangle">
-        <template #title>
-          <view class="flex items-center menu-title-box">
-            <view class="menu-indicator"></view>
-            <view class="ml-1 text-xs">鏁版嵁鎬昏</view>
-          </view>
-        </template>
-        <view class="flex flex-row justify-around">
-          <view class="flex flex-col justify-center">
-            <text class="text-lg text-center">0</text>
-            <text class="text-color-gray">璁惧鎬绘暟</text>
-          </view>
-          <view class="flex flex-col justify-center">
-            <text class="text-lg text-center">0</text>
-            <text class="text-color-gray">鏁呴殰璁惧鏁�</text>
-          </view>
-          <view class="flex flex-col justify-center">
-            <text class="text-lg text-center">0</text>
-            <text class="text-color-gray">鏈慨澶嶆晠闅�</text>
-          </view>
+    <template #top>
+      <view class="bg-white h-[80rpx] px-2 flex items-center justify-between">
+        <view class="flex items-center" @click="handleUserInfo">
+          <wd-icon name="user" size="40rpx" class="icon-color-base"></wd-icon>
+          <text class="ml-1 text-color-base">{{ realName }}</text>
         </view>
-      </wd-card>
-    </view>
-    <view class="bg-white mt-2">
-      <wd-card type="rectangle">
-        <template #title>
-          <view class="flex items-center menu-title-box">
-            <view class="menu-indicator"></view>
-            <view class="ml-1 text-xs">蹇嵎鎿嶄綔</view>
-          </view>
-        </template>
-        <wd-grid :column="4">
-          <wd-grid-item
-            use-slot
-            class="flex justify-center items-center"
-            v-for="(item, index) in commonMenu"
-            :key="item.id"
-            @click.stop="goItemPage(item.path)"
-          >
-            <image class="slot-img text-center" :src="item.icon" />
-            <text>{{ item.name }}</text>
-          </wd-grid-item>
-        </wd-grid>
-      </wd-card>
-    </view>
-    <view class="bg-white mt-2">
-      <wd-card type="rectangle">
-        <template #title>
-          <view class="flex items-center menu-title-box">
-            <view class="menu-indicator"></view>
-            <view class="ml-1 text-xs">璁惧绠$悊</view>
-          </view>
-        </template>
-        <wd-grid :column="4">
-          <wd-grid-item
-            use-slot
-            class="flex justify-center items-center"
-            v-for="(item, index) in inspectMenu"
-            :key="item.id"
-            @click.stop="goItemPage(item.path)"
-          >
-            <image class="slot-img text-center" :src="item.icon" />
-            <text>{{ item.name }}</text>
-          </wd-grid-item>
-        </wd-grid>
-      </wd-card>
-    </view>
-    <view class="bg-white mt-2">
-      <wd-card type="rectangle">
-        <template #title>
-          <view class="flex items-center menu-title-box">
-            <view class="menu-indicator"></view>
-            <view class="ml-1 text-xs">鍙拌处鐩稿叧</view>
-          </view>
-        </template>
-        <wd-grid :column="4">
-          <wd-grid-item
-            use-slot
-            class="flex justify-center items-center"
-            v-for="(item, index) in equMenu"
-            @click.stop="goItemPage(item.path)"
-          >
-            <image class="slot-img text-center" :src="item.icon" />
-            <text>{{ item.name }}</text>
-          </wd-grid-item>
-        </wd-grid>
-      </wd-card>
-    </view>
 
+        <view class="flex items-center">
+          <wd-icon
+            name="notification"
+            size="40rpx"
+            class="icon-color-base mr-3"
+            @click="handleInfo"
+          ></wd-icon>
+          <wd-icon
+            name="tips"
+            size="40rpx"
+            class="icon-color-base mr-3"
+            @click="handleInfo"
+          ></wd-icon>
+          <wd-icon name="app" size="40rpx" class="icon-color-base" @click="handleInfo"></wd-icon>
+        </view>
+      </view>
 
-  </view>
+    </template>
+    <view class="bg-base overflow-hidden">
+
+      <view class="bg-white py-2 px-2">
+        <wd-img class="w-full h-[260rpx]" src="/static/images/pic4.jpeg" />
+      </view>
+      <view class="bg-noti flex flex-row">
+        <wd-notice-bar
+          text="杩欐槸涓�鏉℃秷鎭彁绀轰俊鎭紝杩欐槸涓�鏉℃秷鎭彁绀轰俊鎭紝杩欐槸涓�鏉℃秷鎭彁绀轰俊鎭�"
+          prefix="clock"
+          type="info"
+          :scrollable="false"
+          custom-class="flex-1  overflow-hidden"
+        />
+        <wd-button type="text" class="w-[120rpx]">鏌ョ湅</wd-button>
+      </view>
+
+      <view class="bg-white">
+        <wd-card type="rectangle">
+          <template #title>
+            <view class="flex items-center menu-title-box">
+              <view class="menu-indicator"></view>
+              <view class="ml-1 text-xs">鏁版嵁鎬昏</view>
+            </view>
+          </template>
+          <view class="flex flex-row justify-around">
+            <view class="flex flex-col justify-center">
+              <text class="text-lg text-center">{{ equTotal }}</text>
+              <text class="text-color-gray">璁惧鎬绘暟</text>
+            </view>
+            <view class="flex flex-col justify-center">
+              <text class="text-lg text-center">{{ fixtureTotal }}</text>
+              <text class="text-color-gray">宸ュ叿鎬绘暟</text>
+            </view>
+            <view class="flex flex-col justify-center">
+              <text class="text-lg text-center">{{ faultTotal }}</text>
+              <text class="text-color-gray">鏈慨澶嶆晠闅�</text>
+            </view>
+          </view>
+        </wd-card>
+      </view>
+      <view class="bg-white mt-2">
+        <wd-card type="rectangle">
+          <template #title>
+            <view class="flex items-center menu-title-box">
+              <view class="menu-indicator"></view>
+              <view class="ml-1 text-xs">蹇嵎鎿嶄綔</view>
+            </view>
+          </template>
+          <wd-grid :column="4">
+            <wd-grid-item
+              use-slot
+              class="flex justify-center items-center"
+              v-for="(item, index) in commonMenu"
+              :key="item.id"
+              @click.stop="goItemPage(item)"
+            >
+              <image class="slot-img text-center" :src="item.icon" />
+              <text>{{ item.name }}</text>
+            </wd-grid-item>
+          </wd-grid>
+        </wd-card>
+      </view>
+      <view class="bg-white mt-2">
+        <wd-card type="rectangle">
+          <template #title>
+            <view class="flex items-center menu-title-box">
+              <view class="menu-indicator"></view>
+              <view class="ml-1 text-xs">璁惧绠$悊</view>
+            </view>
+          </template>
+          <wd-grid :column="4">
+            <wd-grid-item
+              use-slot
+              class="flex justify-center items-center"
+              v-for="(item, index) in inspectMenu"
+              :key="item.id"
+              @click.stop="goItemPage(item)"
+            >
+              <image class="slot-img text-center" :src="item.icon" />
+              <text>{{ item.name }}</text>
+            </wd-grid-item>
+          </wd-grid>
+        </wd-card>
+      </view>
+      <view class="bg-white mt-2">
+        <wd-card type="rectangle">
+          <template #title>
+            <view class="flex items-center menu-title-box">
+              <view class="menu-indicator"></view>
+              <view class="ml-1 text-xs">鍙拌处鐩稿叧</view>
+            </view>
+          </template>
+          <wd-grid :column="4">
+            <wd-grid-item
+              use-slot
+              class="flex justify-center items-center"
+              v-for="(item, index) in equMenu"
+              @click.stop="goItemPage(item)"
+            >
+              <image class="slot-img text-center" :src="item.icon" />
+              <text>{{ item.name }}</text>
+            </wd-grid-item>
+          </wd-grid>
+        </wd-card>
+      </view>
+
+      <view class="w-full h-[100rpx]"></view>
+    </view>
+  </z-paging>
 </template>
 
 <script lang="ts" setup>
 import { getAllMenusApi } from '@/service/menu'
 import { useUserStore } from '@/store'
 import { tabbarStore } from '@/components/fg-tabbar/tabbar'
+import { getEquList } from '@/service/equ'
+import { getRepairResList } from '@/service/repair'
+import { getFixtureList } from '@/service/fixture'
+import { receiveOrderRepair } from '@/service/mobile'
+import { useToast, useMessage } from 'wot-design-uni'
+import { ref } from 'vue'
+
+const message = useMessage()
+const toast = useToast()
 defineOptions({
   name: 'Home',
 })
 
 const userStore = useUserStore()
 
+const equTotal = ref(0)
+const faultTotal = ref(0)
+const fixtureTotal = ref(0)
+
+const paging = ref(null)
+const dataList = ref([])
+
 // 鑾峰彇灞忓箷杈圭晫鍒板畨鍏ㄥ尯鍩熻窛绂�
 const { safeAreaInsets } = uni.getSystemInfoSync()
 
 const getAllMenus = async () => {
   const menuList = await getAllMenusApi()
-  console.error(menuList)
 }
 function handleInfo() {
   uni.showToast({
@@ -159,25 +190,55 @@
   })
 }
 
-const goItemPage = (path: string) => {
-  const url = `/${path}`
-  uni.navigateTo({
-    url,
-  })
+const queryList = (pageNum?: number, pageSize?: number) => {
+  getEquList({ pageNum, pageSize })
+    .then((res: any) => {
+      equTotal.value = res?.total || 0
+      queryRepairResList()
+      queryFixtureList()
+      paging.value.complete(true)
+    })
+    .catch((res) => {
+      paging.value.complete(true)
+    })
+}
+
+const goItemPage = (item: any) => {
+  if (!item?.custom) {
+    const url = `/${item.path}`
+    uni.navigateTo({
+      url,
+    })
+  } else {
+    switch (item.name) {
+      case '鎺ュ崟缁翠慨':
+        handleSelectReq()
+        break
+    }
+  }
 }
 
 onLoad(() => {
   // getAllMenus()
+  queryEquList()
+  queryRepairResList()
+  queryFixtureList()
 })
-
 
 const commonMenu = reactive([
   {
     id: 1,
     name: '鏁呴殰鎶ヤ慨',
-    icon: '/static/ico/ico20.png',
+    icon: '/static/ico/ico7.png',
     path: 'pages/repair/repair-add',
-  }
+  },
+  {
+    id: 2,
+    custom: true,
+    name: '鎺ュ崟缁翠慨',
+    icon: '/static/ico/ico8.png',
+    path: 'pages/repair/repair-add',
+  },
 ])
 
 const equMenu = reactive([
@@ -240,6 +301,94 @@
 }
 
 const realName = computed(() => userStore?.userInfo?.realName)
+
+/**
+ * 閫夋嫨鎶ヤ慨鍗�
+ */
+function handleSelectReq() {
+  uni.navigateTo({
+    url: '/pages/repair/req-list',
+    events: {
+      // 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�佸埌褰撳墠椤甸潰鐨勬暟鎹�
+      selectReq: function (data) {
+        // 閫夋嫨鎶ヤ慨鍗曞悗锛屼慨鏀规姤淇崟鐘舵�佸拰鏂板缁翠慨宸ュ崟
+        const resCode = `WXD${data.data.code.slice(3)}`
+        const deptId = userStore?.userInfo?.deptId
+        const userId = userStore?.userInfo?.userId
+        const resData = {
+          reqId: data.data.id,
+          reqCode: data.data.code,
+          reqUser: data.data.reqUser,
+          reqDept: data.data.reqDept,
+          resCode,
+          status: '1',
+          resUser: userId,
+          resDept: deptId,
+        }
+        receiveOrderRepair(resData)
+          .then((res: any) => {
+            if (res?.id) {
+              toast.success(res?.msg || '鎿嶄綔鎴愬姛')
+              uni.navigateTo({
+                url: `/pages/repair/res-detail?id=${res?.id}`,
+              })
+            } else {
+              toast.error(res?.msg || '鐢熸垚缁翠慨宸ュ崟澶辫触锛岃閲嶈瘯')
+            }
+          })
+          .catch((res) => {
+            toast.error(res?.msg || '鐢熸垚缁翠慨宸ュ崟澶辫触锛岃閲嶈瘯')
+          })
+      },
+    },
+    success: function (res) {
+      // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+      res.eventChannel.emit('OnSelectReq', { data: '缁翠慨鍗曢〉闈㈤�夋嫨鎶ヤ慨鍗�' })
+    },
+  })
+}
+
+function queryEquList() {
+  getEquList({
+    page: 1,
+    size: 10,
+  })
+    .then((res: any) => {
+      equTotal.value = res?.total || 0
+    })
+    .catch((err) => {
+      console.log(err)
+    })
+}
+
+function queryRepairResList() {
+  getRepairResList({
+    page: 1,
+    size: 10,
+    status: '2',
+  })
+    .then((res: any) => {
+      faultTotal.value = res?.total || 0
+    })
+    .catch((res) => {})
+}
+
+function queryFixtureList() {
+  getFixtureList({
+    page: 1,
+    size: 10,
+  })
+    .then((res: any) => {
+      fixtureTotal.value = res?.total || 0
+    })
+    .catch((res) => {})
+}
+
+function goToDetail(item) {
+  uni.navigateTo({
+    url: `/pages/repair/res-detail?id=${item.id}`,
+  })
+}
 </script>
 
 <style lang="scss" scoped>
diff --git a/eims-ui-mobile/src/pages/inspect/insp-record.vue b/eims-ui-mobile/src/pages/inspect/insp-record.vue
index e17e7bf..99efef5 100644
--- a/eims-ui-mobile/src/pages/inspect/insp-record.vue
+++ b/eims-ui-mobile/src/pages/inspect/insp-record.vue
@@ -119,7 +119,7 @@
       <view class="w-full h-[24rpx]"></view>
       <wd-cell>
         <template #title>
-          <text class="text-color-gray">鍏跺畠</text>
+          <text class="text-color-gray">鍏朵粬</text>
         </template>
       </wd-cell>
       <view class="w-full h-[1px] bg-base"></view>
diff --git a/eims-ui-mobile/src/pages/repair/req-list.vue b/eims-ui-mobile/src/pages/repair/req-list.vue
index 190468e..75916b9 100644
--- a/eims-ui-mobile/src/pages/repair/req-list.vue
+++ b/eims-ui-mobile/src/pages/repair/req-list.vue
@@ -24,7 +24,7 @@
 }
 </route>
 <template>
-  <z-paging ref="paging" v-model="dataList" @query="queryList" show-refresher-update-time>
+  <z-paging ref="paging" v-model="dataList" :auto="false" @query="queryList" show-refresher-update-time>
     <template #top>
       <wd-drop-menu v-if="!isSelectReq">
         <wd-drop-menu-item
@@ -264,6 +264,7 @@
     // 鍙樉绀烘湭鎺ュ崟鏁版嵁
     status.value = 0
     console.log('OnSelectReq', data)
+    reloadData()
   })
 })
 
@@ -272,6 +273,8 @@
   reqTypeList.value.push(...rList)
   const sList: any = await getDictInfo(DICT_REPAIR_REQ_STATUS)
   statusList.value.push(...sList)
+
+  reloadData()
 }
 
 onLoad(() => {
diff --git a/eims-ui-mobile/src/service/mobile.ts b/eims-ui-mobile/src/service/mobile.ts
new file mode 100644
index 0000000..e6596d4
--- /dev/null
+++ b/eims-ui-mobile/src/service/mobile.ts
@@ -0,0 +1,12 @@
+import { http } from '@/utils/http'
+/**
+ * 姝ら〉闈㈡帴鍙d负绉诲姩绔壒娈婇渶姹傛柊澧炴帴鍙�
+ */
+
+/**
+ * 鎺ュ崟缁翠慨-缁勫悎api
+ * @param data
+ */
+export const receiveOrderRepair = (data: any) => {
+  return http.post<void>('/eims/mobile/receiveOrderRepair', data)
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/MobileController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/MobileController.java
new file mode 100644
index 0000000..74d8919
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/MobileController.java
@@ -0,0 +1,39 @@
+package org.dromara.eims.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.eims.domain.bo.EimsRepairResBo;
+import org.dromara.eims.domain.vo.EimsRepairResVo;
+import org.dromara.eims.service.IEimsRepairResService;
+import org.dromara.eims.service.IMobileService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 绉诲姩绔痗ontroller
+ * 涓昏鐢ㄤ簬涓�浜涚壒娈婃搷浣滐細 濡傚揩鎹锋帴鍗曠淮淇紙涓�娆¤姹傚涓帴鍙o紝涓轰繚璇佸師瀛愭�ф柊澧炵殑鎺ュ彛锛�
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/eims/mobile")
+public class MobileController extends BaseController {
+    private final IMobileService mobileService;
+
+    @Log(title = "鎺ュ崟缁翠慨-缁勫悎api", businessType = BusinessType.OTHER)
+    @RepeatSubmit()
+    @PostMapping("receiveOrderRepair")
+    public R<EimsRepairResVo> receiveOrderRepair(@Validated(AddGroup.class) @RequestBody EimsRepairResBo bo) {
+        EimsRepairResVo eimsRepairResVo = mobileService.receiveOrderRepair(bo);
+        return  R.ok(eimsRepairResVo);
+    }
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IMobileService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IMobileService.java
new file mode 100644
index 0000000..f3be0a3
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IMobileService.java
@@ -0,0 +1,18 @@
+package org.dromara.eims.service;
+
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.eims.domain.bo.EimsRepairResBo;
+import org.dromara.eims.domain.vo.EimsRepairResVo;
+
+import java.util.Collection;
+import java.util.List;
+
+
+public interface IMobileService {
+    /**
+     * 鎺ュ崟缁翠慨
+     * @param bo
+     */
+    EimsRepairResVo receiveOrderRepair(EimsRepairResBo bo);
+}
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 c697818..dd6e024 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
@@ -69,13 +69,18 @@
 
             if(reqVo.getEquId()!=null){
                 EimsEquVo equVo = equMapper.selectVoById(reqVo.getEquId());
-                resVo.setAssetNo(equVo.getAssetNo());
-                resVo.setEquName(equVo.getEquName());
+                if(equVo!=null){
+                    resVo.setAssetNo(equVo.getAssetNo());
+                    resVo.setEquName(equVo.getEquName());
+                }
+
             }
             if(reqVo.getFixtureId()!=null){
                 EimsFixtureVo fixtureVo = fixtureMapper.selectVoById(reqVo.getFixtureId());
-                resVo.setFixtureName(fixtureVo.getFixtureName());
-                resVo.setAssetNo(fixtureVo.getAssetNo());
+                if(fixtureVo!=null){
+                    resVo.setFixtureName(fixtureVo.getFixtureName());
+                    resVo.setAssetNo(fixtureVo.getAssetNo());
+                }
             }
 
 
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/MobileServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/MobileServiceImpl.java
new file mode 100644
index 0000000..abae820
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/MobileServiceImpl.java
@@ -0,0 +1,122 @@
+package org.dromara.eims.service.impl;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import org.dromara.common.core.constant.DictConstants;
+import org.dromara.common.core.domain.model.LoginUser;
+import org.dromara.common.core.service.RepairResService;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.eims.domain.EimsRepairRecord;
+import org.dromara.eims.domain.EimsRepairReq;
+import org.dromara.eims.domain.EimsRepairRes;
+import org.dromara.eims.domain.bo.EimsRepairResBo;
+import org.dromara.eims.domain.vo.EimsEquVo;
+import org.dromara.eims.domain.vo.EimsFixtureVo;
+import org.dromara.eims.domain.vo.EimsRepairReqVo;
+import org.dromara.eims.domain.vo.EimsRepairResVo;
+import org.dromara.eims.mapper.*;
+import org.dromara.eims.service.IEimsRepairResService;
+import org.dromara.eims.service.IMobileService;
+import org.dromara.eims.utils.DataFilterUtil;
+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.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+
+@RequiredArgsConstructor
+@Service
+public class MobileServiceImpl implements IMobileService {
+    private final EimsRepairResMapper repairResMapper;
+    private final EimsRepairReqMapper reqMapper;
+    private final EimsRepairRecordMapper recordMapper;
+
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public synchronized EimsRepairResVo receiveOrderRepair(EimsRepairResBo bo) {
+        /**
+         * TODO 娉ㄦ剰鎺ュ彛璋冩暣鍚庨渶璋冩暣锛堟鎿嶄綔鍘熸湰涓虹Щ鍔ㄧ渚濇浼犻�掓暟鎹皟鐢ㄦ帴鍙o紝鐜颁负淇濊瘉鍘熷瓙鎬т竴娆℃�ц皟鐢ㄥ涓帴鍙o級
+         */
+        //1.鏂板缁翠慨宸ュ崟
+        EimsRepairRes add = MapstructUtils.convert(bo, EimsRepairRes.class);
+        boolean flag = repairResMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+            // 鏂板缁翠慨宸ュ崟鐨勬椂鍊欐洿鏂版姤淇崟鏁版嵁
+            EimsRepairReqVo reqVo = reqMapper.selectVoById(bo.getReqId());
+            reqVo.setRepairId(add.getId());
+            reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.YIJIEDAN);
+            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.YIJIEDAN);
+            record.setOperaUser(add.getCreateBy());
+            record.setOperaResult("鐢熸垚缁翠慨宸ュ崟");
+            //鏂板鏃剁敓鎴愯褰�
+            recordMapper.insert(record);
+        }
+
+        //2.鏇存柊缁翠慨宸ュ崟
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        bo.setStartTime(new Date());
+        bo.setStatus("2");
+        EimsRepairRes update = MapstructUtils.convert(bo, EimsRepairRes.class);
+
+        EimsRepairResVo resVo = repairResMapper.selectVoById(bo.getId());
+        String status = resVo.getStatus();
+        //缁翠慨宸ュ崟寮�濮嬬淮淇紝鍚屾鏇存柊鎶ヤ慨鍗� 浠ュ強 缁翠慨璁板綍
+        if (bo.getStatus().equals(DictConstants.REPAIR_RES_STATUS_DETAIL.WEIXIU) &&
+            status.equals(DictConstants.REPAIR_RES_STATUS_DETAIL.YIJIEDAN)) {
+            //2.1.璁剧疆寮�濮嬬淮淇椂闂村拰鐘舵�� TODO
+
+            //2.2鏇存柊鎶ヤ慨鍗曚负缁翠慨鐘舵��
+            EimsRepairReqVo reqVo = reqMapper.selectVoById(bo.getReqId());
+            reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.WEIXIU);
+            EimsRepairReq req = MapstructUtils.convert(reqVo, EimsRepairReq.class);
+            reqMapper.updateById(req);
+
+            //2.3鐢熸垚缁翠慨璁板綍
+            EimsRepairRecord record = new EimsRepairRecord();
+            record.setResId(bo.getId());
+            record.setReqId(bo.getReqId());
+            record.setHandleTime(new Date());
+            record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.WEIXIU);
+            assert loginUser != null;
+            record.setOperaUser(loginUser.getUserId());
+            record.setOperaResult("寮�濮嬬淮淇�");
+            recordMapper.insert(record);
+        }
+        repairResMapper.updateById(update);
+        return repairResMapper.selectVoById(update.getId());
+
+    }
+}

--
Gitblit v1.9.3