From 12878263caa8d18860111d6f6900d495e9d9369c Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期四, 12 十二月 2024 14:40:34 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue                        |    2 
 north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml                           |  137 +++++++-
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue     |   59 ++-
 north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintProject.vue           |    1 
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java              |    6 
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java         |   12 
 north-glass-erp/src/main/java/com/example/erp/entity/pp/FlowCard.java                    |    3 
 north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml                                |  148 ++++++++-
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java       |    1 
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue           |  360 +++++++++++++++--------
 north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java |   31 ++
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue              |   25 +
 north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java       |   53 +++
 north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java            |   31 +
 14 files changed, 668 insertions(+), 201 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue b/north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
index 661bbb9..e18573c 100644
--- a/north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
+++ b/north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
@@ -58,11 +58,9 @@
 data.value.printList = JSON.parse(props.printList)
 let flowCardCount = ''
 onMounted(() => {
-  console.log(printProject)
       if(props.printProject!=null){
         request.post(`/processCard/getSelectPrintProject/${printProject}`).then((res) => {
           if (res.code == 200) {
-            console.log(res.data.data)
             load(res.data.data)
           } else {
             ElMessage.warning(res.msg)
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue
index 9994920..e0bd895 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue
@@ -6,6 +6,20 @@
 import {ref} from "vue";
 import {useI18n} from "vue-i18n";
 
+let projectRow = ref({
+  processId:null,
+  technologyNumber:null
+})
+
+
+const handleProcessIdUpdate = newProcessId => {
+  projectRow.value.processId = newProcessId;
+};
+
+const handleTechnologyNumberUpdate = newTechnologyNumber => {
+  projectRow.value.technologyNumber = newTechnologyNumber;
+};
+
 
 
 </script>
@@ -14,11 +28,16 @@
   <div style="width: 100%; height: 100%;">
 
     <div id="processCard">
-      <process-card/>
+      <process-card :process-id="projectRow.processId===null?null:projectRow.processId"
+                    :technology-number="projectRow.technologyNumber===null?null:projectRow.technologyNumber"
+                    @updateProcessId="handleProcessIdUpdate"
+                    @updateTechnologyNumber="handleTechnologyNumberUpdate"
+      />
     </div>
 
-    <div id="processCard-detail">
-      <process-card-detail/>
+    <div id="processCard-detail" >
+      <process-card-detail :process-id="projectRow.processId===null?null:projectRow.processId"
+                           :technology-number="projectRow.technologyNumber===null?null:projectRow.technologyNumber"/>
     </div>
 
     <div id="project-list">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
index 72b7383..5dedb14 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
@@ -1,25 +1,93 @@
 <script setup>
-import {reactive, ref} from "vue";
+import {onMounted, reactive, ref} from "vue";
 import {useI18n} from "vue-i18n";
 import {Search} from "@element-plus/icons-vue";
 import request from "@/utils/request";
 import deepClone from "@/utils/deepClone";
 import {ElMessage} from "element-plus";
-const { t } = useI18n()
+import useUserInfoStore from "@/stores/userInfo";
+
+const {t} = useI18n()
+const userStore = useUserInfoStore()
+const username = userStore.user.userName
+let rowClickIndex = ref(null)
+
+let props = defineProps({
+  processId: null,
+  technologyNumber: null
+})
+
+//鑶滅郴
+const optionVal = ref()
+//鑶滅郴
+const projectNmae = ref()
+//宸ョ▼缂栧彿涓暟
+let projectId = ref()
+//宸ョ▼缂栧彿
+const Id = ref()
+let oddNumbers = ref()
+
+//瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
+const titleSelectJson = ref({
+  processType: [],
+})
+
+const selectGlassType = () => {
+  //鏌ヨ鑶滅郴
+  request.post(`/glassOptimize/selectGlassType`).then((res) => {
+    if (res.code == 200) {
+      titleSelectJson.value.processType = res.data.data
+    } else {
+      ElMessage.warning(res.msg)
+    }
+  })
+}
+//鏌ヨ鏈�鏂板伐绋嬪彿
+const getProjectId = () => {
+  request.post(`/glassOptimize/getProjectId`).then((res) => {
+    if (res.code == 200) {
+      projectId = res.data.data[0].project_no
+      // 鑾峰彇瀛楃涓茬殑鏈�鍚庝袱浣嶆暟瀛�
+      let maximum = projectId.slice(-2);
+      let lastTwoInteger = parseInt(maximum, 10);
+       // 璁剧疆涓や綅涓嶅琛�0
+      let formattedNumber = (lastTwoInteger + 1).toString().padStart(2, '0');
+      // 鏍煎紡鍖栧綋鍓嶆棩鏈熶负 "yyMMdd"
+      let currentDate = new Date();
+      let formattedDate = currentDate.getFullYear().toString().slice(-2) +
+          (currentDate.getMonth() + 1).toString().padStart(2, '0') +
+          currentDate.getDate().toString().padStart(2, '0');
+
+      // 鎷兼帴鎴愭渶缁堢殑瀛楃涓�
+      oddNumbers.value = 'P' + formattedDate + formattedNumber;
+
+    } else {
+      ElMessage.warning(res.msg)
+    }
+  })
+}
+
+
+onMounted(() => {
+  getProjectId();
+  selectGlassType();
+
+})
+
 const xGrid = ref()
 const gridOptions = reactive({
 
-  height:'100%',
+  height: '100%',
   loading: false,
-  border:  "full",//琛ㄦ牸鍔犺竟妗�
+  border: "full",//琛ㄦ牸鍔犺竟妗�
   keepSource: true,//淇濇寔婧愭暟鎹�
   align: 'center',//鏂囧瓧灞呬腑
-  stripe:true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  stripe: true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true, height: 30, useKey: true},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
   id: 'ProcessCard',
-  scrollX:{enabled: true},
-  scrollY:{ enabled: true ,gt:0},//寮�鍚櫄鎷熸粴鍔�
-  showOverflow:true,
+  scrollX: {enabled: true},
+  scrollY: {enabled: true, gt: 0},//寮�鍚櫄鎷熸粴鍔�
+  showOverflow: true,
   columnConfig: {
     resizable: true,
     useKey: true
@@ -35,156 +103,202 @@
     mode: 'row',
     showStatus: true
   },
-  /*formConfig: {
-    data: {
-      width: '',
-      height: '',
-      quantity: ''
-    },
-    items: [
-      { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } },
-      { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } },
-      { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } },
-      {
-        itemRender: {
-          name: 'VxeButtonGroup',
-          options: [
-            { type: 'submit', content: t('craft.sure'), status: 'primary' },
-            { type: 'reset', content: t('product.msg.reset') }
-          ]
-        }
-      }
-    ]
-  },*/
-  columns:[
-    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
+  columns: [
+
     {type: 'checkbox', fixed: "left", title: t('basicData.check'), width: 80},
-    {field: 'process_id',width: 150, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'technology_number',width: 70, title: '灞�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'TotalFloors',width: 150, title: '鎬诲眰鏁�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'TotalNumber',width: 150, title: '瑙勬牸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'quantity',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'shape',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'glass_child',width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'project', width:150, title: t('order.project'), showOverflow: "ellipsis"},
-    {field: 'area',width: 150, title: t('order.area'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {
+      field: 'process_id',
+      width: 150,
+      title: t('processCard.processId'),
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'technology_number',
+      width: 70,
+      title: '灞�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'TotalFloors',
+      width: 150,
+      title: '鎬诲眰鏁�',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'TotalNumber',
+      width: 150,
+      title: '瑙勬牸',
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'quantity',
+      width: 150,
+      title: t('order.quantity'),
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'shape',
+      width: 150,
+      title: t('order.shape'),
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {
+      field: 'glass_child',
+      width: 150,
+      title: t('order.product'),
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
+    {field: 'project', width: 150, title: t('order.project'), showOverflow: "ellipsis"},
+    {
+      field: 'area',
+      width: 150,
+      title: t('order.area'),
+      filters: [{data: ''}],
+      slots: {filter: 'num1_filter'},
+      sortable: true
+    },
 
 
   ],//琛ㄥご鍙傛暟
-  data:null,//琛ㄦ牸鏁版嵁
+  data: null,//琛ㄦ牸鏁版嵁
 
   toolbarConfig: {
     buttons: [],
-    slots:{
+    slots: {
       buttons: "toolbar_buttons"
     },
   },
 
+
 })
-let emit = defineEmits([
-  'changeDialog'
-])
-//鑶滅郴鍒楄〃
-const optionVal = ref('')
-const options = [
-  {
-    value: '鐧界幓',
-    label: '鐧界幓',
-  },
-  {
-    value: '鐏伴暅',
-    label: '鐏伴暅',
-  },
-  {
-    value: 'Low-e',
-    label: 'Low-e',
-  },
-]
+
+const gridEvents = {
+  cellClick({row}) {
+    rowClickIndex.value = row
+    // Emit 浜嬩欢灏嗘洿鏂板悗鐨勫�间紶閫掔粰鐖剁粍浠�
+    emit('updateProcessId', rowClickIndex.value.process_id);
+    emit('updateTechnologyNumber', rowClickIndex.value.technology_number);
+  }
+}
+const emit = defineEmits(['updateProcessId', 'updateTechnologyNumber']);
+
 
 //灏忓渾鐐瑰崟閫夋
 let radio = ref(1);
 
-const selectFlowCardList = ()=>{
+const selectFlowCardList = () => {
   request.post(`/glassOptimize/getFlowCardList/${optionVal.value}/${radio.value}`).then((res) => {
-    if(res.code==200){
+    if (res.code == 200) {
       xGrid.value.loadData(res.data.data)
-    }else{
+    } else {
       ElMessage.warning(res.msg)
     }
   })
 }
 
+//鍒涘缓宸ョ▼
+const addProject = () => {
+  const $table = xGrid.value
+  if ($table) {
+    const selectRecords = $table.getCheckboxRecords()
+    if (selectRecords.length == 0) {
+      ElMessage.warning(t('reportingWorks.selectProcessCardData'))
+      return;
+    }
 
+    let projectData = ref({
+      projectdetail: selectRecords,
+      userName : username
+    })
+    request.post(`/glassOptimize/addProject/${optionVal.value}/${oddNumbers.value}/${projectNmae.value}`, projectData.value).then((res) => {
+      if (res.code == 200 && res.data === true) {
+        ElMessage.success(t('basicData.msg.saveSuccess'))
+      } else {
+        ElMessage.warning(res.msg)
+      }
+    })
+
+  }
+}
 </script>
 
 <template>
   <div style="width: 100%;height: 110%; margin-top: -36px">
     <h1>娴佺▼鍗″垪琛�
-    <span style="margin-left: 140px;font-size: 14px">宸ョ▼缂栧彿锛�</span>
-    <vxe-input disabled placeholder="" size="small"></vxe-input>&nbsp;
-    <span style="font-size: 14px">宸ョ▼鍚嶇О锛�</span>
-    <vxe-input placeholder="" size="small"></vxe-input>
-      <el-button type="primary" style="margin-left: 20px">鍒涘缓</el-button>
+      <span style="margin-left: 140px;font-size: 14px">宸ョ▼缂栧彿锛�</span>
+<!--      <span>{{oddNumbers}}</span>-->
+      <el-input disabled v-model="oddNumbers" style="width: 100px"></el-input>
+<!--      <vxe-input :disabled="isDisabled" placeholder="" v-model="oddNumbers" size="small" style="color:black;"></vxe-input>&nbsp;-->
+      <span style="font-size: 14px">宸ョ▼鍚嶇О锛�</span>
+      <vxe-input placeholder="" v-model="projectNmae" size="small"></vxe-input>
+      <el-button style="margin-left: 20px" type="primary" @click="addProject">鍒涘缓</el-button>
     </h1>
     <vxe-grid
-          size="small"
-          @filter-change="filterChanged"
-          height="100%"
-          class="mytable-scrollbar"
-          ref="xGrid"
-          v-bind="gridOptions"
-          v-on="gridEvents"
-      >
-        <template #num2_filter="{ column, $panel }">
-          <div>
-            <div v-for="(option, index) in column.filters" :key="index">
-              <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')"  @change="changeFilterEvent($event, option, $panel)">
-                <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option>
-                <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option>
-              </vxe-select>
-            </div>
+        ref="xGrid"
+        class="mytable-scrollbar"
+        height="100%"
+        size="small"
+        v-bind="gridOptions"
+        v-on="gridEvents"
+        @filter-change="filterChanged"
+    >
+      <template #num2_filter="{ column, $panel }">
+        <div>
+          <div v-for="(option, index) in column.filters" :key="index">
+            <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')"
+                        @change="changeFilterEvent($event, option, $panel)">
+              <vxe-option :label="$t('basicData.unchecked')" value="0"></vxe-option>
+              <vxe-option :label="$t('basicData.selected')" value="1"></vxe-option>
+            </vxe-select>
           </div>
-        </template>
+        </div>
+      </template>
 
-        <template #num1_filter="{ column, $panel }">
-          <div>
-            <div v-for="(option, index) in column.filters" :key="index">
-              <input
+      <template #num1_filter="{ column, $panel }">
+        <div>
+          <div v-for="(option, index) in column.filters" :key="index">
+            <input
 
-                  type="type"
-                  v-model="option.data"
-                  @keyup.enter.native="$panel.confirmFilter()"
-                  @input="changeFilterEvent($event, option, $panel)"/>
-            </div>
+                v-model="option.data"
+                type="type"
+                @input="changeFilterEvent($event, option, $panel)"
+                @keyup.enter.native="$panel.confirmFilter()"/>
           </div>
-        </template>
+        </div>
+      </template>
 
-        <template #toolbar_buttons>
-          <h1>鑶滅郴绛涢�夛細</h1>
-          <el-select
-              placeholder="閫夋嫨鑶滅郴"
-              style="margin-left:10px; width: 170px "
-              ref="getSelect"
-              v-model="optionVal"
-              clearable
-              class="m-2"
-              @change="getWorkOrder"
-          >
-
-            <el-option
-                v-for="item in options"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-            />
-          </el-select>
-          <el-button type="primary" :icon="Search" style="margin-left: 20px" @click="selectFlowCardList">鏌ヨ</el-button>
-          <vxe-radio-group v-model="radio" style="margin-left: 20px">
-            <vxe-radio label="1" content="鍏ㄩ儴"></vxe-radio>
-            <vxe-radio label="2" content="姝e崟"></vxe-radio>
-            <vxe-radio label="3" content="琛ュ崟"></vxe-radio>
-          </vxe-radio-group>
-        </template>
+      <template #toolbar_buttons>
+        <h1>鑶滅郴绛涢�夛細</h1>
+        <el-select v-model="optionVal" clearable default-value="default_city" placeholder="閫夋嫨鑶滅郴"
+                   style="width: 120px">
+          <el-option
+              v-for="item in titleSelectJson['processType']"
+              :key="item.id"
+              :label="item.glassType"
+              :value="item.glassType"
+          />
+        </el-select>
+        <el-button :icon="Search" style="margin-left: 20px" type="primary" @click="selectFlowCardList">鏌ヨ</el-button>
+        <vxe-radio-group v-model="radio" style="margin-left: 20px">
+          <vxe-radio content="鍏ㄩ儴" label="1"></vxe-radio>
+          <vxe-radio content="姝e崟" label="2"></vxe-radio>
+          <vxe-radio content="琛ュ崟" label="3"></vxe-radio>
+        </vxe-radio-group>
+      </template>
     </vxe-grid>
   </div>
 </template>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue
index 4a9e093..044e9f3 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue
@@ -1,8 +1,14 @@
 <script setup>
-import {reactive, ref} from "vue";
+import {onMounted, reactive, ref, watch} from "vue";
 import {useI18n} from "vue-i18n";
+import request from "@/utils/request";
+import {ElMessage} from "element-plus";
 const { t } = useI18n()
 
+let props = defineProps({
+  processId:null,
+  technologyNumber:null
+})
 const xGrid = ref()
 
 const gridOptions = reactive({
@@ -54,34 +60,53 @@
     ]
   },*/
   columns:[
-    {field: 'id',width: 70,  title: '搴忓彿',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }},
-    {field:'state',width: 150,title: t('order.width'),filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }},
-    {type: 'seq',width: 150,title: t('order.height')},
-    {field: 'id',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'id',width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'id',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'id',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'id',width: 150, title: t('craft.TrademarkAttribute'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order_number',width: 70,  title: '搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field:'child_width',width: 150,title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'child_height',width: 150,title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'quantity',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'building_number',width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'shape',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'grossArea',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'separation',width: 150, title: t('craft.TrademarkAttribute'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
 
   ],//琛ㄥご鍙傛暟
   data:null,//琛ㄦ牸鏁版嵁
   toolbarConfig: {
     buttons: [],
     slots:{
-      buttons: "toolbar_buttons"
     },
   },
 
 })
-let emit = defineEmits([
-  'changeDialog'
-])
-let ProjectName = ref('')
-const changeOrderType = async ()=>{
-  await emit('changeDialog',ProjectName.value)
-  ProjectName.value = null
+
+
+onMounted(()=>{
+
+})
+
+watch(
+
+    () => props.processId,
+    (newValue, oldValue) => {
+if (props.processId!=null){
+  getWorkOrder()
 }
 
+    }
+);
+
+const getWorkOrder = () => {
+  if (props.processId!=null || props.processId!=""){
+    request.post(`/glassOptimize/getProcessCardDetail/${props.processId}/${props.technologyNumber}`).then((res) => {
+      if(res.code==200){
+        xGrid.value.loadData(res.data.data)
+      }else{
+        ElMessage.warning(res.msg)
+      }
+    })
+  }
+
+}
 </script>
 
 <template>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintProject.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintProject.vue
index 8420dc0..dc747c2 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintProject.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintProject.vue
@@ -75,7 +75,6 @@
     }
     case 'edit3' :{
       printRow.value.project=row.project_no
-      console.log(printRow.value.project)
       dialogTableVisible.value = true
     }
   }
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 9484a42..19dc67d 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
@@ -1,5 +1,6 @@
 package com.example.erp.controller.pp;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.example.erp.common.Constants;
 import com.example.erp.common.Result;
 import com.example.erp.entity.pp.OptimizeProjectMange;
@@ -11,6 +12,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.sql.Date;
+import java.util.Map;
 
 @RestController
 @Api(value="浼樺寲绠$悊controller",tags={"浼樺寲绠$悊鎿嶄綔鎺ュ彛"})
@@ -102,4 +104,33 @@
         return Result.seccess(glassOptimizeService.selectComputeDetailSv(processId));
     }
 
+    //鍒涘缓宸ョ▼鏌ヨ娴佺▼鍗℃槑缁�
+    @ApiOperation("鍒涘缓宸ョ▼鏌ヨ娴佺▼鍗℃槑缁�")
+    @PostMapping  ("/getProcessCardDetail/{processId}/{technologyNumber}")
+    public Result getProcessCardDetail(
+            @PathVariable String processId,
+            @PathVariable Integer technologyNumber){
+        return Result.seccess(glassOptimizeService.getProcessCardDetailSv(processId,technologyNumber));
+    }
+
+    @ApiOperation("鑶滅郴鏌ヨ")
+    @PostMapping  ("/selectGlassType")
+    public Result selectGlassType(){
+        return Result.seccess(glassOptimizeService.selectGlassTypeSv());
+    }
+
+    @ApiOperation("鏈�鏂板伐绋嬪彿鏌ヨ")
+    @PostMapping  ("/getProjectId")
+    public Result getProjectId(){
+        return Result.seccess(glassOptimizeService.getProjectIdSv());
+    }
+    @ApiOperation("鍒涘缓宸ョ▼鎺ュ彛")
+    @PostMapping("/addProject/{optionVal}/{projectId}/{projectNmae}")
+    public Result addProject(
+            @PathVariable String optionVal,
+            @PathVariable String projectId,
+            @PathVariable String projectNmae,
+            @RequestBody Map<String,Object> object){
+        return  Result.seccess(glassOptimizeService.addProjectSv(optionVal,projectId,projectNmae,object));
+    }
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/pp/FlowCard.java b/north-glass-erp/src/main/java/com/example/erp/entity/pp/FlowCard.java
index a8ab5bc..6c8ec86 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/pp/FlowCard.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/pp/FlowCard.java
@@ -94,6 +94,9 @@
     //灏忕墖鏁伴噺
     @TableField(select = false,exist = false)
     private String glassCount;
+    //琛ョ墖鐘舵��
+    @TableField(select = false,exist = false)
+    private Integer patchState;
 
     //澶栭敭璁㈠崟琛�
     @TableField(select = false,exist= false)
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
index b409ee8..04c5fbf 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -75,7 +75,11 @@
 
     List<Map<String, String>> getPrimaryList(String processId, String technologyNumber, String glassChild, String process, String orderId);
 
+    List<Map<String, String>> getPrimaryLists(String processId, String technologyNumber, String glassChild, String process, String orderId,Integer quantity);
+
     List<Map<String, Object>> getDetailList(String processId, String technologyNumber, String process);
+
+    List<Map<String, Object>> getDetailLists(String processId, String technologyNumber, String process,Integer orderNumber);
 
     List<Map<String, Object>> getProcessList(String processId, String technologyNumber);
 
@@ -125,6 +129,8 @@
 
     List<Map<String, Object>> getDetailListLike(String processId, String technologyNumber, String process);
 
+    List<Map<String, Object>> getDetailListLikes(String processId, String technologyNumber, String process,Integer orderNumber,Integer quantity);
+
     List<Map<String, String>> getPrimaryListMergeRefund(String processId, String technologyNumber, Integer orderNumber, String orderId);
 
     List<Map<String, Object>> getDetailListRefund(String processId, String technologyNumber, Integer orderNumber, String reportingWorkId, String patchReason);
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 6438c2f..91b894c 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
@@ -39,4 +39,16 @@
 
     //妯℃嫙璁$畻娴佺▼鍗¤鎯�
     List<Map<String, Object>> selectComputeDetailMp(String processId);
+
+    List<Map<String, Object>> getProcessCardDetailmMp(String processId, Integer technologyNumber);
+
+    List<Map<String, Object>> selectGlassTypeMp();
+
+    List<Map<String, Object>> getProjectIdSv();
+
+    Boolean updateFlowCardProject(String processId, String technologyNumber, String projectId);
+
+    Double getSelectArea(String processId, String technologyNumber);
+
+    Boolean addProjectMp(String projectId, String projectNmae, String glassThickness, String glassType, Integer sumQuantity, Double sumArea, String userName);
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
index 7acc74e..8775182 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -377,15 +377,28 @@
                     String processSub=flowCard.getProcess().substring(0, 2);
                     if(processSub.equals("澶硅兌") || processSub.equals("涓┖")){
                         itemmap.put("detail", flowCardMapper.getPrimaryListLimt(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getGlassChild(),flowCard.getProcess(),flowCard.getOrderId()));
+                        if(flowCard.getPatchState().equals(0)){
+                            List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(),flowCard.getProcess());
+                            itemmap.put("detailList", detailList);
+                        }else{
+                            List<Map<String, Object>> detailList = flowCardMapper.getDetailLists(flowCard.getProcessId(), flowCard.getTechnologyNumber(),flowCard.getProcess(),flowCard.getOrderNumber());
+                            itemmap.put("detailList", detailList);
+                        }
 
-                        List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(),flowCard.getProcess());
-                        itemmap.put("detailList", detailList);
                     }
                     else {
-                        itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getGlassChild(),flowCard.getProcess(),flowCard.getOrderId()));
 
-                        List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getProcess());
-                        itemmap.put("detailList", detailList);
+                        if(flowCard.getPatchState().equals(0)){
+                            itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getGlassChild(),flowCard.getProcess(),flowCard.getOrderId()));
+                            List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getProcess());
+                            itemmap.put("detailList", detailList);
+                        }else{
+                            itemmap.put("detail", flowCardMapper.getPrimaryLists(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getGlassChild(),flowCard.getProcess(),flowCard.getOrderId(),flowCard.getQuantity()));
+                            List<Map<String, Object>> detailList = flowCardMapper.getDetailListLikes(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()),flowCard.getProcess(),flowCard.getOrderNumber(),flowCard.getQuantity());
+                            itemmap.put("detailList", detailList);
+                        }
+
+
                     }
 
 
@@ -412,7 +425,13 @@
 
                 itemmap.put("processList", processList);
                 //  itemmap.put("numberList", numberList);
-                itemmap.put("count", flowCardMapper.countFlowCard(flowCard.getOrderId()));
+
+                if(flowCard.getPatchState().equals(0)){
+                    itemmap.put("count", flowCardMapper.countFlowCard(flowCard.getOrderId()));
+                }else{
+                    itemmap.put("count", flowCardList.size());
+                }
+                itemmap.put("state", flowCard.getPatchState());
                 itemmap.put("remarkList", flowCardMapper.remakList(flowCard.getProcessId()));
                 list.add(itemmap);
 
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 8a9cb51..a1690a1 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
@@ -1,7 +1,10 @@
 
 package com.example.erp.service.pp;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.entity.pp.FlowCard;
 import com.example.erp.entity.pp.OptimizeProjectMange;
 import com.example.erp.mapper.pp.GlassOptimizeMapper;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -9,6 +12,7 @@
 
 import java.sql.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @Service
@@ -86,4 +90,53 @@
         return map;
     }
 
+    public Map<String, Object> getProcessCardDetailSv(String processId, Integer technologyNumber) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", glassOptimizeMapper.getProcessCardDetailmMp(processId,technologyNumber));
+        return map;
+    }
+
+    public Map<String, Object> selectGlassTypeSv() {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", glassOptimizeMapper.selectGlassTypeMp());
+        return map;
+    }
+
+
+    public Map<String, Object> getProjectIdSv() {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", glassOptimizeMapper.getProjectIdSv());
+        return map;
+    }
+
+    public Boolean addProjectSv(String optionVal, String projectId, String projectNmae, Map<String, Object> object) {
+        String userName = "";
+        if (object.get("userName") != null) {
+            userName = object.get("userName").toString();
+        }
+        Double sumArea = (double) 0;
+        Double area = (double) 0;
+        Integer sumQuantity = 0;
+        List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("projectdetail")), FlowCard.class);
+        if (!flowCardList.isEmpty()) {
+            for (FlowCard flowCard : flowCardList) {
+                //缁欐祦绋嬪崱琛ㄦ坊鍔犲搴旂殑宸ョ▼鍙�
+                glassOptimizeMapper.updateFlowCardProject(flowCard.getProcessId(),flowCard.getTechnologyNumber(),projectId);
+                area = glassOptimizeMapper.getSelectArea(flowCard.getProcessId(),flowCard.getTechnologyNumber());
+                sumArea += area;
+                sumQuantity +=flowCard.getQuantity();
+            }
+            int index = optionVal.indexOf("mm");
+            // 鑾峰彇 "mm" 鍓嶉潰鐨勯儴鍒�
+            String glass_thickness = optionVal.substring(0, index);
+            // 鑾峰彇 "mm" 鍚庨潰鐨勯儴鍒�
+            String glass_type = optionVal.substring(index + 2);
+            glassOptimizeMapper.addProjectMp(projectId,projectNmae,glass_thickness,glass_type,sumQuantity,sumArea,userName);
+            return true;
+        }
+        else {
+            return false;
+
+        }
+    }
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
index f77a9b7..fa93989 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -311,7 +311,6 @@
 
             //鍒ゆ柇鏄惁澶т簬褰撳墠鏁伴噺骞朵笖鎶涘嚭寮傚父
             if (processNum < (reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity())) {
-                System.out.println(processNum+"--"+reportingWorkDetail.getBreakageQuantity()+"--"+reportingWorkDetail.getCompletedQuantity());
                 Map<String, Object> map = new HashMap<>();
                 map.put("orderNumber", reportingWorkDetail.getOrderNumber());
                 map.put("technologyNumber", reportingWorkDetail.getOrderNumber());
diff --git a/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml b/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
index 8d014de..ba8b092 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -660,6 +660,45 @@
         group by fc.process_id
     </select>
 
+    <select id="getPrimaryLists">
+        select o.customer_name,
+               o.project,
+               #{process}                                         process,
+               od.edging_type,
+               #{glassChild}                                   as glass_child,
+               od.product_name,
+               o.processing_note,
+               fc.process_id,
+               #{quantity}                                                      as quantity,
+               round(od.width*od.height*#{quantity}/1000000, 2)                   as gross_area,
+               sum(od.weight)                                  as weight,
+               #{technologyNumber}                             as technologyNumber,
+               concat(fc.process_id, '/', #{technologyNumber}) as processIdNumber,
+               concat('瀵瑰簲鎴戝徃鍗曞彿', o.batch)                 AS otherRemarks,
+               ''                                              as qrcode
+        from flow_card as fc
+                 left join sd.order_glass_detail as ogd
+                           on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and
+                              fc.technology_number = ogd.technology_number
+                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
+                 left join sd.`order` as o on o.order_id = fc.order_id
+                 left join sd.product as p on p.id = od.product_id
+                 left join (select ogd.order_id,
+                                   ogd.order_number,
+                                   ogd.technology_number,
+                                   ogd.glass_child,
+                                   GROUP_CONCAT(glass_child SEPARATOR ' ') AS concatenated_glass_child
+                            from sd.order_glass_detail as ogd
+                            where ogd.order_id = #{orderId}
+                              and position(ogd.technology_number in #{technologyNumber})
+                            GROUP BY order_id, order_number) as ogdc
+                           on ogdc.order_id = ogd.order_id and ogdc.order_number = ogd.order_number and
+                              ogdc.technology_number = ogd.technology_number
+        where fc.process_id = #{processId}
+          and position(fc.technology_number in #{technologyNumber})
+        group by fc.process_id
+    </select>
+
     <select id="getDetailList">
         select fc.order_number,
                concat(round(ogd.child_width), "*", round(ogd.child_height))   as child_width,
@@ -688,6 +727,39 @@
                                and fcs.process = #{process}
         where fc.process_id = #{processId}
           and position(fc.technology_number in #{technologyNumber})
+        group by fc.process_id, fc.order_number
+        order by IF(fcs.sort != NULL or fcs.sort != '', fcs.sort, fc.order_number)
+    </select>
+
+    <select id="getDetailLists">
+        select fc.order_number,
+               concat(round(ogd.child_width), "*", round(ogd.child_height))   as child_width,
+               fc.quantity,
+               round(ogd.total_area, 2)                                       as total_area,
+               od.perimeter,
+               if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius,
+               concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks,
+               od.other_columns,
+               round(ogd.child_width)                                         as width,
+               round(ogd.child_height)                                        as height,
+               pd.separation,
+               fc.technology_number,
+               IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber,
+               od.building_number
+        from flow_card as fc
+                 left join sd.order_glass_detail as ogd
+                           on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and
+                              fc.technology_number = ogd.technology_number
+                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
+                 left join sd.product_detail as pd
+                           on pd.prod_id = od.product_id and pd.glass_sort = ogd.technology_number
+                 left join flow_card_sort as fcs
+                           on fcs.process_id = fc.process_id and fcs.order_number = fc.order_number and
+                              fcs.technology_number = fc.technology_number
+                               and fcs.process = #{process}
+        where fc.process_id = #{processId}
+          and position(fc.technology_number in #{technologyNumber})
+        and fc.order_sort = #{orderNumber}
         group by fc.process_id, fc.order_number
         order by IF(fcs.sort != NULL or fcs.sort != '', fcs.sort, fc.order_number)
     </select>
@@ -1239,6 +1311,39 @@
                                and fcs.process = #{process}
         where fc.process_id = #{processId}
           and position(fc.technology_number in #{technologyNumber})
+        group by fc.process_id, fc.order_number, fc.technology_number
+        order by IF(fcs.sort != NULL or fcs.sort != '', fcs.sort, fc.order_number)
+    </select>
+
+    <select id="getDetailListLikes">
+        select fc.order_number,
+               concat(round(ogd.child_width), "*", round(ogd.child_height))   as child_width,
+               #{quantity} as quantity,
+               round(ogd.child_width*ogd.child_height*#{quantity}/1000000, 2)                                       as total_area,
+               round((ogd.child_width+ogd.child_height)*2*#{quantity}/1000, 2)    as perimeter,
+               if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius,
+               concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks,
+               od.other_columns,
+               round(ogd.child_width)                                         as width,
+               round(ogd.child_height)                                        as height,
+               pd.separation,
+               fc.technology_number,
+               IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber,
+               od.building_number
+        from flow_card as fc
+                 left join sd.order_glass_detail as ogd
+                           on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and
+                              fc.technology_number = ogd.technology_number
+                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
+                 left join sd.product_detail as pd
+                           on pd.prod_id = od.product_id and pd.glass_sort = ogd.technology_number
+                 left join flow_card_sort as fcs
+                           on fcs.process_id = fc.process_id and fcs.order_number = fc.order_number and
+                              fcs.technology_number = fc.technology_number
+                               and fcs.process = #{process}
+        where fc.process_id = #{processId}
+          and position(fc.technology_number in #{technologyNumber})
+          and fc.order_number=#{orderNumber}
         group by fc.process_id, fc.order_number, fc.technology_number
         order by IF(fcs.sort != NULL or fcs.sort != '', fcs.sort, fc.order_number)
     </select>
@@ -2511,29 +2616,26 @@
     </update>
 
     <select id="getFlowCardListPrintProject">
-        select fc.id,
-               fc.order_id,
-               fc.process_id,
-               o.customer_name,
-               o.project,
-               fc.order_number,
-               ogd.technology_number,
-               ogd.glass_address,
-               sum(fc.quantity)                                                          as quantity,
-               round(sum(ogd.child_width * ogd.child_height * fc.quantity / 1000000), 2) as total_area,
-               od.product_name,
-               ogd.glass_child,
-               fc.founder,
-               date(fc.splitFrame_time) as splitFrame_time,
-            /* if(fc.print_status=0,'鏈墦鍗�','宸叉墦鍗�') as  print_status*/
-               fc.print_status,
-               ogd.process
-        from pp.flow_card as fc
-                 left join sd.order_glass_detail as ogd
-                           on ogd.order_id = fc.order_id and ogd.order_number = fc.order_number and
-                              ogd.technology_number = fc.technology_number
-                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
-                 left join sd.`order` as o on o.order_id = fc.order_id
+        select
+            od.order_id,
+            fc.process_id,
+            o.customer_name,
+            o.project,
+            od.order_number,
+            ogd.technology_number,
+            ogd.glass_address,
+            fc.quantity ,
+            round(sum(ogd.child_width * ogd.child_height * fc.quantity / 1000000), 2) as total_area,
+            od.product_name,
+            ogd.glass_child,
+            fc.patch_state,
+            ogd.process
+        from  (select process_id,count(*) as quantity,order_sort,project_no,layer,patch_state from pp.optimize_detail where project_no = #{printProject} group by process_id,layer) as fc
+                  left join sd.order_glass_detail as ogd
+                            on ogd.order_id = SUBSTRING(fc.process_id,1,10)  and ogd.order_number = fc.order_sort and
+                               ogd.technology_number = fc.layer
+                  left join sd.order_detail as od on od.order_id = SUBSTRING(fc.process_id,1,10)  and od.order_number = fc.order_sort
+                  left join sd.`order` as o on o.order_id = SUBSTRING(fc.process_id,1,10)
         where fc.project_no = #{printProject}
         GROUP BY fc.process_id, ogd.technology_number
         order by fc.process_id, ogd.technology_number
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 c72d362..7fc144f 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -166,31 +166,48 @@
     </select>
 
     <select id="getFlowCardListMp">
-        select fc.process_id,
-               fc.technology_number,
-               fcss.TotalFloors,
-               COUNT(fc.order_number)                                      as TotalNumber,
-               SUM(fc.quantity)                                            as quantity,
-               ROUND(SUM(od.width * od.height * fc.quantity / 1000000), 2) as area,
-               o.project,
-               ogd.glass_child,
-               od.shape
-
-        from pp.flow_card as fc
-                 left join sd.`order` as o on fc.order_id = o.order_id
-                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
-                 left join sd.order_glass_detail as ogd
-                           on ogd.order_id = fc.order_id and ogd.order_number = fc.order_number and
-                              ogd.technology_number = fc.technology_number
-                 left join (select fcs.process_id,
-                                   fcs.order_number,
-                                   COUNT(DISTINCT fcs.technology_number) as TotalFloors
-                            from pp.flow_card as fcs
-                            GROUP BY fcs.process_id, fcs.order_number) as fcss
-                           on fcss.process_id = fc.process_id and fcss.order_number = fc.order_number
-        where position(#{optionVal} in ogd.glass_child)
-        GROUP BY fc.process_id, fc.technology_number
-        ORDER BY fc.process_id, fc.technology_number
+        SELECT
+            fc.process_id,
+            fc.technology_number,
+            fcss.TotalFloors,
+            COUNT( fc.order_number ) AS TotalNumber,
+            SUM( fc.quantity ) AS quantity,
+            ROUND( SUM( od.width * od.height * fc.quantity / 1000000 ), 2 ) AS area,
+            o.project,
+            ogd.glass_child,
+            od.shape,
+            CONCAT( JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.color' )) ) AS glassType
+        FROM
+            pp.flow_card AS fc
+                LEFT JOIN sd.`order` AS o ON fc.order_id = o.order_id
+                LEFT JOIN sd.order_detail AS od ON od.order_id = fc.order_id
+                AND od.order_number = fc.order_number
+                LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = fc.order_id
+                AND ogd.order_number = fc.order_number
+                AND ogd.technology_number = fc.technology_number
+                LEFT JOIN (
+                SELECT
+                    fcs.process_id,
+                    fcs.order_number,
+                    COUNT( DISTINCT fcs.technology_number ) AS TotalFloors
+                FROM
+                    pp.flow_card AS fcs
+                GROUP BY
+                    fcs.process_id,
+                    fcs.order_number
+            ) AS fcss ON fcss.process_id = fc.process_id
+                AND fcss.order_number = fc.order_number
+                LEFT JOIN sd.product_detail AS pd ON pd.prod_id = od.product_id
+                AND pd.glass_sort = fc.technology_number
+        WHERE
+                CONCAT( JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.color' )) )= #{optionVal}
+              and ISNULL(fc.project_no)
+        GROUP BY
+            fc.process_id,
+            fc.technology_number
+        ORDER BY
+            fc.process_id,
+            fc.technology_number
     </select>
 
         <!--宸ョ▼绠$悊-->
@@ -334,4 +351,74 @@
             p.state IN (1, 2)
           AND f.process_id = #{processId}
     </select>
+
+    <select id="getProcessCardDetailmMp">
+        select fc.order_number,
+               ogd.child_width,
+               ogd.child_height,
+               fc.quantity,
+               od.building_number,IF(od.shape!=2,'鏅舰','寮傚舰') as shape,
+               ROUND(ogd.child_width*ogd.child_height*fc.quantity/1000000,2) as grossArea,
+               pd.separation
+        from pp.flow_card as fc
+                 left join sd.order_glass_detail as ogd
+                           on ogd.order_id=fc.order_id and ogd.order_number=fc.order_number
+                               and ogd.technology_number=fc.technology_number
+                 left join sd.order_detail as od on od.order_id=ogd.order_id and od.order_number=ogd.order_number
+                 left join sd.product_detail as pd on pd.prod_id=od.product_id and pd.glass_sort=fc.technology_number
+        where fc.process_id=#{processId} and fc.technology_number=#{technologyNumber}
+        group by fc.process_id,fc.order_number,fc.technology_number
+        order by fc.order_number,fc.technology_number
+    </select>
+
+    <select id="selectGlassTypeMp">
+        SELECT
+            JSON_UNQUOTE(JSON_EXTRACT(type, '$.lowE')) AS lowE,
+            JSON_UNQUOTE(JSON_EXTRACT(type, '$.color')) AS color,
+            JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')) AS thickness,
+            JSON_UNQUOTE(JSON_EXTRACT(type, '$.craft')) AS craft,
+            JSON_UNQUOTE(JSON_EXTRACT(type, '$.position')) AS position,
+    CONCAT(
+        JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')),
+        JSON_UNQUOTE(JSON_EXTRACT(type, '$.color'))
+    ) AS glassType
+        FROM pp.v_optimize_create_process_type
+        GROUP BY
+            thickness,
+            color
+        ORDER BY
+            CAST(REPLACE(JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')), 'mm', '') AS UNSIGNED);
+    </select>
+
+    <select id="getProjectIdSv">
+        SELECT IFNULL(
+                       (SELECT project_no
+                        FROM pp.optimize_project
+                        WHERE DATE(create_time) = CURDATE()
+           ORDER BY create_time DESC
+           LIMIT 1), '00') AS project_no;
+    </select>
+
+    <update id="updateFlowCardProject">
+        UPDATE pp.flow_card set project_no=#{projectId}
+                             where process_id=#{processId} and technology_number=#{technologyNumber}
+    </update>
+
+    <select id="getSelectArea">
+        select
+            ROUND(SUM(ogd.child_width*ogd.child_height*fc.quantity)/1000000,2) as grossArea
+        from pp.flow_card as fc
+                 left join sd.order_glass_detail as ogd
+                           on ogd.order_id=fc.order_id and ogd.order_number=fc.order_number
+                               and ogd.technology_number=fc.technology_number
+                 left join sd.order_detail as od on od.order_id=ogd.order_id and od.order_number=ogd.order_number
+                 left join sd.product_detail as pd on pd.prod_id=od.product_id and pd.glass_sort=fc.technology_number
+        where fc.process_id=#{processId} and fc.technology_number=#{technologyNumber}
+        group by fc.process_id,fc.technology_number
+    </select>
+
+    <insert id="addProjectMp">
+        insert into pp.optimize_project (project_no, project_name, order_glass_type, order_glass_thickness)
+        values (#{projectId}, #{projectNmae}, #{glassType}, #{glassThickness})
+    </insert>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0