廖井涛
2025-08-04 855f19dd93d031738388d29b4dc2fd089ef13f02
Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
11个文件已修改
360 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue 197 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetAmount.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/SplittingDetailsOutside.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/Report.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js
@@ -11,6 +11,7 @@
        selectOrderListDate:ref(["",""]),
        reportFormDate:ref(["",""]),
        workOrderDate:ref(["",""]),
        reportingWorkDate:ref(["",""]),
        searchOrderListFilter:ref([]),//订单首页筛选]
        searchOrderFilter:{
            list:ref([]),
@@ -29,6 +30,21 @@
                    productName: '',
                    computeGrossArea: '',
                    processingNote: '',
                }
            }
        },
        //报工查询筛选缓存
        selectReportingWorksFilter:{
            list:ref([]),
            data:{
                order: {
                    project: '',
                    batch:''
                },
                orderGlassDetail: {
                    completedArea:'',
                    wornArea:''
                }
            }
@@ -62,6 +78,7 @@
            this.selectOrderListDate=["",""]
            this.reportFormDate=["",""]
            this.workOrderDate=["",""]
            this.reportingWorkDate=["",""]
            this.searchOrderFilter={
                list:[],
                data:{}
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
@@ -597,49 +597,103 @@
  addListener(xGrid.value,gridOptions,cellArea.value)
  request.post(`/glassOptimize/projectInfo/${projectNo.value}/${username}`).then((res) => {
    if ((Number(res.code) === 200)) {
      const data = res.data.data;
      let data = res.data.data;
      const grindingTrimming = res.data.grindingTrimming;
      optimizeState.value=res.data.optimizeState;
      if(grindingTrimming!==null){
        const formattedData = grindingTrimming.map(item => {
          const formattedItem = {};
          for (const key in item) {
            if (typeof item[key] === 'string') {
              //去除字符串属性值开头和结尾的双引号
              formattedItem[key] = item[key].replace(/^\"|\"$/g, '');
            } else {
              formattedItem[key] = item[key];
      // 加载磨量配置
      loadGrindingConfiguration().then((grindConfig) => {
        console.log("加载的磨量配置:", grindConfig);
        data = data.map(item => {
          // 保留从后端返回的原始磨量值,如果存在的话
          const originalLongGrind1 = item.longGrind1;
          const originalLongGrind2 = item.longGrind2;
          const originalShortGrind1 = item.shortGrind1;
          const originalShortGrind2 = item.shortGrind2;
          // 如果没有原始磨量值,则初始化为0
          item.longGrind1 = originalLongGrind1 !== undefined && originalLongGrind1 !== null ?
              parseFloat(originalLongGrind1) : 0;
          item.longGrind2 = originalLongGrind2 !== undefined && originalLongGrind2 !== null ?
              parseFloat(originalLongGrind2) : 0;
          item.shortGrind1 = originalShortGrind1 !== undefined && originalShortGrind1 !== null ?
              parseFloat(originalShortGrind1) : 0;
          item.shortGrind2 = originalShortGrind2 !== undefined && originalShortGrind2 !== null ?
              parseFloat(originalShortGrind2) : 0;
          // 处理 grindingTrimming 数据(如果存在)
          if(grindingTrimming!==null && grindingTrimming.length > 0){
            const formattedData = grindingTrimming.map(item => {
              const formattedItem = {};
              for (const key in item) {
                if (typeof item[key] === 'string') {
                  //去除字符串属性值开头和结尾的双引号
                  formattedItem[key] = item[key].replace(/^\"|\"$/g, '');
                } else {
                  formattedItem[key] = item[key];
                }
              }
              return formattedItem;
            });
            // 如果有自动填充配置,使用它来设置磨量
            if(formattedData[0].autoFillEdge==="true"){
              const minAutoLenght = parseFloat(formattedData[0].minAutoLenght) || 0;
              const leftEdge = parseFloat(formattedData[0].leftEdge) || 0;
              const rightEdge = parseFloat(formattedData[0].rightEdge) || 0;
              const upEdge = parseFloat(formattedData[0].upEdge) || 0;
              const downEdge = parseFloat(formattedData[0].downEdge) || 0;
              if(item.width >= minAutoLenght){
                item.longGrind1 = leftEdge;
                item.longGrind2 = rightEdge;
              }
              if(item.height >= minAutoLenght){
                item.shortGrind1 = upEdge;
                item.shortGrind2 = downEdge;
              }
            }
          } else if(grindConfig) {
            // 使用从 getConfiguration 接口加载的配置
            if(grindConfig.autoFillEdge==="true"){
              const minAutoLenght = parseFloat(grindConfig.minAutoLenght) || 0;
              const leftEdge = parseFloat(grindConfig.leftEdge) || 0;
              const rightEdge = parseFloat(grindConfig.rightEdge) || 0;
              const upEdge = parseFloat(grindConfig.upEdge) || 0;
              const downEdge = parseFloat(grindConfig.downEdge) || 0;
              if(item.width >= minAutoLenght){
                item.longGrind1 = leftEdge;
                item.longGrind2 = rightEdge;
              }
              if(item.height >= minAutoLenght){
                item.shortGrind1 = upEdge;
                item.shortGrind2 = downEdge;
              }
            }else {
              // 即使没有启用自动填充,也应该应用默认的磨量值
              item.longGrind1 = parseFloat(grindConfig.leftEdge) || 0;
              item.longGrind2 = parseFloat(grindConfig.rightEdge) || 0;
              item.shortGrind1 = parseFloat(grindConfig.upEdge) || 0;
              item.shortGrind2 = parseFloat(grindConfig.downEdge) || 0;
            }
          }
          return formattedItem;
        });
        data.forEach(item => {
          if(formattedData[0].autoFillEdge==="true"){
            if(item.width>=formattedData[0].minAutoLenght){
              item.longGrind1 = formattedData[0].leftEdge;
              item.longGrind2 = formattedData[0].rightEdge;
            }
            if(item.height>=formattedData[0].minAutoLenght){
              item.shortGrind1 = formattedData[0].upEdge;
              item.shortGrind2 = formattedData[0].downEdge;
            }
          }
          item.longGrind1=0
          item.longGrind2=0
          item.shortGrind1=0
          item.shortGrind2=0
          item.height=parseFloat(item.height.toFixed(2))
          item.width=parseFloat(item.width.toFixed(2))
          return item;
        });
      }
      xGrid.value.loadData(data);
      gridOptions.data = data;
      projectName.value = data[0].project_name;
      quantitys.value=res.data.project.glass_total
      areas.value=res.data.project.glass_total_area
        console.log("处理后的数据:", data);
        xGrid.value.loadData(data);
        gridOptions.data = data;
        projectName.value = data[0].project_name;
        quantitys.value=res.data.project.glass_total
        areas.value=res.data.project.glass_total_area
      });
    } else {
      ElMessage.warning(res.msg);
    }
@@ -647,6 +701,7 @@
    console.error("获取数据出错:", error);
  });
};
const firstLoading = async() => {
  request.post(`/glassOptimize/selectOptimizeParms/${username}`).then((res) => {
@@ -701,7 +756,19 @@
// 从子组件SetAmount获取磨量值,并更新表格数据
const Amount = (amountData) => {
  fetchData()
  // fetchData()
  const data = gridOptions.data;
  if (data) {
    const updatedData = data.map(item => ({
      ...item,
      longGrind1: Number(amountData.quicksetTop),
      longGrind2: Number(amountData.quicksetRight),
      shortGrind1: Number(amountData.quicksetBottom),
      shortGrind2: Number(amountData.quicksetLeft)
    }));
    gridOptions.data = updatedData;
    xGrid.value.loadData(updatedData);
  }
  /*nextTick(() => {
    const data = gridOptions.data;
    if (data) {
@@ -731,6 +798,66 @@
  });*/
};
const loadGrindingConfiguration = async () => {
  return new Promise((resolve) => {
    request.post(`/glassOptimize/getConfiguration/磨量/${username}`).then((res) => {
      if (res.code == "200") {
        const rawData = res.data.data;
        if (Array.isArray(rawData) && rawData.length > 0) {
          const formattedData = rawData.map(item => {
            const formattedItem = {};
            for (const key in item) {
              if (typeof item[key] === 'string') {
                //去除字符串属性值开头和结尾的双引号
                formattedItem[key] = item[key].replace(/^\"|\"$/g, '');
              } else {
                formattedItem[key] = item[key];
              }
            }
            return formattedItem;
          });
          resolve(formattedData[0]);
        } else {
          // 提供默认配置
          resolve({
            leftEdge: '0',
            upEdge: '0',
            rightEdge: '0',
            downEdge: '0',
            quickEdge: '1',
            autoFillEdge: 'false',
            minAutoLenght: '0'
          });
        }
      } else {
        ElMessage.warning(res.msg);
        // 提供默认配置
        resolve({
          leftEdge: '0',
          upEdge: '0',
          rightEdge: '0',
          downEdge: '0',
          quickEdge: '1',
          autoFillEdge: 'false',
          minAutoLenght: '0'
        });
      }
    }).catch(() => {
      // 提供默认配置
      resolve({
        leftEdge: '0',
        upEdge: '0',
        rightEdge: '0',
        downEdge: '0',
        quickEdge: '1',
        autoFillEdge: 'false',
        minAutoLenght: '0'
      });
    });
  });
};
//中转站接受SetTrimming的值(设置修边)
const emit = defineEmits([
  'changeDialog',
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetAmount.vue
@@ -146,12 +146,12 @@
    </div>
    <div style="margin-top: 20px">
      <span>鼠标点击蓝色图形区域可快速设置磨量</span>
      <span>鼠标点击蓝色图形区域可快速设置磨量(mm)</span>
      <el-input-number v-model="controlValue" class="quickset" placeholder="0"
                       controls-position="right" :step="0.1" :min="0"></el-input-number>
      <br>
      <div style="margin-top: 30px">
      <span>成品边长大于等于多少时自动填充(单位: mm)</span>
      <span>成品边长大于等于多少时自动填充(mm)</span>
      <el-checkbox v-model="check" style="margin: 5px 0 0 12px;"/>
      <vxe-input style="width: 100px; height: 40px; margin-left: 5px" v-model="minAutoLenght" placeholder=""/>
      </div>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue
@@ -136,11 +136,11 @@
    </div>
    <div>
      <span>鼠标点击蓝色图形区域可快速设置修边量</span>
      <span>鼠标点击蓝色图形区域可快速设置修边量(mm)</span>
      <el-input-number v-model="controlValue" class="quickset" placeholder="0"
                       controls-position="right" :step="0.1" :min="0"></el-input-number>
                       controls-position="right" :step="1" :min="0"></el-input-number>
      <br>
      <span>查询原片时自动填充(单位: mm)</span>
      <span>查询原片时自动填充(mm)</span>
      <el-checkbox v-model="check" style="margin: 20px 0 0 117px;"/>
    </div>
  </div>
north-glass-erp/northglass-erp/src/views/pp/report/SplittingDetailsOutside.vue
@@ -207,7 +207,8 @@
    {
      field: 'processId', width: 135, title: t('processCard.processId'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
      filterMethod: filterChanged,
      sortable: true,
    },
    {
      field: 'orderNumber',
@@ -216,12 +217,14 @@
      showOverflow: "ellipsis",
      filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
      filterMethod: filterChanged,
      sortable: true,
    },
    {
      field: 'technologyNumber', width: 130, title: t('processCard.technologyNumber'), filters: [{data: ''}],
      slots: {filter: 'num1_filter'},
      filterMethod: filterChanged
      filterMethod: filterChanged,
      sortable: true,
    },
    {
      field: 'project', width: 120, title: t('order.project'), filters: [{data: ''}],
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
@@ -1,6 +1,6 @@
<script setup>
import {reactive, ref} from "vue";
import {onMounted, reactive, ref} from "vue";
import {useRouter} from  'vue-router'
import request from "@/utils/request";
import deepClone from "@/utils/deepClone";
@@ -11,12 +11,14 @@
import useUserInfoStore from "@/stores/userInfo";
import footSum from "@/hook/footSum"
import userInfo from "@/stores/userInfo"
import useOrderInfoStore from "@/stores/sd/order/orderInfo";
//语言获取
const { t } = useI18n()
const userStore = useUserInfoStore()
let router=useRouter()
const user=userInfo()
const orderInfo = useOrderInfoStore()
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
@@ -118,38 +120,37 @@
// 使用 setDate 方法加一天
date.setDate(date.getDate() + 1);
let newEndTime = date.toISOString().split('T')[0]; // 获取 YYYY-MM-DD 格式的字符串
const getReportingWorkList = async () => {
//第一次加载数据
request.post(`/reportingWork/selectReportingWork/1/${total.pageSize}/${startTime}/${newEndTime}/${inputVal}`, filterData.value).then((res) => {
  await request.post(`/reportingWork/selectReportingWork/1/${total.pageSize}/${orderInfo.reportingWorkDate}/${inputVal}`, filterData.value).then((res) => {
  if (res.code == 200) {
    total.dataTotal = res.data.total.total*1
    total.pageTotal= res.data.total.pageTotal
    pageTotal.value = res.data.total
    total.value = res.data.total
    produceList = produceList.value.concat(deepClone(res.data.data))
    // 使用map方法来处理每个对象
    let modifiedCollection = produceList.map(item => {
      if (item.reviewedState === 1) {
        return { ...item, reviewedState: "已审核" };
      }
      else if (item.reviewedState === 0) {
        return { ...item, reviewedState: "未审核" };
      }
      else if (item.reviewedState === 2){
        return { ...item, reviewedState: "审核不通过" };
      }
      else {
        // 其他情况保持不变
        return item;
      }
    });
    xGrid.value.loadData(modifiedCollection)
    gridOptions.loading = false
  } else {
    ElMessage.warning(res.msg)
  }
})
    if (res.code == 200) {
      total.dataTotal = res.data.total.total * 1
      total.pageTotal = res.data.total.pageTotal
      orderInfo.reportingWorkDate = res.data.selectDate
      pageTotal.value = res.data.total
      total.value = res.data.total
      produceList = produceList.value.concat(deepClone(res.data.data))
      // 使用map方法来处理每个对象
      let modifiedCollection = produceList.map(item => {
        if (item.reviewedState === 1) {
          return {...item, reviewedState: "已审核"};
        } else if (item.reviewedState === 0) {
          return {...item, reviewedState: "未审核"};
        } else if (item.reviewedState === 2) {
          return {...item, reviewedState: "审核不通过"};
        } else {
          // 其他情况保持不变
          return item;
        }
      });
      xGrid.value.loadData(modifiedCollection)
      gridOptions.loading = false
    } else {
      ElMessage.warning(res.msg)
    }
  })
}
//页脚翻页查询
const selectPageList = ()=>{
  let startTime = form.date1[0]
@@ -163,7 +164,7 @@
  date.setDate(date.getDate() + 1);
  let newEndTime = date.toISOString().split('T')[0]; // 获取 YYYY-MM-DD 格式的字符串
  gridOptions.loading=true
  request.post(`/reportingWork/selectReportingWork/${pageNum.value}/${total.pageSize}/${startTime}/${newEndTime}/${inputVal}`,filterData.value).then((res) => {
  request.post(`/reportingWork/selectReportingWork/${pageNum.value}/${total.pageSize}/${orderInfo.reportingWorkDate}/${inputVal}`,filterData.value).then((res) => {
    if(res.code==200){
      total.value = res.data.total
@@ -205,7 +206,7 @@
// 使用 setDate 方法加一天
  date.setDate(date.getDate() + 1);
  let newEndTime = date.toISOString().split('T')[0]; // 获取 YYYY-MM-DD 格式的字符串
  request.post(`/reportingWork/selectReportingWork/${pageNum.value}/${total.pageSize}/${startTime}/${newEndTime}/${inputVal}`, filterData.value).then((res) => {
  request.post(`/reportingWork/selectReportingWork/${pageNum.value}/${total.pageSize}/${orderInfo.reportingWorkDate}/${inputVal}`, filterData.value).then((res) => {
    if (res.code == 200) {
      total.dataTotal = res.data.total.total*1
      total.pageTotal= res.data.total.pageTotal
@@ -271,7 +272,7 @@
// 使用 setDate 方法加一天
  date.setDate(date.getDate() + 1);
  let newEndTime = date.toISOString().split('T')[0]; // 获取 YYYY-MM-DD 格式的字符串
  request.post(`/reportingWork/selectReportingWork/1/${total.pageSize}/${startTime}/${newEndTime}/${inputVal}`, filterData.value).then((res) => {
  request.post(`/reportingWork/selectReportingWork/1/${total.pageSize}/${orderInfo.reportingWorkDate}/${inputVal}`, filterData.value).then((res) => {
    if(res.code==200){
      total.dataTotal = res.data.total.total*1
      total.pageTotal=parseInt(res.data.total)
@@ -296,6 +297,8 @@
      });
      xGrid.value.loadData(modifiedCollection)
      gridOptions.loading=false
      orderInfo.selectReportingWorksFilter.list = xGrid.value.getCheckedFilters()
      orderInfo.selectReportingWorksFilter.data = filterData.value
    }else{
      ElMessage.warning(res.msg)
    }
@@ -392,14 +395,20 @@
})
onMounted(async () => {
  filterData.value = orderInfo.selectReportingWorksFilter.data
  await getReportingWorkList()
  orderInfo.selectReportingWorksFilter.list.forEach(item => {
    xGrid.value.getColumnByField(item.field).filters = item.column.filters
  })
})
</script>
<template>
  <div  style="width: 100%;height: 100%">
    <div class="head">
        <el-date-picker
            v-model="form.date1"
            v-model="orderInfo.reportingWorkDate"
            type="daterange"
            format="YYYY/MM/DD"
            value-format="YYYY-MM-DD"
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java
@@ -14,6 +14,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import java.sql.Date;
@RestController
@@ -73,15 +74,14 @@
    @ApiOperation("报工查询接口")
    @SaCheckPermission("selectReportingWorks.search")
    @PostMapping  ("/selectReportingWork/{pageNum}/{pageSize}/{selectTime1}/{selectTime2}/{orderId}")
    @PostMapping  ("/selectReportingWork/{pageNum}/{pageSize}/{selectDate}/{orderId}")
    public Result selectReportingWork(
            @PathVariable Integer pageNum,
            @PathVariable Integer pageSize,
            @PathVariable Date selectTime1,
            @PathVariable Date selectTime2,
            @PathVariable List<String> selectDate,
            @PathVariable String orderId,
            @RequestBody ReportingWork reportingWork){
        return Result.seccess(reportingWorkService.selectReportingWorkSv(pageNum,pageSize,selectTime1,selectTime2,orderId,reportingWork));
        return Result.seccess(reportingWorkService.selectReportingWorkSv(pageNum,pageSize,selectDate,orderId,reportingWork));
    }
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java
@@ -65,7 +65,7 @@
    Boolean updateInventoryQuantity(String processId, Object orderNumber, Object technologyNumber, Object completedQuantity);
    List<ReportingWork> selectReportingWorkMp(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, String orderId, ReportingWork reportingWork);
    List<ReportingWork> selectReportingWorkMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, ReportingWork reportingWork);
    List<ReportingWork> selectQualityTestingMp(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, Integer state, String processId, ReportingWork reportingWork);
@@ -101,7 +101,7 @@
    String selectOrderid(String processIdStr);
    Map<String,Float> getFootSum(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, String orderId, ReportingWork reportingWork);
    Map<String,Float> getFootSum(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, ReportingWork reportingWork);
    Integer selectReviewedState(String reportingWorkId);
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -587,15 +587,29 @@
    }
    //报工管理查询
    public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, java.sql.Date selectTime1, java.sql.Date selectTime2, String orderId, ReportingWork reportingWork) {
    public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, List<String> selectDate, String orderId, ReportingWork reportingWork) {
        Integer offset = (pageNum - 1) * pageSize;
        if ("null".equals(orderId)) {
            orderId = "";
        }
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(3).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", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
        map.put("data", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, startDate, endDate, orderId, reportingWork));
       // map.put("total", reportingWorkMapper.getPageTotal(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
        map.put("total" ,reportingWorkMapper.getFootSum(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
        map.put("total" ,reportingWorkMapper.getFootSum(offset, pageSize, startDate, endDate, orderId, reportingWork));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -582,7 +582,7 @@
          AND o.create_time &lt;  #{selectTime2}
          and position(#{orderId} in od.order_id)
          and position(#{inputProject} in o.project)
          and fc.quantity - odpd.reporting_work_num>0
          and GREATEST(fc.quantity - odpd.reporting_work_num, 0)>0
        group by fc.process_id, fc.order_number, fc.technology_number
        order by fc.process_id, fc.order_number, fc.technology_number
@@ -1464,6 +1464,7 @@
        rw.reviewed,
        rw.examine_time,
        rw.device_name,
        o.order_type,
        --         GROUP_CONCAT(ogd.glass_child SEPARATOR '+') as workProcessName
        CASE
        WHEN LOCATE('step',#{laminating})>0 THEN GROUP_CONCAT(ogd.glass_child SEPARATOR '+')
@@ -2749,7 +2750,7 @@
                                        AND cb.technology_number = b.technology_number
                             where a.processing_card>0
                               and a.warehousing!=2
                                and (c.quantity-b.reporting_work_num_count)>0
                                and (c.quantity-b.reporting_work_num)>0
                             GROUP BY  b.process_id, b.order_number,
                                 b.technology_number) as f
                                LEFT JOIN sd.order_process_detail as e
@@ -2839,7 +2840,7 @@
        AND cb.technology_number = b.technology_number
        where a.processing_card>0
        and a.warehousing!=2
        and (c.quantity-b.reporting_work_num_count)>0
        and (c.quantity-b.reporting_work_num)>0
        GROUP BY  b.process_id, b.order_number,
        b.technology_number) as f
        LEFT JOIN sd.order_process_detail as e
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -540,8 +540,8 @@
            left join sd.`order` as o on o.order_id=rw.order_id
        where rw.reviewed_state != 2
          and rw.reporting_work_time >= #{selectTime1}
    AND rw.reporting_work_time &lt;  #{selectTime2}
          and date(rw.reporting_work_time) >= date(#{selectTime1})
    AND date(rw.reporting_work_time) &lt;=  date(#{selectTime2})
          and position(#{orderId} in rw.order_id)
          and rw.reviewed_state!=-1
          and o.create_order>0
@@ -552,7 +552,8 @@
            and o.order_id regexp #{reportingWork.orderId}
        </if>
        <if test="reportingWork.processId != null and reportingWork.processId != ''">
            and rw.process_id regexp #{reportingWork.processId}
            and CONCAT(rw.process_id,'/',rwd.goup) LIKE CONCAT('%', #{reportingWork.processId}, '%')
        </if>
        <if test="reportingWork.order.project != null and reportingWork.order.project != ''">
            and o.project regexp #{reportingWork.order.project}