Junjie
2 天以前 63b01db83d9aad8a15276b4236a9a22e4aeef065
src/main/java/com/zy/ai/mcp/service/impl/WcsDataFacadeImpl.java
@@ -11,9 +11,18 @@
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.BasRgv;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.BasRgv;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.WrkAnalysisMapper;
import com.zy.asrs.service.BasCrnpErrLogService;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.BasDualCrnpErrLogService;
import com.zy.asrs.service.BasRgvErrLogService;
import com.zy.asrs.service.BasRgvService;
import com.zy.asrs.service.BasStationErrLogService;
import com.zy.asrs.service.WrkMastService;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
@@ -48,6 +57,16 @@
    private ConfigService configService;
    @Autowired
    private MainProcessPseudocodeService mainProcessPseudocodeService;
    @Autowired
    private WrkAnalysisMapper wrkAnalysisMapper;
    @Autowired
    private BasCrnpErrLogService basCrnpErrLogService;
    @Autowired
    private BasDualCrnpErrLogService basDualCrnpErrLogService;
    @Autowired
    private BasRgvErrLogService basRgvErrLogService;
    @Autowired
    private BasStationErrLogService basStationErrLogService;
    @Override
    public Object getCrnDeviceStatus(JSONObject args) {
@@ -284,6 +303,101 @@
        return mainProcessPseudocodeService.queryMainProcessPseudocode(refresh);
    }
    @Override
    public Object getTaskThroughput(JSONObject args) {
        Date startTime = optDate(args, "startTime");
        Date endTime = optDate(args, "endTime");
        if (startTime == null || endTime == null) {
            JSONObject err = new JSONObject();
            err.put("error", "startTime and endTime are required");
            return err;
        }
        Map<String, Object> result = wrkAnalysisMapper.aggregateThroughput(startTime, endTime);
        JSONObject data = new JSONObject();
        data.put("throughput", result);
        data.put("startTime", startTime);
        data.put("endTime", endTime);
        return data;
    }
    @Override
    public Object getDeviceFaultSummary(JSONObject args) {
        Date startTime = optDate(args, "startTime");
        Date endTime = optDate(args, "endTime");
        if (startTime == null || endTime == null) {
            JSONObject err = new JSONObject();
            err.put("error", "startTime and endTime are required");
            return err;
        }
        Map<String, Object> throughput = wrkAnalysisMapper.aggregateThroughput(startTime, endTime);
        JSONObject data = new JSONObject();
        data.put("totalTaskCount", throughput.get("taskCount"));
        data.put("faultTaskCount", throughput.get("faultTaskCount"));
        data.put("totalFaultCount", throughput.get("totalFaultCount"));
        data.put("totalFaultDurationMs", throughput.get("totalFaultDurationMs"));
        data.put("crnFaultCount", throughput.get("crnFaultCount"));
        data.put("crnFaultDurationMs", throughput.get("crnFaultDurationMs"));
        data.put("dualCrnFaultCount", throughput.get("dualCrnFaultCount"));
        data.put("dualCrnFaultDurationMs", throughput.get("dualCrnFaultDurationMs"));
        data.put("rgvFaultCount", throughput.get("rgvFaultCount"));
        data.put("rgvFaultDurationMs", throughput.get("rgvFaultDurationMs"));
        data.put("stationFaultCount", throughput.get("stationFaultCount"));
        data.put("stationFaultDurationMs", throughput.get("stationFaultDurationMs"));
        long taskCount = throughput.get("taskCount") != null ? ((Number) throughput.get("taskCount")).longValue() : 0;
        long faultTask = throughput.get("faultTaskCount") != null ? ((Number) throughput.get("faultTaskCount")).longValue() : 0;
        data.put("faultRate", taskCount > 0 ? Math.round(faultTask * 10000.0 / taskCount) / 100.0 : 0);
        data.put("startTime", startTime);
        data.put("endTime", endTime);
        return data;
    }
    @Override
    public Object getDeviceUtilization(JSONObject args) {
        Date startTime = optDate(args, "startTime");
        Date endTime = optDate(args, "endTime");
        if (startTime == null || endTime == null) {
            JSONObject err = new JSONObject();
            err.put("error", "startTime and endTime are required");
            return err;
        }
        List<Map<String, Object>> devices = wrkAnalysisMapper.groupByDevice(startTime, endTime);
        JSONObject data = new JSONObject();
        data.put("devices", devices);
        data.put("startTime", startTime);
        data.put("endTime", endTime);
        return data;
    }
    @Override
    public Object getErrorLogSummary(JSONObject args) {
        Date startTime = optDate(args, "startTime");
        Date endTime = optDate(args, "endTime");
        if (startTime == null || endTime == null) {
            JSONObject err = new JSONObject();
            err.put("error", "startTime and endTime are required");
            return err;
        }
        JSONObject data = new JSONObject();
        long crnErrCount = basCrnpErrLogService.count(new QueryWrapper<com.zy.asrs.entity.BasCrnpErrLog>()
                .ge("start_time", startTime).lt("start_time", endTime));
        long dualCrnErrCount = basDualCrnpErrLogService.count(new QueryWrapper<com.zy.asrs.entity.BasDualCrnpErrLog>()
                .ge("start_time", startTime).lt("start_time", endTime));
        long rgvErrCount = basRgvErrLogService.count(new QueryWrapper<com.zy.asrs.entity.BasRgvErrLog>()
                .ge("start_time", startTime).lt("start_time", endTime));
        long stationErrCount = basStationErrLogService.count(new QueryWrapper<com.zy.asrs.entity.BasStationErrLog>()
                .ge("start_time", startTime).lt("start_time", endTime));
        data.put("crnErrorCount", crnErrCount);
        data.put("dualCrnErrorCount", dualCrnErrCount);
        data.put("rgvErrorCount", rgvErrCount);
        data.put("stationErrorCount", stationErrCount);
        data.put("totalErrorCount", crnErrCount + dualCrnErrCount + rgvErrCount + stationErrCount);
        data.put("startTime", startTime);
        data.put("endTime", endTime);
        return data;
    }
    // --------- helpers ---------
    private int optInt(JSONObject o, String key, int def) {
@@ -315,6 +429,11 @@
        return value.trim();
    }
    private Date optDate(JSONObject o, String key) {
        if (o == null || !o.containsKey(key)) return null;
        return o.getDate(key);
    }
    private List<Long> optLongList(JSONObject o, String key) {
        if (o == null || !o.containsKey(key)) return Collections.emptyList();
        JSONArray arr = o.getJSONArray(key);