From 867c818b7660373ab7ca410a923c47e4b6602e2e Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期三, 10 七月 2024 14:05:21 +0800
Subject: [PATCH] 增加原片仓储模块,

---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                          |   11 
 UI-Project/src/views/User/rolelist.vue                                                                                               |  280 ++++++-
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java                            |    4 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/controller/LoadPositionController.java         |   98 ++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java           |  101 +++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java                         |  134 ++++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java                 |  101 +++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java                       |  134 ++++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java              |   49 +
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java                       |   16 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml                        |    5 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java                         |   16 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java                               |  204 ++++++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java                             |  106 +++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java |    3 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/LoadPositionService.java               |   25 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java               |  101 +++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml                          |    5 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java                 |   23 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/GlassStorageApplication.java                                |   28 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java                     |   23 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml                                                 |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java          |    2 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java      |   51 +
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java                   |   16 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java                 |   18 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml                                                |   16 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java        |   49 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java                                  |    4 
 UI-Project/src/views/GlassStorage/MaterialRackManagement.vue                                                                         |  120 +--
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java                       |   23 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml                    |    5 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml                  |    5 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml                                           |   30 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java    |    9 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml                                            |   25 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java                                   |    2 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java            |   49 +
 hangzhoumesParent/moduleService/GlassStorageModule/pom.xml                                                                           |   34 +
 hangzhoumesParent/moduleService/pom.xml                                                                                              |    1 
 40 files changed, 1,785 insertions(+), 143 deletions(-)

diff --git a/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue b/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
index b9aba12..e1b6d88 100644
--- a/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
+++ b/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
@@ -56,18 +56,22 @@
 </el-table-column>
 
         <!-- 鎿嶄綔鍒� -->
-        <el-table-column label="鎿嶄綔" width="350">
+        <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-button type="success" size="mini" @click="addglass()">娣诲姞鍘熺墖</el-button> -->
           </template>
         </el-table-column>
       </el-table>
 
 
-      <el-table
+      
+  </el-dialog>
+
+
+  <el-table
     :data="tasktableData"
     style="width: 98%; height: 150px"
     @selection-change="handleSelectionChange"
@@ -111,17 +115,16 @@
       </template>
     </el-table-column>
   </el-table>
-  </el-dialog>
     </el-card>
 
-    <!-- <div ref="chart" id="chart" style="width: 100%; height: 250px;"></div> -->
+
 
 
    
     <div class="img-ypcc" >
 
 
-      <div class="img-car1" :style="'z-index:999;left:297px;top:158px;position:absolute;'">
+      <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>
    
@@ -187,19 +190,19 @@
       </el-form-item>
 
       <el-form-item label="闀垮害">
-        <el-input v-model="formData.wid" required style="width: 250px; font-size: 20px" @focus="clearInput('wid')"></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="formData.heig" required style="width: 250px; font-size: 20px" @focus="clearInput('heig')"></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="formData.thinkness" required style="width: 250px; font-size: 20px" @focus="clearInput('thinkness')"></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.num" required :min="0" :max="9000" style="width: 250px; font-size: 20px" @focus="clearInput('num')"></el-input-number>
+        <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>
 
@@ -216,6 +219,15 @@
         </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-form-item>
+        <el-form-item label="楂樺害">
+          <el-input v-model="editForm.height"></el-input>
+        </el-form-item>
+        <el-form-item label="鍘氬害">
+          <el-input v-model="editForm.thickness"></el-input>
         </el-form-item>
       </el-form>
 
@@ -236,67 +248,12 @@
 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';
+
 
 
     const loading = ref(false);
-    const tableData = ref([
-    {
-        location: '1',
-        type: 'Type A',
-        length: '100',
-        height: '50',
-        thickness: '10',
-        quantity: '5',
-        entry_time: '2024-06-19 10:00:00',
-        batchnumber:"444",
-        shelf_status: 1
-      },
-      {
-        location: '2',
-        type: 'Type B',
-        length: '120',
-        height: '60',
-        thickness: '12',
-        quantity: '10',
-        entry_time: '2024-06-19 10:00:00',
-        batchnumber:"444",
-        shelf_status: 0
-      },
-      {
-        location: '3',
-        type: 'Type B',
-        length: '120',
-        height: '60',
-        thickness: '12',
-        quantity: '10',
-        entry_time: '2024-06-19 10:00:00',
-        batchnumber:"444",
-        shelf_status: 1
-      },
-      {
-        location: '4',
-        type: 'Type B',
-        length: '120',
-        height: '60',
-        thickness: '12',
-        quantity: '10',
-        entry_time: '2024-06-19 10:00:00',
-        batchnumber:"444",
-        shelf_status: 1
-      },
-      {
-        location: '5',
-        type: 'Type B',
-        length: '120',
-        height: '60',
-        thickness: '12',
-        quantity: '10',
-        entry_time: '2024-06-19 10:00:00',
-        batchnumber:"444",
-        shelf_status: 1
-      }
-      // Add more data as needed
-    ]);
+   
 
     const Hidden = ref(false)
 
@@ -470,7 +427,10 @@
     const editdialogVisible = ref(false);
     const editForm = ref({
       quantity: '',
-      batchnumber: ''
+      batchnumber: '',
+      length:'',
+      height:'',
+      thickness:''
     });
     const editFormRef = ref(null);
     let currentRow = ref(null);
@@ -478,8 +438,12 @@
     // 澶勭悊琛岀偣鍑讳簨浠�
     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)
     };
@@ -500,6 +464,11 @@
     const edithandleDialogClose = () => {
       editForm.value.quantity = '';
       editForm.value.batchnumber = '';
+      editForm.value.width = '';
+      editForm.value.height = '';
+      editForm.value.thickness = '';
+  
+
       currentRow.value = null;
     };
 
@@ -606,12 +575,13 @@
   background-image:url('../../assets/ypcc.png');
   background-repeat: no-repeat;
     background-attachment: local;
-    min-height: 800px;
-    width: 1600px;
+    min-height: 600px;
+    width: 1400px;
     max-width: 100%;
-    background-size: 1400px 800px;
+    background-size: 1400px 600px;
     overflow: hidden;
-    position:relative
+    position:relative;
+    margin-top:0px
 }
 
 .img-car1{
@@ -619,10 +589,10 @@
   position: absolute;
   background-repeat: no-repeat;
     background-attachment: local;
-    min-height: 200px;
+    min-height: 400px;
     width: 200px;
     max-width: 100%;
-    background-size: 200px 70px;
+    background-size: 200px 170px;
     overflow: hidden;
     position:relative
 }
diff --git a/UI-Project/src/views/User/rolelist.vue b/UI-Project/src/views/User/rolelist.vue
index 5dcbb0b..d5fd898 100644
--- a/UI-Project/src/views/User/rolelist.vue
+++ b/UI-Project/src/views/User/rolelist.vue
@@ -13,7 +13,7 @@
 // import { ref } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 //  import LanguageMixin from './lang/LanguageMixin'
-const selectedProjectNoa = ref(''); // 褰撳墠閫変腑鐨勮鑹� 
+const selectedProjectNoa = ref(null); // 褰撳墠閫変腑鐨勮鑹� 
 // const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
   const name = ref('');
 const tableData = ref([])
@@ -53,26 +53,34 @@
     console.error('Error fetching options:', error);  
   }  
 }; 
-// 娣诲姞 
+// 娣诲姞
 const getTableRow = async () => {
   try {  
     let menuList = [];
-    selectedOptions.value.forEach(array => {
-      if (array.length >= 2) {
-        let id = array[0];
-        let parentId = array[1];
-        menuList.push({  
-          id: id,  
-          parentId: 0,  
-          children: [
-        {
-          id: parentId,
-          parentId: id,
-        }
-      ],
-        });  
+     let parentIdMap = {}; // 鐢ㄤ簬瀛樺偍宸茬粡娣诲姞鐨勭埗椤�  
+    selectedOptions.value.forEach(array => {  
+      if (array.length >= 2) {  
+        let id = array[0];  
+        let parentId = array[1];  
+        // 濡傛灉id杩樻湭浣滀负鐖堕」娣诲姞锛屽垯娣诲姞瀹�  
+        if (!parentIdMap[id]) {  
+          menuList.push({  
+            id: id,  
+            parentId: 0, // 閫氬父锛岄《绾ч」鐨刾arentId鍙兘鏄痭ull鎴栫壒瀹氱殑鏍笽D锛岃繖閲岃涓�0鍙兘鏄釜鐗规畩鐢ㄩ��  
+            children: []  
+          });  
+          parentIdMap[id] = menuList[menuList.length - 1]; // 鏇存柊鏄犲皠  
+        }  
+        // 鍚戝搴旂殑鐖堕」娣诲姞瀛愰」  
+        if (!parentIdMap[id].children.some(child => child.id === parentId)) {  
+          // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勫瓙椤癸紙鍩轰簬id锛夛紝閬垮厤閲嶅娣诲姞  
+          parentIdMap[id].children.push({  
+            id: parentId,  
+            parentId: id  
+          });  
+        }  
       }  
-    });
+    });  
     const dataToSend = {  
       name: name.value,
       menuList: menuList
@@ -91,61 +99,229 @@
     console.error(error);
   }
 };
-// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
 function handleEdit(row) {  
-  name.value = row.name; 
-  selectedOptions.value = row.selectedOptions
-//  options.value = res.data.tree
- adda.value = true; // 鏄剧ず瀵硅瘽妗�  
-  window.localStorage.setItem('id', row.id)
+  name.value = row.name;  
+  adda.value = true;
+  window.localStorage.setItem('ids', row.id);
+  const parentIdMap = {};  
+  const menuItemsById = {}; // 蹇�熸煡鎵捐彍鍗曢」  
+  let topLevelItems = []; // 瀛樺偍椤剁骇鑿滃崟椤� 
+  row.menuList.forEach(item => {  
+    const parentId = item.parentId === 0 ? null : item.parentId;
+    const menuItem = {  
+      id: item.id,  
+      parentId: parentId,  
+      menuName: item.menuName,  
+      children: []  
+    };  
+    menuItemsById[item.id] = menuItem;  
+    // 鍒濆鍖栨垨鏇存柊parentIdMap涓殑鏁扮粍  
+    if (!parentIdMap[parentId]) {  
+      parentIdMap[parentId] = [];  
+    }  
+    if (parentId === null) {  
+      // 椤剁骇鑿滃崟椤圭洿鎺ユ坊鍔犲埌topLevelItems  
+      topLevelItems.push(menuItem);  
+    } else {  
+      // 闈為《绾ц彍鍗曢」娣诲姞鍒皃arentIdMap涓�  
+      parentIdMap[parentId].push(menuItem);  
+    }  
+  });  
+  for (const parentId in parentIdMap) {  
+    if (parentId !== 'null') { // 璺宠繃椤剁骇鑿滃崟椤�  
+      parentIdMap[parentId].forEach(child => {  
+        // 鏌ユ壘鐖堕」骞舵坊鍔犲瓙椤�  
+        if (menuItemsById[parentId]) {  
+          menuItemsById[parentId].children.push(child);  
+        }  
+      });  
+    }  
+  }  
+  if (selectedOptions.value !== topLevelItems) {  
+    selectedOptions.value = topLevelItems;  
+  }  
+
+  const topLevelItemsWithChildren = topLevelItems; // 鍖呭惈椤剁骇鑿滃崟椤瑰強鍏跺瓙鑿滃崟椤圭殑鏁扮粍  
+  let selectedPath = [];
+
+// 寰幆閬嶅巻 topLevelItemsWithChildren 鏁扮粍
+for (let i = 0; i < topLevelItemsWithChildren.length; i++) {
+    // 娣诲姞椤剁骇鑿滃崟椤圭殑 id
+    selectedPath.push(topLevelItemsWithChildren[i].id);
+
+    // 閬嶅巻璇ラ《绾ц彍鍗曢」鐨勫瓙鑿滃崟椤�
+    if (topLevelItemsWithChildren[i].children && topLevelItemsWithChildren[i].children.length > 0) {
+        for (let j = 0; j < topLevelItemsWithChildren[i].children.length; j++) {
+            // 娣诲姞姣忎釜瀛愯彍鍗曢」鐨� id
+            selectedPath.push(topLevelItemsWithChildren[i].children[j].id);
+        }
+    }
 }
+
+  console.log(selectedPath);
+selectedOptions.value = selectedPath;
+}
+// function handleEdit(row) {  
+//   name.value = row.name;  
+//   adda.value = true;  
+//   window.localStorage.setItem('ids', row.id);  
+//   // 鏋勫缓鑿滃崟鏍�  
+//   const buildMenuTree = (menuList) => {  
+//     const parentIdMap = {};  
+//     const menuItemsById = {};  
+//     menuList.forEach(item => {  
+//       const parentId = item.parentId === 0 ? null : item.parentId;  
+//       const menuItem = {  
+//         id: item.id,  
+//         parentId: parentId,  
+//         menuName: item.menuName,  
+//         children: []  
+//       };  
+//       menuItemsById[item.id] = menuItem;  
+  
+//       if (!parentIdMap[parentId]) {  
+//         parentIdMap[parentId] = [];  
+//       }  
+//       parentIdMap[parentId].push(menuItem);  
+//     });  
+//     // 鏋勫缓鐖跺瓙鍏崇郴  
+//     for (const parentId in parentIdMap) {  
+//       if (parentId !== 'null') {  
+//         parentIdMap[parentId].forEach(child => {  
+//           if (menuItemsById[parentId]) {  
+//             menuItemsById[parentId].children.push(child);  
+//           }  
+//         });  
+//       }  
+//     }   
+//     return parentIdMap[null] || [];  
+//   };  
+//   const options = buildMenuTree(row.menuList);  
+//   const selectedIds = row.menuList.filter(item => item.parentId === 0).map(item => item.id);  
+//   selectedOptions.value = selectedIds; 
+//   console.log(options); // 杈撳嚭鏁翠釜鑿滃崟鏍�  
+//   console.log(selectedIds); // 杈撳嚭搴旈粯璁ら�変腑鐨勮妭鐐笽D鏁扮粍  
+// }  
+// function handleEdit(row) {  
+//   name.value = row.name;  
+//   adda.value = true;
+//   window.localStorage.setItem('ids', row.id);
+//   // 鍒濆鍖� parentIdMap 鍜� menuItemsById  
+//   const parentIdMap = {};  
+//   const menuItemsById = {};  
+//   let topLevelItems = [];  
+  
+//   // 鏋勫缓鏍戝舰缁撴瀯  
+//   row.menuList.forEach(item => {  
+//     const parentId = item.parentId === 0 ? null : item.parentId;  
+//     const menuItem = {  
+//       id: item.id,  
+//       parentId: parentId,  
+//       label: item.menuName, // 娉ㄦ剰锛歟l-cascader 浣跨敤 label 鑰屼笉鏄� menuName  
+//       value: item.id, // 閫氬父 value 鏄敮涓�鏍囪瘑绗�  
+//       children: []  
+//     };  
+//     menuItemsById[item.id] = menuItem;  
+  
+//     if (!parentIdMap[parentId]) {  
+//       parentIdMap[parentId] = [];  
+//     }  
+  
+//     if (parentId === null) {  
+//       topLevelItems.push(menuItem);  
+//     } else {  
+//       parentIdMap[parentId].push(menuItem);  
+//     }  
+//   });  
+  
+//   // 鏋勫缓鐖跺瓙鍏崇郴  
+//   for (const parentId in parentIdMap) {  
+//     if (parentId !== 'null') {  
+//       parentIdMap[parentId].forEach(child => {  
+//         if (menuItemsById[parentId]) {  
+//           menuItemsById[parentId].children.push(child);  
+//         }  
+//       });  
+//     }  
+//   }  
+  
+//   // 璁剧疆 options  
+//   options.value = topLevelItems;  
+  
+//   // 鏋勫缓 selectedOptions  
+//   let selected = [];  
+//   // 鍋囪浣犳兂閫変腑鎵�鏈夎妭鐐癸紝浣犲彲浠ラ亶鍘� row.menuList 骞舵瀯寤鸿矾寰�  
+//   row.menuList.forEach(item => {  
+//     let path = [];  
+//     let currentParentId = item.parentId;  
+//     while (currentParentId !== null) {  
+//       const parentItem = menuItemsById[currentParentId];  
+//       if (parentItem) {  
+//         path.unshift(parentItem.value); // 浠庣埗鑺傜偣鍒板瓙鑺傜偣  
+//         currentParentId = parentItem.parentId;  
+//       } else {  
+//         break; // 濡傛灉鎵句笉鍒扮埗鑺傜偣锛屽垯鍋滄  
+//       }  
+//     }  
+//     // 娣诲姞褰撳墠鑺傜偣鐨� ID 鍒拌矾寰勬湯灏�  
+//     path.push(item.id);  
+//     // 濡傛灉璺緞涓嶄负绌猴紝鍒欐坊鍔犲埌 selectedOptions  
+//     if (path.length > 0) {  
+//       selected.push(path);  
+//     }  
+//   });  
+  
+//   // 鏇存柊 selectedOptions  
+//   selectedOptions.value = selected;  
+//   console.log(selected);
+//   console.log(topLevelItems);
+//   // 娉ㄦ剰锛氱‘淇� selectedOptions 鍜� options 鏄搷搴斿紡鐨�  
+// }
 // 缂栬緫
 const getTableRowa = async () => {
-  let id = window.localStorage.getItem('id')
+  let ids = window.localStorage.getItem('ids')
   try {  
     let menuList = [];
-    selectedOptions.value.forEach(array => {
-      if (array.length >= 2) {
-        let id = array[0];
-        let parentId = array[1];
-        menuList.push({  
-          id: id,  
-          parentId: 0,  
-          children: [
-        {
-          id: parentId,
-          parentId: id,
-        }
-      ],
-        });  
+     let parentIdMap = {}; // 鐢ㄤ簬瀛樺偍宸茬粡娣诲姞鐨勭埗椤�  
+    selectedOptions.value.forEach(array => {  
+      if (array.length >= 2) {  
+        let id = array[0];  
+        let parentId = array[1];  
+        // 濡傛灉id杩樻湭浣滀负鐖堕」娣诲姞锛屽垯娣诲姞瀹�  
+        if (!parentIdMap[id]) {  
+          menuList.push({  
+            id: id,  
+            parentId: 0, // 閫氬父锛岄《绾ч」鐨刾arentId鍙兘鏄痭ull鎴栫壒瀹氱殑鏍笽D锛岃繖閲岃涓�0鍙兘鏄釜鐗规畩鐢ㄩ��  
+            children: []  
+          });  
+          parentIdMap[id] = menuList[menuList.length - 1]; // 鏇存柊鏄犲皠  
+        }  
+        // 鍚戝搴旂殑鐖堕」娣诲姞瀛愰」  
+        if (!parentIdMap[id].children.some(child => child.id === parentId)) {  
+          // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勫瓙椤癸紙鍩轰簬id锛夛紝閬垮厤閲嶅娣诲姞  
+          parentIdMap[id].children.push({  
+            id: parentId,  
+            parentId: id  
+          });  
+        }  
       }  
-    });
+    });  
     const dataToSend = {  
-      id:id,
+      id:ids,
       name: name.value,
       menuList: menuList
     };  
     const response = await request.post('/loadGlass/sys/role/updateRole', dataToSend);
-  // try {
-  //   const response = await request.post('/loadGlass/sys/role/updateRole', {
-  //     id: id,
-  //     name: name.value,
-  //   }); 
- 
     if (response.code == 200) {
-      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
       adda.value = false;
       name.value = '';
-       selectedOptions.value = '';
-      fetchOptionsa()
-      tableData.value = response.data;
+      selectedOptions.value = '';
+      fetchOptionsa();
     } else {
-      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.message);
     }
   } catch (error) {
-    // 澶勭悊閿欒
     console.error(error);
   }
 };
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
index 710d964..fc7e13f 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
@@ -24,7 +24,7 @@
        */
       void saveGlassInfo(List<GlassInfo> glassinfo);
 
-      int getGlassInfoCountByFlowCardId(String flowCardId);
+      int getGlassInfoCountByFlowCardId(String flowCardId,int layer);
 
       /**
        * @return
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
index 41b9ddc..c143b88 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -89,9 +89,11 @@
 
 
     @Override
-    public int getGlassInfoCountByFlowCardId(String flowCardId) {
+    public int getGlassInfoCountByFlowCardId(String flowCardId,int layer) {
         return baseMapper.selectCount(new QueryWrapper<GlassInfo>().lambda()
-                .eq(GlassInfo::getFlowCardId, flowCardId));
+                .eq(GlassInfo::getFlowCardId, flowCardId)
+                .eq(GlassInfo::getLayer, layer));
+
     }
 
 
@@ -112,18 +114,19 @@
                 new QueryWrapper<GlassInfo>()
                         .in("engineer_id", engineerIds)
                         .groupBy("flow_card_id")
+                        .groupBy("layer")
         );
 
         // 杞崲涓� List<Map<String, Object>>
         List<Map<String, Object>> result = glassInfos.stream()
                 .map(glassInfo -> {
                     Map<String, Object> map = new HashMap<>();
-                    map.put("flow_card_id", glassInfo.getFlowCardId());
+                    map.put("flow_card_id", glassInfo.getFlowCardId()+" | "+glassInfo.getLayer());
                     // 濡傛灉杩樻湁鍏朵粬瀛楁闇�瑕佹坊鍔犲埌 map 涓紝鍦ㄨ繖閲岀户缁坊鍔�
                     return map;
                 })
                 .collect(Collectors.toList());
-        log.info("result: {}", result);
+        log.info("result666: {}", result);
         return result;
     }
 
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/pom.xml b/hangzhoumesParent/moduleService/GlassStorageModule/pom.xml
new file mode 100644
index 0000000..3b4c457
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/pom.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>moduleService</artifactId>
+        <groupId>com.mes</groupId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>glassStorage</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>5.2.4</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.9</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+</project>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/GlassStorageApplication.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/GlassStorageApplication.java
new file mode 100644
index 0000000..1ac53de
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/GlassStorageApplication.java
@@ -0,0 +1,28 @@
+package com.mes;
+
+import lombok.extern.slf4j.Slf4j;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/7 14:36RRRR
+ * @Description:
+ */
+@Slf4j
+@SpringBootApplication
+@EnableSwagger2
+@EnableDiscoveryClient
+@MapperScan(basePackages = "com.mes.*.mapper")
+@EnableScheduling
+public class GlassStorageApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(GlassStorageApplication.class, args);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/controller/LoadPositionController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/controller/LoadPositionController.java
new file mode 100644
index 0000000..0516014
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/controller/LoadPositionController.java
@@ -0,0 +1,98 @@
+package com.mes.loadposition.controller;
+
+import com.mes.loadposition.entity.LoadPosition;
+import com.mes.loadposition.service.LoadPositionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@RestController
+@RequestMapping("/api/loadPosition")
+@Api(tags = " 鎺у埗鍣�")
+public class LoadPositionController {
+
+    @Autowired
+    private LoadPositionService loadPositionService;
+
+    /**
+     * 鍒楄〃鏌ヨ
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "鍒楄〃鏌ヨ",notes = "鍒楄〃鏌ヨ",produces = "application/json")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @PostMapping("/findList")
+    public ResponseEntity<List<LoadPosition>> findList(@RequestBody LoadPosition params) {
+        List<LoadPosition> result = loadPositionService.findList(params);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ", notes = "鏌ヨ璇︽儏")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @GetMapping("/{id}")
+    public ResponseEntity<LoadPosition> findById(@PathVariable("id") Long id) {
+        LoadPosition loadPosition = loadPositionService.findById(id);
+        return ResponseEntity.ok(loadPosition);
+    }
+
+    /**
+     * 鏂板
+     *
+     * @param loadPosition
+     * @return
+     */
+    @ApiOperation(value = "鏂板", notes = "鏂板鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PostMapping
+    public ResponseEntity<Boolean> insert( @RequestBody LoadPosition loadPosition) {
+        boolean result = loadPositionService.insert(loadPosition);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 淇敼
+     *
+     * @param loadPosition
+     * @return
+     */
+    @ApiOperation(value = "淇敼", notes = "淇敼鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PutMapping
+    public ResponseEntity<Boolean> update( @RequestBody LoadPosition loadPosition) {
+        boolean result = loadPositionService.update(loadPosition);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鍒犻櫎", notes = "鍒犻櫎鏁版嵁")
+    @DeleteMapping("/{id}")
+    public ResponseEntity<Integer> delete(@PathVariable("id") Long id) {
+        int result = loadPositionService.delete(id);
+        return ResponseEntity.ok(result);
+    }
+
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..68c7382
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java
@@ -0,0 +1,134 @@
+package com.mes.loadposition.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@TableName("load_position")
+@ApiModel(value = "LoadPosition", description = " ")
+public class LoadPosition implements Serializable{
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *   
+     */
+    @ApiModelProperty(" ")
+    private Long id;
+
+    /**
+     *  鏋跺瓙缂栧彿
+     */
+    @ApiModelProperty("鏋跺瓙缂栧彿")
+    private String number;
+
+    /**
+     *  鏈哄櫒缂栧彿
+     */
+    @ApiModelProperty("鏈哄櫒缂栧彿")
+    private Long machineId;
+
+    /**
+     *  鍚敤鏍囪
+     */
+    @ApiModelProperty("鍚敤鏍囪")
+    private String flag;
+
+    /**
+     *  宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty("宸ヤ綔鐘舵��")
+    private String state;
+
+    /**
+     *  浠撳偍浠诲姟缂栧彿
+     */
+    @ApiModelProperty("浠撳偍浠诲姟缂栧彿")
+    private Long storageTaskId;
+
+    /**
+     *  涓婄墖浣嶇被鍨�
+     */
+    @ApiModelProperty("涓婄墖浣嶇被鍨�")
+    private Integer typeFlag;
+
+    /**
+     *  绾胯矾
+     */
+    @ApiModelProperty("绾胯矾")
+    private Integer routeGroup;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getNumber() {
+        return number;
+    }
+
+    public void setNumber(String number) {
+        this.number = number;
+    }
+
+    public Long getMachineId() {
+        return machineId;
+    }
+
+    public void setMachineId(Long machineId) {
+        this.machineId = machineId;
+    }
+
+    public String getFlag() {
+        return flag;
+    }
+
+    public void setFlag(String flag) {
+        this.flag = flag;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public Long getStorageTaskId() {
+        return storageTaskId;
+    }
+
+    public void setStorageTaskId(Long storageTaskId) {
+        this.storageTaskId = storageTaskId;
+    }
+
+    public Integer getTypeFlag() {
+        return typeFlag;
+    }
+
+    public void setTypeFlag(Integer typeFlag) {
+        this.typeFlag = typeFlag;
+    }
+
+    public Integer getRouteGroup() {
+        return routeGroup;
+    }
+
+    public void setRouteGroup(Integer routeGroup) {
+        this.routeGroup = routeGroup;
+    }
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java
new file mode 100644
index 0000000..ecd3ec9
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java
@@ -0,0 +1,18 @@
+package com.mes.loadposition.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.loadposition.entity.LoadPosition;
+
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ *
+ */
+@Mapper
+public interface LoadPositionMapper extends BaseMapper<LoadPosition> {
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml
new file mode 100644
index 0000000..5c46518
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.mapper.LoadPositionMapper">
+
+</mapper>
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/LoadPositionService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/LoadPositionService.java
new file mode 100644
index 0000000..b142142
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/LoadPositionService.java
@@ -0,0 +1,25 @@
+package com.mes.loadposition.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.loadposition.entity.LoadPosition;
+
+
+import java.util.List;
+
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+public interface LoadPositionService extends IService<LoadPosition> {
+
+    List<LoadPosition> findList(LoadPosition params);
+
+    LoadPosition findById(Long id);
+
+    boolean insert(LoadPosition loadPosition);
+
+    boolean update(LoadPosition loadPosition);
+
+    int delete(Long id);
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java
new file mode 100644
index 0000000..c3d3516
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java
@@ -0,0 +1,51 @@
+package com.mes.loadposition.service.impl;
+
+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.service.LoadPositionService;
+import com.mes.loadposition.mapper.LoadPositionMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Service
+public class LoadPositionServiceImpl extends ServiceImpl<LoadPositionMapper, LoadPosition> implements LoadPositionService {
+
+    @Autowired
+    private LoadPositionMapper loadPositionMapper;
+
+    @Override
+    public List<LoadPosition> findList(LoadPosition params){
+        LambdaQueryWrapper<LoadPosition> query = Wrappers.lambdaQuery(LoadPosition.class);
+        return loadPositionMapper.selectList(query);
+    }
+
+    @Override
+    public LoadPosition findById(Long id) {
+        return loadPositionMapper.selectById(id);
+    }
+
+    @Override
+    public boolean insert(LoadPosition loadPosition) {
+        return save(loadPosition);
+    }
+
+    @Override
+    public boolean update(LoadPosition loadPosition) {
+        return updateById(loadPosition);
+    }
+
+    @Override
+    public int delete(Long id) {
+        return loadPositionMapper.deleteById(id);
+    }
+
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..8c9238e
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java
@@ -0,0 +1,101 @@
+package com.mes.rawusage.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.web.bind.annotation.*;
+import com.mes.rawusage.entity.RawUsage;
+import com.mes.rawusage.service.RawUsageService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import java.util.List;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@RestController
+@RequestMapping("/api/rawUsage")
+@Api(tags = " 鎺у埗鍣�")
+public class RawUsageController {
+
+    @Autowired
+    private RawUsageService rawUsageService;
+
+    /**
+     * 鍒楄〃鏌ヨ
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "鍒楄〃鏌ヨ",notes = "鍒楄〃鏌ヨ",produces = "application/json")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @PostMapping("/findList")
+    public ResponseEntity<List<RawUsage>> findList(@RequestBody RawUsage params) {
+        List<RawUsage> result = rawUsageService.findList(params);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ", notes = "鏌ヨ璇︽儏")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @GetMapping("/{id}")
+    public ResponseEntity<RawUsage> findById(@PathVariable("id") Long id) {
+        RawUsage rawUsage = rawUsageService.findById(id);
+        return ResponseEntity.ok(rawUsage);
+    }
+
+    /**
+     * 鏂板
+     *
+     * @param rawUsage
+     * @return
+     */
+    @ApiOperation(value = "鏂板", notes = "鏂板鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PostMapping
+    public ResponseEntity<Boolean> insert( @RequestBody RawUsage rawUsage) {
+        boolean result = rawUsageService.insert(rawUsage);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 淇敼
+     *
+     * @param rawUsage
+     * @return
+     */
+    @ApiOperation(value = "淇敼", notes = "淇敼鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PutMapping
+    public ResponseEntity<Boolean> update( @RequestBody RawUsage rawUsage) {
+        boolean result = rawUsageService.update(rawUsage);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鍒犻櫎", notes = "鍒犻櫎鏁版嵁")
+    @DeleteMapping("/{id}")
+    public ResponseEntity<Integer> delete(@PathVariable("id") Long id) {
+        int result = rawUsageService.delete(id);
+        return ResponseEntity.ok(result);
+    }
+
+}
\ 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
new file mode 100644
index 0000000..56e7dac
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java
@@ -0,0 +1,204 @@
+package com.mes.rawusage.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@TableName("raw_usage")
+@ApiModel(value = "RawUsage", description = " ")
+public class RawUsage implements Serializable{
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *   
+     */
+    @ApiModelProperty(" ")
+    private Long id;
+
+    /**
+     *  鐜荤拑绫诲瀷
+     */
+    @ApiModelProperty("鐜荤拑绫诲瀷")
+    private String rawType;
+
+    /**
+     *  瀹藉害
+     */
+    @ApiModelProperty("瀹藉害")
+    private Float rawWidth;
+
+    /**
+     *  楂樺害
+     */
+    @ApiModelProperty("楂樺害")
+    private Float rawHeight;
+
+    /**
+     *  鍘氬害
+     */
+    @ApiModelProperty("鍘氬害")
+    private Float rawThickness;
+
+    /**
+     *  鐘舵��
+     */
+    @ApiModelProperty("鐘舵��")
+    private String state;
+
+    /**
+     *  棰滆壊
+     */
+    @ApiModelProperty("棰滆壊")
+    private String color;
+
+    /**
+     *  鎬绘暟閲�
+     */
+    @ApiModelProperty("鎬绘暟閲�")
+    private Integer pieces;
+
+    /**
+     *  鍓╀綑鏁伴噺
+     */
+    @ApiModelProperty("鍓╀綑鏁伴噺")
+    private Integer leftPieces;
+
+    /**
+     *  鐗╂枡缂栫爜
+     */
+    @ApiModelProperty("鐗╂枡缂栫爜")
+    private String qrcode;
+
+    /**
+     *  鍒涘缓鏃堕棿
+     */
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    private Date createTime;
+
+    /**
+     *  鐢熶骇鏃ユ湡
+     */
+    @ApiModelProperty("鐢熶骇鏃ユ湡")
+    private Date productionTime;
+
+    /**
+     *  鎵规鍙�
+     */
+    @ApiModelProperty("鎵规鍙�")
+    private String batchId;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getRawType() {
+        return rawType;
+    }
+
+    public void setRawType(String rawType) {
+        this.rawType = rawType;
+    }
+
+    public Float getRawWidth() {
+        return rawWidth;
+    }
+
+    public void setRawWidth(Float rawWidth) {
+        this.rawWidth = rawWidth;
+    }
+
+    public Float getRawHeight() {
+        return rawHeight;
+    }
+
+    public void setRawHeight(Float rawHeight) {
+        this.rawHeight = rawHeight;
+    }
+
+    public Float getRawThickness() {
+        return rawThickness;
+    }
+
+    public void setRawThickness(Float rawThickness) {
+        this.rawThickness = rawThickness;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getColor() {
+        return color;
+    }
+
+    public void setColor(String color) {
+        this.color = color;
+    }
+
+    public Integer getPieces() {
+        return pieces;
+    }
+
+    public void setPieces(Integer pieces) {
+        this.pieces = pieces;
+    }
+
+    public Integer getLeftPieces() {
+        return leftPieces;
+    }
+
+    public void setLeftPieces(Integer leftPieces) {
+        this.leftPieces = leftPieces;
+    }
+
+    public String getQrcode() {
+        return qrcode;
+    }
+
+    public void setQrcode(String qrcode) {
+        this.qrcode = qrcode;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getProductionTime() {
+        return productionTime;
+    }
+
+    public void setProductionTime(Date productionTime) {
+        this.productionTime = productionTime;
+    }
+
+    public String getBatchId() {
+        return batchId;
+    }
+
+    public void setBatchId(String batchId) {
+        this.batchId = batchId;
+    }
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java
new file mode 100644
index 0000000..513aff2
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java
@@ -0,0 +1,16 @@
+package com.mes.rawusage.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.rawusage.entity.RawUsage;
+import org.apache.ibatis.annotations.Mapper;
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ *
+ */
+@Mapper
+public interface RawUsageMapper extends BaseMapper<RawUsage> {
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml
new file mode 100644
index 0000000..e276227
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.rawusage.mapper.RawUsageMapper">
+
+</mapper>
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
new file mode 100644
index 0000000..df9ec60
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java
@@ -0,0 +1,23 @@
+package com.mes.rawusage.service;
+
+import com.mes.rawusage.entity.RawUsage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+public interface RawUsageService extends IService<RawUsage> {
+
+    List<RawUsage> findList(RawUsage params);
+
+    RawUsage findById(Long id);
+
+    boolean insert(RawUsage rawUsage);
+
+    boolean update(RawUsage rawUsage);
+
+    int delete(Long id);
+
+}
\ 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
new file mode 100644
index 0000000..80c43f5
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java
@@ -0,0 +1,49 @@
+package com.mes.rawusage.service.impl;
+
+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.rawusage.mapper.RawUsageMapper;
+import com.mes.rawusage.entity.RawUsage;
+import com.mes.rawusage.service.RawUsageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Service
+public class RawUsageServiceImpl extends ServiceImpl<RawUsageMapper, RawUsage> implements RawUsageService {
+
+    @Autowired
+    private RawUsageMapper rawUsageMapper;
+
+    @Override
+    public List<RawUsage> findList(RawUsage params){
+        LambdaQueryWrapper<RawUsage> query = Wrappers.lambdaQuery(RawUsage.class);
+        return rawUsageMapper.selectList(query);
+    }
+
+    @Override
+    public RawUsage findById(Long id) {
+        return rawUsageMapper.selectById(id);
+    }
+
+    @Override
+    public boolean insert(RawUsage rawUsage) {
+        return save(rawUsage);
+    }
+
+    @Override
+    public boolean update(RawUsage rawUsage) {
+        return updateById(rawUsage);
+    }
+
+    @Override
+    public int delete(Long id) {
+        return rawUsageMapper.deleteById(id);
+    }
+
+}
\ 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
new file mode 100644
index 0000000..9d6c6dd
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java
@@ -0,0 +1,101 @@
+package com.mes.shelfrack.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.web.bind.annotation.*;
+import com.mes.shelfrack.entity.ShelfRack;
+import com.mes.shelfrack.service.ShelfRackService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import java.util.List;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@RestController
+@RequestMapping("/api/shelfRack")
+@Api(tags = " 鎺у埗鍣�")
+public class ShelfRackController {
+
+    @Autowired
+    private ShelfRackService shelfRackService;
+
+    /**
+     * 鍒楄〃鏌ヨ
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "鍒楄〃鏌ヨ",notes = "鍒楄〃鏌ヨ",produces = "application/json")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @PostMapping("/findList")
+    public ResponseEntity<List<ShelfRack>> findList(@RequestBody ShelfRack params) {
+        List<ShelfRack> result = shelfRackService.findList(params);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ", notes = "鏌ヨ璇︽儏")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @GetMapping("/{id}")
+    public ResponseEntity<ShelfRack> findById(@PathVariable("id") Long id) {
+        ShelfRack shelfRack = shelfRackService.findById(id);
+        return ResponseEntity.ok(shelfRack);
+    }
+
+    /**
+     * 鏂板
+     *
+     * @param shelfRack
+     * @return
+     */
+    @ApiOperation(value = "鏂板", notes = "鏂板鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PostMapping
+    public ResponseEntity<Boolean> insert( @RequestBody ShelfRack shelfRack) {
+        boolean result = shelfRackService.insert(shelfRack);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 淇敼
+     *
+     * @param shelfRack
+     * @return
+     */
+    @ApiOperation(value = "淇敼", notes = "淇敼鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PutMapping
+    public ResponseEntity<Boolean> update( @RequestBody ShelfRack shelfRack) {
+        boolean result = shelfRackService.update(shelfRack);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鍒犻櫎", notes = "鍒犻櫎鏁版嵁")
+    @DeleteMapping("/{id}")
+    public ResponseEntity<Integer> delete(@PathVariable("id") Long id) {
+        int result = shelfRackService.delete(id);
+        return ResponseEntity.ok(result);
+    }
+
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..b93003e
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java
@@ -0,0 +1,106 @@
+package com.mes.shelfrack.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@TableName("shelf_rack")
+@ApiModel(value = "ShelfRack", description = " ")
+public class ShelfRack implements Serializable{
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *   
+     */
+    @ApiModelProperty(" ")
+    private Long id;
+
+    /**
+     *  鏋跺瓙缂栧彿
+     */
+    @ApiModelProperty("鏋跺瓙缂栧彿")
+    private String number;
+
+    /**
+     *  宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty("宸ヤ綔鐘舵��")
+    private String state;
+
+    /**
+     *  鍖呭彿缂栧彿
+     */
+    @ApiModelProperty("鍖呭彿缂栧彿")
+    private Long rawPackageId;
+
+    /**
+     *  淇敼鏃堕棿
+     */
+    @ApiModelProperty("淇敼鏃堕棿")
+    private Date modTime;
+
+    /**
+     *  鍚敤鐘舵��
+     */
+    @ApiModelProperty("鍚敤鐘舵��")
+    private String enableState;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getNumber() {
+        return number;
+    }
+
+    public void setNumber(String number) {
+        this.number = number;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public Long getRawPackageId() {
+        return rawPackageId;
+    }
+
+    public void setRawPackageId(Long rawPackageId) {
+        this.rawPackageId = rawPackageId;
+    }
+
+    public Date getModTime() {
+        return modTime;
+    }
+
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    public String getEnableState() {
+        return enableState;
+    }
+
+    public void setEnableState(String enableState) {
+        this.enableState = enableState;
+    }
+
+}
\ 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
new file mode 100644
index 0000000..3570a5a
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java
@@ -0,0 +1,16 @@
+package com.mes.shelfrack.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.shelfrack.entity.ShelfRack;
+import org.apache.ibatis.annotations.Mapper;
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ *
+ */
+@Mapper
+public interface ShelfRackMapper extends BaseMapper<ShelfRack> {
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml
new file mode 100644
index 0000000..719ef59
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.shelfrack.mapper.ShelfRackMapper">
+
+</mapper>
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
new file mode 100644
index 0000000..4985adf
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java
@@ -0,0 +1,23 @@
+package com.mes.shelfrack.service;
+
+import com.mes.shelfrack.entity.ShelfRack;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+public interface ShelfRackService extends IService<ShelfRack> {
+
+    List<ShelfRack> findList(ShelfRack params);
+
+    ShelfRack findById(Long id);
+
+    boolean insert(ShelfRack shelfRack);
+
+    boolean update(ShelfRack shelfRack);
+
+    int delete(Long id);
+
+}
\ 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
new file mode 100644
index 0000000..e8771e0
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java
@@ -0,0 +1,49 @@
+package com.mes.shelfrack.service.impl;
+
+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.shelfrack.mapper.ShelfRackMapper;
+import com.mes.shelfrack.entity.ShelfRack;
+import com.mes.shelfrack.service.ShelfRackService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Service
+public class ShelfRackServiceImpl extends ServiceImpl<ShelfRackMapper, ShelfRack> implements ShelfRackService {
+
+    @Autowired
+    private ShelfRackMapper shelfRackMapper;
+
+    @Override
+    public List<ShelfRack> findList(ShelfRack params){
+        LambdaQueryWrapper<ShelfRack> query = Wrappers.lambdaQuery(ShelfRack.class);
+        return shelfRackMapper.selectList(query);
+    }
+
+    @Override
+    public ShelfRack findById(Long id) {
+        return shelfRackMapper.selectById(id);
+    }
+
+    @Override
+    public boolean insert(ShelfRack shelfRack) {
+        return save(shelfRack);
+    }
+
+    @Override
+    public boolean update(ShelfRack shelfRack) {
+        return updateById(shelfRack);
+    }
+
+    @Override
+    public int delete(Long id) {
+        return shelfRackMapper.deleteById(id);
+    }
+
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..16574db
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java
@@ -0,0 +1,101 @@
+package com.mes.storagetask.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.web.bind.annotation.*;
+import com.mes.storagetask.entity.StorageTask;
+import com.mes.storagetask.service.StorageTaskService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import java.util.List;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@RestController
+@RequestMapping("/api/storageTask")
+@Api(tags = " 鎺у埗鍣�")
+public class StorageTaskController {
+
+    @Autowired
+    private StorageTaskService storageTaskService;
+
+    /**
+     * 鍒楄〃鏌ヨ
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "鍒楄〃鏌ヨ",notes = "鍒楄〃鏌ヨ",produces = "application/json")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @PostMapping("/findList")
+    public ResponseEntity<List<StorageTask>> findList(@RequestBody StorageTask params) {
+        List<StorageTask> result = storageTaskService.findList(params);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ", notes = "鏌ヨ璇︽儏")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @GetMapping("/{id}")
+    public ResponseEntity<StorageTask> findById(@PathVariable("id") Long id) {
+        StorageTask storageTask = storageTaskService.findById(id);
+        return ResponseEntity.ok(storageTask);
+    }
+
+    /**
+     * 鏂板
+     *
+     * @param storageTask
+     * @return
+     */
+    @ApiOperation(value = "鏂板", notes = "鏂板鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PostMapping
+    public ResponseEntity<Boolean> insert( @RequestBody StorageTask storageTask) {
+        boolean result = storageTaskService.insert(storageTask);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 淇敼
+     *
+     * @param storageTask
+     * @return
+     */
+    @ApiOperation(value = "淇敼", notes = "淇敼鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PutMapping
+    public ResponseEntity<Boolean> update( @RequestBody StorageTask storageTask) {
+        boolean result = storageTaskService.update(storageTask);
+        return ResponseEntity.ok(result);
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鍒犻櫎", notes = "鍒犻櫎鏁版嵁")
+    @DeleteMapping("/{id}")
+    public ResponseEntity<Integer> delete(@PathVariable("id") Long id) {
+        int result = storageTaskService.delete(id);
+        return ResponseEntity.ok(result);
+    }
+
+}
\ 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
new file mode 100644
index 0000000..76da660
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java
@@ -0,0 +1,134 @@
+package com.mes.storagetask.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@TableName("storage_task")
+@ApiModel(value = "StorageTask", description = " ")
+public class StorageTask implements Serializable{
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *   
+     */
+    @ApiModelProperty(" ")
+    private Long id;
+
+    /**
+     *  浠诲姟绫诲瀷
+     */
+    @ApiModelProperty("浠诲姟绫诲瀷")
+    private String taskType;
+
+    /**
+     *  宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty("宸ヤ綔鐘舵��")
+    private String taskState;
+
+    /**
+     *  浠撳偍鏋跺彿
+     */
+    @ApiModelProperty("浠撳偍鏋跺彿")
+    private String shelfRack;
+
+    /**
+     *  涓婄墖浣嶇紪鍙�
+     */
+    @ApiModelProperty("涓婄墖浣嶇紪鍙�")
+    private String loadRack;
+
+    /**
+     *  绾胯矾
+     */
+    @ApiModelProperty("绾胯矾")
+    private Integer routeGroup;
+
+    /**
+     *  鍒涘缓鏃堕棿
+     */
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    private Date startTime;
+
+    /**
+     *  瀹屾垚鏃堕棿
+     */
+    @ApiModelProperty("瀹屾垚鏃堕棿")
+    private Date finishTime;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getTaskType() {
+        return taskType;
+    }
+
+    public void setTaskType(String taskType) {
+        this.taskType = taskType;
+    }
+
+    public String getTaskState() {
+        return taskState;
+    }
+
+    public void setTaskState(String taskState) {
+        this.taskState = taskState;
+    }
+
+    public String getShelfRack() {
+        return shelfRack;
+    }
+
+    public void setShelfRack(String shelfRack) {
+        this.shelfRack = shelfRack;
+    }
+
+    public String getLoadRack() {
+        return loadRack;
+    }
+
+    public void setLoadRack(String loadRack) {
+        this.loadRack = loadRack;
+    }
+
+    public Integer getRouteGroup() {
+        return routeGroup;
+    }
+
+    public void setRouteGroup(Integer routeGroup) {
+        this.routeGroup = routeGroup;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getFinishTime() {
+        return finishTime;
+    }
+
+    public void setFinishTime(Date finishTime) {
+        this.finishTime = finishTime;
+    }
+
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..43a8507
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java
@@ -0,0 +1,16 @@
+package com.mes.storagetask.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.storagetask.entity.StorageTask;
+import org.apache.ibatis.annotations.Mapper;
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ *
+ */
+@Mapper
+public interface StorageTaskMapper extends BaseMapper<StorageTask> {
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml
new file mode 100644
index 0000000..69ad537
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.storagetask.mapper.StorageTaskMapper">
+
+</mapper>
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
new file mode 100644
index 0000000..db70800
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java
@@ -0,0 +1,23 @@
+package com.mes.storagetask.service;
+
+import com.mes.storagetask.entity.StorageTask;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+public interface StorageTaskService extends IService<StorageTask> {
+
+    List<StorageTask> findList(StorageTask params);
+
+    StorageTask findById(Long id);
+
+    boolean insert(StorageTask storageTask);
+
+    boolean update(StorageTask storageTask);
+
+    int delete(Long id);
+
+}
\ 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
new file mode 100644
index 0000000..0ef7807
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java
@@ -0,0 +1,49 @@
+package com.mes.storagetask.service.impl;
+
+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.storagetask.mapper.StorageTaskMapper;
+import com.mes.storagetask.entity.StorageTask;
+import com.mes.storagetask.service.StorageTaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Service
+public class StorageTaskServiceImpl extends ServiceImpl<StorageTaskMapper, StorageTask> implements StorageTaskService {
+
+    @Autowired
+    private StorageTaskMapper storageTaskMapper;
+
+    @Override
+    public List<StorageTask> findList(StorageTask params){
+        LambdaQueryWrapper<StorageTask> query = Wrappers.lambdaQuery(StorageTask.class);
+        return storageTaskMapper.selectList(query);
+    }
+
+    @Override
+    public StorageTask findById(Long id) {
+        return storageTaskMapper.selectById(id);
+    }
+
+    @Override
+    public boolean insert(StorageTask storageTask) {
+        return save(storageTask);
+    }
+
+    @Override
+    public boolean update(StorageTask storageTask) {
+        return updateById(storageTask);
+    }
+
+    @Override
+    public int delete(Long id) {
+        return storageTaskMapper.deleteById(id);
+    }
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..3097382
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..0c3ff07
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml
@@ -0,0 +1,30 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+        pp:
+          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.150:8848
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
new file mode 100644
index 0000000..5a26257
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
@@ -0,0 +1,16 @@
+server:
+  port: 8086
+
+spring:
+  profiles:
+    active: prod
+  application:
+    name: glassStorage
+
+
+mybatis-plus:
+  mapper-locations: classpath*:mapper/*.xml
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
index 40f9793..cccffe2 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -82,12 +82,13 @@
         // 浠� requestData 涓幏鍙栦紶鍏ョ殑 flowCardId
         String flowCardId = (String) requestData.get("flowCardId");
         int workstationId = (int) requestData.get("workstationId");
+        int layer = (int) requestData.get("layer");
 
         // 鏌ヨ瀵瑰簲 flowCardId 鐨勭幓鐠冧俊鎭�绘暟閲�
-        int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId);
-
-        // 鏇存柊 down_workstation 琛ㄤ腑鐨勬�绘暟閲�
-        downWorkstationService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, workstationId);
+        int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId,layer);
+         int artificialnumber=0;
+    // 鏇存柊 down_workstation 琛ㄤ腑鐨勬�绘暟閲�
+        downWorkstationService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, workstationId,artificialnumber);
 
         // 鏋勫缓鍝嶅簲鏁版嵁
         Map<String, Object> responseData = new HashMap<>();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
index 8a4ba9d..391dadd 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
@@ -53,7 +53,7 @@
      * @param workstationId
      * @return 鏇存柊鏋跺瓙鍜屾暟閲�
      */
-    int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId);
+    int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId,int artificialnumber);
 
 
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
index a602f88..2e6fb71 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -136,10 +136,11 @@
 
 
     @Override
-    public int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId) {
+    public int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId,int artificialnumber) {
         UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
         updateWrapper.set("total_quantity", glassInfoCount)
                 .set("flow_card_id", flowCardId)
+                .set("artificial_number", artificialnumber)
                 .eq("workstation_id", workstationId);
 
         return baseMapper.update(new DownWorkstation(), updateWrapper);
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
index 88effb1..90e8b72 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
@@ -59,13 +59,13 @@
         if (Details.size() > 0) {
             DownStorageCageDetails downStorageCageDetails = Details.get(0);
             String flowCardId = downStorageCageDetails.getFlowCardId();
-            int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId);
+            int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId,1);
             DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, null));
             List<DownWorkstation> downWorkstations = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
                     .eq(DownWorkstation::getEnableState, 1));
 
             if (!downWorkstations.stream().anyMatch(workstation -> workstation.getFlowCardId().equals(flowCardId))) {
-                downWorkstationService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, downWorkstation.getWorkstationId());
+                downWorkstationService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, downWorkstation.getWorkstationId(),0);
             }
 
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
index ea5505e..3fed3fc 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: dev
+    active: prod
   application:
     name: unLoadGlass
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
index ef3e9f5..1ea38e1 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
@@ -98,14 +98,14 @@
     @Test
     public void testupdateFlowCardIdAndCount() {
         log.info("缁戝畾娴佺▼鍗″彿鍜屾暟閲�");
-        downWorkstationServiceImpl.updateFlowCardIdAndCount("1", 1, 1);
+        downWorkstationServiceImpl.updateFlowCardIdAndCount("1", 1, 1,0);
 
     }
 
     @Test
     public void testplc() {
         log.info("娴嬭瘯");
-        glassInfoServiceImpl.getGlassInfoCountByFlowCardId("NG24030702A01");
+        glassInfoServiceImpl.getGlassInfoCountByFlowCardId("NG24030702A01",1);
 
     }
 
diff --git a/hangzhoumesParent/moduleService/pom.xml b/hangzhoumesParent/moduleService/pom.xml
index 005b896..55ea5f6 100644
--- a/hangzhoumesParent/moduleService/pom.xml
+++ b/hangzhoumesParent/moduleService/pom.xml
@@ -18,6 +18,7 @@
         <module>LoadGlassModule</module>
         <module>TemperingGlassModule</module>
         <module>UnLoadGlassModule</module>
+        <module>GlassStorageModule</module>
     </modules>
 
     <properties>

--
Gitblit v1.8.0