廖井涛
2024-03-27 59ef6e9b5b8aff7614711c2afdba23a460ac1c56
Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
6个文件已添加
38个文件已修改
1610 ■■■■ 已修改文件
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources.local.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/config.js 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/package-lock.json 31 ●●●●● 补丁 | 查看 | 原始文档 | 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/hook/downLoadFile.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/en.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/layout/MainErpView.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/LoginView.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue 234 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/ProductionSchedule.vue 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/Product.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportController.java 36 ●●●●● 补丁 | 查看 | 原始文档 | 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/ReportMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderProcessDetailMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReplenishService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/WorkOrderService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/Report.xml 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderProcessDetail.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/test/java/com/example/erp/service/pp/ReworkServiceTest.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/pp/FolwCard.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/sd/OrderMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/sd/OrderProcessDetail.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -13,3 +13,4 @@
# Ignore .idea files
**/.idea/
../idea/*
north-glass-erp/.idea/dataSources.local.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="dataSourceStorageLocal" created-in="IU-232.8660.185">
  <component name="dataSourceStorageLocal" created-in="IU-232.9559.62">
    <data-source name="@localhost [2]" uuid="165c5447-d19a-4aaf-af5f-cee92ae696c2">
      <database-info product="MySQL" version="8.0.22" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="8.0.22" exact-driver-version="8.0">
        <extra-name-characters>#@</extra-name-characters>
north-glass-erp/northglass-erp/config.js
north-glass-erp/northglass-erp/package-lock.json
@@ -24,6 +24,7 @@
        "xlsx": "^0.18.5"
      },
      "devDependencies": {
        "@types/node": "^20.11.30",
        "@types/sortablejs": "^1.15.7",
        "@vitejs/plugin-vue": "^4.3.4",
        "vite": "^4.4.9"
@@ -543,6 +544,15 @@
      "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
      "dependencies": {
        "@types/lodash": "*"
      }
    },
    "node_modules/@types/node": {
      "version": "20.11.30",
      "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.11.30.tgz",
      "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==",
      "dev": true,
      "dependencies": {
        "undici-types": "~5.26.4"
      }
    },
    "node_modules/@types/sortablejs": {
@@ -1457,6 +1467,12 @@
        "node": ">=8.0"
      }
    },
    "node_modules/undici-types": {
      "version": "5.26.5",
      "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
      "dev": true
    },
    "node_modules/unplugin": {
      "version": "1.5.0",
      "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz",
@@ -1905,6 +1921,15 @@
      "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
      "requires": {
        "@types/lodash": "*"
      }
    },
    "@types/node": {
      "version": "20.11.30",
      "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.11.30.tgz",
      "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==",
      "dev": true,
      "requires": {
        "undici-types": "~5.26.4"
      }
    },
    "@types/sortablejs": {
@@ -2525,6 +2550,12 @@
        "is-number": "^7.0.0"
      }
    },
    "undici-types": {
      "version": "5.26.5",
      "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
      "dev": true
    },
    "unplugin": {
      "version": "1.5.0",
      "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz",
north-glass-erp/northglass-erp/package.json
@@ -24,6 +24,7 @@
    "xlsx": "^0.18.5"
  },
  "devDependencies": {
    "@types/node": "^20.11.30",
    "@types/sortablejs": "^1.15.7",
    "@vitejs/plugin-vue": "^4.3.4",
    "vite": "^4.4.9"
north-glass-erp/northglass-erp/public/importTemplate.xlsx
Binary files differ
north-glass-erp/northglass-erp/src/hook/downLoadFile.js
New file
@@ -0,0 +1,7 @@
export default function downloadFile(url,fileName){
       // 文件的URL地址
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', fileName);
    link.click();
}
north-glass-erp/northglass-erp/src/lang/en.js
@@ -90,7 +90,8 @@
        shape:'Shape',
        bendRadius:'Bend Radius',
        edgingType:'Edging Type',
        import:'import',
        import:'Import',
        template:'Template',
        msg:{
            productCheck:'Please select a product',
            tableLengthNot:'No table data',
@@ -126,6 +127,12 @@
        msgDeleteSuccess:'Successfully delete',
        deleteConfirm:'Confirm order deletion?',
        orderType:'Order Type',
        processFlows:'Process flows:',
        copy:'Copy',
        copyTitle:'Copy Title',
        msgList:{
            checkOrder:'No order information is found. Please click Order first'
        }
    },
    craft:{
        glassAddress:'Glass Address',
@@ -144,6 +151,7 @@
        oldProcess:'Old Process',
        newProcess:'New Process',
        reset:'Reset',
        sure:'Sure',
    },
    workOrder:{
        workOrder:'Work Order Management',
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -2,12 +2,12 @@
    login:{
        userErr:'请输入你的账号',
        pwErr:'请输入你的密码',
        loginSuccessful:'登陆成功',
        loginSuccessful:'登录成功',
        connectErr:'服务器连接失败',
        user:'用户',
        password:'密码',
        SysName:'北玻自动化ERP管理系统',
        login:'登陆',
        login:'登录',
        register:'注册',
    },
    main:{
@@ -50,6 +50,61 @@
            ReviewSuccess:'审核成功'
        }
    },
    product:{
       ProductHomePage:'产品首页',
       create:'创建',
       msg:{
           productLength:'请添加产品详情',
           lastGlass:'产品详情最后一条不是玻璃,请完善',
           glassType:'请选择产品类别',
           saveSuccess: '创建成功',
           operateSuccess: '操作成功',
           operateFail: '操作失败',
           glassReview:'请输入产品材料属性与工艺属性',
           glassRepeat:'请先选择间隔物',
           HollowReview:'请选择全部中空间隔物下拉框',
           firstGlass:"请先选择产品",
           InterlayerReview:'请选择全部中空间隔物下拉框',
           glassTypeTitle:'材料属性',
           thickness:'*厚度',
           color:'*颜色',
           craft:'*工艺属性',
           location:'*位置',
           lowELocation:'LOW-E面',
           processAttribute:"工艺属性",
           hollowThickness:'*中空厚度',
           hollowGasType:'*充气方式:',
           hollowType:'*封胶',
           hollowGlueDepth:'*默认胶深:',
           hollow:'中空间隔物',
           hollowUpdate:'中空间隔物修改',
           interlayerThickness:'*夹层厚度',
           interlayerType:'*类型',
           interlayerColor:'*颜色',
           interlayer:'夹层间隔物',
           interlayerUpdate:'夹层间隔物修改',
           glassAttribute:'单片玻璃属性:',
           reset:'重置',
           processFlowAttribute:'工艺流程属性:',
           sure:'确认',
           update:'修改',
           quickSearch:'快速查询',
           weightThickness:'计重厚度',
           allThickness:'厚度',
           remarks:'备注',
           product:'产品名称:',
           updateGlass:'修改玻璃',
           updateHollow:'修改中空',
           updateInterlayer:'修改夹层',
           delete: '删除',
           create:'创建',
           review:'审核',
           cancelReview:'反审',
       }
    },
    order:{
        orderHomePage:'订单首页',
        orderReport:'订单报表',
@@ -91,6 +146,7 @@
        bendRadius:'弯钢弧度',
        edgingType:'磨边类型',
        import:'导入',
        template:'模板',
        msg:{
            productCheck:'请选择产品',
            tableLengthNot:'没有表格数据',
@@ -126,6 +182,12 @@
        msgDeleteSuccess:'删除成功',
        deleteConfirm:'确认删除订单?',
        orderType:'订单类型',
        processFlows:'流程卡进度',
        copy:'复制订单',
        copyTitle:'复制表头',
        msgList:{
            checkOrder:'未查询到订单信息,请先单击订单'
        }
    },
    craft:{
@@ -145,6 +207,16 @@
        oldProcess:'原流程',
        newProcess:'流程',
        reset:'重置',
        sure:'确定',
        // upperLeft:'左上',
        // upperRight:'右上',
        // lowLeft:'左下',
        // lowRight:'右下',
        // TrademarkAttribute:'商标参数',
        // TrademarkOptions:'商标选项',
        // xImage:'X轴镜像',
        // yImage:'X轴镜像'
    },
    workOrder:{
north-glass-erp/northglass-erp/src/layout/MainErpView.vue
@@ -89,13 +89,12 @@
        <div style="height: 100%;width: 100%;display: flex">
          <img src="../assets/northGlass.ico" alt="" style="max-width: 100%;max-height: 100%">
          <h3 style="margin: 1rem  ;font-weight: bold;width: 40vw;"> {{$t('main.titleFirst') + user + $t('main.titleLast')}}</h3>
          <span style="height: 70%;width: 78vw;margin-top: 1rem;" >
          <span style="height: 70%;width: 78vw;margin-top: 1.5rem;" >
            <el-button  class="sys-quit" @click="quit"  type="info" round>
              <el-icon size="large"><SwitchButton  size=""/></el-icon>
            </el-button>
<!--            <el-button   class="sys-quit" @click="quit"  type="info" round>-->
              <el-icon @click="quit"  style="float: right;margin-right: 1rem" size="large" ><SwitchButton  size=""/></el-icon>
<!--            </el-button>-->
          </span>
        </div>
      </el-header>
      <el-container >
north-glass-erp/northglass-erp/src/views/LoginView.vue
@@ -8,9 +8,10 @@
import userInfo from '@/stores/userInfo'
import { sendSock, createWebSocket, closeSock,global_callback1 } from "@/utils/webSocket"
import { useI18n } from 'vue-i18n'
import i18n from "@/lang/index"
//语言获取
const { t } = useI18n()
let language = ref(localStorage.getItem('lang') || 'zh')
const store=userInfo()
let ruleFormRef  = ref<FormInstance>()
const router = useRouter()
@@ -35,7 +36,7 @@
const validatePass = (rule: any, value: any, callback: any) => {
  if (value === '') {
    callback(new Error(  t('login.psErr')  ))
    callback(new Error(  t('login.pwErr')  ))
  } else {
    callback()
  }
@@ -96,7 +97,10 @@
onUnmounted(() => {
  window.removeEventListener('keydown', keyDown)
})
const changeLanguage = () =>{
  localStorage.setItem('lang',language.value)
  location.reload()
}
</script>
<template>
@@ -106,6 +110,14 @@
        <img id="img-pic" src="@/assets/img.png" alt="">
      </div>
      <div id="div-login">
        <el-select
            @change="changeLanguage"
            v-model="language"
            placeholder=" "
            style="float: right;width: 6rem">
          <el-option value="zh"  label="中文" />
          <el-option value="en"  label="English" />
        </el-select>
        <h2>{{$t('login.SysName')}}</h2>
        <el-form
            @submit.native.prevent
north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
@@ -668,6 +668,7 @@
              ref="xGridLeft"
              class="mytable-scrollbar"
              max-height="100%"
              height="650px"
              v-bind="gridLeftOptions"
              v-on="gridEvents"
          >
@@ -722,6 +723,7 @@
                ref="xGrid"
                class="mytable-scrollbar"
                max-height="100%"
                height="650px"
                v-bind="gridOptions"
            >
              <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue
@@ -38,7 +38,7 @@
//工序
const value = ref('cutting')
const value = ref('切割')
//排产状态
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue
@@ -79,21 +79,6 @@
  }
})
//页脚翻页查询
const selectPageList = ()=>{
  let startTime = form.date1[0]
  let endTime = form.date1[1]
  request.post(`/processCard/flowCard/${pageNum.value}/${total.pageSize}/${startTime}/${endTime}`,filterData.value).then((res) => {
    if(res.code==200){
      produceList = deepClone(res.data.data)
      xGrid.value.reloadData(produceList)
    }else{
      ElMessage.warning(res.msg)
    }
  })
}
//页脚跳转
const handlePageChange = ({ currentPage, pageSize }) => {
@@ -108,38 +93,6 @@
  $panel.changeOption(event, !!option.data, option)
}
function filterChanged(column) {
  gridOptions.loading = true
  //筛选条件发生变化条件发生变化
  let value = column.datas[0] != undefined ? column.datas[0] : ''
  value = value.trim()
  //判断是否存在外键
  if (column.property.indexOf('.') > -1) {
    const columnArr = column.property.split('.')
    filterData.value[columnArr[0]] = {
      [columnArr[1]]: value
    }
  } else {
    filterData.value[column.property] = value
  }
//获取选中时间
  let startTime = form.date1[0]
  let endTime = form.date1[1]
  request.post(`/processCard/detailFlowCard/1/${total.pageSize}/${startTime}/${endTime}`, filterData.value).then((res) => {
    if(res.code==200){
      pageTotal.value=res.data.total
      total.pageTotal=parseInt(res.data.total)
      pageNum.value=1
      produceList = deepClone(res.data.data)
      xGrid.value.loadData(produceList)
      gridOptions.loading=false
    }else{
      ElMessage.warning(res.msg)
    }
  })
}
/*后端返回结果多层嵌套展示*/
const hasDecimal = (value) => {
@@ -183,9 +136,11 @@
    {field: 'order_id', title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 80 },
    {field: 'process_id', width: 130, title: '流程卡号' ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order_number', title: '订单序号' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
    {field: 'technology_number', title: '小片顺序' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
    {field: 'quantity', title: '数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 180},
    {field: 'area', title: '面积' ,showOverflow:"ellipsis"},
    {field: 'product_name', title: '产品名称', },
    {field: 'glass_child', title: '单片名称', },
    {field: 'founder', title: '分架员', },
    {field: 'splitFrame_time', title: '分架时间', },
  ],//表头按钮
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
@@ -310,14 +310,15 @@
  ],//table body实际数据
  //脚部求和
  footerMethod ({ columns, data }) {//页脚函数
    let footList = ['quantity', 'computeGrossArea',]
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return t('basicData.total')
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
        }
        return ''
      })
    ]
north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue
@@ -1,25 +1,28 @@
<script setup>
import {reactive, ref} from "vue";
import request from "@/utils/request"
import {ElDatePicker, ElMessage} from "element-plus"
import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue"
import {Search} from "@element-plus/icons-vue"
import {useRouter} from  'vue-router'
import {changeFilterEvent, filterChanged} from "@/hook"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
let router=useRouter()
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/reportingWorks/ReportingWorkDetail', query: { id: row.id }})
      break
let props = defineProps({
  orderId:null
})
onMounted(()=>{
  if(props.orderId===null  || props.orderId===undefined || props.orderId===''){
    return
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
    case  'setType':{
      alert('我接收到子组件传送的反审状态')
      break
    }
  }
}
  form.orderId = props.orderId
  getWorkOrder()
})
//表尾求和
const sumNum = (list, field) => {
@@ -30,8 +33,88 @@
  return count.toFixed(2)
}
//子组件接收参数
//定义滚动条高度
let scrollTop = ref(null)
let scrollHeight = ref(null)
let clientHeight = ref(null)
const scrollEvnt = (row) => {
  // 内容高度
  scrollTop.value = row.$event.target.scrollTop
  scrollHeight.value = row.$event.target.scrollHeight
  clientHeight.value = row.$event.target.clientHeight
}
//筛选条件,有外键需要先定义明细里面的数据
let filterData = ref({
  order: {
    project: ''
  },
  orderDetail: {
    productId: '',
    productName: '',
    computeGrossArea: '',
    processingNote: '',
  }
})
const columns = [
  {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
  {field: 'product_name', width: 150, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'glass_child',width: 130, title: '单片名称' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'order_type', width: 120,title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'process_id',width: 110, title: '流程卡号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
  {field: 'technology_number', width: 90,title: '标记',showOverflow:"ellipsis"},
  {field: 'quantity', width: 90,title: '数量'},
  {field: 'broken_num',width: 90, title: '次破数量'},
  {field: 'inventoryArea',width: 120, title: '入库面积'},
]
//需要合并的列
let column = [1,3,8]
//点击查询
const getWorkOrder = () => {
  request.post(`/report/processCardProgress/${form.orderId}`,column).then((res) => {
    if (res.code == 200) {
      if(res.data.data.length===0){
        ElMessage.warning('未查询到此订单流程卡数据')
        return
      }
      gridOptions.columns = JSON.parse(JSON.stringify(columns))
      res.data.title.forEach(item =>{
        let column = {slots: { default: 'quantitySum' }, width: 90,title: item.process}
        gridOptions.columns.push(column)
      })
      res.data.data.forEach(item => {
        item.reportWorkQuantity=JSON.parse(item.reportWorkQuantity)
        item.reportWorkQuantityCount=JSON.parse(item.reportWorkQuantityCount)
      })
      mergeCells.value = res.data.mergeCell
      console.log(res.data.title)
      xGrid.value.loadData(res.data.data)
    } else {
      ElMessage.warning(res.msg)
    }
  })
}
const quantitySum = ( row,column )=>{
  const reportWorkQuantity = row.reportWorkQuantity[column.title] || 0
  const reportWorkQuantityCount = row.reportWorkQuantityCount[column.title] || 0
  if(reportWorkQuantity===reportWorkQuantityCount){
    return reportWorkQuantity
  }
  return (reportWorkQuantity
      +'('
      +reportWorkQuantityCount
      +')' )
  //return
}
/*后端返回结果多层嵌套展示*/
const hasDecimal = (value) => {
  const regex = /\./; // 定义正则表达式,查找小数点
  return regex.test(value); // 返回true/false
}
const xGrid = ref()
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
@@ -60,71 +143,19 @@
    mode: 'row',
    showStatus: true
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    {field: '1', width: 150, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
    {field: '2',width: 130, title: '单片名称', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: '3', width: 120,title: '订单类型', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: '4',width: 110, title: '流程卡号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: '5', width: 90,title: '标记', sortable: true,showOverflow:"ellipsis"},
    {field: '6', width: 90,title: '数量', sortable: true},
    {field: '7',width: 90, title: '次破数量', sortable: true},
    {field: '8',width: 120, title: '切割', sortable: true},
    {field: '9',width: 120, title: '磨边', sortable: true},
    {field: '10',width: 120, title: '钢化', sortable: true},
    {field: '11',width: 120, title: '入库面积', sortable: true},
  ],//表头按钮
  columns:[],//表头按钮
  toolbarConfig: {
    // buttons: [{
    //
    // }],
    import: false,
    export: true,
    print: true,
    // import: false,
    // export: true,
    // print: true,
    zoom: true,
    custom: true
  },
  data:  [
    {
      1:'10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢+12Ar(结)+10mm超白平钢(内)',
      2:'10mm超白UD60平钢(外)',
      3:'普通订单',
      4:'NG23052602A01/1',
      5:'1',
      6:'33',
      7:'1',
      8:'22',
      9:'22',
      10:'22',
      11:'314.13',
    },
    {
      1:'10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢+12Ar(结)+10mm超白平钢(内)',
      2:'10mm超白平钢+12Ar(结)',
      3:'普通订单',
      4:'NG23052602A01/2',
      5:'2',
      6:'33',
      7:'1',
      8:'22',
      9:'22',
      10:'22',
      11:'314.13',
    },
    {
      1:'10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢+12Ar(结)+10mm超白平钢(内)',
      2:'10mm超白平钢(内)',
      3:'普通订单',
      4:'NG23052602A01/3',
      5:'3',
      6:'33',
      7:'1',
      8:'22',
      9:'22',
      10:'22',
      11:'314.13',
    },
  ],//table body实际数据
  //脚部求和
  // footerMethod ({ columns, data }) {//页脚函数
@@ -144,40 +175,14 @@
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
  orderId: '',
})
const mergeCells = ref([
  { row: 0, col: 1, rowspan: 3, colspan: 0},
  { row: 3, col: 1, rowspan: 3, colspan: 0},
  { row: 0, col: 6, rowspan: 3, colspan: 0},
  { row: 3, col: 6, rowspan: 3, colspan: 0},
])
@@ -187,9 +192,20 @@
  <div class="main-div-customer" >
    <div id="selectForm">
      <el-row :gutter="0">
        <el-input placeholder="销售单号" v-model="form.name" value="NG23110102" style="width: 150px"/>
        <el-input
            v-model="form.orderId"
            clearable
            :disabled="props.orderId"
            :placeholder="$t('order.orderId')"
            style="width: 130px"></el-input>
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
        <el-button
            :disabled="props.orderId"
            @click="getWorkOrder"
            id="select"
            type="primary" :icon="Search">{{$t('basicData.search')}}
        </el-button>
      </el-row>
    </div>
@@ -213,12 +229,6 @@
        </ul>
      </template>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'setType')" link type="primary" size="small">反审</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
        <div>
@@ -228,6 +238,10 @@
        </div>
      </template>
      <template #quantitySum="{ row,column }">
        <span>{{ quantitySum(row,column) }} </span>
      </template>
    </vxe-grid>
  </div>
north-glass-erp/northglass-erp/src/views/pp/report/ProductionSchedule.vue
@@ -2,25 +2,14 @@
import {reactive, ref} from "vue";
import {useRouter} from  'vue-router'
import {Search} from "@element-plus/icons-vue";
import {changeFilterEvent, filterChanged} from "@/hook"
import { useI18n } from 'vue-i18n'
import request from "@/utils/request";
import {ElMessage} from "element-plus";
//语言获取
const { t } = useI18n()
let router=useRouter()
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/reportingWorks/ReportingWorkDetail', query: { id: row.id }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
    case  'setType':{
      alert('我接收到子组件传送的反审状态')
      break
    }
  }
}
//表尾求和
const sumNum = (list, field) => {
@@ -31,8 +20,56 @@
  return count.toFixed(2)
}
//子组件接收参数
//定义滚动条高度
let scrollTop = ref(null)
let scrollHeight = ref(null)
let clientHeight = ref(null)
const scrollEvnt = (row) => {
  // 内容高度
  scrollTop.value = row.$event.target.scrollTop
  scrollHeight.value = row.$event.target.scrollHeight
  clientHeight.value = row.$event.target.clientHeight
}
//筛选条件,有外键需要先定义明细里面的数据
let filterData = ref({
  order: {
    project: ''
  },
  orderDetail: {
    productId: '',
    productName: '',
    computeGrossArea: '',
    processingNote: '',
  }
})
//点击查询
const getWorkOrder = () => {
  let inputVal = form.orderId
  request.post(`/report/ProductionSchedule/${inputVal}`, filterData.value).then((res) => {
    if (res.code == 200) {
      pageTotal.value = res.data.total
      xGrid.value.loadData(res.data.data)
      gridOptions.loading = false
    } else {
      ElMessage.warning(res.msg)
    }
  })
}
/*后端返回结果多层嵌套展示*/
const hasDecimal = (value) => {
  const regex = /\./; // 定义正则表达式,查找小数点
  return regex.test(value); // 返回true/false
}
//子组件接收参数
const xGrid = ref()
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
@@ -283,9 +320,14 @@
  <div class="main-div-customer">
    <div id="selectForm">
      <el-row :gutter="0">
        <el-input placeholder="销售单号" v-model="form.name" style="width: 150px"/>
        <el-input v-model="form.orderId" clearable :placeholder="$t('order.orderId')" style="width: 130px"></el-input>
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
        <el-button
            @click="getWorkOrder"
            id="select"
            type="primary" :icon="Search">{{$t('basicData.search')}}
        </el-button>
      </el-row>
    </div>
@@ -307,13 +349,6 @@
            <span>{{ row[item.field] }}</span>
          </li>
        </ul>
      </template>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-button @click="getTableRow(row,'setType')" link type="primary" size="small">反审</el-button>
        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button>
      </template>
      <template #num1_filter="{ column, $panel }">
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -20,7 +20,7 @@
const titleUploadData = ref({
  reportingWorkId: null,
  //流程卡号
  processId: 'NG24030804A02/1',
  processId: '',
  //销售单号
  orderId: '',
  reviewedState:0,
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -8,7 +8,8 @@
import  useUserInfoStore from '@/stores/userInfo'
import SelectProduct from "@/views/sd/product/SelectProduct.vue"
import {changeFilterEvent,filterChanged} from "@/hook"
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove"
import downLoadFile from "@/hook/downLoadFile"
import {useI18n} from "vue-i18n"
const { t } = useI18n()
@@ -299,7 +300,7 @@
        }
      }
    }
  },//头部按钮事件
  },//右键按钮事件
  menuClick ({ menu, row, column }) {
    const $grid = xGrid.value
    if ($grid) {
@@ -411,18 +412,35 @@
onMounted(()=>{
  //启用表格拖动选中
  addListener(xGrid.value,gridOptions)
  const str = route.query.orderId
  const str = route.query.orderId || history.state.orderId
  if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){
    return
  }
  request.post(`/order/getOrderById/${str}`).then((res) => {
    if(res.code==200){
      titleUploadData.value = res.data.order
      if(history.state.orderId!=null){
        titleUploadData.value.orderId=''
        titleUploadData.value.id=null
        titleUploadData.value.processReview=null
        titleUploadData.value.orderReview=null
        titleUploadData.value.productionOrder=null
        titleUploadData.value.processingCard=null
        titleUploadData.value.warehousing=null
        titleUploadData.value.delivery=null
        titleUploadData.value.createTime=null
        if(history.state.type=='copy'){
          xGrid.value.reloadData(res.data.orderDetails)
        }
        return
      }
      //取消工艺按钮禁用
      gridOptions.toolbarConfig.buttons[1].disabled = false
      //工艺审核后保存按钮禁用
      if(res.data.order.processReview === 2){
        gridOptions.toolbarConfig.buttons[4].disabled = true
      }
      //取消审核按钮禁用
      if(res.data.order.processReview === 2 && res.data.order.orderReview === 0){
@@ -439,6 +457,11 @@
          status: 'primary',
          'name': (res.data.order.orderReview>0?t('basicData.cancel'):t('basicData.restore'))}
        gridOptions.toolbarConfig.buttons.push(button)
        if(res.data.order.orderReview===-2){
          gridOptions.toolbarConfig.buttons[2].disabled = true
          gridOptions.toolbarConfig.buttons[3].disabled = true
          gridOptions.toolbarConfig.buttons[4].disabled = true
        }
      }
      if(res.data.order.productionOrder !==0 ){
        gridOptions.toolbarConfig.buttons[2].disabled = true
@@ -595,6 +618,11 @@
    xGrid.value.loadData(jsonData)
  }
  fileReader.readAsBinaryString(files[0])
}
//模板下载
const importTemplate = () => {
  downLoadFile('/importTemplate.xlsx','importTemplate.xlsx')
}
//行单元格修改修改触发此事件
@@ -764,6 +792,7 @@
          </div>
        </template>
        <template #toolbar_buttons>
          <vxe-button  @click="importTemplate">{{$t('order.template')}}</vxe-button>
          <vxe-button  @click="importEvent">{{$t('order.import')}}</vxe-button>
        </template>
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -8,9 +8,21 @@
  import {ElMessage} from "element-plus"
  import {VXETable} from "vxe-table"
  import {useI18n} from "vue-i18n"
  import {toolbarButtonClickEvent} from "@/hook/mouseMove";
  const { t } = useI18n()
  const router = useRouter()
  let rowClickIndex = ref(null)
  const dialogTableVisible = ref(false)
  let orderType = ref("2")
  let selectDate = ref(["",""])
  let filterData = ref({})
  let orderList = ref([])
  let pageNum=ref(1)
  let total = reactive({
    pageTotal : 0,
    dataTotal : 0,
    pageSize : 100
  })
  const xGrid = ref()
  const gridOptions = reactive({
@@ -40,7 +52,19 @@
      trigger: 'click',
      mode: 'row',
      showStatus: true
    },//表头参数
    },
    menuConfig: {
      body: {
        options: [
          [
            { code: 'copy', name: t('searchOrder.copy'), prefixIcon: 'vxe-icon-copy', visible: true},
            { code: 'copyTitle', name: t('searchOrder.copyTitle'), prefixIcon: 'vxe-icon-copy', visible: true},
            { code: 'getProcessList', name: t('searchOrder.processFlows'), prefixIcon: 'vxe-icon-file-txt', visible: true}
          ]
        ]
      }
    },
    //表头参数
    columns:[
      {type:'expand',slots: { content:'content' },width: 50,fixed:"left",},
      {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
@@ -60,7 +84,7 @@
      {field: 'project',width:120,  title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'batch',width:120,  title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: '14',width:120,  title: t('searchOrder.inventoryNum'), sortable: true},
      {field: 'goodsQuantity',width:120,  title: t('searchOrder.inventoryNum'), sortable: true},
      {field: 'area',width:120,  title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'createTime',width:120,   title: t('basicData.reportData'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'packType',width:120,  title: t('order.packType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
@@ -73,7 +97,9 @@
      //{field: '14',width:120,  title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'deliveryAddress',width:120,  title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
    ],//表头按钮
    ],
    //表头按钮
    toolbarConfig: {
      buttons: [
@@ -110,7 +136,7 @@
      if ($grid) {
        switch (code) {
          case 'checkList': {
            if($grid.getCheckboxRecords().length==0){
            if($grid.getCheckboxRecords().length===0){
              VXETable.modal.message( t('searchOrder.msg'))
              return
            }
@@ -120,18 +146,51 @@
        }
      }
    },
    menuClick ({ menu, row, column }) {
      const $grid = xGrid.value
      if ($grid) {
        switch (menu.code) {
          case 'getProcessList': {
            if(rowClickIndex.value===null){
              ElMessage.warning(t('searchOrder.msgList.checkOrder'))
              return
  }
  const dialogTableVisible = ref(false)
  let orderType = ref("2")
  let selectDate = ref(["",""])
  let filterData = ref({})
  let orderList = ref([])
  let pageNum=ref(1)
  let total = reactive({
    pageTotal : 0,
    dataTotal : 0,
    pageSize : 100
  })
            dialogTableVisible.value = true
            break
          }
          case 'copy': {
            if(rowClickIndex.value===null){
              ElMessage.warning(t('searchOrder.msgList.checkOrder'))
              return
            }
            router.push({path:'/main/order/createOrder',
              state:{
                orderId:rowClickIndex.value.orderId,
                type:'copy'
              }})
            break
          }
          case 'copyTitle': {
            if(rowClickIndex.value===null){
              ElMessage.warning(t('searchOrder.msgList.checkOrder'))
              return
            }
            router.push({path:'/main/order/createOrder',
              state:{
                orderId:rowClickIndex.value.orderId,
                type:'copyTitle'
              }})
            break
          }
        }
      }
    },
    cellClick({ row }){
      rowClickIndex.value = row
    }
  }
  //加载请求
  request.post(`/order/getOrderList/1/${total.pageSize}/${orderType.value}/${selectDate.value}`,filterData).then((res) => {
    if(res.code==200){
@@ -179,10 +238,7 @@
  }
  //双击表格行
  const cellClickEvent =()=>{
    return
      dialogTableVisible.value = true
  }
  const selectOrderList = ()=>{
    request.post(`/order/getOrderList/${pageNum.value}/${total.pageSize}/${orderType.value}/${selectDate.value}`
        ,filterData).then((res) => {
@@ -262,11 +318,11 @@
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">{{ $t('basicData.search') }}</el-button>
    <vxe-grid
        @filter-change="filterChanged"
        @cell-dblclick="cellClickEvent"
        max-height="100%"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
    >
      <!--      下拉显示所有信息插槽-->
@@ -333,8 +389,14 @@
      </template>
    </vxe-grid>
    <el-dialog v-model="dialogTableVisible" title="流程卡进度" style="width: 80%;height:75% ">
      <ProcessCardProgress style="width: 100%;height: 100%" />
    <el-dialog
        v-model="dialogTableVisible"
        destroy-on-close
        :title="$t('searchOrder.processFlows')"
        style="width: 80%;height:75% ">
      <ProcessCardProgress
          :orderId="rowClickIndex.orderId"
          style="width: 100%;height: 100%" />
    </el-dialog>
  </div>
</template>
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
@@ -4,6 +4,7 @@
import request from "@/utils/request"
import {ElMessage} from "element-plus"
import {changeFilterEvent,filterChanged} from "@/hook"
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove"
import {useI18n} from "vue-i18n"
const { t } = useI18n()
@@ -12,6 +13,7 @@
let dialogTableVisible = ref(false)
let craftVisible = ref(false)
const xGrid = ref()
const trademarkLocation=ref(['左上','右上','左下','右下'])
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
@@ -41,7 +43,7 @@
    showStatus: true
  },//表头参数
  columns:[
    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
    {title: t('basicData.operate'), width: 220, slots: { default: 'button_slot' },fixed:"left",},
    {field: 'orderNumber',width:120,  title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    //{field: 'orderDetail.buildingNumber',width:120,  title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderDetail.productName',width:120,  title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
@@ -56,7 +58,7 @@
    {field: 'area',width:120,  title: t('craft.area'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'process',width:120,  title: t('craft.process'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'icon',width:120,  title: t('order.icon'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'icon',width:120,  title: t('order.icon'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.processingNote',width:120,  title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.remarks',width:120,  title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.edgingType',width:120,  title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
@@ -70,6 +72,17 @@
    // { row: 0, col: 7, rowspan: 4, colspan: 1 },
    // { row: 0, col: 8, rowspan: 4, colspan: 1 },
  ],
  menuConfig:{
    body:{
      options:[
          [
            { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
            { code: 'copyAll', name: t('basicData.sameAfterwards'), prefixIcon: 'vxe-icon-feedback', visible: true, disabled: false },
            { code: 'clearChecked', name: t('basicData.clearSelection'), prefixIcon: 'vxe-icon-indicator', visible: true, disabled: false },
          ]
      ]
    }
  },
  toolbarConfig: {
    buttons: [
      {'code': 'remarks', 'name': t('order.processingNote')},
@@ -121,6 +134,51 @@
        }
      }
    }
  },
  menuClick ({ menu, row, column }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (menu.code) {
        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
              }
            })
          }
          break
        }
        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
              }
            })
          }
          break
        }
        case 'clearChecked' :{
          let result = toolbarButtonClickEvent()
          if(result){
            const dataList = xGrid.value.getTableData().visibleData
            dataList.forEach((item,index) =>{
              if(index>=result.start && index<=result.end){
                item[result.cell] = ''
              }
            })
          }
          break
        }
      }
    }
  }
}
// 定义表头上传数据
@@ -150,10 +208,29 @@
  processingNote:''
})
const trademarkAttr = ref({
  trademark:null,
  xImage:null,
  yImage:null,
  tag:null,
  tag2:null ,
  tag3:null,
  xMargin:null,
  yMargin:null,
  location:[]
})
let process =  ref([])
request.get(`/basicData/BasicDataByType/product/process`).then((res) =>{
  if (res.code==200){
    process.value=res.data
  }
})
const trademarkList =ref([])
request.get(`/basicData/BasicDataByType/order/icon`).then((res) =>{
  if (res.code==200){
    trademarkList.value = res.data
  }
})
@@ -165,6 +242,33 @@
  })
  rowIndex.value = row
}
//修改商标选项
let trademarkVisible = ref(false)
const updateTrademark = (row) => {
  trademarkVisible.value= true
  Object.keys(trademarkAttr.value).forEach((key) => {
    if(key==='location'){
      trademarkAttr.value[key] = []
    }else{
      trademarkAttr.value[key] = ''
    }
  })
  if(row.icon!=null){
    trademarkAttr.value = JSON.parse(row.icon)
  }
  rowIndex.value = row
}
const changeTrademark = ()=>{
  rowIndex.value.icon = JSON.stringify(trademarkAttr.value)
  trademarkVisible.value=false
  Object.keys(trademarkAttr.value).forEach((key) => (trademarkAttr.value[key] = ''))
}
const  craftObj  = reactive({
  newCraft: [],
  oldCraft: []
@@ -187,6 +291,7 @@
//初始化判断是否有id传入
onMounted(()=>{
  addListener(xGrid.value,gridOptions)
  const str = route.query.orderId
  if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){
    return
@@ -204,14 +309,11 @@
      }
      //按钮审核过后变为反审
      if(res.data.order.orderReview === 2){
      if(Math.abs(res.data.order.orderReview) === 2){
        gridOptions.toolbarConfig.buttons[2].disabled = true
      }
      xGrid.value.reloadData(res.data.orderGlassDetails)
      //xGrid.value.reloadData(res.data.orderDetails)
    }else{
      ElMessage.error(res.msg)
    }
@@ -235,10 +337,6 @@
    }
  })
}
//
</script>
<template>
@@ -291,6 +389,7 @@
        <!--左边固定显示的插槽-->
        <template #button_slot="{ row }">
          <el-button @click="updateCraft(row)" link type="primary" size="small">{{t('craft.updateCraft')}}</el-button>
          <el-button @click="updateTrademark(row)" link type="primary" size="small">修改商标</el-button>
        </template>
        <template #num1_filter="{ column, $panel }">
@@ -303,7 +402,11 @@
      </vxe-grid>
    </div>
    <el-dialog v-model="dialogTableVisible" :title="$t('order.processingNote')" style="width: 60%;height:75% ">
    <el-dialog
        v-model="dialogTableVisible"
        :title="$t('order.processingNote')"
        style="width: 60%;height:75% ">
      <el-input
          v-model="titleUploadData.processingNote"
          type="textarea"
@@ -311,7 +414,12 @@
      />
    </el-dialog>
    <el-dialog v-model="craftVisible" :title="$t('craft.technologicalProcess')" style="width: 60%;height:60% ;position: relative;" >
    <el-dialog id="processChange"
               v-model="craftVisible"
               :title="$t('craft.technologicalProcess')"
               :close-on-click-modal="false"
               :close-on-press-escape="false"
               style="width: 60%;height:60% ;position: relative;" >
      <h5>{{$t('craft.processAttribute')}}</h5>
      <el-checkbox
          v-model="craftObj.newCraft"
@@ -335,9 +443,102 @@
          <el-button type="primary" @click="saveCraft">{{$t('basicData.save')}}</el-button>
        </el-col>
      </el-row>
    </el-dialog>
    <el-dialog
        id="trademark"
        v-model="trademarkVisible"
        :title="'商标参数'"
        :close-on-click-modal="false"
        :close-on-press-escape="false"
        style="width: 60%;height:60% ;
        position: relative;" >
      <el-row>
        <el-col :span="2">商标选项:</el-col>
        <el-col :span="3">
          <el-select v-model="trademarkAttr.trademark"
                      >
            <el-option :value="item.basicName" v-for="item in trademarkList" />
          </el-select>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="2">X轴镜像:</el-col>
        <el-col :span="3">
          <el-select v-model="trademarkAttr.xImage">
            <el-option :value="true"/>
            <el-option :value="false"/>
          </el-select>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="2">Y轴镜像:</el-col>
        <el-col :span="3">
          <el-select v-model="trademarkAttr.yImage">
            <el-option :value="true"/>
            <el-option :value="false"/>
          </el-select>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="2">打标使能:</el-col>
        <el-col :span="3">
          <el-select v-model="trademarkAttr.tag">
            <el-option :value="true"/>
            <el-option :value="false"/>
          </el-select>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="2">标签2使能:</el-col>
        <el-col :span="3">
          <el-select v-model="trademarkAttr.tag2">
            <el-option :value="true"/>
            <el-option :value="false"/>
          </el-select>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="2">标签3使能:</el-col>
        <el-col :span="3">
          <el-select v-model="trademarkAttr.tag3">
            <el-option :value="true"/>
            <el-option :value="false"/>
          </el-select>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="2">X轴边距:</el-col>
        <el-col :span="3">
          <el-input-number v-model="trademarkAttr.xMargin"/>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="2">Y轴边距:</el-col>
        <el-col :span="3">
          <el-input-number v-model="trademarkAttr.yMargin"/>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="2">商标位置:</el-col>
        <el-col :span="8">
          <el-checkbox v-model="trademarkAttr.location" v-for="item in trademarkLocation" :label="item"  />
        </el-col>
      </el-row>
      <el-row>
        <el-col >
          <el-button @click="changeTrademark" style="float:right;" type="primary" >{{$t('craft.sure')}}</el-button>
          <el-button  style="float:right;margin-right: 0.5rem" type="primary" >{{$t('craft.reset')}}</el-button>
        </el-col>
      </el-row>
    </el-dialog>
  </div>
@@ -359,10 +560,20 @@
  width: 100%;
  height: 90%;
}
.el-dialog .el-col{
#trademark .el-row,#trademark .el-col{
  border: 0
}
#processChange .el-col{
  border: 0;text-align: right
}
.el-dialog .el-text{
#processChange .el-text{
  font-weight: bolder
}
.vxe-grid {
  /* 禁用浏览器默认选中 */
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
</style>
north-glass-erp/northglass-erp/src/views/sd/product/Product.vue
@@ -1,10 +1,12 @@
<script setup>
import {ref} from "vue";
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue";
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import request from "@/utils/request";
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router";
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router"
import {useI18n} from "vue-i18n"
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
let indexFlag=$ref(1)
@@ -18,8 +20,8 @@
  <div id="main">
   <div id="div-title">
     <el-breadcrumb :separator-icon="ArrowRight">
       <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/product/selectProduct' }">产品首页</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/product/createProduct' }">创建</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/product/selectProduct' }">{{$t('product.ProductHomePage')}}</el-breadcrumb-item>
       <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/product/createProduct' }">{{$t('product.create')}}</el-breadcrumb-item>
<!--       <el-breadcrumb-item :to="{ path: '/main/product/test' }">测试</el-breadcrumb-item>-->
<!--       <el-breadcrumb-item :to="{ path: '/main/product/testSort11' }">测试</el-breadcrumb-item>-->
       <el-breadcrumb-item v-show="false"  :to="{ path: '/main/product/test1' }">测试</el-breadcrumb-item>
north-glass-erp/pom.xml
@@ -118,8 +118,8 @@
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.24</version>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -135,7 +135,7 @@
        return Result.seccess(flowCardService.selectSchedulingSv(selectTime1,selectTime2,orderId,processes,state,flowCard));
    }
    //查询排产数据
    //流程卡明细查询
    @ApiOperation("流程卡明细查询接口")
    @PostMapping  ("/flowCardDetail/{processId}")
    public Result flowCardDetail(
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportController.java
New file
@@ -0,0 +1,36 @@
package com.example.erp.controller.pp;
import com.example.erp.common.Constants;
import com.example.erp.common.Result;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.sd.OrderGlassDetail;
import com.example.erp.exception.ServiceException;
import com.example.erp.service.pp.ReportService;
import com.example.erp.service.pp.WorkOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.sql.Date;
import java.util.List;
import java.util.Map;
@RestController
@Api(value="生产报表controller",tags={"生产报表操作接口"})
@RequestMapping("/report")
public class ReportController {
    private final ReportService reportService;
    public ReportController(ReportService reportService) {
        this.reportService = reportService;
    }
    //流程卡进度
    @ApiOperation("流程卡进度")
    @PostMapping  ("/processCardProgress/{orderId}")
    public Result processCardProgress(@PathVariable String orderId, @RequestBody List<Integer> columns){
        return Result.seccess(reportService.processCardProgressSv(orderId,columns));
    }
}
north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java
@@ -55,6 +55,8 @@
    private Integer delivery;
    private LocalDate createTime;
    private LocalDate updateTime;
    @TableField(select = false,exist = false)
    private Integer goodsQuantity;
    @TableField(value = "customer_id")
    private Customer  customer;
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportMapper.java
New file
@@ -0,0 +1,17 @@
package com.example.erp.mapper.pp;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.sd.OrderGlassDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.sql.Date;
import java.util.List;
import java.util.Map;
@Mapper
public interface ReportMapper {
    List<Map<String, String>> processCardProgressMp(String orderId);
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderProcessDetailMapper.java
@@ -7,6 +7,7 @@
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@Mapper
@DS("sd")
@@ -14,4 +15,10 @@
    boolean insertOrderProcessDetail(@Param("processDetailList") List<OrderProcessDetail> processDetailList);
    void updateQuantity(String reportingWorkId,String process,String type);
    List<Map<String,String>> filterOrderProcess(String orderId);
    List<Map<String,Integer>> getGlassLRow(String orderId);
    List<Map<String, String>> filterLastProcess(String orderId, String orderNumber, String technologyNumber,String id);
}
north-glass-erp/src/main/java/com/example/erp/service/pp/ReplenishService.java
@@ -4,15 +4,12 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.pp.PatchLog;
import com.example.erp.entity.pp.ReportingWork;
import com.example.erp.entity.pp.Rework;
import com.example.erp.entity.userInfo.SysError;
import com.example.erp.mapper.pp.PatchLogMapper;
import com.example.erp.mapper.pp.ReportingWorkMapper;
import com.example.erp.service.userInfo.SysErrorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
New file
@@ -0,0 +1,101 @@
package com.example.erp.service.pp;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.mapper.pp.ReportMapper;
import com.example.erp.mapper.sd.OrderProcessDetailMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Date;
import java.util.*;
import java.util.stream.Collectors;
@Service
@DS("pp")
public class ReportService {
    private final ReportMapper reportMapper;
    private final OrderProcessDetailMapper orderProcessDetailMapper;
    public ReportService(ReportMapper reportMapper, OrderProcessDetailMapper orderProcessDetailMapper) {
        this.reportMapper = reportMapper;
        this.orderProcessDetailMapper = orderProcessDetailMapper;
    }
    //流程卡进度方法
    public Map<String, Object> processCardProgressSv(String orderId, List<Integer> columns) {
        Map<String, Object> map = new HashMap<>();
        //获取表格内容数据
        map.put("data", reportMapper.processCardProgressMp(orderId));
        //获取表头工序筛选数据
        List<Map<String,String>> processFilterList = orderProcessDetailMapper.filterOrderProcess(orderId);
        List<Map<String,String>> processList = processFilterList;
        List<String> filterList = new ArrayList<>();
        //循环遍历数组,判断此序号当前的工序
        for (int i = 1; i < processFilterList.size(); i++) {
            filterList.add(processFilterList.get(i).get("process"));
            List<Map<String,String>> lastProcessList =
                    orderProcessDetailMapper.filterLastProcess(
                            orderId,
                            String.valueOf(processFilterList.get(i).get("order_number")),
                            String.valueOf(processFilterList.get(i).get("technology_number")),
                            String.valueOf(processFilterList.get(i).get("id"))
                            );
            if(!lastProcessList.isEmpty()){
                int finalI = i;
                lastProcessList.forEach(lastProcess -> {
                    if(filterList.contains(lastProcess.get("process"))){
                        processList.add(lastProcess);
                    }
                });
            }
        }
        // 使用HashSet来记录已经遇到的value值
        Set<String> seenValues = new HashSet<>();
        // 创建一个新的List来存储结果
        List<Map<String, String>> uniqueList = new ArrayList<>();
        // 反向遍历原始List
        for (int i = processList.size() - 1; i >= 0; i--) {
            Map<String, String> maps = processList.get(i);
            String value = maps.values().iterator().next(); // 假设每个Map只有一个value
            // 如果value还没有被看到过,就添加到结果List和HashSet中
            if (!seenValues.contains(value)) {
                uniqueList.add(0, maps); // 添加到结果List的开头,以保持原顺序
                seenValues.add(value);
            }
        }
        map.put("title", uniqueList );
        List<Map<String,Integer>> getRowCount =  orderProcessDetailMapper.getGlassLRow(orderId);
        List<Map<String,Integer>> rowCount = new ArrayList<>();
        columns.forEach(col ->{
            getRowCount.forEach(row ->{
                Map<String,Integer>  getRow = new HashMap<>();
                // { row: 0, col: 1, rowspan: 3, colspan: 0},
                getRow.put("row",row.get("RowNum"));
                getRow.put("col",col);
                getRow.put("rowspan",row.get("rowCount"));
                getRow.put("colspan",0);
                rowCount.add(getRow);
            });
        });
        map.put("mergeCells",rowCount);
        return map;
    }
}
north-glass-erp/src/main/java/com/example/erp/service/pp/WorkOrderService.java
@@ -4,9 +4,8 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.sd.OrderGlassDetail;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.entity.sd.OrderGlassDetail;
import com.example.erp.mapper.pp.WorkOrderMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -390,9 +390,11 @@
        select fc.order_id,
               fc.process_id,
               fc.order_number,
               fc.technology_number,
               fc.quantity,
               round(ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2) as area,
               od.product_name,
               ogd.glass_child,
               fc.founder,
               date(fc.splitFrame_time) as splitFrame_time
        from flow_card as fc
@@ -401,7 +403,8 @@
                              fc.technology_number = ogd.technology_number
                 left join sd.order_detail as od on od.order_id = ogd.order_id and od.order_number = ogd.order_number
        where fc.process_id = #{processId}
        GROUP BY fc.order_id, fc.process_id, fc.order_number
        GROUP BY fc.order_id, fc.process_id, fc.order_number,fc.technology_number
        order by fc.order_number,fc.technology_number
    </select>
    <delete id="deleteReportingWork">
north-glass-erp/src/main/resources/mapper/pp/Report.xml
New file
@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.erp.mapper.pp.ReportMapper">
    <resultMap id="flowCardMap" type="com.example.erp.entity.pp.FlowCard">
        <result column="order_id" property="orderId"/>
        <result column="process_Id" property="processId"/>
        <result column="quantity" property="quantity"/>
        <result column="founder" property="founder"/>
        <result column="create_time" property="createTime"/>
        <result column="layout_status" property="layoutStatus"/>
        <!--接收其他外键实体类数据-->
        <association property="order" javaType="com.example.erp.entity.sd.Order">
            <result column="project" property="project"/>
            <result column="order_id" property="orderId"/>
            <result column="customer_name" property="customerName"/>
            <result column="batch" property="batch"/>
            <result column="other_remarks" property="otherRemarks"/>
            <result column="icon" property="icon"/>
            <result column="order_type" property="orderType"/>
            <result column="salesman" property="salesman"/>
            <result column="processing_note" property="processingNote"/>
            <result column="delivery_address" property="deliveryAddress"/>
        </association>
        <association property="orderDetail" javaType="com.example.erp.entity.sd.OrderDetail">
            <result column="product_id" property="productId"/>
            <result column="product_name" property="productName"/>
            <result column="compute_gross_area" property="computeGrossArea"/>
            <result column="processing_note" property="processingNote"/>
            <result column="quantity" property="quantity"/>
            <result column="compute_gross_area" property="computeGrossArea"/>
            <result column="perimeter" property="perimeter"/>
            <result column="order_number" property="orderNumber"/>
            <result column="width" property="width"/>
            <result column="height" property="height"/>
            <result column="shape" property="shape"/>
            <result column="weight" property="weight"/>
        </association>
        <association property="orderGlassDetail" javaType="com.example.erp.entity.sd.OrderGlassDetail">
            <result column="production_id" property="productionId"/>
        </association>
        <association property="product" javaType="com.example.erp.entity.sd.Product">
            <result column="total_thickness" property="totalThickness"/>
            <result column="thickness" property="thickness"/>
        </association>
        <!--<result column="g_typeId" property="glassTypes.typeId"/>
        <result column="g_type" property="glassTypes.type"/>-->
    </resultMap>
<!--    流程卡进度-->
    <select id="processCardProgressMp">
        select
            a.product_name,
            b.glass_child,
            d.order_type,
            concat(c.process_id,'/',c.technology_number) as process_id,
            c.technology_number,
            c.quantity,
            e.reportWorkQuantity,
            e.reportWorkQuantityCount,
            e.broken_num,
            round(ifnull(f.inventory,0)*a.area,2) as  inventoryArea
        from
            flow_card as c
        left join
            sd.order_detail as a
        on  c.order_id = a.order_id
        and c.order_number = a.order_number
        left join sd.order_glass_detail as b
        on c.order_id = b.order_id
            and b.order_number = c.order_number
            and c.technology_number = b.technology_number
        left join sd.`order` as d
        on c.order_id = d.order_id
        left join mm.finished_goods_inventory as f
        on c.order_id = f.order_id and f.order_number = c.order_number
        left join (
                SELECT process_id,
                       technology_number,
                       sum(a.broken_num) as broken_num,
                       concat('{',
                              GROUP_CONCAT(concat("\"",process,"\":\"",reporting_work_num,"\"")),
                              '}'
                           ) as reportWorkQuantity,
                       concat('{',
                              GROUP_CONCAT(concat("\"",process,"\":\"",reporting_work_num_count,"\"")),
                              '}'
                           ) as  reportWorkQuantityCount
                FROM sd.order_process_detail as a
                where a.order_id=#{orderId}
                GROUP BY process_id,a.technology_number
            ) as e
        on e.process_id = c.process_id
            and e.technology_number = c.technology_number
        where a.order_id = #{orderId}
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -17,7 +17,7 @@
    <update id="updateOrderParameter">
        update `order` o
        left join
            (select a.order_id,sum(a.perimeter) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
            (select a.order_id,round(sum(a.perimeter),2) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
             from sd.order_detail as a group by a.order_id)  od
            on o.order_id = od.order_id
        set
@@ -31,9 +31,12 @@
    
    <select id="getOrderList">
        select
            *
            *,
        sum(fgi.quantity_available) as goodsQuantity
        from
            `order` as o
        left join mm.finished_goods_inventory as  fgi
        on o.order_id = fgi.order_id
        where  date(o.create_time)>=#{startDate} and date(o.create_time) &lt;= #{endDate}
          <if test="orderType!= null and orderType != ''">
@@ -91,7 +94,7 @@
           <if test="order.deliveryAddress != null and order.deliveryAddress != ''">
               and o.delivery_address REGEXP #{order.deliveryAddress}
           </if>
        group by o.id
        order by o.id desc
        limit #{offset},#{pageSize}
    </select>
north-glass-erp/src/main/resources/mapper/sd/OrderProcessDetail.xml
@@ -69,4 +69,43 @@
    </update>
    <!--查询筛选后唯一的流程卡号-->
    <select id="filterOrderProcess">
        select id,process,order_number,technology_number
        from order_process_detail
        where order_id = #{orderId}
        group by process
    </select>
    <select id="filterLastProcess">
        select id,process,order_number,technology_number
        from order_process_detail
        where order_id = #{orderId}
        and order_number = #{orderNumber}
        and technology_number = #{technologyNumber}
        and id &gt; #{id}
        group by process
    </select>
    <select id="getGlassLRow">
        select
             max(a.technology_number) as rowCount,
             RowNum
        from order_process_detail as a
        left join
            (select min((@i:=@i+1)) AS RowNum,c.*
             from sd.order_glass_detail as c,
                  (SELECT @i:=-1) as d
             where order_id = #{orderId}
             GROUP BY order_number
             ) as b
        on b.order_number = a.order_number
        where a.order_id = #{orderId}
        group by a.order_number
    </select>
</mapper>
north-glass-erp/src/test/java/com/example/erp/service/pp/ReworkServiceTest.java
@@ -11,14 +11,14 @@
    private ReworkService reworkService;
    @Test
    void queryReworkTest(){
        reworkService.queryRework(1,2,"2024-01-01","2024-01-25",null);
    }
//    @Test
//    void queryReworkTest(){
//        reworkService.queryRework(1,2,"2024-01-01","2024-01-25",null);
//    }
    @Test
    void queryReworkAddTest(){
        reworkService.queryRework(1,2,"2024-01-01","2024-01-25",null);
    }
//    @Test
//    void queryReworkAddTest(){
//        reworkService.queryRework(1,2,"2024-01-01","2024-01-25",null);
//    }
}
north-glass-erp/target/classes/mapper/pp/FolwCard.xml
@@ -390,9 +390,11 @@
        select fc.order_id,
               fc.process_id,
               fc.order_number,
               fc.technology_number,
               fc.quantity,
               round(ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2) as area,
               od.product_name,
               ogd.glass_child,
               fc.founder,
               date(fc.splitFrame_time) as splitFrame_time
        from flow_card as fc
@@ -401,7 +403,8 @@
                              fc.technology_number = ogd.technology_number
                 left join sd.order_detail as od on od.order_id = ogd.order_id and od.order_number = ogd.order_number
        where fc.process_id = #{processId}
        GROUP BY fc.order_id, fc.process_id, fc.order_number
        GROUP BY fc.order_id, fc.process_id, fc.order_number,fc.technology_number
        order by fc.order_number,fc.technology_number
    </select>
    <delete id="deleteReportingWork">
north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
@@ -17,7 +17,7 @@
    <update id="updateOrderParameter">
        update `order` o
        left join
            (select a.order_id,sum(a.perimeter) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
            (select a.order_id,round(sum(a.perimeter),2) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
             from sd.order_detail as a group by a.order_id)  od
            on o.order_id = od.order_id
        set
@@ -31,9 +31,12 @@
    
    <select id="getOrderList">
        select
            *
            *,
        sum(fgi.quantity_available) as goodsQuantity
        from
            `order` as o
        left join mm.finished_goods_inventory as  fgi
        on o.order_id = fgi.order_id
        where  date(o.create_time)>=#{startDate} and date(o.create_time) &lt;= #{endDate}
          <if test="orderType!= null and orderType != ''">
@@ -91,7 +94,7 @@
           <if test="order.deliveryAddress != null and order.deliveryAddress != ''">
               and o.delivery_address REGEXP #{order.deliveryAddress}
           </if>
        group by o.id
        order by o.id desc
        limit #{offset},#{pageSize}
    </select>
north-glass-erp/target/classes/mapper/sd/OrderProcessDetail.xml
@@ -69,4 +69,43 @@
    </update>
    <!--查询筛选后唯一的流程卡号-->
    <select id="filterOrderProcess">
        select id,process,order_number,technology_number
        from order_process_detail
        where order_id = #{orderId}
        group by process
    </select>
    <select id="filterLastProcess">
        select id,process,order_number,technology_number
        from order_process_detail
        where order_id = #{orderId}
        and order_number = #{orderNumber}
        and technology_number = #{technologyNumber}
        and id &gt; #{id}
        group by process
    </select>
    <select id="getGlassLRow">
        select
             max(a.technology_number) as rowCount,
             RowNum
        from order_process_detail as a
        left join
            (select min((@i:=@i+1)) AS RowNum,c.*
             from sd.order_glass_detail as c,
                  (SELECT @i:=-1) as d
             where order_id = #{orderId}
             GROUP BY order_number
             ) as b
        on b.order_number = a.order_number
        where a.order_id = #{orderId}
        group by a.order_number
    </select>
</mapper>
north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original
Binary files differ
north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,4 +1,132 @@
com\example\erp\controller\OrderController.class
com\example\erp\entity\Order.class
com\example\erp\service\sd\DeliveryService.class
com\example\erp\mapper\pp\BasicDateProduceMapper.class
com\example\erp\entity\sd\Returns.class
com\example\erp\entity\sd\Product.class
com\example\erp\service\sd\BasicGlassTypeServise.class
com\example\erp\service\sd\ProductService.class
com\example\erp\entity\mm\FinishedOperateLog.class
com\example\erp\service\userInfo\UserService.class
com\example\erp\service\pp\ReplenishService.class
com\example\erp\entity\sd\OrderDetail.class
com\example\erp\config\MyCorsConfig$1.class
com\example\erp\controller\pp\ProductionSchedulingController.class
com\example\erp\service\sd\OrderProcessDetailService.class
com\example\erp\controller\pp\ReworkController.class
com\example\erp\entity\pp\DamageDetails.class
com\example\erp\mapper\mm\BasicWarehouseTypeMapper.class
com\example\erp\mapper\mm\FinishedGoodsInventoryMapper.class
com\example\erp\service\IOrderService.class
com\example\erp\service\pp\ReportingWorkService.class
com\example\erp\mapper\sd\BasicDateMapper.class
com\example\erp\controller\pp\ReplenishController.class
com\example\erp\mapper\sd\OrderGlassDetailMapper.class
com\example\erp\entity\pp\WorkprogressMonthlySettlement.class
com\example\erp\entity\mm\FinishedGoodsInventory.class
com\example\erp\mapper\sd\DeliveryDetailMapper.class
com\example\erp\config\MybatisPlusConfig.class
com\example\erp\entity\mm\BasicWarehouseType.class
com\example\erp\config\InterceptorConfig.class
com\example\erp\entity\mm\MaterialStore.class
com\example\erp\controller\sd\ProductController.class
com\example\erp\entity\sd\GlassType.class
com\example\erp\mapper\sd\OrderMapper.class
com\example\erp\service\mm\BasicWarehouseTypeService.class
com\example\erp\mapper\OrderTestMapper.class
com\example\erp\mapper\mm\MaterialStoreMapper.class
com\example\erp\service\pp\ProductionSchedulingService.class
com\example\erp\service\userInfo\SysMenuService.class
com\example\erp\exception\GlobalExceptionHandle.class
com\example\erp\entity\pp\SetupBom.class
com\example\erp\entity\sd\Customer.class
com\example\erp\entity\userInfo\SysMenu.class
com\example\erp\entity\sd\Delivery.class
com\example\erp\controller\mm\MaterialController.class
com\example\erp\controller\pp\BasicDataProduceController.class
com\example\erp\config\WebSocketConfig.class
com\example\erp\controller\dto\UserDTO.class
com\example\erp\service\pp\WorkOrderService.class
com\example\erp\mapper\mm\FinishedOperateLogMapper.class
com\example\erp\controller\pp\ReportingWorkController.class
com\example\erp\mapper\pp\ReportingWorkDetailMapper.class
com\example\erp\service\sd\BasicDateService.class
com\example\erp\entity\OrderTest.class
com\example\erp\service\pp\FlowCardService.class
com\example\erp\mapper\pp\PatchLogMapper.class
com\example\erp\service\userInfo\SysMenuItemService.class
com\example\erp\entity\pp\ReportingWorkDetail.class
com\example\erp\controller\sd\DeliveryController.class
com\example\erp\service\impl\OrderServiceImpl.class
com\example\erp\entity\sd\ProductDetail.class
com\example\erp\mapper\pp\ReworkMapper.class
com\example\erp\config\MyCorsConfig.class
com\example\erp\controller\sd\BasicGlassTypeController.class
com\example\erp\mapper\pp\FlowCardMapper.class
com\example\erp\mapper\userInfo\SysMenuItemMapper.class
com\example\erp\controller\userInfo\SysMenuController.class
com\example\erp\entity\sd\Order.class
com\example\erp\entity\sd\BasicGlassType.class
com\example\erp\entity\sd\OrderGlassDetail.class
com\example\erp\entity\userInfo\SysError.class
com\example\erp\entity\userInfo\User.class
com\example\erp\mapper\pp\ProductionSchedulingMapper.class
com\example\erp\controller\sd\BasicDataController.class
com\example\erp\entity\pp\BaseBom.class
com\example\erp\mapper\userInfo\SysErrorMapper.class
com\example\erp\service\mm\FinishedGoodsInventoryService.class
com\example\erp\entity\sd\ReturnsDetail.class
com\example\erp\entity\sd\OrderProcessDetail.class
com\example\erp\config\SwaggerConfig.class
com\example\erp\controller\pp\ProcessCardController.class
com\example\erp\service\pp\ReportWorkService.class
com\example\erp\controller\mm\FinishedGoodsInventoryController.class
com\example\erp\service\pp\ReworkService.class
com\example\erp\service\userInfo\SysErrorService.class
com\example\erp\ErpApplication.class
com\example\erp\Mapper\OrderMapper.class
com\example\erp\tools\netty\NettyServer.class
com\example\erp\exception\ServiceException.class
com\example\erp\common\interceptor\JwtInterceptor.class
com\example\erp\entity\pp\Rework.class
com\example\erp\entity\pp\ReportingWork.class
com\example\erp\tools\netty\MyWebSocketHandler.class
com\example\erp\service\mm\MaterialService.class
com\example\erp\controller\sd\OrderController.class
com\example\erp\entity\pp\BasicDataProduce.class
com\example\erp\controller\pp\ReportWorkController.class
com\example\erp\entity\pp\PatchLog.class
com\example\erp\mapper\pp\WorkOrderMapper.class
com\example\erp\controller\sd\CustomerController.class
com\example\erp\entity\pp\ProductionScheduling.class
com\example\erp\common\CacheUtil.class
com\example\erp\entity\pp\OrderBom.class
com\example\erp\mapper\sd\DeliveryMapper.class
com\example\erp\controller\mm\BasicWarehouseTypeController.class
com\example\erp\service\sd\OrderService.class
com\example\erp\mapper\sd\CustomerMapper.class
com\example\erp\tools\netty\MyChannelHandlerPool.class
com\example\erp\controller\userInfo\UserController.class
com\example\erp\mapper\userInfo\UserMapper.class
com\example\erp\service\pp\BasicDateProduceService.class
com\example\erp\tools\WebSocketServer.class
com\example\erp\mapper\sd\ProductMapper.class
com\example\erp\common\Result.class
com\example\erp\service\sd\CustomerService.class
com\example\erp\mapper\pp\DamageDetailsMapper.class
com\example\erp\mapper\sd\OrderProcessDetailMapper.class
com\example\erp\entity\pp\Device.class
com\example\erp\tools\WebSocketServerPool.class
com\example\erp\controller\OrderTestController.class
com\example\erp\mapper\userInfo\SysMenuMapper.class
com\example\erp\tools\TokenTools.class
com\example\erp\mapper\sd\OrderDetailMapper.class
com\example\erp\controller\userInfo\SysMenuItemController.class
com\example\erp\mapper\sd\ProductDetailMapper.class
com\example\erp\entity\pp\FlowCard.class
com\example\erp\common\Constants.class
com\example\erp\controller\pp\WorkOrderController.class
com\example\erp\entity\pp\DeviceMaintenance.class
com\example\erp\tools\netty\NettyServer$1.class
com\example\erp\entity\userInfo\SysMenuItem.class
com\example\erp\mapper\pp\ReportingWorkMapper.class
com\example\erp\entity\sd\BasicData.class
com\example\erp\entity\sd\DeliveryDetail.class
com\example\erp\mapper\sd\BasicGlassTypeMapper.class
north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,4 +1,130 @@
D:\Documents\north-glass-erp\src\main\java\com\example\erp\controller\OrderController.java
D:\Documents\north-glass-erp\src\main\java\com\example\erp\Mapper\OrderMapper.java
D:\Documents\north-glass-erp\src\main\java\com\example\erp\entity\Order.java
D:\Documents\north-glass-erp\src\main\java\com\example\erp\ErpApplication.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\PatchLog.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\BasicDateProduceService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\config\MybatisPlusConfig.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\ProductDetailMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\mm\MaterialController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\GlassType.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\common\interceptor\JwtInterceptor.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\WorkOrderMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\WorkprogressMonthlySettlement.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\DeviceMaintenance.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\userInfo\SysMenu.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\OrderTestMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\ReworkController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\Rework.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\CustomerService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\mm\MaterialStoreMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\BaseBom.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\ProductionScheduling.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\userInfo\UserController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\BasicGlassType.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\SetupBom.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\OrderDetail.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\tools\WebSocketServer.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\sd\ProductController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\userInfo\User.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\mm\FinishedGoodsInventoryService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\BasicDateService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\sd\BasicDataController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\Delivery.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\Customer.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\userInfo\SysMenuMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\ReportingWork.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\ProductionSchedulingMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\userInfo\SysMenuItemController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\ReportingWorkDetail.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\OrderMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\ReportingWorkController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\FinishedGoodsInventory.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\BasicData.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\OrderDetailMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\DeliveryMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\sd\BasicGlassTypeController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\impl\OrderServiceImpl.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\OrderProcessDetailMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\userInfo\UserMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\userInfo\SysMenuItemService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\userInfo\SysErrorService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\ProductionSchedulingController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\mm\FinishedOperateLogMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\FlowCardMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\tools\TokenTools.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\ReportWorkController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\MaterialStore.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\userInfo\SysMenuItem.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\sd\DeliveryController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\WorkOrderController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\OrderGlassDetail.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\ReplenishService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\FlowCardService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\ReworkService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\OrderTest.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\ReportWorkService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\BasicDateMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\sd\OrderController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\common\Result.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\Returns.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\userInfo\SysMenuService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\WorkOrderService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\dto\UserDTO.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\ReportingWorkService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\ProductDetail.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\mm\BasicWarehouseTypeService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\OrderProcessDetailService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\tools\netty\MyWebSocketHandler.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\FlowCard.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\ReportingWorkDetailMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\userInfo\SysError.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\exception\ServiceException.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\tools\netty\MyChannelHandlerPool.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\config\InterceptorConfig.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\BasicDataProduce.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\BasicGlassTypeServise.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\config\MyCorsConfig.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\config\SwaggerConfig.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\Device.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\ProductService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\OrderBom.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\Order.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\ProductionSchedulingService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\tools\WebSocketServerPool.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\IOrderService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\OrderGlassDetailMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\ProcessCardController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\DeliveryDetailMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\userInfo\SysMenuItemMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\common\CacheUtil.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\mm\FinishedGoodsInventoryController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\userInfo\UserService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\BasicGlassTypeMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\common\Constants.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\ReportingWorkMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\PatchLogMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\userInfo\SysErrorMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\DeliveryDetail.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\mm\BasicWarehouseTypeController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\DamageDetailsMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\FinishedOperateLog.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\mm\FinishedGoodsInventoryMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\DamageDetails.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\ReturnsDetail.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\ErpApplication.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\config\WebSocketConfig.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\BasicDataProduceController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\BasicDateProduceMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\ProductMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\ReworkMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\userInfo\SysMenuController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\CustomerMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\tools\netty\NettyServer.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\OrderProcessDetail.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\BasicWarehouseType.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\ReplenishController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\sd\CustomerController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\exception\GlobalExceptionHandle.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\OrderService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\DeliveryService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\OrderTestController.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\mm\BasicWarehouseTypeMapper.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\mm\MaterialService.java
D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\Product.java
north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -1 +1,5 @@
com\example\erp\service\pp\ReworkServiceTest.class
com\example\erp\ErpApplicationTests.class
com\example\erp\service\IOrderServiceTest.class
com\example\erp\service\sd\BasicDateServiceTest.class
com\example\erp\service\sd\OrderServiceTest.class
north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -1 +1,5 @@
D:\Documents\north-glass-erp\src\test\java\com\example\erp\ErpApplicationTests.java
D:\Documents\ERP_override\north-glass-erp\src\test\java\com\example\erp\service\pp\ReworkServiceTest.java
D:\Documents\ERP_override\north-glass-erp\src\test\java\com\example\erp\ErpApplicationTests.java
D:\Documents\ERP_override\north-glass-erp\src\test\java\com\example\erp\service\sd\OrderServiceTest.java
D:\Documents\ERP_override\north-glass-erp\src\test\java\com\example\erp\service\sd\BasicDateServiceTest.java
D:\Documents\ERP_override\north-glass-erp\src\test\java\com\example\erp\service\IOrderServiceTest.java