自动化立体仓库 - WMS系统
zwl
昨天 71a7fffd983efe701f3c848c207fc9eb94ab1665
src/main/java/com/zy/asrs/controller/DigitalTwinController.java
@@ -1,51 +1,19 @@
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;
    /**
     * 数据总览
     *
@@ -54,108 +22,9 @@
     */
    @RequestMapping(value = "/overview")
//    @ManagerAuth
    public R overview(@RequestParam(required = false) String areaId) throws IOException {
    public R overview(@RequestParam(required = false) String areaId) {
        Map<String, Object> 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<String, Object> result = objectMapper.readValue(resA, Map.class);
                    // 如果只需要data部分
                    Map<String, Object> data = (Map<String, Object>) result.get("data");
                    return R.ok(data);
                }
                case "B": {
                    String resB = builder.setUri(DJ_URL).build().doGet();
                    Map<String, Object> result = objectMapper.readValue(resB, Map.class);
                    // 如果只需要data部分
                    Map<String, Object> data = (Map<String, Object>) result.get("data");
                    return R.ok(data);
                }
                case "C": {
                    String resC = builder.setUri(LJQ_URL).build().doGet();
                    Map<String, Object> result = objectMapper.readValue(resC, Map.class);
                    // 如果只需要data部分
                    Map<String, Object> data = (Map<String, Object>) result.get("data");
                    return R.ok(data);
                }
                case "D": {
                    return R.ok(digitalTwinService.overview(areaId));
                }
                default:
                    Map<String, Object> mergedResult = new HashMap<>();
                    Map<String, Object> mergedData = new HashMap<>();
                    String resA = builder.setUri(JG_URL).build().doGet();
                    Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
            Map<String, Object> mergedData = new HashMap<>();
            String resA = builder.setUri(JG_URL).build().doGet();
            Map<String, Object> 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<String, Object> 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<String, Object> 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);
        }
        return R.ok(digitalTwinService.overview(areaId));
    }
    /**
@@ -170,116 +39,9 @@
//    @ManagerAuth
    public R recentOrder(@RequestParam(required = false) String areaId,
                         @RequestParam(required = false) String startDate,
                         @RequestParam(required = false) String endDate) throws IOException {
                         @RequestParam(required = false) String endDate) {
        Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
                    Map<String, Object> mergedData = new HashMap<>();
                    String resA = builder.setUri(JG_URL).build().doGet();
                    Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
            Map<String, Object> mergedData = new HashMap<>();
            String resA = builder.setUri(JG_URL).build().doGet();
            Map<String, Object> 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<String, Object> 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<String, Object> 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);
        }
        return R.ok(digitalTwinService.order(startDate, endDate));
    }
    /**
@@ -294,116 +56,9 @@
//    @ManagerAuth
    public R recentIdleLoc(@RequestParam(required = false) String areaId,
                           @RequestParam(required = false) String startDate,
                           @RequestParam(required = false) String endDate) throws IOException {
                           @RequestParam(required = false) String endDate) {
        Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
                    Map<String, Object> mergedData = new HashMap<>();
                    String resA = builder.setUri(JG_URL).build().doGet();
                    Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
            Map<String, Object> mergedData = new HashMap<>();
            String resA = builder.setUri(JG_URL).build().doGet();
            Map<String, Object> 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<String, Object> 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<String, Object> 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);
        }
        return R.ok(digitalTwinService.recentLoc(areaId, startDate, endDate));
    }
    /**
@@ -418,117 +73,9 @@
//    @ManagerAuth
    public R recentInAndOutBound(@RequestParam(required = false) String areaId,
                                 @RequestParam(required = false) String startDate,
                                 @RequestParam(required = false) String endDate) throws ParseException, IOException {
                                 @RequestParam(required = false) String endDate) {
        Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
                    Map<String, Object> mergedData = new HashMap<>();
                    String resA = builder.setUri(JG_URL).build().doGet();
                    Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
            Map<String, Object> mergedData = new HashMap<>();
            String resA = builder.setUri(JG_URL).build().doGet();
            Map<String, Object> 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<String, Object> 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<String, Object> 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);
        }
        return R.ok(digitalTwinService.inAndOutBound(areaId, startDate, endDate));
    }
    /**
@@ -544,120 +91,9 @@
                             @RequestParam(required = false) Integer overDayNum,
                             @RequestParam(required = false) Integer pageIndex,
                             @RequestParam(required = false) Integer pageSize,
                             @RequestParam(required = false) String condition) throws IOException {
                             @RequestParam(required = false) String condition) {
        Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
                    Map<String, Object> mergedData = new HashMap<>();
                    String resA = builder.setUri(JG_URL).build().doGet();
                    Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
            Map<String, Object> mergedData = new HashMap<>();
            String resA = builder.setUri(JG_URL).build().doGet();
            Map<String, Object> 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<String, Object> 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<String, Object> 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);
        }
        return R.ok(digitalTwinService.recentDetainMat(areaId, overDayNum, pageIndex, pageSize, condition));
    }
    /**
@@ -668,300 +104,42 @@
     */
    @RequestMapping(value = "/equipment")
//    @ManagerAuth
    public R equipment(@RequestParam(required = false) String areaId) throws IOException {
    public R equipment(@RequestParam(required = false) String areaId) {
        Map<String, Object> 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<String, Object> result = objectMapper.readValue(resA, Map.class);
                    return R.ok(result.get("data"));
                }
                case "B": {
                    String resA = builder.setUri(DJ_URL).build().doGet();
                    Map<String, Object> result = objectMapper.readValue(resA, Map.class);
                    return R.ok(result.get("data"));
                }
                case "C": {
                    String resA = builder.setUri(LJQ_URL).build().doGet();
                    Map<String, Object> result = objectMapper.readValue(resA, Map.class);
                    return R.ok(result.get("data"));
                }
                case "D": {
                    return R.ok(digitalTwinService.equipment(areaId));
                }
                default:
                    Map<String, Object> mergedResult = new HashMap<>();
                    Map<String, Object> mergedData = new HashMap<>();
                    String resA = builder.setUri(JG_URL).build().doGet();
                    Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
            Map<String, Object> mergedData = new HashMap<>();
            String resA = builder.setUri(JG_URL).build().doGet();
            Map<String, Object> 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<String, Object> 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<String, Object> 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);
        }
        return R.ok(digitalTwinService.equipment(areaId));
    }
    /**
     * 库位和库存详情
     *
     * @param areaId
     * @param arr
     * @return
     */
    @RequestMapping(value = "/warehouseDetail")
//    @ManagerAuth
    public R warehouseDetail(@RequestParam(required = false) String areaId) throws IOException {
        Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
                Map<String, Object> mergedData = new HashMap<>();
                String resA = builder.setUri(JG_URL).build().doGet();
                Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> mergedResult = new HashMap<>();
            Map<String, Object> mergedData = new HashMap<>();
            String resA = builder.setUri(JG_URL).build().doGet();
            Map<String, Object> 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<String, Object> 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<String, Object> 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);
        }
    public R warehouseDetail(@RequestParam(required = false) Integer[] arr) {
        return R.ok(digitalTwinService.warehouseDetail(arr));
    }
    /**
     * 查询所有库位状态和物料-二机床信息化数字孪生用
     */
    @RequestMapping(value = "/getAllLocations")
    public R getAllLocations() throws IOException {
        Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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);
    public R getAllLocations() {
        return R.ok(digitalTwinService.getAllLocations());
    }
    /**
     * 查询所有库的库位状态总数量
     */
    @RequestMapping(value = "/getLocalInfo")
    public R getLocalInfo() throws IOException {
        Map<String, Object> 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<String, Object> resultA = objectMapper.readValue(resA, Map.class);
        mergedData.put("A", resultA);
        String resB = builder.setUri(DJ_URL).build().doGet();
        Map<String, Object> resultB = objectMapper.readValue(resB, Map.class);
        mergedData.put("B", resultB);
        String resC = builder.setUri(LJQ_URL).build().doGet();
        Map<String, Object> resultC = objectMapper.readValue(resC, Map.class);
        mergedData.put("C", resultC);
        Map<String, Object> locInfo = digitalTwinService.getLocInfo();
        mergedData.put("D", locInfo);
        return R.ok(mergedData);
    public R getLocalInfo() {
        return R.ok(digitalTwinService.getLocInfo());
    }
    /**
     * 查询所有库的库存明细
     */
    @RequestMapping(value = "/getLocalDetal")
    public R getLocalDetal() throws IOException {
        Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> resultC = objectMapper.readValue(resC, Map.class);
        if (resultC.get("data") != null) {
            mergedData.put("C", resultC.get("data"));
        }
        List<Map<String, Object>> detalList = digitalTwinService.getLocalDetal();
        mergedData.put("D", detalList);
        return R.ok(mergedData);
    public R getLocalDetal() {
        return R.ok(digitalTwinService.getLocalDetal());
    }
}