| | |
| | | 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; |
| | |
| | | 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) { |
| | |
| | | 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) { |
| | |
| | | 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); |