廖井涛
2024-03-01 14857a20b20a636a952375e064cf72f88296911d
返工修改
18个文件已修改
1327 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/router/index.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue 358 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue 348 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReworkController.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/pp/BasicDataProduce.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/pp/Rework.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/BasicDateProduceMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReworkMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReworkService.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/BasicDataProduce.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/ReworkMapper.xml 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/mm/FinishedGoodsInventory.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/pp/BasicDataProduce.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/pp/ReworkMapper.xml 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/router/index.js
@@ -342,18 +342,18 @@
          //返工管理
          path: 'rework',
          name: 'rework',
          component: () => import('../views/pp/Rework/Rework.vue'),
          component: () => import('../views/pp/rework/Rework.vue'),
          children:[
            {
              path: 'addRework',
              name: 'addRework',
              component: () => import('../views/pp/Rework/AddRework.vue'),
              component: () => import('../views/pp/rework/AddRework.vue'),
            },
            {
              path: 'selectRework',
              name: 'selectRework',
              component: () => import('../views/pp/Rework/SelectRework.vue'),
              component: () => import('../views/pp/rework/SelectRework.vue'),
            },
            {
              path: '',
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue
@@ -77,9 +77,7 @@
  pageSize : 10
})
//第一次调用
//第一次调用1
request.post(`/FinishedGoodsInventory/getSelectAllocate/1/${total.pageSize}`,filterData.value).then((res) => {
  if(res.code==200){
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue
@@ -67,11 +67,8 @@
request.post(`/FinishedGoodsInventory/getSelectOperateRecord/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
  if(res.code==200){
    total.dataTotal = res.data.total.total*1
    total.pageTotal= res.data.total.pageTotal
    selectDate.value = res.data.selectDate
    pageNum.value=1
    produceList = deepClone(res.data.data)
    xGrid.value.loadData(produceList)
    gridOptions.loading=false
north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
@@ -5,25 +5,10 @@
import request from "@/utils/request";
import {ElMessage} from "element-plus";
import deepClone from "@/utils/deepClone";
import {changeFilterEvent,filterChanged} from "@/hook"
import {toolbarButtonClickEvent} from "@/hook/mouseMove";
let router = useRouter()
const getTableRow = (row, type) => {
  switch (type) {
    case 'edit' : {
      alert('我接收到子组件传送的编辑信息')
      //router.push({path: '/main/processCard/AddProcessCard', query: { id: row.id }})
      break
    }
    case 'delete': {
      alert('我接收到子组件传送的删除信息')
      break
    }
    case  'setType': {
      alert('我接收到子组件传送的排版状态')
      break
    }
  }
}
//定义页面总页数
let pageTotal=ref('')
@@ -31,24 +16,36 @@
let produceList = ref([])
//定义当前页数
let pageNum=$ref(1)
const getRewokAddData = () => {
  request.post(`/reportData/rework/add/query/${pageNum}/100`,filterData.value).then((res) => {
    MessageShow(filterData.value);
    return ;
    if (res.code === 200) {
      pageTotal.value = res.data.total
      xGrid.value.loadData(res.data.data)
      gridOptions.loading = false
    } else {
const  xGrid = ref();
      MessageShow(res.msg,'warning');
    }
  })
}
let filterData = ref({
})
//定义接收加载表头下拉数据
const titleSelectJson = ref({
})
//第一次调用
request.post(`/rework/getSelectRework/${pageNum}/100`,filterData.value).then((res) => {
  if(res.code==200){
    produceList = deepClone(res.data)
    xGrid.value.loadData(produceList)
    gridOptions.loading=false
  }else{
    ElMessage.warning(res.msg)
    router.push("/login")
  }
})
//表尾求和
@@ -80,7 +77,7 @@
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
    //remote: true
  },
  customConfig: {
    storage: true
@@ -92,109 +89,42 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {title: '操作', width: 70, slots: {default: 'button_slot'}, fixed: "left"},
    {field: 'select',type:'checkbox',title: '选择', width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {field: 'reworkTeams', width: 120, title: '返工班组', editRender: {name: 'input', attrs: {placeholder: ''}}},
    {
      field: 'salesOrderNo',
      width: 120,
      title: '销售单号',
      sortable: true,
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'}
    },
    {
      field: 'processCardNo',
      width: 120,
      title: '流程卡号',
      sortable: true,
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'}
    },
    {
      field: 'entryName',
      width: 120,
      title: '项目名称',
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      sortable: true
    },
    {field: 'batch', width: 80, title: '批次', sortable: true, showOverflow: "ellipsis"},
    {field: 'serialNumber', width: 80, title: '序号', sortable: true},
    {field: 'singlePieceName', width: 120, title: '单片名称', sortable: true},
    {field: 'marking', width: 80, title: '标记', sortable: true, showOverflow: "ellipsis"},
    {field: 'pieces', width: 90, title: '片标记', sortable: true},
    {field: 'number', width: 80, title: '数量', sortable: true},
    {field: 'width', width: 80, title: '宽', sortable: true},
    {field: 'height', width: 80, title: '高', sortable: true},
    {field: 'shape', width: 80, title: '形状', sortable: true},
    {field: 'type', width: 100, title: '返工工序', sortable: true},
    {field: 'type', width: 100, title: '返工类型', sortable: true},
    {field: 'damage', width: 120, title: '返工原因', sortable: true},
    {field: 'device', width: 120, title: '责任设备', sortable: true},
    {field: 'teams', width: 120, title: '责任班组', sortable: true},
    {field: 'area', width: 120, title: '返工面积', sortable: true},
    {field: 'qualityInspector', width: 100, title: '质检员', sortable: true}
    {field: 'reworkTeam', width: 120, title: '返工班组', slots: {default: 'responsibleTeam_default', edit: 'responsibleTeam'}, editRender: {}},
    {field: 'orderId', width: 120, title: '销售单号', sortable: true, showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'processId', width: 120, title: '流程卡号', sortable: true, filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'batch', width: 80, title: '批次', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'orderNumber', width: 80, title: '序号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'productName', width: 120, title: '单片名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'technologyNumber', width: 80, title: '标记', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged},
    {field: 'glassAddress', width: 90, title: '片标记', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'breakageQuantity', width: 120, title: '次破数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkNum',width:120,  title: '返工数量',editRender: { name: 'input', attrs: { placeholder: '' } },filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: 80, title: '宽', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'height', width: 80, title: '高', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'shape', width: 80, title: '形状', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkProcesses', width: 100, title: '返工工序', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkType', width: 100, title: '返工类型', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'reworkReason', width: 120, title: '返工原因', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleEquipment', width: 120, title: '责任设备', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'responsibleTeam', width: 120, title: '责任班组', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'area', width: 120, title: '返工面积', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
    {field: 'qualityInsPector', width: 100, title: '质检员', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
  ],//表头按钮
  toolbarConfig: {
    // buttons: [{
    //   name:'保存'
    // }],
    buttons: [
      {'code': 'add', 'name': '保存',status: 'primary',icon: 'vxe-icon-save'}
    ],
    import: false,
    export: true,
    print: true,
    zoom: true,
    custom: true
  },
  data: [
    {
      reworkNumber: 'FG20202020',
      salesOrderNo: 'NG23010101',
      processCardNo: 'NG23010101A01',
      entryName: 'xxxx',
      batch: '二批三',
      serialNumber: '1',
      area: '23.11',
      qualityInspector: "张三",
      number: '1',
      singlePieceName: '6mm白玻平钢(外)',
      marking: '1',
      pieces: '(外)',
      width: '575',
      height: "2241",
      shape: '普形',
      type: '机器',
      damage: '气泡超标',
      device: 'XXX',
      reworkProcess: '切割',
    },
    {
      reworkNumber: 'FG20203333',
      salesOrderNo: 'NG23010101',
      processCardNo: 'NG23010101A01',
      entryName: 'xxxx',
      batch: '二批三',
      serialNumber: '1',
      area: '23.11',
      qualityInspector: "张三",
      number: '1',
      singlePieceName: '6mm白玻平钢(外)',
      marking: '1',
      pieces: '(外)',
      width: '575',
      height: "2241",
      shape: '普形',
      type: '机器',
      damage: '气泡超标',
      reworkProcess: '磨边',
      device: 'XXX'
    },
  ],//table body实际数据
  //脚部求和
  footerMethod({columns, data}) {//页脚函数
    let footList = ['total', 'TotalArea']
@@ -213,51 +143,132 @@
})
//筛选条件,有外键需要先定义明细里面的数据
let filterData = ref({
const gridEvents = {
  async toolbarButtonClick({code}) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'add': {
          const selectRecords = $grid.getCheckboxRecords()
          if (selectRecords.length > 0) {
            const errMap = await $grid.validate(selectRecords)
            if (errMap) {
              return
            }
          } else {
            ElMessage.warning("未选中数据")
            return
          }
          let flowData = ref({
            rework: selectRecords
          })
          request.post("/rework/saveRework", flowData.value).then((res) => {
            if(res.code==200){
              ElMessage.success("返工单提交成功")
              location.reload();
            }else{
              ElMessage.warning(res.msg)
              router.push("/login")
            }
          })
          break
        }
      }
    }
  },
  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
            let firstVal=null;
            if(result.cell.indexOf('.')>-1){
              firstVal = eval("dataList["+result.start +"]."+result.cell)
            }else {
              firstVal=dataList[result.start][result.cell];
            }
            dataList.forEach((item,index) =>{
              if(index>=result.start && index<=result.end){
                if(result.cell.indexOf('.')>-1){
                  const  columnArr = result.cell.split('.')
                  item[columnArr[0]][columnArr[1]]  = firstVal
                }else{
                  item[result.cell]  = firstVal
                }
              }
            })
          }
          break
        }
      }
    }
  }
}
const selectOrderList = ()=>{
  request.post(`/rework/SelectRework/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
    if(res.code==200){
      selectDate.value = res.data.selectDate
      produceList = deepClone(res.data.data)
      xGrid.value.loadData(produceList)
      gridOptions.loading=false
    }else{
      ElMessage.warning(res.msg)
      router.push("/login")
    }
  })
}
//页脚跳转
const handlePageChange = ({ currentPage, pageSize }) => {
  total.pageTotal = pageSize
  pageNum.value=currentPage
  selectOrderList()
}
/*数据校验*/
const validRules = ref({
  reworkTeam: [
    { required: true, message: '请选择返工班组' }
  ],
  reworkNum: [{
    validator (e) {
      if (e.row.reworkNum > e.row.breakageQuantity) {
        return new Error('返工数量不能大于次破数量')
      }else if (e.row.reworkNum ==="") {
        return new Error('返工数量不能为空或者是0')
      }
      const regex = /^[1-9]\d*$/g
      if ( !regex.test(e.row.reworkNum) ) {
        return new Error('请输入正整数')
      }
    }
  }]
})
/*使用筛选,后端获取数据*/
const changeFilterEvent = (event, option, $panel,) => {
  // 手动触发筛选
  $panel.changeOption(event, !!option.data, option)
}
function filterChanged(column) {
  gridOptions.loading = true
  //筛选条件发生变化条件发生变化
  let value = column.datas[0] !== undefined ? column.datas[0] : ''
  value = value.trim()
  //判断是否存在外键
  if (column.property.indexOf('.') > -1) {
    const columnArr = column.property.split('.')
    filterData.value[columnArr[0]] = {
      [columnArr[1]]: value
    }
  } else {
    filterData.value[column.property] = value
  }
  request.post(`/reportData/rework/add/query/1/100`,filterData.value).then((res) => {
    if (res.code === 200) {
      pageTotal.value = res.data.total
      pageNum = 1
      produceList = deepClone(res.data.data)
      xGrid.value.loadData(produceList)
      gridOptions.loading = false
    } else {
      MessageShow(res.msg,'warning');
    }
  })
}
const MessageShow = (content, type = 'success') => {
  ElMessage({
    message: content,
    type: type,
    showClose: true,
  })
}
</script>
@@ -266,10 +277,11 @@
  <div class="main-div-customer">
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
        :edit-rules="validRules"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
@@ -298,6 +310,18 @@
        </div>
      </template>
      <!--        返工班组-->
      <template #responsibleTeam="{ row }">
        <vxe-select v-model="row.reworkTeam" transfer >
          <vxe-option v-for="item in row.basicCategory" :key="item.basicName" :label="item.basicName" :value="item.basicName"/>
        </vxe-select>
      </template>
      <template #responsibleTeam_default="{ row }">
        <span>{{ row.reworkTeam }}</span>
      </template>
    </vxe-grid>
  </div>
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
@@ -4,12 +4,18 @@
import {useRouter} from 'vue-router'
import request from "@/utils/request";
import {ElMessage} from "element-plus";
import deepClone from "@/utils/deepClone";
import {Search} from "@element-plus/icons-vue";
import useUserInfoStore from "@/stores/userInfo";
import {changeFilterEvent,filterChanged} from "@/hook"
const userStore = useUserInfoStore()
const username = userStore.user.userName
const userid = userStore.user.userId
let router = useRouter()
const dateValue = ref("");//查询日期
let produceList = ref([])
const dialogFormVisible = ref(false)
const formLabelWidth = '140px'
/*编辑弹窗显示数据*/
const editData = reactive({
  name: 'FG20202020',
@@ -21,8 +27,6 @@
  resource: '',
  desc: '',
})
const getTableRow = (row, type) => {
  switch (type) {
    case 'edit' : {
@@ -41,6 +45,39 @@
    }
  }
}
let pageNum=ref(1)
let total = reactive({
  pageTotal : 0,
  dataTotal : 0,
  pageSize : 10
})
let selectDate = ref(["",""])
//筛选条件,有外键需要先定义明细里面的数据
let filterData = ref({
})
//第一次调用
request.post(`/rework/SelectRework/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
  if(res.code==200){
    total.dataTotal = res.data.total.total*1
    total.pageTotal= res.data.total.pageTotal
    selectDate.value = res.data.selectDate
    pageNum.value=1
    produceList = deepClone(res.data.data)
    xGrid.value.loadData(produceList)
    gridOptions.loading=false
  }else{
    ElMessage.warning(res.msg)
    router.push("/login")
  }
})
//表尾求和
const sumNum = (list, field) => {
@@ -71,7 +108,7 @@
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
   // remote: true
  },
  customConfig: {
    storage: true
@@ -83,49 +120,40 @@
  },//表头参数
  columns: [
    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
    {title: '操作', width: 110, slots: {default: 'button_slot'}, fixed: "left"},
    {type:'checkbox',title: '选择', width: 80,fixed:"left"},
    {type: 'seq', fixed: "left", title: '自序', width: 50},
    {field: 'reworkTeam', width: 120, title: '返工班组'},
    {
      field: 'order.orderId',
      width: 120,
      title: '销售单号',
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'}
    },
    {
      field: 'reportingWork.processId',
      width: 120,
      title: '流程卡号',
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'}
    },
    {field: 'order.project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'}},
    {field: 'order.batch', width: 80, title: '批次', showOverflow: "ellipsis"},
    {field: 'orderNumber', width: 80, title: '序号'},
    {field: 'orderGlassDetail.glassChild', width: 120, title: '单片名称'},
    {field: 'orderGlassDetail.technologyNumber', width: 80, title: '标记', showOverflow: "ellipsis"},
    {field: 'orderGlassDetail.glassAddress', width: 90, title: '片标记'},
    {field: 'breakageNumber', width: 80, title: '数量'},
    {field: 'orderGlassDetail.childWidth', width: 80, title: '宽'},
    {field: 'orderGlassDetail.childHeight', width: 80, title: '高'},
    {field: 'orderDetail.shape', width: 80, title: '形状'},
    {field: 'breakageType', width: 100, title: '返工类型'},
    {field: 'breakageReason', width: 120, title: '返工原因'},
    {field: 'responsibleEquipment', width: 120, title: '责任设备'},
    {field: 'responsibleTeam', width: 120, title: '责任班组'},
    {field: 'reworkArea', width: 120, title: '返工面积'},
    {field: 'returnProcess', width: 120, title: '返工工序'},
    {field: 'qualityInspector', width: 100, title: '质检员'},
    {field: 'reworkTime', width: 100, title: '返工时间'},
    {field: 'reworkUpdateTime', width: 120, title: '返工审核时间'}
    {field: 'review_status',title: '审核', width: 40, slots: { default: 'state' }},
    {field: 'rework_id', width: 120, title: '返工单号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_team', width: 120, title: '返工班组', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_id', width: 120, title: '销售单号', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'process_id', width: 120, title: '流程卡号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'batch', width: 80, title: '批次', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'order_sort', width: 80, title: '序号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'product_name', width: 120, title: '单片名称', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'technology_number', width: 80, title: '标记', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'glass_address', width: 90, title: '片标记', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_num', width: 80, title: '数量', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'width', width: 80, title: '宽', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'height', width: 80, title: '高', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'shape', width: 80, title: '形状', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_type', width: 100, title: '返工类型', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_reason', width: 120, title: '返工原因', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_equipment', width: 120, title: '责任设备', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'responsible_team', width: 120, title: '责任班组', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_area', width: 120, title: '返工面积', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'rework_processes', width: 120, title: '返工工序', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'quality_inspector', width: 100, title: '质检员', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'reviewer', width: 100, title: '审核员', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'create_time', width: 100, title: '返工时间'},
    {field: 'update_time', width: 120, title: '返工审核时间'}
  ],//表头按钮
  toolbarConfig: {
    // buttons: [{
    //
    // }],
    buttons: [{
      'name': '审核',status: 'primary',
      'code':'add'
    }],
    import: false,
    export: true,
    print: true,
@@ -134,148 +162,102 @@
  },
  data: null,//table body实际数据
  //脚部求和
  footerMethod({columns, data}) {//页脚函数
    let footList = ['number', 'area']
    return [
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return `合计`
        }
        if (footList.includes(column.field)) {
          return sumNum(data, column.field)
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }, mergeFooterItems: [
    {row: 0, col: 0, rowspan: 1, colspan: 2}
  ],//合并脚
  }
})
const gridEvents = {
  toolbarButtonClick ({ code }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (code) {
        case 'add': {
          const $table = xGrid.value
          //gridOptions.columns.unshift(a)
          if ($table) {
            const selectRecords = $table.getCheckboxRecords()
            console.log(selectRecords)
            let flowData = ref({
/*查询*/
const queryData = () => {
              userId:userid,
              userName:username,
              rework:selectRecords
  if (dateValue.value === "") {
    MessageShow("未选择时间,请选择时间后再次进行查询", "warning");
    return;
  }
            })
            request.post("/rework/updateRework",flowData.value).then((res) => {
              if(res.code==200){
                ElMessage.success("审核成功")
                location.reload();
  request.post(`/reportData/rework/manage/query/1/100/${dateValue.value[0]}/${dateValue.value[1]}`).then((res) => {
              }else{
                ElMessage.warning(res.msg)
                router.push("/login")
              }
            })
          }
          return;
        }
    console.log(res);
    //MessageShow(res);
    if (res.code === 200 || res.code === '200') {
      pageTotal.value = res.data.total
      }
    }
  },
      MessageShow(res.data.data.total)
      xGrid.value.loadData(res.data.data)
}
      gridOptions.loading = false
    } else {
const selectOrderList = ()=>{
  request.post(`/rework/SelectRework/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
    if(res.code==200){
      selectDate.value = res.data.selectDate
      produceList = deepClone(res.data.data)
      xGrid.value.loadData(produceList)
      gridOptions.loading=false
    }else{
      ElMessage.warning(res.msg)
      router.push("/login")
    }
  })
}
//筛选条件,有外键需要先定义明细里面的数据
let filterData = ref({})
//定义页面总页数
let pageTotal = ref('')
//定义数据返回结果
let produceList = ref([])
//定义当前页数
let pageNum = $ref(1)
let pageState = null
//定义滚动条高度
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
const changeDate =  ()=>{
  selectOrderList()
}
/*时间框快速选择*/
const shortcuts = [
  {
    text: '近一周',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
      return [start, end]
    },
//页脚跳转
const handlePageChange = ({ currentPage, pageSize }) => {
  total.pageTotal = pageSize
  pageNum.value=currentPage
  selectOrderList()
}
const checkBoxConfig = {
  checkMethod: ({ row }) => {
    if (row['review_status']===1){
      return row.disable
    }else{
      return !row.disable
    }
  },
  {
    text: '近一个月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
      return [start, end]
    },
  },
  {
    text: '近三个月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
      return [start, end]
    },
  },
]
const MessageShow = (content, type = 'success') => {
  ElMessage({
    message: content,
    type: type,
    showClose: true,
  })
  reserve:true
}
/*使用筛选,后端获取数据*/
const changeFilterEvent = (event, option, $panel,) => {
  // 手动触发筛选
  $panel.changeOption(event, !!option.data, option)
}
function filterChanged(column) {
  /*gridOptions.loading=true
 //筛选条件发生变化条件发生变化
 let value = column.datas[0]!=undefined?column.datas[0]:''
 value = value.trim()
 //判断是否存在外键
 if (column.property.indexOf('.')>-1){
   const  columnArr = column.property.split('.')
   filterData.value[columnArr[0]] = {
     [columnArr[1]]:value
   }
 }else{
   filterData.value[column.property] = value
 }
request.post("/product/1/100/"+productGlassTypeStore.GlassType,filterData.value).then((res) => {
   if(res.code==200){
     pageTotal.value=res.data.total
     pageNum=1
     produceList = deepClone(res.data.data)
     xGrid.value.loadData(produceList)
     gridOptions.loading=false
   }else{
     ElMessage.warning(res.msg)
   }
 })*/
}
</script>
@@ -283,36 +265,27 @@
<template>
  <div class="main-div-customer">
    <el-header height="auto" style="padding: 0;margin:0">
      <el-row :gutter="0" style="margin-bottom: 5px">
        <el-col :span="7">
          <el-date-picker
              v-model="dateValue"
              type="daterange"
              unlink-panels
              range-separator="-"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              :shortcuts="shortcuts"
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              width:99%
          />
        </el-col>
      <el-date-picker
          v-model="selectDate"
          type="daterange"
          start-placeholder="开始时间"
          end-placeholder="结束时间"
          format="YYYY-MM-DD"
          value-format="YYYY-MM-DD"
        <el-col :span="2">
          <el-button type="primary" @click="queryData()">查询</el-button>
        </el-col>
      </el-row>
      />
      <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">查询</el-button>
    </el-header>
    <vxe-grid
        max-height="100%"
        @filter-change="filterChanged"
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        @scroll="scrollEvnt"
        v-on="gridEvents"
        :checkbox-config="checkBoxConfig"
    >
      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
@@ -340,6 +313,23 @@
        </div>
      </template>
      <template #state="{ row,column}">
        <el-checkbox @click.native.prevent  :checked="row[column.field]===1"/>
      </template>
      <template #pager>
        <!--使用 pager 插槽-->
        <vxe-pager
            @page-change="handlePageChange"
            :layouts="[  'PrevPage', 'Jump','PageCount', 'NextPage',  'Total']"
            v-model:current-page="pageNum"
            v-model:page-size="total.pageSize"
            v-model:pager-count="total.pageTotal"
            :total="total.dataTotal"
        >
        </vxe-pager>
      </template>
    </vxe-grid>
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -60,6 +60,7 @@
request.post(`/Delivery/getseletShippingOrder/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
  if(res.code==200){
    console.log(res.data.data)
    total.dataTotal = res.data.total.total*1
    total.pageTotal= res.data.total.pageTotal
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReworkController.java
@@ -1,12 +1,18 @@
package com.example.erp.controller.pp;
import com.example.erp.common.Constants;
import com.example.erp.common.Result;
import com.example.erp.entity.pp.Rework;
import com.example.erp.entity.sd.Delivery;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.exception.ServiceException;
import com.example.erp.service.pp.ReworkService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/rework")
@@ -15,11 +21,45 @@
    @Autowired
    ReworkService reworkService;
    @PostMapping("/query/{pageNum}/{pageSize}/{startTime}/{endTime}")
    public Result queryRework(@PathVariable Integer pageNum, @PathVariable Integer pageSize,
                              @PathVariable String startTime,@PathVariable String endTime
            ){
        return Result.seccess(reworkService.queryRework(pageNum,pageSize,startTime,endTime,null));
    /*发货订单查询*/
    @ApiOperation("发货订单查询接口")
    @PostMapping("/getSelectRework/{pageNum}/{pageSize}")
    public Result getSelectRework(@PathVariable Integer pageNum, @PathVariable Integer pageSize){
        return Result.seccess(reworkService.getSelectRework(pageNum,pageSize));
    }
    @ApiOperation("发货订单查询接口")
    @PostMapping("/SelectRework/{pageNum}/{pageSize}/{selectDate}")
    public Result SelectRework(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate,@RequestBody Rework rework){
        return Result.seccess(reworkService.SelectRework(pageNum,pageSize,selectDate,rework));
    }
    @ApiOperation("订单调拨接口")
    @PostMapping("/saveRework")
    public Result updateFinishedGoodsInventoryAllocate( @RequestBody Map<String,Object> object){
        if(reworkService.saveRework(object)){
            return Result.seccess();
        }else {
            throw new ServiceException(Constants.Code_500,"返工失败");
        }
    }
    @ApiOperation("订单调拨接口")
    @PostMapping("/updateRework")
    public Result updateRework( @RequestBody Map<String,Object> object){
        if(reworkService.updateRework(object)){
            return Result.seccess();
        }else {
            throw new ServiceException(Constants.Code_500,"审核失败");
        }
    }
}
north-glass-erp/src/main/java/com/example/erp/entity/pp/BasicDataProduce.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.example.erp.entity.sd.BasicData;
import lombok.Data;
import java.time.LocalDate;
@@ -15,4 +16,6 @@
    private String basicCategory;
    private LocalDate createTime;
    private LocalDate updateTime;
    private BasicData basicData;
}
north-glass-erp/src/main/java/com/example/erp/entity/pp/Rework.java
@@ -32,6 +32,15 @@
    //修改时间
    private LocalDate updateTime;
    private String orderId;
    private String responsiblePersonnel;
    private String orderSort;
    private Integer technologyNumber;
    private String responsibleTeam;
    private String qualityInspector;
    private String responsibleEquipment;
    private String reportingWorkId;
    //外键流程卡表
    private FlowCard flowCard;
}
north-glass-erp/src/main/java/com/example/erp/mapper/pp/BasicDateProduceMapper.java
@@ -13,4 +13,6 @@
    List<BasicDataProduce> SelectWorkBasicDeviceMp(String process);
    List<BasicDataProduce> SelectWorkBasicTeamsMp(String process);
    List<BasicDataProduce> SelectWorkBasicTeams();
}
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReworkMapper.java
@@ -1,13 +1,31 @@
package com.example.erp.mapper.pp;
import com.example.erp.entity.mm.FinishedGoodsInventory;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.pp.ReportingWorkDetail;
import com.example.erp.entity.pp.Rework;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@Mapper
public interface ReworkMapper {
    List<Rework> queryRework(@Param("offset") Integer offset,@Param("pageSize") Integer pageSiz,String startTime,String endTime,Rework rework);
    List<Map<String,Object>> SelectRework(@Param("offset") Integer offset,@Param("pageSize") Integer pageSiz,String startDate,String endDate,Rework rework);
    Map<String,Integer> SelectReworkPageTotal(@Param("offset") Integer offset,@Param("pageSize") Integer pageSiz,String startDate,String endDate,Rework rework);
    List<Map<String,Object>> getSelectRework(@Param("offset") Integer offset, @Param("pageSize") Integer pageSiz);
    Integer getMaximum();
    Boolean insertRework(@Param("rework") Rework rework ,  @Param("oddNumber") String oddNumber);
    Boolean updateReportingWorkDetail(@Param("rework") Rework rework);
    Boolean updateRework(@Param("rework") Rework rework ,  @Param("userName") String userName);
}
north-glass-erp/src/main/java/com/example/erp/service/pp/ReworkService.java
@@ -1,14 +1,23 @@
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.BasicDataProduce;
import com.example.erp.entity.pp.Rework;
import com.example.erp.entity.sd.Delivery;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.entity.userInfo.SysError;
import com.example.erp.mapper.pp.BasicDateProduceMapper;
import com.example.erp.mapper.pp.ReworkMapper;
import com.example.erp.service.userInfo.SysErrorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
@Service
@@ -16,14 +25,130 @@
public class ReworkService {
    @Autowired
    ReworkMapper reworkMapper;
    @Autowired
    BasicDateProduceMapper basicDateProduceMapper;
    @Autowired
    SysErrorService sysErrorService;
    /*查询返工数据*/
    public Map<String,Object> queryRework(Integer pageNum, Integer pageSize,String startTime,String endTime,Rework rework) {
    public List<Map<String, Object>> getSelectRework(Integer pageNum, Integer pageSize) {
        Integer offset = (pageNum - 1) * pageSize;
        Map<String, Object> map = new HashMap<>();
        List<Map<String, Object>> listMap = new ArrayList<>();
        List<Map<String, Object>> ReworkMap =reworkMapper.getSelectRework(offset,pageSize);
        List<BasicDataProduce> basicDataProduceList=basicDateProduceMapper.SelectWorkBasicTeams();
        for (Map<String, Object> item:ReworkMap){
            item.put("reworkTeam","");
            List<BasicDataProduce> basicCategory=new ArrayList<>();
            for (BasicDataProduce basicDataProduce:basicDataProduceList){
                if(Objects.equals(basicDataProduce.getBasicData().getBasicName(),item.get("reworkProcesses"))){
                    basicCategory.add(basicDataProduce);
                }
            }
            item.put("basicCategory",basicCategory);
            listMap.add(item);
           System.out.println(listMap);
        }
        return listMap;
    }
    public Map<String, Object> SelectRework(Integer pageNum, Integer pageSize,List<String> selectDate,Rework rework) {
        Integer offset = (pageNum-1)*pageSize;
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
        if(selectDate !=null && selectDate.size()==2){
            if(!selectDate.get(0).isEmpty()){
                startDate = selectDate.get(0);
            }
            if(!selectDate.get(1).isEmpty()){
                endDate = selectDate.get(1);
            }
        }
        Map<String,Object> map = new HashMap<>();
        map.put("data",reworkMapper.queryRework(offset,pageSize,startTime,endTime,rework));
        map.put("data",reworkMapper.SelectRework(offset,pageSize,startDate,endDate,rework));
        map.put("total",reworkMapper.SelectReworkPageTotal(offset,pageSize,startDate,endDate,rework));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
    public Boolean saveRework(Map<String,Object> object) {
        boolean saveState = true;
            String userName = "";
            String userId = "";
            if (object.get("userName") != null) {
                userName = object.get("userName").toString();
            }
            if (object.get("userId") != null) {
                userId = object.get("userId").toString();
            }
            //获取对象集合循环进行新增修改
            List<Rework> reworklist = JSONArray.parseArray(JSONObject.toJSONString(object.get("rework")), Rework.class);
            if (!reworklist.isEmpty()){
                for (Rework rework : reworklist) {
                    System.out.println(rework);
                    //获取单号
                    String oddNumber= orderNumberSetting("返工");
                    //添加出入库记录
                    reworkMapper.insertRework(rework,oddNumber);
                    reworkMapper.updateReportingWorkDetail(rework);
                }
            }
        return saveState;
    }
    public Boolean updateRework(Map<String,Object> object) {
        boolean saveState = true;
        String userName = "";
        String userId = "";
        if (object.get("userName") != null) {
            userName = object.get("userName").toString();
        }
        if (object.get("userId") != null) {
            userId = object.get("userId").toString();
        }
        //获取对象集合循环进行新增修改
        List<Rework> reworklist = JSONArray.parseArray(JSONObject.toJSONString(object.get("rework")), Rework.class);
        if (!reworklist.isEmpty()){
            for (Rework rework : reworklist) {
                //审核
                reworkMapper.updateRework(rework,userName);
            }
        }
        return saveState;
    }
    public String orderNumberSetting(String type) {
        //根据类型自动生成不同的操作单号
        String alias="";
        if(Objects.equals(type, "返工")){
            alias="FG";
        }
        //查询当天的最大数量
        Integer maximum=reworkMapper.getMaximum();
        //设置两位不够补0
        String formattedNumber = String.format("%02d", maximum+1);
        //格式化当前日期
        Date currentDate = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
        String formattedDate = dateFormat.format(currentDate);
        String oddNumbers =  alias+formattedDate+formattedNumber;
        return oddNumbers;
    }
}
north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
@@ -738,8 +738,7 @@
        </where>
        order by fgi.id
        limit #{offset},#{pageSize}
        ;
        limit #{offset},#{pageSize};
    </select>
north-glass-erp/src/main/resources/mapper/pp/BasicDataProduce.xml
@@ -3,6 +3,20 @@
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.erp.mapper.pp.BasicDateProduceMapper">
    <resultMap id="selectBasicDataProduce" type="com.example.erp.entity.pp.BasicDataProduce">
        <id column="id" property="id"/>
        <result column="basic_type" property="basicType"/>
        <result column="basic_name" property="basicName"/>
        <result column="basic_category" property="basicCategory"/>
        <result column="d_basic_type" property="basicData.basicType"/>
        <result column="d_basic_name" property="basicData.basicName"/>
        <result column="d_basic_category" property="basicData.basicCategory"/>
    </resultMap>
    <select id="SelectWorkBasicDeviceMp">
        select
            *
@@ -18,4 +32,12 @@
            basic_data_produce as a
        where a.basic_category=#{process} and a.basic_type='班组'
    </select>
    <select id="SelectWorkBasicTeams"  resultMap="selectBasicDataProduce">
        select bdp.basic_name ,bd.basic_name as d_basic_name
        from pp.basic_data_produce bdp
                 left join sd.basic_data bd on bdp.basic_category = bd.id
        where bd.basic_name = "切割"
          and bdp.basic_type = "teamsgroups"
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/pp/ReworkMapper.xml
@@ -5,62 +5,123 @@
<!--返工数据-->
<mapper namespace="com.example.erp.mapper.pp.ReworkMapper">
    <resultMap id="reworkDataTitle" type="com.example.erp.entity.pp.Rework">
    </resultMap>
    <!--获取返工数据-->
    <select id="queryRework" resultMap="reworkDataTitle">
        select * from rework
        <!--<where>
            create_time <![CDATA[>=]]> #{startTime} and create_time <![CDATA[<=]]> #{endTime}}
            &lt;!&ndash;返工编号&ndash;&gt;
            <if test="rework_id!=null and rework != ''">
                and rework_id = #{reworkId}
            </if>
            &lt;!&ndash;流程卡号&ndash;&gt;
            <if test="process_id != null and process_id != ''">
                and process_id=#{processId}
            </if>
            &lt;!&ndash;返工类型&ndash;&gt;
            <if test="rework_Type != null and rework_Type!=''">
                and rework_Type=#{rework_Type}
            </if>
            &lt;!&ndash;返工原因&ndash;&gt;
            <if test="rework_Reason != null and rework_Reason!=''">
                and rework_Reason=#{rework_Reason}
            </if>
            &lt;!&ndash;返工工序&ndash;&gt;
            <if test="rework_Processes != null and rework_Processes!=''">
                and rework_Processes=#{rework_Processes}
            </if>
            &lt;!&ndash;返工数量&ndash;&gt;
            <if test="rework_Num != null and rework_Num!=''">
                and rework_Num=#{rework_Num}
            </if>
            &lt;!&ndash;返工班组&ndash;&gt;
            <if test="rework_Team != null and rework_Team!=''">
                and rework_Team=#{rework_Team}
            </if>
            &lt;!&ndash;审核人&ndash;&gt;
            <if test="reviewer != null and reviewer!=''">
                and reviewer=#{reviewer}
            </if>
            &lt;!&ndash;审核状态&ndash;&gt;
            <if test="review_Status != null and review_Status!=''">
                and review_Status=#{review_Status}
            </if>
            &lt;!&ndash;返工面积&ndash;&gt;
            <if test="rework_Area != null and rework_Area!=''">
                and rework_Area=#{rework_Area}
            </if>
        </where>-->
    <select id="SelectRework" >
        select
        r.review_status,
        r.rework_team,
        r.rework_id,
        r.process_id,
        r.order_id,
        r.order_sort,
        o.project,
        o.batch,
        od.product_name,
        ogd.technology_number,
        ogd.glass_address,
        r.rework_num,
        od.width,
        od.height,
        od.shape,
        r.rework_type,
        r.rework_reason,
        r.responsible_team,
        r.responsible_personnel,
        r.responsible_equipment,
        r.rework_area,
        r.quality_inspector,
        r.rework_processes,
        r.reviewer,
        date(r.create_time) as create_time,
        date(r.update_time) as update_time
        from pp.rework r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number
        left join sd.`order` o on r.order_id = o.order_id
        left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number
        <where>
            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
        </where>
         order by r.review_status
        limit #{offset},#{pageSize};
    </select>
    <select id="SelectReworkPageTotal" >
        select CEILING(count(zu.id)/#{pageSize}) as 'pageTotal',
        count(zu.id) as 'total'
        from (select r.id as id
              from pp.rework r
                       left join sd.order_detail od on r.order_id = od.order_id and r.order_sort = od.order_number
                       left join sd.`order` o on r.order_id = o.order_id
                        left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
                                 on r.order_id = ogd.order_id and r.order_sort = ogd.order_number
        <where>
            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
        </where>
              ) as zu
        limit #{offset},#{pageSize};
    </select>
    <select id="getSelectRework">
        select o.order_id as orderId,
               rwd.reporting_work_id as reportingWorkId,
               rw.process_id as processId,
               o.project,
               o.batch,
               rwd.order_number as orderSort,
               od.product_name as productName,
               ogd.technology_number as technologyNumber,
               ogd.glass_address as glassAddress,
               rwd.wait_rework_quantity as reworkNum,
               od.width,
               od.height,
               od.shape,
               rwd.breakage_quantity as breakageQuantity,
               rwd.return_process as reworkProcesses,
               rwd.breakage_reason as reworkReason,
               rwd.breakage_type as reworkType,
               rwd.responsible_personnel as responsiblePersonnel,
               rwd.responsible_equipment as responsibleEquipment,
               rwd.responsible_team as responsibleTeam,
               ROUND(rwd.wait_rework_quantity * od.width * od.height / 1000000, 2) as reworkArea,
               rw.qualityIns_pector as qualityInsPector
        from pp.reporting_work_detail rwd
                 left join pp.reporting_work rw on rwd.reporting_work_id = rw.reporting_work_id
                 left join sd.`order` o on rw.order_id = o.order_id
                 left join sd.order_detail od on rw.order_id = od.order_id and rwd.order_number = od.order_number
                 left join sd.order_glass_detail ogd
                           on rw.order_id = ogd.order_id and rwd.order_number = ogd.order_number
                            where  rwd.wait_rework_quantity>0
        group by ogd.order_id, ogd.order_number
    </select>
    <select id="getMaximum" >
        select count(*) from pp.rework where  date(create_time)=CURDATE()
    </select>
    <insert id="insertRework"  useGeneratedKeys="true" >
        insert into pp.rework(rework_id,reporting_work_id, process_id,order_id, order_sort, technology_number, responsible_team,
                              responsible_personnel, rework_type, rework_reason, rework_processes, rework_num,
                              rework_area, rework_team,responsible_equipment,quality_inspector, reviewer, review_status, create_time)
        values (
                   #{oddNumber}, #{rework.reportingWorkId},#{rework.processId},#{rework.orderId},#{rework.orderSort},#{rework.technologyNumber},#{rework.responsibleTeam},
                #{rework.responsiblePersonnel},#{rework.reworkType},#{rework.reworkReason},#{rework.reworkProcesses},#{rework.reworkNum},
                #{rework.reworkArea},#{rework.reworkTeam},#{rework.responsibleEquipment},#{rework.qualityInspector},"",0,now()
               )
    </insert>
    <update id="updateRework"  >
        update pp.rework set reviewer=#{userName},review_status=1,update_time=now() where rework_id=#{rework.reworkId}
    </update>
    <update id="updateReportingWorkDetail"  >
        update pp.reporting_work_detail set wait_rework_quantity=wait_rework_quantity-#{rework.reworkNum}
            where reporting_work_id=#{rework.reportingWorkId} and order_number=#{rework.orderSort} and technology_number=#{rework.technologyNumber}
    </update>
</mapper>
north-glass-erp/target/classes/mapper/mm/FinishedGoodsInventory.xml
@@ -738,8 +738,7 @@
        </where>
        order by fgi.id
        limit #{offset},#{pageSize}
        ;
        limit #{offset},#{pageSize};
    </select>
north-glass-erp/target/classes/mapper/pp/BasicDataProduce.xml
@@ -3,6 +3,20 @@
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.erp.mapper.pp.BasicDateProduceMapper">
    <resultMap id="selectBasicDataProduce" type="com.example.erp.entity.pp.BasicDataProduce">
        <id column="id" property="id"/>
        <result column="basic_type" property="basicType"/>
        <result column="basic_name" property="basicName"/>
        <result column="basic_category" property="basicCategory"/>
        <result column="d_basic_type" property="basicData.basicType"/>
        <result column="d_basic_name" property="basicData.basicName"/>
        <result column="d_basic_category" property="basicData.basicCategory"/>
    </resultMap>
    <select id="SelectWorkBasicDeviceMp">
        select
            *
@@ -18,4 +32,12 @@
            basic_data_produce as a
        where a.basic_category=#{process} and a.basic_type='班组'
    </select>
    <select id="SelectWorkBasicTeams"  resultMap="selectBasicDataProduce">
        select bdp.basic_name ,bd.basic_name as d_basic_name
        from pp.basic_data_produce bdp
                 left join sd.basic_data bd on bdp.basic_category = bd.id
        where bd.basic_name = "切割"
          and bdp.basic_type = "teamsgroups"
    </select>
</mapper>
north-glass-erp/target/classes/mapper/pp/ReworkMapper.xml
@@ -5,62 +5,123 @@
<!--返工数据-->
<mapper namespace="com.example.erp.mapper.pp.ReworkMapper">
    <resultMap id="reworkDataTitle" type="com.example.erp.entity.pp.Rework">
    </resultMap>
    <!--获取返工数据-->
    <select id="queryRework" resultMap="reworkDataTitle">
        select * from rework
        <!--<where>
            create_time <![CDATA[>=]]> #{startTime} and create_time <![CDATA[<=]]> #{endTime}}
            &lt;!&ndash;返工编号&ndash;&gt;
            <if test="rework_id!=null and rework != ''">
                and rework_id = #{reworkId}
            </if>
            &lt;!&ndash;流程卡号&ndash;&gt;
            <if test="process_id != null and process_id != ''">
                and process_id=#{processId}
            </if>
            &lt;!&ndash;返工类型&ndash;&gt;
            <if test="rework_Type != null and rework_Type!=''">
                and rework_Type=#{rework_Type}
            </if>
            &lt;!&ndash;返工原因&ndash;&gt;
            <if test="rework_Reason != null and rework_Reason!=''">
                and rework_Reason=#{rework_Reason}
            </if>
            &lt;!&ndash;返工工序&ndash;&gt;
            <if test="rework_Processes != null and rework_Processes!=''">
                and rework_Processes=#{rework_Processes}
            </if>
            &lt;!&ndash;返工数量&ndash;&gt;
            <if test="rework_Num != null and rework_Num!=''">
                and rework_Num=#{rework_Num}
            </if>
            &lt;!&ndash;返工班组&ndash;&gt;
            <if test="rework_Team != null and rework_Team!=''">
                and rework_Team=#{rework_Team}
            </if>
            &lt;!&ndash;审核人&ndash;&gt;
            <if test="reviewer != null and reviewer!=''">
                and reviewer=#{reviewer}
            </if>
            &lt;!&ndash;审核状态&ndash;&gt;
            <if test="review_Status != null and review_Status!=''">
                and review_Status=#{review_Status}
            </if>
            &lt;!&ndash;返工面积&ndash;&gt;
            <if test="rework_Area != null and rework_Area!=''">
                and rework_Area=#{rework_Area}
            </if>
        </where>-->
    <select id="SelectRework" >
        select
        r.review_status,
        r.rework_team,
        r.rework_id,
        r.process_id,
        r.order_id,
        r.order_sort,
        o.project,
        o.batch,
        od.product_name,
        ogd.technology_number,
        ogd.glass_address,
        r.rework_num,
        od.width,
        od.height,
        od.shape,
        r.rework_type,
        r.rework_reason,
        r.responsible_team,
        r.responsible_personnel,
        r.responsible_equipment,
        r.rework_area,
        r.quality_inspector,
        r.rework_processes,
        r.reviewer,
        date(r.create_time) as create_time,
        date(r.update_time) as update_time
        from pp.rework r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number
        left join sd.`order` o on r.order_id = o.order_id
        left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number
        <where>
            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
        </where>
         order by r.review_status
        limit #{offset},#{pageSize};
    </select>
    <select id="SelectReworkPageTotal" >
        select CEILING(count(zu.id)/#{pageSize}) as 'pageTotal',
        count(zu.id) as 'total'
        from (select r.id as id
              from pp.rework r
                       left join sd.order_detail od on r.order_id = od.order_id and r.order_sort = od.order_number
                       left join sd.`order` o on r.order_id = o.order_id
                        left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
                                 on r.order_id = ogd.order_id and r.order_sort = ogd.order_number
        <where>
            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
        </where>
              ) as zu
        limit #{offset},#{pageSize};
    </select>
    <select id="getSelectRework">
        select o.order_id as orderId,
               rwd.reporting_work_id as reportingWorkId,
               rw.process_id as processId,
               o.project,
               o.batch,
               rwd.order_number as orderSort,
               od.product_name as productName,
               ogd.technology_number as technologyNumber,
               ogd.glass_address as glassAddress,
               rwd.wait_rework_quantity as reworkNum,
               od.width,
               od.height,
               od.shape,
               rwd.breakage_quantity as breakageQuantity,
               rwd.return_process as reworkProcesses,
               rwd.breakage_reason as reworkReason,
               rwd.breakage_type as reworkType,
               rwd.responsible_personnel as responsiblePersonnel,
               rwd.responsible_equipment as responsibleEquipment,
               rwd.responsible_team as responsibleTeam,
               ROUND(rwd.wait_rework_quantity * od.width * od.height / 1000000, 2) as reworkArea,
               rw.qualityIns_pector as qualityInsPector
        from pp.reporting_work_detail rwd
                 left join pp.reporting_work rw on rwd.reporting_work_id = rw.reporting_work_id
                 left join sd.`order` o on rw.order_id = o.order_id
                 left join sd.order_detail od on rw.order_id = od.order_id and rwd.order_number = od.order_number
                 left join sd.order_glass_detail ogd
                           on rw.order_id = ogd.order_id and rwd.order_number = ogd.order_number
                            where  rwd.wait_rework_quantity>0
        group by ogd.order_id, ogd.order_number
    </select>
    <select id="getMaximum" >
        select count(*) from pp.rework where  date(create_time)=CURDATE()
    </select>
    <insert id="insertRework"  useGeneratedKeys="true" >
        insert into pp.rework(rework_id,reporting_work_id, process_id,order_id, order_sort, technology_number, responsible_team,
                              responsible_personnel, rework_type, rework_reason, rework_processes, rework_num,
                              rework_area, rework_team,responsible_equipment,quality_inspector, reviewer, review_status, create_time)
        values (
                   #{oddNumber}, #{rework.reportingWorkId},#{rework.processId},#{rework.orderId},#{rework.orderSort},#{rework.technologyNumber},#{rework.responsibleTeam},
                #{rework.responsiblePersonnel},#{rework.reworkType},#{rework.reworkReason},#{rework.reworkProcesses},#{rework.reworkNum},
                #{rework.reworkArea},#{rework.reworkTeam},#{rework.responsibleEquipment},#{rework.qualityInspector},"",0,now()
               )
    </insert>
    <update id="updateRework"  >
        update pp.rework set reviewer=#{userName},review_status=1,update_time=now() where rework_id=#{rework.reworkId}
    </update>
    <update id="updateReportingWorkDetail"  >
        update pp.reporting_work_detail set wait_rework_quantity=wait_rework_quantity-#{rework.reworkNum}
            where reporting_work_id=#{rework.reportingWorkId} and order_number=#{rework.orderSort} and technology_number=#{rework.technologyNumber}
    </update>
</mapper>