From b0656b315e2eb8376d53ad237e58bdd6e65e31ec Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期四, 01 八月 2024 14:55:50 +0800
Subject: [PATCH] 原片仓储接口完善

---
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/push.java                                        |   11 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml                            |   15 
 hangzhoumesParent/gateway/src/main/resources/application.yml                                                                  |    2 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java    |   17 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java                  |   11 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml                              |   29 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java            |    3 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java          |   31 
 hangzhoumesParent/moduleService/GlassStorageModule/src/test/java/mes/GlassStorageModuleApplicationTest.java                   |   12 
 UI-Project/src/utils/api.js                                                                                                   |  103 ++-
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java                |    8 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java       |  107 +++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java                |    3 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java |  102 +++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java                        |    7 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java                      |    9 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/request/StorageTaskRequest.java   |   77 ++
 UI-Project/src/views/GlassStorage/MaterialRackManagement.vue                                                                  | 1136 +++++++++++++++++++++----------------
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java                |   19 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java        |    3 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java     |    3 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/request/RawUsageAndShelfRack.java   |   76 ++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java          |    5 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java              |    3 
 24 files changed, 1,206 insertions(+), 586 deletions(-)

diff --git a/UI-Project/src/utils/api.js b/UI-Project/src/utils/api.js
index 6fce493..9be06af 100644
--- a/UI-Project/src/utils/api.js
+++ b/UI-Project/src/utils/api.js
@@ -1,10 +1,12 @@
 // src/services/api.js
-import request from 'request';
+import request from '../utils/request';
+import { ElMessage } from 'element-plus';
 
-const BASE_URL = 'glassStorage/api/rawUsage'; // Replace with your actual backend base URL
+ // Replace with your actual backend base URL
 
 // Function to find list of raw usages
-
+const BASE_URL = 'glassStorage/api/rawUsage';
+const taskBASE_URL = 'glassStorage/api/storageTask';
 
 export const findTasks = () => {
   const url = `glassStorage/api/storageTask/findTasks`;
@@ -14,7 +16,7 @@
     json: true,
     
   };
-
+ 
   return new Promise((resolve, reject) => {
     request(options, (error, response, body) => {
       if (error) {
@@ -89,47 +91,68 @@
   });
 };
 
-// Function to update an existing raw usage
-export const updateRawUsage = (rawUsage) => {
-  const url = `${BASE_URL}`;
-  const options = {
-    method: 'put',
-    url,
-    json: true,
-    body: rawUsage
-  };
 
-  return new Promise((resolve, reject) => {
-    request(options, (error, response, body) => {
-      if (error) {
-        reject(new Error(error.message));
-      } else {
-        resolve(body);
-      }
-    });
-  });
+export const updateRawUsage = async (rawUsage) => {
+  try {
+    const response = await request.post(`${BASE_URL}/updaterawUsage`, rawUsage);
+    ElMessage.success('淇敼鎴愬姛');
+    return response.data;
+  } catch (error) {
+    ElMessage.error('淇敼澶辫触');
+    throw error;
+  }
 };
 
-// Function to delete a raw usage by ID
-export const deleteRawUsage = (id) => {
-  const url = `${BASE_URL}/${id}`;
-  const options = {
-    method: 'delete',
-    url,
-    json: true
-  };
-
-  return new Promise((resolve, reject) => {
-    request(options, (error, response, body) => {
-      if (error) {
-        reject(new Error(error.message));
-      } else {
-        resolve(body);
-      }
-    });
-  });
+export const deleteRawUsage = async (id) => {
+  try {
+    const response = await request.post(`${BASE_URL}/id`, id);
+    ElMessage.success('鍒犻櫎鍘熷浣跨敤鏁版嵁鎴愬姛');
+    return response.data;
+  } catch (error) {
+    ElMessage.error('鍒犻櫎鍘熷浣跨敤鏁版嵁澶辫触');
+    throw error;
+  }
 };
 
+export const inStorage = async (RawUsageAndShelfRack) => {
+  try {
+    const response = await request.post(`${BASE_URL}/inStorage`, RawUsageAndShelfRack);
+    ElMessage.success('鍏ュ簱鎿嶄綔鎴愬姛');
+    return response.data;
+  } catch (error) {
+    ElMessage.error('鍏ュ簱鎿嶄綔澶辫触');
+    throw error;
+  }
+};
+
+export const outStorage = async (RawUsageAndShelfRack) => {
+  try {
+    const response = await request.post(`${BASE_URL}/outStorage`, RawUsageAndShelfRack);
+    ElMessage.success('鍑哄簱鎿嶄綔鎴愬姛');
+    return response.data;
+  } catch (error) {
+    ElMessage.error('鍑哄簱鎿嶄綔澶辫触');
+    throw error;
+  }
+};
+
+
+
+export const taskUpdate = async (task) => {
+  try {
+    const response = await request.post(`${taskBASE_URL}/taskUpdate`, task);
+
+    return response.data;
+  } catch (error) {
+ 
+    throw error;
+  }
+};
+
+
+
+
+
 
 const API_URL = 'glassStorage/api/shelfRack';  // Adjust this based on your actual API URL
 
diff --git a/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue b/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
index 0f132b5..6ca0948 100644
--- a/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
+++ b/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
@@ -1,144 +1,174 @@
 <template>
-  <div  class="app-container">
-    <el-card style="flex: 1; margin-left: 10px; " :loading="loading">
-      <div slot="header" class="clearfix" style="display: flex; align-items: center;">
+  <div class="app-container">
+    <el-card style="flex: 1; margin-left: 10px" :loading="loading">
+      <div
+        slot="header"
+        class="clearfix"
+        style="display: flex; align-items: center"
+      >
+        <!-- 宸︿晶鎸夐挳缁� -->
+        <div>
+          <el-button type="success" size="mini" @click="storage()"
+            >鍘熺墖浠撳偍璇︽儏</el-button
+          >
+          <el-button type="success" size="mini" @click="handleInbound()"
+            >鍏ュ簱</el-button
+          >
+          <el-button type="success" size="mini">鍚婅浣嶅叆搴�</el-button>
+        </div>
 
-<!-- 宸︿晶鎸夐挳缁� -->
-<div >
-  <el-button type="success" size="mini"  @click="storage()">鍘熺墖浠撳偍璇︽儏</el-button>
-  <el-button type="success" size="mini" @click="handleInbound()">鍏ュ簱</el-button>
-  <el-button type="success" size="mini" >鍚婅浣嶅叆搴�</el-button>
- 
-</div>
+        <!-- 鍙充晶閫夋嫨妗� -->
+        <el-form-item style="margin-top: 15px; width: 150px">
+          <el-select v-model="formData2.dzw" placeholder="璇烽�夋嫨鍚婅浣�">
+            <el-option label="鍚婅浣�1" value="鍚婅浣�1"></el-option>
+            <el-option label="鍚婅浣�2" value="鍚婅浣�2"></el-option>
+            <!-- 鏍规嵁瀹為檯鎯呭喌娣诲姞鏇村閫夐」 -->
+          </el-select>
+        </el-form-item>
+      </div>
+      <el-dialog v-model="Hidden" top="10vh" width="80%">
+        <el-table
+          :data="tableData"
+          v-model="dialogVisible3"
+          style="width: 98%; height: 200px"
+          @selection-change="handleSelectionChange"
+          :header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }"
+          ref="table"
+          empty-text="No Data"
+        >
+          <el-table-column prop="number" label="搴撲綅鍙�"></el-table-column>
+          <el-table-column prop="rawType" label="绫诲瀷"></el-table-column>
+          <el-table-column prop="rawWidth" label="闀垮害(mm)"></el-table-column>
+          <el-table-column prop="rawHeight" label="楂樺害(mm)"></el-table-column>
+          <el-table-column
+            prop="rawThickness"
+            label="鍘氬害(mm)"
+          ></el-table-column>
+          <el-table-column prop="pieces" label="鏁伴噺"></el-table-column>
+          <el-table-column prop="createTime" label="鍏ュ簱鏃堕棿"></el-table-column>
+          <el-table-column prop="batchId" label="鎵规鍙�"></el-table-column>
 
-<!-- 鍙充晶閫夋嫨妗� -->
-<el-form-item style="margin-top: 15px; width: 150px;">
-  <el-select v-model="formData2.dzw" placeholder="璇烽�夋嫨鍚婅浣�">
-    <el-option label="鍚婅浣�1" value="鍚婅浣�1"></el-option>
-    <el-option label="鍚婅浣�2" value="鍚婅浣�2"></el-option>
-    <!-- 鏍规嵁瀹為檯鎯呭喌娣诲姞鏇村閫夐」 -->
-  </el-select>
-</el-form-item>
+          <el-table-column
+            align="center"
+            label="鏂欐灦鐘舵��"
+            min-width="80"
+            prop="enableState"
+          >
+            <template #default="scope">
+              <el-tag
+                :type="getTagType(scope.row.enableState)"
+                @click="toggleStatus(scope.row)"
+              >
+                {{ scope.row.enableState === 1 ? "鍚敤" : "鏈惎鐢�" }}
+              </el-tag>
+            </template>
+          </el-table-column>
 
-</div>
-<el-dialog v-model="Hidden" top="10vh" width="80%"  >
+          <!-- 鎿嶄綔鍒� -->
+          <el-table-column label="鎿嶄綔" width="250">
+            <template #default="{ row }">
+              <el-button
+                type="primary"
+                size="mini"
+                @click="edithandleRowClick(row)"
+                >淇敼</el-button
+              >
+              <el-button type="danger" size="mini" @click="handleDelete(row)"
+                >鍒犻櫎</el-button
+              >
+              <el-button type="warning" size="mini" @click="handleCheckout(row)"
+                >鍑哄簱</el-button
+              >
+              <!-- <el-button type="success" size="mini" @click="addglass()">娣诲姞鍘熺墖</el-button> -->
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+          v-if="totalItems > 0"
+          background
+          layout="prev, pager, next"
+          :total="totalItems"
+          :page-size="pageSize"
+          @current-change="handleCurrentChange"
+        ></el-pagination>
+      </el-dialog>
+
       <el-table
-        :data="tableData" v-model="dialogVisible3"
-       
-        style="width: 98%; height: 200px"
+        :data="tasktableData"
+        style="width: 98%; height: 150px"
         @selection-change="handleSelectionChange"
         :header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }"
         ref="table"
-       
         empty-text="No Data"
       >
-       
-        <el-table-column prop="location" label="搴撲綅鍙�"></el-table-column>
-        <el-table-column prop="type" label="绫诲瀷"></el-table-column>
-        <el-table-column prop="length" label="闀垮害(mm)"></el-table-column>
-        <el-table-column prop="height" label="楂樺害(mm)"></el-table-column>
-        <el-table-column prop="thickness" label="鍘氬害(mm)"></el-table-column>
-        <el-table-column prop="quantity" label="鏁伴噺"></el-table-column>
-        <el-table-column prop="entry_time" label="鍏ュ簱鏃堕棿"></el-table-column>
-        <el-table-column prop="batchnumber" label="鎵规鍙�"></el-table-column>
-       
+        <template #header>
+          <div style="display: flex; align-items: center">
+            <span style="font-size: 16px; font-weight: bold; margin-right: 20px"
+              >浠诲姟鍒楄〃</span
+            >
+          </div>
+        </template>
+        <el-table-column prop="id" label="Glassid"></el-table-column>
         <el-table-column
-  align="center"
-  label="鏂欐灦鐘舵��"
-  min-width="80"
-  prop="shelf_status"
->
-<template #default="scope">
-        <el-tag :type="getTagType(scope.row.shelf_status)" @click="toggleStatus(scope.row)">
-          {{ scope.row.shelf_status === 1 ? '鍚敤' : '鏈惎鐢�' }}
-        </el-tag>
-      </template>
-</el-table-column>
+          prop="taskType"
+          label="浠诲姟鎻忚堪"
+          width="250"
+          :formatter="formatTaskType"
+        ></el-table-column>
+        <el-table-column
+          prop="rawThickness"
+          label="鐜荤拑鍘氬害"
+        ></el-table-column>
+        <el-table-column prop="color" label="鐜荤拑鑶滅郴"></el-table-column>
+        <el-table-column prop="startTime" label="鍒涘缓鏃堕棿"></el-table-column>
 
-        <!-- 鎿嶄綔鍒� -->
-        <el-table-column label="鎿嶄綔" width="250">
-          <template #default="{ row }">
-            <el-button type="primary" size="mini" @click="edithandleRowClick(row)">淇敼</el-button>
-            <el-button type="danger" size="mini" @click="handleDelete(row)">鍒犻櫎</el-button>
-            <el-button type="warning" size="mini" @click="handleCheckout(row)">鍑哄簱</el-button>
-            <!-- <el-button type="success" size="mini" @click="addglass()">娣诲姞鍘熺墖</el-button> -->
+        <el-table-column
+          align="center"
+          label="浠诲姟鐘舵��"
+          min-width="80"
+          prop="taskState"
+        >
+          <template #default="scope">
+            <el-tag :type="getTagType2(scope.row.taskState)">
+              {{ scope.row.taskState == "completed" ? "瀹屾垚" : "杩涜涓�" }}
+            </el-tag>
           </template>
         </el-table-column>
 
-        
+        <!-- 鎿嶄綔鍒� -->
+        <el-table-column label="鎿嶄綔" width="350">
+          <template #default="{ row }">
+            <el-button type="primary" size="mini" @click="handleRestart(row)"
+              >閲嶆柊寮�濮�</el-button
+            >
+            <el-button type="danger" size="mini" @click="handleDeletetask(row)"
+              >鍒犻櫎浠诲姟</el-button
+            >
+            <el-button type="success" size="mini" @click="handleComplete(row)"
+              >浠诲姟瀹屾垚</el-button
+            >
+          </template>
+        </el-table-column>
       </el-table>
-      <el-pagination
-        v-if="totalItems > 0"
-        background
-        layout="prev, pager, next"
-        :total="totalItems"
-        :page-size="pageSize"
-        @current-change="handleCurrentChange"
-      ></el-pagination>
-
-      
-  </el-dialog>
-
-
-  <el-table
-    :data="tasktableData"
-    style="width: 98%; height: 150px"
-    @selection-change="handleSelectionChange"
-    :header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }"
-    ref="table"
-    empty-text="No Data"
-  >
-
-
-  <template #header>
-        <div style="display: flex; align-items: center;">
-          <span style="font-size: 16px; font-weight: bold; margin-right: 20px;">浠诲姟鍒楄〃</span>
-        
-        </div>
-      </template>
-    <el-table-column prop="Glassid" label="Glassid"></el-table-column>
-    <el-table-column prop="taskDescription" label="浠诲姟鎻忚堪" width="250"></el-table-column>
-    <el-table-column prop="glassThickness" label="鐜荤拑鍘氬害"></el-table-column>
-    <el-table-column prop="glassFilm" label="鐜荤拑鑶滅郴"></el-table-column>
-    <el-table-column prop="creationTime" label="鍒涘缓鏃堕棿"></el-table-column>
-
-    <el-table-column
-      align="center"
-      label="浠诲姟鐘舵��"
-      min-width="80"
-      prop="taskStatus"
-    >
-      <template #default="scope">
-        <el-tag :type="getTagType2(scope.row.taskStatus)">
-          {{ scope.row.taskStatus == 'completed' ? '瀹屾垚' : '杩涜涓�' }}
-        </el-tag>
-      </template>
-    </el-table-column>
-
-    <!-- 鎿嶄綔鍒� -->
-    <el-table-column label="鎿嶄綔" width="350">
-      <template #default="{ row }">
-        <el-button type="primary" size="mini" @click="handleRestart(row)">閲嶆柊寮�濮�</el-button>
-        <el-button type="danger" size="mini" @click="handleDeletetask(row)">鍒犻櫎浠诲姟</el-button>
-        <el-button type="success" size="mini" @click="handleComplete(row)">浠诲姟瀹屾垚</el-button>
-      </template>
-    </el-table-column>
-  </el-table>
     </el-card>
 
-
-
-
-   
-    <div class="img-ypcc" >
-
-
-      <div class="img-car1" :style="'z-index:999;left:397px;top:205px;position:absolute;'">
-      <div v-show="cellshow1" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div>
+    <div class="img-ypcc">
+      <div
+        class="img-car1"
+        :style="'z-index:999;left:397px;top:205px;position:absolute;'"
+      >
+        <div
+          v-show="cellshow1"
+          style="
+            margin-top: 10px;
+            width: 200px;
+            height: 5px;
+            background-color: #409eff;
+          "
+        ></div>
+      </div>
     </div>
-   
-    </div>
-   
+
     <!-- 鍏ュ簱瀵硅瘽妗� -->
     <el-dialog
       title="鍏ュ簱"
@@ -148,9 +178,9 @@
     >
       <el-form :model="formData" ref="form" label-width="80px">
         <el-form-item label="杩涘簱鏂欐灦">
-          <el-select v-model="formData.shelf" placeholder="璇烽�夋嫨杩涘簱鏂欐灦">
-            <el-option label="A1" value="A1"></el-option>
-            <el-option label="B2" value="B2"></el-option>
+          <el-select v-model="formData.number" placeholder="璇烽�夋嫨杩涘簱鏂欐灦">
+            <el-option label="1" value="1"></el-option>
+            <el-option label="2" value="2"></el-option>
             <!-- 鏍规嵁瀹為檯鎯呭喌娣诲姞鏇村閫夐」 -->
           </el-select>
         </el-form-item>
@@ -162,91 +192,137 @@
           </el-select>
         </el-form-item>
         <el-form-item label="瀹藉害">
-          <el-input v-model.number="formData.width" placeholder="璇疯緭鍏ュ搴�"></el-input>
+          <el-input
+            v-model.number="formData.rawWidth"
+            placeholder="璇疯緭鍏ュ搴�"
+          ></el-input>
         </el-form-item>
         <el-form-item label="楂樺害">
-          <el-input v-model.number="formData.height" placeholder="璇疯緭鍏ラ珮搴�"></el-input>
+          <el-input
+            v-model.number="formData.rawHeight"
+            placeholder="璇疯緭鍏ラ珮搴�"
+          ></el-input>
         </el-form-item>
         <el-form-item label="鍘氬害">
-          <el-input v-model.number="formData.thickness" placeholder="璇疯緭鍏ュ帤搴�"></el-input>
+          <el-input
+            v-model.number="formData.rawThickness"
+            placeholder="璇疯緭鍏ュ帤搴�"
+          ></el-input>
         </el-form-item>
         <el-form-item label="鏁伴噺">
-          <el-input v-model.number="formData.quantity" placeholder="璇疯緭鍏ユ暟閲�"></el-input>
+          <el-input
+            v-model.number="formData.pieces"
+            placeholder="璇疯緭鍏ユ暟閲�"
+          ></el-input>
         </el-form-item>
       </el-form>
 
       <div slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="handleConfirmInbound">纭� 瀹�</el-button>
+        <el-button type="primary" @click="handleConfirmInbound"
+          >纭� 瀹�</el-button
+        >
       </div>
     </el-dialog>
 
-
-    <el-dialog title="娣诲姞鍘熺墖"  v-model="dialogVisible3" width="50%">
-    <el-form :model="formData3" ref="form" label-width="80px">
-      <el-form-item label="棰滆壊鑶滅郴">
-        <el-input v-model="formData.selectedColor" readonly style="width: 250px; height: 35px; font-size: 20px"></el-input>
-        <el-dropdown @command="handleCommand">
-          <span class="el-dropdown-link">
-            閫夋嫨<i class="el-icon-arrow-down el-icon--right"></i>
-          </span>
-          <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item v-for="color in colors" :key="color['0_glass_id']" :command="color['0_glass_id']">
-              {{ color['0_glass_id'] }}
-            </el-dropdown-item>
-          </el-dropdown-menu>
-        </el-dropdown>
-      </el-form-item>
-
-      <el-form-item label="闀垮害">
-        <el-input v-model="formData.width" required style="width: 250px; font-size: 20px" @focus="clearInput('wid')"></el-input>
-      </el-form-item>
-
-      <el-form-item label="楂樺害">
-        <el-input v-model="formData.height" required style="width: 250px; font-size: 20px" @focus="clearInput('heig')"></el-input>
-      </el-form-item>
-
-      <el-form-item label="鍘氬害">
-        <el-input v-model="formData.thickness" required style="width: 250px; font-size: 20px" @focus="clearInput('thinkness')"></el-input>
-      </el-form-item>
-
-      <el-form-item label="鏁伴噺">
-        <el-input-number v-model="formData.quantity" required :min="0" :max="9000" style="width: 250px; font-size: 20px" @focus="clearInput('num')"></el-input-number>
-      </el-form-item>
-    </el-form>
-
-    <span slot="footer" class="dialog-footer">
-      <el-button @click="dialogVisible3 = false">鍏抽棴</el-button>
-      <el-button type="primary" @click="submitForm">鎻愪氦</el-button>
-    </span>
-  </el-dialog>
-
-  <el-dialog title="缂栬緫" v-model="editdialogVisible" width="30%" @close="edithandleDialogClose">
-      <el-form :model="editForm" ref="editFormRef" label-width="80px">
-        <el-form-item label="鏁伴噺">
-          <el-input v-model="editForm.quantity"></el-input>
+    <el-dialog title="娣诲姞鍘熺墖" v-model="dialogVisible3" width="50%">
+      <el-form :model="formData3" ref="form" label-width="80px">
+        <el-form-item label="棰滆壊鑶滅郴">
+          <el-input
+            v-model="formData.selectedColor"
+            readonly
+            style="width: 250px; height: 35px; font-size: 20px"
+          ></el-input>
+          <el-dropdown @command="handleCommand">
+            <span class="el-dropdown-link">
+              閫夋嫨<i class="el-icon-arrow-down el-icon--right"></i>
+            </span>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item
+                v-for="color in colors"
+                :key="color['0_glass_id']"
+                :command="color['0_glass_id']"
+              >
+                {{ color["0_glass_id"] }}
+              </el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
         </el-form-item>
-        <el-form-item label="鎵规鍙�">
-          <el-input v-model="editForm.batchnumber"></el-input>
-        </el-form-item>
+
         <el-form-item label="闀垮害">
-          <el-input v-model="editForm.length"></el-input>
+          <el-input
+            v-model="formData.width"
+            required
+            style="width: 250px; font-size: 20px"
+            @focus="clearInput('wid')"
+          ></el-input>
         </el-form-item>
+
         <el-form-item label="楂樺害">
-          <el-input v-model="editForm.height"></el-input>
+          <el-input
+            v-model="formData.height"
+            required
+            style="width: 250px; font-size: 20px"
+            @focus="clearInput('heig')"
+          ></el-input>
         </el-form-item>
+
         <el-form-item label="鍘氬害">
-          <el-input v-model="editForm.thickness"></el-input>
+          <el-input
+            v-model="formData.thickness"
+            required
+            style="width: 250px; font-size: 20px"
+            @focus="clearInput('thinkness')"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="鏁伴噺">
+          <el-input-number
+            v-model="formData.quantity"
+            required
+            :min="0"
+            :max="9000"
+            style="width: 250px; font-size: 20px"
+            @focus="clearInput('num')"
+          ></el-input-number>
         </el-form-item>
       </el-form>
 
-      <div  class="dialog-footer">
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible3 = false">鍏抽棴</el-button>
+        <el-button type="primary" @click="submitForm">鎻愪氦</el-button>
+      </span>
+    </el-dialog>
+
+    <el-dialog
+      title="缂栬緫"
+      v-model="editdialogVisible"
+      width="30%"
+      @close="edithandleDialogClose"
+    >
+      <el-form :model="editForm" ref="editFormRef" label-width="80px">
+        <el-form-item label="鏁伴噺">
+          <el-input v-model="editForm.pieces"></el-input>
+        </el-form-item>
+        <el-form-item label="鎵规鍙�">
+          <el-input v-model="editForm.batchId"></el-input>
+        </el-form-item>
+        <el-form-item label="闀垮害">
+          <el-input v-model="editForm.rawWidth"></el-input>
+        </el-form-item>
+        <el-form-item label="楂樺害">
+          <el-input v-model="editForm.rawHeight"></el-input>
+        </el-form-item>
+        <el-form-item label="鍘氬害">
+          <el-input v-model="editForm.rawThickness"></el-input>
+        </el-form-item>
+      </el-form>
+
+      <div class="dialog-footer">
         <el-button @click="editdialogVisible = false">鍙栨秷</el-button>
         <el-button type="primary" @click="editsaveEdit">淇濆瓨</el-button>
       </div>
     </el-dialog>
-
-
   </div>
 </template>
 
@@ -254,363 +330,413 @@
 
 
 <script setup>
-import { ref, onMounted, onBeforeUnmount } from 'vue'; // 瀵煎叆 Vue 3 鐨勬ā鍧�
-import * as echarts from 'echarts';
-import { ElMessage, ElMessageBox } from 'element-plus'
-import {tableData} from '@/stores/tableData.js';
+import { ref, onMounted, onBeforeUnmount } from "vue"; // 瀵煎叆 Vue 3 鐨勬ā鍧�
+//import * as echarts from 'echarts';
+import { ElMessage, ElMessageBox } from "element-plus";
+// import {tableData} from '@/stores/tableData.js';
+import { WebSocketHost, host } from "@/utils/constants";
+import { initializeWebSocket, closeWebSocket } from "@/utils/WebSocketService";
 
+import {
+  updateRawUsage,
+  deleteRawUsage,
+  inStorage,
+  outStorage,
+  taskUpdate,
+} from "@/utils/api";
 
-
-    const loading = ref(false);
-   
-
-    const Hidden = ref(false)
-
-
-    const totalItems = ref(0);
-    totalItems.value = 10;
-    const pageSize = 10;
-    let currentPage = ref(1);
-    const handleCurrentChange = (val) => {
-
-      currentPage.value = val;
-      
-    };
-
-   const getTagType2 =(status) => {
-      switch (status) {
-        case 'completed':
-          return 'success';
-        case 'in-progress':
-          return 'info';
-        case 'warning':
-          return 'warning';
-        case 'danger':
-          return 'danger';
-        default:
-          return '';
-      }
-    }
-
-    const getTagType =(status) => {
-      return status === 1 ? 'success' : 'danger';
-      // 鏍规嵁鐘舵�佸�煎喅瀹氭爣绛剧被鍨嬶紝杩欓噷鍋囪鐘舵�佷负1鏃朵负鎴愬姛锛堢豢鑹诧級锛屽惁鍒欎负澶辫触锛堢孩鑹诧級
-    }
-
-    const toggleStatus = (row) => {
-      // 鍒囨崲鏂欐灦鐘舵�佺殑閫昏緫
-      row.shelf_status = 1 - row.shelf_status; // Toggle between 0 and 1
-      // 姝ゅ鍙互娣诲姞淇濆瓨鐘舵�佺殑閫昏緫锛屾瘮濡傝皟鐢� API 鏇存柊鏁版嵁
-    };
-
-   const tasktableData=ref([
-
-    {
-          Glassid: 'G001',
-          taskDescription: '浠庡悐瑁呬綅銆�99銆戝埌浠撲綅銆�56銆�',
-          taskStatus: 'in-progress',
-          glassThickness: '5mm',
-          glassFilm: '鑶滅郴A',
-          creationTime: '2024-06-19 10:00:00'
-        },
-        {
-          Glassid: 'G002',
-          taskDescription: '浠庡悐瑁呬綅銆�99銆戝埌浠撲綅銆�56銆�',
-          taskStatus: 'completed',
-          glassThickness: '10mm',
-          glassFilm: '鑶滅郴B',
-          creationTime: '2024-06-19 11:00:00'
-        }
-        ]);
-
-    const dialogVisible = ref(false);
-    const formData = ref({
-      shelf: '',
-      color: '',
-      width: '',
-      height: '',
-      thickness: '',
-      quantity: ''
-    });
-
-    const formData2 = ref({
-      dzw: '',
-     
-    });
-
-   
-    const handleDelete = (row) => {
-  // 浣跨敤 Element UI 鐨� MessageBox.confirm 鏂规硶杩涜浜屾纭
-  ElMessageBox.confirm('纭畾瑕佹墽琛屽垹闄ゆ搷浣滃悧锛�', '纭鍒犻櫎', {
-    confirmButtonText: '纭',
-    cancelButtonText: '鍙栨秷',
-    type: 'warning',
-  }).then(() => {
-    // 鐐瑰嚮纭鎸夐挳鐨勫洖璋冿紝鎵ц鍑哄簱鎿嶄綔
-    console.log('鎵ц鍒犻櫎鎿嶄綔', row);
-  }).catch(() => {
-    // 鐐瑰嚮鍙栨秷鎸夐挳鐨勫洖璋冿紝涓嶆墽琛屼换浣曟搷浣�
-    console.log('鍙栨秷鍒犻櫎鎿嶄綔');
-  });
+const loading = ref(false);
+const Hidden = ref(false);
+const tableData = ref([]);
+const totalItems = ref(0);
+totalItems.value = 10;
+const pageSize = 10;
+let currentPage = ref(1);
+const handleCurrentChange = (val) => {
+  currentPage.value = val;
 };
 
-    
-    const handleCheckout = (row) => {
-  // 浣跨敤 Element UI 鐨� MessageBox.confirm 鏂规硶杩涜浜屾纭
-  ElMessageBox.confirm('纭畾瑕佹墽琛屽嚭搴撴搷浣滃悧锛�', '纭鍑哄簱', {
-    confirmButtonText: '纭',
-    cancelButtonText: '鍙栨秷',
-    type: 'warning',
-  }).then(() => {
-    // 鐐瑰嚮纭鎸夐挳鐨勫洖璋冿紝鎵ц鍑哄簱鎿嶄綔
-    console.log('鎵ц鍑哄簱鎿嶄綔', row);
-  }).catch(() => {
-    // 鐐瑰嚮鍙栨秷鎸夐挳鐨勫洖璋冿紝涓嶆墽琛屼换浣曟搷浣�
-    console.log('鍙栨秷鍑哄簱鎿嶄綔');
-  });
+const formatTaskType = (row, column) => {
+  if (row.taskType === "浠庝粨浣嶅埌鍚婅浣�") {
+    return `浠庝粨浣�${row.shelfRack}鍒板悐瑁呬綅${row.loadRack}`;
+  } else if (row.taskType === "浠庝粨浣嶅埌涓婄墖浣�") {
+    return `浠庝粨浣�${row.shelfRack}鍒颁笂鐗囦綅${row.loadRack}`;
+  } else if (row.taskType === "浠庝笂鐗囦綅鍒颁粨浣�") {
+    return `浠庝笂鐗囦綅${row.loadRack}鍒颁粨浣�${row.shelfRack}`;
+  } else if (row.taskType === "浠庡悐瑁呬綅鍒颁粨浣�") {
+    return `浠庡悐瑁呬綅${row.loadRack}鍒颁粨浣�${row.shelfRack}`;
+  }
 };
 
+const getTagType2 = (status) => {
+  switch (status) {
+    case "completed":
+      return "success";
+    case "in-progress":
+      return "info";
+    case "warning":
+      return "warning";
+    case "danger":
+      return "danger";
+    default:
+      return "";
+  }
+};
 
-    const handleInbound = () => {
-      // 鎵撳紑鍏ュ簱瀵硅瘽妗�
-      dialogVisible.value = true;
-    };
+const getTagType = (status) => {
+  return status === 1 ? "success" : "danger";
+  // 鏍规嵁鐘舵�佸�煎喅瀹氭爣绛剧被鍨嬶紝杩欓噷鍋囪鐘舵�佷负1鏃朵负鎴愬姛锛堢豢鑹诧級锛屽惁鍒欎负澶辫触锛堢孩鑹诧級
+};
 
-    const storage = () => {
-      // 鎵撳紑鍏ュ簱瀵硅瘽妗�
-      Hidden.value = true;
-    };
-    
+const toggleStatus = (row) => {
+  // 鍒囨崲鏂欐灦鐘舵�佺殑閫昏緫
+  row.enableState = 1 - row.enableState; // Toggle between 0 and 1
+  // 姝ゅ鍙互娣诲姞淇濆瓨鐘舵�佺殑閫昏緫锛屾瘮濡傝皟鐢� API 鏇存柊鏁版嵁
+};
+const socketUrl = `ws://${WebSocketHost}:${host}/api/glassStorage/api/talk/storageTask`;
+// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
+const handleMessage = (data) => {
+  // 鏇存柊 tableData 鐨勬暟鎹�
 
-    const handleCloseDialog = () => {
-      // 鍏抽棴瀵硅瘽妗嗘椂閲嶇疆琛ㄥ崟鏁版嵁
-      formData.value = {
-        shelf: '',
-        color: '',
-        width: '',
-        height: '',
-        thickness: '',
-        quantity: ''
+  tableData.value = data.rack[0]; // 鍋囪 tableData 鏄搷搴斿紡瀵硅薄鎴栧彉閲�
+
+  tableData.value.forEach((item) => {
+    // 鑾峰彇 createTime 鐨勬椂闂存埑
+    const createTimeTimestamp = item.createTime;
+
+    // 鍒涘缓鏃ユ湡瀵硅薄
+    const date = new Date(createTimeTimestamp);
+
+    // 鏍煎紡鍖栨棩鏈熸椂闂翠负鏈湴鏍煎紡
+    const formattedDateTime = date.toLocaleString();
+
+    // 鏇挎崲鍘熸潵鐨� createTime 瀛楁涓烘牸寮忓寲鍚庣殑鏃ユ湡鏃堕棿瀛楃涓�
+    item.createTime = formattedDateTime;
+  });
+
+  tasktableData.value = data.tasks[0]; // 鍋囪 tasktableData 鏄搷搴斿紡瀵硅薄鎴栧彉閲�
+
+  tasktableData.value.forEach((item) => {
+    // 鑾峰彇 createTime 鐨勬椂闂存埑
+    const createTimeTimestamp = item.startTime;
+
+    // 鍒涘缓鏃ユ湡瀵硅薄
+    const date = new Date(createTimeTimestamp);
+
+    // 鏍煎紡鍖栨棩鏈熸椂闂翠负鏈湴鏍煎紡
+    const formattedDateTime = date.toLocaleString();
+
+    // 鏇挎崲鍘熸潵鐨� createTime 瀛楁涓烘牸寮忓寲鍚庣殑鏃ユ湡鏃堕棿瀛楃涓�
+    item.startTime = formattedDateTime;
+  });
+
+
+
+
+
+};
+
+onMounted(() => {
+  initializeWebSocket(socketUrl, handleMessage);
+});
+onBeforeUnmount(() => {
+  console.log("鍏抽棴浜�");
+  closeWebSocket();
+});
+
+const tasktableData = ref([]);
+
+const dialogVisible = ref(false);
+const formData = ref({
+  number: "",
+  color: "",
+  rawWidth: "",
+  rawHeight: "",
+  rawThickness: "",
+  pieces: "",
+  loadRack: 1,
+});
+
+const formData2 = ref({
+  dzw: "",
+});
+
+const handleDelete = (row) => {
+  // 浣跨敤 Element UI 鐨� MessageBox.confirm 鏂规硶杩涜浜屾纭
+  ElMessageBox.confirm("纭畾瑕佹墽琛屽垹闄ゆ搷浣滃悧锛�", "纭鍒犻櫎", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(() => {
+      // 鐐瑰嚮纭鎸夐挳鐨勫洖璋冿紝鎵ц鍑哄簱鎿嶄綔
+
+      const intNumber = {
+        id: parseInt(row.number),
       };
-      dialogVisible.value = false;
-    };
+      deleteRawUsage(intNumber);
 
-    const handleConfirmInbound = () => {
-      // 澶勭悊纭鍏ュ簱閫昏緫锛屽彲浠ュ湪杩欓噷鎻愪氦琛ㄥ崟鎴栬�呮墽琛屽叾浠栨搷浣�
-      console.log('Confirm Inbound:', formData.value);
-      // 鍏抽棴瀵硅瘽妗�
-      dialogVisible.value = false;
-    };
-
-
-
-
-
-    const dialogVisible3 = ref(false);
-    const colors = ref([
-      { '0_glass_id': 'Red' },
-      { '0_glass_id': 'Green' },
-      { '0_glass_id': 'Blue' }
-      // Add more colors as needed
-    ]);
-
-    const formData3 = ref({
-      selectedColor: '',
-      wid: '',
-      heig: '',
-      thinkness: '',
-      num: ''
+      console.log("鎵ц鍒犻櫎鎿嶄綔");
+    })
+    .catch(() => {
+      // 鐐瑰嚮鍙栨秷鎸夐挳鐨勫洖璋冿紝涓嶆墽琛屼换浣曟搷浣�
+      console.log("鍙栨秷鍒犻櫎鎿嶄綔");
     });
-
-
-    const addglass = () => {
-      // 鎵撳紑鍏ュ簱瀵硅瘽妗�
-      dialogVisible3.value = true;
-    };
-    const handleCommand = (command) => {
-      formData.value.selectedColor = command;
-    };
-
-    const clearInput = (field) => {
-      formData.value[field] = '';
-    };
-
-    const submitForm = () => {
-      console.log('鎻愪氦鏁版嵁:', formData.value);
-      dialogVisible3.value = false;
-      // Add your submit logic here
-    };
-    
-
-
-
-    const editdialogVisible = ref(false);
-    const editForm = ref({
-      quantity: '',
-      batchnumber: '',
-      length:'',
-      height:'',
-      thickness:''
-    });
-    const editFormRef = ref(null);
-    let currentRow = ref(null);
-
-    // 澶勭悊琛岀偣鍑讳簨浠�
-    const edithandleRowClick = (row) => {
-      currentRow.value = row;
-      console.log(row)
-      editForm.value.quantity = row.quantity.toString();
-      editForm.value.batchnumber = row.batchnumber;
-      editForm.value.length = row.length;
-      editForm.value.height = row.height;
-      editForm.value.thickness = row.thickness;
-      editdialogVisible.value = true;
-      console.log(editForm.value)
-    };
-
-    // 娣诲姞淇濆瓨缂栬緫鍐呭
-    const editsaveEdit = () => {
-      if (!currentRow.value) return;
-
-      // 鏇存柊褰撳墠琛屾暟鎹�
-      currentRow.value.quantity = parseInt(editForm.value.quantity);
-      currentRow.value.batchnumber = editForm.value.batchnumber;
-
-      // 鍏抽棴瀵硅瘽妗�
-      editdialogVisible.value = false;
-    };
-
-    // 瀵硅瘽妗嗗叧闂椂閲嶇疆缂栬緫琛ㄥ崟鍜屽綋鍓嶈鏁版嵁
-    const edithandleDialogClose = () => {
-      editForm.value.quantity = '';
-      editForm.value.batchnumber = '';
-      editForm.value.width = '';
-      editForm.value.height = '';
-      editForm.value.thickness = '';
-  
-
-      currentRow.value = null;
-    };
-
-
-
-
-
-    
-
-
-    const handleRestart = (row) => {
-  // 浣跨敤 Element UI 鐨� MessageBox.confirm 鏂规硶杩涜浜屾纭
-  ElMessageBox.confirm('纭畾瑕佹墽琛岄噸鏂板紑濮嬫搷浣滃悧锛�', '纭閲嶆柊寮�濮�', {
-    confirmButtonText: '纭',
-    cancelButtonText: '鍙栨秷',
-    type: 'warning',
-  }).then(() => {
-    // 鐐瑰嚮纭鎸夐挳鐨勫洖璋�
-    console.log('鎵ц閲嶆柊寮�濮嬫搷浣�', row);
-  }).catch(() => {
-    // 鐐瑰嚮鍙栨秷鎸夐挳鐨勫洖璋冿紝涓嶆墽琛屼换浣曟搷浣�
-    console.log('鍙栨秷閲嶆柊寮�濮嬫搷浣�');
-  });
 };
 
+const handleCheckout = (row) => {
+  // 浣跨敤 Element UI 鐨� MessageBox.confirm 鏂规硶杩涜浜屾纭
+  ElMessageBox.confirm("纭畾瑕佹墽琛屽嚭搴撴搷浣滃悧锛�", "纭鍑哄簱", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(() => {
+      // 鐐瑰嚮纭鎸夐挳鐨勫洖璋冿紝鎵ц鍑哄簱鎿嶄綔
+      const raw={
+        number:parseInt(row.number),
+        loadRack:2
+      }
+      outStorage(raw)
+      console.log("鎵ц鍑哄簱鎿嶄綔", row);
+    })
+    .catch(() => {
+      // 鐐瑰嚮鍙栨秷鎸夐挳鐨勫洖璋冿紝涓嶆墽琛屼换浣曟搷浣�
+      console.log("鍙栨秷鍑哄簱鎿嶄綔");
+    });
+};
+
+const handleInbound = () => {
+  // 鎵撳紑鍏ュ簱瀵硅瘽妗�
+  dialogVisible.value = true;
+};
+
+const storage = () => {
+  // 鎵撳紑鍏ュ簱瀵硅瘽妗�
+  Hidden.value = true;
+};
+
+const handleCloseDialog = () => {
+  // 鍏抽棴瀵硅瘽妗嗘椂閲嶇疆琛ㄥ崟鏁版嵁
+  formData.value = {
+    number: "",
+    color: "",
+    rawWidth: "",
+    rawHeight: "",
+    rawThickness: "",
+    pieces: "",
+  };
+  dialogVisible.value = false;
+};
+
+const handleConfirmInbound = () => {
+  inStorage(formData.value);
+  // 澶勭悊纭鍏ュ簱閫昏緫锛屽彲浠ュ湪杩欓噷鎻愪氦琛ㄥ崟鎴栬�呮墽琛屽叾浠栨搷浣�
+  console.log("Confirm Inbound:", formData.value);
+  // 鍏抽棴瀵硅瘽妗�
+  dialogVisible.value = false;
+};
+
+const dialogVisible3 = ref(false);
+const colors = ref([
+  { "0_glass_id": "Red" },
+  { "0_glass_id": "Green" },
+  { "0_glass_id": "Blue" },
+  // Add more colors as needed
+]);
+
+const formData3 = ref({
+  selectedColor: "",
+  wid: "",
+  heig: "",
+  thinkness: "",
+  num: "",
+});
+
+const addglass = () => {
+  // 鎵撳紑鍏ュ簱瀵硅瘽妗�
+  dialogVisible3.value = true;
+};
+const handleCommand = (command) => {
+  formData.value.selectedColor = command;
+};
+
+const clearInput = (field) => {
+  formData.value[field] = "";
+};
+
+const submitForm = () => {
+  console.log("鎻愪氦鏁版嵁:", formData.value);
+  dialogVisible3.value = false;
+  // Add your submit logic here
+};
+
+const editdialogVisible = ref(false);
+const editForm = ref({
+  id: "",
+  pieces: "",
+  batchId: "",
+  rawWidth: "",
+  rawHeight: "",
+  rawThickness: "",
+});
+const editFormRef = ref(null);
+let currentRow = ref(null);
+
+// 澶勭悊琛岀偣鍑讳簨浠�
+const edithandleRowClick = (row) => {
+  currentRow.value = row;
+  console.log(row);
+  editForm.value.pieces = row.pieces.toString();
+  editForm.value.batchId = row.batchId;
+  editForm.value.rawWidth = row.rawWidth;
+  editForm.value.rawHeight = row.rawHeight;
+  editForm.value.rawThickness = row.rawThickness;
+  editForm.value.id = row.number;
+  editdialogVisible.value = true;
+  console.log(editForm.value);
+};
+
+// 娣诲姞淇濆瓨缂栬緫鍐呭
+const editsaveEdit = () => {
+  if (!currentRow.value) return;
+
+  // 鏇存柊褰撳墠琛屾暟鎹�
+  currentRow.value.pieces = editForm.value.pieces;
+  currentRow.value.batchId = editForm.value.batchId;
+  currentRow.value.rawWidth = editForm.value.rawWidth;
+  currentRow.value.rawHeight = editForm.value.rawHeight;
+  currentRow.value.rawThickness = editForm.value.rawThickness;
+  // 璋冪敤鏇存柊鍑芥暟锛屽苟澶勭悊鍏惰繑鍥炵殑 Promise
+  updateRawUsage(editForm.value);
+
+  // 鍏抽棴瀵硅瘽妗�
+  editdialogVisible.value = false;
+};
+
+// 瀵硅瘽妗嗗叧闂椂閲嶇疆缂栬緫琛ㄥ崟鍜屽綋鍓嶈鏁版嵁
+const edithandleDialogClose = () => {
+  editForm.value.pieces = "";
+  editForm.value.batchId = "";
+  editForm.value.rawWidth = "";
+  editForm.value.rawHeight = "";
+  editForm.value.rawThickness = "";
+
+  currentRow.value = null;
+};
+
+const handleRestart = (row) => {
+  // 浣跨敤 Element UI 鐨� MessageBox.confirm 鏂规硶杩涜浜屾纭
+  ElMessageBox.confirm("纭畾瑕佹墽琛岄噸鏂板紑濮嬫搷浣滃悧锛�", "纭閲嶆柊寮�濮�", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(() => {
+      const taskdata={
+        id:row.id,
+        Type:"閲嶆柊寮�濮�"
+      }
+      taskUpdate(taskdata);
+      
+
+      console.log("鎵ц閲嶆柊寮�濮嬫搷浣�", row);
+    })
+    .catch(() => {
+      // 鐐瑰嚮鍙栨秷鎸夐挳鐨勫洖璋冿紝涓嶆墽琛屼换浣曟搷浣�
+      console.log("鍙栨秷閲嶆柊寮�濮嬫搷浣�");
+    });
+};
 
 const handleDeletetask = (row) => {
   // 浣跨敤 Element UI 鐨� MessageBox.confirm 鏂规硶杩涜浜屾纭
-  ElMessageBox.confirm('纭畾瑕佹墽琛屽垹闄や换鍔℃搷浣滃悧锛�', '纭鍒犻櫎浠诲姟', {
-    confirmButtonText: '纭',
-    cancelButtonText: '鍙栨秷',
-    type: 'warning',
-  }).then(() => {
-    // 鐐瑰嚮纭鎸夐挳鐨勫洖璋�
-    console.log('鎵ц鍒犻櫎浠诲姟鎿嶄綔', row);
-  }).catch(() => {
-    // 鐐瑰嚮鍙栨秷鎸夐挳鐨勫洖璋冿紝涓嶆墽琛屼换浣曟搷浣�
-    console.log('鍙栨秷鍒犻櫎浠诲姟鎿嶄綔');
-  });
+  ElMessageBox.confirm("纭畾瑕佹墽琛屽垹闄や换鍔℃搷浣滃悧锛�", "纭鍒犻櫎浠诲姟", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(() => {
+      // 鐐瑰嚮纭鎸夐挳鐨勫洖璋�
+      const taskdata={
+        id:row.id,
+        Type:"鍒犻櫎"
+      }
+      taskUpdate(taskdata);
+      console.log("鎵ц鍒犻櫎浠诲姟鎿嶄綔", row);
+    })
+    .catch(() => {
+      // 鐐瑰嚮鍙栨秷鎸夐挳鐨勫洖璋冿紝涓嶆墽琛屼换浣曟搷浣�
+      console.log("鍙栨秷鍒犻櫎浠诲姟鎿嶄綔");
+    });
 };
-
-
 
 const handleComplete = (row) => {
   // 浣跨敤 Element UI 鐨� MessageBox.confirm 鏂规硶杩涜浜屾纭
-  ElMessageBox.confirm('纭畾瑕佹墽琛屼换鍔″畬鎴愭搷浣滃悧锛�', '纭浠诲姟瀹屾垚', {
-    confirmButtonText: '纭',
-    cancelButtonText: '鍙栨秷',
-    type: 'warning',
-  }).then(() => {
-    // 鐐瑰嚮纭鎸夐挳鐨勫洖璋�
-    console.log('鎵ц浠诲姟瀹屾垚鎿嶄綔', row);
-  }).catch(() => {
-    // 鐐瑰嚮鍙栨秷鎸夐挳鐨勫洖璋冿紝涓嶆墽琛屼换浣曟搷浣�
-    console.log('鍙栨秷浠诲姟瀹屾垚鎿嶄綔');
-  });
+  ElMessageBox.confirm("纭畾瑕佹墽琛屼换鍔″畬鎴愭搷浣滃悧锛�", "纭浠诲姟瀹屾垚", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(() => {
+
+      const taskdata={
+        id:row.id,
+        Type:"瀹屾垚"
+      }
+      taskUpdate(taskdata);
+      // 鐐瑰嚮纭鎸夐挳鐨勫洖璋�
+      console.log("鎵ц浠诲姟瀹屾垚鎿嶄綔", row);
+    })
+    .catch(() => {
+      // 鐐瑰嚮鍙栨秷鎸夐挳鐨勫洖璋冿紝涓嶆墽琛屼换浣曟搷浣�
+      console.log("鍙栨秷浠诲姟瀹屾垚鎿嶄綔");
+    });
 };
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    
-
-
 </script>
 
 <style scoped>
-
-
-#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
-#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
-#dialog-footer{
+#dt {
+  display: block;
+  float: left;
+  line-height: 20px;
+  margin-left: 100px;
+}
+#dta {
+  display: block;
+  float: left;
+  line-height: 20px;
+  margin-left: 80%;
+}
+#dialog-footer {
   text-align: center;
   margin-top: -15px;
 }
 
-
-
-.img-ypcc{
+.img-ypcc {
   margin-left: 80px;
-  background-image:url('../../assets/ypcc.png');
+  background-image: url("../../assets/ypcc.png");
   background-repeat: no-repeat;
-    background-attachment: local;
-    min-height: 600px;
-    width: 1400px;
-    max-width: 100%;
-    background-size: 1400px 600px;
-    overflow: hidden;
-    position:relative;
-    margin-top:0px
+  background-attachment: local;
+  min-height: 600px;
+  width: 1400px;
+  max-width: 100%;
+  background-size: 1400px 600px;
+  overflow: hidden;
+  position: relative;
+  margin-top: 0px;
 }
 
-.img-car1{
-  background-image:url('../../assets/ypccche.png');
+.img-car1 {
+  background-image: url("../../assets/ypccche.png");
   position: absolute;
   background-repeat: no-repeat;
-    background-attachment: local;
-    min-height: 400px;
-    width: 200px;
-    max-width: 100%;
-    background-size: 200px 170px;
-    overflow: hidden;
-    position:relative
+  background-attachment: local;
+  min-height: 400px;
+  width: 200px;
+  max-width: 100%;
+  background-size: 200px 170px;
+  overflow: hidden;
+  position: relative;
 }
 
 .custom-dialog {
diff --git a/hangzhoumesParent/gateway/src/main/resources/application.yml b/hangzhoumesParent/gateway/src/main/resources/application.yml
index a369150..93b9826 100644
--- a/hangzhoumesParent/gateway/src/main/resources/application.yml
+++ b/hangzhoumesParent/gateway/src/main/resources/application.yml
@@ -6,7 +6,7 @@
   cloud:
     nacos:
       discovery:
-        server-addr: 127.0.0.1:8848
+        server-addr: 10.153.19.150:8848
     gateway:
       discovery:
         locator:
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/push.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/push.java
index 934155a..700a1c1 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/push.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/push.java
@@ -2,7 +2,9 @@
 
 import cn.hutool.json.JSONObject;
 
+import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
 import com.mes.shelfrack.service.ShelfRackService;
+import com.mes.storagetask.entity.request.StorageTaskRequest;
 import com.mes.storagetask.service.StorageTaskService;
 import com.mes.tools.WebSocketServer;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,7 +12,9 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -29,8 +33,9 @@
         log.info("鍙戦�佷换鍔′俊鎭拰鏋跺瓙淇℃伅");
         JSONObject jsonObject = new JSONObject();
 
-        List<Map<String, Object>> rack =  shelfRackService.selectshelf_rack();
-        List<Map<String, Object>> tasks =  storageTaskService.Tasks();
+        List<RawUsageAndShelfRack> rack =  shelfRackService.selectshelf_rack();
+        List<StorageTaskRequest>  tasks =  storageTaskService.Tasks();
+
         jsonObject.append("rack",rack);
         jsonObject.append("tasks",tasks);
         log.info(jsonObject.toString());
@@ -39,7 +44,7 @@
             for (WebSocketServer webserver : sendwServer) {
                 if (webserver != null&&webserver.session.isOpen()) {
                     log.info("宸插彂閫�");
-                    webserver.sendMessage(jsonObject.toString());
+                    webserver.sendMessage(String.valueOf(jsonObject));
                 }
             }
         }
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java
index 494c66f..99f32ec 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java
@@ -1,5 +1,7 @@
 package com.mes.loadposition.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -27,8 +29,8 @@
     /**
      *   
      */
-    @ApiModelProperty(" ")
-    private Long id;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
 
     /**
      *  鏋跺瓙缂栧彿
@@ -58,7 +60,7 @@
      *  浠撳偍浠诲姟缂栧彿
      */
     @ApiModelProperty("浠撳偍浠诲姟缂栧彿")
-    private Long storageTaskId;
+    private Integer storageTaskId;
 
     /**
      *  涓婄墖浣嶇被鍨�
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java
index 9f95757..1518f75 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java
@@ -1,5 +1,6 @@
 package com.mes.rawusage.controller;
 
+import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
 import com.mes.utils.Result;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -80,8 +81,8 @@
      */
     @ApiOperation(value = "淇敼", notes = "淇敼鏁版嵁")
     @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
-    @PutMapping
-    public Result update( @RequestBody RawUsage rawUsage) {
+    @PostMapping("/updaterawUsage")
+    public Result updaterawUsage(@RequestBody RawUsage rawUsage) {
         boolean result = rawUsageService.updateById(rawUsage);
         return Result.success(result);
     }
@@ -89,14 +90,30 @@
     /**
      * 鍒犻櫎
      *
-     * @param id
+     * @param
      * @return
      */
     @ApiOperation(value = "鍒犻櫎", notes = "鍒犻櫎鏁版嵁")
-    @DeleteMapping("/{id}")
-    public Result delete(@PathVariable("id") Long id) {
-        int result = rawUsageService.getBaseMapper().deleteById(id);
-        return Result.success(result);
+    @PostMapping("/id")
+    public Result delete(@RequestBody RawUsage rawUsage) {
+         rawUsageService.updateRawPackageAndStorageRack(rawUsage);
+        return Result.success();
     }
 
+    @ApiOperation(value = "鍏ュ簱", notes = "鍏ュ簱")
+    @PostMapping("/inStorage")
+    public Result inStorage(@RequestBody RawUsageAndShelfRack rawUsage) {
+        rawUsageService.inStorage(rawUsage);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鍑哄簱", notes = "鍑哄簱")
+    @PostMapping("/outStorage")
+    public Result outStorage(@RequestBody RawUsageAndShelfRack rawUsage) {
+        rawUsageService.outStorage(rawUsage);
+        return Result.success();
+    }
+
+
+
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java
index 4715716..de0b617 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java
@@ -2,6 +2,9 @@
 
 import java.io.Serializable;
 import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -27,8 +30,8 @@
     /**
      *   
      */
-    @ApiModelProperty(" ")
-    private Long id;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
 
     /**
      *  鐜荤拑绫诲瀷
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java
index dea687f..900e4a1 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java
@@ -2,6 +2,8 @@
 
 import com.mes.rawusage.entity.RawUsage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.shelfrack.entity.ShelfRack;
+import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
 
 import java.util.List;
 /**
@@ -12,6 +14,23 @@
 
     List<RawUsage> findList(RawUsage params);
 
+    /**
+     * @param raw
+     * 淇敼
+     */
+    void updateRawPackageAndStorageRack(RawUsage raw);
 
+    /**
+     * @param raw
+     * 鍏ュ簱
+     */
+    void inStorage(RawUsageAndShelfRack raw);
+
+
+    /**
+     * @param raw
+     * 鍑哄簱
+     */
+    void outStorage(RawUsageAndShelfRack raw);
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java
index 108908d..69f120f 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java
@@ -6,9 +6,20 @@
 import com.mes.rawusage.mapper.RawUsageMapper;
 import com.mes.rawusage.entity.RawUsage;
 import com.mes.rawusage.service.RawUsageService;
+import com.mes.shelfrack.entity.ShelfRack;
+import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
+import com.mes.shelfrack.mapper.ShelfRackMapper;
+import com.mes.storagetask.entity.StorageTask;
+import com.mes.storagetask.mapper.StorageTaskMapper;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.lang.reflect.InvocationTargetException;
+import java.time.LocalDateTime;
 import java.util.List;
+
+import static cn.hutool.core.date.DateTime.now;
 
 /**
  * @author system
@@ -19,6 +30,10 @@
 
     @Autowired
     private RawUsageMapper rawUsageMapper;
+    @Autowired
+    private ShelfRackMapper shelfRackMapper;
+    @Autowired
+    private StorageTaskMapper storageTaskMapper;
 
     @Override
     public List<RawUsage> findList(RawUsage params){
@@ -26,6 +41,98 @@
         return rawUsageMapper.selectList(query);
     }
 
+    @Override
+    public void updateRawPackageAndStorageRack(RawUsage raw) {
+        // Step 1: 鏌ヨraw_package_id
+        LambdaQueryWrapper<ShelfRack> queryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
+                .eq(ShelfRack::getNumber, raw.getId());
+        ShelfRack shelfRack = shelfRackMapper.selectOne(queryWrapper);
+        if (shelfRack == null) {
+            throw new RuntimeException("鏈壘鍒颁笌鎸囧畾璐ф灦ID鍏宠仈鐨勫師鏂欏寘淇℃伅");
+        }
+
+
+        // Step 2: 鏇存柊raw_package琛�
+        RawUsage rawUsage=new RawUsage();
+
+        rawUsage.setState("绌洪棽");
+        rawUsage.setId(shelfRack.getRawPackageId());
+        rawUsageMapper.updateById(rawUsage);
+
+        // Step 3: 鏇存柊storage_rack琛�
+
+        ShelfRack rack = new ShelfRack();
+        rack.setState("绌洪棽");
+        rack.setRawPackageId(null);  // 璁剧疆RawPackageId涓虹壒瀹氱殑绌哄�硷紝渚嬪0
+        LambdaQueryWrapper<ShelfRack> queryWrapper2 = Wrappers.lambdaQuery(ShelfRack.class)
+                .eq(ShelfRack::getNumber, raw.getId());
+        shelfRackMapper.update(rack, queryWrapper2);
+
+
+    }
+
+
+
+
+
+    @Override
+    public void inStorage(RawUsageAndShelfRack raw) {
+        RawUsage rawPackage = new RawUsage();
+        BeanUtils.copyProperties(raw,rawPackage);
+        rawPackage.setRawType(raw.getRawThickness() + raw.getColor());
+        rawPackage.setState("浣跨敤涓�");
+        rawPackage.setLeftPieces(rawPackage.getPieces());
+        rawUsageMapper.insert(rawPackage);
+
+        // 鏇存柊鏋惰〃
+        ShelfRack rack = new ShelfRack();
+        rack.setState("浣跨敤涓�");
+        rack.setRawPackageId(rawPackage.getId());  // 璁剧疆RawPackageId涓虹壒瀹氱殑绌哄�硷紝渚嬪0
+        LambdaQueryWrapper<ShelfRack> queryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
+                .eq(ShelfRack::getNumber, raw.getNumber());
+        shelfRackMapper.update(rack, queryWrapper);
+        StorageTask storageTask=new StorageTask();
+        storageTask.setTaskState("绛夊緟涓�");
+        storageTask.setTaskType("浠庝粨浣嶅埌鍚婅浣�");
+        storageTask.setLoadRack(raw.getLoadRack());
+        storageTask.setShelfRack(raw.getNumber());
+        storageTask.setRouteGroup(1);
+        storageTask.setStartTime(now());
+        storageTask.setFinishTime(now());
+        insertTask(storageTask);
+
+
+    }
+
+
+    @Override
+    public void outStorage(RawUsageAndShelfRack raw) {
+        ShelfRack rack = new ShelfRack();
+        rack.setState("绛夊緟鍑哄簱");
+        rack.setRawPackageId(null);  // 璁剧疆RawPackageId涓虹壒瀹氱殑绌哄�硷紝渚嬪0
+        LambdaQueryWrapper<ShelfRack> queryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
+                .eq(ShelfRack::getNumber, raw.getNumber());
+        shelfRackMapper.update(rack, queryWrapper);
+
+
+        StorageTask storageTask=new StorageTask();
+        storageTask.setTaskState("绛夊緟涓�");
+        storageTask.setTaskType("浠庝粨浣嶅埌鍚婅浣�");
+        storageTask.setLoadRack(raw.getLoadRack());
+        storageTask.setShelfRack(raw.getNumber());
+        storageTask.setRouteGroup(1);
+        storageTask.setStartTime(now());
+        storageTask.setFinishTime(now());
+        insertTask(storageTask);
+    }
+
+
+    public void insertTask(StorageTask storageTask) {
+        storageTaskMapper.insert(storageTask);
+
+    }
+
+
 
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java
index cc226f8..91ad4a7 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java
@@ -1,5 +1,6 @@
 package com.mes.shelfrack.controller;
 
+import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
 import com.mes.utils.Result;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -105,7 +106,7 @@
     @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
     @GetMapping("/findshelfrack")
     public Result findshelfrack() {
-        List<Map<String, Object>> result = shelfRackService.selectshelf_rack();
+        List<RawUsageAndShelfRack> result = shelfRackService.selectshelf_rack();
         return Result.success(result);
     }
 
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java
index b980e3f..f01efbf 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java
@@ -2,6 +2,9 @@
 
 import java.io.Serializable;
 import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -27,8 +30,8 @@
     /**
      *   
      */
-    @ApiModelProperty(" ")
-    private Long id;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
 
     /**
      *  鏋跺瓙缂栧彿
@@ -46,7 +49,7 @@
      *  鍖呭彿缂栧彿
      */
     @ApiModelProperty("鍖呭彿缂栧彿")
-    private Long rawPackageId;
+    private Integer rawPackageId;
 
     /**
      *  淇敼鏃堕棿
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/request/RawUsageAndShelfRack.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/request/RawUsageAndShelfRack.java
new file mode 100644
index 0000000..2af2aca
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/request/RawUsageAndShelfRack.java
@@ -0,0 +1,76 @@
+package com.mes.shelfrack.entity.request;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+
+@EqualsAndHashCode(callSuper = false)
+public class RawUsageAndShelfRack {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("ID")
+    private Integer id;
+
+    @ApiModelProperty("鐜荤拑绫诲瀷")
+    private String rawType;
+
+    @ApiModelProperty("瀹藉害")
+    private Float rawWidth;
+
+    @ApiModelProperty("楂樺害")
+    private Float rawHeight;
+
+    @ApiModelProperty("鍘氬害")
+    private Float rawThickness;
+
+    @ApiModelProperty("棰滆壊")
+    private String color;
+
+    @ApiModelProperty("鎬绘暟閲�")
+    private Integer pieces;
+
+    @ApiModelProperty("鍓╀綑鏁伴噺")
+    private Integer leftPieces;
+
+    @ApiModelProperty("鐗╂枡缂栫爜")
+    private String qrcode;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+
+    private Date createTime;
+
+
+
+    private Date productionTime;
+
+    @ApiModelProperty("鎵规鍙�")
+    private String batchId;
+
+    @ApiModelProperty("鏋跺瓙缂栧彿")
+    private String number;
+
+    @ApiModelProperty("宸ヤ綔鐘舵��")
+    private String state;
+
+    @ApiModelProperty("鍖呭彿缂栧彿")
+    private Integer rawPackageId;
+
+
+    private Date modTime;
+
+    @ApiModelProperty("鍚敤鐘舵��")
+    private String enableState;
+
+    @ApiModelProperty("涓婄墖浣嶇紪鍙�")
+    private String loadRack;
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java
index bea1293..87bbbfd 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.shelfrack.entity.ShelfRack;
+import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
 
 import java.util.List;
 import java.util.Map;
@@ -18,5 +19,5 @@
 public interface ShelfRackMapper extends MPJBaseMapper<ShelfRack> {
 
 
-    List<Map<String, Object>> selectshelf_rack();
+    List<RawUsageAndShelfRack> selectshelf_rack();
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java
index bb0bdb0..39102e0 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java
@@ -2,6 +2,7 @@
 
 import com.mes.shelfrack.entity.ShelfRack;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
 
 import java.util.List;
 import java.util.Map;
@@ -14,6 +15,6 @@
 
     List<ShelfRack> findList(ShelfRack params);
 
-    List<Map<String, Object>> selectshelf_rack();
+    List<RawUsageAndShelfRack> selectshelf_rack();
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java
index 85d4adc..8171037 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java
@@ -7,6 +7,7 @@
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.mes.common.config.Const;
 import com.mes.rawusage.entity.RawUsage;
+import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
 import com.mes.shelfrack.mapper.ShelfRackMapper;
 import com.mes.shelfrack.entity.ShelfRack;
 import com.mes.shelfrack.service.ShelfRackService;
@@ -51,7 +52,7 @@
 
 
     @Override
-    public  List<Map<String, Object>> selectshelf_rack() {
+    public  List<RawUsageAndShelfRack> selectshelf_rack() {
         return baseMapper.selectshelf_rack();
     }
 
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java
index 0678559..0157fee 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java
@@ -1,5 +1,7 @@
 package com.mes.storagetask.controller;
 
+import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
+import com.mes.storagetask.entity.request.StorageTaskRequest;
 import com.mes.utils.Result;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -106,9 +108,22 @@
     @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
     @GetMapping("/findTasks")
     public Result findLatestTasks() {
-        List<Map<String, Object>> result = storageTaskService.Tasks();
+        List<StorageTaskRequest> result = storageTaskService.Tasks();
         return Result.success(result);
     }
 
 
+
+    @ApiOperation(value = "浠诲姟鎿嶄綔", notes = "浠诲姟鎿嶄綔")
+    @PostMapping("/taskUpdate")
+    public Result taskUpdate(@RequestBody Map<String, Object> storageTaskMap) {
+
+        StorageTask task = new StorageTask();
+        task.setType((String) storageTaskMap.get("Type")); // 鍋囪Type鏄瓨鍌ㄥ湪Map涓殑涓�涓敭
+        task.setId((int) storageTaskMap.get("id"));
+        storageTaskService.taskUpdate(task);
+        return Result.success();
+    }
+
+
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java
index 612f8e3..e037a41 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java
@@ -2,11 +2,15 @@
 
 import java.io.Serializable;
 import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.apache.xmlbeans.impl.xb.xsdschema.Public;
 import org.springframework.stereotype.Component;
 
 /**
@@ -27,9 +31,8 @@
     /**
      *   
      */
-    @ApiModelProperty(" ")
-    private Long id;
-
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
     /**
      *  浠诲姟绫诲瀷
      */
@@ -72,6 +75,8 @@
     @ApiModelProperty("瀹屾垚鏃堕棿")
     private Date finishTime;
 
+    @ApiModelProperty("鍓嶇浠诲姟绫诲瀷")
+    private String Type;
 
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/request/StorageTaskRequest.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/request/StorageTaskRequest.java
new file mode 100644
index 0000000..9c7dd09
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/request/StorageTaskRequest.java
@@ -0,0 +1,77 @@
+package com.mes.storagetask.entity.request;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class StorageTaskRequest {
+
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 浠诲姟绫诲瀷
+     */
+    @ApiModelProperty("浠诲姟绫诲瀷")
+    private String taskType;
+
+
+
+    @ApiModelProperty("鍓嶇浠诲姟绫诲瀷")
+    private String Type;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty("宸ヤ綔鐘舵��")
+    private String taskState;
+
+    /**
+     * 浠撳偍鏋跺彿
+     */
+    @ApiModelProperty("浠撳偍鏋跺彿")
+    private String shelfRack;
+
+    /**
+     * 涓婄墖浣嶇紪鍙�
+     */
+    @ApiModelProperty("涓婄墖浣嶇紪鍙�")
+    private String loadRack;
+
+    /**
+     * 绾胯矾
+     */
+    @ApiModelProperty("绾胯矾")
+    private Integer routeGroup;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    private Date startTime;
+
+    /**
+     * 瀹屾垚鏃堕棿
+     */
+    @ApiModelProperty("瀹屾垚鏃堕棿")
+    private Date finishTime;
+
+    @ApiModelProperty("棰滆壊")
+    private String color;
+
+    @ApiModelProperty("鍘氬害")
+    private Float rawThickness;
+
+
+}
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java
index f2737a1..ca5a765 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mes.storagetask.entity.StorageTask;
+import com.mes.storagetask.entity.request.StorageTaskRequest;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -19,6 +20,6 @@
 public interface StorageTaskMapper extends BaseMapper<StorageTask> {
 
 
-    List<Map<String, Object>> selectTasks();
+    List<StorageTaskRequest>  selectTasks();
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java
index bad474f..b46250b 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java
@@ -2,6 +2,7 @@
 
 import com.mes.storagetask.entity.StorageTask;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.storagetask.entity.request.StorageTaskRequest;
 
 import java.util.List;
 import java.util.Map;
@@ -17,5 +18,7 @@
 
     Map<String, Optional<StorageTask>> findLatestTasks();
 
-    List<Map<String, Object>> Tasks();
+    List<StorageTaskRequest>  Tasks();
+
+    void taskUpdate(StorageTask storageTask);
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java
index 04cb2d7..876d202 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java
@@ -3,6 +3,14 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.loadposition.entity.LoadPosition;
+import com.mes.loadposition.mapper.LoadPositionMapper;
+import com.mes.rawusage.entity.RawUsage;
+import com.mes.rawusage.mapper.RawUsageMapper;
+import com.mes.shelfrack.entity.ShelfRack;
+import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
+import com.mes.shelfrack.mapper.ShelfRackMapper;
+import com.mes.storagetask.entity.request.StorageTaskRequest;
 import com.mes.storagetask.mapper.StorageTaskMapper;
 import com.mes.storagetask.entity.StorageTask;
 import com.mes.storagetask.service.StorageTaskService;
@@ -25,6 +33,13 @@
 
     @Autowired
     private StorageTaskMapper storageTaskMapper;
+    @Autowired
+    private LoadPositionMapper loadPositionMapper;
+    @Autowired
+    private ShelfRackMapper shelfRackMapper;
+    @Autowired
+    private RawUsageMapper rawUsageMapper;
+
 
     @Override
     public List<StorageTask> findList(StorageTask params){
@@ -56,12 +71,97 @@
 
 
     @Override
-    public  List<Map<String, Object>> Tasks() {
+    public   List<StorageTaskRequest>  Tasks() {
         return baseMapper.selectTasks();
     }
 
 
 
+    @Override
+    public void taskUpdate(StorageTask request) {
+        Integer taskId = request.getId();
+        String taskType = request.getTaskType();
+        String Type = request.getType();
+        String taskState = request.getTaskState();
+        String shelfRack = request.getShelfRack();
+        String loadRack = request.getLoadRack();
+
+        if ("閲嶆柊寮�濮�".equals(Type)) {
+            StorageTask storageTask = new StorageTask();
+            storageTask.setTaskState("绛夊緟涓�");
+            LambdaQueryWrapper<StorageTask> queryWrapper = Wrappers.lambdaQuery(StorageTask.class)
+                    .eq(StorageTask::getId, request.getId());
+            storageTaskMapper.update(request,queryWrapper);
+        } else if ("瀹屾垚".equals(Type)) {
+            StorageTask existingTask = storageTaskMapper.selectById(taskId);
+            if (existingTask != null && "姝e湪宸ヤ綔".equals(existingTask.getTaskState())) {
+                if ("浠庝粨浣嶅埌涓婄墖浣�".equals(taskType) || "浠庝粨浣嶅埌鍚婅浣�".equals(taskType)) {
+                    LoadPosition loadPosition = new LoadPosition();
+                    loadPosition.setState("姝e湪浣跨敤");
+                    loadPosition.setStorageTaskId(request.getId());
+                    LambdaQueryWrapper<LoadPosition> queryWrapper = Wrappers.lambdaQuery(LoadPosition.class)
+                            .eq(LoadPosition::getNumber, request.getLoadRack());
+                    loadPositionMapper.update(loadPosition, queryWrapper);
+                    StorageTask storageTask = new StorageTask();
+                    storageTask.setTaskState("姝e湪浣跨敤");
+                    LambdaQueryWrapper<StorageTask> StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class)
+                            .eq(StorageTask::getId, request.getId());
+                    storageTaskMapper.update(request,StorageTaskqueryWrapper);
+                } else if ("浠庝笂鐗囦綅鍒颁粨浣�".equals(taskType)) {
+                    LoadPosition loadPosition = new LoadPosition();
+                    loadPosition.setState("浣跨敤涓�");
+                    loadPosition.setStorageTaskId(null);
+                    LambdaQueryWrapper<LoadPosition> queryWrapper = Wrappers.lambdaQuery(LoadPosition.class)
+                            .eq(LoadPosition::getNumber, request.getLoadRack());
+                    loadPositionMapper.update(loadPosition, queryWrapper);
+                    ShelfRack loshelfRack = new ShelfRack();
+                    LambdaQueryWrapper<RawUsage> RawUsagequeryWrapper = Wrappers.lambdaQuery(RawUsage.class)
+                            .eq(RawUsage::getId,loshelfRack.getRawPackageId());
+                    RawUsage RawUsage = rawUsageMapper.selectOne(RawUsagequeryWrapper);
+                    if(RawUsage.getLeftPieces()==0){
+                        loshelfRack.setState("绌洪棽");
+                    }else {
+                        loshelfRack.setState("浣跨敤涓�");
+                    }
+                    LambdaQueryWrapper<ShelfRack> loshelfRackqueryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
+                            .eq(ShelfRack::getNumber, request.getLoadRack());
+                    shelfRackMapper.update(loshelfRack, loshelfRackqueryWrapper);
+                } else if ("浠庡悐瑁呬綅鍒颁粨浣�".equals(taskType)) {
+                    LoadPosition loadPosition = new LoadPosition();
+                    loadPosition.setState("绌洪棽");
+                    loadPosition.setStorageTaskId(null);
+                    LambdaQueryWrapper<LoadPosition> queryWrapper = Wrappers.lambdaQuery(LoadPosition.class)
+                            .eq(LoadPosition::getNumber, request.getLoadRack());
+                    loadPositionMapper.update(loadPosition, queryWrapper);
+                    ShelfRack loshelfRack = new ShelfRack();
+                    LambdaQueryWrapper<RawUsage> RawUsagequeryWrapper = Wrappers.lambdaQuery(RawUsage.class)
+                            .eq(RawUsage::getId,loshelfRack.getRawPackageId());
+                    RawUsage RawUsage = rawUsageMapper.selectOne(RawUsagequeryWrapper);
+                    if(RawUsage.getLeftPieces()==1){
+                        loshelfRack.setEnableState("鍚敤");
+                    }else {
+                        loshelfRack.setEnableState(loshelfRack.getEnableState());
+                    }
+                    loadPosition.setState("浣跨敤涓�");
+                    LambdaQueryWrapper<ShelfRack> loshelfRackqueryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
+                            .eq(ShelfRack::getNumber, request.getLoadRack());
+                    shelfRackMapper.update(loshelfRack, loshelfRackqueryWrapper);
+                }
+                StorageTask storageTask = new StorageTask();
+                storageTask.setTaskState("宸插畬鎴�");
+                LambdaQueryWrapper<StorageTask> StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class)
+                        .eq(StorageTask::getId, request.getId());
+                storageTaskMapper.update(storageTask, StorageTaskqueryWrapper);
+            }
+        } else if ("鍒犻櫎".equals(Type)) {
+
+            LambdaQueryWrapper<StorageTask> StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class)
+                    .eq(StorageTask::getId, request.getId());
+            storageTaskMapper.delete(StorageTaskqueryWrapper);
+        }
+    }
+
+
 
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml
index 0e13316..576b9a9 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml
@@ -2,15 +2,24 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.mes.shelfrack.mapper.ShelfRackMapper">
 
-
-        <select id="selectshelf_rack" resultType="java.util.Map">
-        <![CDATA[
-            SELECT a.number, b.raw_type, b.raw_width, b.raw_height, b.raw_thickness, b.left_pieces, a.mod_time, a.enable_state, b.pieces,
-                   datediff(now(), b.create_time) as rukutime,
-                   concat(if(ROUND(b.left_pieces / b.pieces * 100, 0) < 20, 20, ROUND(b.left_pieces / b.pieces * 100, 0)), '%') as bfb
-            FROM shelf_rack AS a
-                     LEFT JOIN raw_usage AS b ON a.raw_package_id = b.id
-            ]]>
-    </select>
+    <resultMap id="ShelfRackResultMap" type="com.mes.shelfrack.entity.request.RawUsageAndShelfRack">
+        <result property="number" column="number"/>
+        <result property="rawType" column="raw_type"/>
+        <result property="rawWidth" column="raw_width"/>
+        <result property="rawHeight" column="raw_height"/>
+        <result property="rawThickness" column="raw_thickness"/>
+        <result property="enableState" column="enable_state"/>
+        <result property="pieces" column="pieces"/>
+        <result property="createTime" column="createTime"  />
+        <result property="batchId" column="batch_id"/>
+    </resultMap>
+    <select id="selectshelf_rack" resultMap="ShelfRackResultMap">
+    <![CDATA[
+        SELECT a.number, b.raw_type, b.raw_width, b.raw_height, b.raw_thickness, a.enable_state, b.pieces,
+               b.batch_id,DATE_FORMAT(b.create_time, '%Y-%m-%d %H:%i:%s') as createTime
+        FROM shelf_rack AS a
+                 LEFT JOIN raw_usage AS b ON a.raw_package_id = b.id
+        ]]>
+</select>
 
 </mapper>
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml
index 9fb2ca0..a526c7c 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml
@@ -3,8 +3,21 @@
 <mapper namespace="com.mes.storagetask.mapper.StorageTaskMapper">
 
 
+    <resultMap id="StorageTaskRequest" type="com.mes.storagetask.entity.request.StorageTaskRequest">
+        <result property="loadRack" column="load_rack"/>
+        <result property="color" column="color"/>
+        <result property="taskState" column="task_state"/>
+        <result property="shelfRack" column="shelf_rack"/>
+        <result property="startTime" column="start_time"/>
+        <result property="rawThickness" column="raw_thickness"/>
+        <result property="routeGroup" column="route_group"/>
+        <result property="id" column="id"  />
+        <result property="taskType" column="task_type"/>
+    </resultMap>
 
-    <select id="selectTasks" resultType="java.util.Map">
+
+
+    <select id="selectTasks" resultMap="StorageTaskRequest">
         <![CDATA[
         SELECT d.*, g.raw_thickness, g.color
         FROM (
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/test/java/mes/GlassStorageModuleApplicationTest.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/test/java/mes/GlassStorageModuleApplicationTest.java
index 4f0bd8b..022d334 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/test/java/mes/GlassStorageModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/test/java/mes/GlassStorageModuleApplicationTest.java
@@ -1,6 +1,9 @@
 package mes;
 
 import com.mes.GlassStorageApplication;
+import com.mes.rawusage.entity.RawUsage;
+import com.mes.rawusage.service.RawUsageService;
+import com.mes.shelfrack.entity.ShelfRack;
 import com.mes.shelfrack.service.ShelfRackService;
 import com.mes.storagetask.entity.StorageTask;
 import com.mes.storagetask.service.StorageTaskService;
@@ -30,6 +33,8 @@
     private StorageTaskService storageTaskService;
     @Autowired
     private ShelfRackService shelfRackService;
+    @Autowired
+    private RawUsageService rawUsageService;
 
 
     @Test
@@ -57,6 +62,13 @@
 
 
 
+    @Test
+    public void updateRawPackageAndStorageRack() {
+        RawUsage raw=new RawUsage();
+
+        raw.setId(null);
+        rawUsageService.updateRawPackageAndStorageRack(raw);
+    }
 
 
 

--
Gitblit v1.8.0