| | |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | |
| | | GlassOptimizeMapper glassOptimizeMapper; |
| | | @Autowired |
| | | SysErrorService sysErrorService; |
| | | |
| | | @Value("${mesIp:localhost}") // 注入mesIp配置,默认值为10.153.19.31 |
| | | private String mesIp; |
| | | |
| | | RabbitMQUtil rabbitMQUtil; |
| | | //模拟计算 |
| | |
| | | // tempering_state 为 0 时的处理逻辑 |
| | | glassOptimizeMapper.addOptimizeDetail(allGlassDetails,projectId); |
| | | } |
| | | |
| | | glassOptimizeMapper.updateProjectOptimize(projectId, 1, optimalResults); |
| | | List<Map<String, Object>> materialStoreList = glassOptimizeMapper.materialStoreOptimizeUse(projectId); |
| | | double totalUseArea = 0.0; |
| | | for (Map<String, Object> material : materialStoreList) { |
| | | if (material.containsKey("totalArea")) { |
| | | Object totalAreaObj = material.get("totalArea"); |
| | | if (totalAreaObj != null) { |
| | | try { |
| | | double area = Double.parseDouble(totalAreaObj.toString()); |
| | | totalUseArea += area; |
| | | } catch (NumberFormatException e) { |
| | | System.err.println("无法解析总面积数据: " + totalAreaObj); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | glassOptimizeMapper.updateProjectOptimize(projectId, 1, optimalResults, totalUseArea); |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | } |
| | | } |
| | | } |
| | | 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; |
| | | } |
| | | |
| | |
| | | glassOptimizeMapper.deleteOptimizeHeatDetail(projectNumber); |
| | | glassOptimizeMapper.deleteOptimizeHeatLayout(projectNumber); |
| | | glassOptimizeMapper.updateProjectTemperingStateMp(projectNumber, states); |
| | | Map<String, Object> temperingState = glassOptimizeMapper.getProjectState(projectNumber); |
| | | |
| | | if (temperingState != null && temperingState.containsKey("optimize_state")) { |
| | | Object optimizeStateObj = temperingState.get("optimize_state"); |
| | | if (optimizeStateObj != null) { |
| | | try { |
| | | int optimizeState = Integer.parseInt(optimizeStateObj.toString()); |
| | | if (optimizeState == 1) { |
| | | glassOptimizeMapper.updateProjectTemperingId(projectNumber); |
| | | } |
| | | } catch (NumberFormatException e) { |
| | | // 处理转换异常,记录日志或采取其他适当措施 |
| | | System.err.println("解析 optimize_state 失败: " + e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //撤销优化排版 |
| | | else if(code==2){ |
| | |
| | | } |
| | | //生产不可见 |
| | | else if(code==4){ |
| | | glassOptimizeMapper.updateProjectStateMp(projectNumber, state); |
| | | Map<String, Object> cancelResult = issuingCancelProject(projectNumber); |
| | | // 获取返回结果中的data字段 |
| | | Map<String, Object> responseData = (Map<String, Object>) cancelResult.get("data"); |
| | | // 检查响应中的code字段,只有当code为200或202时才允许更新状态 |
| | | if (responseData != null && responseData.containsKey("code")) { |
| | | Object responseCode = responseData.get("code"); |
| | | if (responseCode.equals(200) || responseCode.equals(202)) { |
| | | glassOptimizeMapper.updateProjectStateMp(projectNumber, state); |
| | | } else if (responseCode.equals(201)) { |
| | | // 当返回201时,抛出自定义异常或返回错误信息 |
| | | throw new RuntimeException(responseData.get("message").toString()); |
| | | } else { |
| | | return false; |
| | | } |
| | | } else { |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | //初始化工程 |
| | | else if(code==5){ |
| | |
| | | boolean saveState=false; |
| | | try { |
| | | // 1. 创建URL对象 |
| | | URL url = new URL("http://10.153.19.31:88/api/loadGlass/engineering/importEngineer"); |
| | | URL url = new URL("http://" + mesIp + ":88/api/loadGlass/engineering/importEngineer"); |
| | | |
| | | // 2. 打开连接 |
| | | HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
| | |
| | | } |
| | | |
| | | |
| | | public Map<String, Object> getProjectState(String projectNo) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", glassOptimizeMapper.getProjectState(projectNo)); |
| | | return map; |
| | | } |
| | | |
| | | public Map<String, Object> issuingCancelProject(String projectNo){ |
| | | Map<String, Object> result = new HashMap<>(); |
| | | Map<String, Object> responseData = new HashMap<>(); |
| | | |
| | | try { |
| | | // 1. 创建URL对象 |
| | | URL url = new URL("http://" + mesIp + ":88/api/loadGlass/engineering/optimizeCancelTask"); |
| | | // URL url = new URL("http://localhost:88/api/loadGlass/engineering/optimizeCancelTask"); |
| | | |
| | | |
| | | // 2. 打开连接 |
| | | HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
| | | conn.setRequestMethod("POST"); |
| | | conn.setRequestProperty("Content-Type", "application/json"); |
| | | conn.setRequestProperty("Accept", "application/json"); |
| | | conn.setDoOutput(true); |
| | | |
| | | // 3. 准备请求体 - 将projectNo转换为engineerId格式 |
| | | String engineerId = projectNo; |
| | | // 如果传入的是JSON字符串,需要提取真正的projectNo值 |
| | | if (projectNo.startsWith("{") && projectNo.contains("\"projectNo\"")) { |
| | | try { |
| | | JSONObject jsonObject = JSONObject.parseObject(projectNo); |
| | | engineerId = jsonObject.getString("projectNo"); |
| | | } catch (Exception e) { |
| | | // 解析失败时使用原始值 |
| | | System.err.println("解析projectNo JSON失败: " + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | // 构建新的JSON请求体,使用engineerId字段 |
| | | String jsonInputString = "{\"engineerId\":\"" + engineerId + "\"}"; |
| | | System.out.println("engineerId: " + engineerId); |
| | | System.out.println("Request: " + jsonInputString); |
| | | |
| | | //发送请求 |
| | | try(OutputStream os = conn.getOutputStream()) { |
| | | byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8); |
| | | os.write(input, 0, input.length); |
| | | } |
| | | |
| | | // 获取响应 |
| | | try(BufferedReader br = new BufferedReader( |
| | | new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8))) { |
| | | StringBuilder response = new StringBuilder(); |
| | | String responseLine; |
| | | while ((responseLine = br.readLine()) != null) { |
| | | response.append(responseLine.trim()); |
| | | } |
| | | String fullResponse = response.toString(); |
| | | System.out.println("Response: " + fullResponse); |
| | | |
| | | // 直接将响应内容解析为Map |
| | | responseData = JSONObject.parseObject(fullResponse, Map.class); |
| | | } |
| | | |
| | | //关闭连接 |
| | | conn.disconnect(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | // 异常情况下将异常信息放入data |
| | | responseData.put("error", e.getMessage()); |
| | | } |
| | | |
| | | // 构造最终返回结果 |
| | | result.put("data", responseData); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | |
| | | |
| | | } |