From c74ab555c190b1ada24037e1fee2a714303b4aa7 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期四, 17 四月 2025 16:09:14 +0800
Subject: [PATCH] 库存查询余料或者原片修改

---
 north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml                           |   61 ++++++++++++++++++++
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeProject.vue            |    4 
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue        |    5 +
 north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java |    7 +-
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java         |    4 +
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue         |   24 +++++++-
 north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java       |   18 +++++-
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/CheckInventory.vue        |   40 +++++-------
 8 files changed, 128 insertions(+), 35 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeProject.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeProject.vue
index ec9ff1a..83a946c 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeProject.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeProject.vue
@@ -33,9 +33,9 @@
 
 //鑾峰彇GlassInventory鐨勫��(鏌ヨ搴撳瓨)
 const sendDataGlassInventory = ref()
-const handleInventoyData = (selectedLabel1,selectedLabel2) => {
+const handleInventoyData = (selectedLabel1,selectedLabel2,type) => {
   sendDataGlassInventory.value = {
-    selectedLabel1, selectedLabel2
+    selectedLabel1, selectedLabel2,type
   };
 };
 
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/CheckInventory.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/CheckInventory.vue
index 75787a0..855da7a 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/CheckInventory.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/CheckInventory.vue
@@ -1,6 +1,7 @@
 <script setup>
 import {defineEmits, ref} from "vue";
 
+
 const value1 = ref('')
 const value2 = ref('')
 
@@ -43,15 +44,20 @@
 
 const emit = defineEmits(['send-data-inventory',]);
 const props = defineProps({
-  closeDialog: Function
+  closeDialog: Function,
+  thickNess:null,
+  model:null
 });
 
+value1.value=props.thickNess
+value2.value=props.model
+
 const CheckInventory = () => {
-  const selectedLabel1 = options1.find((option) => option.value === value1.value)?.label || '';
-  const selectedLabel2 = options2.find((option) => option.value === value2.value)?.label || '';
+  const selectedLabel1 = value1.value;
+  const selectedLabel2 = value2.value;
   // 鍒ゆ柇涓や釜鍊兼槸鍚﹂兘琚�夋嫨浜嗭紝濡傛灉鏈変竴涓负绌哄瓧绗︿覆锛屽垯鎻愮ず骞惰繑鍥烇紝涓嶆墽琛屽悗缁搷浣�
-  if (!selectedLabel1 ||!selectedLabel2) {
-    window.alert('璇烽�夋嫨鐩稿叧閫夐」');
+  if (selectedLabel1==="" || selectedLabel2==="") {
+    window.alert('璇疯緭鍏�');
     return;
   }
   props.closeDialog(1);
@@ -63,27 +69,15 @@
 <template>
   <div id="box">
     <div>
-      <span>鍘氬害锛坢m锛夛細</span>
-      <el-select v-model="value1" clearable style="width: 240px">
-        <el-option
-            v-for="item in options1"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-        />
-      </el-select>
+      <span>鍘氬害(mm)锛�</span>
+      <el-input v-model="value1"  style="width: 140px"></el-input>
     </div>
 
     <div style="margin-top: 30px">
-    <span>鐜荤拑绫诲瀷锛�</span>
-      <el-select v-model="value2"  clearable  style="width: 240px; margin-left: 23px">
-        <el-option
-            v-for="item in options2"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-        />
-      </el-select>
+    <span>鐜荤拑绫诲瀷  锛�</span>
+      <el-input v-model="value2" style="width: 140px">
+
+      </el-input>
     </div>
 
     <div style="float: right; margin:-55px 35px 0 0;">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue
index 7538dd7..5c059c9 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue
@@ -158,9 +158,10 @@
 const thickness = ref(route.params.thickNess);
 const model = ref(route.params.model);
 let projectNo = ref(null);
+let type = ref(1);
 
 const selectMaterialStore = async () =>{
-  request.post(`/glassOptimize/materialStore/${thickness.value}/${model.value}/${projectNo}`).then((res) => {
+  request.get(`/glassOptimize/materialStore/${thickness.value}/${model.value}/${projectNo}?type=${type.value}`).then((res) => {
     if (Number(res.code) === 200) {
       const rawData = res.data.data;
       const edgeTrimming = res.data.edgeTrimming;
@@ -240,6 +241,7 @@
   if (newInventoryData) {
     thickness.value = newInventoryData.selectedLabel1;
     model.value = newInventoryData.selectedLabel2;
+    type.value=newInventoryData.type
     // 鐢变簬 thickness 鍜� model 鐨勫�兼敼鍙樹簡锛屾洿鏂拌〃鏍硷紝璋冪敤 selectMaterialStore 閲嶆柊鑾峰彇鏁版嵁
     selectMaterialStore();
   }
@@ -262,6 +264,7 @@
     properties: {
       selectedLabel1: { type: String },
       selectedLabel2: { type: String },
+      type: { type: String }
     }
   }
 });
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
index 2e8556d..c61b702 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
@@ -354,6 +354,9 @@
   await emit('changeDialog', command)
 }
 
+let originalFilm=ref(true)
+let surplusMaterial=ref(false)
+
 //浼樺寲璁$畻
 const dialogVisible = ref({});
 const openDialog = (index) => {
@@ -378,6 +381,8 @@
 //宸ョ▼鍙�
 const projectNo = ref(route.params.projectNo);
 const projectName = ref('');
+const thickNess = ref(route.params.thickNess);
+const model = ref(route.params.model);
 onBeforeUnmount(() => {
   localStorage.setItem('projectNo', projectNo.value);
 });
@@ -502,7 +507,17 @@
 
 //涓浆绔欐帴鍙桟heckInventory鐨勫�硷紙鏌ヨ搴撳瓨锛�
 const handleInventory = (selectedLabel1, selectedLabel2) => {
-  emit('send-inventory-to-op', selectedLabel1, selectedLabel2);
+  let type=0;
+  if(originalFilm.value===true&&surplusMaterial.value===true){
+    type=3
+  }else if(originalFilm.value===true&&surplusMaterial.value===false){
+    type=1
+  }else if(originalFilm.value===false&&surplusMaterial.value===true){
+    type=2
+  }else{
+    type=1
+  }
+  emit('send-inventory-to-op', selectedLabel1, selectedLabel2,type);
 }
 
 </script>
@@ -529,10 +544,13 @@
         <span>宸ョ▼缂栧彿锛�</span>
         <el-input readonly placeholder="" style="width: 150px" v-model="projectNo"></el-input>&nbsp;
         <span>宸ョ▼鍚嶇О锛�</span>
-        <el-input readonly placeholder="" style="width: 150px; margin-right: 340px;" v-model="projectName" ></el-input>
+        <el-input readonly placeholder="" style="width: 150px; margin-right: 140px;" v-model="projectName" ></el-input>
+        鍘熺墖<el-checkbox v-model="originalFilm" ></el-checkbox>
+        浣欐枡<el-checkbox v-model="surplusMaterial" ></el-checkbox>&nbsp;&nbsp;
         <el-button id="checkinventory" type="primary" @click="openDialog(1)">鏌ヨ搴撳瓨</el-button>
         <el-dialog v-model="dialogVisible[1]" title="鏌ヨ搴撳瓨" destroy-on-close style="width: 35%;height:35%;">
-          <check-inventory :closeDialog="closeDialog" @send-data-inventory="handleInventory"/>
+          <check-inventory :closeDialog="closeDialog" :thickNess="thickNess" :model="model"
+                           @send-data-inventory="handleInventory"/>
         </el-dialog>
         <el-button id="button" type="primary" @click="openDialog(2)">璁剧疆纾ㄩ噺</el-button>
         <el-dialog v-model="dialogVisible[2]" title="璁剧疆纾ㄩ噺锛坢m锛�" destroy-on-close
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
index 3f7cf07..2119f78 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
@@ -49,11 +49,12 @@
 
     //搴撳瓨淇℃伅
     @ApiOperation("搴撳瓨淇℃伅鎺ュ彛")
-    @PostMapping  ("/materialStore/{thickness}/{model}/{projectNumber}")
+    @GetMapping  ("/materialStore/{thickness}/{model}/{projectNumber}")
     public Result materialStore(
             @PathVariable  String thickness,
-            @PathVariable  String model,@PathVariable  String projectNumber ){
-        return Result.seccess(glassOptimizeService.materialStoreSv(thickness,model,projectNumber));
+            @PathVariable  String model,@PathVariable  String projectNumber,
+            @RequestParam(name = "type", required = false) Integer type ){
+        return Result.seccess(glassOptimizeService.materialStoreSv(thickness,model,projectNumber,type));
     }
 
 
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
index d733f74..1b1e97d 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
@@ -32,6 +32,10 @@
     //搴撳瓨淇℃伅
     List<Map<String, Object>>  materialStoreMp(String thickness, String model);
 
+    List<Map<String, Object>>  surplusMaterialsMp(String thickness, String model);
+
+    List<Map<String, Object>>  materialStoreSurplusMp(String thickness, String model);
+
     List<Map<String, Object>>  materialStoreOptimizeUse(String projectNumber);
 
     //宸ュ崟绠$悊鏌ヨ鏈浆宸ュ崟鏁版嵁
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
index eaf3a3d..81ffb3e 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
@@ -157,14 +157,26 @@
     }
 
     //搴撳瓨淇℃伅
-    public Map<String, Object> materialStoreSv(String thickness, String model, String projectNumber) {
+    public Map<String, Object> materialStoreSv(String thickness, String model, String projectNumber,Integer type) {
         Map<String, Object> stringObjectMap = glassOptimizeMapper.selectProjectCount(projectNumber);
         Map<String, Object> map = new HashMap<>();
         if(Integer.parseInt(stringObjectMap.get("state").toString())<10){
-            map.put("data", glassOptimizeMapper.materialStoreMp(thickness,model));
+            if(type==1){
+                map.put("data", glassOptimizeMapper.materialStoreMp(thickness,model));
+            }else if(type==2){
+                map.put("data", glassOptimizeMapper.surplusMaterialsMp(thickness,model));
+            }else{
+                map.put("data", glassOptimizeMapper.materialStoreSurplusMp(thickness,model));
+            }
             map.put("edgeTrimming", glassOptimizeMapper.getEdgeTrimming());
         }else if(Integer.parseInt(stringObjectMap.get("state").toString())==10){
-            map.put("data", glassOptimizeMapper.materialStoreMp(thickness,model));
+            if(type==1){
+                map.put("data", glassOptimizeMapper.materialStoreMp(thickness,model));
+            }else if(type==2){
+                map.put("data", glassOptimizeMapper.surplusMaterialsMp(thickness,model));
+            }else{
+                map.put("data", glassOptimizeMapper.materialStoreSurplusMp(thickness,model));
+            }
             map.put("edgeTrimming", glassOptimizeMapper.getEdgeTrimming());
         }else{
             map.put("data", glassOptimizeMapper.materialStoreOptimizeUse(projectNumber));
diff --git a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
index e26a46c..e449f52 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -286,6 +286,67 @@
             `i`.`available_quantity` DESC ;
     </select>
 
+    <!--浣欐枡淇℃伅-->
+    <select id="surplusMaterialsMp">
+        SELECT
+            i.id AS id,
+            '' AS producer,
+            i.quantity AS available_quantity,
+            i.width,
+            i.height,
+            i.thickness,
+            i.colour AS name,
+            i.colour
+        FROM  mm.surplus_materials as i
+        WHERE
+            i.quantity>0 and i.colour=#{model} and i.thickness=#{thickness}
+        ORDER BY
+            i.quantity DESC ;
+    </select>
+
+    <!--搴撳瓨浣欐枡淇℃伅-->
+    <select id="materialStoreSurplusMp">
+        (SELECT
+            i.id AS id,
+            i.producer AS producer,
+            i.available_quantity-i.plan_quantity AS available_quantity,
+            JSON_EXTRACT(s.json, '$.width') AS width,
+            JSON_EXTRACT(s.json, '$.height') AS height,
+            JSON_EXTRACT(s.json, '$.thickness') AS thickness,
+            JSON_EXTRACT(s.json, '$.name') AS name,
+            JSON_EXTRACT(s.json, '$.model') AS model
+        FROM  mm.material_inventory as `i`
+                  LEFT JOIN  mm.material_store  as s ON (
+            (
+                `i`.`material_code` = `s`.`id`
+                )
+            )
+        WHERE
+            (
+                    (`s`.`type` = '鍘熺墖')
+                    AND (`i`.`optimize_state` = 1)
+                    AND (`i`.`available_quantity`-i.plan_quantity > 0)
+                    AND JSON_EXTRACT(s.json, '$.thickness') = #{thickness}
+                    AND JSON_EXTRACT(s.json, '$.model') = #{model}
+                )
+        ORDER BY
+            `i`.`available_quantity` DESC) union
+        (SELECT
+            i.id AS id,
+            '' AS producer,
+            i.quantity AS available_quantity,
+            i.width,
+            i.height,
+            i.thickness,
+            i.colour AS name,
+            i.colour
+        FROM  mm.surplus_materials as i
+        WHERE
+            i.quantity>0 and i.colour=#{model} and i.thickness=#{thickness}
+        ORDER BY
+            i.quantity DESC );
+    </select>
+
 
     <select id="materialStoreOptimizeUse">
         select ms.id AS id,

--
Gitblit v1.8.0