chenlu
2024-06-19 3760bb766253ea2b2291e00d7bc5147bdee9bb44
Merge branch 'master' of http://bore.pub:10439/r/ERP_override
1个文件已添加
20个文件已修改
1个文件已删除
749 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/package-lock.json 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/public/importTemplate.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderDetail.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderSizeCheck.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/PrintFoot.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet1.vue 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet2.vue 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/companyInfo.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 211 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderGlassDetailMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderGlassDetailMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/package-lock.json
@@ -12,6 +12,7 @@
        "@vue-macros/reactivity-transform": "^0.3.23",
        "axios": "^1.5.1",
        "element-plus": "^2.4.0",
        "file-saver": "^2.0.5",
        "moment": "^2.30.1",
        "pinia": "^2.1.6",
        "pinia-plugin-persistedstate": "^3.2.0",
@@ -1138,6 +1139,11 @@
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
    },
    "node_modules/file-saver": {
      "version": "2.0.5",
      "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
      "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
    },
    "node_modules/fill-range": {
      "version": "7.0.1",
@@ -2674,6 +2680,11 @@
      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
    },
    "file-saver": {
      "version": "2.0.5",
      "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
      "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
    },
    "fill-range": {
      "version": "7.0.1",
      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
north-glass-erp/northglass-erp/package.json
@@ -12,6 +12,7 @@
    "@vue-macros/reactivity-transform": "^0.3.23",
    "axios": "^1.5.1",
    "element-plus": "^2.4.0",
    "file-saver": "^2.0.5",
    "moment": "^2.30.1",
    "pinia": "^2.1.6",
    "pinia-plugin-persistedstate": "^3.2.0",
north-glass-erp/northglass-erp/public/importTemplate.xlsx
Binary files differ
north-glass-erp/northglass-erp/src/components/sd/order/OrderDetail.vue
@@ -33,7 +33,7 @@
  columns:[
    {type: 'seq', title: t('basicData.Number'), width: 80 },
    // {field: 'buildingNumber',width:120,  title: '楼号',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'buildingNumber',width:120,  title: t('order.floorNumber'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'productId',width:140,  title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'productName',width:300,  title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    //{field: 'price',width:140,  title: t('order.price'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
@@ -46,7 +46,7 @@
    {field: 'computeArea',width:180,  title: t('order.computeArea'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'computeGrossArea',width:200,  title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'processingNote',width:200,  title: t('order.processingNote'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'remarks',width:140,  title: t('order.floorNumber'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'remarks',width:140,  title: t('basicData.remarks'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'shape',width:120,
      title: t('order.shape'),
      editRender: { name: 'input'},
north-glass-erp/northglass-erp/src/components/sd/order/OrderSizeCheck.vue
@@ -49,6 +49,7 @@
    storage: true
  },
  columns:[
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
    {field: 'width',  title: t('order.width'),editRender: { name: 'input'}},
    {field: 'height',  title:t('order.height'), editRender: { name: 'input'}},
    {field: 'quantity', title: t('order.quantity') ,editRender: { name: 'input'}, },
@@ -110,9 +111,10 @@
const editClosedEvent = ({ row, column,rowIndex}) => {
  const $table = props.OrderDetail
  console.log($table.getTableData())
  let checkVal = row[column.property]*1
  const oldVal = $table.getTableData().fullData[rowIndex][column.property]*1
  if(checkVal!=oldVal){
  if(checkVal!==oldVal){
    row[column.property]=null
  }
}
north-glass-erp/northglass-erp/src/components/sd/order/PrintFoot.vue
New file
@@ -0,0 +1,24 @@
<script setup>
let props = defineProps({
  order:null
})
</script>
<template>
  <div>
    <el-row style="text-align: left ">
      <el-col :span="4">下单员:{{props.order.creator}}</el-col>
      <el-col :span="4">审核人:{{props.order.verifier}}</el-col>
      <el-col :span="4">校对:</el-col>
    </el-row>
    <el-row style="text-align: left ">
      <el-col :span="4">创建时间:{{props.order.createTime}}</el-col>
      <el-col :span="4">审核时间:</el-col>
      <el-col :span="4">打印时间:</el-col>
    </el-row>
  </div>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet1.vue
@@ -1,24 +1,11 @@
<script setup>
import request from "@/utils/request"
import {computed, onMounted, ref} from "vue"
import PrintFoot from "@/components/sd/order/PrintFoot.vue"
import companyInfo from "@/stores/sd/companyInfo"
const company = companyInfo()
//这里是打印的配置项
const  print=ref({
  id: 'printBox',//这里的id就是上面我们的打印区域id,实现指哪打哪
  popTitle: '配置页眉标题', // 打印配置页上方的标题
  extraHead: '', // 最上方的头部文字,附加在head标签上的额外标签,使用逗号分割
  preview: false, // 是否启动预览模式,默认是false
  previewTitle: '预览的标题', // 打印预览的标题
  previewPrintBtnLabel: '预览结束,开始打印', // 打印预览的标题下方的按钮文本,点击可进入打印
  zIndex: 20002, // 预览窗口的z-index,默认是20002,最好比默认值更高
  previewBeforeOpenCallback() { console.log('正在加载预览窗口!'); }, // 预览窗口打开之前的callback
  previewOpenCallback() { console.log('已经加载完预览窗口,预览打开了!') }, // 预览窗口打开时的callback
  beforeOpenCallback() { console.log('开始打印之前!') }, // 开始打印之前的callback
  openCallback() { console.log('执行打印了!') }, // 调用打印时的callback
  closeCallback() { console.log('关闭了打印工具!') }, // 关闭打印的callback(无法区分确认or取消)
  clickMounted() { console.log('点击v-print绑定的按钮了!') },
})
let props = defineProps({
  orderId:null
@@ -37,6 +24,7 @@
const getData = () => {
  request.get(`/order/printOrderProductDetail/${props.orderId}`).then(res => {
    data.value= res.data
    console.log(data.value)
    res.data.orderProductDetail.forEach(item => {
        grossNum.value.quantity += getQuantity(item.productDetail)
        grossNum.value.grossArea += getArea(item.productDetail)
@@ -82,13 +70,6 @@
}
const printSheet = () => {
  // printJS({
  //   printable:'sheet',
  //   type:'html',
  //   //style:styleAll(),
  //   targetStyles: ['*']
  //   //scanStyles:false
  // })
}
@@ -102,62 +83,65 @@
<template>
  <div id="sheet">
    <el-row style="margin-bottom: 0.5rem;">
      <el-col :span="24">
        <h1>
    <table border="1" >
      <tr class="title-s">
        <th colspan="13">
          <img src="../../../assets/northGlass.ico" alt="" style="float: left;max-width: 60px;max-height: 60px">
          天津北玻玻璃工业技术有限公司(THBB-QR7.1-01)
        </h1>
      </el-col>
          <h1>
            {{company.companyName}}
          </h1>
        </th>
      </tr>
    </el-row >
    <el-row style="text-align: left">
      <el-col :span="2" ></el-col>
      <el-col :span="8" >地址:天津宝坻区节能环保工业区天兴路西侧宝中道南侧</el-col>
      <el-col :span="2"></el-col>
      <el-col :span="5" >电话:022-59280088</el-col>
      <el-col :span="5" >传真:022-59280066</el-col>
    </el-row>
    <hr>
    <hr class="hr-border">
      <tr class="title-s">
        <th colspan="5">地址:{{company.address}}</th>
        <th colspan="4">电话:{{ company.telephone }}</th>
        <th colspan="4">传真:{{ company.fax }}</th>
      </tr>
<!--      <tr class="title-s">-->
<!--        <th colspan="13">-->
<!--          <hr>-->
<!--          <hr class="hr-border">-->
<!--        </th>-->
<!--      </tr>-->
    <el-row >
      <el-col :span="24"><h3>玻璃加工单</h3></el-col>
      <tr  class="title-s">
        <th colspan="13">
          <h3>玻璃加工单</h3>
        </th>
    </el-row>
      </tr>
    <table >
      <tr>
        <th class="title-1">客户名称</th>
        <th colspan="3">{{data.order.customerName}}</th>
        <th colspan="6">{{data.order.customerName}}</th>
        <th class="title-1">工程名称</th>
        <th colspan="3">{{data.order.project}}</th>
        <th colspan="5">{{data.order.project}}</th>
      </tr>
      <tr>
        <th class="title-1">生产单号</th>
        <th>{{data.order.orderId}}</th>
        <th colspan="2">{{data.order.orderId}}</th>
        <th class="title-1">下单日期</th>
        <th>{{data.order.createTime}}</th>
        <th  colspan="2">{{data.order.createTime}}</th>
        <th class="title-1">订单类型</th>
        <th>{{data.order.orderType}}</th>
        <th  colspan="3">{{data.order.orderType}}</th>
        <th class="title-1">跟单员</th>
        <th>{{data.order.creator}}</th>
        <th  colspan="2">{{data.order.creator}}</th>
      </tr>
      <tr>
        <th>磨边</th>
        <th></th>
        <th  colspan="2"></th>
        <th>完工日期</th>
        <th>{{data.order.deliveryDate}}</th>
        <th  colspan="2">{{data.order.deliveryDate}}</th>
        <th>商标</th>
        <th>{{data.order.icon}}</th>
        <th  colspan="3">{{data.order.icon}}</th>
        <th>包装</th>
        <th>{{data.order.packType}}</th>
        <th  colspan="2">{{data.order.packType}}</th>
      </tr>
    </table>
    <table border="1" >
      <thead>
        <tr>
          <th class="title-1">玻璃图号</th>
          <th>彩釉图号</th>
@@ -173,16 +157,15 @@
          <th>备注2</th>
          <th>磨边/备注/加工内容</th>
        </tr>
      </thead>
      <tbody v-for="(item,index) in data.orderProductDetail" :key="index">
        <tr>
          <td class="no-change-row">品&nbsp;&nbsp;种</td>
          <td colspan="9">{{item.productName}}</td>
          <td class="no-change-row">产品描述</td>
          <td colspan="3"></td>
          <td colspan="2"></td>
        </tr>
        <tr v-for="(item1,index1) in item.productDetail" :key="index1">
          <td>{{}}</td>
          <td></td>
          <td></td>
          <td></td>
          <td>{{item1.width +'*'+item1.height}}</td>
@@ -207,7 +190,6 @@
      </tbody>
      <tfoot>
        <tr>
          <td colspan="4">总计</td>
          <td>{{grossNum.quantity}}</td>
@@ -216,39 +198,30 @@
          <td colspan="6"></td>
        </tr>
        <tr>
          <td colspan="13">
<!--            v-model=""-->
            <el-input
                v-model="data.order.processingNote"
                :rows="2"
                type="textarea"
                placeholder=""
                readonly
                autosize
                resize="none"
          <td colspan="13" style="white-space: pre-wrap;text-align:left ">
            <template v-for="(item,index) in data.order.processingNote.split('\n')">
              {{item}}
              <br>
            </template>
<!--            <el-input-->
<!--                v-model="data.order.processingNote"-->
<!--                :rows="2"-->
<!--                type="textarea"-->
<!--                placeholder=""-->
<!--                readonly-->
<!--                autosize-->
<!--                resize="none"-->
            />
<!--            />-->
          </td>
        </tr>
      </tfoot>
    </table>
    <el-row style="text-align: left ">
      <el-col :span="4">下单员:</el-col>
      <el-col :span="4">审核人:</el-col>
      <el-col :span="4">校对:</el-col>
    </el-row>
    <el-row style="text-align: left ">
      <el-col :span="4">创建时间:</el-col>
      <el-col :span="4">审核时间:</el-col>
      <el-col :span="4">打印时间:</el-col>
    </el-row>
    <print-foot :order='data.order' />
  </div>
</template>
<style scoped>
#sheet{
  width: 100%;
  height: 100%;
  text-align: center;
}
h1,h3{
@@ -269,15 +242,22 @@
table{
  border-collapse: collapse;
  border: 1px solid black;
  width: 100%;
  text-align: center;
}
tr,td,th{
  border: 1px solid black;
}
th,.no-change-row {
  white-space: nowrap;
}
.title-1{
  width: 76px;
}
.title-s,.title-s th{
  border:0
}
.hr-border{
@@ -287,4 +267,5 @@
  color: black;
}
</style>
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet2.vue
@@ -1,6 +1,9 @@
<script setup>
import request from "@/utils/request"
import {computed, onMounted, ref} from "vue"
import PrintFoot from "@/components/sd/order/PrintFoot.vue"
import companyInfo from "@/stores/sd/companyInfo"
const company = companyInfo()
let props = defineProps({
  orderId:null
@@ -64,80 +67,79 @@
  return parseFloat(perimeter.toFixed(3))
}
const Url = ''
</script>
<template>
  <div id="sheet">
    <table border="1">
      <tr class="title-s">
        <th colspan="14">
          <img src="../../../assets/northGlass.ico" alt="" style="float: left;max-width: 60px;max-height: 60px">
          <h1>
            {{company.companyName}}
          </h1>
        </th>
      </tr>
    <el-row style="margin-bottom: 0.5rem;">
      <img src="../../../assets/northGlass.ico" alt="" style="max-width: 60px;max-height: 60px">
      <h1>天津北玻玻璃工业技术有限公司(THBB-QR7.1-01)</h1>
    </el-row >
    <el-row style="text-align: left">
      <el-col :span="2" ></el-col>
      <el-col :span="8" >地址:天津宝坻区节能环保工业区天兴路西侧宝中道南侧</el-col>
      <el-col :span="2"></el-col>
      <el-col :span="5" >电话:022-59280088</el-col>
      <el-col :span="5" >传真:022-59280066</el-col>
    </el-row>
    <hr>
    <hr class="hr-border">
      <tr class="title-s">
        <th colspan="6">地址:{{company.address}}</th>
        <th colspan="4">电话:{{ company.telephone }}</th>
        <th colspan="4">传真:{{ company.fax }}</th>
      </tr>
    <el-row >
      <h3>玻璃加工单</h3>
    </el-row>
    <table>
      <tr class="title-s" >
        <th colspan="14">
          <h3>玻璃加工单</h3>
        </th>
      </tr>
      <tr>
        <th class="title-1">客户名称</th>
        <th colspan="3"></th>
        <th colspan="6"></th>
        <th class="title-1">工程名称</th>
        <th colspan="3"></th>
        <th colspan="6"></th>
      </tr>
      <tr>
        <th class="title-1">生产单号</th>
        <th></th>
        <th colspan="3"></th>
        <th class="title-1">下单日期</th>
        <th></th>
        <th colspan="2"></th>
        <th class="title-1">订单类型</th>
        <th></th>
        <th colspan="3"></th>
        <th class="title-1">跟单员</th>
        <th></th>
        <th colspan="2"></th>
      </tr>
      <tr>
        <th>磨边</th>
        <th></th>
        <th colspan="3"></th>
        <th>完工日期</th>
        <th></th>
        <th colspan="2"></th>
        <th>商标</th>
        <th></th>
        <th colspan="3"></th>
        <th>包装</th>
        <th></th>
        <th colspan="2"></th>
      </tr>
    </table>
    <table  >
      <thead>
      <tr>
        <th >序号</th>
        <th >图号</th>
        <th>彩釉图号</th>
        <th>编号</th>
        <th>规格(宽W*高H)</th>
        <th>片数</th>
        <th>面积</th>
        <th>延米</th>
        <th>交货日期</th>
        <th>序号</th>
        <th>箱架号</th>
        <th>备注1</th>
        <th>备注2</th>
        <th>磨边/备注/加工内容</th>
      </tr>
      </thead>
        <tr>
          <th >序号</th>
          <th >图号</th>
          <th>彩釉图号</th>
          <th>编号</th>
          <th>规格(宽W*高H)</th>
          <th>片数</th>
          <th>面积</th>
          <th>延米</th>
          <th>交货日期</th>
          <th>序号</th>
          <th>箱架号</th>
          <th>备注1</th>
          <th>备注2</th>
          <th>磨边/备注/加工内容</th>
        </tr>
      <tbody v-for="(item,index) in data.orderDetail" :key="index">
      <tr>
        <td colspan="2" class="no-change-row">产品名称</td>
@@ -148,9 +150,9 @@
      <template v-for="(item1,index1) in item.productDetail" :key="index1">
        <tr  >
          <td>{{item1.orderNumber}}</td>
          <td></td>
          <td></td>
          <td></td>
          <td>{{}}</td>
          <td>{{}}</td>
          <td>{{}}</td>
          <td>{{item1.width}}*{{item1.height}}</td>
          <td>{{item1.quantity}}</td>
          <td>{{item1.grossArea}}</td>
@@ -163,7 +165,7 @@
          <td></td>
        </tr>
        <tr>
        <tr v-if="item1.differentSize">
          <td></td>
          <td>标记</td>
          <td colspan="4">半成品名称</td>
@@ -174,9 +176,9 @@
          <td colspan="4"></td>
        </tr>
          <tr  v-for="(item2,index2) in item1.orderGlassDetails" :key="index2" >
        <tr v-if="item1.differentSize" v-for="(item2,index2) in item1.orderGlassDetails" :key="index2" >
            <td></td>
            <td style="border: 0"></td>
            <td>{{ item2.technologyNumber }}</td>
            <td colspan="4"> {{item2.glassChild}}</td>
            <td>{{item2.childWidth}}</td>
@@ -188,19 +190,6 @@
          </tr>
      </template>
      <tr>
        <td colspan="5">小计</td>
        <td>{{getQuantity(item.productDetail)}}</td>
@@ -211,7 +200,6 @@
      </tbody>
      <tfoot>
      <tr>
        <td colspan="5">总计</td>
        <td>{{grossNum.quantity}}</td>
@@ -220,32 +208,15 @@
        <td colspan=""></td>
      </tr>
      <tr>
        <td colspan="14">
          <!--            v-model=""-->
          <el-input
              v-model="data.order.processingNote"
              :rows="2"
              type="textarea"
              placeholder=""
              readonly
              autosize
              resize="none"
          />
        <td colspan="14" style="white-space: pre-wrap;text-align:left ">
          <template v-for="(item,index) in data.order.processingNote.split('\n')">
            {{item}}
            <br>
          </template>
        </td>
      </tr>
      </tfoot>
    </table>
    <el-row style="text-align: left ">
      <el-col :span="4">下单员:</el-col>
      <el-col :span="4">审核人:</el-col>
      <el-col :span="4">校对:</el-col>
    </el-row>
    <el-row style="text-align: left ">
      <el-col :span="4">创建时间:</el-col>
      <el-col :span="4">审核时间:</el-col>
      <el-col :span="4">打印时间:</el-col>
    </el-row>
    <print-foot :order='data.order' />
  </div>
</template>
@@ -276,6 +247,7 @@
  border-collapse: collapse;
  border: 1px solid black;
  width: 100%;
  text-align: center;
}
table, th, td {
  border: 1px solid black;
@@ -295,5 +267,9 @@
  background-color: black;
  color: black;
}
.title-s,.title-s th{
  border:0
}
</style>
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue
File was deleted
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -223,6 +223,7 @@
            calculationAreaPrompt3:'是否按照',
            calculationAreaPrompt4:'计算',
            warning:'提示',
            calculationAreaPrompt5:'订单重复是否继续创建',
        }
    },
north-glass-erp/northglass-erp/src/stores/sd/companyInfo.js
@@ -3,7 +3,7 @@
export default defineStore('companyInfo', {
    state: () => ({
        companyName: '天津北玻玻璃工业技术有限公司',
        companyName: '天津北玻玻璃工业技术有限公司(THBB-QR7.1-01)',
        address:'天津宝坻区节能环保工业区天兴路西侧宝中道南侧',
        telephone:'022-59280088',
        fax:'022-59280066',
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -139,9 +139,9 @@
  },//表头参数
  columns:[
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
    {field: 'buildingNumber',width:120,  title: '楼号',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'productId',width:140,  title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'productName',width:300,  title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'buildingNumber',width:120,  title: t('order.floorNumber'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'price',width:140,  title: t('order.price'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'grossAmount',width:160,  title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'width',width:120,  title: t('order.width') ,editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
@@ -218,7 +218,8 @@
    width:[
      {
        validator ({ cellValue }) {
          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
          //const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
          if (!regex.test(cellValue)) {
            return new Error(t('basicData.msg.range99999Dec2'))
          }
@@ -242,7 +243,8 @@
      {'code': 'Craft', 'name': t('order.technology'),status: 'primary',disabled: true},
      {'code': 'review', 'name': t('basicData.review'),status: 'primary',disabled: true},
      {'code': 'updateMoney', 'name': t('order.amountReset'),status: 'primary',disabled: true},
      {'code': 'saveOrder', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save',disabled: false}
      {'code': 'saveOrder', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save',disabled: false},
    ],
    slots: {
      tools: 'toolbar_buttons'
@@ -337,10 +339,13 @@
              ElMessage.error(t('basicData.msg.checkoutLose'))
              return
            }
            if($grid.getTableData().tableData.length!=$grid.getTableData().fullData.length){
              ElMessage.error("请先取消筛选")
              return
            }
            let order ={
              title:titleUploadData.value,
              detail:$grid.getTableData().fullData,
              detail:$grid.getTableData().tableData,
              otherMoney:otherMoney.value
            }
            const errorAreaList = $grid.getTableData().fullData.filter(
@@ -362,14 +367,65 @@
              }
              ).then(()=>{
                errorAreaComputed()
                saveOrder(order)
                selectOrder(order)
              }).catch(()=>{
                saveOrder(order)
                selectOrder(order)
              })
            }else {
              saveOrder(order)
              selectOrder(order)
            }
          }
          break
        }
        case 'saveOrderTitle': {
          if(!gridOptions.menuConfig.body.options[0][5].disabled){
            ElMessage.error(t('order.msg.amountReset'))
            return
          }
          const project = titleUploadData.value.project
          if(project === null || project === undefined || project === ''){
            ElMessage.error(t('order.msg.projectCheck'))
            return
          }
          const customer = titleUploadData.value.customerId
          if(customer === null || customer === undefined || customer === ''){
            ElMessage.error(t('order.msg.customerCheck'))
            return
          }
          const salasMan = titleUploadData.value.salesman
          if(salasMan === null || salasMan === undefined || salasMan === ''){
            ElMessage.error(t('order.msg.salasManCheck'))
            return
          }
          const calculateType = titleUploadData.value.calculateType
          if(calculateType === null || calculateType === undefined || calculateType === ''){
            ElMessage.error(t('order.msg.calculateTypeCheck'))
            return
          }
          if ($grid) {
            const errMap = await $grid.validate(true)
            if (errMap) {
              ElMessage.error(t('basicData.msg.checkoutLose'))
              return
            }
            let order ={
              title:titleUploadData.value,
            }
            const errorAreaList = $grid.getTableData().fullData.filter(
                item=>item.computeArea*1 < errorArea.value*1
            )
            saveOrderTitle(order)
@@ -395,7 +451,23 @@
            ElMessage.error(t('order.msg.tableLengthMax'))
            return
          }
          $grid.insertAt({}, $grid.getTableData.length || -1)
          if ($grid.getTableData().tableData.length != $grid.getTableData().fullData.length){
            ElMessage.error("请先取消筛选")
            return
          }
          let result = toolbarButtonClickEvent()
          let lengths = 0
          if (result!=null){
            lengths=result.start
          }
          /*console.log($grid.getTableData().tableData)
          console.log($grid.getTableData().fullData)*/
          //$grid.insertAt({}, $grid.getTableData.length || -1)
          if($grid.getTableData().fullData.length>lengths+1){
            $grid.insertAt({}, lengths+1)
          }else{
            $grid.insertAt({}, -1)
          }
          break
        }
        case 'deleteRow':{
@@ -419,13 +491,35 @@
        case 'copyChecked' :{
          let result = toolbarButtonClickEvent()
          if(result){
            const dataList = xGrid.value.getTableData().visibleData
            const val = dataList[result.start][result.cell]
            dataList.forEach((item,index) =>{
              if(index>=result.start && index<=result.end){
                item[result.cell] = val
              }
            })
            if(result.cell=='productName'){
              const dataList = xGrid.value.getTableData().visibleData
              const val = dataList[result.start][result.cell]
              const val1 = dataList[result.start]["productId"]
              dataList.forEach((item,index) =>{
                if(index>=result.start && index<=result.end){
                  item[result.cell] = val
                  item["productId"] = val1
                }
              })
            }else if(result.cell=='productId'){
              const dataList = xGrid.value.getTableData().visibleData
              const val = dataList[result.start][result.cell]
              const val1 = dataList[result.start]["productName"]
              dataList.forEach((item,index) =>{
                if(index>=result.start && index<=result.end){
                  item[result.cell] = val
                  item["productName"] = val1
                }
              })
            }else{
              const dataList = xGrid.value.getTableData().visibleData
              const val = dataList[result.start][result.cell]
              dataList.forEach((item,index) =>{
                if(index>=result.start && index<=result.end){
                  item[result.cell] = val
                }
              })
            }
          }
          gridOptions.menuConfig.body.options[0][5].disabled=false
          break
@@ -433,13 +527,36 @@
        case 'copyAll' :{
          let result = toolbarButtonClickEvent()
          if(result){
            const dataList = xGrid.value.getTableData().visibleData
            const val = dataList[result.start][result.cell]
            dataList.forEach((item,index) =>{
              if(index>=result.start ){
                item[result.cell] = val
              }
            })
            if(result.cell=='productName'){
              const dataList = xGrid.value.getTableData().visibleData
              const val = dataList[result.start][result.cell]
              const val1 = dataList[result.start]["productId"]
              dataList.forEach((item,index) =>{
                if(index>=result.start ){
                  item[result.cell] = val
                  item["productId"] = val1
                }
              })
            }else if(result.cell=='productId'){
              const dataList = xGrid.value.getTableData().visibleData
              const val = dataList[result.start][result.cell]
              const val1 = dataList[result.start]["productName"]
              dataList.forEach((item,index) =>{
                if(index>=result.start ){
                  item[result.cell] = val
                  item["productName"] = val1
                }
              })
            }else{
              const dataList = xGrid.value.getTableData().visibleData
              const val = dataList[result.start][result.cell]
              dataList.forEach((item,index) =>{
                if(index>=result.start ){
                  item[result.cell] = val
                }
              })
            }
          }
          gridOptions.menuConfig.body.options[0][5].disabled=false
          break
@@ -568,6 +685,10 @@
          status: 'primary',
          'name': (res.data.order.orderReview>0?t('basicData.cancel'):t('basicData.restore'))}
        gridOptions.toolbarConfig.buttons.push(button)
        const buttonTitle = {'code': 'saveOrderTitle',
          status: 'primary',
          'name': (res.data.order.orderReview>0?'保存表头':'保存表头')}
        gridOptions.toolbarConfig.buttons.push(buttonTitle)
        if(res.data.order.orderReview===-2){
          gridOptions.toolbarConfig.buttons[2].disabled = true
          gridOptions.toolbarConfig.buttons[3].disabled = true
@@ -665,9 +786,49 @@
  }
})
//查询重复订单方法
const selectOrder = (order) => {
  console.log(order)
  request.post(`/order/selectOrder`,order).then((res) => {
    if(res.code==200){
      if(res.data.data>0){
        ElMessageBox.confirm(`${t('order.msg.calculationAreaPrompt1')}
                  ${t('order.msg.calculationAreaPrompt5')}`,
            t('order.msg.warning'),
            {
              confirmButtonText: t('basicData.confirmButtonText'),
              cancelButtonText: t('basicData.cancelButtonText'),
              type: 'warning',
            }
        ).then(()=>{
          saveOrder(order)
        }).catch(()=>{
        })
      }else{
        saveOrder(order)
      }
    }
  }).catch((err)=>{
    ElMessage.error(t('basicData.msg.ServerConnectionError'))
    router.push("/login")
  })
}
//保存订单方法
const saveOrder = (order) => {
  request.post(`/order/saveOrder`,order).then((res) => {
    if(res.code==200){
      ElMessage.success(t('basicData.msg.saveSuccess'))
      router.push({path:'/main/order/selectOrder'})
    }else {
      ElMessage.error(res.msg)
    }
  })
}
//保存订单表头方法
const saveOrderTitle = (order) => {
  request.post(`/order/saveOrderTitle`,order).then((res) => {
    if(res.code==200){
      ElMessage.success(t('basicData.msg.saveSuccess'))
      router.push({path:'/main/order/selectOrder'})
@@ -989,7 +1150,7 @@
        </el-col>
        <el-col  :span="2"><el-text>{{$t('order.icon')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.icon"  clearable placeholder=" " >
          <el-select v-model="titleUploadData.icon"  clearable placeholder=" " allow-create  filterable>
            <el-option  v-for="item in titleSelectJson['icon']"
                       :key="item.id"
                       :label="item.basicName"
@@ -998,7 +1159,7 @@
        </el-col>
        <el-col  :span="2"><el-text>{{$t('order.packType')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.packType"  clearable placeholder=" " >
          <el-select v-model="titleUploadData.packType"  clearable placeholder=" " allow-create  filterable >
            <el-option v-for="item in titleSelectJson['packType']"
                       :key="item.id"
                       :label="item.basicName"
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -13,9 +13,9 @@
  import OrderProcess from "@/components/sd/order/OrderProcess.vue"
  import PrintSheet1 from "@/components/sd/order/PrintSheet1.vue"
  import PrintSheet2 from "@/components/sd/order/PrintSheet2.vue"
  import PrintSheet3 from "@/components/sd/order/PrintSheet3.vue"
  import {useI18n} from "vue-i18n"
  import {Download, Printer} from "@element-plus/icons-vue/global";
  import {Download, Printer} from "@element-plus/icons-vue/global"
  import { saveAs } from "file-saver"
  const { t } = useI18n()
  const userStore = useUserInfoStore()
  const tabsValue=ref('1')
@@ -75,8 +75,7 @@
              name: '加工单',
              children: [
                { code: 'sheet1', name: '横版-普通' },
                { code: 'sheet2', name: '横版-多层明细' },
                { code: 'sheet3', name: '横版-多层弯钢' }
                { code: 'sheet2', name: '横版-多层明细' }
              ]
            }
           // { code: 'getProcessList', name: t('searchOrder.processFlows'), prefixIcon: 'vxe-icon-file-txt', visible: true}
@@ -349,7 +348,15 @@
  const printContent = ref({
    id: 'child',
  })
const exportFile = ()=>{
  const html = document.getElementById("child").innerHTML // 获取需要导出的HTML内容
  const blob = new Blob([html], { type: 'application/vnd.ms-excel' }) // 创建Blob对象
  saveAs(blob, rowClickIndex.value.orderId+".xlsx");
}
</script>
@@ -488,12 +495,11 @@
    >
      <template #header="{ close, titleId, titleClass }">
        <el-button v-print="printContent"  :icon="Printer" circle />
        <el-button  :icon="Download" circle />
        <el-button @click="exportFile" :icon="Download" circle />
      </template>
      <print-sheet1 id="child"  v-if="sheetIndex===1" :orderId="rowClickIndex.orderId" />
      <print-sheet2 id="child" v-else-if="sheetIndex===2" :orderId="rowClickIndex.orderId" />
      <print-sheet3 id="child" v-else :orderId="rowClickIndex.orderId" />
    </el-dialog>
@@ -516,6 +522,10 @@
  width: 100%;
  overflow-y: auto;
}
#child{
  width:100%;
  height: 100%;
}
north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java
@@ -41,6 +41,24 @@
            throw new ServiceException(Constants.Code_500,Constants.Code_msg);
        }
    }
    @ApiOperation("订单保存")
    @PostMapping("/saveOrderTitle")
    @SaCheckPermission("createOrder.add")
    public Result saveOrderTitle(@RequestBody Map<String, Object> orderMap) throws Exception {
        if(orderService.saveOrderTitle(orderMap))    {
            return Result.seccess(true);
        }else{
            throw new ServiceException(Constants.Code_500,Constants.Code_msg);
        }
    }
    @ApiOperation("重复订单查询")
    @SaCheckPermission("createOrder.search")
    @PostMapping("/selectOrder")
    public Result selectOrder(@RequestBody Map<String, Object> orderMap) throws Exception {
        return Result.seccess(orderService.selectOrder(orderMap));
    }
    @ApiOperation("订单分页筛选查询")
    @SaCheckPermission("selectOrder.search")
    @PostMapping("/getOrderList/{pageNum}/{pageSize}/{orderType}/{selectDate}")
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java
@@ -62,6 +62,8 @@
    private String levelTwo;
    @TableField(exist= false)
    private String totalThickness;
    @TableField(exist= false)
    private Integer differentSize;//用于标签打印时  明细是否显示
    //private Product product;
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderGlassDetailMapper.java
@@ -17,4 +17,6 @@
    List<OrderGlassDetail> selectOrderGlassDetailByOrderId(@Param("orderId") String orderId);
    void updateSizeAndProcess(@Param("orderGlassDetails")List<OrderGlassDetail> orderGlassDetails);
    Integer getDifferentSizeNumber(String orderId, Integer orderNumber);
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
@@ -19,9 +19,13 @@
    boolean reviewOrderById(String id, Integer status, String userId, String userName);
    boolean reviewOrderByIds(String id, Integer status, String userId, String userName);
    boolean reviewProcessById(String id, Integer status);
    boolean updateMoney(@Param("order") Order order);
    Integer cancelOrder(String id);
    Integer selectOrder(@Param("order") Order order);
}
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -72,6 +72,49 @@
        }
        return saveState;
    }
    public boolean saveOrderTitle(Map<String,Object> orderMap) throws Exception {
        JSONObject orderJson = new JSONObject(orderMap);
        Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("title")), Order.class);
        boolean saveState = true;
        //设置回滚点
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        //判断传入id参数是否为空,未传入id为空插入订单表,传入更新表
        try{
            LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
            updateWrapper.eq(Order::getOrderId, order.getOrderId());
            orderMapper.update(order,updateWrapper);
            //修改订单主表面积与周长以及重量
            orderMapper.updateOrderParameter(order.getOrderId());
        }catch (Exception e){
            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
            //将异常传入数据库
            SysError sysError = new SysError();
            sysError.setError(e.toString());
            sysError.setFunc("saveOrder");
            sysErrorService.insert(sysError);
            saveState = false;
            //throw new Exception();
        }
        return saveState;
    }
    public Map<String,Object> selectOrder(Map<String,Object> orderMap) throws Exception {
        JSONObject orderJson = new JSONObject(orderMap);
        Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("title")), Order.class);
        Map<String,Object> map = new HashMap<>();
        if(order.getOrderId()!=null){
            map.put("data",0);
        }else{
            map.put("data",orderMapper.selectOrder(order));
        }
        return map;
    }
    //生成订单数据
    public void insertOrder(Order order,List<OrderDetail> OrderDetails,List<OrderOtherMoney> orderOtherMoneyList) {
        Integer maxOrderId = orderMapper.selectMaxOrderId();
@@ -86,7 +129,9 @@
        order.setOrderId(orderId);
        order.setCreateOrder(2);
        orderMapper.insert(order);
        insertOtherDetail(orderId,OrderDetails,orderOtherMoneyList);
    }
    //修改订单数据,并且重新生成多个副表数据
@@ -94,17 +139,17 @@
        LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.eq(Order::getOrderId, order.getOrderId());
        orderMapper.update(order,updateWrapper);
        //删除订单明细表
        orderDetailMapper.delete(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, order.getOrderId()));
        //删除订单小片表
        orderGlassDetailMapper.delete(new LambdaQueryWrapper<OrderGlassDetail>().eq(OrderGlassDetail::getOrderId, order.getOrderId()));
        //删除其他金额明细表
        orderOtherMoneyMapper.delete(new LambdaQueryWrapper<OrderOtherMoney>().eq(OrderOtherMoney::getOrderId, order.getOrderId()));
            //删除订单明细表
            orderDetailMapper.delete(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, order.getOrderId()));
            //删除订单小片表
            orderGlassDetailMapper.delete(new LambdaQueryWrapper<OrderGlassDetail>().eq(OrderGlassDetail::getOrderId, order.getOrderId()));
            //删除其他金额明细表
            orderOtherMoneyMapper.delete(new LambdaQueryWrapper<OrderOtherMoney>().eq(OrderOtherMoney::getOrderId, order.getOrderId()));
        //删除订单工艺表
       // orderProcessDetailMapper.delete(new LambdaQueryWrapper<OrderProcessDetail>().eq(OrderProcessDetail::getOrderId, order.getOrderId()));
        insertOtherDetail(order.getOrderId(),OrderDetails,orderOtherMoneyList);
            //删除订单工艺表
            // orderProcessDetailMapper.delete(new LambdaQueryWrapper<OrderProcessDetail>().eq(OrderProcessDetail::getOrderId, order.getOrderId()));
            insertOtherDetail(order.getOrderId(),OrderDetails,orderOtherMoneyList);
    }
@@ -239,8 +284,12 @@
        Order order = orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",id));
        if(order.getProcessReview()!=2){
            throw  new ServiceException(Constants.Code_600,"该订单还未审核");
        }else if(status==0){
            return orderMapper.reviewOrderByIds(id,status,userId,userName);
        }else{
            return orderMapper.reviewOrderById(id,status,userId,userName);
        }
        return orderMapper.reviewOrderById(id,status,userId,userName);
    }
    //工艺审核界面审核更新数据
    public boolean reviewProcessById(String id, Integer status,List<OrderGlassDetail> orderGlassDetails) {
@@ -379,10 +428,12 @@
            orderProductDetailMap.put("productName",map.get("productName"));
            List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId);
            orderDetails.forEach(orderDetail->{
                orderDetail.setGrossArea(
                        Double.parseDouble(String.format("%.3f",
                        Double.parseDouble(String.format("%.3f",Double.parseDouble(
                                String.format("%.3f",
                                orderDetail.getWidth()*orderDetail.getHeight()/1000000)
                                ) * orderDetail.getQuantity()
                                ) * orderDetail.getQuantity()))
                );
            });
@@ -410,9 +461,10 @@
            List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId);
            orderDetails.forEach(orderDetail->{
                orderDetail.setGrossArea(
                        Double.parseDouble(String.format("%.3f",
                                orderDetail.getWidth()*orderDetail.getHeight()/1000000)
                        ) * orderDetail.getQuantity()
                        Double.parseDouble(String.format("%.3f",Double.parseDouble(
                                String.format("%.3f",
                                        orderDetail.getWidth()*orderDetail.getHeight()/1000000)
                        ) * orderDetail.getQuantity()))
                );
                List<OrderGlassDetail> orderGlassDetails =
@@ -420,7 +472,9 @@
                                new QueryWrapper<OrderGlassDetail>().
                                        eq("order_id",orderId).
                                        eq("order_number",orderDetail.getOrderNumber())
                        );
                );
                Integer differentSize = orderGlassDetailMapper.getDifferentSizeNumber(orderId,orderDetail.getOrderNumber());
                orderDetail.setDifferentSize(differentSize);
                orderDetail.setOrderGlassDetails(orderGlassDetails);
            });
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -908,7 +908,7 @@
               dd.money,
               dd.area,
               ifnull(od.processing_note,"") as processingNote,
               ifnull(od.remarks,"") as buildingNumber,
               ifnull(od.buildingNumber,"") as buildingNumber,
               od.price
        from delivery_detail dd
                 left join order_detail od on dd.order_id = od.order_id and dd.order_number = od.order_number
north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml
@@ -787,4 +787,6 @@
</mapper>
north-glass-erp/src/main/resources/mapper/sd/OrderGlassDetailMapper.xml
@@ -143,4 +143,14 @@
        </foreach>
    </update>
    <select id="getDifferentSizeNumber">
       select if(count(id)>1,1,0) from (select
          id
        from order_glass_detail as a
        where a.order_id = #{orderId}
          and a.order_number = #{orderNumber}
        group by child_width,child_height) as c
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -3,6 +3,16 @@
        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="selectOrder">
        select
            count(*)
        from
            sd.`order` as o
        where
            o.quantity=#{order.quantity} and o.area=#{order.area} and o.project=#{order.project} and o.customer_id=#{order.customerId} and o.money=#{order.money}
    </select>
    <select id="selectMaxOrderId">
        select
           ifnull(SUBSTR(max(order_id) from 9),0)
@@ -186,6 +196,12 @@
                           verifier = #{userName}
                           where order_id = #{id}
    </update>
    <update id="reviewOrderByIds">
        update `order` set order_review = #{status},process_review = #{status},
                           verifier_id = #{userId},
                           verifier = #{userName}
        where order_id = #{id}
    </update>
    <update id="reviewProcessById">
        update `order` set process_review = #{status} where order_id = #{id}