修改优化数据保存位置,将数据更新到optimize_Detail和optimize_layout中,并将余料数据更新到optimize_offcut中,解决工程管理界面数据显示异常问题
4个文件已修改
95 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
@@ -686,6 +686,7 @@
    produceList.value = produceList.value.concat(deepClone(res.data.data))
    xGrid.value.reloadData(produceList.value);
    gridOptions.loading = false;
    console.log('工程管理表格数据',produceList.value);
  } else {
    ElMessage.warning(res.msg);
  }
north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
@@ -194,4 +194,9 @@
    List<Map<String,Object>> selectOptimizeDetail(String projectNo);
    List<Map<String,Object>> selectFlowCardInfoList(String projectNo);
    Map<String, Object> getGlassInfo(String projectId);
    void addOptimizeOffcut(Map<String, Object> map, String projectId, String glassType, String glassThickness);
}
north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
@@ -262,6 +262,8 @@
            List<Map<String, Object>> originalFilm = (List<Map<String, Object>>) object.get("originalFilm");
            glassOptimizeMapper.addOptimizeUse(originalFilm,projectId,"admin");
            Map<String, Object> glassInfo = glassOptimizeMapper.getGlassInfo(projectId);
            ObjectMapper mapper = new ObjectMapper();
            String json = mapper.writeValueAsString(optimalResults);
            glassOptimizeMapper.addOptimizeProjectFile(json,projectId,"admin");
@@ -270,12 +272,55 @@
            glassOptimizeMapper.addOptimizeLayout(objectMapList,projectId);
            for(Map<String, Object> objectMap:objectMapList){
                List<Map<String, Object>> objectMap2 = (List<Map<String, Object>>) objectMap.get("glassDetails");
                //迭代玻璃明细集合删除余料
                //迭代玻璃明细集合处理余料和其他
                Iterator<Map<String, Object>> iterator = objectMap2.iterator();
                while (iterator.hasNext()) {
                    Map<String, Object> map = iterator.next();
                    if (map.get("isRemain").toString()=="true") {
                        iterator.remove();
                    // 修改isRemain判断逻辑,支持数字0/1和字符串"0"/"1"
                    boolean isRemain = false;
                    if (map.containsKey("isRemain")) {
                        Object isRemainObj = map.get("isRemain");
                        if (isRemainObj != null) {
                            if (isRemainObj instanceof Number) {
                                // 数字类型: 1表示true,0表示false
                                isRemain = ((Number) isRemainObj).intValue() == 1;
                            } else {
                                // 字符串类型: "1"表示true,"0"表示false
                                isRemain = "1".equals(isRemainObj.toString());
                            }
                        }
                    }
                    if (isRemain) {
                        System.out.println( map);
                        if (glassInfo != null) {
                            String glassType = (String) glassInfo.get("glass_type");
                            String glassThickness = (String) glassInfo.get("glass_thickness");
                            // 余料存入optimizeoffcut
                            glassOptimizeMapper.addOptimizeOffcut(map, projectId, glassType, glassThickness);
                        }
                        iterator.remove(); // 从原列表中移除
                    }else {
                        // 处理isRotate字段转换 (现在是0/1)
                        if (map.containsKey("isRotate")) {
                            Object isRotateObj = map.get("isRotate");
                            if (isRotateObj != null) {
                                if (isRotateObj instanceof Number) {
                                    // 直接使用数字值
                                    map.put("isRotate", ((Number) isRotateObj).intValue());
                                } else {
                                    // 字符串形式的"0"/"1"
                                    String isRotateStr = isRotateObj.toString();
                                    if ("1".equals(isRotateStr)) {
                                        map.put("isRotate", 1);
                                    } else {
                                        map.put("isRotate", 0);
                                    }
                                }
                            } else {
                                map.put("isRotate", 0); // 默认值
                            }
                        }
                    }
                }
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -746,7 +746,7 @@
        from pp.optimize_project as p
                 left join pp.optimize_admin as a on p.creater = a.Id
        where (`p`.`state` > 0)
            and (tempering_state>0 or optimize_state>0)
#             and (tempering_state>0 or optimize_state>0)
            and DATE (`p`.`create_time`) BETWEEN #{startSelectTime} AND #{endSelectTime}
        <if test="optimizeProjectMange.projectNumber != null and optimizeProjectMange.projectNumber != ''">
            and p.project_no regexp #{optimizeProjectMange.projectNumber}
@@ -1232,6 +1232,7 @@
            y_axis,
            patch_state,
            mark_icon,
            isRotate,
            rack_no
            ) VALUES (
            #{projectId},
@@ -1249,6 +1250,7 @@
            #{glass.y},
            #{glass.patchState},
            #{glass.markIcon},
            #{glass.isRotate},
            #{glass.rackNo}
            );
        </foreach>
@@ -1341,6 +1343,28 @@
            now()
            );
        </foreach>
    </insert>
    <insert id="addOptimizeOffcut">
        INSERT INTO pp.optimize_offcut (
        project_no,
        stock_id,
        width,
        height,
        x_axis,
        y_axis,
        model,
        thickness
        ) VALUES (
        #{projectId},
        #{map.stockSort},
        #{map.width},
        #{map.height},
        #{map.x},
        #{map.y},
        #{glassType},
        #{glassThickness}
        )
    </insert>
@@ -1749,8 +1773,16 @@
        where
            project_no =#{projectNo}
    </select>
    <select id="getGlassInfo" resultType="java.util.Map">
        select
            project_no,
            glass_type,
            glass_thickness
        from
            pp.optimize_project
        where
            project_no = #{projectId}
    </select>
</mapper>