| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 在保存之前处理 glassPoint 数据 |
| | | for (Map<String, Object> detail : objectMap2) { |
| | | if (detail.containsKey("glassPoint")) { |
| | | Object glassPointObj = detail.get("glassPoint"); |
| | | if (glassPointObj != null) { |
| | | try { |
| | | // 如果 glassPointObj 已经是字符串,则不需要转换 |
| | | if (!(glassPointObj instanceof String)) { |
| | | // 将对象转换为 JSON 字符串 |
| | | String glassPointStr = mapper.writeValueAsString(glassPointObj); |
| | | detail.put("glassPoint", glassPointStr); |
| | | } |
| | | } catch (Exception e) { |
| | | // 如果转换失败,记录错误并移除该字段 |
| | | System.err.println("转换 glassPoint 失败: " + e.getMessage()); |
| | | detail.remove("glassPoint"); |
| | | } |
| | | } else { |
| | | // 如果 glassPointObj 为 null,移除该字段 |
| | | detail.remove("glassPoint"); |
| | | } |
| | | } |
| | | } |
| | | glassOptimizeMapper.addOptimizeDetail(objectMap2,projectId); |
| | | } |
| | | glassOptimizeMapper.updateProjectOptimizeStateMp(projectId,1); |
| | |
| | | map.put("optimizeUse", glassOptimizeMapper.materialStoreOptimizeUse(processId)); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | |
| | | public Object getOptimizeInfoSv(String processId) { |
| | | // 获取布局信息 |
| | | List<Map<String, Object>> layouts = glassOptimizeMapper.getOptimizeLayoutsInfo(processId); |
| | | // 获取玻璃明细信息 |
| | | List<Map<String, Object>> glassDetails = glassOptimizeMapper.getOptimizeDetailsInfo(processId); |
| | | // 获取余料信息 |
| | | List<Map<String, Object>> offsets = glassOptimizeMapper.getOptimizeOffsetsInfo(processId); |
| | | // 将玻璃明细和余料合并到一个列表中 |
| | | List<Map<String, Object>> allDetails = new ArrayList<>(); |
| | | if (glassDetails != null) { |
| | | allDetails.addAll(glassDetails); |
| | | } |
| | | if (offsets != null) { |
| | | allDetails.addAll(offsets); |
| | | } |
| | | |
| | | // 解析 glassPoint 字符串 |
| | | ObjectMapper mapper = new ObjectMapper(); |
| | | for (Map<String, Object> detail : allDetails) { |
| | | if (detail.containsKey("glassPoint")) { |
| | | Object glassPointObj = detail.get("glassPoint"); |
| | | if (glassPointObj instanceof String) { |
| | | String glassPointStr = (String) glassPointObj; |
| | | if (glassPointStr != null && !glassPointStr.isEmpty() && !glassPointStr.equals("null")) { |
| | | try { |
| | | // 解析 JSON 字符串为对象 |
| | | Object parsedGlassPoint = mapper.readValue(glassPointStr, Object.class); |
| | | detail.put("glassPoint", parsedGlassPoint); |
| | | } catch (Exception e) { |
| | | System.err.println("解析 glassPoint 失败: " + e.getMessage()); |
| | | // 解析失败时保留原字符串或设置默认值 |
| | | detail.put("glassPoint", new ArrayList<>()); |
| | | } |
| | | } else { |
| | | // 空字符串或 null 时设置默认值 |
| | | detail.put("glassPoint", new ArrayList<>()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 按照stockId将明细分组并添加到对应的布局中 |
| | | if (layouts != null && !layouts.isEmpty()) { |
| | | for (Map<String, Object> layout : layouts) { |
| | | Object stockIdObj = layout.get("stockId"); |
| | | if (stockIdObj != null) { |
| | | Integer stockId = null; |
| | | if (stockIdObj instanceof Number) { |
| | | stockId = ((Number) stockIdObj).intValue(); |
| | | } else { |
| | | try { |
| | | stockId = Integer.valueOf(stockIdObj.toString()); |
| | | } catch (NumberFormatException e) { |
| | | // 如果无法转换为数字,则跳过该布局 |
| | | continue; |
| | | } |
| | | } |
| | | List<Map<String, Object>> matchedDetails = new ArrayList<>(); |
| | | for (Map<String, Object> detail : allDetails) { |
| | | Object layoutIdObj = detail.get("layoutId"); |
| | | Object stockSortObj = detail.get("stockSort"); |
| | | Integer detailStockId = null; |
| | | if (layoutIdObj != null) { |
| | | if (layoutIdObj instanceof Number) { |
| | | detailStockId = ((Number) layoutIdObj).intValue(); |
| | | } else { |
| | | try { |
| | | detailStockId = Integer.valueOf(layoutIdObj.toString()); |
| | | } catch (NumberFormatException e) { |
| | | // 跳过无效的layoutId |
| | | continue; |
| | | } |
| | | } |
| | | } else if (stockSortObj != null) { |
| | | if (stockSortObj instanceof Number) { |
| | | detailStockId = ((Number) stockSortObj).intValue(); |
| | | } else { |
| | | try { |
| | | detailStockId = Integer.valueOf(stockSortObj.toString()); |
| | | } catch (NumberFormatException e) { |
| | | // 跳过无效的stockSort |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | // 如果detail的stockId与layout的stockId匹配,则添加到匹配列表中 |
| | | if (detailStockId != null && detailStockId.equals(stockId)) { |
| | | matchedDetails.add(detail); |
| | | } |
| | | } |
| | | // 将匹配的明细添加到布局的glassDetails字段中 |
| | | layout.put("glassDetails", matchedDetails); |
| | | } |
| | | } |
| | | } |
| | | // Map<String, Object> result = new HashMap<>(); |
| | | Map<String, Object> result = new LinkedHashMap<>(); |
| | | result.put("layouts", layouts); |
| | | result.put("optimizeUse", glassOptimizeMapper.materialStoreOptimizeUse(processId)); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | //工程信息 |
| | | public Map<String, Object> projectInfoSv(String projectNo,String username) { |
| | |
| | | else if(code==2){ |
| | | glassOptimizeMapper.deleteOptimizeDetail(projectNumber); |
| | | glassOptimizeMapper.deleteOptimizeLayout(projectNumber); |
| | | glassOptimizeMapper.deleteOptimizeOffcut(projectNumber); |
| | | glassOptimizeMapper.deleteOptimizeProjectFile(projectNumber); |
| | | glassOptimizeMapper.updateOptimizeUse(projectNumber); |
| | | glassOptimizeMapper.updateProjectOptimizeStateMp(projectNumber, states); |
| | |
| | | return saveState; |
| | | } |
| | | |
| | | |
| | | } |