廖井涛
2024-10-30 24af59685b0520fc7e642f7c2e946d4fd39c840d
新增物料库存报表
15个文件已修改
7个文件已添加
738 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/lang/en.js 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/ru.js 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/router/index.js 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/FinishedProductDeliveryReport.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/FinishedProductInventoryReport.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/FinishedProductOutboundReport.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/FinishedProductTransferReport.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/MaterialAdditionReport.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/MaterialOutboundReport.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/MaterialReturnReport.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/mm/MaterialLog.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedOperateLogMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/en.js
@@ -994,6 +994,7 @@
        pleaseEnterData :'Please enter data',
        pleaseEnter :'Please enter',
        msg1 :'库存已存在此物料不能删除',
        unit :'单位',
    },
    ingredientsStock:{
        page:{
@@ -1061,8 +1062,18 @@
    },
    stockReport:{
        page:{
            warehouseReport:"Warehouse Basic Data"
        }
            warehouseReport:"Warehouse Basic Data",
            finishedProductReport:"成品报表",
            materialReport:"物料报表",
        },
        finishedProductInventoryReport:"成品入库报表",
        finishedProductOutboundReport:"成品出库报表",
        finishedProductTransferReport:"成品调拨报表",
        finishedProductDeliveryReport:"成品领出报表",
        materialAdditionReport:"物料新增报表",
        materialOutboundReport:"物料出库报表",
        materialReturnReport:"物料返库报表",
    },
    components:{
        addNewSignature :'Add label name',
north-glass-erp/northglass-erp/src/lang/ru.js
@@ -994,6 +994,7 @@
        pleaseEnterData :'Введите данные.',
        pleaseEnter :'Введите',
        msg1 :'库存已存在此物料不能删除',
        unit :'单位',
    },
    ingredientsStock:{
        page:{
@@ -1061,8 +1062,18 @@
    },
    stockReport:{
        page:{
            warehouseReport:"База запасов"
        }
            warehouseReport:"База запасов",
            finishedProductReport:"成品报表",
            materialReport:"物料报表",
        },
        finishedProductInventoryReport:"成品入库报表",
        finishedProductOutboundReport:"成品出库报表",
        finishedProductTransferReport:"成品调拨报表",
        finishedProductDeliveryReport:"成品领出报表",
        materialAdditionReport:"物料新增报表",
        materialOutboundReport:"物料出库报表",
        materialReturnReport:"物料返库报表",
    },
    components:{
        addNewSignature :'Добавить имя метки',
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -994,6 +994,7 @@
        pleaseEnterData :'请输入数据',
        pleaseEnter :'请输入',
        msg1 :'库存已存在此物料不能删除',
        unit :'单位',
    },
    ingredientsStock:{
        page:{
@@ -1061,8 +1062,18 @@
    },
    stockReport:{
        page:{
            warehouseReport:"仓储报表"
        }
            warehouseReport:"仓储报表",
            finishedProductReport:"成品报表",
            materialReport:"物料报表",
        },
        finishedProductInventoryReport:"成品入库报表",
        finishedProductOutboundReport:"成品出库报表",
        finishedProductTransferReport:"成品调拨报表",
        finishedProductDeliveryReport:"成品领出报表",
        materialAdditionReport:"物料新增报表",
        materialOutboundReport:"物料出库报表",
        materialReturnReport:"物料返库报表",
    },
    components:{
        addNewSignature :'新增标签名',
north-glass-erp/northglass-erp/src/router/index.js
@@ -1026,27 +1026,43 @@
          name: 'stockReport',
          component: () => import('../views/mm/stockReport/StockReport.vue'),
          children:[
            {
              path: 'warehouseReport',
              name: 'warehouseReport',
              component: () => import('../views/mm/stockReport/WarehouseReport.vue'),
            }, {
              path: 'stockMonthReport',
              name: 'stockMonthReport',
              component: () => import('../views/mm/stockReport/StockMonthReport.vue'),
            }, {
              path: 'subsidiaryMonthReport',
              name: 'subsidiaryMonthReport',
              component: () => import('../views/mm/stockReport/SubsidiaryMonthReport.vue'),
            },
            /*----------- 新增 ----------------*/
            {
              path: 'StockWarehouseReport',
              name: 'StockWarehouseReport',
              component: () => import('../views/mm/stockReport/StockWarehouseReport.vue'),
              path: 'finishedProductDeliveryReport',
              name: 'finishedProductDeliveryReport',
              component: () => import('../views/mm/stockReport/FinishedProductDeliveryReport.vue'),
            },
            {
              path: 'finishedProductInventoryReport',
              name: 'finishedProductInventoryReport',
              component: () => import('../views/mm/stockReport/FinishedProductInventoryReport.vue'),
            },
            {
              path: 'finishedProductOutboundReport',
              name: 'finishedProductOutboundReport',
              component: () => import('../views/mm/stockReport/FinishedProductOutboundReport.vue'),
            },
            {
              path: 'finishedProductTransferReport',
              name: 'finishedProductTransferReport',
              component: () => import('../views/mm/stockReport/FinishedProductTransferReport.vue'),
            },{
              path: 'materialAdditionReport',
              name: 'materialAdditionReport',
              component: () => import('../views/mm/stockReport/MaterialAdditionReport.vue'),
            },
            {
              path: 'materialOutboundReport',
              name: 'materialOutboundReport',
              component: () => import('../views/mm/stockReport/MaterialOutboundReport.vue'),
            },
            {
              path: 'materialReturnReport',
              name: 'materialReturnReport',
              component: () => import('../views/mm/stockReport/MaterialReturnReport.vue'),
            }, {
              path: '',
              redirect: '/main/stockReport/warehouseReport'
              redirect: '/main/stockReport/finishedProductInventoryReport'
            }
          ]
        },
north-glass-erp/northglass-erp/src/views/mm/stockReport/FinishedProductDeliveryReport.vue
New file
@@ -0,0 +1,49 @@
<script setup>
import BasicTable from "@/components/BasicTable.vue"
import request from "@/utils/request"
import { ref} from "vue"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateType', width: '120',title:t('warehouseBasicData.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName',width: '140', title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'staterOperationOrderNumber', width: '150',title: t('productStock.staterOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'endOperationOrderNumber', width: '100',title: t('productStock.endOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'processId', width:'140', title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'type', width:'140', title: t('productStock.typeClaim'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewed', width: '100',title: t('productStock.reviewed'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '140',title: t('productStock.approvedDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表格表头字段
  data:[],//表格数据
  url :'/finishedGoodsInventory/getSelectFinishedOperateLogReport/领出',
  exportUrl :'/finishedGoodsInventory/exportFinishedOperateLogReport/领出',
  exportName:t('stockReport.finishedProductDeliveryReport'),
  footList:['quantity']
})
</script>
<template>
  <basic-table
      :childrenData="childrenData"/>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/mm/stockReport/FinishedProductInventoryReport.vue
New file
@@ -0,0 +1,49 @@
<script setup>
import BasicTable from "@/components/BasicTable.vue"
import request from "@/utils/request"
import { ref} from "vue"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateType', width: '120',title:t('warehouseBasicData.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName',width: '140', title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'staterOperationOrderNumber', width: '150',title: t('productStock.staterOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'endOperationOrderNumber', width: '100',title: t('productStock.endOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'processId', width:'140', title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'type', width:'140', title: t('productStock.typeClaim'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewed', width: '100',title: t('productStock.reviewed'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '140',title: t('productStock.approvedDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表格表头字段
  data:[],//表格数据
  url :'/finishedGoodsInventory/getSelectFinishedOperateLogReport/入库',
  exportUrl :'/finishedGoodsInventory/exportFinishedOperateLogReport/入库',
  exportName:t('stockReport.finishedProductInventoryReport'),
  footList:['quantity']
})
</script>
<template>
  <basic-table
      :childrenData="childrenData"/>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/mm/stockReport/FinishedProductOutboundReport.vue
New file
@@ -0,0 +1,49 @@
<script setup>
import BasicTable from "@/components/BasicTable.vue"
import request from "@/utils/request"
import { ref} from "vue"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateType', width: '120',title:t('warehouseBasicData.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName',width: '140', title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'staterOperationOrderNumber', width: '150',title: t('productStock.staterOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'endOperationOrderNumber', width: '100',title: t('productStock.endOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'processId', width:'140', title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'type', width:'140', title: t('productStock.typeClaim'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewed', width: '100',title: t('productStock.reviewed'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '140',title: t('productStock.approvedDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表格表头字段
  data:[],//表格数据
  url :'/finishedGoodsInventory/getSelectFinishedOperateLogReport/出库',
  exportUrl :'/finishedGoodsInventory/exportFinishedOperateLogReport/出库',
  exportName:t('stockReport.finishedProductOutboundReport'),
  footList:['quantity']
})
</script>
<template>
  <basic-table
      :childrenData="childrenData"/>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/mm/stockReport/FinishedProductTransferReport.vue
New file
@@ -0,0 +1,49 @@
<script setup>
import BasicTable from "@/components/BasicTable.vue"
import request from "@/utils/request"
import { ref} from "vue"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateType', width: '120',title:t('warehouseBasicData.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productId',width: '100', title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.productName',width: '140', title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'orderDetail.height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'staterOperationOrderNumber', width: '150',title: t('productStock.staterOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'endOperationOrderNumber', width: '100',title: t('productStock.endOperationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'processId', width:'140', title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'type', width:'140', title: t('productStock.typeClaim'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewed', width: '100',title: t('productStock.reviewed'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'reviewedTime', width: '140',title: t('productStock.approvedDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表格表头字段
  data:[],//表格数据
  url :'/finishedGoodsInventory/getSelectFinishedOperateLogReport/调拨',
  exportUrl :'/finishedGoodsInventory/exportFinishedOperateLogReport/调拨',
  exportName:t('stockReport.finishedProductTransferReport'),
  footList:['quantity']
})
</script>
<template>
  <basic-table
      :childrenData="childrenData"/>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/mm/stockReport/MaterialAdditionReport.vue
New file
@@ -0,0 +1,48 @@
<script setup>
import BasicTable from "@/components/BasicTable.vue"
import request from "@/utils/request"
import { ref} from "vue"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateType', width: '120',title:t('warehouseBasicData.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'inventoryId',width: '100', title: t('ingredientsStock.id'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialCode',width: '140', title: t('ingredients.materialCode'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialName',width: '140', title: t('ingredientsStock.materialName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'thickness', width: '150',title: t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'producer', width: '100',title: t('ingredientsStock.producer'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'unit', width:'140', title: t('ingredients.unit'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'singlePieceArea', width:'140', title: t('productStock.singlePieceArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'inventoryArea', width:'140', title: t('productStock.inventoryArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表格表头字段
  data:[],//表格数据
  url :'/materialInventory/getMaterialLogReport/物料新增',
  exportUrl :'/materialInventory/exportMaterialLogReport/物料新增',
  exportName:t('stockReport.materialAdditionReport'),
  footList:['quantity']
})
</script>
<template>
  <basic-table
      :childrenData="childrenData"/>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/mm/stockReport/MaterialOutboundReport.vue
New file
@@ -0,0 +1,48 @@
<script setup>
import BasicTable from "@/components/BasicTable.vue"
import request from "@/utils/request"
import { ref} from "vue"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateType', width: '120',title:t('warehouseBasicData.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'inventoryId',width: '100', title: t('ingredientsStock.id'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialCode',width: '140', title: t('ingredients.materialCode'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialName',width: '140', title: t('ingredientsStock.materialName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'thickness', width: '150',title: t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'producer', width: '100',title: t('ingredientsStock.producer'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'unit', width:'140', title: t('ingredients.unit'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'singlePieceArea', width:'140', title: t('productStock.singlePieceArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'inventoryArea', width:'140', title: t('productStock.inventoryArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表格表头字段
  data:[],//表格数据
  url :'/materialInventory/getMaterialLogReport/物料出库',
  exportUrl :'/materialInventory/exportMaterialLogReport/物料出库',
  exportName:t('stockReport.materialOutboundReport'),
  footList:['quantity']
})
</script>
<template>
  <basic-table
      :childrenData="childrenData"/>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/mm/stockReport/MaterialReturnReport.vue
New file
@@ -0,0 +1,48 @@
<script setup>
import BasicTable from "@/components/BasicTable.vue"
import request from "@/utils/request"
import { ref} from "vue"
import { useI18n } from 'vue-i18n'
//语言获取
const { t } = useI18n()
const childrenData = ref({
  columns:[
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
    {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateType', width: '120',title:t('warehouseBasicData.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'inventoryId',width: '100', title: t('ingredientsStock.id'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialCode',width: '140', title: t('ingredients.materialCode'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'materialName',width: '140', title: t('ingredientsStock.materialName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'thickness', width: '150',title: t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'producer', width: '100',title: t('ingredientsStock.producer'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'unit', width:'140', title: t('ingredients.unit'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'singlePieceArea', width:'140', title: t('productStock.singlePieceArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'inventoryArea', width:'140', title: t('productStock.inventoryArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
  ],//表格表头字段
  data:[],//表格数据
  url :'/materialInventory/getMaterialLogReport/物料返库',
  exportUrl :'/materialInventory/exportMaterialLogReport/物料返库',
  exportName:t('stockReport.materialReturnReport'),
  footList:['quantity']
})
</script>
<template>
  <basic-table
      :childrenData="childrenData"/>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue
@@ -1,5 +1,5 @@
<script setup>
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {ArrowDown, ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router";
import { useI18n } from 'vue-i18n'
@@ -14,25 +14,62 @@
function changeRouter(index){
  indexFlag=index
}
const handleCommand = (command) => {
  router.push({
    path: command
  })
}
</script>
<template>
  <div id="main-div">
    <div id="div-title">
        <el-breadcrumb :separator-icon="ArrowRight">
<!--          <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''"
                              :to="{path:'/main/stockReport/WarehouseReport'}">原材料报表
          </el-breadcrumb-item>-->
          <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''"
                              :to="{path:'/main/stockReport/stockWarehouseReport'}">{{$t('report.finishedProductReport')}}
          <el-breadcrumb-item
              @click="changeRouter(2)"
              :class="indexFlag===2?'indexTag':''"
          >
            <el-dropdown @command="handleCommand">
            <span class="el-dropdown-link" style="font-weight: 700;outline: none;">
              {{ $t('report.finishedProductReport') }}
              <el-icon class="el-icon--right">
                <arrow-down />
              </el-icon>
            </span>
              <template #dropdown>
                <el-dropdown-menu>
                  <el-dropdown-item command="/main/stockReport/finishedProductInventoryReport" >{{$t('成品入库报表')}}</el-dropdown-item>
                  <el-dropdown-item command="/main/stockReport/finishedProductOutboundReport" >{{ $t('成品出库报表') }}</el-dropdown-item>
                  <el-dropdown-item command="/main/stockReport/finishedProductTransferReport" >{{ $t('成品调拨报表') }}</el-dropdown-item>
                  <el-dropdown-item command="/main/stockReport/finishedProductDeliveryReport" >{{ $t('成品领出报表') }}</el-dropdown-item>
                </el-dropdown-menu>
              </template>
            </el-dropdown>
          </el-breadcrumb-item>
<!--          <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''"
                              :to="{path:'/main/stockReport/StockMonthReport'}">原片月结报表
          <el-breadcrumb-item
              @click="changeRouter(2)"
              :class="indexFlag===2?'indexTag':''"
          >
            <el-dropdown @command="handleCommand">
            <span class="el-dropdown-link" style="font-weight: 700;outline: none;">
              {{ $t('stockReport.page.materialReport') }}
              <el-icon class="el-icon--right">
                <arrow-down />
              </el-icon>
            </span>
              <template #dropdown>
                <el-dropdown-menu>
                  <el-dropdown-item command="/main/stockReport/materialAdditionReport" >{{$t('物料新增报表')}}</el-dropdown-item>
                  <el-dropdown-item command="/main/stockReport/materialOutboundReport" >{{ $t('物料出库报表') }}</el-dropdown-item>
                  <el-dropdown-item command="/main/stockReport/materialReturnReport" >{{ $t('物料返库报表') }}</el-dropdown-item>
                </el-dropdown-menu>
              </template>
            </el-dropdown>
          </el-breadcrumb-item>
          <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''"
                              :to="{path:'/main/stockReport/SubsidiaryMonthReport'}">
            辅料月结报表
          </el-breadcrumb-item>-->
          <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('productStock.reportForms')}}</el-breadcrumb-item>
        </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -388,11 +388,6 @@
            return
          }
          //表头数据校验
          const project = titleUploadData.value.project
          if(project === null || project === undefined || project === ''){
            ElMessage.error(t('delivery.pleaseEnterTheAmountOfFunds'))
            return
          }
          const paymentTerms = titleUploadData.value.paymentTerms
          if(paymentTerms === null || paymentTerms === undefined || paymentTerms === ''){
            ElMessage.error(t('delivery.pleaseSelectPaymentTerms'))
north-glass-erp/src/main/java/com/example/erp/controller/mm/FinishedGoodsInventoryController.java
@@ -164,16 +164,16 @@
    @ApiOperation("成品库存记录查询接口")
    @SaCheckPermission("warehouseReport.search")
    @PostMapping("/getSelectFinishedOperateLogReport/{pageNum}/{pageSize}/{selectDate}")
    public Result getSelectFinishedOperateLogReport(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody FinishedOperateLog finishedOperateLog){
        return Result.seccess(finishedGoodsInventoryService.getSelectFinishedOperateLogReport(pageNum,pageSize,selectDate,finishedOperateLog));
    @PostMapping("/getSelectFinishedOperateLogReport/{type}/{pageNum}/{pageSize}/{selectDate}")
    public Result getSelectFinishedOperateLogReport(@PathVariable String type,@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody FinishedOperateLog finishedOperateLog){
        return Result.seccess(finishedGoodsInventoryService.getSelectFinishedOperateLogReport(type,pageNum,pageSize,selectDate,finishedOperateLog));
    }
    @ApiOperation("成品报表导出")
    @PostMapping("/exportFinishedOperateLogReport")
    public void exportFinishedOperateLogReport(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException {
    @PostMapping("/exportFinishedOperateLogReport/{type}")
    public void exportFinishedOperateLogReport(@PathVariable String type,HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException {
        //参数:相应的数据,实体类信息,相应的方法(数据获取),生成的excel名字
        DownExcel.download(response, FinishedOperateLogDTO.class, finishedGoodsInventoryService.exportFinishedOperateLogReport(dates),"orderReport");
        DownExcel.download(response, FinishedOperateLogDTO.class, finishedGoodsInventoryService.exportFinishedOperateLogReport(dates,type),"orderReport");
    }
north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java
@@ -4,16 +4,21 @@
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.example.erp.common.Constants;
import com.example.erp.common.Result;
import com.example.erp.dto.mm.FinishedOperateLogDTO;
import com.example.erp.entity.mm.*;
import com.example.erp.entity.pp.OptimizeUse;
import com.example.erp.exception.ServiceException;
import com.example.erp.service.mm.MaterialInventoryService;
import com.example.erp.service.mm.MaterialStoreService;
import com.example.erp.tools.DownExcel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@@ -153,6 +158,20 @@
        return   Result.seccess(materialInventoryService.printCreateOutbound(materialOutboundId));
    }
    @ApiOperation("物料库存记录查询接口")
    @SaCheckPermission("warehouseReport.search")
    @PostMapping("/getMaterialLogReport/{type}/{pageNum}/{pageSize}/{selectDate}")
    public Result getMaterialLogReport(@PathVariable String type,@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody MaterialLog materialLog){
        return Result.seccess(materialInventoryService.getMaterialLogReport(type,pageNum,pageSize,selectDate,materialLog));
    }
    @ApiOperation("物料报表导出")
    @PostMapping("/exportMaterialLogReport/{type}")
    public void exportMaterialLogReport(@PathVariable String type, HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException {
        //参数:相应的数据,实体类信息,相应的方法(数据获取),生成的excel名字
        DownExcel.download(response, MaterialLog.class, materialInventoryService.exportMaterialLogReport(dates,type),"orderReport");
    }
north-glass-erp/src/main/java/com/example/erp/entity/mm/MaterialLog.java
@@ -1,5 +1,6 @@
package com.example.erp.entity.mm;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.example.erp.entity.sd.OrderDetail;
@@ -10,24 +11,41 @@
@Data
public class MaterialLog {
    @TableId(type = IdType.AUTO)
    @ExcelProperty("编号")
    private Long id;
    @ExcelProperty("操作单号")
    private String operationOrderNumber;
    @ExcelProperty("类型")
    private String operateType;
    @ExcelProperty("序号")
    private Integer operationNumber;
    @ExcelProperty("库存编号")
    private Long inventoryId;
    @ExcelProperty("物料编码")
    private Long materialCode;
    @ExcelProperty("物料名称")
    private String materialName;
    @ExcelProperty("产地")
    private String producer;
    @ExcelProperty("单位")
    private String unit;
    @ExcelProperty("宽度")
    private Double width;
    @ExcelProperty("高度")
    private Double height;
    @ExcelProperty("厚度")
    private Double thickness;
    @ExcelProperty("数量")
    private Integer quantity;
    @ExcelProperty("单片面积")
    private Double singlePieceArea;
    @ExcelProperty("库存区域")
    private String inventoryArea;
    @ExcelProperty("备注")
    private String remarks;
    @ExcelProperty("操作人")
    private String operator;
    @ExcelProperty("创建时间")
    private LocalDate operateTime;
north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedOperateLogMapper.java
@@ -70,13 +70,13 @@
    List<FinishedOperateLog> getSelectFinishedOperateLogReport(@Param("offset") Integer offset,
                                             @Param("pageSize") Integer pageSize,String startDate, String endDate,
                                             @Param("finishedOperateLog") FinishedOperateLog finishedOperateLog);
                                             @Param("finishedOperateLog") FinishedOperateLog finishedOperateLog,String type);
    Map<String,Integer> getSelectFinishedOperateLogReportPageTotal(@Param("offset") Integer offset,
                                                           @Param("pageSize") Integer pageSize,String startDate, String endDate,
                                                           @Param("finishedOperateLog") FinishedOperateLog finishedOperateLog);
                                                           @Param("finishedOperateLog") FinishedOperateLog finishedOperateLog,String type);
    List<FinishedOperateLogDTO> exportFinishedOperateLogReport(List<LocalDate> dates);
    List<FinishedOperateLogDTO> exportFinishedOperateLogReport(List<LocalDate> dates,String type);
    Boolean insertOrderFinishedOperateLog(@Param("orderDetail") OrderDetail orderDetail,@Param("userName") String userName,@Param("oddNumber") String oddNumber);
north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java
@@ -1,5 +1,6 @@
package com.example.erp.mapper.mm;
import com.example.erp.dto.mm.FinishedOperateLogDTO;
import com.example.erp.entity.mm.*;
import com.example.erp.entity.pp.OptimizeUse;
import com.example.erp.entity.sd.Delivery;
@@ -210,4 +211,14 @@
    MaterialInventory getMaterialInventoryById(@Param("id") Long id);
    List<MaterialLog> getMaterialLogReport(@Param("offset") Integer offset,
                                                               @Param("pageSize") Integer pageSize,String startDate, String endDate,
                                                               @Param("materialLog") MaterialLog materialLog,String type);
    Map<String,Integer> getMaterialLogReportTotal(@Param("offset") Integer offset,
                                                                   @Param("pageSize") Integer pageSize,String startDate, String endDate,
                                                                   @Param("materialLog") MaterialLog materialLog,String type);
    List<MaterialLog> exportMaterialLogReport(List<LocalDate> dates, String type);
}
north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
@@ -649,7 +649,7 @@
        return map;
    }
    public Map<String, Object> getSelectFinishedOperateLogReport(Integer pageNum, Integer pageSize, List<String> selectDate, FinishedOperateLog finishedOperateLog) {
    public Map<String, Object> getSelectFinishedOperateLogReport(String type,Integer pageNum, Integer pageSize, List<String> selectDate, FinishedOperateLog finishedOperateLog) {
        Integer offset = (pageNum-1)*pageSize;
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
@@ -663,8 +663,8 @@
        }
        Map<String, Object> map = new HashMap<>();
        map.put("data", finishedOperateLogMapper.getSelectFinishedOperateLogReport(offset, pageSize,startDate, endDate, finishedOperateLog));
        map.put("total", finishedOperateLogMapper.getSelectFinishedOperateLogReportPageTotal(offset, pageSize,startDate, endDate, finishedOperateLog));
        map.put("data", finishedOperateLogMapper.getSelectFinishedOperateLogReport(offset, pageSize,startDate, endDate, finishedOperateLog,type));
        map.put("total", finishedOperateLogMapper.getSelectFinishedOperateLogReportPageTotal(offset, pageSize,startDate, endDate, finishedOperateLog,type));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
@@ -759,8 +759,8 @@
    }
    public List<FinishedOperateLogDTO> exportFinishedOperateLogReport(List<LocalDate> dates) {
        return finishedOperateLogMapper.exportFinishedOperateLogReport(dates);
    public List<FinishedOperateLogDTO> exportFinishedOperateLogReport(List<LocalDate> dates,String type) {
        return finishedOperateLogMapper.exportFinishedOperateLogReport(dates,type);
    }
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.dto.mm.FinishedOperateLogDTO;
import com.example.erp.entity.mm.*;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.pp.OptimizeUse;
@@ -755,6 +756,33 @@
        return map;
    }
    public Map<String, Object> getMaterialLogReport(String type,Integer pageNum, Integer pageSize, List<String> selectDate, MaterialLog materialLog) {
        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", materialInventoryMapper.getMaterialLogReport(offset, pageSize,startDate, endDate, materialLog,type));
        map.put("total", materialInventoryMapper.getMaterialLogReportTotal(offset, pageSize,startDate, endDate, materialLog,type));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
    public List<MaterialLog> exportMaterialLogReport(List<LocalDate> dates, String type) {
        return materialInventoryMapper.exportMaterialLogReport(dates,type);
    }
north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml
@@ -431,7 +431,7 @@
        from mm.finished_operate_log aa where  aa.status!='已作废') fol
        left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number
        <where>
            date(fol.operate_time)>=#{startDate} and date(fol.operate_time) &lt;= #{endDate}
            date(fol.operate_time)>=#{startDate} and date(fol.operate_time) &lt;= #{endDate} and fol.operate_type=#{type}
            <if test="finishedOperateLog.operateType != null and finishedOperateLog.operateType != ''">
                and fol.operate_type regexp #{finishedOperateLog.operateType}
            </if>
@@ -492,7 +492,7 @@
        from mm.finished_operate_log aa where  aa.status!='已作废') fol
        left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number
        <where>
            date(fol.operate_time)>=#{startDate} and date(fol.operate_time) &lt;= #{endDate}
            date(fol.operate_time)>=#{startDate} and date(fol.operate_time) &lt;= #{endDate} and fol.operate_type=#{type}
            <if test="finishedOperateLog.operateType != null and finishedOperateLog.operateType != ''">
                and fol.operate_type regexp #{finishedOperateLog.operateType}
            </if>
@@ -669,7 +669,7 @@
        from (select *
              from mm.finished_operate_log aa where  aa.status!='已作废') fol
                 left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number
        where  date(fol.operate_time)>=#{dates[0]} and date(fol.operate_time) &lt;= #{dates[1]}
        where  date(fol.operate_time)>=#{dates[0]} and date(fol.operate_time) &lt;= #{dates[1]} and fol.operate_type=#{type}
    </select>
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
@@ -913,5 +913,130 @@
        where mi.id = #{id}
    </select>
    <select id="getMaterialLogReport" >
        select *
        from mm.material_log ml
        <where>
            date(ml.operate_time)>=#{startDate} and date(ml.operate_time) &lt;= #{endDate} and ml.operate_type=#{type}
            <if test="materialLog.operateType != null and materialLog.operateType != ''">
                and ml.operate_type regexp #{materialLog.operateType}
            </if>
            <if test="materialLog.operationOrderNumber != null and materialLog.operationOrderNumber != ''">
                and ml.operation_order_number regexp #{materialLog.operationOrderNumber}
            </if>
            <if test="materialLog.operationNumber != null and materialLog.operationNumber != ''">
                and ml.operation_number regexp #{materialLog.operationNumber}
            </if>
            <if test="materialLog.quantity != null and materialLog.quantity != ''">
                and ml.quantity regexp #{materialLog.quantity}
            </if>
            <if test="materialLog.width != null and materialLog.width != ''">
                and  ml.width regexp  REGEXP_REPLACE(#{materialLog.width},'\\.0+$','')
            </if>
            <if test="materialLog.height != null and materialLog.height != ''">
                and  ml.height regexp  REGEXP_REPLACE(#{materialLog.height},'\\.0+$','')
            </if>
            <if test="materialLog.thickness != null and materialLog.thickness != ''">
                and  ml.thickness regexp  REGEXP_REPLACE(#{materialLog.thickness},'\\.0+$','')
            </if>
            <if test="materialLog.inventoryId != null and materialLog.inventoryId != ''">
                and  ml.inventoryId regexp  #{materialLog.inventoryId}
            </if>
            <if test="materialLog.materialCode != null and materialLog.materialCode != ''">
                and  ml.materialCode regexp  #{materialLog.materialCode}
            </if>
            <if test="materialLog.materialName != null and materialLog.materialName != ''">
                and  ml.materialName regexp  #{materialLog.materialName}
            </if>
            <if test="materialLog.producer != null and materialLog.producer != ''">
                and  ml.producer regexp  #{materialLog.producer}
            </if>
            <if test="materialLog.unit != null and materialLog.unit != ''">
                and  ml.unit regexp  #{materialLog.unit}
            </if>
            <if test="materialLog.singlePieceArea != null and materialLog.singlePieceArea != ''">
                and  ml.singlePieceArea regexp REGEXP_REPLACE(#{materialLog.singlePieceArea},'\\.0+$','')
            </if>
            <if test="materialLog.inventoryArea != null and materialLog.inventoryArea != ''">
                and  ml.inventoryArea regexp  #{materialLog.inventoryArea}
            </if>
            <if test="materialLog.operator != null and materialLog.operator != ''">
                and  ml.operator regexp  #{materialLog.operator}
            </if>
            <if test="materialLog.remarks != null and materialLog.remarks != ''">
                and ml.remarks regexp #{materialLog.remarksr}
            </if>
        </where>
        order by ml.id desc
        limit #{offset},#{pageSize};
    </select>
    <select id="getMaterialLogReportTotal">
        select CEILING(count(ml.id)/#{pageSize}) as 'pageTotal',
        count(ml.id) as 'total'
        from mm.material_log ml
        <where>
            date(ml.operate_time)>=#{startDate} and date(ml.operate_time) &lt;= #{endDate} and ml.operate_type=#{type}
            <if test="materialLog.operateType != null and materialLog.operateType != ''">
                and ml.operate_type regexp #{materialLog.operateType}
            </if>
            <if test="materialLog.operationOrderNumber != null and materialLog.operationOrderNumber != ''">
                and ml.operation_order_number regexp #{materialLog.operationOrderNumber}
            </if>
            <if test="materialLog.operationNumber != null and materialLog.operationNumber != ''">
                and ml.operation_number regexp #{materialLog.operationNumber}
            </if>
            <if test="materialLog.quantity != null and materialLog.quantity != ''">
                and ml.quantity regexp #{materialLog.quantity}
            </if>
            <if test="materialLog.width != null and materialLog.width != ''">
                and  ml.width regexp  REGEXP_REPLACE(#{materialLog.width},'\\.0+$','')
            </if>
            <if test="materialLog.height != null and materialLog.height != ''">
                and  ml.height regexp  REGEXP_REPLACE(#{materialLog.height},'\\.0+$','')
            </if>
            <if test="materialLog.thickness != null and materialLog.thickness != ''">
                and  ml.thickness regexp  REGEXP_REPLACE(#{materialLog.thickness},'\\.0+$','')
            </if>
            <if test="materialLog.inventoryId != null and materialLog.inventoryId != ''">
                and  ml.inventoryId regexp  #{materialLog.inventoryId}
            </if>
            <if test="materialLog.materialCode != null and materialLog.materialCode != ''">
                and  ml.materialCode regexp  #{materialLog.materialCode}
            </if>
            <if test="materialLog.materialName != null and materialLog.materialName != ''">
                and  ml.materialName regexp  #{materialLog.materialName}
            </if>
            <if test="materialLog.producer != null and materialLog.producer != ''">
                and  ml.producer regexp  #{materialLog.producer}
            </if>
            <if test="materialLog.unit != null and materialLog.unit != ''">
                and  ml.unit regexp  #{materialLog.unit}
            </if>
            <if test="materialLog.singlePieceArea != null and materialLog.singlePieceArea != ''">
                and  ml.singlePieceArea regexp REGEXP_REPLACE(#{materialLog.singlePieceArea},'\\.0+$','')
            </if>
            <if test="materialLog.inventoryArea != null and materialLog.inventoryArea != ''">
                and  ml.inventoryArea regexp  #{materialLog.inventoryArea}
            </if>
            <if test="materialLog.operator != null and materialLog.operator != ''">
                and  ml.operator regexp  #{materialLog.operator}
            </if>
            <if test="materialLog.remarks != null and materialLog.remarks != ''">
                and ml.remarks regexp #{materialLog.remarksr}
            </if>
        </where>
    </select>
    <select id="exportMaterialLogReport">
        select * from mm.material_log ml
        where  date(ml.operate_time)>=#{dates[0]} and date(ml.operate_time) &lt;= #{dates[1]} and ml.operate_type=#{type}
    </select>
</mapper>