package com.zy.asrs.controller; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.R; import com.fasterxml.jackson.databind.ObjectMapper; import com.zy.asrs.entity.LocChartPie; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.digitaltwin.*; import com.zy.asrs.mapper.LocDetlMapper; import com.zy.asrs.mapper.ReportQueryMapper; import com.zy.asrs.service.DigitalTwinService; import com.zy.common.utils.HttpHandler; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.core.type.TypeReference; import javax.annotation.Resource; import java.io.IOException; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RequestMapping("/digitalTwin") @RestController public class DigitalTwinController extends BaseController { @Value("${digitalTwins.jgUrl}") private String JG_URL; @Value("${digitalTwins.djUrl}") private String DJ_URL; @Value("${digitalTwins.ljqUrl}") private String LJQ_URL; @Resource private DigitalTwinService digitalTwinService; @Autowired ReportQueryMapper reportQueryMapper; @Autowired private LocDetlMapper locDetlMapper; /** * 数据总览 * * @param areaId 库区编码 * @return */ @RequestMapping(value = "/overview") // @ManagerAuth public R overview(@RequestParam(required = false) String areaId) throws IOException { Map map = new HashMap<>(); if (areaId != null) { map.put("areaId", areaId); } HttpHandler.Builder builder = new HttpHandler.Builder() .setPath("/digitalTwin/overview") .setParams(map); ObjectMapper objectMapper = new ObjectMapper(); if (areaId != null) { switch (areaId) { case "A": { String resA = builder.setUri(JG_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 Map data = (Map) result.get("data"); return R.ok(data); } case "B": { String resB = builder.setUri(DJ_URL).build().doGet(); Map result = objectMapper.readValue(resB, Map.class); // 如果只需要data部分 Map data = (Map) result.get("data"); return R.ok(data); } case "C": { String resC = builder.setUri(LJQ_URL).build().doGet(); Map result = objectMapper.readValue(resC, Map.class); // 如果只需要data部分 Map data = (Map) result.get("data"); return R.ok(data); } case "D": { return R.ok(digitalTwinService.overview(areaId)); } default: Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.overview(areaId); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } else { Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.overview(areaId); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } /** * 近期订单(默认7天) * * @param areaId 库区编码 * @param startDate 格式:yyyyMMdd,20251022 * @param endDate 格式:yyyyMMdd,20251027 * @return */ @RequestMapping(value = "/recentOrder") // @ManagerAuth public R recentOrder(@RequestParam(required = false) String areaId, @RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate) throws IOException { Map map = new HashMap<>(); if (areaId != null) { map.put("areaId", areaId); } if (startDate != null) { map.put("startDate", startDate); } if (endDate != null) { map.put("endDate", endDate); } HttpHandler.Builder builder = new HttpHandler.Builder() .setPath("/digitalTwin/recentOrder") .setParams(map); ObjectMapper objectMapper = new ObjectMapper(); if (areaId != null) { switch (areaId) { case "A": { String resA = builder.setUri(JG_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "B": { String resB = builder.setUri(DJ_URL).build().doGet(); Map result = objectMapper.readValue(resB, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "C": { String resC = builder.setUri(LJQ_URL).build().doGet(); Map result = objectMapper.readValue(resC, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "D": { return R.ok(digitalTwinService.order(startDate, endDate)); } default: Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.order(startDate, endDate); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } else { Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.order(startDate, endDate); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } /** * 近期剩余库位(默认7天) * * @param areaId 库区编码 * @param startDate 格式:yyyyMMdd,20251022 * @param endDate 格式:yyyyMMdd,20251027 * @return */ @RequestMapping(value = "/recentIdleLoc") // @ManagerAuth public R recentIdleLoc(@RequestParam(required = false) String areaId, @RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate) throws IOException { Map map = new HashMap<>(); if (areaId != null) { map.put("areaId", areaId); } if (startDate != null) { map.put("startDate", startDate); } if (endDate != null) { map.put("endDate", endDate); } HttpHandler.Builder builder = new HttpHandler.Builder() .setPath("/digitalTwin/recentIdleLoc") .setParams(map); ObjectMapper objectMapper = new ObjectMapper(); if (areaId != null) { switch (areaId) { case "A": { String resA = builder.setUri(JG_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "B": { String resA = builder.setUri(DJ_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "C": { String resA = builder.setUri(LJQ_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "D": { return R.ok(digitalTwinService.recentLoc(areaId, startDate, endDate)); } default: Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.recentLoc(areaId, startDate, endDate); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } else { Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.recentLoc(areaId, startDate, endDate); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } /** * 近期出入库(默认7天) * * @param areaId 库区编码 * @param startDate 格式:yyyyMMdd,20251022 * @param endDate 格式:yyyyMMdd,20251027 * @return */ @RequestMapping(value = "/recentInAndOutBound") // @ManagerAuth public R recentInAndOutBound(@RequestParam(required = false) String areaId, @RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate) throws ParseException, IOException { Map map = new HashMap<>(); if (areaId != null) { map.put("areaId", areaId); } if (startDate != null) { map.put("startDate", startDate); } if (endDate != null) { map.put("endDate", endDate); } HttpHandler.Builder builder = new HttpHandler.Builder() .setPath("/digitalTwin/recentInAndOutBound") .setParams(map); ObjectMapper objectMapper = new ObjectMapper(); if (areaId != null) { switch (areaId) { case "A": { String resA = builder.setUri(JG_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "B": { String resA = builder.setUri(DJ_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "C": { String resA = builder.setUri(LJQ_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "D": { return R.ok(digitalTwinService.inAndOutBound(areaId, startDate, endDate)); } default: Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.inAndOutBound(areaId, startDate, endDate); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } else { // 如果没有提供areaId,默认调用本地服务 Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.inAndOutBound(areaId, startDate, endDate); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } /** * 近期呆滞品(默认超30天) * * @param areaId 库区编码 * @param overDayNum 呆滞品天数,默认30天 * @return */ @RequestMapping(value = "/recentDetainMat") // @ManagerAuth public R recentDetainMat(@RequestParam(required = false) String areaId, @RequestParam(required = false) Integer overDayNum, @RequestParam(required = false) Integer pageIndex, @RequestParam(required = false) Integer pageSize, @RequestParam(required = false) String condition) throws IOException { Map map = new HashMap<>(); if (areaId != null) { map.put("areaId", areaId); } if (overDayNum != null) { map.put("overDayNum", overDayNum); } if (pageIndex != null) { map.put("pageIndex", pageIndex); } if (pageSize != null) { map.put("pageSize", pageSize); } if (condition != null) { map.put("condition", condition); } HttpHandler.Builder builder = new HttpHandler.Builder() .setPath("/digitalTwin/recentDetainMat") .setParams(map); ObjectMapper objectMapper = new ObjectMapper(); if (areaId != null) { switch (areaId) { case "A": { String resA = builder.setUri(JG_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "B": { String resA = builder.setUri(DJ_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "C": { String resA = builder.setUri(LJQ_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "D": { return R.ok(digitalTwinService.recentDetainMat(areaId, overDayNum, pageIndex, pageSize, condition)); } default: Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.recentDetainMat(areaId, overDayNum, pageIndex, pageSize, condition); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } else { // 如果没有提供areaId,默认调用本地服务 Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.recentDetainMat(areaId, overDayNum, pageIndex, pageSize, condition); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } /** * 设备运行信息 * * @param areaId * @return */ @RequestMapping(value = "/equipment") // @ManagerAuth public R equipment(@RequestParam(required = false) String areaId) throws IOException { Map map = new HashMap<>(); map.put("areaId", areaId); HttpHandler.Builder builder = new HttpHandler.Builder() .setPath("/digitalTwin/equipment") .setParams(map); ObjectMapper objectMapper = new ObjectMapper(); if (areaId != null){ switch (areaId) { case "A": { String resA = builder.setUri(JG_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); DtEquipmentVo data = objectMapper.convertValue(result.get("data"), DtEquipmentVo.class); // 如果只需要data部分 //DtEquipmentVo data = (DtEquipmentVo) result.get("data"); return R.ok(data); } case "B": { String resA = builder.setUri(DJ_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); DtEquipmentVo data = objectMapper.convertValue(result.get("data"), DtEquipmentVo.class); // 如果只需要data部分 //DtEquipmentVo data = (DtEquipmentVo) result.get("data"); return R.ok(data); } case "C": { String resA = builder.setUri(LJQ_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); DtEquipmentVo data = objectMapper.convertValue(result.get("data"), DtEquipmentVo.class); // 如果只需要data部分 //DtEquipmentVo data = (DtEquipmentVo) result.get("data"); return R.ok(data); } case "D": { return R.ok(digitalTwinService.equipment(areaId)); } default: Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.equipment(areaId); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } }else { Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.equipment(areaId); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } /** * 库位和库存详情 * * @param areaId * @return */ @RequestMapping(value = "/warehouseDetail") // @ManagerAuth public R warehouseDetail(@RequestParam(required = false) String areaId) throws IOException { Map map = new HashMap<>(); if (areaId != null) { map.put("areaId", areaId); } HttpHandler.Builder builder = new HttpHandler.Builder() .setPath("/digitalTwin/warehouseDetail") .setParams(map); ObjectMapper objectMapper = new ObjectMapper(); if (areaId != null) { switch (areaId) { case "A": { String resA = builder.setUri(JG_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "B": { builder.setPath("/digitalTwin/warehouseDetail"); String resA = builder.setUri(DJ_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "C": { String resA = builder.setUri(LJQ_URL).build().doGet(); Map result = objectMapper.readValue(resA, Map.class); // 如果只需要data部分 List data = (List) result.get("data"); return R.ok(data); } case "D": { return R.ok(digitalTwinService.warehouseDetail(areaId)); } default: Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.warehouseDetail(areaId); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } else { // 如果没有提供areaId,默认调用本地服务 Map mergedResult = new HashMap<>(); Map mergedData = new HashMap<>(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } Object resultD = digitalTwinService.warehouseDetail(areaId); if (resultD != null) { mergedData.put("D", resultD); } return R.ok(mergedData); } } /** * 查询所有库位状态和物料-二机床信息化数字孪生用 */ @RequestMapping(value = "/getAllLocations") public R getAllLocations() throws IOException { Map mergedData = new HashMap<>(); HttpHandler.Builder builder = new HttpHandler.Builder() .setPath("/digitalTwin/getAllLocations"); ObjectMapper objectMapper = new ObjectMapper(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } mergedData.put("D",digitalTwinService.getAllLocations()); return R.ok(mergedData); } /** * 查询所有库的库位利用率 */ @RequestMapping(value = "/getLocalInfo") public R getLocalInfo() throws IOException { Map mergedData = new HashMap<>(); HttpHandler.Builder builder = new HttpHandler.Builder() .setPath("/digitalTwin/getLocalInfo"); ObjectMapper objectMapper = new ObjectMapper(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); mergedData.put("A", resultA); String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); mergedData.put("B", resultB); String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); mergedData.put("C", resultC); LocChartPie locUseRate = reportQueryMapper.getLocUseRate(); mergedData.put("D", locUseRate); return R.ok(mergedData); } /** * 查询所有库的库存明细 */ @RequestMapping(value = "/getLocalDetal") public R getLocalDetal() throws IOException { Map mergedData = new HashMap<>(); HttpHandler.Builder builder = new HttpHandler.Builder() .setPath("/digitalTwin/getLocalDetal"); ObjectMapper objectMapper = new ObjectMapper(); String resA = builder.setUri(JG_URL).build().doGet(); Map resultA = objectMapper.readValue(resA, Map.class); if (resultA.get("data") != null) { mergedData.put("A", resultA.get("data")); } String resB = builder.setUri(DJ_URL).build().doGet(); Map resultB = objectMapper.readValue(resB, Map.class); if (resultB.get("data") != null) { mergedData.put("B", resultB.get("data")); } String resC = builder.setUri(LJQ_URL).build().doGet(); Map resultC = objectMapper.readValue(resC, Map.class); if (resultC.get("data") != null) { mergedData.put("C", resultC.get("data")); } List> detalList = digitalTwinService.getLocalDetal(); mergedData.put("D", detalList); return R.ok(mergedData); } }