wuyouming666
2025-04-07 ba6b8c6be389e1c76f15f85e43f2d55ff5d34caf
Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
46个文件已修改
1个文件已添加
980 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/BasicTable.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderNumberReportTransfer.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet4.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/ar.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/en.js 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/ru.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/companySet/天津北玻.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/companySet/常州吉利.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/companySet/新疆恒鑫.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/companySet/金华天成.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/ingredientStock/IngredientsStock.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/ingredientStock/SelectIngredientsStock.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi2.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/TeamOutput.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/OrderProductSummaryReport.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/config/StpInterfaceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/dto/pp/TeamOutputDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReworkMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java 165 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/application.yml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/Report.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/BasicTable.vue
@@ -139,8 +139,6 @@
  gridOptions.columns = props.childrenData.columns
  getReportData()
  addListener(xGrid.value,gridOptions)
})
function filterChanged(column){
  //gridOptions.loading=true
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue
@@ -317,151 +317,7 @@
    </table>
    <!--    <table border="1" >
      <thead>
      <tr class="title-s">
        <th colspan="13">
          <h1>
            {{company.companyName}}
          </h1>
        </th>
      </tr>
      <tr  class="title-s">
        <th colspan="2"></th>
        <th colspan="5">
          <h3>销售发货单</h3>
        </th>
        <th colspan="2" style="text-align: left;">发货单号:<span>{{delivery.deliveryId}}</span></th>
      </tr>
      <tr>
        <th style="text-align: left;border:none;" colspan="4">客户名称:<span>{{delivery.customerName}}</span></th>
        <th style="text-align: left;border:none;" colspan="3">项目名称:<span>{{delivery.project}}</span></th>
        <th style="text-align: left;border:none;" colspan="2">联系人:<span>{{delivery.contacts}}</span></th>
      </tr>
      <tr>
        <th style="text-align: left;border:none;" colspan="7">送货地址:<span>{{delivery.deliveryAddress}}</span></th>
        <th style="text-align: left;border:none;" colspan="2">联系电话:<span>{{delivery.contactNumber}}</span></th>
      </tr>
      <tr>
        <th style="width: 6%;">序号</th>
        <th style="width: 20%;">楼层编号</th>
        <th style="width: 20%;" colspan="2">宽X高</th>
        <th style="width: 10%;">数量</th>
        <th style="width: 10%;">面积</th>
        <th style="width: 10%;">单价</th>
        <th style="width: 12%;">金额</th>
        <th style="width: 12%;" colspan="2">加工要求</th>
      </tr>
      </thead>
      <template v-for="(item, index) in produceList" :key="index" >
        <tr>
          <td style="font-size: 15px;text-align: left" colspan="4">产品名称:<span>{{item.DeliveryDetail.orderDetail.productName}}</span></td>
          <td style="font-size: 15px;text-align: left" colspan="3">对方单号:</td>
          <td style="font-size: 15px;text-align: left" colspan="3">订单编号:<span>{{item.DeliveryDetail.orderDetail.orderId}}</span></td>
        </tr>
        <tr class="day-in" v-for="(items, index1) in item.DeliveryDetailList" :key="index1">
          <td>{{items.order_number}}</td>
          <td>{{items.buildingNumber}}</td>
          <td colspan="2" style="font-size: 15px;font-weight: bold;">{{items.width}}x{{items.height}}</td>
          <td>{{items.quantity}}</td>
          <td>{{items.area}}</td>
          <td>{{items.price}}</td>
          <td>{{items.money}}</td>
          <td colspan="2">{{items.processingNote}}</td>
        </tr>
        <tr class="day-in" >
          <td style="font-size: 15px;" colspan="4">小计:</td>
          <td>{{item.DeliveryDetail.quantity}}</td>
          <td>{{item.DeliveryDetail.area}}</td>
          <td></td>
          <td>{{item.DeliveryDetail.money}}</td>
          <td></td>
        </tr>
      </template>
      <tr class="day-in">
        <td style="font-size: 15px;" colspan="4">合计:</td>
        <td>{{delivery.quantity}}</td>
        <td>{{delivery.area}}</td>
        <td></td>
        <td>{{delivery.money-otherMoneys-delivery.freight}}</td>
        <td></td>
      </tr>
      <tr class="day-in">
        <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6" colspan="4">
          <div style="display: flex;font-size: 10px;text-align: center;">
            <div style="width: 25%">加工费用</div>
            <div  style="width: 25%">单价</div>
            <div  style="width: 25%">数量</div>
            <div  style="width: 25%">金额</div>
          </div>
        </td>
        <td style="text-align: left;border:none;font-size: 15px;" colspan="5">总金额:&nbsp;&nbsp;&nbsp;&nbsp;{{delivery.money}}</td>
      </tr>
      <tr class="day-in">
        <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6;" colspan="4" >
          <div style="display: flex;font-size: 10px;text-align: center" v-for="(item, index2) in otherMoney" :key="index2">
            <div style="width: 25%">{{item.DeliveryDetailOtherMoney.alias}}</div>
            <div  style="width: 25%">{{item.DeliveryDetailOtherMoney.price}}</div>
            <div  style="width: 25%">{{item.DeliveryDetailOtherMoney.count}}</div>
            <div  style="width: 25%">{{item.DeliveryDetailOtherMoney.monery}}</div>
          </div>
          <div style="display: flex;font-size: 10px;text-align: center" v-if="delivery.freight>0">
            <div style="width: 25%">运费</div>
            <div  style="width: 25%">{{delivery.freightPrice}}</div>
            <div  style="width: 25%">{{delivery.freightQuantity}}</div>
            <div  style="width: 25%">{{delivery.freight}}</div>
          </div>
        </td>
        <td style="text-align: left;border:none;font-size: 15px;" colspan="5">大写金额:&nbsp;&nbsp;&nbsp;&nbsp;{{money}}</td>
      </tr>
      <tfoot style="border: 0">
      &lt;!&ndash;      <el-row :gutter="24">
              <el-col :span="4"><div style="font-size: 12px" class="bottom">制单员:{{data.order.creator}}<span style="font-size: 10px"></span></div></el-col>
              <el-col :span="6"><div style="font-size: 12px" class="bottom">制单日期:{{data.order.createTime}}<span style="font-size: 10px"></span></div></el-col>
              <el-col :span="4"><div style="font-size: 12px" class="bottom">审核员:{{data.order.verifier}}</div></el-col>
              <el-col :span="6"><div style="font-size: 12px" class="bottom">审核日期:{{data.order.updateTime}}</div></el-col>
              <el-col :span="4"><div style="font-size: 12px" class="bottom">打印人:{{username}}</div></el-col>
            </el-row>&ndash;&gt;
      <tr class="day-in" style="border: 0;">
        <td colspan="9" style="border: 0;">
          <div style="display:flex;">
            <div style="width: 15%">制单员:{{ delivery.creator }}</div>
            <div style="width: 25%">制单日期:{{ delivery.createTime }}</div>
            <div style="width: 10%">发货员:</div>
            <div style="width: 10%">司机:</div>
            <div style="width: 15%">客户签字:</div>
            <div style="width: 15%">签收日期:</div>
          </div>
        </td>
      </tr>
      <tr>
        <td colspan="9" style="border: 0;">
          <div style="display:flex;" class="bottom">架子&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只</div>
          <div style="display:flex;" class="bottom">
            {{takeCare}}
          </div>
        </td>
      </tr>
      <tr>
        <td colspan="9" style="border: 0;">
          <div style="display:flex;" class="bottom">
            {{remark}}
          </div>
        </td>
      </tr>
      </tfoot>
    </table>-->
  </div>
@@ -474,11 +330,18 @@
<style scoped>
@media print {
  @page {
    margin: 8mm 16mm 20mm 16mm !important;
    margin: 12mm 10mm 20mm 10mm !important;
  }
  .pages {
    page-break-after: always;
  }
  @page {
    @top-right {
      margin-top: 50px;
      content: "第 " counter(page)  " é¡µ"; /* ä½¿ç”¨counter添加页码 */
    }
  }
}
h1,h3{
  left:0;
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue
@@ -253,11 +253,17 @@
<style scoped>
@media print {
  @page {
    margin: 8mm 16mm 20mm 16mm !important;
    margin: 12mm 10mm 20mm 10mm !important;
  }
  .pages {
    page-break-after: always;
  }
  @page {
    @top-right {
      margin-top: 50px;
      content: "第 " counter(page)  " é¡µ"; /* ä½¿ç”¨counter添加页码 */
    }
  }
}
h1,h3{
  left:0;
north-glass-erp/northglass-erp/src/components/sd/order/OrderNumberReportTransfer.vue
New file
@@ -0,0 +1,57 @@
<script setup>
import {ref} from "vue";
import request from "@/utils/request";
import {ElMessage} from "element-plus";
import {useI18n} from "vue-i18n"
const { t } = useI18n()
const props = defineProps({
  transferData:{}
})
const emits = defineEmits(['orderNumberTransfer'])
/*request.post()*/
const orderNumberTransferSubmit = () => {
  request.post('/reportingWork/reportingWorkTransfer',props.transferData).then(res => {
    if(res.code === '200' && res.data.data===true){
      ElMessage.success(t('basicData.msg.saveSuccess'))
      emits('orderNumberTransfer')
    }else{
      ElMessage.warning(res.data.msg)
    }
  }).catch(err => {
    ElMessage.error(t('order.transferPage.errorToMes'))
  })
/*emits('orderNumberTransfer')*/
}
</script>
<template>
  <el-form :model="props.transferData">
    <el-form-item :label="$t('order.transferPage.oldOrderId')+':'" label-width="140px">
      <el-text>{{props.transferData.oldOrderId}}</el-text>
    </el-form-item>
    <el-form-item :label="$t('order.transferPage.oldOrderNumber')+':'" label-width="140px">
      <el-text>{{props.transferData.oldOrderNumber}}</el-text>
    </el-form-item>
    <el-form-item :label="$t('order.transferPage.newOrderId')+':'" label-width="140px">
      <el-input v-model="props.transferData.newOrderId" autocomplete="off" />
    </el-form-item>
    <el-form-item :label="$t('order.transferPage.newOrderNumber')+':'" label-width="140px">
      <el-input v-model="props.transferData.newOrderNumber" type="number" autocomplete="off" />
    </el-form-item>
    <el-form-item  label-width="140px">
      <el-popconfirm :title="$t('order.transferPage.confirmTitle')"
                     @confirm="orderNumberTransferSubmit()">
        <template #reference>
          <el-button
              type="primary"
              style="margin-left: 268px">{{$t('craft.sure')}}</el-button>
        </template>
      </el-popconfirm>
    </el-form-item>
  </el-form>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
@@ -1,6 +1,7 @@
<script setup>
import {onMounted, reactive, ref, watch} from "vue";
import {computed, onMounted, reactive, ref, watch} from "vue";
import {changeFilterEvent, filterChanged} from "@/hook"
import footSum from "@/hook/footSum"
import {useI18n} from "vue-i18n"
import request from "@/utils/request"
import {ElMessage} from "element-plus"
@@ -13,6 +14,7 @@
  align: 'center',//文字居中
  stripe:true,//斑马纹
  showOverflow:true,
  showFooter: true,//显示脚
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  virtualScroll: true, // å¼€å¯è™šæ‹Ÿæ»šåŠ¨åŠŸèƒ½
  id: 'Order_Process',
@@ -48,9 +50,21 @@
    }
    return null
  },
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return t('basicData.total')
        }
        if (list.value.includes(column.field)) {
          return footSum(data, column.field)
        }
        return ''
      })
    ]
  }
})
const list = ref([])
let props = defineProps({
  orderId:null
@@ -62,9 +76,9 @@
  {field: 'glass_child',width: 130, title: t('reportingWorks.glassChild') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  {field: 'order_type', width: 120,title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  {field: 'process_id',width: 110, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  {field: 'technology_number', width: 90,title:  t('processCard.technologyNumber'),showOverflow:"ellipsis"},
  {field: 'quantity', width: 90,title: t('order.quantity')},
  {field: 'gross_area', width: 90,title: t('order.area')},
  {field: 'shippedQuantity',width: 120, title: t('delivery.deliveryQuantity')},
  {field: 'inventory',width: 120, title: t('productStock.inventoryQuantity')},
  {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')},
@@ -81,16 +95,23 @@
  getWorkOrder()
})
const getWorkOrder = () => {
  request.post(`/report/processCardProgress/${props.orderId}`,column).then((res) => {
  request.post(`/report/processCardProgress/${props.orderId}`,column).then(async (res) => {
    if (res.code == 200) {
      gridOptions.columns = JSON.parse(JSON.stringify(columns))
      gridOptions.columns.forEach(item =>{
        item.filterMethod = filterChanged
      })
      res.data.title.forEach(item =>{
        let column = {slots: { default: 'quantitySum' }, width: 90,title: item.process}
      list.value = ['quantity']
      res.data.title.forEach((item,index) =>{
        list.value.push('reportWorkQuantity.'+item.process)
        let column = {slots: { default: 'quantitySum'},
          width: 90,
          title: item.process,
          field:'reportWorkQuantity.'+item.process}
        gridOptions.columns.push(column)
      })
      res.data.data.forEach(item => {
@@ -98,7 +119,7 @@
        item.reportWorkQuantityCount=JSON.parse(item.reportWorkQuantityCount)
      })
      //gridOptions.mergeCells= res.data.mergeCells
      xGrid.value.loadData(res.data.data)
      await xGrid.value.loadData(res.data.data)
    } else {
      ElMessage.warning(res.msg)
    }
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue
@@ -177,6 +177,7 @@
<template>
  <div id="sheet" @dblclick="handleDoubleClick">
    <table border="1" >
      <thead>
      <tr class="title-s">
        <th colspan="9">
          <h1>
@@ -213,6 +214,7 @@
        <th v-if="!company.showDeliveryCreator" style="width: 10%;" colspan="1">加工要求</th>
        <th v-if="!company.showDeliveryCreator" style="width: 10%;" colspan="1">备注</th>
      </tr>
      </thead>
      <template v-for="(item, index) in produceList" :key="index" >
        <tr>
          <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="4">产品名称:
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet4.vue
@@ -32,7 +32,8 @@
const grossNum = ref({
  quantity: 0,
  grossArea: 0,
  perimeter: 0
  perimeter: 0,
  weight:0
})
const getData = () => {
  request.get(`/order/printOrderProductDetail/${props.orderId}/${selectedValues.value}`).then(res => {
@@ -43,12 +44,14 @@
      grossNum.value.quantity += getQuantity(item.productDetail)
      grossNum.value.grossArea += getArea(item.productDetail)
      grossNum.value.perimeter += getPerimeter(item.productDetail)
      grossNum.value.weight += getWeight(item.productDetail)
      stringToJson(item.productDetail)
    })
    grossNum.value.quantity = parseFloat(grossNum.value.quantity.toFixed(2))
    grossNum.value.grossArea = parseFloat(grossNum.value.grossArea.toFixed(2))
    grossNum.value.perimeter = parseFloat(grossNum.value.perimeter.toFixed(2))
    grossNum.value.weight = parseFloat(grossNum.value.weight.toFixed(2))
  })
}
@@ -59,17 +62,20 @@
    grossNum.value.quantity=0
    grossNum.value.grossArea=0
    grossNum.value.perimeter=0
    grossNum.value.weight=0
    data.value= res.data
    data.value.orderProductDetail.forEach(item => {
      grossNum.value.quantity += getQuantity(item.productDetail)
      grossNum.value.grossArea += getArea(item.productDetail)
      grossNum.value.perimeter += getPerimeter(item.productDetail)
      grossNum.value.weight += getWeight(item.productDetail)
      stringToJson(item.productDetail)
    })
    grossNum.value.quantity = parseFloat(grossNum.value.quantity.toFixed(2))
    grossNum.value.grossArea = parseFloat(grossNum.value.grossArea.toFixed(2))
    grossNum.value.perimeter = parseFloat(grossNum.value.perimeter.toFixed(2))
    grossNum.value.weight = parseFloat(grossNum.value.weight.toFixed(2))
  })
@@ -115,6 +121,14 @@
  return parseFloat(perimeter.toFixed(2))
}
const getWeight = (productList) => {
  let weight = 0
  productList.forEach(item => {
    weight += item.weight
  })
  return parseFloat(weight.toFixed(2))
}
const printSheet = () => {
}
@@ -141,7 +155,7 @@
      </tr>
      <tr class="title-s">
        <th colspan="2" style="width: 30%"></th>
        <th colspan="2" style="width: 30%;text-align: left;"><span>总重量:{{ grossNum.weight }}</span></th>
        <th colspan="5" style="width: 40%;">
          <h3 >生产任务单(成品)</h3>
        </th>
north-glass-erp/northglass-erp/src/lang/ar.js
@@ -68,6 +68,7 @@
        selected:'选中',
        partiallySelected:'部分选中',
        unchecked :'未选中',
        copy:'复制',
        msg:{
            max255:'أدخل 255 Ø­Ø±ÙÙ‹Ø§ ÙƒØ­Ø¯ Ø£Ù‚صى',
            range99999Dec2:
@@ -249,6 +250,7 @@
        quantityMount:'数量金额',
        allAmount:'面积金额(总金额)',
        orderTransfer:'订单报工转移',
        msg:{
            productCheck:'الرجاء Ø§Ø®ØªÙŠØ§Ø± Ù…نتج',
@@ -275,7 +277,13 @@
            pleaseCancelTheFilteringFirst:'يرجى Ø¥Ù„غاء Ø§Ù„اختيار Ø£ÙˆÙ„اً',
            grossAreaIsNot0:'存在实际总面积等于0',
            differentSize:'此订单含有手动修改大小片,反审修改订单后请重新重置大小片!是否反审?'
            differentSize:'此订单含有手动修改大小片,反审修改订单后请重新重置大小片!是否反审?',
            updateOrderIdErrorGtMaxId:'输入订单号不能大于最大订单号',
            updateOrderIdErrorIsExist:'输入订单号已存在',
            updateOrderIdErrorIsSame:'输入订单号相同',
            updateOrderIdErrorDiscrepancyInLength:'输入订单号长度不符',
            updateOrderIdErrorInputNumber:'请输入数字',
            updateOrderIdErrorNotNo1:'不能修改第一个单子',
        }
    },
@@ -301,7 +309,12 @@
        copyTitle:'نسخ Ø§Ù„عنوان',
        msgList:{
            checkOrder:'لم ÙŠØªÙ… Ø§Ù„عثور Ø¹Ù„Ù‰ Ù…علومات Ø§Ù„طلب، ÙŠØ±Ø¬ÙŠ ØªØ­Ø¯ÙŠØ¯ Ø§Ù„طلب Ø§ÙˆÙ„اً',
        }
            isOptimize:'此订单已转优化,回退失败!',
            isReportingWork:'此订单已报工,回退失败!',
            isStorage:'此订单已入库,回退失败!',
        },
        updateOrderId:"修改订单号",
        reportingTransfer:'报工转移'
    },
    craft:{
        glassAddress:'وضع Ø¹Ù„امة Ø§Ù„زجاج',
@@ -713,6 +726,9 @@
        customerAbbreviation:'اختصار Ø§Ù„عميل',
        pleaseEnterTheCustomerAbbreviation:'الرجاء Ø§Ø¯Ø®Ø§Ù„ Ø§Ø®ØªØµØ§Ø± Ø§Ù„عميل',
        msgList:{
            notCustomerInfo:'未查询到客户信息',
        }
    },
    delivery:{
        page:{
@@ -986,6 +1002,7 @@
        patchNum :'عدد Ù…جموعات Ø§Ù„تسليم',
        finished :'معدل Ø§Ù„منتجات Ø§Ù„نهائية',
        finishedProductReport :'تقرير Ø§Ù„منتجات Ø§Ù„نهائية',
        workProcessName:'在制品名称',
    },
    productionBasicData:{
        page:{
north-glass-erp/northglass-erp/src/lang/en.js
@@ -68,6 +68,7 @@
        selected:'selected',
        partiallySelected:'partially selected',
        unchecked :'unchecked',
        copy:'Copy',
        msg:{
            max255:"The value contains a maximum of 255 characters",
            range99999Dec2:
@@ -249,6 +250,7 @@
        quantityMount:'Quantity and Amount',
        allAmount:'面积金额(总金额)',
        orderTransfer:'订单报工转移',
        msg:{
            productCheck:'Please select a product',
@@ -275,7 +277,13 @@
            pleaseCancelTheFilteringFirst:'Please cancel the selection first.',
            grossAreaIsNot0:'There is an actual total area equal to0',
            differentSize:'此订单含有手动修改大小片,反审修改订单后请重新重置大小片!是否反审?'
            differentSize:'此订单含有手动修改大小片,反审修改订单后请重新重置大小片!是否反审?',
            updateOrderIdErrorGtMaxId:'输入订单号不能大于最大订单号',
            updateOrderIdErrorIsExist:'输入订单号已存在',
            updateOrderIdErrorIsSame:'输入订单号相同',
            updateOrderIdErrorDiscrepancyInLength:'输入订单号长度不符',
            updateOrderIdErrorInputNumber:'请输入数字',
            updateOrderIdErrorNotNo1:'不能修改第一个单子',
        }
    },
@@ -300,8 +308,13 @@
        copy:'Copy',
        copyTitle:'Copy Title',
        msgList:{
            checkOrder:'No order information is found. Please click Order first'
        }
            checkOrder:'No order information is found. Please click Order first',
            isOptimize:'此订单已转优化,回退失败!',
            isReportingWork:'此订单已报工,回退失败!',
            isStorage:'此订单已入库,回退失败!',
        },
        updateOrderId:"修改订单号",
        reportingTransfer:'报工转移'
    },
    craft:{
        glassAddress:'Glass Address',
@@ -713,6 +726,9 @@
        customerAbbreviation:'Customer abbreviation',
        pleaseEnterTheCustomerAbbreviation:'Please enter the customers abbreviation',
        msgList:{
            notCustomerInfo:'未查询到客户信息',
        }
    },
    delivery:{
        page:{
@@ -986,6 +1002,7 @@
        patchNum :'Patch number',
        finished :'Rate of finished product',
        finishedProductReport :'Finished product report',
        workProcessName:'在制品名称',
    },
    productionBasicData:{
        page:{
north-glass-erp/northglass-erp/src/lang/ru.js
@@ -68,6 +68,7 @@
        selected:'选中',
        partiallySelected:'部分选中',
        unchecked :'未选中',
        copy:'复制',
        msg:{
            max255:"Введите 255 ÑÐ¸Ð¼Ð²Ð¾Ð»Ð¾Ð².",
            range99999Dec2:
@@ -249,6 +250,7 @@
        quantityMount:'数量金额',
        allAmount:'面积金额(总金额)',
        orderTransfer:'订单报工转移',
        msg:{
            productCheck:'Пожалуйста, Ð²Ñ‹Ð±ÐµÑ€Ð¸Ñ‚е Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚',
@@ -275,7 +277,13 @@
            pleaseCancelTheFilteringFirst:'请先取消筛选',
            grossAreaIsNot0:'存在实际总面积等于0',
            differentSize:'此订单含有手动修改大小片,反审修改订单后请重新重置大小片!是否反审?'
            differentSize:'此订单含有手动修改大小片,反审修改订单后请重新重置大小片!是否反审?',
            updateOrderIdErrorGtMaxId:'输入订单号不能大于最大订单号',
            updateOrderIdErrorIsExist:'输入订单号已存在',
            updateOrderIdErrorIsSame:'输入订单号相同',
            updateOrderIdErrorDiscrepancyInLength:'输入订单号长度不符',
            updateOrderIdErrorInputNumber:'请输入数字',
            updateOrderIdErrorNotNo1:'不能修改第一个单子',
        }
    },
@@ -301,7 +309,12 @@
        copyTitle:'Копировать Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº',
        msgList:{
            checkOrder:'Если Ð¸Ð½Ñ„ормация Ð¾ Ð·Ð°ÐºÐ°Ð·Ðµ Ð½Ðµ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð°, Ð½Ð°Ð¶Ð¼Ð¸Ñ‚е Ð½Ð° Ð·Ð°ÐºÐ°Ð·.',
        }
            isOptimize:'此订单已转优化,回退失败!',
            isReportingWork:'此订单已报工,回退失败!',
            isStorage:'此订单已入库,回退失败!',
        },
        updateOrderId:"修改订单号",
        reportingTransfer:'报工转移'
    },
    craft:{
        glassAddress:'Маркировка',
@@ -712,6 +725,9 @@
        customerAbbreviation:'Клиенты Ð¡Ð¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ',
        pleaseEnterTheCustomerAbbreviation:'Пожалуйста, Ð²Ð²ÐµÐ´Ð¸Ñ‚е ÑÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ðµ ÐºÐ»Ð¸ÐµÐ½Ñ‚а.',
        msgList:{
            notCustomerInfo:'未查询到客户信息',
        }
    },
    delivery:{
        page:{
@@ -985,6 +1001,7 @@
        patchNum :'Количество ÑÑ‚еклянных Ð¿Ð»Ð°ÑÑ‚ин',
        finished :'Коэффициент Ð³Ð¾Ñ‚овой Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ†Ð¸Ð¸',
        finishedProductReport :'Отчет Ð¾ Ð³Ð¾Ñ‚овой Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ†Ð¸Ð¸',
        workProcessName:'在制品名称',
    },
    productionBasicData:{
        page:{
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -68,6 +68,7 @@
        selected:'选中',
        partiallySelected:'部分选中',
        unchecked :'未选中',
        copy:'复制',
        msg:{
            max255:"最多输入255个字符",
            range99999Dec2:
@@ -249,6 +250,16 @@
        quantityMount:'数量金额',
        allAmount:'面积金额(总金额)',
        orderTransfer:'订单报工转移',
        transferPage:{
            oldOrderId:'原订单号',
            newOrderId:'新订单号',
            oldOrderNumber:'原订单序号',
            newOrderNumber:'新订单序号',
            confirmTitle:'确实转移此序号的流程卡报工数据?',
            errorToMes:'与mes通讯异常'
        },
        msg:{
            productCheck:'请选择产品',
@@ -275,7 +286,13 @@
            pleaseCancelTheFilteringFirst:'请先取消筛选',
            grossAreaIsNot0:'存在实际总面积等于0',
            differentSize:'此订单含有手动修改大小片,反审修改订单后请重新重置大小片!是否反审?'
            differentSize:'此订单含有手动修改大小片,反审修改订单后请重新重置大小片!是否反审?',
            updateOrderIdErrorGtMaxId:'输入订单号不能大于最大订单号',
            updateOrderIdErrorIsExist:'输入订单号已存在',
            updateOrderIdErrorIsSame:'输入订单号相同',
            updateOrderIdErrorDiscrepancyInLength:'输入订单号长度不符',
            updateOrderIdErrorInputNumber:'请输入数字',
            updateOrderIdErrorNotNo1:'不能修改第一个单子',
        }
    },
@@ -300,8 +317,13 @@
        copy:'复制订单',
        copyTitle:'复制表头',
        msgList:{
            checkOrder:'未查询到订单信息,请先单击订单'
        }
            checkOrder:'未查询到订单信息,请先单击订单',
            isOptimize:'此订单已转优化,回退失败!',
            isReportingWork:'此订单已报工,回退失败!',
            isStorage:'此订单已入库,回退失败!',
        },
        updateOrderId:"修改订单号",
        reportingTransfer:'报工转移'
    },
    craft:{
        glassAddress:'标记',
@@ -713,6 +735,9 @@
        customerAbbreviation:'客户简称',
        pleaseEnterTheCustomerAbbreviation:'请输入客户简称',
        msgList:{
            notCustomerInfo:'未查询到客户信息',
        }
    },
    delivery:{
        page:{
@@ -987,6 +1012,7 @@
        patchNum :'补片数量',
        finished :'成品率',
        finishedProductReport :'成品报表',
        workProcessName:'在制品名称',
    },
    productionBasicData:{
        page:{
north-glass-erp/northglass-erp/src/stores/sd/companySet/Ìì½ò±±²£.js
@@ -3,6 +3,8 @@
export default defineStore('companyInfo', {
    state: () => ({
        timeOut:false,//金华true,其他false,是否开启超时改变复选框状态
        connectMes:false,//常州true,其他false,显示订单报工转移是否启用
        companyName: '天津北玻玻璃工业技术有限公司(TJBB-QR7.1-01)',
        address:'天津宝坻区节能环保工业区天兴路西侧宝中道南侧',
        telephone:'022-59280088',
north-glass-erp/northglass-erp/src/stores/sd/companySet/³£ÖݼªÀû.js
@@ -3,6 +3,8 @@
export default defineStore('companyInfo', {
    state: () => ({
        timeOut:false,//金华true,其他false,是否开启超时改变复选框状态
        connectMes:true,//常州true,其他false,显示订单报工转移是否启用
        companyName: '常州市吉利玻璃有限公司',
        address:'常州市天宁区郑陆镇大明南路8号',
        telephone:'022-59280088',
north-glass-erp/northglass-erp/src/stores/sd/companySet/н®ºãöÎ.js
@@ -3,6 +3,8 @@
export default defineStore('companyInfo', {
    state: () => ({
        timeOut:false,//金华true,其他false,是否开启超时改变复选框状态
        connectMes:false,//常州true,其他false,显示订单报工转移是否启用
        companyName: '新疆恒鑫玻璃科技有限公司',
        address:'新疆五家渠工业园兵团新型建材工业园区工一路11号附1号',
        telephone:'13419168999',
north-glass-erp/northglass-erp/src/stores/sd/companySet/½ð»ªÌì³É.js
@@ -3,6 +3,8 @@
export default defineStore('companyInfo', {
    state: () => ({
        timeOut:true,//金华true,其他false,是否开启超时改变复选框状态
        connectMes:false,//常州true,其他false,显示订单报工转移是否启用
        companyName: '金华福喜天成玻璃有限公司',
        address:'浙江省金华市金东区曹宅镇工业功能区鹤岩街28号2号',
        telephone:'153 8178 1915 ç¦å–œå¤©æˆ',
north-glass-erp/northglass-erp/src/views/mm/ingredientStock/IngredientsStock.vue
@@ -32,7 +32,7 @@
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/ingredientsStock/AccessoriesMonthlySettlement' }">辅料月结</el-breadcrumb-item>-->
        <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/ingredientsStock/returnToStorage' }">{{$t('ingredientsStock.returnToStorage')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(6)" :class="indexFlag===6?'indexTag':''" :to="{ path: '/main/ingredientsStock/selectSurplusMaterials' }">{{$t('ingredientsStock.surplusMaterialManagement')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(7)" :class="indexFlag===7?'indexTag':''" :to="{ path: '/main/ingredientsStock/materialAdditionRecord' }">{{$t('物料新增')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(7)" :class="indexFlag===7?'indexTag':''" :to="{ path: '/main/ingredientsStock/materialAdditionRecord' }">{{$t('ingredients.materialAddition')}}</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('ingredientsStock.returnToStorage')}}</el-breadcrumb-item>
      </el-breadcrumb>
north-glass-erp/northglass-erp/src/views/mm/ingredientStock/SelectIngredientsStock.vue
@@ -646,17 +646,28 @@
            ElMessage.error("请输入库存区域")
            return
          }*/
          let  flowData
          if(selectRecords.height===undefined){
              flowData = ref({
              title: titleUploadData.value,
              materialCode: selectRecords.id,
              userName:userStore.user.userName,
              userId:userStore.user.userId
          let  flowData = ref({
            totalArea: parseFloat(divideAuto(multiply(selectRecords.height,selectRecords.width),1000000,2))*titleUploadData.value.inventoryQuantity,
            singlePieceArea: parseFloat(divideAuto(multiply(selectRecords.height,selectRecords.width),1000000,2)),
            title: titleUploadData.value,
            materialCode: selectRecords.id,
            userName:userStore.user.userName,
            userId:userStore.user.userId
            })
          }else{
              flowData = ref({
                totalArea: parseFloat(divideAuto(multiply(selectRecords.height,selectRecords.width),1000000,2))*titleUploadData.value.inventoryQuantity,
                singlePieceArea: parseFloat(divideAuto(multiply(selectRecords.height,selectRecords.width),1000000,2)),
              title: titleUploadData.value,
              materialCode: selectRecords.id,
              userName:userStore.user.userName,
              userId:userStore.user.userId
          })
            })
          }
          console.log(flowData.value)
          request.post("/materialInventory/saveMaterialInventory", flowData.value).then((res) => {
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi2.vue
@@ -153,15 +153,7 @@
    <template v-for="(item,id) in labelList">
    <div id="entirety" >
      <div class="row1" v-if="item.heat_layout_id!=null">
        <span>{{ item.customer_name }}</span>&nbsp;
        <span>{{ item.order_id }}</span>&nbsp;
        <span v-if="item.process.includes('夹胶')||item.process.includes('夹层')">胶片</span>
        <span v-else-if="item.process.includes('中空')">中空</span>
        <span v-else-if="item.process.includes('百叶')">百叶</span>
        <span v-else></span>
      </div>
      <div class="row6" v-else>
      <div class="row1" v-if="item.customer_name!==undefined">
        <span>{{ item.customer_name }}</span>&nbsp;
        <span>{{ item.order_id }}</span>&nbsp;
        <span v-if="item.process.includes('夹胶')||item.process.includes('夹层')">胶片</span>
@@ -171,7 +163,8 @@
      </div>
      <div class="row2">
      <div class="row2" v-if="item.customer_name!==undefined">
        <span>{{item.project}}</span>&nbsp;
        <span>{{ item.building_number }}</span>
        <span v-if="item.bend_radius!=null">R={{item.bend_radius}}</span>
@@ -195,7 +188,7 @@
        </span>
        {{Math.round(item.width)}}x{{Math.round(item.height)}}={{item.quantity}}
      </div>
      <div class="row5">
      <div class="row5" v-if="item.customer_name!==undefined">
        <span>{{item.glass_child}}</span>&nbsp;
        <span>{{item.processing_note}}</span>
      </div>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue
@@ -46,6 +46,7 @@
    request.post(`/processCard/getSelectPrintLabel/${projectNo.value}/${type.value}`).then((res) => {
      if (res.code == 200) {
        labelList.value = deepClone(res.data.data)
        console.log(res.data.data)
      } else {
        ElMessage.warning(res.msg)
        router.push("/login")
@@ -162,7 +163,7 @@
<!--     åŠæˆå“æ ‡ç­¾-->
    <template v-for="(item,id) in labelList">
    <div v-if="type!=='3'" id="entirety" >
      <div class="row1" >
      <div v-if="item.customer_name!==undefined" class="row1" >
<!--钢化版图序号,钢化版图里的顺序-->
<!--        <div class="cell" v-if="item.heat_layout_id!==undefined">{{ item.heat_layout_id }}/{{ item.heat_layout_sort }}</div>-->
        <span>{{ item.customer_name }}</span>&nbsp;
@@ -186,7 +187,7 @@
        {{JSON.parse(item.other_columns).S02}}={{item.quantity}}
      </div>
      <div class="row3" v-else>
        <span v-if="item.heat_layout_id!==undefined && company.showDeliveryCreator"  style="font-size: 7pt;">
        <span v-if="item.heat_layout_sort!==undefined && company.showDeliveryCreator"  style="font-size: 7pt;">
          ({{ item.stock_id }}) {{ item.heat_layout_id }}/{{ item.heat_layout_sort }}
        </span>
        <span v-if="item.stock_id!==undefined && !company.showDeliveryCreator"  style="font-size: 7pt">
@@ -194,12 +195,12 @@
        </span>
        {{Math.round(item.width)}}x{{Math.round(item.height)}}={{item.quantity}}
      </div>
      <div class="row5">
      <div v-if="item.customer_name!==undefined" class="row5">
        <span>{{item.project}}</span>&nbsp;
        <span>{{item.building_number?item.building_number.replace(/\r|\n|\s/g,''):''}}</span>&nbsp;
        <span v-if="item.bend_radius!=null">R={{item.bend_radius}}</span>&nbsp;
      </div>
      <div class="row6">
      <div v-if="item.customer_name!==undefined" class="row6">
        <span>{{item.glass_child}}</span>&nbsp;
        <span v-if="company.showDeliveryCreator" style="font-size: 10pt" >{{item.processing_note}}</span>
        <span v-else style="font-size: 6pt">{{item.processing_note}}</span>
@@ -224,7 +225,7 @@
          <span style="font-size: 8pt">{{ item.customer_name }}</span>&nbsp;
        </div>
        <div class="row2" v-else>
        <div class="row1" v-else>
          <span style="font-size: 8pt">{{ item.customer_name }}</span>&nbsp;
        </div>
        <div class="row2" style="font-size: 8pt" >{{item.order_id}}
north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue
@@ -198,6 +198,7 @@
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged},
    {field: 'quantity', width: 90,title: t('order.quantity')},
     {field: 'gross_area', width: 90,title: t('order.area')},
    {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')},
    // {field: 'shippedQuantity',width: 120, title: t('report.shippedQuantity')},
    {field: 'inventory',width: 120, title: t('report.inventoryNum')},
@@ -223,7 +224,7 @@
        if (columnIndex === 0) {
          return t('basicData.total')
        }
        const List = ["quantity", "broken_num", "inventory", "inventoryArea"]; // é™æ€åˆ—的求和
        const List = ["quantity", "broken_num", "inventory", "inventoryArea","gross_area"]; // é™æ€åˆ—的求和
        if (List.includes(column.field)) {
          return footSum(data, column.field)
        }
north-glass-erp/northglass-erp/src/views/pp/report/TeamOutput.vue
@@ -266,15 +266,16 @@
      field: 'processId', width: 140, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }
    },
    {field: 'orderNumber', width: 90, title: t('order.OrderNum')},
    {field: 'code', width: 60, title: t('reportingWorks.glassNumber')},
    {field: 'width', width: 100, title: t('order.width')},
    {field: 'height', width: 100, title: t('order.height')},
    {field: 'code', width: 100, title: t('reportingWorks.glassNumber')},
    {field: 'width', width: 90, title: t('order.width')},
    {field: 'height', width: 90, title: t('order.height')},
    {field: 'workProcessName', width: 120, title: t('report.workProcessName')},
    {field: 'edgingType', width: 110, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'completedQuantity', width: 90, title: t('reportingWorks.completedQuantity')},
    {field: 'area', width: 100, title: t('reportingWorks.completedArea')},
    {field: 'reviewed', title: t('processCard.reviewed')},
    {field: 'examineTime', title: t('ingredientsStock.reviewedTime')},
    {field: 'productName', title: t('order.product')},
    {field: 'reviewed',width: 80, title: t('processCard.reviewed')},
    {field: 'examineTime',width: 80, title: t('ingredientsStock.reviewedTime')},
    {field: 'productName',width: 150, title: t('order.product')},
  ],//表头按钮
  toolbarConfig: {
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -23,6 +23,8 @@
const user=userInfo()
//定义表头数据
const titleUploadData = ref({
  //是否合片工序
  laminating:'',
  reportingWorkId: null,
  //流程卡号
  processId: null,
@@ -90,9 +92,19 @@
let inputDisabled = ref(false)
onMounted(() =>{
onMounted(async () =>{
  await initTiltle()
  if(route.query.processId !== undefined && route.query.processId!=='' && route.query.processId!=null ){
    titleUploadData.value.processId = route.query.processId
    //当质检审核后加载明细信息
    if(route.query.reviewStatus === '1'){
      if(titleUploadData.value.thisProcess !== undefined
          && titleUploadData.value.thisProcess!==''
          && titleUploadData.value.thisProcess!=null){
        getWork()
        getQuantity()
      }
    }
  }
   //route.query.reportingWorkId = 'BG2403150004'
  //判断是否传入报工编号
@@ -339,6 +351,13 @@
    },
    {field: 'completed', width: 90, title:t('reportingWorks.completed'),},
    {field: 'onceBroken', width: 90, title: t('reportingWorks.onceBroken'),},
    {
      field: 'reviewed_state',
      title: t('processCard.reviewedState'),
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
    },
  ],
//表单验证
@@ -779,11 +798,11 @@
  })
  const maxQuantity =  Math.max(...equalByOrderNum.map(item =>item.breakageQuantity || 0))
  let process = titleUploadData.value.thisProcess
  let laminating = titleUploadData.value.laminating
  equalByOrderNum.forEach((row) =>{
    if (process=='夹胶' || process=='中空' || process=='包装' ||process=='打胶和粘框'){
    if (laminating == 'laminating'){
      row.completedQuantity= brokenRow.value.quantity*1-maxQuantity
    }
  })
@@ -795,23 +814,26 @@
//第一次加载数据
let groupChangeProcess = ref(false)//用于本班组显示问题
request.post(`/reportingWork/selectProcess/${user.user.userId}`).then((res) => {
  if (res.code == 200) {
    titleSelectJson.value.processType = res.data.process
    if(user.user.address!==null && user.user.address!==''){
      titleUploadData.value.thisProcess = user.user.address
      titleUploadData.value.teamsGroupsName = user.user.userName
      groupChangeProcess.value = true
      if (user.user.address==='技术部多曲' || user.user.address==='夹胶'){
        groupChangeProcess.value = false
const initTiltle = async () => {
  await request.post(`/reportingWork/selectProcess/${user.user.userId}`).then((res) => {
    if (res.code == 200) {
      titleSelectJson.value.processType = res.data.process
      if(user.user.address!==null && user.user.address!==''){
        titleUploadData.value.thisProcess = user.user.address
        titleUploadData.value.teamsGroupsName = user.user.userName
        groupChangeProcess.value = true
        if (user.user.address==='技术部多曲' || user.user.address==='夹胶'){
          groupChangeProcess.value = false
        }
        gridOptions.toolbarConfig.buttons[1].visible=false
      }
      gridOptions.toolbarConfig.buttons[1].visible=false
    }
  } else {
    ElMessage.warning(res.msg)
  }
})
    } else {
      ElMessage.warning(res.msg)
    }
  })
}
function checkSameNumForId(data, targetId) {
  // åˆå§‹åŒ–一个对象来存储遇到的id及其对应的num值
@@ -1031,6 +1053,7 @@
      router.push({path:'/main/reportingWorks/AddReportingWork',
        query:{
          processId:titleUploadData.value.processId,
          reviewStatus:1,
          random:Math.random()
        }
      })
@@ -1096,6 +1119,7 @@
      titleUploadData.value = res.data.data
      titleUploadData.value.processId = processId
      titleUploadData.value.teamsGroupsName = user.user.userName
      titleUploadData.value.laminating = res.data.laminating
      //设备下拉框
      titleSelectJson.value.deviceType = res.data.device
      //班组下拉框
@@ -1150,7 +1174,20 @@
      //绑定下方表格
      detail.value = res.data.Detail
      xGrid.value.reloadData(detail.value)
      // ä½¿ç”¨map方法来处理每个对象
      let modifiedCollection = detail.value.map(item => {
        if (item.reviewed_state === 1) {
          return { ...item, reviewed_state: "已审核" };
        }
        else if (item.reviewed_state === 0) {
          return { ...item, reviewed_state: "未审核" };
        }
        else {
          // å…¶ä»–情况保持不变
          return item;
        }
      });
      xGrid.value.reloadData(modifiedCollection)
    } else {
      ElMessage.warning(res.msg)
    }
@@ -1203,9 +1240,10 @@
const editClosedEvent = ({ row, column }) => {
  let process = titleUploadData.value.thisProcess
  let laminating = titleUploadData.value.laminating
  if (column.property==='completedQuantity') {
    xGrid.value.getTableData().fullData.forEach((item, index) =>{
      if(item.order_number===row.order_number && (process=='夹胶' || process=='中空' || process=='包装' ||process=='打胶和粘框')){
      if(item.order_number===row.order_number && laminating == 'laminating'){
        item.completedQuantity=row.completedQuantity
      }
    })
@@ -1215,12 +1253,15 @@
const  getQuantity = () => {
  titleUploadData.value.thisCompletedQuantity = 0
  titleUploadData.value.thisWornQuantity = 0
  let laminating = titleUploadData.value.laminating
  const arr = xGrid.value.getTableData().fullData
  const returnArr =  arr.filter((obj, index, self) =>
      self.findIndex((t) => t.order_number === obj.order_number) === index
  )
  //根据是否合片工序过滤
  const returnArr =
      laminating === "laminating"
          ? arr.filter((obj, index, self) =>
              self.findIndex((t) => t.order_number === obj.order_number) === index
          )
          : arr;
  let sumBreak = 0
  let sumQuantity = 0
  returnArr.forEach((item)=>{
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
@@ -192,7 +192,7 @@
//点击查询
const getWorkOrder = () => {
  gridOptions.loading = true
  let startTime = form.date1[0]
  let endTime = form.date1[1]
  let inputVal = form.orderId
@@ -274,6 +274,7 @@
      total.dataTotal = res.data.total.total*1
      total.pageTotal=parseInt(res.data.total)
      pageNum.value=1
      total.value = res.data.footSum
      produceList = deepClone(res.data.data)
      // ä½¿ç”¨map方法来处理每个对象
      let modifiedCollection = produceList.map(item => {
north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue
@@ -302,7 +302,7 @@
          </el-col>
        </template>
        <template #add>
          <el-button @click="add" type="primary" style="margin-right: 3px">新增</el-button>
          <el-button @click="add" type="primary" style="margin-right: 3px">{{$t('basicData.insert')}}</el-button>
        </template>
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
@@ -201,8 +201,8 @@
    body: {
      options: [
        [
          { code: 'sheet1', name: '订单', prefixIcon: 'vxe-icon-file-txt', visible: true},
          { code: 'sheet2', name: '发货', prefixIcon: 'vxe-icon-file-txt', visible: true},
          { code: 'sheet1', name: t('orderBasicData.order'), prefixIcon: 'vxe-icon-file-txt', visible: true},
          { code: 'sheet2', name: t('searchOrder.delivery'), prefixIcon: 'vxe-icon-file-txt', visible: true},
        ]
      ]
    }
@@ -260,7 +260,7 @@
      switch (menu.code) {
        case 'sheet1': {
          if(rowClickIndex.value===null){
            ElMessage.warning("未查询到客户信息")
            ElMessage.warning(t('customer.msgList.notCustomerInfo'))//"未查询到客户信息"
            return
          }
          router.push({path: '/main/customer/selectCustomerOrder', query: { id: row.id,type:1 }})
@@ -269,7 +269,7 @@
        }
        case 'sheet2': {
          if(rowClickIndex.value===null){
            ElMessage.warning("未查询到客户信息")
            ElMessage.warning(t('customer.msgList.notCustomerInfo'))
            return
          }
          router.push({path: '/main/customer/selectCustomerOrder', query: { id: row.id,type:2 }})
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue
@@ -265,7 +265,7 @@
      const blob = new Blob([res])
      if ('download' in document.createElement('a')) { // éžIE下载
        const elink = document.createElement('a')
        elink.download = `客户订单.xlsx`
        elink.download = `customerOrder.xlsx`
        elink.style.display = 'none'
        elink.href = URL.createObjectURL(blob)
        document.body.appendChild(elink)
@@ -281,7 +281,7 @@
        const blob = new Blob([res])
        if ('download' in document.createElement('a')) { // éžIE下载
          const elink = document.createElement('a')
          elink.download = `客户发货.xlsx`
          elink.download = `customerDelivery.xlsx`
          elink.style.display = 'none'
          elink.href = URL.createObjectURL(blob)
          document.body.appendChild(elink)
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -186,9 +186,14 @@
        pageNum=1
        produceList = deepClone(res.data.data)
        const orderDetails = res.data.data
        orderDetails.forEach(item => {
          item.otherColumns = JSON.parse(item.otherColumns)
        })
        xGrid.value.reloadData(orderDetails)
        xGrid.value.loadData(produceList)
        //禁用按钮
        gridOptions.toolbarConfig.buttons[1].disabled  = true
        gridOptions.toolbarConfig.buttons[2].disabled = true
@@ -230,7 +235,7 @@
        pageNum=1
        produceList = deepClone(res.data.data)
        console.log(res.data.data)
        const orderDetails = res.data.data
        orderDetails.forEach(item => {
          item.otherColumns = JSON.parse(item.otherColumns)
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -18,6 +18,7 @@
import footSum from "@/hook/footSum"
import {useI18n} from "vue-i18n"
import {multiply,multiplyAuto,divideAuto} from '@/utils/decimal'
import OrderNumberReportTransfer from "@/components/sd/order/OrderNumberReportTransfer.vue";
const { t } = useI18n()
let dialogTableVisible = ref(false)
@@ -25,6 +26,13 @@
let errorAreaVisible = ref(false)
let otherMoneyVisible = ref(false)
let sizeCheckVisible = ref(false)
let dialogTransferVisible = ref(false)
const transferData = ref({
  oldOrderId:null,
  newOrderNumber:null,
  newOrderId:null,
  oldOrderNumber:null,
})
let orderIdVisible = ref(false)
const maxTableLen =ref(500)
const userStore = useUserInfoStore()
@@ -117,7 +125,8 @@
          { code: 'errorArea', name: t('basicData.errorSettlementArea'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
          { code: 'otherMoney', name: t('basicData.otherAmounts'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
          { code: 'sizeCheck', name: t('basicData.sizeReview'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false },
          { code: 'updateOrderId', name: '修改订单号', prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false }
          { code: 'updateOrderId', name: t('searchOrder.updateOrderId'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false },
          { code: 'reportingTransfer', name: t('searchOrder.reportingTransfer'), prefixIcon: 'vxe-icon-send', visible: true, disabled: true }
        ]
      ]
    }
@@ -749,12 +758,20 @@
              })
            }
          }
          computedMoney(result.cell)
          gridOptions.menuConfig.body.options[0][5].disabled = false
          break
        }
        case "reportingTransfer":{
          const row = xGrid.value.getCurrentRecord()
          if(row===null){
            ElMessage.warning(t('components.pleaseClickToSelectARowFirst'))
            return
          }
          transferData.value.oldOrderNumber = row.orderNumber
          transferData.value.oldOrderId = titleUploadData.value.orderId
          dialogTransferVisible.value = true
          break
        }
      }
@@ -880,9 +897,10 @@
          gridOptions.toolbarConfig.buttons[2].disabled = true
          gridOptions.toolbarConfig.buttons[3].disabled = true
          gridOptions.toolbarConfig.buttons[4].disabled = true
        }
      }
      if(res.data.order.processingCard>0 && company.connectMes){
        gridOptions.menuConfig.body.options[0][12].disabled = false
      }
      if(res.data.order.productionOrder !==0 ){
@@ -1089,17 +1107,17 @@
          orderId:newOrderId.value,
          random:Math.random()}})
    }else if(res.data==="false1"){
      ElMessage.warning("输入订单号不能大于最大订单号")
      ElMessage.warning(t('order.msg.updateOrderIdErrorGtMaxId'))
    }else if(res.data==="false2"){
      ElMessage.warning("输入订单号已存在")
      ElMessage.warning(t('order.msg.updateOrderIdErrorIsExist'))
    }else if(res.data==="false3"){
      ElMessage.warning("输入订单号相同")
      ElMessage.warning(t('order.msg.updateOrderIdErrorIsSame'))
    }else if(res.data==="false4"){
      ElMessage.warning("输入订单号长度不符")
      ElMessage.warning(t('order.msg.updateOrderIdErrorDiscrepancyInLength'))
    }else if(res.data==="false5"){
      ElMessage.warning("请输入数字")
      ElMessage.warning(t('order.msg.updateOrderIdErrorInputNumber'))
    }else if(res.data==="false6"){
      ElMessage.warning("不能修改第一个单子")
      ElMessage.warning(t('order.msg.updateOrderIdErrorNotNo1'))
    }
  })
}
@@ -1142,8 +1160,7 @@
  await  ElMessageBox.confirm(
        t('order.msg.differentSize'),
        t('order.msg.warning'),
        {
          confirmButtonText: t('basicData.confirmButtonText'),
        {confirmButtonText: t('basicData.confirmButtonText'),
          cancelButtonText: t('basicData.cancelButtonText'),
          type: 'warning',
        }
@@ -1579,6 +1596,13 @@
  await initOrder(1)
  createCustomerVisible.value = false
}
const orderNumberTransfer = () => {
  router.push({
    path:'/main/order/createOrder',
    query:{
      orderId:titleUploadData.value.orderId,
      random:Math.random()}})
}
</script>
@@ -1852,6 +1876,14 @@
      <create-customer :getOrderPage="'order'" @getOrderFunction="createCustomerSuccess" />
    </el-dialog>
<!--    è®¢å•报工转移-->
    <el-dialog v-model="dialogTransferVisible"
               :close-on-click-modal="false"
               :title="$t('order.orderTransfer')"
               destroy-on-close width="500">
      <order-number-report-transfer :transferData="transferData" @orderNumberTransfer="orderNumberTransfer"/>
    </el-dialog>
  </div>
</template>
north-glass-erp/northglass-erp/src/views/sd/order/OrderProductSummaryReport.vue
@@ -33,6 +33,7 @@
    {field: 'order.packType',width:120, title: t('order.packType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    // {field: 'prodID',width:120, title: '工艺流程',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'perimeter',width:120, title: t('order.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'weight',width:120, title: t('processCard.weight'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'price',width:120, title: t('order.price'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'grossAmount',width:120, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.otherMoney',width:120, title: t('basicData.otherAmounts'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
@@ -51,7 +52,7 @@
  url :'/order/getOrderProductSummary',
  exportUrl :'/order/exportOrderProductSummary',
  exportName:t('order.orderDetailsSummaryReport'),
  footList:['quantity','grossArea','computeGrossArea','perimeter','price','grossAmount']
  footList:['quantity','grossArea','computeGrossArea','perimeter','price','grossAmount','weight']
})
north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue
@@ -33,6 +33,7 @@
    {field: 'order.packType',width:120, title: t('order.packType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    // {field: 'prodID',width:120, title: '工艺流程',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'perimeter',width:120, title: t('order.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'weight',width:120, title: t('processCard.weight'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'price',width:120, title: t('order.price'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'grossAmount',width:120, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'order.otherMoney',width:120, title: t('basicData.otherAmounts'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
@@ -51,7 +52,7 @@
  url :'/order/getOrderReport',
  exportUrl :'/order/exportOrderReport',
  exportName:t('order.orderDetailsReport'),
  footList:['quantity','grossArea','computeGrossArea','perimeter','price','grossAmount']
  footList:['quantity','grossArea','computeGrossArea','perimeter','price','grossAmount','weight']
})
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -390,11 +390,11 @@
              ElMessage.success(t('product.msg.operateSuccess')+'!')
              selectOrderList()
            }else if(res.data==='false1'){
              ElMessage.warning('此订单已转优化,回退失败!')
              ElMessage.warning(t('searchOrder.msgList.isOptimize'))
            }else if(res.data==='false2'){
              ElMessage.warning('此订单已报工,回退失败!')
              ElMessage.warning(t('searchOrder.msgList.isReportingWork'))
            }else if(res.data==='false3'){
              ElMessage.warning('此订单已入库,回退失败!')
              ElMessage.warning(t('searchOrder.msgList.isStorage'))
            }
          })
        })
@@ -598,6 +598,12 @@
  }
}
//订单距离小于三天则改变checkbox class æ”¹å˜é¢œè‰²
const timeOutChangeColor =(row)=>{
  if(company.timeOut){
    return row.timeOut
  }
}
</script>
@@ -643,12 +649,14 @@
        <template #state="{ row,column}">
          <el-checkbox
              :class="timeOutChangeColor(row)"
              v-if="row[column.field] === 2"
              @click.native.prevent
              :indeterminate="row[column.field]===1"
              :checked="true"/>
          <el-checkbox
              v-else
              :class="timeOutChangeColor(row)"
              @click.native.prevent
              :indeterminate="row[column.field]===1"
              :checked="false"/>
@@ -794,7 +802,10 @@
  height: 100%;
}
:deep(.timeOut.is-checked .el-checkbox__inner) {
  background-color: orangered;
  border-color: orangered;
}
</style>
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
@@ -816,7 +816,7 @@
          margin-left: 0.5rem;"
          size="large"
          type="primary"
          round>{{"复制"}}</el-button>
          round>{{$t('basicData.copy')}}</el-button>
      <el-button
          :disabled="productTotal.state===1"
          @click="saveProduct(null)"
north-glass-erp/src/main/java/com/example/erp/config/StpInterfaceImpl.java
@@ -11,8 +11,6 @@
/**
 * è‡ªå®šä¹‰æƒé™è®¤è¯æŽ¥å£æ‰©å±•,Sa-Token å°†ä»Žæ­¤å®žçŽ°ç±»èŽ·å–æ¯ä¸ªè´¦å·æ‹¥æœ‰çš„æƒé™ç 
 *
 * @author kong
 * @since 2022-10-13
 */
north-glass-erp/src/main/java/com/example/erp/dto/pp/TeamOutputDTO.java
@@ -43,4 +43,6 @@
    private String reviewed;
    @ExcelProperty("审核时间")
    private String examineTime;
    @ExcelProperty("在制品名称")
    private String workProcessName;
}
north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java
@@ -101,6 +101,8 @@
    private LocalDate updateTime;
    @TableField(select = false,exist = false)
    private Integer goodsQuantity;
    @TableField(select = false,exist = false)
    private String timeOut;
    @TableField(value = "customer_id")
    private Customer  customer;
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReworkMapper.java
@@ -1,5 +1,6 @@
package com.example.erp.mapper.pp;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.erp.dto.pp.ReworkDTO;
import com.example.erp.entity.mm.FinishedGoodsInventory;
import com.example.erp.entity.pp.FlowCard;
@@ -12,7 +13,7 @@
import java.util.Map;
@Mapper
public interface ReworkMapper {
public interface ReworkMapper extends BaseMapper<Rework> {
    List<ReworkDTO> SelectRework(@Param("offset") Integer offset, @Param("pageSize") Integer pageSiz,
                                          String startDate, String endDate,@Param("rework") ReworkDTO rework);
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
@@ -35,7 +35,9 @@
    Map<String, Object> getSelectotherMoney(@Param("orderId") String orderId,@Param("deliveryId") String deliveryId,
                                                   @Param("orderNumber") Integer orderNumber,@Param("key") String key,@Param("value") Double value);
    Map<String, Object> getSelectOrderotherMoney(@Param("orderId") String orderId,@Param("orderNumber") Integer orderNumber, @Param("key") String key,@Param("value") Double value);
    Map<String, Object> getSelectOrderotherMoney(@Param("orderId") String orderId,@Param("orderNumber") Integer orderNumber, @Param("key") String key,@Param("value") Double value,@Param("quantity") Integer quantity);
    Map<String, Object> getSelectOrderotherMoneys(@Param("orderId") String orderId,@Param("orderNumber") Integer orderNumber, @Param("key") String key,@Param("value") Double value);
    List <Map<String, Object>> getSelectOrderDetailPrinting(@Param("productId") Integer productId,@Param("orderId") String orderId);
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
@@ -1030,6 +1030,7 @@
            Log log = new Log();
            log.setOperatorId(object.get("userId").toString());
            log.setOperator(object.get("userName").toString());
            log.setFunction("cancelMaterialAdditionRecord物料新增撤销");
            log.setContent(object.toString());
            //获取对象集合循环进行新增修改
            List<MaterialLog> materialLoglist = JSONArray.parseArray(JSONObject.toJSONString(object.get("materialAdd")), MaterialLog.class);
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -67,6 +67,8 @@
    private final SysErrorService sysErrorService;
    private final FinishedOperateLogMapper finishedOperateLogMapper;
    private final RestTemplate restTemplate;
    private final PatchLogMapper patchLogMapper;
    private final ReworkMapper reworkMapper;
    /*public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper, SysErrorService sysErrorService, OrderDetailMapper orderDetailMapper, FinishedOperateLogMapper finishedOperateLogMapper, ReportingWorkTransferMapper reportingWorkTransferMapper) {
@@ -153,7 +155,7 @@
                if (retrievedData!=null){
                    Integer reviewedState = retrievedData.getReviewedState();
                    //根据审核状态查询未审核数据
                    if (reviewedState==1){//已审核
                   // if (reviewedState==1){//已审核
                        //不是第一道工序,查询报工数据
                        List<Map<String,String>>  details = reportingWorkMapper.SelectReworlDetailMp(processIdStr, technologyStr, process,previousProcess,laminating);
                        if(process.equals("中空")){
@@ -171,24 +173,24 @@
                            });
                        }
                        map.put("Detail",details );
                    }else {
                        //不是第一道工序,查询报工数据
                        List<Map<String,String>>  details = reportingWorkMapper.SelectReworlDetailMpReview(processIdStr, technologyStr, process,previousProcess,laminating);
                        if(process.equals("中空")){
                            String orderId = reportingWorkMapper.selectOrderid(processIdStr);
                            details.forEach( detail -> {
                                Integer glassId = orderGlassDetailMapper.
                                        getMinIdByGroup(orderId,
                                                String.valueOf(detail.get("order_number")),
                                                String.valueOf(detail.get("group")));
                                int listGlassId = Integer.parseInt(String.valueOf(detail.get("glassId")));
                                if(listGlassId  !=glassId){
                                    detail.put("rowClass","latter");
                                }
                            });
                        }
                        map.put("Detail",details );
                    }
//                    }else {
//                        //不是第一道工序,查询报工数据
//                        List<Map<String,String>>  details = reportingWorkMapper.SelectReworlDetailMpReview(processIdStr, technologyStr, process,previousProcess,laminating);
//                        if(process.equals("中空")){
//                            String orderId = reportingWorkMapper.selectOrderid(processIdStr);
//                            details.forEach( detail -> {
//                                Integer glassId = orderGlassDetailMapper.
//                                        getMinIdByGroup(orderId,
//                                                String.valueOf(detail.get("order_number")),
//                                                String.valueOf(detail.get("group")));
//                                int listGlassId = Integer.parseInt(String.valueOf(detail.get("glassId")));
//                                if(listGlassId  !=glassId){
//                                    detail.put("rowClass","latter");
//                                }
//                            });
//                        }
//                        map.put("Detail",details );
//                    }
                }
            }
@@ -204,6 +206,8 @@
            map.put("historyTeams", reportingWorkMapper.historyTeamsMp(processIdStr, process));
            //历史工序
            map.put("historyProcess", reportingWorkMapper.SelectHistoryProcessMp(historyProcess, process));
            //是否合片工序
            map.put("laminating", laminating);
        }
        return map;
    }
@@ -842,12 +846,24 @@
    @Transactional(rollbackFor = Exception.class)
    public Object reportingWorkTransferSv(Map<String, String> reportingWork) {
        Map<String, Object> result = new HashMap<>();
        Order oldOrder = orderMapper.selectOrderId(reportingWork.get("oldOrderId"));
        OrderDetail oldOrderDetail = orderDetailMapper.selectOne(
                new QueryWrapper<OrderDetail>()
                        .eq("order_id", reportingWork.get("oldOrderId"))
                        .eq("order_number", reportingWork.get("oldOrderNumber"))
        );
        if(oldOrder == null){
            result.put("msg","旧订单不存在");
            result.put("data",false);
            return result;
        }
        if(oldOrderDetail == null){
            result.put("msg","旧订单次序号不存在");
            result.put("data",false);
            return result;
        }
        Order newOrder = orderMapper.selectOrderId(reportingWork.get("newOrderId"));
        OrderDetail newOrderDetail = orderDetailMapper.selectOne(
@@ -855,15 +871,37 @@
                        .eq("order_id", reportingWork.get("newOrderId"))
                        .eq("order_number", reportingWork.get("newOrderNumber"))
        );
        if (newOrder == null){
            result.put("msg","新订单不存在");
            result.put("data",false);
            return result;
        }
        if(newOrderDetail == null){
            result.put("msg","新订单次序号不存在");
            result.put("data",false);
            return result;
        }
        if(Objects.equals(oldOrder.getOrderId(), newOrder.getOrderId())){
            result.put("msg","新旧订单号一致");
            result.put("data",false);
            return result;
        }
        if(!Objects.equals(oldOrder.getCustomerId(), newOrder.getCustomerId())){
            return "新旧订单客户不一致";
            result.put("msg","新旧订单客户不一致");
            result.put("data",false);
            return result;
        }
        if(!Objects.equals(oldOrderDetail.getProductId(), newOrderDetail.getProductId())){
            return "新旧订单产品不一致";
            result.put("msg","新旧订单产品不一致");
            result.put("data",false);
            return result;
        }
        if (!Objects.equals(oldOrderDetail.getWidth(), newOrderDetail.getWidth())
                || !Objects.equals(oldOrderDetail.getHeight(), newOrderDetail.getHeight())){
            return "新旧订单尺寸不一致";
            result.put("msg","新旧订单尺寸不一致");
            result.put("data",false);
            return result;
        }
@@ -874,7 +912,9 @@
                        .eq("order_number", reportingWork.get("oldOrderNumber"))
                );
        if(oldOrderProcessDetailList.isEmpty()){
            return "旧订单未分流程卡";
            result.put("msg","旧订单未分流程卡");
            result.put("data",false);
            return result;
        }
        //获取新订单是否流程卡是否存在
        List<OrderProcessDetail> newOrderProcessDetailList = orderProcessDetailMapper
@@ -883,7 +923,9 @@
                        .eq("order_number", reportingWork.get("newOrderNumber"))
                );
        if(newOrderProcessDetailList.isEmpty()){
            return "新订单未分流程卡";
            result.put("msg","新订单未分流程卡");
            result.put("data",false);
            return result;
        }
        //新订单是否存在已经排版序号
        List<FlowCard> newFlowCardLayoutStatus = flowCardMapper.selectList(new QueryWrapper<FlowCard>()
@@ -892,8 +934,21 @@
                .gt("layout_status",0)
        );
        if(!newFlowCardLayoutStatus.isEmpty()){
            return "新订单此序号存在排版";
            result.put("msg","新订单此序号存在排版");
            result.put("data",false);
            return result;
        }
        List<ReportingWorkTransfer> reportingWorkTransferList = reportingWorkTransferMapper
                .selectList(new QueryWrapper<ReportingWorkTransfer>()
                        .eq("old_order", reportingWork.get("newOrderId"))
                        .eq("old_order_number", reportingWork.get("newOrderNumber"))
                );
        if(!reportingWorkTransferList.isEmpty()){
            result.put("msg","新订单序号之前已转出报工数据,无法进行转入");
            result.put("data",false);
            return result;
        }
        //获取旧订单报工数据汇总
        List<OrderProcessDetail> oldOrderProcessDetailForReport = orderProcessDetailMapper
                .selectList(new QueryWrapper<OrderProcessDetail>()
@@ -901,6 +956,51 @@
                        .eq("order_number", reportingWork.get("oldOrderNumber"))
                        .gt("reporting_work_num",0)
        );
        if (oldOrderProcessDetailForReport.isEmpty()){
            result.put("msg","旧订单没有可转出的报工数据");
            result.put("data",false);
            return result;
        }
        List<String> oldOrderProcessIdList = new ArrayList<>();
        oldOrderProcessDetailList.forEach(oldOrderProcessDetail -> oldOrderProcessIdList.add(oldOrderProcessDetail.getProcessId()));
        //获取旧数据破损表是否存在破损
        List<DamageDetails> damageDetails = damageDetailsMapper.selectList(
                new QueryWrapper<DamageDetails>()
                        .in("process_id",oldOrderProcessIdList)
                        .eq("order_number", reportingWork.get("oldOrderNumber"))
                        .eq("quantity",0)
        );
        if(!damageDetails.isEmpty()){
            result.put("msg","旧订单存在报工未处理破损数据");
            result.put("data",false);
            return result;
        }
        //获取补片表是否存在补片未审核状态
        List<PatchLog> patchLogs = patchLogMapper.selectList(
                new QueryWrapper<PatchLog>()
                        .eq("order_id", reportingWork.get("oldOrderId"))
                        .eq("order_sort", reportingWork.get("oldOrderNumber"))
                        .eq("review_status",0)
        );
        if (patchLogs.isEmpty()){
            result.put("msg","旧订单存在补片未审核数据");
            result.put("data",false);
            return result;
        }
        List<Rework> reworks = reworkMapper.selectList(
                new QueryWrapper<Rework>()
                    .eq("order_id", reportingWork.get("oldOrderId"))
                    .eq("order_sort", reportingWork.get("oldOrderNumber"))
                    .eq("review_status",0)
        );
        if (patchLogs.isEmpty()){
            result.put("msg","旧订单存在返工未审核数据,请先审核报工后再进行转出");
            result.put("data",false);
            return result;
        }
        Map<String,Object> log = new HashMap<>();
        log.put("oldOrderBeforeChange",oldOrderProcessDetailForReport);
@@ -916,6 +1016,7 @@
            reportingWorkMapper.update(null,new UpdateWrapper<ReportingWork>()
                    .set("reviewed_state",3)
                    .eq("process_id",oldOrderProcessDetail.getProcessId())
                    .gt("reviewed_state",0)
            );
@@ -993,7 +1094,6 @@
                        orderNumberTransferList.add(orderNumberTransfer);
                    }
                }
            }
        });
@@ -1021,17 +1121,20 @@
        //restTemplate.postForObject("http://localhost:8086/order/test",orderNumberTransferList,String.class);
        //向mes发送http请求
        ResponseEntity<String> response =restTemplate.exchange(
        ResponseEntity<OrderNumberTransferDTO> response =restTemplate.exchange(
                "http://localhost:88/api/loadGlass/order/order/orderChange",
                HttpMethod.POST,
                new HttpEntity<>(orderNumberTransferList),
                String.class);
                OrderNumberTransferDTO.class);
        if(response.getStatusCode() == HttpStatus.OK){
            return true;
            OrderNumberTransferDTO responseBody = response.getBody();
            result.put("data",true);
        }else{
            return "连接mes响应超时";
            result.put("msg","连接mes响应超时");
            result.put("data",false);
        }
        return result;
    }
}
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -328,7 +328,7 @@
                                    if(isnull) {
                                        Map<String, Object> moneryItemmap = new HashMap<>();
                                        Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoney(orderDetail.getOrderId(),orderDetail.getOrderNumber(),
                                                key, Double.valueOf(jsonObject.get(key).toString()));
                                                key, Double.valueOf(jsonObject.get(key).toString()),orderDetail.getDeliveryDetail().getQuantity());
                                        if(deliveryDetailOtherMoney.get("monery")!=null){
                                            otherMoneys=otherMoneys+Double.valueOf(deliveryDetailOtherMoney.get("monery").toString());
                                            deliveryDetailotherMoneys=Double.valueOf(deliveryDetailOtherMoney.get("monery").toString());
@@ -611,7 +611,7 @@
                            boolean isnull = key.contains("M");
                            if(isnull){
                                Map<String, Object> moneryItemmap = new HashMap<>();
                                Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoney(detail.getOrderId(),Integer.parseInt(stringObjectMap.get("order_number").toString())
                                Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoneys(detail.getOrderId(),Integer.parseInt(stringObjectMap.get("order_number").toString())
                                        ,key,Double.valueOf(jsonObject.get(key).toString()));
                                grossAmount=grossAmount.add(BigDecimal.valueOf(Double.parseDouble(deliveryDetailOtherMoney.get("monery").toString())));
                                moneryItemmap.put("DeliveryDetailOtherMoney", deliveryDetailOtherMoney);
north-glass-erp/src/main/resources/application.yml
@@ -5,6 +5,9 @@
ip: localhost
port: 3306
#sa-token:
#  timeout: 86400
spring:
  datasource:
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -853,18 +853,18 @@
               o.project,
               od.building_number,
               od.processing_note,
               ogd.child_width         as width,
               ogd.child_height        as height,
               opd.o_width         as width,
               opd.o_height        as height,
               ogd.glass_child,
               ogd.process,
               e.type_name,
               opd.stock_id,
               opd.polys_id,
               od.quantity,
               IFNULL(od.quantity,1) as quantity,
               od.other_columns,
               od.bend_radius,
               od.order_number as heat_layout_id,
               a.id as heat_layout_sort,
               ifnull(od.order_number,0) as heat_layout_id,
               ifnull(a.id,0) as heat_layout_sort,
               od.product_name
        from pp.optimize_detail opd
                 left join sd.`order` o on SUBSTR(opd.process_id, 1, 10) = o.order_id
@@ -912,7 +912,7 @@
                 left join sd.product p on od.product_id = p.id
                 left join sd.basic_glass_type e on e.type_id = p.type_id
                 left join sd.customer c on c.id = o.customer_id
        where opd.project_no = #{projectNo}
        where opd.project_no = #{projectNo} and o.order_id is not null
        order by opd.heat_layout_id, opd.heat_layout_sort desc
    </select>
@@ -2790,7 +2790,7 @@
                 left join
             (select (@row_number := @row_number + 1) as id,process_id as process_id from (select process_id from pp.optimize_detail tt where project_no =#{projectNo} group by process_id) tt,(select @row_number := 0) as t) a
             on a.process_id=opd.process_id
        where opd.project_no = #{projectNo}
        where opd.project_no = #{projectNo} and o.order_id is not null
        group by  order_id,od.order_number
        order by ogd.child_width desc,ogd.child_height desc
    </select>
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -123,6 +123,7 @@
        <result column="code" property="code"/>
        <result column="reviewed" property="reviewed"/>
        <result column="examine_time" property="examineTime"/>
        <result column="workProcessName" property="workProcessName"/>
    </resultMap>
    <resultMap id="scheduleProductionScheduleMap" type="com.example.erp.dto.pp.ScheduleProductionScheduleDTO">
@@ -170,6 +171,7 @@
               e.reportWorkQuantityCount,
               e.reportWorkTime,
               e.broken_num,
               c.quantity*a.area as gross_area,
               ifnull(f.inventory, 0)                         as inventory,
               round(ifnull(f.inventory, 0) * a.area, 2)      as inventoryArea,
               ifnull(dd.quantity, 0)                         as shippedQuantity,
@@ -1330,7 +1332,8 @@
        od.product_name,
        JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code,
        rw.reviewed,
        rw.examine_time
        rw.examine_time,
        GROUP_CONCAT(ogd.glass_child SEPARATOR '+') as workProcessName
        FROM
        reporting_work as rw left join reporting_work_detail as rwd on rwd.reporting_work_id=rw.reporting_work_id
        left join flow_card as fc on fc.order_id=rw.order_id and fc.process_id=rw.process_id  and fc.order_number=rwd.order_number and fc.technology_number=rwd.technology_number
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -189,56 +189,55 @@
<!--    éžç¬¬ä¸€é“工序报工明细查询-->
    <select id="SelectReworlDetailMp">
        SELECT
            fc.order_number,
            ogd.glass_child,
            ogd.technology_number,
            ogd.glass_address,
            fc.quantity AS quantity_card,
            ogd.child_width,
            ogd.child_height,
        fc.order_number,
        ogd.glass_child,
        ogd.technology_number,
        ogd.glass_address,
        fc.quantity AS quantity_card,
        ogd.child_width,
        ogd.child_height,
        if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
            if((odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num ) &lt; 0,
                0,
        if((odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num ) &lt; 0,
        0,
        odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num) as quantity,
            if((odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num) &lt; 0,
                0,
        if((odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num) &lt; 0,
        0,
        odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num) as completedQuantity,
            odpd.reporting_work_num as completed,
            odpd.broken_num as onceBroken,
            ogd.`group`,
            if(fc.quantity -odpd.reporting_work_num = 0 ,true,false) as saveFlag, -- åˆ¤æ–­æ˜¯å¦å·²ç»å®Œæˆï¼Œå·²ç»å®Œæˆä¸åºå·å’ŒåŒåºå·æ•°é‡ç›¸åŒæ‰èƒ½æäº¤
            od.other_columns,
            ogd.id as 'glassId'
        odpd.reporting_work_num as completed,
        odpd.broken_num as onceBroken,
        ogd.`group`,
        if(fc.quantity -odpd.reporting_work_num = 0 ,true,false) as saveFlag, -- åˆ¤æ–­æ˜¯å¦å·²ç»å®Œæˆï¼Œå·²ç»å®Œæˆä¸åºå·å’ŒåŒåºå·æ•°é‡ç›¸åŒæ‰èƒ½æäº¤
        od.other_columns,
        ogd.id as 'glassId',IFNULL(rws.reviewed_state,0) as reviewed_state
        FROM
            sd.order_detail AS od
        sd.order_detail AS od
        LEFT JOIN sd.order_glass_detail AS ogd
                ON od.order_id = ogd.order_id
                AND od.order_number = ogd.order_number
        <if test="process == '夹胶'">
        ON od.order_id = ogd.order_id
        AND od.order_number = ogd.order_number
        <if test="process == '夹胶' or (process == '打胶和粘框')" >
            AND ogd.`group` = (select `group`
                               from sd.order_glass_detail
                               where order_id = ogd.order_id
                               and order_number = ogd.order_number
                               and POSITION(technology_number in #{technologyStr})
                               limit 1)
            from sd.order_glass_detail
            where order_id = ogd.order_id
            and order_number = ogd.order_number
            and POSITION(technology_number in #{technologyStr})
            limit 1)
        </if>
        LEFT JOIN flow_card AS fc
                ON fc.order_id = ogd.order_id
                and fc.production_id=ogd.production_id
                AND fc.order_number = ogd.order_number
                AND fc.technology_number = ogd.technology_number
        ON fc.order_id = ogd.order_id
        and fc.production_id=ogd.production_id
        AND fc.order_number = ogd.order_number
        AND fc.technology_number = ogd.technology_number
        left join sd.order_process_detail as odpd
                ON  odpd.order_id = fc.order_id
                AND odpd.order_number = fc.order_number
                AND odpd.technology_number = fc.technology_number
                and odpd.process_id = fc.process_id
        ON  odpd.order_id = fc.order_id
        AND odpd.order_number = fc.order_number
        AND odpd.technology_number = fc.technology_number
        and odpd.process_id = fc.process_id
        left join sd.order_process_detail as odpds
                ON  odpds.id = odpd.id-1
        ON  odpds.id = odpd.id-1
        left join
            (SELECT
        (SELECT
        sum(rw.rework_num) as 'patchNumSum',
        rw.process_id,rw.order_sort,rw.technology_number,
        rwk.this_process
@@ -248,19 +247,30 @@
        reporting_work as rwk
        on rw.reporting_work_id =rwk.reporting_work_id
        where rwk.this_process=#{process}
        and rw.review_status=1
        and rw.review_status>=0
        and rw.process_id = #{processIdStr}
        GROUP BY rw.process_id,rw.order_sort,rw.technology_number) as c
            on c.process_id = fc.process_id
            and c.order_sort = fc.order_number
            and c.technology_number = fc.technology_number
        WHERE
            fc.process_id = #{processIdStr}
        on c.process_id = fc.process_id
        and c.order_sort = fc.order_number
        and c.technology_number = fc.technology_number
        left join (select reviewed_state as reviewed_state ,
        process_id,a.reporting_work_id,b.technology_number,b.order_number
        from reporting_work as a
        left join reporting_work_detail as b on a.reporting_work_id = b.reporting_work_id
        where this_process=#{previousProcess} and process_id= #{processIdStr} and a.reviewed_state>=0
        <if test="laminating != 'laminating'">
           AND POSITION(fc.technology_number in #{technologyStr})
            AND POSITION(b.technology_number in #{technologyStr})
        </if>
        GROUP BY b.order_number,b.technology_number
        ) as rws
        on rws.process_id = fc.process_id and rws.order_number=fc.order_number and rws.technology_number=fc.technology_number
        WHERE
        fc.process_id = #{processIdStr}
        AND odpd.process = #{process}
        <if test="laminating != 'laminating'">
            AND POSITION(fc.technology_number in #{technologyStr})
        </if>
        order by fc.order_number
    </select>
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -192,7 +192,7 @@
               od.area,
               od.gross_area,
               od.compute_area,
               dd.area as compute_gross_area,
               od.compute_gross_area,
               od.processing_note,
               od.edging_type,
               od.perimeter,
@@ -1029,13 +1029,21 @@
    </select>
    <select id="getSelectOrderotherMoney" >
        select bom.alias,ifnull(oom.price,0) as price,#{value}*od.quantity as count,ifnull(oom.price,0)*#{value}*od.quantity as monery
        select bom.alias,ifnull(oom.price,0) as price,#{value}*#{quantity} as count,ifnull(oom.price,0)*#{value}*#{quantity} as monery
                 from order_detail od
                 left join order_other_money oom on oom.order_id=od.order_id  and oom.column=#{key}
                 left join basic_other_money bom on bom.`column`=oom.`column`
        where  od.order_id = #{orderId} and od.order_number=#{orderNumber} and (od.other_columns!='{}' or od.other_columns!=null)
    </select>
    <select id="getSelectOrderotherMoneys" >
        select bom.alias,ifnull(oom.price,0) as price,#{value}*od.quantity as count,ifnull(oom.price,0)*#{value}*od.quantity as monery
        from order_detail od
                 left join order_other_money oom on oom.order_id=od.order_id  and oom.column=#{key}
                 left join basic_other_money bom on bom.`column`=oom.`column`
        where  od.order_id = #{orderId} and od.order_number=#{orderNumber} and (od.other_columns!='{}' or od.other_columns!=null)
    </select>
    <select id="getSelectOrderDetailPrinting" >
        select od.order_id,
               od.order_number,
north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml
@@ -587,6 +587,7 @@
        a.edging_type,
        b.pack_type,
        round(sum(a.perimeter),2) as perimeter,
        round(sum(a.weight),2) as weight,
        a.price,
        sum(a.gross_amount ) as gross_amount,
        b.al_type,
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -104,7 +104,8 @@
    <select id="getOrderList">
       select * from (select
            o.*,
        ifnull(sum(fgi.quantity_available),0) as goodsQuantity
        ifnull(sum(fgi.quantity_available),0) as goodsQuantity,
        if(DATEDIFF(o.delivery_date, CURDATE()) &lt; 3  and o.delivery &lt; 2, 'timeOut','' ) as timeOut
        from
            sd.`order` as o
        left join mm.finished_goods_inventory as  fgi