廖井涛
2025-11-24 46964bace341e98f238a0a3fd29f6adc643312c7
Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
9个文件已修改
1个文件已添加
291 ■■■■ 已修改文件
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | 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/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 25 ●●●●● 补丁 | 查看 | 原始文档 | 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/pp/GlassOptimize.xml 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -4,7 +4,6 @@
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
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/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-->
@@ -204,6 +206,7 @@
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
@@ -216,15 +219,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/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,