From ed3cdd111410d19e93cc0a918e8447ba7e0fe674 Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期五, 26 一月 2024 14:28:37 +0800
Subject: [PATCH] 周五,订单相关前后端文件提交

---
 north-glass-erp/src/main/java/com/example/erp/entity/OrderTest.java                  |    2 
 north-glass-erp/target/classes/mapper/sd/BasicData.xml                               |   22 ++
 .gitignore                                                                           |    4 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicDateMapper.java         |   16 +
 north-glass-erp/src/main/java/com/example/erp/service/sd/BasicDateService.java       |   43 +++
 north-glass-erp/src/main/java/com/example/erp/controller/OrderTestController.java    |   11 
 north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml                         |   15 +
 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/controller/sd/BasicDataController.java |   22 ++
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                    |  332 ++++++++++++++++++++++++++----
 north-glass-erp/target/classes/mapper/sd/OrderMapper.xml                             |   15 +
 north-glass-erp/src/test/java/com/example/erp/service/sd/OrderServiceTest.java       |   23 ++
 north-glass-erp/src/main/resources/application.yml                                   |    4 
 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/controller/sd/OrderController.java     |   27 ++
 north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java                   |    2 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java             |   10 
 north-glass-erp/src/test/java/com/example/erp/service/sd/BasicDateServiceTest.java   |   16 +
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java           |   45 ++++
 north-glass-erp/target/classes/application.yml                                       |    4 
 north-glass-erp/src/main/java/com/example/erp/mapper/OrderTestMapper.java            |    6 
 23 files changed, 585 insertions(+), 69 deletions(-)

diff --git a/.gitignore b/.gitignore
index 81062fd..0d98b3e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,9 @@
 *.jar
 *.war
 *.ear
-*.idea
 
 # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
 hs_err_pid*
+
+# Ignore .idea files
+**/.idea/
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/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/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/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..83d0cca 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)
 
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/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/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/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..980b63b
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -0,0 +1,45 @@
+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.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;
+    @Transactional
+    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);
+        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);
+        order.setOrderId("NG"+formattedDate + formattedNumber);
+
+        //System.out.println(order);
+        orderMapper.insert(order);
+
+        return false;
+    }
+}
diff --git a/north-glass-erp/src/main/resources/application.yml b/north-glass-erp/src/main/resources/application.yml
index bb342d6..42ef468 100644
--- a/north-glass-erp/src/main/resources/application.yml
+++ b/north-glass-erp/src/main/resources/application.yml
@@ -20,12 +20,12 @@
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
         mm:
-          url: jdbc:mysql://localhost:3306/mm?serverTimezone=GMT%2b8
+          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://localhost:3306/pp?serverTimezone=GMT%2b8
+          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/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/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 bb342d6..42ef468 100644
--- a/north-glass-erp/target/classes/application.yml
+++ b/north-glass-erp/target/classes/application.yml
@@ -20,12 +20,12 @@
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
         mm:
-          url: jdbc:mysql://localhost:3306/mm?serverTimezone=GMT%2b8
+          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://localhost:3306/pp?serverTimezone=GMT%2b8
+          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/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