14个文件已修改
1个文件已添加
401 ■■■■ 已修改文件
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderProcessCollect.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/companySet/温州巨星.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/productStock/ProductStockList.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue 138 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/pom.xml 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/lib/aspose-cad-21.11.jar 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/Report.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -4,7 +4,6 @@
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
@@ -97,7 +97,8 @@
let props = defineProps({
  orderId:null,
  row: {}
  row: {},
  processId:null//用于后端数据返回,结果筛选
})
const columns = [
  {field: 'order_number',fixed:"left", width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
north-glass-erp/northglass-erp/src/components/sd/order/OrderProcessCollect.vue
@@ -86,7 +86,8 @@
let props = defineProps({
  orderId:null,
  row: {}
  row: {},
  processId:null//用于后端数据返回,结果筛选
})
const columns = [
  {field: 'product_name', width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
@@ -148,7 +149,13 @@
        item.reportWorkQuantityCount=JSON.parse(item.reportWorkQuantityCount)
         item.reportWorkQuantityShow=JSON.parse(item.reportWorkQuantityShow)
      })
      await xGrid.value.loadData(res.data.data)
      console.log(res.data.data)
      if (props.processId!=null && props.processId!=""){
        const processIdData = res.data.data.filter(item => item.process_id === props.processId)
        await xGrid.value.loadData(processIdData)
      }else {
        await xGrid.value.loadData(res.data.data)
      }
      mergeCells.value = res.data.mergeCells
      gridOptions.loading = false
north-glass-erp/northglass-erp/src/stores/sd/companySet/ÎÂÖݾÞÐÇ.js
@@ -48,7 +48,7 @@
        materialOutboundColor:false,//库存查询入库超过一定时间改变颜色,洛阳true,其他false
        storageBtn:true,//是否显示报工入库相关内容,洛阳true,其他false
        teamsType:true,//是否开启班组下拉框,洛阳true,其他false
        alienFunction:false,//是否开启异形功能,暂时都是false
        alienFunction:true,//是否开启异形功能,暂时都是false
        replenishQRCode:1,//是否补片二维码是否拆分层,1拆分,2不拆
        soleQRCode:false,//流程卡合并二维码显示单层,义乌true.其它false
        //天津
north-glass-erp/northglass-erp/src/views/mm/productStock/ProductStockList.vue
@@ -236,7 +236,7 @@
    {field: 'area',width: '100', title: t('productStock.totalArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'computeArea',width: '140', title: t('order.computeArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'computeGrossArea',width: '100', title: t('order.computeGrossArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'weight',width: '100', title: t('processCard.weight'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'weight',width: '100', title: t('processCard.weight')},
    {field: 'storageRegion',width: '100', title: t('productStock.inventoryArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'status',width: '100', title: t('productStock.status'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue
@@ -71,9 +71,9 @@
      </div>
    </div>
<!--    <button @click="submitLayouts" style="position: fixed; top: 90px; right: 20px; padding: 10px; background: #409eff; color: white; border: none; border-radius: 5px; cursor: pointer;">-->
<!--      ä¿å­˜è°ƒæ•´-->
<!--    </button>-->
    <button @click="submitLayouts" style="position: fixed; top: 90px; right: 20px; padding: 10px; background: #409eff; color: white; border: none; border-radius: 5px; cursor: pointer;">
      ä¿å­˜è°ƒæ•´
    </button>
  </div>
</template>
@@ -119,10 +119,10 @@
const submitLayouts = async () => {
  layouts.value.forEach(layout => {
    layout.glassDetails.forEach(glassDetail => {
      glassDetail.x = Math.round(glassDetail.x);
      glassDetail.y = Math.round(glassDetail.y);
      glassDetail.width = Math.round(glassDetail.width);
      glassDetail.height = Math.round(glassDetail.height);
      glassDetail.x = parseFloat(glassDetail.x.toFixed(2));
      glassDetail.y = parseFloat(glassDetail.y.toFixed(2));
      glassDetail.width = parseFloat(glassDetail.width.toFixed(2));
      glassDetail.height = parseFloat(glassDetail.height.toFixed(2));
    });
  });
  const savedProjectNo = localStorage.getItem('projectNo');
@@ -596,6 +596,9 @@
      glassDetail.glassPoint.forEach(point => {
        point.X += offsetX;
        point.Y += offsetY;
        // æ·»åŠ ç²¾åº¦æŽ§åˆ¶
        point.X = parseFloat(point.X.toFixed(2));
        point.Y = parseFloat(point.Y.toFixed(2));
      });
    }
@@ -619,8 +622,8 @@
      (props.gh - 100) / layout.height
    );
    glassDetail.x = Math.round(glassDetail.x);
    glassDetail.y = Math.round(glassDetail.y);
    glassDetail.x = parseFloat(glassDetail.x.toFixed(2));
    glassDetail.y = parseFloat(glassDetail.y.toFixed(2));
    adjustAlignmentPosition(layoutIndex, rectIndex);
  }
@@ -700,10 +703,10 @@
    else {
      // æ— æ³•合并,保存当前矩形,开始新的合并
      merged.push({
        x: Math.round(current.x),
        y: Math.round(current.y),
        width: Math.round(current.width),
        height: Math.round(current.height),
        x: current.x,
        y: current.y,
        width: current.width,
        height: current.height,
        isRemain: true
      });
      current = { ...next };
@@ -712,10 +715,10 @@
  // æ·»åŠ æœ€åŽä¸€ä¸ªçŸ©å½¢
  merged.push({
    x: Math.round(current.x),
    y: Math.round(current.y),
    width: Math.round(current.width),
    height: Math.round(current.height),
    x: current.x,
    y: current.y,
    width: current.width,
    height: current.height,
    isRemain: true
  });
@@ -771,10 +774,10 @@
  // æ·»åŠ æ–°çš„ä½™æ–™çŸ©å½¢
  uniqueArr.forEach((area) => {
    newGlassDetails.push({
      x: Math.round(area.x),
      y: Math.round(area.y),
      width: Math.round(area.width),
      height: Math.round(area.height),
      x: area.x,
      y: area.y,
      width: area.width,
      height: area.height,
      isRemain: true
    });
  });
@@ -849,6 +852,9 @@
        // æ—‹è½¬90度后的坐标(顺时针)
        point.X = originalState.x + relY;
        point.Y = originalState.y + (originalState.width - relX);
        // æ·»åŠ ç²¾åº¦æŽ§åˆ¶
        point.X = parseFloat(point.X.toFixed(2));
        point.Y = parseFloat(point.Y.toFixed(2));
      });
    }
    adjustGrayRectangles(layoutIndex);
@@ -958,6 +964,9 @@
      glassDetail.glassPoint.forEach(point => {
        point.X += offsetX;
        point.Y += offsetY;
        // æ·»åŠ ç²¾åº¦æŽ§åˆ¶
        point.X = parseFloat(point.X.toFixed(2));
        point.Y = parseFloat(point.Y.toFixed(2));
      });
    }
    adjustGrayRectangles(layoutIndex);
@@ -1213,6 +1222,8 @@
    if (glassDetail.glassPoint && Array.isArray(glassDetail.glassPoint)) {
      glassDetail.glassPoint.forEach(point => {
        point.X = width - point.X;
        point.X = parseFloat(point.X.toFixed(2));
        point.Y = parseFloat(point.Y.toFixed(2));
      });
    }
  });
@@ -1240,6 +1251,9 @@
    if (glassDetail.glassPoint && Array.isArray(glassDetail.glassPoint)) {
      glassDetail.glassPoint.forEach(point => {
        point.Y = height - point.Y;
        // æ·»åŠ ç²¾åº¦æŽ§åˆ¶
        point.X = parseFloat(point.X.toFixed(2));
        point.Y = parseFloat(point.Y.toFixed(2));
      });
    }
  });
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
@@ -116,7 +116,7 @@
      sortable: true
    },
    {
      field: 'product_name',
      field: 'productName',
      width: 150,
      title: t('order.product'),
      filters: [{data: ''}],
@@ -140,7 +140,7 @@
      sortable: true
    },
    {
      field: 'building_number',
      field: 'buildingNumber',
      width: 150,
      title: '楼层号',
      filters: [{data: ''}],
@@ -189,7 +189,7 @@
      sortable: true
    },
    {
      field: 'icon',
      field: 'markIcon',
      width: 150,
      title: '印标类型',
      filters: [{data: ''}],
@@ -485,103 +485,47 @@
    }
    emit('getSmallPieceData', 1);
    optimizeData.value.glassDetails = [];
    // ä»ŽåŽç«¯æŽ¥å£èŽ·å– glassDetail æ•°æ®ï¼Œè€Œä¸æ˜¯ä»Žè¡¨æ ¼ä¸­è¯»å–
    fetchGlassDetailData();
    // ä»Žè¡¨æ ¼ä¸­èŽ·å– glassDetail æ•°æ®ï¼Œè€Œä¸æ˜¯ä»ŽåŽç«¯æŽ¥å£è¯»å–
    const tableData = xGrid.value.getTableData().fullData;
    const glassDetailData = tableData.map(item => {
      let rackNoValue = 0;
      if (item.rackNo !== undefined && item.rackNo !== null && item.rackNo !== '') {
        rackNoValue = item.rackNo;
      }
      return {
        width: item.width,
        height: item.height,
        processId: item.processId,
        layer: item.layer,
        totalLayer: item.totalLayer,
        orderSort: item.order_number,
        markIcon: item.markIcon,
        quantity: item.quantity,
        patchState: item.patchState,
        upGrind: item.longGrind1,
        downGrind: item.longGrind2,
        leftGrind: item.shortGrind1,
        rightGrind: item.shortGrind2,
        heatLayoutId: item.heatLayoutId,
        process: item.process,
        orderNo: item.orderNo,
        customerName: item.customerName,
        processingNote: item.processingNote,
        projectName: item.projectName,
        productName: item.productName,
        buildingNumber: item.buildingNumber,
        rackNo: rackNoValue
      };
    });
    // xGrid.value.getTableData().fullData.forEach(items=>{
    //   let rackNoValue = 0;
    //   if (items.rackNo !== undefined && items.rackNo !== null && items.rackNo !== '') {
    //     rackNoValue = items.rackNo;
    //   }
    //   const detail={
    //     width :null,
    //     height :null,
    //     processId :null,
    //     layer :null,
    //     totalLayer :null,
    //     orderSort :null,
    //     markIcon :null,
    //     quantity:null,
    //     patchState :null,
    //     upGrind :null,
    //     downGrind :null,
    //     leftGrind:null,
    //     rightGrind :null,
    //     rackNo: rackNoValue
    //   }
    //   detail.width=items.width
    //   detail.height=items.height
    //   detail.processId=items.process_ids
    //   detail.layer=items.layer
    //   detail.totalLayer=items.total_layer
    //   detail.orderSort=items.order_number
    //   detail.markIcon=items.icon
    //   detail.patchState=items.patch_state
    //   detail.quantity=items.quantity
    //   detail.upGrind=items.longGrind1
    //   detail.downGrind=items.longGrind2
    //   detail.leftGrind=items.shortGrind1
    //   detail.rightGrind=items.shortGrind2
    //   detail.rackNo=items.rackNo
    //
    //   optimizeData.value.glassDetails .push(detail)
    // })
    // æ›´æ–° optimizeData ä¸­çš„ glassDetails
    optimizeData.value.glassDetails = glassDetailData;
    // æ‰“开优化对话框
    dialogVisible.value[4] = true;
  }else{
    dialogVisible.value[index] = true;
  }
};
const fetchGlassDetailData = async () => {
  try {
    const res = await request.post(`/glassOptimize/optimizeInfo/${projectNo.value}/${username}`);
    console.log(res);
    if (res.code === "200" && res.data && res.data.data) {
      // å¤„理从后端获取的数据
      const glassDetailData = res.data.data.map(item => {
        let rackNoValue = 0;
        if (item.rackNo !== undefined && item.rackNo !== null && item.rackNo !== '') {
          rackNoValue = item.rackNo;
        }
        return {
          width: item.width,
          height: item.height,
          processId: item.processId,
          layer: item.layer,
          totalLayer: item.totalLayer,
          orderSort: item.order_number,
          markIcon: item.markIcon,
          quantity: item.quantity,
          patchState: item.patchState,
          upGrind: item.upGrind,
          downGrind: item.downGrind,
          leftGrind: item.leftGrind,
          rightGrind:item.rightGrind,
          heatLayoutId:item.heatLayoutId,
          process:item.process,
          orderNo:item.orderNo,
          customerName:item.customerName,
          processingNote:item.processingNote,
          projectName:item.projectName,
          productName:item.productName,
          buildingNumber:item.buildingNumber,
          rackNo: rackNoValue
        };
      });
      // æ›´æ–° optimizeData ä¸­çš„ glassDetails
      optimizeData.value.glassDetails = glassDetailData;
      // æ‰“开优化对话框
      dialogVisible.value[4] = true;
      console.log('获取到的 glassDetail æ•°æ®:', glassDetailData);
    } else {
      ElMessage.error('获取玻璃详情数据失败');
    }
  } catch (error) {
    console.error('获取 glassDetail æ•°æ®å‡ºé”™:', error);
    ElMessage.error('获取玻璃详情数据时发生错误');
  }
};
@@ -727,7 +671,7 @@
const fetchData = () => {
  //启用表格拖动选中
  addListener(xGrid.value,gridOptions,cellArea.value)
  request.post(`/glassOptimize/projectInfo/${projectNo.value}/${username}`).then((res) => {
  request.post(`/glassOptimize/optimizeInfo/${projectNo.value}/${username}`).then((res) => {
    if ((Number(res.code) === 200)) {
      let data = res.data.data;
      const grindingTrimming = res.data.grindingTrimming;
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
@@ -19,6 +19,7 @@
import useOrderInfoStore from "@/stores/sd/order/orderInfo"
import {Printer} from "@element-plus/icons-vue/global";
import SelectProcessCardDetail from "@/components/pp/SelectProcessCardDetail.vue";
import OrderProcessCollect from "@/components/sd/order/OrderProcessCollect.vue";
//语言获取
const {t} = useI18n()
@@ -28,6 +29,7 @@
let productGlassTypeStore = useProductGlassTypeStore()
const dialogTableVisible = ref(false)
const dialogProcess = ref(false)
let router = useRouter()
let props = defineProps({
  rowIndex: {}
@@ -104,6 +106,12 @@
  }
})
//流程卡进度用值
let processVal = ref({
  orderId:null,
  row: {},
  processId:null//用于后端数据返回,结果筛选
})
//定义页面总页数
let pageTotal = ref('')
//定义数据返回结果
@@ -130,7 +138,6 @@
      pageTotal.value = res.data.total
      total.value = res.data.total
      produceList.value = produceList.value.concat(deepClone(res.data.data))
      console.log(produceList.value)
      produceList.value.forEach(item => {
        switch (item.layoutStatus) {
          case "0":
@@ -589,6 +596,12 @@
  })
}
const onCellDblClick = ({ row, column }) => {
  processVal.value.orderId = row.orderId
  processVal.value.processId = row.processId
  dialogProcess.value = true
};
</script>
<template>
@@ -623,6 +636,7 @@
          v-bind="gridOptions"
          v-on="gridEvents"
          @filter-change="filterChanged"
          @cell-dblclick="onCellDblClick"
      >
        <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
@@ -709,6 +723,20 @@
    <el-dialog
        id="sizePrintCalrd"
        v-model="dialogProcess"
        :title="$t('order.processCardCollect')"
        destroy-on-close
        style="width: 75%;height:75% ">
      <order-process-collect
          :orderId="processVal.orderId"
          :processId="processVal.processId"
          :row="processVal.row"
          style="width: 100%;height: 100%"
      />
    </el-dialog>
    <el-dialog
        id="sizePrintCalrd"
        v-model="dialogTableVisible"
        :title="$t('processCard.combinedFrame')"
        destroy-on-close
north-glass-erp/pom.xml
@@ -164,9 +164,11 @@
        </dependency>
        <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-cad</artifactId>
            <groupId>com.example</groupId>
            <artifactId>lib</artifactId>
            <version>21.11</version>
            <scope>system</scope>
            <systemPath>${pom.basedir}/src/main/resources/lib/aspose-cad-21.11.jar</systemPath>
        </dependency>
        <!--redis-->
@@ -216,15 +218,15 @@
    </build>
    <repositories>
        <repository>
            <id>aspose-maven-repository</id>
            <url>https://releases.aspose.com/java/repo</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
<!--    <repositories>-->
<!--        <repository>-->
<!--            <id>aspose-maven-repository</id>-->
<!--            <url>https://releases.aspose.com/java/repo</url>-->
<!--            <snapshots>-->
<!--                <enabled>false</enabled>-->
<!--            </snapshots>-->
<!--        </repository>-->
<!--    </repositories>-->
<!--    <pluginRepositories>-->
<!--        <pluginRepository>-->
north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
@@ -657,7 +657,10 @@
                }
            }
        }
        map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString()));
        map.put("data", dataList);
        map.put("project", glassOptimizeMapper.selectProjectCount(projectNo));
        map.put("grindingTrimming", glassOptimizeMapper.getGrindingTrimming(username));
        return map;
    }
north-glass-erp/src/main/resources/lib/aspose-cad-21.11.jar
Binary files differ
north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
@@ -881,51 +881,49 @@
        <where>
                and fgi.status = 0 and fgi.quantity_available>0 and o.create_order>0
            <if test="finishedGoodsInventory.orderDetail.width != null and finishedGoodsInventory.orderDetail.width != ''">
                and od.width regexp #{finishedGoodsInventory.orderDetail.width}
                and od.width regexp REGEXP_REPLACE(#{finishedGoodsInventory.orderDetail.width},'\\.0+$','')
            </if>
            <if test="finishedGoodsInventory.orderDetail.orderNumber != null and finishedGoodsInventory.orderDetail.orderNumber != ''">
                and od.order_number regexp #{finishedGoodsInventory.orderDetail.orderNumber}
                and od.order_number like concat('%', #{finishedGoodsInventory.orderDetail.orderNumber}, '%')
            </if>
            <if test="finishedGoodsInventory.orderDetail.productName != null and finishedGoodsInventory.orderDetail.productName != ''">
                and od.product_name regexp #{finishedGoodsInventory.orderDetail.productName}
                and od.product_name like concat('%', #{finishedGoodsInventory.orderDetail.productName}, '%')
            </if>
            <if test="finishedGoodsInventory.orderDetail.productId != null and finishedGoodsInventory.orderDetail.productId != ''">
                and od.product_id regexp #{finishedGoodsInventory.orderDetail.productId}
                and od.product_id like concat('%', #{finishedGoodsInventory.orderDetail.productId}, '%')
            </if>
            <if test="finishedGoodsInventory.orderDetail.buildingNumber != null and finishedGoodsInventory.orderDetail.buildingNumber != ''">
                and od.building_number regexp #{finishedGoodsInventory.orderDetail.buildingNumber}
                and od.building_number like concat('%', #{finishedGoodsInventory.orderDetail.buildingNumber}, '%')
            </if>
            <if test="finishedGoodsInventory.order.orderId != null and finishedGoodsInventory.order.orderId != ''">
                and o.order_id regexp #{finishedGoodsInventory.order.orderId}
                and o.order_id like concat('%', #{finishedGoodsInventory.order.orderId}, '%')
            </if>
            <if test="finishedGoodsInventory.order.project != null and finishedGoodsInventory.order.project != ''">
                and o.project regexp #{finishedGoodsInventory.order.project}
                and o.project like concat('%', #{finishedGoodsInventory.order.project}, '%')
            </if>
            <if test="finishedGoodsInventory.order.orderType != null and finishedGoodsInventory.order.orderType != ''">
                and o.order_type regexp #{finishedGoodsInventory.order.orderType}
                and o.order_type like concat('%', #{finishedGoodsInventory.order.orderType}, '%')
            </if>
            <if test="finishedGoodsInventory.order.customerId != null and finishedGoodsInventory.order.customerId != ''">
                and o.customer_id regexp #{finishedGoodsInventory.order.customerId}
                and o.customer_id like concat('%', #{finishedGoodsInventory.order.customerId}, '%')
            </if>
            <if test="finishedGoodsInventory.order.customerName != null and finishedGoodsInventory.order.customerName != ''">
                and o.customer_name regexp #{finishedGoodsInventory.order.customerName}
                and o.customer_name like concat('%', #{finishedGoodsInventory.order.customerName}, '%')
            </if>
            <if test="finishedGoodsInventory.order.batch != null and finishedGoodsInventory.order.batch != ''">
                and o.batch regexp #{finishedGoodsInventory.order.batch}
                and o.batch like concat('%', #{finishedGoodsInventory.order.batch}, '%')
            </if>
            <if test="finishedGoodsInventory.order.salesman != null and finishedGoodsInventory.order.salesman != ''">
                and o.salesman regexp #{finishedGoodsInventory.order.salesman}
                and o.salesman like concat('%', #{finishedGoodsInventory.order.salesman}, '%')
            </if>
            <if test="finishedGoodsInventory.orderDetail.height != null and finishedGoodsInventory.orderDetail.height != ''">
                and od.height regexp REGEXP_REPLACE(#{finishedGoodsInventory.orderDetail.height},'\\.0+$','')
            </if>
            <if test="finishedGoodsInventory.inventory != null and finishedGoodsInventory.inventory != ''">
                and fgi.inventory regexp #{finishedGoodsInventory.inventory}
                and fgi.inventory like concat('%', #{finishedGoodsInventory.inventory}, '%')
            </if>
            <if test="finishedGoodsInventory.quantityAvailable != null and finishedGoodsInventory.quantityAvailable != ''">
                and fgi.quantity_available regexp #{finishedGoodsInventory.quantityAvailable}
                and fgi.quantity_available like concat('%', #{finishedGoodsInventory.quantityAvailable}, '%')
            </if>
            <if test="finishedGoodsInventory.actualSignalArea != null and finishedGoodsInventory.actualSignalArea != ''">
                and fgi.actual_signal_area regexp REGEXP_REPLACE(#{finishedGoodsInventory.actualSignalArea},'\\.0+$','')
@@ -940,28 +938,28 @@
                and fgi.area regexp REGEXP_REPLACE(#{finishedGoodsInventory.area},'\\.0+$','')
            </if>
            <if test="finishedGoodsInventory.warehouseNumber != null and finishedGoodsInventory.warehouseNumber != ''">
                and fgi.warehouse_number regexp #{finishedGoodsInventory.warehouseNumber}
                and fgi.warehouse_number like concat('%', #{finishedGoodsInventory.warehouseNumber}, '%')
            </if>
            <if test="finishedGoodsInventory.storageRegion != null and finishedGoodsInventory.storageRegion != ''">
                and fgi.storage_region regexp #{finishedGoodsInventory.storageRegion}
                and fgi.storage_region like concat('%', #{finishedGoodsInventory.storageRegion}, '%')
            </if>
            <if test="finishedGoodsInventory.status != null and finishedGoodsInventory.status != ''">
                and fgi.`status` regexp #{finishedGoodsInventory.status}
                and fgi.`status` like concat('%', #{finishedGoodsInventory.status}, '%')
            </if>
            <if test="finishedGoodsInventory.enterStorageTime != null and finishedGoodsInventory.enterStorageTime != ''">
                and fgi.enter_storage_time regexp #{finishedGoodsInventory.enterStorageTime}
                and fgi.enter_storage_time like concat('%', #{finishedGoodsInventory.enterStorageTime}, '%')
            </if>
            <if test="finishedGoodsInventory.updateTime != null and finishedGoodsInventory.updateTime != ''">
                and fgi.update_time regexp #{finishedGoodsInventory.updateTime}
                and fgi.update_time like concat('%', #{finishedGoodsInventory.updateTime}, '%')
            </if>
            <if test="finishedGoodsInventory.endTime != null and finishedGoodsInventory.endTime != ''">
                and fgi.end_time regexp #{finishedGoodsInventory.endTime}
                and fgi.end_time like concat('%', #{finishedGoodsInventory.endTime}, '%')
            </if>
            <if test="finishedGoodsInventory.remark != null and finishedGoodsInventory.remark != ''">
                and fgi.remark regexp #{finishedGoodsInventory.remark}
                and fgi.remark like concat('%', #{finishedGoodsInventory.remark}, '%')
            </if>
            <if test="finishedGoodsInventory.boxNo != null and finishedGoodsInventory.boxNo != ''">
                and fgi.box_no regexp #{finishedGoodsInventory.boxNo}
                and fgi.box_no like concat('%', #{finishedGoodsInventory.boxNo}, '%')
            </if>
        </where>
@@ -984,57 +982,52 @@
        <where>
                and fgi.status = 0 and  fgi.quantity_available>0 and o.create_order>0
            <if test="finishedGoodsInventory.orderDetail.width != null and finishedGoodsInventory.orderDetail.width != ''">
                and od.width regexp #{finishedGoodsInventory.orderDetail.width}
                and od.width regexp REGEXP_REPLACE(#{finishedGoodsInventory.orderDetail.width},'\\.0+$','')
            </if>
            <if test="finishedGoodsInventory.orderDetail.orderNumber != null and finishedGoodsInventory.orderDetail.orderNumber != ''">
                and od.order_number regexp #{finishedGoodsInventory.orderDetail.orderNumber}
                and od.order_number like concat('%', #{finishedGoodsInventory.orderDetail.orderNumber}, '%')
            </if>
            <if test="finishedGoodsInventory.orderDetail.productName != null and finishedGoodsInventory.orderDetail.productName != ''">
                and od.product_name regexp #{finishedGoodsInventory.orderDetail.productName}
                and od.product_name like concat('%', #{finishedGoodsInventory.orderDetail.productName}, '%')
            </if>
            <if test="finishedGoodsInventory.orderDetail.productId != null and finishedGoodsInventory.orderDetail.productId != ''">
                and od.product_id regexp #{finishedGoodsInventory.orderDetail.productId}
                and od.product_id like concat('%', #{finishedGoodsInventory.orderDetail.productId}, '%')
            </if>
            <if test="finishedGoodsInventory.orderDetail.buildingNumber != null and finishedGoodsInventory.orderDetail.buildingNumber != ''">
                and od.building_number regexp #{finishedGoodsInventory.orderDetail.buildingNumber}
                and od.building_number like concat('%', #{finishedGoodsInventory.orderDetail.buildingNumber}, '%')
            </if>
            <if test="finishedGoodsInventory.order.orderId != null and finishedGoodsInventory.order.orderId != ''">
                and o.order_id regexp #{finishedGoodsInventory.order.orderId}
                and o.order_id like concat('%', #{finishedGoodsInventory.order.orderId}, '%')
            </if>
            <if test="finishedGoodsInventory.order.project != null and finishedGoodsInventory.order.project != ''">
                and o.project regexp #{finishedGoodsInventory.order.project}
                and o.project like concat('%', #{finishedGoodsInventory.order.project}, '%')
            </if>
            <if test="finishedGoodsInventory.order.orderType != null and finishedGoodsInventory.order.orderType != ''">
                and o.order_type regexp #{finishedGoodsInventory.order.orderType}
                and o.order_type like concat('%', #{finishedGoodsInventory.order.orderType}, '%')
            </if>
            <if test="finishedGoodsInventory.order.customerId != null and finishedGoodsInventory.order.customerId != ''">
                and o.customer_id regexp #{finishedGoodsInventory.order.customerId}
                and o.customer_id like concat('%', #{finishedGoodsInventory.order.customerId}, '%')
            </if>
            <if test="finishedGoodsInventory.order.customerName != null and finishedGoodsInventory.order.customerName != ''">
                and o.customer_name regexp #{finishedGoodsInventory.order.customerName}
                and o.customer_name like concat('%', #{finishedGoodsInventory.order.customerName}, '%')
            </if>
            <if test="finishedGoodsInventory.order.batch != null and finishedGoodsInventory.order.batch != ''">
                and o.batch regexp #{finishedGoodsInventory.order.batch}
                and o.batch like concat('%', #{finishedGoodsInventory.order.batch}, '%')
            </if>
            <if test="finishedGoodsInventory.order.salesman != null and finishedGoodsInventory.order.salesman != ''">
                and o.salesman regexp #{finishedGoodsInventory.order.salesman}
                and o.salesman like concat('%', #{finishedGoodsInventory.order.salesman}, '%')
            </if>
            <if test="finishedGoodsInventory.orderDetail.height != null and finishedGoodsInventory.orderDetail.height != ''">
                and od.height regexp REGEXP_REPLACE(#{finishedGoodsInventory.orderDetail.height},'\\.0+$','')
            </if>
            <if test="finishedGoodsInventory.inventory != null and finishedGoodsInventory.inventory != ''">
                and fgi.inventory regexp #{finishedGoodsInventory.inventory}
                and fgi.inventory like concat('%', #{finishedGoodsInventory.inventory}, '%')
            </if>
            <if test="finishedGoodsInventory.quantityAvailable != null and finishedGoodsInventory.quantityAvailable != ''">
                and fgi.quantity_available regexp #{finishedGoodsInventory.quantityAvailable}
                and fgi.quantity_available like concat('%', #{finishedGoodsInventory.quantityAvailable}, '%')
            </if>
            <if test="finishedGoodsInventory.actualSignalArea != null and finishedGoodsInventory.actualSignalArea != ''">
                and fgi.actual_signal_area regexp REGEXP_REPLACE(#{finishedGoodsInventory.actualSignalArea},'\\.0+$','')
            </if>
            <if test="finishedGoodsInventory.area != null and finishedGoodsInventory.area != ''">
                and fgi.area regexp REGEXP_REPLACE(#{finishedGoodsInventory.area},'\\.0+$','')
            </if>
            <if test="finishedGoodsInventory.computeArea != null and finishedGoodsInventory.computeArea != ''">
                and fgi.compute_area regexp REGEXP_REPLACE(#{finishedGoodsInventory.computeArea},'\\.0+$','')
@@ -1042,29 +1035,32 @@
            <if test="finishedGoodsInventory.computeGrossArea != null and finishedGoodsInventory.computeGrossArea != ''">
                and fgi.compute_gross_area regexp REGEXP_REPLACE(#{finishedGoodsInventory.computeGrossArea},'\\.0+$','')
            </if>
            <if test="finishedGoodsInventory.area != null and finishedGoodsInventory.area != ''">
                and fgi.area regexp REGEXP_REPLACE(#{finishedGoodsInventory.area},'\\.0+$','')
            </if>
            <if test="finishedGoodsInventory.warehouseNumber != null and finishedGoodsInventory.warehouseNumber != ''">
                and fgi.warehouse_number regexp #{finishedGoodsInventory.warehouseNumber}
                and fgi.warehouse_number like concat('%', #{finishedGoodsInventory.warehouseNumber}, '%')
            </if>
            <if test="finishedGoodsInventory.storageRegion != null and finishedGoodsInventory.storageRegion != ''">
                and fgi.storage_region regexp #{finishedGoodsInventory.storageRegion}
                and fgi.storage_region like concat('%', #{finishedGoodsInventory.storageRegion}, '%')
            </if>
            <if test="finishedGoodsInventory.status != null and finishedGoodsInventory.status != ''">
                and fgi.`status` regexp #{finishedGoodsInventory.status}
                and fgi.`status` like concat('%', #{finishedGoodsInventory.status}, '%')
            </if>
            <if test="finishedGoodsInventory.enterStorageTime != null and finishedGoodsInventory.enterStorageTime != ''">
                and fgi.enter_storage_time regexp #{finishedGoodsInventory.enterStorageTime}
                and fgi.enter_storage_time like concat('%', #{finishedGoodsInventory.enterStorageTime}, '%')
            </if>
            <if test="finishedGoodsInventory.updateTime != null and finishedGoodsInventory.updateTime != ''">
                and fgi.update_time regexp #{finishedGoodsInventory.updateTime}
                and fgi.update_time like concat('%', #{finishedGoodsInventory.updateTime}, '%')
            </if>
            <if test="finishedGoodsInventory.endTime != null and finishedGoodsInventory.endTime != ''">
                and fgi.end_time regexp #{finishedGoodsInventory.endTime}
                and fgi.end_time like concat('%', #{finishedGoodsInventory.endTime}, '%')
            </if>
            <if test="finishedGoodsInventory.remark != null and finishedGoodsInventory.remark != ''">
                and fgi.remark regexp #{finishedGoodsInventory.remark}
                and fgi.remark like concat('%', #{finishedGoodsInventory.remark}, '%')
            </if>
            <if test="finishedGoodsInventory.boxNo != null and finishedGoodsInventory.boxNo != ''">
                and fgi.box_no regexp #{finishedGoodsInventory.boxNo}
                and fgi.box_no like concat('%', #{finishedGoodsInventory.boxNo}, '%')
            </if>
        </where>
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -185,18 +185,22 @@
             c.project_no,
             d.child_width as 'width',
             d.child_height as 'height',
             (d.child_width + d.child_height) * 2 as 'perimeter',
             c.quantity,
             od.shape,
             concat( c.process_id, '-', c.technology_number ) AS 'process_id',
             c.process_id AS processId,
             c.technology_number as layer,
             c.layers_number as totalLayer,
             d.glass_child,
             od.price,
             od.remarks,
             round( d.area * c.quantity, 4 ) as 'area',
             c.order_number,
             d.icon  AS markIcon,
             op.project_name,
             0 as patchState,
             c.rack AS rackNo,
             0 as heatLayoutId,
             d.process,
             o.order_id AS orderNo,
             o.customer_name AS customerName,
@@ -225,18 +229,22 @@
                c.project_no,
                d.child_width as 'width',
                d.child_height as 'height',
                (d.child_width + d.child_height) * 2 as 'perimeter',
                c.patch_num as quantity,
                od.shape,
                concat( c.process_id, '-', c.technology_number ) AS 'process_id',
                c.process_id AS 'process_ids',
                c.technology_number as layer,
                fc.layers_number as total_layer,
                d.glass_child,
                od.price,
                od.remarks,
                round( d.area * c.patch_num, 4 ) as 'area',
                c.order_sort as order_number,
                d.icon,
                op.project_name,
                1 as patch_state,
                a.id as rackNo,
                0 as heatLayoutId,
                d.process,
                o.order_id AS orderNo,
                o.customer_name AS customerName,
@@ -330,15 +338,22 @@
    <!--优化查询-->
    <select id="computeAndOptimization">
        SELECT
            c.project_no,
            c.rack AS rackNo,
            h.layout_id as heatLayoutId,
#             h.layout_id as heatLayoutId,
            h.width AS width,
            h.height AS height,
            (h.width + h.height) * 2 as 'perimeter',
            od.shape,
            count( 1 ) AS quantity,
            concat( h.process_id, '-', h.layer ) AS processId,
            concat( h.process_id, '-', h.layer ) AS process_id,
            c.process_id AS processId,
            h.process_id as process_ids,
            h.layer,
            c.layers_number as totalLayer,
            d.glass_child,
            od.price,
            od.remarks,
            round( d.area * count( 1 ), 4 ) AS 'area',
            c.order_number,
            h.order_sort AS orderSort,
@@ -364,7 +379,7 @@
        WHERE
            h.project_no = #{projectNo}
        GROUP BY
            h.layout_id,
#             h.layout_id,
            h.width,
            h.height,
            h.process_id,
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -1733,7 +1733,7 @@
            AND rw.this_process REGEXP #{teamOutputDTO.thisProcess}
        </if>
        <if test="teamOutputDTO.teamsGroupsName != null and teamOutputDTO.teamsGroupsName != ''">
            AND rw.teams_groups_name REGEXP #{teamOutputDTO.teamsGroupsName}
            and rw.teams_groups_name like concat('%', #{teamOutputDTO.teamsGroupsName}, '%')
        </if>
        <if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
            AND o.project REGEXP #{teamOutputDTO.project}
@@ -1886,7 +1886,7 @@
            and rw.this_process regexp #{teamOutputDTO.thisProcess}
        </if>
        <if test="teamOutputDTO.teamsGroupsName != null and teamOutputDTO.teamsGroupsName != ''">
            and rw.teams_groups_name regexp #{teamOutputDTO.teamsGroupsName}
            and rw.teams_groups_name like concat('%', #{teamOutputDTO.teamsGroupsName}, '%')
        </if>
        <if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
            and o.project regexp #{teamOutputDTO.project}
@@ -2570,7 +2570,7 @@
            AND rw.this_process REGEXP #{teamOutputDTO.thisProcess}
        </if>
        <if test="teamOutputDTO.teamsGroupsName != null and teamOutputDTO.teamsGroupsName != ''">
            AND rw.teams_groups_name REGEXP #{teamOutputDTO.teamsGroupsName}
            and rw.teams_groups_name like concat('%', #{teamOutputDTO.teamsGroupsName}, '%')
        </if>
        <if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
            AND o.project REGEXP #{teamOutputDTO.project}
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -579,7 +579,7 @@
            and rw.device_name regexp #{reportingWork.deviceName}
        </if>
        <if test="reportingWork.teamsGroupsName != null and reportingWork.teamsGroupsName != ''">
            and rw.teams_groups_name regexp #{reportingWork.teamsGroupsName}
            and rw.teams_groups_name like concat('%', #{reportingWork.teamsGroupsName}, '%')
        </if>
        GROUP BY rw.reporting_work_id
        ORDER BY rw.reporting_work_id desc