| | |
| | | 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:10.153.19.31}") |
| | | private String mesIp; |
| | | |
| | | RabbitMQUtil rabbitMQUtil; |
| | | //模拟计算 |
| | |
| | | |
| | | List<Map<String, Object>> objectMapList = (List<Map<String, Object>>) optimalResults.get("layouts"); |
| | | glassOptimizeMapper.addOptimizeLayout(objectMapList,projectId); |
| | | // 收集所有需要保存的玻璃明细数据 |
| | | List<Map<String, Object>> allGlassDetails = new ArrayList<>(); |
| | | |
| | | for(Map<String, Object> objectMap:objectMapList){ |
| | | List<Map<String, Object>> objectMap2 = (List<Map<String, Object>>) objectMap.get("glassDetails"); |
| | | //迭代玻璃明细集合处理余料和其他 |
| | |
| | | } |
| | | } |
| | | } |
| | | glassOptimizeMapper.addOptimizeDetail(objectMap2,projectId); |
| | | // 将当前批次的玻璃明细添加到总列表中 |
| | | allGlassDetails.addAll(objectMap2); |
| | | } |
| | | |
| | | glassOptimizeMapper.updateProjectOptimize(projectId, 1, optimalResults); |
| | | Map<String, Object> projectInfo = glassOptimizeMapper.getGlassProjectList(projectId); |
| | | if (projectInfo != null && Integer.parseInt(projectInfo.get("tempering_state").toString()) == 1) { |
| | | // tempering_state 为 1 时的处理逻辑 |
| | | glassOptimizeMapper.addOptimizeDetail(allGlassDetails,projectId); |
| | | List<OptimizeHeatDetail> optimizeHeatDetail = glassOptimizeMapper.selectOptimizeHeatDetail(projectId); |
| | | for (OptimizeHeatDetail projectdetail:optimizeHeatDetail){ |
| | | OptimizeDetail optimizeDetail=glassOptimizeMapper.selectOptimizeDetailById(projectId,projectdetail.getProcessId(), |
| | | projectdetail.getOrderSort(),projectdetail.getLayer()); |
| | | glassOptimizeMapper.updateOptimizeDetail(optimizeDetail.getId(),projectdetail.getLayoutId(),projectdetail.getSort()); |
| | | } |
| | | } else { |
| | | // tempering_state 为 0 时的处理逻辑 |
| | | glassOptimizeMapper.addOptimizeDetail(allGlassDetails,projectId); |
| | | } |
| | | 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(); |
| | |
| | | } else { |
| | | dataList = glassOptimizeMapper.directOptimization(projectNo); |
| | | } |
| | | List<Map<String, Object>> tempDataList = null; |
| | | if (Integer.parseInt(stringObjectMap.get("optimize_state").toString())==1) { |
| | | tempDataList = glassOptimizeMapper.optimizeTemp(projectNo); |
| | | } |
| | | |
| | | // 获取磨量配置数据 |
| | | List<Map<String, Object>> grindingTrimmingList = glassOptimizeMapper.getGrindingOptimize(username); |
| | |
| | | } |
| | | } |
| | | } |
| | | if (tempDataList != null && !tempDataList.isEmpty()) { |
| | | dataList.addAll(tempDataList); |
| | | } |
| | | 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){ |
| | |
| | | int state2 = 0; |
| | | StringBuilder processId= new StringBuilder(); |
| | | List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("projectdetail")), FlowCard.class); |
| | | if (!flowCardList.isEmpty()) { |
| | | if(projectType.equals("2")){ |
| | | deleteProject(projectId,2); |
| | | if(projectType.equals("2")){ |
| | | deleteProject(projectId,2); |
| | | } |
| | | |
| | | // 创建一个映射来存储 (processId-technologyNumber) 组合到 rack 编号的映射 |
| | | Map<String, Integer> rackMap = new HashMap<>(); |
| | | int rackCounter = 1; |
| | | |
| | | // 如果为空流程卡,则将 type 设置为 1 |
| | | if (flowCardList == null || flowCardList.isEmpty()) { |
| | | type = 1; |
| | | } |
| | | for (FlowCard flowCard : flowCardList) { |
| | | // 为每个唯一的 processId-technologyNumber 组合分配 rack 编号 |
| | | String key = flowCard.getProcessId() + "-" + flowCard.getTechnologyNumber(); |
| | | if (!rackMap.containsKey(key)) { |
| | | rackMap.put(key, rackCounter++); |
| | | } |
| | | int rackValue = rackMap.get(key); |
| | | |
| | | if(flowCard.getPatchState().equals(0)){ |
| | | state1=1; |
| | | //给流程卡表添加对应的工程号 |
| | | Boolean a = glassOptimizeMapper.updateFlowCardProject(flowCard.getProcessId(),flowCard.getTechnologyNumber(),projectId); |
| | | // 更新流程卡的rack字段 |
| | | glassOptimizeMapper.updateFlowCardRack(flowCard.getProcessId(), flowCard.getTechnologyNumber(), rackValue); |
| | | area = glassOptimizeMapper.getSelectArea(flowCard.getProcessId(),flowCard.getTechnologyNumber()).doubleValue(); |
| | | sumArea = sumArea.add(BigDecimal.valueOf(area)); |
| | | sumQuantity +=flowCard.getQuantity(); |
| | | processId.append(flowCard.getProcessId()).append("-").append(flowCard.getTechnologyNumber()).append(";"); |
| | | }else{ |
| | | state2=1; |
| | | Boolean a=glassOptimizeMapper.updatePatchLogProject(flowCard.getProcessId(),flowCard.getTechnologyNumber(),projectId); |
| | | area = glassOptimizeMapper.getSelectAreaPatchLog(flowCard.getProcessId(),flowCard.getTechnologyNumber()).doubleValue(); |
| | | sumArea = sumArea.add(BigDecimal.valueOf(area)); |
| | | sumQuantity +=flowCard.getQuantity(); |
| | | processId.append(flowCard.getProcessId()).append("-").append(flowCard.getTechnologyNumber()).append(";"); |
| | | } |
| | | |
| | | // 创建一个映射来存储 (processId-technologyNumber) 组合到 rack 编号的映射 |
| | | Map<String, Integer> rackMap = new HashMap<>(); |
| | | int rackCounter = 1; |
| | | } |
| | | if(state1==1&&state2==0){ |
| | | type=1; |
| | | }else if(state1==1&&state2==1){ |
| | | type=2; |
| | | } |
| | | |
| | | for (FlowCard flowCard : flowCardList) { |
| | | // 为每个唯一的 processId-technologyNumber 组合分配 rack 编号 |
| | | String key = flowCard.getProcessId() + "-" + flowCard.getTechnologyNumber(); |
| | | if (!rackMap.containsKey(key)) { |
| | | rackMap.put(key, rackCounter++); |
| | | } |
| | | int rackValue = rackMap.get(key); |
| | | |
| | | if(flowCard.getPatchState().equals(0)){ |
| | | state1=1; |
| | | //给流程卡表添加对应的工程号 |
| | | Boolean a = glassOptimizeMapper.updateFlowCardProject(flowCard.getProcessId(),flowCard.getTechnologyNumber(),projectId); |
| | | // 更新流程卡的rack字段 |
| | | glassOptimizeMapper.updateFlowCardRack(flowCard.getProcessId(), flowCard.getTechnologyNumber(), rackValue); |
| | | area = glassOptimizeMapper.getSelectArea(flowCard.getProcessId(),flowCard.getTechnologyNumber()).doubleValue(); |
| | | sumArea = sumArea.add(BigDecimal.valueOf(area)); |
| | | sumQuantity +=flowCard.getQuantity(); |
| | | processId.append(flowCard.getProcessId()).append("-").append(flowCard.getTechnologyNumber()).append(";"); |
| | | }else{ |
| | | state2=1; |
| | | Boolean a=glassOptimizeMapper.updatePatchLogProject(flowCard.getProcessId(),flowCard.getTechnologyNumber(),projectId); |
| | | area = glassOptimizeMapper.getSelectAreaPatchLog(flowCard.getProcessId(),flowCard.getTechnologyNumber()).doubleValue(); |
| | | sumArea = sumArea.add(BigDecimal.valueOf(area)); |
| | | sumQuantity +=flowCard.getQuantity(); |
| | | processId.append(flowCard.getProcessId()).append("-").append(flowCard.getTechnologyNumber()).append(";"); |
| | | } |
| | | |
| | | } |
| | | if(state1==1&&state2==0){ |
| | | type=1; |
| | | }else if(state1==1&&state2==1){ |
| | | type=2; |
| | | } |
| | | int index = optionVal.indexOf("mm"); |
| | | // 获取 "mm" 前面的部分 |
| | | String glass_thickness = optionVal.substring(0, index); |
| | | // 获取 "mm" 后面的部分 |
| | | String glass_type = optionVal.substring(index + 2); |
| | | if(projectType.equals("2")){ |
| | | glassOptimizeMapper.updateProjectMp(projectId,projectNmae,glass_thickness,glass_type,sumQuantity,sumArea.doubleValue(),userName, |
| | | int index = optionVal.indexOf("mm"); |
| | | // 获取 "mm" 前面的部分 |
| | | String glass_thickness = optionVal.substring(0, index); |
| | | // 获取 "mm" 后面的部分 |
| | | String glass_type = optionVal.substring(index + 2); |
| | | if(projectType.equals("2")){ |
| | | glassOptimizeMapper.updateProjectMp(projectId,projectNmae,glass_thickness,glass_type,sumQuantity,sumArea.doubleValue(),userName, |
| | | flowCardList.size(), String.valueOf(processId),type); |
| | | }else{ |
| | | if(glassOptimizeMapper.selectProjectCount(projectId)==null){ |
| | | glassOptimizeMapper.addProjectMp(projectId,projectNmae,glass_thickness,glass_type,sumQuantity,sumArea.doubleValue(),userName, |
| | | flowCardList.size(), String.valueOf(processId),type); |
| | | }else{ |
| | | if(glassOptimizeMapper.selectProjectCount(projectId)==null){ |
| | | glassOptimizeMapper.addProjectMp(projectId,projectNmae,glass_thickness,glass_type,sumQuantity,sumArea.doubleValue(),userName, |
| | | flowCardList.size(), String.valueOf(processId),type); |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false1"; |
| | | } |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false1"; |
| | | } |
| | | }else { |
| | | return "false2"; |
| | | |
| | | } |
| | | } catch (Exception e) { |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | |
| | | json = object.get("json").toString(); |
| | | } |
| | | if(type.equals("钢化")){ |
| | | glassOptimizeMapper.updateOptimizeConfig(json,1,username); |
| | | String existingConfig = glassOptimizeMapper.selectConfigByUserAndType(username, 1); |
| | | if (existingConfig == null) { |
| | | String configName = "钢化推荐"; |
| | | glassOptimizeMapper.insertOptimizeConfig(json,1,username,configName); |
| | | }else { |
| | | glassOptimizeMapper.updateOptimizeConfig(json,1,username); |
| | | } |
| | | } else if (type.equals("修边")) { |
| | | glassOptimizeMapper.updateOptimizeConfig(json,5,username); |
| | | String existingConfig = glassOptimizeMapper.selectConfigByUserAndType(username, 5); |
| | | if (existingConfig == null) { |
| | | String configName = "修边配置"; |
| | | glassOptimizeMapper.insertOptimizeConfig(json,5,username,configName); |
| | | }else { |
| | | glassOptimizeMapper.updateOptimizeConfig(json,5,username); |
| | | } |
| | | }else if (type.equals("磨量")) { |
| | | glassOptimizeMapper.updateOptimizeConfig(json,4,username); |
| | | String existingConfig = glassOptimizeMapper.selectConfigByUserAndType(username, 4); |
| | | if (existingConfig == null) { |
| | | String configName = "磨量配置"; |
| | | glassOptimizeMapper.insertOptimizeConfig(json,4,username,configName); |
| | | }else{ |
| | | glassOptimizeMapper.updateOptimizeConfig(json,4,username); |
| | | } |
| | | |
| | | } |
| | | return true; |
| | | |
| | |
| | | public Boolean issuingProjects(String projectNo) throws JsonProcessingException { |
| | | boolean saveState=false; |
| | | try { |
| | | System.out.println(mesIp); |
| | | // 1. 创建URL对象 |
| | | URL url = new URL("http://localhost: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> getMaterialInfoSv(String processId) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<Map<String, Object>> materialList = glassOptimizeMapper.getMaterialInfoSv(processId); |
| | | // List<Map<String, Object>> materialList = glassOptimizeMapper.getMaterialInfoSv(processId); |
| | | List<Map<String, Object>> layoutSet = glassOptimizeMapper.getLayoutSetSv(processId); |
| | | |
| | | // 创建一个Map来存储每个stock_code的总面积 |
| | | Map<String, Double> stockCodeAreaMap = new HashMap<>(); |
| | | // // 创建一个Map来存储每个stock_code的总面积 |
| | | // Map<String, Double> stockCodeAreaMap = new HashMap<>(); |
| | | // |
| | | // // 遍历layoutSet计算每个stock_code的总面积(面积*使用率) |
| | | // for (Map<String, Object> layout : layoutSet) { |
| | | // Object stockCodeObj = layout.get("stock_code"); |
| | | // Object widthObj = layout.get("width"); |
| | | // Object heightObj = layout.get("height"); |
| | | // Object usageRateObj = layout.get("usage_rate"); |
| | | // |
| | | // if (stockCodeObj != null && widthObj != null && heightObj != null && usageRateObj != null) { |
| | | // try { |
| | | // String stockCode = stockCodeObj.toString(); |
| | | // double width = Double.parseDouble(widthObj.toString()); |
| | | // double height = Double.parseDouble(heightObj.toString()); |
| | | // double usageRate = Double.parseDouble(usageRateObj.toString()); |
| | | // |
| | | // // 计算单条数据的面积(平方米) |
| | | // double area = (width * height * usageRate) / 1000000.0; |
| | | // |
| | | // // 累加到对应stock_code的总面积 |
| | | // stockCodeAreaMap.put(stockCode, stockCodeAreaMap.getOrDefault(stockCode, 0.0) + area); |
| | | // } catch (NumberFormatException e) { |
| | | // System.err.println("数据转换错误: " + e.getMessage()); |
| | | // } |
| | | // } |
| | | // } |
| | | // |
| | | // // 将计算出的总面积添加到materialList中对应的物料数据 |
| | | // for (Map<String, Object> material : materialList) { |
| | | // Object stockCodeObj = material.get("code"); |
| | | // if (stockCodeObj != null) { |
| | | // String stockCode = stockCodeObj.toString(); |
| | | // if (stockCodeAreaMap.containsKey(stockCode)) { |
| | | // material.put("totalArea", stockCodeAreaMap.get(stockCode)); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | // 遍历layoutSet计算每个stock_code的总面积(面积*使用率) |
| | | for (Map<String, Object> layout : layoutSet) { |
| | | Object stockCodeObj = layout.get("stock_code"); |
| | | Object widthObj = layout.get("width"); |
| | | Object heightObj = layout.get("height"); |
| | | Object usageRateObj = layout.get("usage_rate"); |
| | | |
| | | if (stockCodeObj != null && widthObj != null && heightObj != null && usageRateObj != null) { |
| | | try { |
| | | String stockCode = stockCodeObj.toString(); |
| | | double width = Double.parseDouble(widthObj.toString()); |
| | | double height = Double.parseDouble(heightObj.toString()); |
| | | double usageRate = Double.parseDouble(usageRateObj.toString()); |
| | | |
| | | // 计算单条数据的面积(平方米) |
| | | double area = (width * height * usageRate) / 1000000.0; |
| | | |
| | | // 累加到对应stock_code的总面积 |
| | | stockCodeAreaMap.put(stockCode, stockCodeAreaMap.getOrDefault(stockCode, 0.0) + area); |
| | | } catch (NumberFormatException e) { |
| | | System.err.println("数据转换错误: " + e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 将计算出的总面积添加到materialList中对应的物料数据 |
| | | for (Map<String, Object> material : materialList) { |
| | | Object stockCodeObj = material.get("code"); |
| | | if (stockCodeObj != null) { |
| | | String stockCode = stockCodeObj.toString(); |
| | | if (stockCodeAreaMap.containsKey(stockCode)) { |
| | | material.put("totalArea", stockCodeAreaMap.get(stockCode)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | map.put("materialList", materialList); |
| | | map.put("materialList", layoutSet); |
| | | return map; |
| | | } |
| | | |
| | |
| | | public Map<String, Object> getProductListSv(String processId) { |
| | | Map<String, Object> productMap = new HashMap<>(); |
| | | List<Map<String, Object>> productInfo = glassOptimizeMapper.selectProjectList(processId); |
| | | List<Map<String, Object>> tempProductInfo = glassOptimizeMapper.selectTempProject(processId); |
| | | productInfo.addAll(tempProductInfo); |
| | | productMap.put("productInfo", productInfo); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | |
| | |
| | | // 按照 processCard 分组 |
| | | Map<String, List<Map<String, Object>>> groupedByProcessCard = new HashMap<>(); |
| | | for (Map<String, Object> item : productInfo) { |
| | | String processCard = (String) item.get("processCard"); |
| | | String processCard = String.valueOf(item.get("processCard")); |
| | | if (processCard != null) { |
| | | groupedByProcessCard.computeIfAbsent(processCard, k -> new ArrayList<>()).add(item); |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | 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; |
| | | } |
| | | |
| | | |
| | | |
| | | } |