From 9a0cf79fa57427d7a38d55ad8b33622c1dcc18aa Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期五, 26 一月 2024 16:06:31 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml                               |   39 +
 north-glass-erp/target/classes/mapper/sd/BasicData.xml                                            |   22 
 .gitignore                                                                                        |    2 
 north-glass-erp/src/main/java/com/example/erp/service/sd/BasicDateService.java                    |   43 +
 north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml                                      |   15 
 north-glass-erp/src/test/java/com/example/erp/service/sd/OrderServiceTest.java                    |   23 
 north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java                          |    3 
 north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java                  |   27 
 north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java                                |    8 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java                          |   10 
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java                        |   72 ++
 north-glass-erp/src/main/java/com/example/erp/entity/mm/FinishedOperateLog.java                   |    5 
 north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedOperateLogMapper.java             |    9 
 north-glass-erp/src/main/java/com/example/erp/entity/OrderTest.java                               |    2 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicDateMapper.java                      |   16 
 north-glass-erp/src/main/java/com/example/erp/controller/OrderTestController.java                 |   11 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue               |  313 +++++---
 north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java |   44 +
 north-glass-erp/src/main/resources/mapper/sd/BasicData.xml                                        |   22 
 north-glass-erp/src/main/java/com/example/erp/service/impl/OrderServiceImpl.java                  |    6 
 north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java         |   34 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue                 |  258 +++---
 north-glass-erp/src/main/java/com/example/erp/controller/sd/BasicDataController.java              |   22 
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                                 |  332 ++++++++-
 north-glass-erp/target/classes/mapper/mm/FinishedOperateLog.xml                                   |   39 +
 north-glass-erp/target/classes/mapper/sd/OrderMapper.xml                                          |   15 
 north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java       |   91 ++
 north-glass-erp/src/main/resources/application.yml                                                |   20 
 north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicData.java                            |    4 
 north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue                             |    3 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java                    |   14 
 north-glass-erp/pom.xml                                                                           |   19 
 north-glass-erp/src/main/java/com/example/erp/entity/mm/FinishedGoodsInventory.java               |    9 
 north-glass-erp/src/main/resources/mapper/sd/OrderDetail.xml                                      |   57 +
 north-glass-erp/src/test/java/com/example/erp/service/sd/BasicDateServiceTest.java                |   16 
 north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml                           |  398 +++++++++++
 north-glass-erp/target/classes/application.yml                                                    |   20 
 north-glass-erp/src/main/java/com/example/erp/mapper/OrderTestMapper.java                         |    6 
 38 files changed, 1,695 insertions(+), 354 deletions(-)

diff --git a/.gitignore b/.gitignore
index efbaeef..0d98b3e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,4 +12,4 @@
 hs_err_pid*
 
 # Ignore .idea files
-**/.idea/
\ No newline at end of file
+**/.idea/
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
index 8a7f575..6cee0e5 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
@@ -2,7 +2,12 @@
 
 import {reactive, ref} from "vue";
 import {useRouter} from  'vue-router'
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import VXETable from "vxe-table";
 let router=useRouter()
+let produceList = ref([])
+let tableRef = ref([])
 const getTableRow = (row,type) =>{
   switch (type) {
     case 'edit' :{
@@ -21,6 +26,109 @@
     }
   }
 }
+
+
+
+const hasDecimal=(value)=>{
+  const regex=/\./ // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鏌ユ壘灏忔暟鐐�
+  return regex.test(value) //杩斿洖true/false
+}
+
+const hasDecimalhtml=(item,row)=>{
+  let aa=item.split('.').length
+  if (aa===2){
+    return row[item.split('.')[0]][item.split('.')[1]]
+  }else if(aa===3){
+    return row[item.split('.')[0]][item.split('.')[1]][item.split('.')[2]]
+  }
+
+
+}
+
+
+//绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
+let filterData = ref({
+  orderDetail:{
+    orderNumber:'',
+    productName:'',
+    productId:'',
+    width:'',
+    height:'',
+    quantity:''
+  },
+  order:{
+    orderId:'',
+    creater:'',
+    project:'',
+    area:'',
+    batch:''
+
+  }
+})
+
+
+//绗竴娆¤皟鐢�
+request.post("/FinishedGoodsInventory/getseletwarehousing/1/100",filterData.value).then((res) => {
+
+  if(res.code==200){
+    console.log(res.data)
+    pageTotal.value=res.data.total
+    pageNum=1
+    produceList = deepClone(res.data.data)
+    xGrid.value.loadData(produceList)
+    gridOptions.loading=false
+  }else{
+    ElMessage.warning(res.msg)
+    router.push("/login")
+  }
+})
+
+
+//瀹氫箟椤甸潰鎬婚〉鏁�
+let pageTotal=ref('')
+//瀹氫箟褰撳墠椤垫暟
+let pageNum=$ref(1)
+let pageState = null
+
+/*浣跨敤绛涢�夛紝鍚庣鑾峰彇鏁版嵁*/
+const changeFilterEvent = (event, option, $panel,) => {
+  // 鎵嬪姩瑙﹀彂绛涢��
+  $panel.changeOption(event, !!option.data, option)
+}
+function filterChanged(column){
+  gridOptions.loading=true
+  //绛涢�夋潯浠跺彂鐢熷彉鍖栨潯浠跺彂鐢熷彉鍖�
+  let value = column.datas[0]!=undefined?column.datas[0]:''
+  value = value.trim()
+  //鍒ゆ柇鏄惁瀛樺湪澶栭敭
+  if (column.property.indexOf('.')>-1){
+    const  columnArr = column.property.split('.')
+    filterData.value[columnArr[0]] = {
+      [columnArr[1]]:value
+    }
+  }else{
+    filterData.value[column.property] = value
+  }
+  request.post("/FinishedGoodsInventory/getseletwarehousing/1/100",filterData.value).then((res) => {
+
+    if(res.code==200){
+      console.log(res.data)
+      pageTotal.value=res.data.total
+      pageNum=1
+      produceList = deepClone(res.data.data)
+      xGrid.value.loadData(produceList)
+      gridOptions.loading=false
+    }else{
+      ElMessage.warning(res.msg)
+      router.push("/login")
+    }
+  })
+}
+
+
+
+
+
 
 
 
@@ -55,34 +163,29 @@
     showStatus: true
   },//琛ㄥご鍙傛暟
   columns:[
-    {type:'expand',fixed:"left",slots: { content:'content' },width: '50'},
+    {type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
     { type: 'checkbox',fixed:"left", title: '閫夋嫨', width: '80' },
     { type: 'seq',fixed:"left", title: '鑷簭', width: '80' },
     // {title: '鎿嶄綔', width: '220', slots: { default: 'button_slot' },fixed:"left"},
-    {field: 'SalesOrderNumber', width: '150',title: '閿�鍞崟鍙�', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'floorNumber', width: '120',title: '妤煎眰缂栧彿', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'finishedProductNumber',width: '100', title: '鎴愬搧缂栧彿', sortable: true,showOverflow:"ellipsis"},
-    {field: 'finishedProductName', width: '100',title: ' 鎴愬搧鍚嶇О', sortable: true},
-    {field: 'productName',width: '100', title: '浜у搧鍚嶇О', sortable: true},
-    {field: 'length', width: '100',title: '闀垮害', sortable: true},
-    {field: 'width',width: '100', title: '瀹藉害', sortable: true},
-    {field: 'salesperson', width: '100',title: '涓氬姟鍛�', sortable: true},
-    {field: 'customerName',width: '100', title: '瀹㈡埛鍚嶇О', sortable: true},
-    {field: 'projectName', width: '100',title: '椤圭洰鍚嶇О', sortable: true},
-    {field: 'orderNumber',width: '140', title: '璁㈠簭', sortable: true},
-    {field: 'totalOrders',width: '140', title: '璁㈠崟鎬绘暟', sortable: true},
-    {field: 'quantity',width: '100', title: '鏁伴噺', sortable: true},
-    {field: 'completion',width: '140', title: '瀹屽伐', sortable: true},
-    {field: 'area',width: '140', title: '闈㈢Н', sortable: true},
-    {field: 'processCardNumber',width: '100', title: '娴佺▼鍗″彿', sortable: true},
-    {field: 'quantityEntered',width: '100', title: '宸插叆鏁伴噺', sortable: true},
-    {field: 'nextProcess',width: '100', title: ' 涓嬪伐搴�', sortable: true},
-    {field: 'Batch',width: '100', title: '鎵规', sortable: true},
+    {field: 'order.orderId', width: '150',title: '閿�鍞崟鍙�', showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'orderDetail.buildingNumber', width: '120',title: '妤煎彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'orderDetail.productId',width: '100', title: '浜у搧缂栧彿', filters:[{ data: '' }],showOverflow:"ellipsis",slots: { filter: 'num1_filter' }},
+    {field: 'orderDetail.productName',width: '100', title: '浜у搧鍚嶇О', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'orderDetail.width', width: '100',title: '瀹藉害', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'orderDetail.height',width: '100', title: '楂樺害', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'order.creater', width: '100',title: '涓氬姟鍛�', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'order.project', width: '100',title: '椤圭洰鍚嶇О', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'orderNumber',width: '140', title: '璁㈠簭', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'orderDetail.quantity',width: '140', title: '璁㈠崟鎬绘暟', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'inventoryQuantity',width: '100', title: '瀹屽伐鏁伴噺', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'order.area',width: '140', title: '闈㈢Н', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'processId',width: '100', title: '娴佺▼鍗″彿', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'receivedQuantity',width: '100', title: '宸插叆鏁伴噺', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'order.batch',width: '100', title: '鎵规', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
   ],//琛ㄥご鎸夐挳
   toolbarConfig: {
     buttons: [{
       'name': '纭鍏ュ簱',status: 'primary',
-
       'code':'add'
     }
       ],
@@ -91,103 +194,15 @@
     print: true,
     zoom: true,
     custom: true
-  },
-  data:  [
-    {
-      "SalesOrderNumber": "NG23072003",
-      "floorNumber": "10059419",
-      "finishedProductNumber": "0604000027",
-      "finishedProductName": "NG23072003A01",
-      "productName": '閽㈠寲鐜荤拑',
-      "length": "1075.00",
-      "width": "440.00",
-      "salesperson": "灏忓渤",
-      "customerName": "澶уご",
-      "projectName": "Tempered Glass",
-      "orderNumber": "1",
-      "totalOrders": "3800",
-      "quantity": "1140",
-      "completion":'1140',
-      "area": "505.270000",
-      "processCardNumber": "NG23112311A01",
-      "quantityEntered": "0",
-      "nextProcess": "Finished Product",
-      "Batch": "涓�",
-    },
-    {
-      "SalesOrderNumber": "NG23072003",
-      "floorNumber": "10059419",
-      "finishedProductNumber": "0604000027",
-      "finishedProductName": "NG23072003A01",
-      "productName": '閽㈠寲鐜荤拑',
-      "length": "1075.00",
-      "width": "440.00",
-      "salesperson": "灏忓渤",
-      "customerName": "澶уご",
-      "projectName": "Tempered Glass",
-      "orderNumber": "1",
-      "totalOrders": "3800",
-      "quantity": "1140",
-      "completion":'1140',
-      "area": "505.270000",
-      "processCardNumber": "NG23112311A01",
-      "quantityEntered": "0",
-      "nextProcess": "Finished Product",
-      "Batch": "涓�",
-    },
-    {
-      "SalesOrderNumber": "NG23072003",
-      "floorNumber": "10059419",
-      "finishedProductNumber": "0604000027",
-      "finishedProductName": "NG23072003A01",
-      "productName": '閽㈠寲鐜荤拑',
-      "length": "1075.00",
-      "width": "440.00",
-      "salesperson": "灏忓渤",
-      "customerName": "澶уご",
-      "projectName": "Tempered Glass",
-      "orderNumber": "1",
-      "totalOrders": "3800",
-      "quantity": "1140",
-      "completion":'1140',
-      "area": "505.270000",
-      "processCardNumber": "NG23112311A01",
-      "quantityEntered": "0",
-      "nextProcess": "Finished Product",
-      "Batch": "涓�",
-    },
-    {
-      "SalesOrderNumber": "NG23072003",
-      "floorNumber": "10059419",
-      "finishedProductNumber": "0604000027",
-      "finishedProductName": "NG23072003A01",
-      "productName": '閽㈠寲鐜荤拑',
-      "length": "1075.00",
-      "width": "440.00",
-      "salesperson": "灏忓渤",
-      "customerName": "澶уご",
-      "projectName": "Tempered Glass",
-      "orderNumber": "1",
-      "totalOrders": "3800",
-      "quantity": "1140",
-      "completion":'1140',
-      "area": "505.270000",
-      "processCardNumber": "NG23112311A01",
-      "quantityEntered": "0",
-      "nextProcess": "Finished Product",
-      "Batch": "涓�",
-    },
-
-  ],//table body瀹為檯鏁版嵁
+  }
+  ,//table body瀹為檯鏁版嵁
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return '鍚堣:'
+          return `椤垫暟:${pageNum}/${pageTotal.value}`
         }
-        // if (props.tableProp.footList.includes(column.field)) {
-        //   return sumNum(data, column.field)
-        // }
+
         return ''
       })
     ]
@@ -195,14 +210,64 @@
 
 })
 const  xGrid = ref();
+const storageRegion = ref(null);
+const remark = ref(null);
+const flowcard = ref(null);
 const gridEvents = {
   toolbarButtonClick ({ code }) {
     const $grid = xGrid.value
     if ($grid) {
       switch (code) {
         case 'add': {
-          alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
-          return;
+          //鍒ゆ柇杈撳叆妗嗗�间笉鑳戒负null
+          if(storageRegion.value!==null && storageRegion.value!=""){
+            const $table = xGrid.value
+            if ($table) {
+              const selectRecords = $table.getCheckboxRecords()
+              //寰幆鑾峰彇閫変腑鐨勫閫夋
+              for (let i=0;i<selectRecords.length;i++){
+                //瀹氫箟鍚庣闇�瑕佺殑鍙傛暟
+                let flowData = ref({
+                  finishedGoodsInventory:{
+                    storageRegion:storageRegion.value,
+                    remark:remark.value
+                  },
+
+                  flowcard:selectRecords[0]
+                })
+                console.log(flowcard.value)
+                request.post("/FinishedGoodsInventory/addseletwarehousing",flowData.value).then((res) => {
+                 /* request.post("/FinishedGoodsInventory/addseletwarehousing/"+storageRegion.value+"/"+remark.value,flowData.value).then((res) => {*/
+                  if(res.code===200){
+                    alert(`鍏ュ簱鎴愬姛`)
+                    request.post("/FinishedGoodsInventory/getseletwarehousing/1/100",filterData.value).then((res) => {
+
+                      if(res.code===200){
+                        console.log(res.data)
+                        pageTotal.value=res.data.total
+                        pageNum=1
+                        produceList = deepClone(res.data.data)
+                        xGrid.value.loadData(produceList)
+                        gridOptions.loading=false
+                      }else{
+                        ElMessage.warning(res.msg)
+                        router.push("/login")
+                      }
+                    })
+                  }else{
+                    ElMessage.warning(res.msg)
+                    router.push("/login")
+                  }
+                })
+              }
+            }
+            return;
+
+
+          }else{
+            alert(`璇疯緭鍏ュ簱浣峘)
+          }
+
         }
 
       }
@@ -215,6 +280,17 @@
 
 <template>
   <div class="main-div-customer">
+    <div id="selectForm">
+        <el-input style="width: 200px" v-model="storageRegion" class="m-2" placeholder="璇疯緭鍏ュ簱浣�">
+      </el-input>
+        <el-input style="width: 200px" v-model="remark" class="m-2" placeholder="璇疯緭鍏ュ娉�">
+        </el-input>
+
+
+
+    </div>
+
+
     <vxe-grid
         max-height="100%"
         @filter-change="filterChanged"
@@ -227,9 +303,10 @@
       <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
       <template #content="{ row}">
         <ul class="expand-wrapper">
-          <li  v-for="(item,key,index) in row">
-            <span style="font-weight: bold">{{key+':  '}}</span>
-            <span>{{ item }}</span>
+          <li  v-for="(item,key,index) in gridOptions.columns" v-show="item.field!=undefined ">
+            <span style="font-weight: bold">{{item.title+':  '}}</span>
+            <span v-if="hasDecimal(item.field)">{{ hasDecimalhtml(item.field,row) }}</span>
+            <span v-else>{{ row[item.field] }}</span>
           </li>
         </ul>
       </template>
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
index 8cbee20..dc100ed 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
@@ -2,7 +2,11 @@
 
 import {reactive, ref} from "vue";
 import {useRouter} from  'vue-router'
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
 let router=useRouter()
+let produceList = ref([])
 const getTableRow = (row,type) =>{
   switch (type) {
     case 'edit' :{
@@ -20,6 +24,100 @@
       break
     }
   }
+}
+
+const hasDecimal=(value)=>{
+  const regex=/\./ // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鏌ユ壘灏忔暟鐐�
+  return regex.test(value) //杩斿洖true/false
+}
+
+const hasDecimalhtml=(item,row)=>{
+  let aa=item.split('.').length
+  if (aa===2){
+    return row[item.split('.')[0]][item.split('.')[1]]
+  }else if(aa===3){
+    return row[item.split('.')[0]][item.split('.')[1]][item.split('.')[2]]
+  }
+
+
+}
+
+
+
+
+//绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
+let filterData = ref({
+  orderDetail:{
+    orderNumber:'',
+    productName:'',
+    productId:'',
+    width:'',
+    height:''
+  },
+  order:{
+    orderId:'',
+    orderType:'',
+    project:''
+  }
+})
+
+
+
+//绗竴娆¤皟鐢�
+request.post("/FinishedGoodsInventory/getselet/1/100",filterData.value).then((res) => {
+
+  if(res.code==200){
+    console.log(res.data)
+    pageTotal.value=res.data.total
+    pageNum=1
+    produceList = deepClone(res.data.data)
+    xGrid.value.loadData(produceList)
+    gridOptions.loading=false
+  }else{
+    ElMessage.warning(res.msg)
+    router.push("/login")
+  }
+})
+
+
+//瀹氫箟椤甸潰鎬婚〉鏁�
+let pageTotal=ref('')
+//瀹氫箟褰撳墠椤垫暟
+let pageNum=$ref(1)
+let pageState = null
+
+/*浣跨敤绛涢�夛紝鍚庣鑾峰彇鏁版嵁*/
+const changeFilterEvent = (event, option, $panel,) => {
+  // 鎵嬪姩瑙﹀彂绛涢��
+  $panel.changeOption(event, !!option.data, option)
+}
+function filterChanged(column){
+  gridOptions.loading=true
+  //绛涢�夋潯浠跺彂鐢熷彉鍖栨潯浠跺彂鐢熷彉鍖�
+  let value = column.datas[0]!=undefined?column.datas[0]:''
+  value = value.trim()
+  //鍒ゆ柇鏄惁瀛樺湪澶栭敭
+  if (column.property.indexOf('.')>-1){
+    const  columnArr = column.property.split('.')
+    filterData.value[columnArr[0]] = {
+      [columnArr[1]]:value
+    }
+  }else{
+    filterData.value[column.property] = value
+  }
+  request.post("/FinishedGoodsInventory/getselet/1/100",filterData.value).then((res) => {
+
+    if(res.code==200){
+      console.log(res.data.data)
+      pageTotal.value=res.data.total
+      pageNum=1
+      produceList = deepClone(res.data.data)
+      xGrid.value.loadData(produceList)
+      gridOptions.loading=false
+    }else{
+      ElMessage.warning(res.msg)
+    }
+  })
 }
 
 
@@ -55,40 +153,33 @@
     showStatus: true
   },//琛ㄥご鍙傛暟
   columns:[
-    {type:'expand',fixed:"left",slots: { content:'content' },width: '50'},
+    {type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
     // { type: 'checkbox',fixed:"left", title: '閫夋嫨', width: '80' },
     { type: 'seq',fixed:"left", title: '鑷簭', width: '80' },
     // {title: '鎿嶄綔', width: '220', slots: { default: 'button_slot' },fixed:"left"},
-    {field: 'OrderNumber', width:'150', title: '璁㈠崟搴忓彿', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
-    {field: 'SalesOrderNumber', width: '150',title: '閿�鍞崟鍙�', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'ProjectName', width: '120',title: '椤圭洰鍚嶇О', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'OrderType', width: '100',title: '璁㈠崟绫诲瀷', sortable: true},
-    {field: 'ProcessCardNumber',width: '100', title: '娴佺▼鍗″彿', sortable: true,showOverflow:"ellipsis"},
-    {field: 'ProductName', width: '100',title: '浜у搧鍚嶇О', sortable: true},
-    {field: 'ProductNumber',width: '100', title: '浜у搧缂栧彿', sortable: true},
-    {field: 'CustomerNumber', width: '100',title: '瀹㈡埛缂栧彿', sortable: true},
-    {field: 'CustomerName',width: '100', title: '瀹㈡埛鍚嶇О', sortable: true},
-    {field: 'Length', width: '100',title: '闀垮害', sortable: true},
-    {field: 'Width',width: '100', title: '瀹藉害', sortable: true},
-    {field: 'Thickness', width: '100',title: '鍘氬害', sortable: true},
-    {field: 'InventoryCount',width: '140', title: '搴撳瓨鏁�', sortable: true},
-    {field: 'ActualSingleArea',width: '140', title: '瀹為檯鍗曠墖闈㈢Н', sortable: true},
-    {field: 'Area',width: '100', title: '闈㈢Н', sortable: true},
-    {field: 'SettlementSingleArea',width: '140', title: '缁撶畻鍗曠墖闈㈢Н', sortable: true},
-    {field: 'SettlementTotalArea',width: '140', title: '缁撶畻鎬婚潰绉�', sortable: true},
-    {field: 'AvailableQuantity',width: '100', title: '鍙敤鏁伴噺', sortable: true},
-    {field: 'FloorNumber',width: '100', title: '妤煎眰缂栧彿', sortable: true},
-    {field: 'DeliveryAddress',width: '100', title: '閫佽揣鍦板潃', sortable: true},
-    {field: 'Batch',width: '100', title: '鎵规', sortable: true},
-    {field: 'Salesman',width: '100', title: '涓氬姟鍛�', sortable: true},
-    {field: 'OrdinaryMillimeter',width: '100', title: '骞冲嚒姣背', sortable: true},
-    {field: 'Weight',width: '100', title: '閲嶉噺', sortable: true},
-    {field: 'LastWarehousingDate',width: '140', title: '鏈�鍚庡叆搴撴棩鏈�', sortable: true},
-    {field: 'LocationNumber',width: '100', title: '搴撲綅缂栧彿', sortable: true},
-    {field: 'StorageArea',width: '100', title: '瀛樺偍鍖哄煙', sortable: true},
-    {field: 'Location',width: '100', title: '搴撲綅', sortable: true},
-    {field: 'DocumentStatus',width: '100', title: '鍗曟嵁鐘舵��', sortable: true},
-    {field: 'remark',width: '80', title: '澶囨敞', sortable: true},
+    {field: 'orderDetail.orderNumber', width:'150', title: '璁㈠崟搴忓彿', filters:[{ data: '' }],editRender: { name: 'input', attrs: { placeholder: '' } } },
+    {field: 'order.orderId', width: '150',title: '閿�鍞崟鍙�',showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'order.project', width: '120',title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'order.orderType', width: '100',title: '璁㈠崟绫诲瀷', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'orderDetail.productName', width: '100',title: '浜у搧鍚嶇О', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'orderDetail.productId',width: '100', title: '浜у搧缂栧彿', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+
+    {field: 'orderDetail.width', width: '100',title: '瀹藉害',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'orderDetail.height',width: '100', title: '楂樺害', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'inventory',width: '140', title: '搴撳瓨鏁伴噺', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'quantityAvailable',width: '140', title: '鍙敤鏁伴噺', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+
+    {field: 'actualSignalArea',width: '140', title: '瀹為檯鍗曠墖闈㈢Н', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'area',width: '100', title: '鎬婚潰绉�', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+
+    /*{field: 'warehouseNumber',width: '100', title: '浠撳簱缂栧彿', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},*/
+    {field: 'storageRegion',width: '100', title: '搴撳瓨鍖哄煙', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'status',width: '100', title: '鐘舵��', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+
+    {field: 'enterStorageTime',width: '140', title: '鍏ュ簱鏃堕棿', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'updateTime',width: '140', title: '淇敼鏃堕棿', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'endTime',width: '100', title: '鍑哄簱鏃堕棿', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'remark',width: '80', title: '澶囨敞', filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
   ],//琛ㄥご鎸夐挳
   toolbarConfig: {
     buttons: [
@@ -103,109 +194,13 @@
     zoom: true,
     custom: true
   },
-  data:  [
-    {
-      "OrderNumber": "1",
-      "SalesOrderNumber": "NG23072003",
-      "ProjectName": "閽㈠寲鐜荤拑",
-      "OrderType": "鏅�氳鍗�",
-      "ProcessCardNumber": "NG23072003A01",
-      "ProductName": '',
-      "ProductNumber": "06040000022",
-      "CustomerNumber": "KD0071",
-      "CustomerName": "浠�",
-      "Length": "1075.00",
-      "Width": "440.00",
-      "Thickness": "3.00",
-      "InventoryCount": "360",
-      "ActualSingleArea": "0.473000",
-      "Area": "170.28",
-      "SettlementSingleArea": "0.47",
-      "SettlementTotalArea": "170.28",
-      "AvailableQuantity": "360",
-      "FloorNumber": "10927769",
-      "DeliveryAddress": "涓婃捣",
-      "Batch": "娴嬭瘯",
-      "OrdinaryMillimeter": "闄堝畻鍑�",
-      "Weight": "1915.6500",
-      "LastWarehousingDate": "2023-09-22 08:31:17",
-      "LocationNumber": "鎴愬搧搴�",
-      "StorageArea": "娴嬭瘯",
-      "Location": "2",
-      "DocumentStatus": "1",
-      "Remarks": "娴嬭瘯",
-    },
-    {
-      "OrderNumber": "1",
-      "SalesOrderNumber": "NG23072003",
-      "ProjectName": "閽㈠寲鐜荤拑",
-      "OrderType": "鏅�氳鍗�",
-      "ProcessCardNumber": "NG23072003A01",
-      "ProductName": '',
-      "ProductNumber": "06040000022",
-      "CustomerNumber": "KD0071",
-      "CustomerName": "浠�",
-      "Length": "1075.00",
-      "Width": "440.00",
-      "Thickness": "3.00",
-      "InventoryCount": "360",
-      "ActualSingleArea": "0.473000",
-      "Area": "170.28",
-      "SettlementSingleArea": "0.47",
-      "SettlementTotalArea": "170.28",
-      "AvailableQuantity": "360",
-      "FloorNumber": "10927769",
-      "DeliveryAddress": "涓婃捣",
-      "Batch": "娴嬭瘯",
-      "OrdinaryMillimeter": "闄堝畻鍑�",
-      "Weight": "1915.6500",
-      "LastWarehousingDate": "2023-09-22 08:31:17",
-      "LocationNumber": "鎴愬搧搴�",
-      "StorageArea": "娴嬭瘯",
-      "Location": "2",
-      "DocumentStatus": "1",
-      "Remarks": "娴嬭瘯",
-    },{
-      "OrderNumber": "1",
-      "SalesOrderNumber": "NG23072003",
-      "ProjectName": "閽㈠寲鐜荤拑",
-      "OrderType": "鏅�氳鍗�",
-      "ProcessCardNumber": "NG23072003A01",
-      "ProductName": '',
-      "ProductNumber": "06040000022",
-      "CustomerNumber": "KD0071",
-      "CustomerName": "浠�",
-      "Length": "1075.00",
-      "Width": "440.00",
-      "Thickness": "3.00",
-      "InventoryCount": "360",
-      "ActualSingleArea": "0.473000",
-      "Area": "170.28",
-      "SettlementSingleArea": "0.47",
-      "SettlementTotalArea": "170.28",
-      "AvailableQuantity": "360",
-      "FloorNumber": "10927769",
-      "DeliveryAddress": "涓婃捣",
-      "Batch": "娴嬭瘯",
-      "OrdinaryMillimeter": "闄堝畻鍑�",
-      "Weight": "1915.6500",
-      "LastWarehousingDate": "2023-09-22 08:31:17",
-      "LocationNumber": "鎴愬搧搴�",
-      "StorageArea": "娴嬭瘯",
-      "Location": "2",
-      "DocumentStatus": "1",
-      "Remarks": "娴嬭瘯",
-    },
-  ],//table body瀹為檯鏁版嵁
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return '鍚堣:'
+          return `椤垫暟:${pageNum}/${pageTotal.value}`
         }
-        // if (props.tableProp.footList.includes(column.field)) {
-        //   return sumNum(data, column.field)
-        // }
+
         return ''
       })
     ]
@@ -240,6 +235,8 @@
 }
 
 
+
+
 </script>
 
 <template>
@@ -259,7 +256,8 @@
         <ul class="expand-wrapper">
           <li  v-for="(item,index) in gridOptions.columns" v-show="item.field!=undefined ">
             <span style="font-weight: bold">{{item.title+':  '}}</span>
-            <span>{{ row[item.field] }}</span>
+            <span v-if="hasDecimal(item.field)">{{ hasDecimalhtml(item.field,row) }}</span>
+            <span v-else>{{ row[item.field] }}</span>
           </li>
         </ul>
       </template>
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
index 545b2f5..cb2a9b7 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -1,9 +1,12 @@
-<script setup>
+<script lang="ts"  setup>
 import {reactive, ref} from "vue"
-import {VXETable} from "vxe-table"
 import {useRouter} from "vue-router"
-const router = useRouter()
+import * as XLXS from "xlsx"
+import {ElMessage} from "element-plus"
+import request from "@/utils/request"
+import deepClone from "@/utils/deepClone"
 
+const router = useRouter()
 const xGrid = ref()
 const gridOptions = reactive({
   border:  "full",//琛ㄦ牸鍔犺竟妗�
@@ -18,6 +21,15 @@
   exportConfig: {},
   scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
   showOverflow:true,
+  menuConfig: {
+    body: {
+      options: [
+        [
+          { code: 'addRow', name: '娣诲姞', prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: false }
+        ]
+      ]
+    }
+  },
   columnConfig: {
     resizable: true,
     useKey: true
@@ -30,45 +42,103 @@
   },
   editConfig: {
     trigger: 'click',
-    mode: 'row',
+    mode: 'cell',
     showStatus: true
   },//琛ㄥご鍙傛暟
   columns:[
+    // {title: '鎿嶄綔', width: 110,fixed:"left",slots: { default: 'openProductList' }},
     {type: 'seq',fixed:"left", title: '鑷簭', width: 80 },
-    {field: 'orderID',width:120,  title: '妤煎彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '浜у搧',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '瀹�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '楂�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '鏁伴噺',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '鍗曚环',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '褰㈢姸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '鎬婚潰绉�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '鍗曠墖闈㈢Н',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '缁撶畻鍗曠墖闈㈢Н',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '缁撶畻鎬婚潰绉�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '纾ㄨ竟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '鍔犲伐瑕佹眰',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '澶囨敞',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderID',width:120,  title: '澶栬喘',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
+    {field: 'buildingNumber',width:120,  title: '妤煎彿',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'productId',width:140,  title: '浜у搧ID',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'productName',width:120,  title: '浜у搧',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'price',width:140,  title: '鍗曚环',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'quantity',width:120,  title: '鏁伴噺',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'grossAmount',width:120,  title: '鎬婚噾棰�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'width',width:120,  title: '瀹�',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'height',width:120,  title: '楂�',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'area',width:150,  title: '瀹為檯鍗曠墖闈㈢Н',filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true},
+    {field: 'grossArea',width:140,  title: '瀹為檯鎬婚潰绉�',filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true},
+    {field: 'computeArea',width:180,  title: '缁撶畻鍗曠墖闈㈢Н',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'computeGrossArea',width:140,  title: '缁撶畻鎬婚潰绉�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'shape',width:120,  title: '褰㈢姸',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'bendRadius',width:140,  title: '寮挗寮у害',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'edgingType',width:140,  title: '纾ㄨ竟绫诲瀷',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'processingNote',width:140,  title: '鍔犲伐瑕佹眰',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'remarks',width:120,  title: '澶囨敞',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
 
 
-
-  ],//琛ㄥご鎸夐挳
+  ],
+  //琛ㄥ崟楠岃瘉
+  editRules: {
+    buildingNumber: [
+      { required: false},
+      { min: 0, max: 255, message: '鍚嶇О闀垮害鍦� 0 鍒� 255 涓瓧绗�' }
+    ],
+    productId: [
+      { required: true, message: '璇烽�夋嫨浜у搧' }
+    ],
+    price: [
+      {
+        validator ({ cellValue }) {
+          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
+          if (cellValue && !regex.test(cellValue)) {
+            return new Error('杈撳叆0.00~99999.99鐨勬暟瀛�')
+          }
+        }
+      }
+    ],
+    computeArea: [
+      {
+        validator ({ cellValue }) {
+          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
+          if (cellValue && !regex.test(cellValue)) {
+            return new Error('杈撳叆0.00~99999.99鐨勬暟瀛�')
+          }
+        }
+      }
+    ],
+    quantity: [
+      { type: 'number', min: 0, message: '璇疯緭鍏ュぇ浜庣瓑浜�0鐨勬暟鍊�' }
+    ],
+    width:[
+      {
+        validator ({ cellValue }) {
+          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
+          if (cellValue && !regex.test(cellValue)) {
+            return new Error('杈撳叆0.00~99999.99鐨勬暟瀛�')
+          }
+        }
+      }
+    ],
+    height:[
+      {
+        validator ({ cellValue }) {
+          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
+          if (cellValue && !regex.test(cellValue)) {
+            return new Error('杈撳叆0.00~99999.99鐨勬暟瀛�')
+          }
+        }
+      }
+    ]
+  },
   toolbarConfig: {
     buttons: [
       {'code': 'remarks', 'name': '鍔犲伐瑕佹眰'},
       {'code': 'Craft', 'name': '宸ヨ壓',status: 'primary'},
       {'code': 'add', 'name': '瀹℃牳',status: 'primary',disabled: true},
-      {'code': 'add', 'name': '淇濆瓨',status: 'primary',icon: 'vxe-icon-save'}
+      {'code': 'saveOrder', 'name': '淇濆瓨',status: 'primary',icon: 'vxe-icon-save'}
     ],
-    import: false,
-    export: true,
-    print: true,
+    slots: {
+      tools: 'toolbar_buttons'
+    },
+    // import: false,
+    // export: true,
+    // print: true,
     zoom: true,
     custom: true
-  },
-  data:  [
-  ],//table body瀹為檯鏁版嵁
+  }
+  ,
+  //table body瀹為檯鏁版嵁
   footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
     return[
       columns.map((column, columnIndex) => {
@@ -84,26 +154,172 @@
   }
 
 })
-
 const gridEvents = {
-  toolbarButtonClick ({ code }) {
+  async toolbarButtonClick({code}) {
     const $grid = xGrid.value
     if ($grid) {
       switch (code) {
         case 'Craft': {
-          router.push({path: '/main/order/updateOrderCraft', query: { orderID: 12123 }})
+          await router.push({path: '/main/order/updateOrderCraft', query: {orderID: 12123}})
+          break
+        }
+        case 'saveOrder': {
+          if ($grid.getTableData().tableData.length === 0){
+            ElMessage.error('娌℃湁琛ㄦ牸鏁版嵁锛�')
+            return
+          }
+          console.log($grid.getTableData().tableData)
+          if ($grid) {
+            const errMap = await $grid.validate(true)
+            if (errMap) {
+              ElMessage.error(`鏍¢獙涓嶉�氳繃锛乣)
+              return
+            }
+            let order ={
+              title:titleUploadData.value,
+              detail:$grid.getTableData().tableData
+            }
+            saveOrder(order)
+          }
           break
         }
       }
     }
+  },//澶撮儴鎸夐挳浜嬩欢
+  menuClick ({ menu, row, column }) {
+    const $grid = xGrid.value
+    if ($grid) {
+      switch (menu.code) {
+        case 'deleteList': {
+          $grid.removeCheckboxRow()
+          break
+        }
+        case 'addRow': {
+          if ($grid.getTableData().tableData.length >=240){
+            ElMessage.error('琛ㄦ牸鏁版嵁宸茶揪鍒版渶澶у�硷紒')
+            return
+          }
+          $grid.insert({})
+          //console.log($grid.getRecordset().insertRecords)
+          break
+        }
+      }
+    }
+  },
+  cellDblclick (params) {//琛ㄦ牸鍐呭鍙屽嚮鎵撳紑浜у搧鐣岄潰
+    const { row } = params
+    //alert("鎴戞墦寮�浜嗕骇鍝佺晫闈�")
   }
 }
 
+// 瀹氫箟琛ㄥご涓婁紶鏁版嵁
+const titleUploadData = ref({
+  orderType:'',
+  alType:'',
+  icon:'',
+  orderClassify:'',
+  packType:'',
+  deliveryDate:''
+})
+
+//瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
+const titleSelectJson = ref({
+  orderType:[],
+  alType:[],
+  icon:[],
+  orderClassify:[],
+  packType:[],
+})
+//椤甸潰绗竴娆″姞杞芥墽琛�
+request.get(`/basicData/orderBasicData`).then((res) => {
+  if(res.code==200){
+    titleSelectJson.value=deepClone(res.data)
+    titleUploadData.value.orderType = titleSelectJson.value.orderType[0].id
+    titleUploadData.value.orderClassify = titleSelectJson.value.orderClassify[0].id
+    titleUploadData.value.icon = titleSelectJson.value.icon[0].id
+    titleUploadData.value.packType = titleSelectJson.value.packType[0].id
+    titleUploadData.value.alType = titleSelectJson.value.alType[0].id
+    const today = new Date
+    today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000))
+    titleUploadData.value.deliveryDate = today.getFullYear() +
+        '-' + ("0" + (today.getMonth() + 1)).slice(-2)
+        + '-' + ("0" + today.getDate()).slice(-2)
+  }else{
+    ElMessage.warning(res.msg)
+  }
+})
+
+const saveOrder = (order) => {
+  request.post(`/order/saveOrder`,order).then((res) => {
+    if(res.code==200){
+      ElMessage.success('淇濆瓨鎴愬姛')
+    }else {
+      ElMessage.warning(res.msg)
+    }
+  })
+}
+
+
+
+
+const countAmount = (row) => {
+  return
+}
+const area = (row) => {
+  return parseFloat((row.width * row.height/1000000).toFixed(2))
+}
+const countArea = (row) => {
+  return parseFloat((row.width * row.height/1000000).toFixed(2))*row.quantity
+}
+
+
+//瀵煎叆鍔熻兘
+const impotEvent = async () => {
+  const $grid = xGrid.value
+  const { files } = await $grid.readFile({
+    types: ['xls', 'xlsx']
+  })
+  const fileReader = new FileReader()
+  fileReader.onload = (event) => {
+    const data = event.target ? event.target.result : ''
+    const workbook = XLXS.read(data, { type: 'binary' })
+    let jsonData = XLXS.utils.sheet_to_json(workbook.Sheets.Sheet1).slice(1)
+    if(jsonData.length>240){
+      ElMessage.error('瀵煎叆鏁版嵁涓嶈兘瓒呰繃240鏉�,璇峰垎璁㈠崟瀵煎叆')
+      return
+    }
+    jsonData.forEach((item,index) => {
+      //item.computeArea
+      //console.log()
+      if(item.computeArea === undefined){
+        item.computeArea = area(item)
+      }
+      item.computeGrossArea = parseFloat((item.computeArea*item.quantity).toString())
+    })
+
+    xGrid.value.loadData(jsonData)
+  }
+  fileReader.readAsBinaryString(files[0])
+}
+
+//琛屽崟鍏冩牸淇敼淇敼瑙﹀彂姝や簨浠�
+const editClosedEvent = ({ row, column }) => {
+  //鍒ゆ柇淇敼鐩稿簲鐨勬暟鍊间慨鏀归潰绉笌閲戦
+   if (['width', 'height', 'quantity', 'price'].includes(column.property)) {
+      row.area = area(row)
+      row.grossArea = countArea(row)
+      row.computeArea = row.area
+      row.computeGrossArea = row.grossArea
+      row.grossAmount=row.price * row.computeGrossArea
+   }else if(column.property === 'computeArea'){
+     row.computeGrossArea=parseFloat((row.computeArea*row.quantity).toString())
+     row.grossAmount=row.price * row.computeGrossArea
+   }
+}
 </script>
 
 <template>
   <div class="main-div">
-
     <div class="order-primary" style="background-color: white">
       <el-row>
         <el-col  :span="2"><el-text>*椤圭洰鍚嶇О锛�</el-text></el-col>
@@ -116,26 +332,42 @@
         </el-col>
         <el-col  :span="2"><el-text>*璁㈠崟绫诲瀷锛�</el-text></el-col>
         <el-col  :span="2">
-          <el-select  clearable placeholder=" " >
-            <el-option />
+          <el-select v-model="titleUploadData.orderType"  clearable placeholder=""  >
+            <el-option
+                v-for="item in titleSelectJson['orderType']"
+                :key="item.id"
+                :label="item.basicName"
+                :value="item.id"
+            />
           </el-select>
         </el-col>
         <el-col  :span="2"><el-text>璁㈠崟鍒嗙被锛�</el-text></el-col>
         <el-col  :span="2">
-          <el-select  clearable placeholder=" " >
-            <el-option/>
+          <el-select v-model="titleUploadData.orderClassify" clearable placeholder=" " >
+            <el-option
+                v-for="item in titleSelectJson['orderClassify']"
+                :key="item.id"
+                :label="item.basicName"
+                :value="item.id"
+            />
           </el-select>
         </el-col>
         <el-col  :span="2"><el-text>鍟嗘爣閫夐」锛�</el-text></el-col>
         <el-col  :span="2">
-          <el-select  clearable placeholder=" " >
-            <el-option/>
+          <el-select v-model="titleUploadData.icon" clearable placeholder=" " >
+            <el-option  v-for="item in titleSelectJson['icon']"
+                       :key="item.id"
+                       :label="item.basicName"
+                       :value="item.id"/>
           </el-select>
         </el-col>
         <el-col  :span="2"><el-text>鍖呰鏂瑰紡锛�</el-text></el-col>
         <el-col  :span="2">
-          <el-select  clearable placeholder=" " >
-            <el-option/>
+          <el-select v-model="titleUploadData.packType" clearable placeholder=" " >
+            <el-option v-for="item in titleSelectJson['packType']"
+                       :key="item.id"
+                       :label="item.basicName"
+                       :value="item.id"/>
           </el-select>
         </el-col>
         <!--      <el-col :span="2"><el-text  /></el-col>-->
@@ -146,9 +378,10 @@
         <el-col  :span="2"><el-text>浜よ揣鏃ユ湡锛�</el-text></el-col>
         <el-col  :span="2">
           <el-date-picker
-              type="week"
-              format="[Week] ww"
-              placeholder="閫夋嫨鏃ユ湡"/>
+              v-model="titleUploadData.deliveryDate"
+              type="date"
+              placeholder="Pick a day"
+              />
         </el-col>
         <el-col  :span="2"><el-text>鎵规锛�</el-text></el-col>
         <el-col  :span="2"><el-input/></el-col>
@@ -166,8 +399,11 @@
         </el-col>
         <el-col  :span="2"><el-text>閾濇潯鏂瑰紡锛�</el-text></el-col>
         <el-col  :span="2">
-          <el-select  clearable placeholder=" " >
-            <el-option/>
+          <el-select v-model="titleUploadData.alType" clearable placeholder=" " >
+            <el-option v-for="item in titleSelectJson['alType']"
+                       :key="item.id"
+                       :label="item.basicName"
+                       :value="item.id"/>
           </el-select>
         </el-col>
       </el-row>
@@ -201,6 +437,7 @@
           ref="xGrid"
           v-bind="gridOptions"
           v-on="gridEvents"
+          @edit-closed="editClosedEvent"
       >
         <template #num1_filter="{ column, $panel }">
           <div>
@@ -209,6 +446,11 @@
             </div>
           </div>
         </template>
+        <template #toolbar_buttons>
+          <vxe-button  @click="impotEvent">瀵煎叆</vxe-button>
+        </template>
+
+
       </vxe-grid>
     </div>
   </div>
diff --git a/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue b/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
index a1358c4..06789e7 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
@@ -134,9 +134,8 @@
 
 
 //绗竴娆″姞杞芥暟鎹�
-request.post("/product/1/100/"+productGlassTypeStore.GlassType,filterData.value).then((res) => {
+request.post(`/product/1/100/${productGlassTypeStore.GlassType}`,filterData.value).then((res) => {
   if(res.code==200){
-    console.log(res.data.data)
     pageTotal.value=res.data.total
     produceList = produceList.value.concat(deepClone(res.data.data))
     xGrid.value.reloadData(produceList)
diff --git a/north-glass-erp/pom.xml b/north-glass-erp/pom.xml
index 7d7140c..5123162 100644
--- a/north-glass-erp/pom.xml
+++ b/north-glass-erp/pom.xml
@@ -78,7 +78,7 @@
             <version>3.5.1</version>
         </dependency>
 
-<!--        SwaggerUi-->
+        <!--        SwaggerUi-->
         <dependency>
             <groupId>io.springfox</groupId>
             <artifactId>springfox-swagger2</artifactId>
@@ -102,11 +102,11 @@
             <artifactId>spring-boot-starter-cache</artifactId>
         </dependency>
 
-<!--websocket-->
-<!--        <dependency>-->
-<!--            <groupId>org.springframework.boot</groupId>-->
-<!--            <artifactId>spring-boot-starter-websocket</artifactId>-->
-<!--        </dependency>-->
+        <!--websocket-->
+        <!--        <dependency>-->
+        <!--            <groupId>org.springframework.boot</groupId>-->
+        <!--            <artifactId>spring-boot-starter-websocket</artifactId>-->
+        <!--        </dependency>-->
 
         <dependency>
             <groupId>io.netty</groupId>
@@ -119,6 +119,11 @@
             <artifactId>fastjson</artifactId>
             <version>1.2.24</version>
             <scope>import</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-commons</artifactId>
+            <version>2.5.8</version>
         </dependency>
 
     </dependencies>
@@ -168,4 +173,4 @@
             </snapshots>
         </pluginRepository>
     </pluginRepositories>-->
-</project>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/OrderController.java b/north-glass-erp/src/main/java/com/example/erp/controller/OrderTestController.java
similarity index 78%
rename from north-glass-erp/src/main/java/com/example/erp/controller/OrderController.java
rename to north-glass-erp/src/main/java/com/example/erp/controller/OrderTestController.java
index e61f42d..4c5a198 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/OrderController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/OrderTestController.java
@@ -1,19 +1,16 @@
 package com.example.erp.controller;
 
-import com.example.erp.common.Result;
-import com.example.erp.mapper.OrderMapper;
-import com.example.erp.entity.Order;
+import com.example.erp.mapper.OrderTestMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
 //@CrossOrigin  //瑙e喅鍗曚釜controller 璺ㄥ煙闂
 @RestController
-@RequestMapping("/order")
+@RequestMapping("/order11111111")
 
-public class OrderController {
+public class OrderTestController {
     @Autowired
-    private OrderMapper orderMapper;
+    private OrderTestMapper orderMapper;
 
 //    @GetMapping //鏌ヨorder琛ㄧ粨鏋滈泦
 //    public Result index(){
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java b/north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java
new file mode 100644
index 0000000..6f36346
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java
@@ -0,0 +1,44 @@
+package com.example.erp.controller.mm;
+
+
+
+import com.example.erp.common.Constants;
+import com.example.erp.common.Result;
+import com.example.erp.entity.pp.FlowCard;
+import com.example.erp.exception.ServiceException;
+import com.example.erp.service.mm.FinishedGoodsInventoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.example.erp.entity.mm.FinishedGoodsInventory;
+
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/FinishedGoodsInventory")
+public class FinishedGoodsInventoryController {
+    @Autowired
+    FinishedGoodsInventoryService finishedGoodsInventoryService;
+
+    @PostMapping("/getselet/{pageNum}/{pageSize}")
+    public Result defaultDateFinishedGoodsInventory(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody FinishedGoodsInventory finishedGoodsInventory){
+        System.out.println(finishedGoodsInventory);
+        return Result.seccess(finishedGoodsInventoryService.defaultDateFinishedGoodsInventory(pageNum,pageSize,finishedGoodsInventory));
+    }
+
+    @PostMapping("/getseletwarehousing/{pageNum}/{pageSize}")
+    public Result getseletwarehousing(@PathVariable Integer pageNum, @PathVariable Integer pageSize, @RequestBody FlowCard flowCard){
+        System.out.println(flowCard);
+        return Result.seccess(finishedGoodsInventoryService.getseletwarehousing(pageNum,pageSize,flowCard));
+    }
+
+    @PostMapping("/addseletwarehousing")
+    public Result addseletwarehousing( @RequestBody Map<String,Map<String,Object>> object){
+        if(finishedGoodsInventoryService.addseletwarehousing(object)){
+            return Result.seccess();
+        }else {
+           throw new ServiceException(Constants.Code_500,"鍏ュ簱澶辫触");
+
+        }
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/sd/BasicDataController.java b/north-glass-erp/src/main/java/com/example/erp/controller/sd/BasicDataController.java
new file mode 100644
index 0000000..aabb990
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/sd/BasicDataController.java
@@ -0,0 +1,22 @@
+package com.example.erp.controller.sd;
+
+import com.example.erp.common.Result;
+import com.example.erp.service.sd.BasicDateService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/basicData")
+public class BasicDataController {
+    @Autowired
+    BasicDateService basicDateService;
+    @GetMapping("/orderBasicData")
+    public Result getOrderBasicData(){
+        return Result.seccess(basicDateService.getOrderBasicData());
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java b/north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java
new file mode 100644
index 0000000..1386624
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java
@@ -0,0 +1,27 @@
+package com.example.erp.controller.sd;
+
+import cn.hutool.json.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.example.erp.common.Result;
+import com.example.erp.entity.sd.Order;
+import com.example.erp.service.sd.OrderService;
+import org.apache.tomcat.Jar;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/order")
+public class OrderController {
+    @Autowired
+    private OrderService orderService;
+
+    @PostMapping("/saveOrder")
+    public Result saveOrder(@RequestBody Map<String, Object> orderMap) {
+        return Result.seccess(orderService.saveOrder(orderMap));
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/Order.java b/north-glass-erp/src/main/java/com/example/erp/entity/OrderTest.java
similarity index 96%
rename from north-glass-erp/src/main/java/com/example/erp/entity/Order.java
rename to north-glass-erp/src/main/java/com/example/erp/entity/OrderTest.java
index ba47e17..73c883c 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/Order.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/OrderTest.java
@@ -7,7 +7,7 @@
 
 @Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
 @TableName("`order`")
-public class Order {
+public class OrderTest {
     @TableId(type = IdType.AUTO)
     private  Integer id;
     private  String orderId;
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/mm/FinishedGoodsInventory.java b/north-glass-erp/src/main/java/com/example/erp/entity/mm/FinishedGoodsInventory.java
index a6eab00..40f2159 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/mm/FinishedGoodsInventory.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/mm/FinishedGoodsInventory.java
@@ -2,8 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.example.erp.entity.sd.Customer;
-import com.example.erp.entity.sd.Order;
+import com.example.erp.entity.sd.*;
 import lombok.Data;
 
 import java.time.LocalDate;
@@ -13,14 +12,14 @@
     @TableId(type = IdType.AUTO)
 
     private Long id;
-    private String orderId;
-    private Integer orderNumber;
+    private Order order;
+    private OrderDetail orderDetail;
     private Integer inventory    ;
     private Double actualSignalArea;
     private Double area;
     private Integer quantityAvailable;
     private String warehouseNumber;
-    private LocalDate storageRegion;
+    private String storageRegion;
     private Integer status;
     private LocalDate enterStorageTime;
     private String remark;
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/mm/FinishedOperateLog.java b/north-glass-erp/src/main/java/com/example/erp/entity/mm/FinishedOperateLog.java
index 80c328e..2e74943 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/mm/FinishedOperateLog.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/mm/FinishedOperateLog.java
@@ -13,10 +13,13 @@
     private Long id;
     private String operationOrderNumber;
     private Long productNumber;
-    private Integer operationNumber    ;
+    private Integer operationNumber;
+    private Integer quantity;
     private String operateType;
     private String operator;
     private LocalDate operateTime;
+    private String staterOperationOrderNumber;
+    private String endOperationOrderNumber;;
 
 
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicData.java b/north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicData.java
index fa6bba9..fa8d582 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicData.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicData.java
@@ -11,8 +11,8 @@
     @TableId(type = IdType.AUTO)
     private Integer id;
     private String basicType;
-    private String name;
-    private String type;
+    private String basicName;
+    private String basicCategory;
     private LocalDate createTime;
     private LocalDate updateTime;
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java b/north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java
index 1ee2fd3..7c77160 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java
@@ -2,11 +2,13 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import java.time.LocalDate;
 
 @Data
+@TableName("`order`")
 public class Order {
     @TableId(type = IdType.AUTO)
 
@@ -34,13 +36,13 @@
     private Double otherMoney;
     private String otherMoneyRemarks;
     private String processingNote;
-    private String otherRemaks;
+    private String otherRemarks;
     private Double area;
     private Long quantity;
     private String verifierId;
     private String verifier;
-    private String createrId;
-    private String creater;
+    private String creatorId;
+    private String creator;
     private Integer createOrder;
     private Integer processReview;
     private Integer orderReview;
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java b/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java
index 2d9d3fc..6e65b5b 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java
@@ -14,6 +14,7 @@
 
     private Integer orderNumber;
     private String buildingNumber;
+    private Integer productId;
     private String productName;
     private Double price;
     private Long quantity;
@@ -39,6 +40,6 @@
     private LocalDate updateTime;
 
     private Order order;
-    private Product product;
+    //private Product product;
 
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/OrderMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/OrderTestMapper.java
similarity index 76%
rename from north-glass-erp/src/main/java/com/example/erp/mapper/OrderMapper.java
rename to north-glass-erp/src/main/java/com/example/erp/mapper/OrderTestMapper.java
index 063cd40..a915889 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/OrderMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/OrderTestMapper.java
@@ -1,13 +1,11 @@
 package com.example.erp.mapper;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.example.erp.entity.Order;
+import com.example.erp.entity.OrderTest;
 import org.apache.ibatis.annotations.*;
 
-import java.util.List;
 @Mapper
-public interface OrderMapper extends BaseMapper<Order> {
+public interface OrderTestMapper extends BaseMapper<OrderTest> {
 
 //    @Select("select * from `order`")
 //    List<Order> findAll();
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java
index 7c499b9..1bfa322 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java
@@ -1,12 +1,42 @@
 package com.example.erp.mapper.mm;
 
 import com.example.erp.entity.mm.FinishedGoodsInventory;
+import com.example.erp.entity.pp.FlowCard;
+import com.example.erp.entity.sd.Order;
+import com.example.erp.entity.sd.OrderDetail;
+import com.example.erp.entity.sd.Product;
+import com.example.erp.entity.userInfo.User;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.data.repository.CrudRepository;
 
 import java.util.List;
 
 @Mapper
-public interface FinishedGoodsInventoryMapper {
-    List<FinishedGoodsInventory> defaultProduct(@Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
+public interface FinishedGoodsInventoryMapper extends CrudRepository<FinishedGoodsInventory,Long> {
+
+
+
+    List<FinishedGoodsInventory> defaultfinishedGoods(@Param("offset") Integer offset,
+                                                      @Param("pageSize") Integer pageSize,
+                                                      @Param("finishedGoodsInventory") FinishedGoodsInventory finishedGoodsInventory);
+
+    Integer getPageTotal(Integer offset, Integer pageSize,FinishedGoodsInventory finishedGoodsInventory);
+
+    List<FlowCard> getseletwarehousing(@Param("offset") Integer offset,
+                                       @Param("pageSize") Integer pageSize,
+                                       @Param("flowCard") FlowCard flowCard);
+
+    Integer getseletwarehousingPageTotal(Integer offset, Integer pageSize,FlowCard flowCard);
+
+    Integer findOrderNumberdcount(Integer orderNumber);
+
+    Boolean updateInventory(FlowCard flowCard);
+    Boolean updateflowcard(FlowCard flowCard);
+
+    Boolean insertFinishedGoodsInventory(@Param("flowCard") FlowCard flowCard,
+                                         @Param("storageRegion") String storageRegion,
+                                         @Param("remark") String remark);
 }
+
+
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedOperateLogMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedOperateLogMapper.java
index 523b395..8552966 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedOperateLogMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedOperateLogMapper.java
@@ -1,12 +1,17 @@
 package com.example.erp.mapper.mm;
 
+import com.example.erp.entity.mm.FinishedGoodsInventory;
 import com.example.erp.entity.mm.FinishedOperateLog;
+import com.example.erp.entity.pp.FlowCard;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.data.repository.CrudRepository;
 
 import java.util.List;
 
 @Mapper
-public interface FinishedOperateLogMapper {
-    List<FinishedOperateLog> defaultProduct(@Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
+public interface FinishedOperateLogMapper extends CrudRepository<FinishedOperateLog,Long> {
+    FinishedOperateLog getselectFinishedOperateLog();
+
+    Boolean insertFinishedOperateLog(FlowCard flowCard);
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicDateMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicDateMapper.java
new file mode 100644
index 0000000..d20c827
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicDateMapper.java
@@ -0,0 +1,16 @@
+package com.example.erp.mapper.sd;
+
+import com.example.erp.entity.sd.BasicData;
+import com.example.erp.service.sd.BasicDateService;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface BasicDateMapper {
+
+    List<BasicData> getOrderBasicData();
+    List<String> getOrderBasicDataType();
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java
new file mode 100644
index 0000000..49c16de
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java
@@ -0,0 +1,14 @@
+package com.example.erp.mapper.sd;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.erp.entity.sd.Order;
+import com.example.erp.entity.sd.OrderDetail;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface OrderDetailMapper extends BaseMapper<OrderDetail> {
+
+    boolean insertBatch(List<OrderDetail> orderDetails);
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
new file mode 100644
index 0000000..1d55394
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
@@ -0,0 +1,10 @@
+package com.example.erp.mapper.sd;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.erp.entity.sd.Order;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface OrderMapper extends BaseMapper<Order> {
+    Integer selectMaxOrderId();
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/impl/OrderServiceImpl.java b/north-glass-erp/src/main/java/com/example/erp/service/impl/OrderServiceImpl.java
index 65f8a61..660ca31 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/impl/OrderServiceImpl.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/impl/OrderServiceImpl.java
@@ -2,12 +2,12 @@
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.example.erp.entity.Order;
-import com.example.erp.mapper.OrderMapper;
+import com.example.erp.entity.OrderTest;
+import com.example.erp.mapper.OrderTestMapper;
 import com.example.erp.service.IOrderService;
 import org.springframework.stereotype.Service;
 
 @Service
 @DS("erp_sd")
-public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
+public class OrderServiceImpl extends ServiceImpl<OrderTestMapper, OrderTest> implements IOrderService {
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java b/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
new file mode 100644
index 0000000..b3ac882
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
@@ -0,0 +1,91 @@
+package com.example.erp.service.mm;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.entity.mm.FinishedGoodsInventory;
+import com.example.erp.entity.mm.FinishedOperateLog;
+import com.example.erp.entity.pp.FlowCard;
+import com.example.erp.entity.sd.Order;
+import com.example.erp.entity.sd.OrderDetail;
+import com.example.erp.mapper.mm.FinishedGoodsInventoryMapper;
+import com.example.erp.mapper.mm.FinishedOperateLogMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.sql.SQLException;
+import java.time.LocalDate;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@DS("mm")
+public class FinishedGoodsInventoryService {
+    @Autowired
+    FinishedGoodsInventoryMapper finishedGoodsInventoryMapper;
+    @Autowired
+    FinishedOperateLogMapper finishedOperateLogMapper;
+    public Map<String,Object> defaultDateFinishedGoodsInventory(Integer pageNum, Integer pageSize,FinishedGoodsInventory finishedGoodsInventory) {
+        Integer offset = (pageNum-1)*pageSize;
+        Map<String,Object> map = new HashMap<>();
+        map.put("data",finishedGoodsInventoryMapper.defaultfinishedGoods(offset,pageSize,finishedGoodsInventory));
+        map.put("total",finishedGoodsInventoryMapper.getPageTotal(offset,pageSize,finishedGoodsInventory));
+        return map;
+    }
+
+    public Map<String,Object> getseletwarehousing(Integer pageNum, Integer pageSize, FlowCard flowCard) {
+        Integer offset = (pageNum-1)*pageSize;
+        Map<String,Object> map = new HashMap<>();
+        map.put("data",finishedGoodsInventoryMapper.getseletwarehousing(offset,pageSize,flowCard));
+        map.put("total",finishedGoodsInventoryMapper.getseletwarehousingPageTotal(offset,pageSize,flowCard));
+
+        return map;
+    }
+
+    public Boolean addseletwarehousing(Map<String,Map<String,Object>> object) {
+
+        Map<String,Object> maps=  object.get("finishedGoodsInventory");
+        String storageRegion= maps.get("storageRegion").toString();
+        String remark= maps.get("remark").toString();
+        JSONObject jsonObject = new JSONObject(object.get("flowcard"));
+        FlowCard flowCard = JSONObject.parseObject(JSONObject.toJSONString(jsonObject), FlowCard.class);
+        System.out.println("鏁版嵁2锛�"+flowCard);
+        //娣诲姞鍑哄叆搴撹褰�
+        finishedOperateLogMapper.insertFinishedOperateLog(flowCard);
+        System.out.println(flowCard.getOrder().getOrderId());
+        Integer finishedGoodsInventorycount=finishedGoodsInventoryMapper.findOrderNumberdcount(flowCard.getOrderNumber());
+        System.out.println("鏁伴噺:"+finishedGoodsInventorycount);
+        if(finishedGoodsInventorycount>0){
+            finishedGoodsInventoryMapper.updateInventory(flowCard);
+            finishedGoodsInventoryMapper.updateflowcard(flowCard);
+            return true;
+        }else{
+            if (finishedGoodsInventoryMapper.insertFinishedGoodsInventory(flowCard,storageRegion,remark)){
+                finishedGoodsInventoryMapper.updateflowcard(flowCard);
+                return true;
+            }else{
+                return false;
+            }
+        }
+
+
+        /*Order order=finishedGoodsInventoryMapper.findOrderId(flowCard.getOrder().getOrderId());
+        OrderDetail orderDetail=finishedGoodsInventoryMapper.findOrderNumber(flowCard.getOrderNumber());*/
+        /*finishedGoodsInventory.setOrder(order);
+        finishedGoodsInventory.setOrderDetail(orderDetail);
+        finishedGoodsInventory.setInventory(flowCard.getInventoryQuantity());
+        finishedGoodsInventory.setActualSignalArea(flowCard.getOrderDetail().getHeight()*flowCard.getOrderDetail().getWidth());
+        finishedGoodsInventory.setArea(flowCard.getOrderDetail().getHeight()*flowCard.getOrderDetail().getWidth()*flowCard.getInventoryQuantity());
+        finishedGoodsInventory.setQuantityAvailable(flowCard.getInventoryQuantity());
+        finishedGoodsInventory.setWarehouseNumber(flowCard.getOrderDetail().getBuildingNumber());
+        finishedGoodsInventory.setStorageRegion(flowCard.getOrderDetail().getBuildingNumber());
+        finishedGoodsInventory.setStatus(0);
+        finishedGoodsInventory.setEnterStorageTime(LocalDate.now());
+        finishedGoodsInventory.setUpdateTime(LocalDate.now());
+        finishedGoodsInventory.setEndTime(null);
+        finishedGoodsInventory.setRemark("");*/
+
+
+
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/BasicDateService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/BasicDateService.java
new file mode 100644
index 0000000..22a0936
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/BasicDateService.java
@@ -0,0 +1,43 @@
+package com.example.erp.service.sd;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.mapper.sd.BasicDateMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.example.erp.entity.sd.BasicData;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@DS("sd")
+public class BasicDateService {
+    @Autowired
+    BasicDateMapper basicDateMapper;
+    //鑾峰彇璁㈠崟鍩烘湰鏁版嵁
+public Map<String, List<Object>> getOrderBasicData() {
+        //鑾峰彇璁㈠崟鍩烘湰鏁版嵁绫诲瀷
+        List<String> orderBasicDataType = basicDateMapper.getOrderBasicDataType();
+        //鑾峰彇璁㈠崟鍩烘湰鏁版嵁
+        List<BasicData> orderBasicData = basicDateMapper.getOrderBasicData();
+        //鍒涘缓Map瀵硅薄
+        Map<String, List<Object>> orderBasicDataMap = new HashMap<>(); ;
+        //鍒涘缓List瀵硅薄
+
+        //閬嶅巻璁㈠崟鍩烘湰鏁版嵁绫诲瀷
+        for(String item :orderBasicDataType){
+            List<Object> orderBasicDataList = new ArrayList<>();
+            //灏嗙被鍨嬪拰List瀵硅薄鏀惧叆Map涓�
+            orderBasicDataMap.put(item,orderBasicDataList);
+        }
+        //閬嶅巻璁㈠崟鍩烘湰鏁版嵁
+        for (BasicData item : orderBasicData){
+            //灏嗘暟鎹斁鍏ist涓�
+            orderBasicDataMap.get(item.getBasicCategory()).add(item);
+        }
+        //杩斿洖Map瀵硅薄
+        return orderBasicDataMap;
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
new file mode 100644
index 0000000..d98e2b2
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -0,0 +1,72 @@
+package com.example.erp.service.sd;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.entity.sd.Order;
+import com.example.erp.entity.sd.OrderDetail;
+import com.example.erp.mapper.sd.OrderDetailMapper;
+import com.example.erp.mapper.sd.OrderMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@DS("sd")
+public class OrderService {
+    @Autowired
+    private OrderMapper orderMapper;
+    @Autowired
+    private OrderDetailMapper orderDetailMapper;
+
+    public boolean saveOrder(Map<String,Object> orderMap) {
+        JSONObject orderJson = new JSONObject(orderMap);
+        Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("title")), Order.class);
+        List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("detail")), OrderDetail.class);
+        boolean saveState = true;
+        //鍒ゆ柇浼犲叆id鍙傛暟鏄惁涓虹┖锛屾湭浼犲叆id涓虹┖鎻掑叆璁㈠崟琛紝浼犲叆鏇存柊琛�
+        if(order.getOrderId() == null){
+            saveState = insertOrder(order,OrderDetails);
+        }else {
+            saveState = updateOrder(order,OrderDetails);
+        }
+
+
+
+
+        return false;
+    }
+    @Transactional
+    public boolean insertOrder(Order order,List<OrderDetail> OrderDetails) {
+        Integer maxOrderId = orderMapper.selectMaxOrderId();
+        //鏌ヨ璁㈠崟id锛屽苟涓旇嚜澧�
+        String formattedNumber = String.format("%02d", maxOrderId+1);
+        //鏍煎紡鍖栧綋鍓嶆棩鏈�
+        Date currentDate = new Date();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
+        String formattedDate = dateFormat.format(currentDate);
+        //寰�涓昏〃鎻掓暟鎹�
+        orderMapper.insert(order);
+        //寰幆缁欒鍗曟槑缁嗚〃瀛楁娣诲姞搴忓彿鍜屽懆闀�
+        for (int i = 0; i < OrderDetails.size(); i++) {
+            OrderDetails.get(i).setOrderNumber(i+1);
+            order.setOrderId(formattedDate);
+            OrderDetails.get(i).setPerimeter(OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()*2);
+        }
+        //寰�鏄庣粏琛ㄦ彃鏁版嵁
+        orderDetailMapper.insertBatch(OrderDetails);
+        return false;
+    }
+
+    public boolean updateOrder(Order order,List<OrderDetail> OrderDetails) {
+        return  false;
+    }
+}
diff --git a/north-glass-erp/src/main/resources/application.yml b/north-glass-erp/src/main/resources/application.yml
index 0109f84..42ef468 100644
--- a/north-glass-erp/src/main/resources/application.yml
+++ b/north-glass-erp/src/main/resources/application.yml
@@ -19,13 +19,13 @@
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
-#        mm:
-#          url: jdbc:mysql://localhost:3306/mm?serverTimezone=GMT%2b8
-#          username: root
-#          password: beibo.123/
-#          driver-class-name: com.mysql.cj.jdbc.Driver
-#        pp:
-#          url: jdbc:mysql://localhost:3306/pp?serverTimezone=GMT%2b8
-#          username: root
-#          password: beibo.123/
-#          driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
+        mm:
+          url: jdbc:mysql://10.153.19.150:3306/mm?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        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
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml b/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
new file mode 100644
index 0000000..eb359fa
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
@@ -0,0 +1,398 @@
+<?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.example.erp.mapper.mm.FinishedGoodsInventoryMapper">
+
+    <resultMap id="selectFinishedGoodsInventory" type="com.example.erp.entity.mm.FinishedGoodsInventory">
+        <id column="fid" property="id"/>
+        <result column="inventory" property="inventory"/>
+        <result column="area" property="area"/>
+        <result column="actual_signal_area" property="actualSignalArea"/>
+        <result column="quantity_available" property="quantityAvailable"/>
+        <result column="warehouse_number" property="warehouseNumber"/>
+        <result column="storage_region" property="storageRegion"/>
+        <result column="status" property="status"/>
+        <result column="enter_storage_time" property="enterStorageTime"/>
+        <result column="remark" property="remark"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="end_time" property="endTime"/>
+
+        <result column="order_id" property="order.orderId"/>
+        <result column="project" property="order.project"/>
+        <result column="order_type" property="order.orderType"/>
+
+
+        <result column="order_number" property="orderDetail.orderNumber"/>
+        <result column="width" property="orderDetail.width"/>
+        <result column="height" property="orderDetail.height"/>
+        <result column="product_name" property="orderDetail.productName"/>
+        <result column="product_id" property="orderDetail.productId"/>
+
+    </resultMap>
+
+    <resultMap id="selectFlowCard" type="com.example.erp.entity.pp.FlowCard">
+        <id column="id" property="id"/>
+        <result column="order_number" property="orderNumber"/>
+        <result column="inventory_quantity" property="inventoryQuantity"/>
+        <result column="process_id" property="processId"/>
+        <result column="received_quantity" property="receivedQuantity"/>
+
+
+        <result column="order_id" property="order.orderId"/>
+        <result column="project" property="order.project"/>
+        <result column="creater" property="order.creater"/>
+        <result column="area" property="order.area"/>
+        <result column="batch" property="order.batch"/>
+
+        <result column="building_number" property="orderDetail.buildingNumber"/>
+        <result column="width" property="orderDetail.width"/>
+        <result column="height" property="orderDetail.height"/>
+        <result column="product_name" property="orderDetail.productName"/>
+        <result column="product_id" property="orderDetail.productId"/>
+        <result column="quantity" property="orderDetail.quantity"/>
+    </resultMap>
+
+    <update id="updateflowcard">
+        update pp.flow_card
+        set received_quantity=received_quantity+${inventoryQuantity}
+        where order_number=#{orderNumber} and process_id=#{processId}
+    </update>
+
+    <update id="updateInventory">
+        update mm.finished_goods_inventory
+        set inventory=inventory+${inventoryQuantity},quantity_available=quantity_available+${inventoryQuantity},
+            update_time=now(),area=area+actual_signal_area*${inventoryQuantity}
+        where order_number=#{orderNumber}
+    </update>
+
+    <insert id="insertFinishedGoodsInventory"  useGeneratedKeys="true"  >
+        insert into mm.finished_goods_inventory (order_id,
+                                                 order_number,
+                                                 inventory,
+                                                 actual_signal_area,
+                                                 area,
+                                                 quantity_available,
+                                                 warehouse_number,
+                                                 storage_region,
+                                                 `status`,
+                                                 enter_storage_time,
+                                                 update_time,
+                                                 end_time,
+                                                 remark
+        )
+        values (
+                   #{flowCard.order.orderId} ,#{flowCard.orderNumber},#{flowCard.inventoryQuantity},ROUND(#{flowCard.orderDetail.width}*#{flowCard.orderDetail.height}/1000000,2),
+                   ROUND(#{flowCard.orderDetail.width}*#{flowCard.orderDetail.height}*#{flowCard.inventoryQuantity}/1000000,2),
+                #{flowCard.inventoryQuantity},null,#{storageRegion},
+                0,now(),now(),null,#{remark}
+               )
+    </insert>
+
+    <select id="findOrderNumberdcount" >
+        select count(*)
+        from  mm.`finished_goods_inventory`
+        where order_number = #{orderNumber}
+
+    </select>
+
+    <select id="findOrderNumberd" >
+        select *
+        from  sd.finished_goods_inventory
+         where order_number = #{orderNumber}
+
+    </select>
+
+    <select id="getseletwarehousing" resultMap="selectFlowCard">
+        select
+        fc.id,
+        o.order_id,
+        od.building_number,
+        od.product_id,
+        od.product_name,
+        od.width,
+        od.height,
+        o.creater,
+        o.project,
+        fc.order_number,
+        od.quantity,
+        fc.inventory_quantity,
+        o.area,
+        fc.process_id,
+        fc.received_quantity,
+        o.batch
+        from pp.flow_card fc left join sd.order_detail od on fc.order_number=od.order_number inner join sd.`order` o on
+        o.order_id=fc.order_id
+        <where>
+                and fc.received_quantity <![CDATA[<]]> fc.inventory_quantity
+            <if test="flowCard.order.orderId != null and flowCard.order.orderId != ''">
+                and o.order_id regexp #{flowCard.order.orderId}
+            </if>
+            <if test="flowCard.orderDetail.buildingNumber != null and flowCard.orderDetail.buildingNumber != ''">
+                and od.building_number regexp #{flowCard.orderDetail.buildingNumber}
+            </if>
+            <if test="flowCard.orderDetail.productId != null and flowCard.orderDetail.productId != ''">
+                and od.product_id regexp #{flowCard.orderDetail.productId}
+            </if>
+            <if test="flowCard.orderDetail.productName != null and flowCard.orderDetail.productName != ''">
+                and od.product_name regexp #{flowCard.orderDetail.productName}
+            </if>
+            <if test="flowCard.orderDetail.width != null and flowCard.orderDetail.width != ''">
+                and od.width regexp #{flowCard.orderDetail.width}
+            </if>
+            <if test="flowCard.orderDetail.height != null and flowCard.orderDetail.height != ''">
+                and od.height regexp #{flowCard.orderDetail.height}
+            </if>
+            <if test="flowCard.order.creater != null and flowCard.order.creater != ''">
+                and o.creater regexp #{flowCard.order.creater}
+            </if>
+            <if test="flowCard.order.project != null and flowCard.order.project != ''">
+                and o.project regexp #{flowCard.order.project}
+            </if>
+            <if test="flowCard.orderNumber != null and flowCard.orderNumber != ''">
+                and fc.order_number regexp #{flowCard.orderNumber}
+            </if>
+            <if test="flowCard.orderDetail.quantity != null and flowCard.orderDetail.quantity != ''">
+                and od.quantity regexp #{flowCard.orderDetail.quantity}
+            </if>
+            <if test="flowCard.inventoryQuantity != null and flowCard.inventoryQuantity != ''">
+                and fc.inventory_quantity regexp #{flowCard.inventoryQuantity}
+            </if>
+            <if test="flowCard.order.area != null and flowCard.order.area != ''">
+                and o.area regexp #{flowCard.order.area}
+            </if>
+            <if test="flowCard.order.batch != null and flowCard.order.batch != ''">
+                and o.batch regexp #{flowCard.order.batch}
+            </if>
+            <if test="flowCard.processId != null and flowCard.processId != ''">
+                and fc.process_id regexp #{flowCard.processId}
+            </if>
+            <if test="flowCard.receivedQuantity != null and flowCard.receivedQuantity != ''">
+                and fc.received_quantity regexp #{flowCard.receivedQuantity}
+            </if>
+
+        </where>
+        group by fc.order_number,fc.process_id order by fc.create_time
+        limit #{offset},#{pageSize};
+    </select>
+    <select id="getseletwarehousingPageTotal" >
+        select  CEILING(count(zu.order_number)/#{pageSize}) from (
+        select fc.order_number as order_number,fc.process_id from pp.flow_card fc left join sd.order_detail od on
+        fc.order_number=od.order_number inner join sd.`order` o on o.order_id=fc.order_id
+        <where>
+            and fc.received_quantity <![CDATA[<]]> fc.inventory_quantity
+            <if test="flowCard.order.orderId != null and flowCard.order.orderId != ''">
+                and o.order_id regexp #{flowCard.order.orderId}
+            </if>
+            <if test="flowCard.orderDetail.buildingNumber != null and flowCard.orderDetail.buildingNumber != ''">
+                and od.building_number regexp #{flowCard.orderDetail.buildingNumber}
+            </if>
+            <if test="flowCard.orderDetail.productId != null and flowCard.orderDetail.productId != ''">
+                and od.product_id regexp #{flowCard.orderDetail.productId}
+            </if>
+            <if test="flowCard.orderDetail.productName != null and flowCard.orderDetail.productName != ''">
+                and od.product_name regexp #{flowCard.orderDetail.productName}
+            </if>
+            <if test="flowCard.orderDetail.width != null and flowCard.orderDetail.width != ''">
+                and od.width regexp #{flowCard.orderDetail.width}
+            </if>
+            <if test="flowCard.orderDetail.height != null and flowCard.orderDetail.height != ''">
+                and od.height regexp #{flowCard.orderDetail.height}
+            </if>
+            <if test="flowCard.order.creater != null and flowCard.order.creater != ''">
+                and o.creater regexp #{flowCard.order.creater}
+            </if>
+            <if test="flowCard.order.project != null and flowCard.order.project != ''">
+                and o.project regexp #{flowCard.order.project}
+            </if>
+            <if test="flowCard.orderNumber != null and flowCard.orderNumber != ''">
+                and fc.order_number regexp #{flowCard.orderNumber}
+            </if>
+            <if test="flowCard.orderDetail.quantity != null and flowCard.orderDetail.quantity != ''">
+                and od.quantity regexp #{flowCard.orderDetail.quantity}
+            </if>
+            <if test="flowCard.inventoryQuantity != null and flowCard.inventoryQuantity != ''">
+                and fc.inventory_quantity regexp #{flowCard.inventoryQuantity}
+            </if>
+            <if test="flowCard.order.area != null and flowCard.order.area != ''">
+                and o.area regexp #{flowCard.order.area}
+            </if>
+            <if test="flowCard.order.batch != null and flowCard.order.batch != ''">
+                and o.batch regexp #{flowCard.order.batch}
+            </if>
+            <if test="flowCard.processId != null and flowCard.processId != ''">
+                and fc.process_id regexp #{flowCard.processId}
+            </if>
+            <if test="flowCard.receivedQuantity != null and flowCard.receivedQuantity != ''">
+                and fc.received_quantity regexp #{flowCard.receivedQuantity}
+            </if>
+
+        </where>
+        group by fc.order_number,fc.process_id order by fc.create_time) as zu
+    </select>
+
+
+    <select id="defaultfinishedGoods" resultMap="selectFinishedGoodsInventory">
+        select od.order_number,
+        o.order_id,
+        o.project,
+        o.order_type,
+        od.product_name,
+        od.product_id,
+        od.width,
+        od.height,
+        fgi.inventory,
+        fgi.quantity_available,
+        fgi.actual_signal_area,
+        fgi.area,
+        fgi.warehouse_number,
+        fgi.storage_region,
+        fgi.`status`,
+        fgi.update_time,
+        fgi.enter_storage_time,
+        fgi.end_time,
+        fgi.remark
+        from finished_goods_inventory fgi
+        left join sd.order_detail od on fgi.order_number = od.order_number
+        inner join sd.`order` o on fgi.order_id = o.order_id
+        <where>
+            <if test="finishedGoodsInventory.orderDetail.width != null and finishedGoodsInventory.orderDetail.width != ''">
+                and od.width regexp #{finishedGoodsInventory.orderDetail.width}
+            </if>
+            <if test="finishedGoodsInventory.orderDetail.orderNumber != null and finishedGoodsInventory.orderDetail.orderNumber != ''">
+                and od.order_number regexp #{finishedGoodsInventory.orderDetail.orderNumber}
+            </if>
+            <if test="finishedGoodsInventory.orderDetail.productName != null and finishedGoodsInventory.orderDetail.productName != ''">
+                and od.product_name regexp #{finishedGoodsInventory.orderDetail.productName}
+            </if>
+            <if test="finishedGoodsInventory.orderDetail.productId != null and finishedGoodsInventory.orderDetail.productId != ''">
+                and od.product_id regexp #{finishedGoodsInventory.orderDetail.productId}
+            </if>
+            <if test="finishedGoodsInventory.order.orderId != null and finishedGoodsInventory.order.orderId != ''">
+                and o.order_id regexp #{finishedGoodsInventory.order.orderId}
+            </if>
+            <if test="finishedGoodsInventory.order.project != null and finishedGoodsInventory.order.project != ''">
+                and o.project regexp #{finishedGoodsInventory.order.project}
+            </if>
+            <if test="finishedGoodsInventory.order.orderType != null and finishedGoodsInventory.order.orderType != ''">
+                and o.order_type regexp #{finishedGoodsInventory.order.orderType}
+            </if>
+            <if test="finishedGoodsInventory.orderDetail.height != null and finishedGoodsInventory.orderDetail.height != ''">
+                and od.height regexp #{finishedGoodsInventory.orderDetail.height}
+            </if>
+            <if test="finishedGoodsInventory.inventory != null and finishedGoodsInventory.inventory != ''">
+                and fgi.inventory regexp #{finishedGoodsInventory.inventory}
+            </if>
+            <if test="finishedGoodsInventory.quantityAvailable != null and finishedGoodsInventory.quantityAvailable != ''">
+                and fgi.quantity_available regexp #{finishedGoodsInventory.quantityAvailable}
+            </if>
+            <if test="finishedGoodsInventory.actualSignalArea != null and finishedGoodsInventory.actualSignalArea != ''">
+                and fgi.actual_signal_area regexp #{finishedGoodsInventory.actualSignalArea}
+            </if>
+            <if test="finishedGoodsInventory.area != null and finishedGoodsInventory.area != ''">
+                and fgi.area regexp #{finishedGoodsInventory.area}
+            </if>
+            <if test="finishedGoodsInventory.warehouseNumber != null and finishedGoodsInventory.warehouseNumber != ''">
+                and fgi.warehouse_number regexp #{finishedGoodsInventory.warehouseNumber}
+            </if>
+            <if test="finishedGoodsInventory.storageRegion != null and finishedGoodsInventory.storageRegion != ''">
+                and fgi.storage_region regexp #{finishedGoodsInventory.storageRegion}
+            </if>
+            <if test="finishedGoodsInventory.status != null and finishedGoodsInventory.status != ''">
+                and fgi.`status` regexp #{finishedGoodsInventory.status}
+            </if>
+            <if test="finishedGoodsInventory.enterStorageTime != null and finishedGoodsInventory.enterStorageTime != ''">
+                and fgi.enter_storage_time regexp #{finishedGoodsInventory.enterStorageTime}
+            </if>
+            <if test="finishedGoodsInventory.updateTime != null and finishedGoodsInventory.updateTime != ''">
+                and fgi.update_time regexp #{finishedGoodsInventory.updateTime}
+            </if>
+            <if test="finishedGoodsInventory.endTime != null and finishedGoodsInventory.endTime != ''">
+                and fgi.end_time regexp #{finishedGoodsInventory.endTime}
+            </if>
+            <if test="finishedGoodsInventory.remark != null and finishedGoodsInventory.remark != ''">
+                and fgi.remark regexp #{finishedGoodsInventory.remark}
+            </if>
+
+        </where>
+        order by fgi.id
+
+        limit #{offset},#{pageSize}
+        ;
+    </select>
+
+
+    <select id="getPageTotal">
+        select
+        CEILING(count(fgi.id)/#{pageSize})
+        from finished_goods_inventory fgi
+        left join sd.order_detail od on fgi.order_number = od.order_number
+        inner join sd.`order` o on fgi.order_id = o.order_id
+        <where>
+            <if test="finishedGoodsInventory.orderDetail.width != null and finishedGoodsInventory.orderDetail.width != ''">
+                and od.width regexp #{finishedGoodsInventory.orderDetail.width}
+            </if>
+            <if test="finishedGoodsInventory.orderDetail.orderNumber != null and finishedGoodsInventory.orderDetail.orderNumber != ''">
+                and od.order_number regexp #{finishedGoodsInventory.orderDetail.orderNumber}
+            </if>
+            <if test="finishedGoodsInventory.orderDetail.productName != null and finishedGoodsInventory.orderDetail.productName != ''">
+                and od.product_name regexp #{finishedGoodsInventory.orderDetail.productName}
+            </if>
+            <if test="finishedGoodsInventory.orderDetail.productId != null and finishedGoodsInventory.orderDetail.productId != ''">
+                and od.product_id regexp #{finishedGoodsInventory.orderDetail.productId}
+            </if>
+            <if test="finishedGoodsInventory.order.orderId != null and finishedGoodsInventory.order.orderId != ''">
+                and o.order_id regexp #{finishedGoodsInventory.order.orderId}
+            </if>
+            <if test="finishedGoodsInventory.order.project != null and finishedGoodsInventory.order.project != ''">
+                and o.project regexp #{finishedGoodsInventory.order.project}
+            </if>
+            <if test="finishedGoodsInventory.order.orderType != null and finishedGoodsInventory.order.orderType != ''">
+                and o.order_type regexp #{finishedGoodsInventory.order.orderType}
+            </if>
+            <if test="finishedGoodsInventory.orderDetail.height != null and finishedGoodsInventory.orderDetail.height != ''">
+                and od.height regexp #{finishedGoodsInventory.orderDetail.height}
+            </if>
+            <if test="finishedGoodsInventory.inventory != null and finishedGoodsInventory.inventory != ''">
+                and fgi.inventory regexp #{finishedGoodsInventory.inventory}
+            </if>
+            <if test="finishedGoodsInventory.quantityAvailable != null and finishedGoodsInventory.quantityAvailable != ''">
+                and fgi.quantity_available regexp #{finishedGoodsInventory.quantityAvailable}
+            </if>
+            <if test="finishedGoodsInventory.actualSignalArea != null and finishedGoodsInventory.actualSignalArea != ''">
+                and fgi.actual_signal_area regexp #{finishedGoodsInventory.actualSignalArea}
+            </if>
+            <if test="finishedGoodsInventory.area != null and finishedGoodsInventory.area != ''">
+                and fgi.area regexp #{finishedGoodsInventory.area}
+            </if>
+            <if test="finishedGoodsInventory.warehouseNumber != null and finishedGoodsInventory.warehouseNumber != ''">
+                and fgi.warehouse_number regexp #{finishedGoodsInventory.warehouseNumber}
+            </if>
+            <if test="finishedGoodsInventory.storageRegion != null and finishedGoodsInventory.storageRegion != ''">
+                and fgi.storage_region regexp #{finishedGoodsInventory.storageRegion}
+            </if>
+            <if test="finishedGoodsInventory.status != null and finishedGoodsInventory.status != ''">
+                and fgi.`status` regexp #{finishedGoodsInventory.status}
+            </if>
+            <if test="finishedGoodsInventory.enterStorageTime != null and finishedGoodsInventory.enterStorageTime != ''">
+                and fgi.enter_storage_time regexp #{finishedGoodsInventory.enterStorageTime}
+            </if>
+            <if test="finishedGoodsInventory.updateTime != null and finishedGoodsInventory.updateTime != ''">
+                and fgi.update_time regexp #{finishedGoodsInventory.updateTime}
+            </if>
+            <if test="finishedGoodsInventory.endTime != null and finishedGoodsInventory.endTime != ''">
+                and fgi.end_time regexp #{finishedGoodsInventory.endTime}
+            </if>
+            <if test="finishedGoodsInventory.remark != null and finishedGoodsInventory.remark != ''">
+                and fgi.remark regexp #{finishedGoodsInventory.remark}
+            </if>
+
+        </where>
+
+        order by fgi.id desc
+        limit #{offset},#{pageSize}
+        ;
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml b/north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml
new file mode 100644
index 0000000..d69dd89
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml
@@ -0,0 +1,39 @@
+<?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.example.erp.mapper.mm.FinishedOperateLogMapper">
+    <resultMap id="selectFinishedGoodsInventory" type="com.example.erp.entity.mm.FinishedOperateLog" >
+        <id column="id" property="id"/>
+        <result column="operation_order_number" property="operationOrderNumber"/>
+        <result column="product_number" property="productNumber"/>
+        <result column="operation_number" property="operationNumber"/>
+        <result column="operate_type" property="operateType"/>
+        <result column="operator" property="operator"/>
+        <result column="operate_time" property="operateTime"/>
+
+        <!--<result column="g_typeId" property="glassTypes.typeId"/>
+        <result column="g_type" property="glassTypes.type"/>-->
+
+    </resultMap>
+    <select id="getselectFinishedOperateLog" >
+        select
+            *
+        from
+            mm.finished_operate_log limit 0,1;
+    </select>
+
+    <insert id="insertFinishedOperateLog"  useGeneratedKeys="true" keyProperty="id" >
+        insert into mm.finished_operate_log(operation_order_number,
+                                            product_number,
+                                            operation_number,
+                                            operate_type,
+                                            operator,
+                                            quantity,
+                                            operate_time
+        )
+        values (
+                   #{processId} ,#{orderDetail.productId},#{orderNumber},"鍏ュ簱","鐜嬩簲",#{inventoryQuantity},now()
+               )
+    </insert>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/sd/BasicData.xml b/north-glass-erp/src/main/resources/mapper/sd/BasicData.xml
new file mode 100644
index 0000000..78f29a0
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/sd/BasicData.xml
@@ -0,0 +1,22 @@
+<?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.example.erp.mapper.sd.BasicDateMapper">
+    <select id="getOrderBasicData">
+        select
+            *
+        from
+            basic_data as a
+        where a.basic_type='order'
+    </select>
+    <select id="getOrderBasicDataType">
+        select
+            a.basic_category
+        from
+            basic_data as a
+        where a.basic_type='order'
+        group by  a.basic_category
+
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/sd/OrderDetail.xml b/north-glass-erp/src/main/resources/mapper/sd/OrderDetail.xml
new file mode 100644
index 0000000..6be1a9f
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderDetail.xml
@@ -0,0 +1,57 @@
+<?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.example.erp.mapper.sd.OrderDetailMapper">
+    <insert id="insertBatch" parameterType="java.util.List">
+        INSERT INTO
+            order_detail (order_id,
+                            order_number,
+                            building_number,
+                            product_id,
+                            product_name,
+                            price,
+                            quantity,
+                            gross_amount,
+                            width,
+                            height,
+                            shape,
+                            area,
+                            gross_area,
+                            compute_area,
+                            compute_gross_area,
+                            processing_note,
+                            remarks,
+                            bend_radius,
+                            edging_type,
+                            weight,
+                            perimeter
+                          )
+        values
+        <foreach collection ="orderDetails" item="orderDetail" separator =",">
+            (#{orderDetail.orderId},
+            #{orderDetail.orderNumber},
+            #{orderDetail.buildingNumber},
+            #{orderDetail.productId},
+            #{orderDetail.productName},
+            #{orderDetail.price},
+            #{orderDetail.quantity},
+            #{orderDetail.grossAmount},
+            #{orderDetail.width},
+            #{orderDetail.height},
+            #{orderDetail.shape},
+            #{orderDetail.area},
+            #{orderDetail.grossArea},
+            #{orderDetail.computeArea},
+            #{orderDetail.computeGrossArea},
+            #{orderDetail.processingNote},
+            #{orderDetail.remarks},
+            #{orderDetail.bendRadius},
+            #{orderDetail.edgingType},
+            #{orderDetail.weight},
+            #{orderDetail.perimeter}
+             )
+        </foreach>
+    </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
new file mode 100644
index 0000000..7475875
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -0,0 +1,15 @@
+<?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.example.erp.mapper.sd.OrderMapper">
+    <select id="selectMaxOrderId">
+        select
+            COUNT(a.order_id)
+        from
+            `order` as a
+        where
+            a.create_time = curdate()
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/test/java/com/example/erp/service/sd/BasicDateServiceTest.java b/north-glass-erp/src/test/java/com/example/erp/service/sd/BasicDateServiceTest.java
new file mode 100644
index 0000000..5af50a6
--- /dev/null
+++ b/north-glass-erp/src/test/java/com/example/erp/service/sd/BasicDateServiceTest.java
@@ -0,0 +1,16 @@
+package com.example.erp.service.sd;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import static org.junit.jupiter.api.Assertions.*;
+@SpringBootTest
+class BasicDateServiceTest {
+    @Autowired
+    private BasicDateService basicDateService;
+    @Test
+    void  getOrderBasicData() {
+        basicDateService.getOrderBasicData();
+    }
+}
\ No newline at end of file
diff --git a/north-glass-erp/src/test/java/com/example/erp/service/sd/OrderServiceTest.java b/north-glass-erp/src/test/java/com/example/erp/service/sd/OrderServiceTest.java
new file mode 100644
index 0000000..971967d
--- /dev/null
+++ b/north-glass-erp/src/test/java/com/example/erp/service/sd/OrderServiceTest.java
@@ -0,0 +1,23 @@
+package com.example.erp.service.sd;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+@SpringBootTest
+class OrderServiceTest {
+    @Autowired
+    OrderService orderService;
+
+    @Test
+    void testCreateOrder() {
+        Map<String, Object> order =new HashMap<>();
+
+        //orderService.saveOrder();
+    }
+
+}
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/application.yml b/north-glass-erp/target/classes/application.yml
index 0109f84..42ef468 100644
--- a/north-glass-erp/target/classes/application.yml
+++ b/north-glass-erp/target/classes/application.yml
@@ -19,13 +19,13 @@
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
-#        mm:
-#          url: jdbc:mysql://localhost:3306/mm?serverTimezone=GMT%2b8
-#          username: root
-#          password: beibo.123/
-#          driver-class-name: com.mysql.cj.jdbc.Driver
-#        pp:
-#          url: jdbc:mysql://localhost:3306/pp?serverTimezone=GMT%2b8
-#          username: root
-#          password: beibo.123/
-#          driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
+        mm:
+          url: jdbc:mysql://10.153.19.150:3306/mm?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        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
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/mm/FinishedOperateLog.xml b/north-glass-erp/target/classes/mapper/mm/FinishedOperateLog.xml
new file mode 100644
index 0000000..d69dd89
--- /dev/null
+++ b/north-glass-erp/target/classes/mapper/mm/FinishedOperateLog.xml
@@ -0,0 +1,39 @@
+<?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.example.erp.mapper.mm.FinishedOperateLogMapper">
+    <resultMap id="selectFinishedGoodsInventory" type="com.example.erp.entity.mm.FinishedOperateLog" >
+        <id column="id" property="id"/>
+        <result column="operation_order_number" property="operationOrderNumber"/>
+        <result column="product_number" property="productNumber"/>
+        <result column="operation_number" property="operationNumber"/>
+        <result column="operate_type" property="operateType"/>
+        <result column="operator" property="operator"/>
+        <result column="operate_time" property="operateTime"/>
+
+        <!--<result column="g_typeId" property="glassTypes.typeId"/>
+        <result column="g_type" property="glassTypes.type"/>-->
+
+    </resultMap>
+    <select id="getselectFinishedOperateLog" >
+        select
+            *
+        from
+            mm.finished_operate_log limit 0,1;
+    </select>
+
+    <insert id="insertFinishedOperateLog"  useGeneratedKeys="true" keyProperty="id" >
+        insert into mm.finished_operate_log(operation_order_number,
+                                            product_number,
+                                            operation_number,
+                                            operate_type,
+                                            operator,
+                                            quantity,
+                                            operate_time
+        )
+        values (
+                   #{processId} ,#{orderDetail.productId},#{orderNumber},"鍏ュ簱","鐜嬩簲",#{inventoryQuantity},now()
+               )
+    </insert>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/sd/BasicData.xml b/north-glass-erp/target/classes/mapper/sd/BasicData.xml
new file mode 100644
index 0000000..78f29a0
--- /dev/null
+++ b/north-glass-erp/target/classes/mapper/sd/BasicData.xml
@@ -0,0 +1,22 @@
+<?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.example.erp.mapper.sd.BasicDateMapper">
+    <select id="getOrderBasicData">
+        select
+            *
+        from
+            basic_data as a
+        where a.basic_type='order'
+    </select>
+    <select id="getOrderBasicDataType">
+        select
+            a.basic_category
+        from
+            basic_data as a
+        where a.basic_type='order'
+        group by  a.basic_category
+
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml b/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
new file mode 100644
index 0000000..7475875
--- /dev/null
+++ b/north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
@@ -0,0 +1,15 @@
+<?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.example.erp.mapper.sd.OrderMapper">
+    <select id="selectMaxOrderId">
+        select
+            COUNT(a.order_id)
+        from
+            `order` as a
+        where
+            a.create_time = curdate()
+    </select>
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0