| | |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.dy.common.springUtil.SpringContextUtil; |
| | | import com.dy.pmsGlobal.daoOth.OthStatisticWorkloadMapper; |
| | | import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper; |
| | | import com.dy.pmsGlobal.daoSta.*; |
| | | import com.dy.pmsGlobal.pojoSta.*; |
| | |
| | | import java.time.LocalTime; |
| | | import java.time.ZoneId; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.time.temporal.TemporalAccessor; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | |
| | | private StaDeviceProductionLogMapper deviceProductionLogDao; |
| | | private StaRepairInfoMapper repairInfoDao; |
| | | private PrAssemblyPlanMapper assemblyPlanDao; |
| | | private OthStatisticWorkloadMapper workloadDao; |
| | | |
| | | @Autowired |
| | | public void setDeviceLastDao(StaDeviceLastMapper deviceLastDao) { |
| | | this.deviceLastDao = deviceLastDao; |
| | |
| | | this.repairInfoDao = repairInfoDao; |
| | | } |
| | | |
| | | @Autowired |
| | | public void setWorkloadDao(OthStatisticWorkloadMapper workloadDao) { |
| | | this.workloadDao = workloadDao; |
| | | } |
| | | |
| | | public Map<String, Object> getDeviceInfo(String deviceNo) { |
| | | if (StringUtils.isBlank(deviceNo)) { |
| | | return null; |
| | |
| | | if (deviceLast == null) { |
| | | return null; |
| | | } |
| | | Map<String, Object> deviceInfo =new HashMap<>(); |
| | | Map<String, Object> deviceInfo = new HashMap<>(); |
| | | deviceInfo.put("deviceInfo", deviceLast); |
| | | //查询设备日志 |
| | | List<StaDeviceProductionLog> log = deviceProductionLogDao.selectByDeviceNo(deviceNo); |
| | |
| | | } |
| | | |
| | | public List<StaDeviceProductionLog> queryDeviceLog(String startTime, String endTime) { |
| | | Date startDt = parseToDate(startTime,0); |
| | | Date endDt = parseToDate(endTime,1); |
| | | Date startDt = parseToDate(startTime, 0); |
| | | Date endDt = parseToDate(endTime, 1); |
| | | //查询设备日志 |
| | | List<StaDeviceProductionLog> log = deviceProductionLogDao.selectProductLog("",startDt,endDt); |
| | | List<StaDeviceProductionLog> log = deviceProductionLogDao.selectProductLog("", startDt, endDt); |
| | | return log; |
| | | } |
| | | |
| | | private Date parseToDate(String strDt,long offDays) { |
| | | LocalDateTime dt = LocalDateTime.of(LocalDate.now().plusDays(offDays), LocalTime.of(0,0,0)); // 今天24点 |
| | | private Date parseToDate(String strDt, long offDays) { |
| | | LocalDateTime dt = LocalDateTime.of(LocalDate.now().plusDays(offDays), LocalTime.of(0, 0, 0)); // 今天24点 |
| | | DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | if (strDt.matches("\\d{4}(-\\d{2}){2} \\d{2}(:\\d{2}){2}")) {//2024-08-15 00:00:00 |
| | | dt = LocalDateTime.parse(strDt,dtf); |
| | | }else if (strDt.matches("\\d{4}(-\\d{2}){2}")){ |
| | | dt = LocalDateTime.of(LocalDate.parse(strDt,dtf1), LocalTime.of(0,0,0)); |
| | | dt = LocalDateTime.parse(strDt, dtf); |
| | | } else if (strDt.matches("\\d{4}(-\\d{2}){2}")) { |
| | | dt = LocalDateTime.of(LocalDate.parse(strDt, dtf1), LocalTime.of(0, 0, 0)); |
| | | } |
| | | Date date = Date.from(dt.atZone(ZoneId.systemDefault()).toInstant()); |
| | | return date; |
| | |
| | | public List<JSONObject> queryPlanList() { |
| | | List<JSONObject> list = assemblyPlanDao.queryPlanList(); |
| | | Map<String, JSONObject> map = new ConcurrentHashMap<>(); // 使用并发安全的Map |
| | | for(JSONObject item:list){ |
| | | for (JSONObject item : list) { |
| | | String planId = String.valueOf(item.getObj("planId")); |
| | | JSONObject innerObject = new JSONObject() |
| | | .set("nodeId", String.valueOf(item.getObj("nodeId"))) |
| | | .set("content", item.getObj("content")); |
| | | if(map.containsKey(planId)){ |
| | | JSONArray array = (JSONArray)map.get(planId).get("nodes"); |
| | | if (map.containsKey(planId)) { |
| | | JSONArray array = (JSONArray) map.get(planId).get("nodes"); |
| | | array.add(innerObject); |
| | | }else{ |
| | | } else { |
| | | JSONArray array = new JSONArray(); |
| | | array.add(innerObject); |
| | | JSONObject outObject= new JSONObject() |
| | | JSONObject outObject = new JSONObject() |
| | | .set("planId", planId) |
| | | .set("planName", item.getObj("planName")) |
| | | .set("nodes", array); |
| | | map.put(planId,outObject); |
| | | map.put(planId, outObject); |
| | | } |
| | | } |
| | | return map.values().stream().collect(Collectors.toList()); |
| | | } |
| | | |
| | | public void test() { |
| | | |
| | | |
| | | //OthStatisticWorkloadMapper workloadMapper = SpringContextUtil.getBean(OthStatisticWorkloadMapper.class); |
| | | //找到最大一条日期记录 |
| | | Date maxDate = workloadDao.selectMaxDate(); |
| | | //往后循环天数汇总 |
| | | if (maxDate != null) { |
| | | //循环统计 |
| | | LocalDate firstDay = maxDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | LocalDate today = LocalDate.now(); |
| | | LocalDate nextDate = firstDay.plusDays(1); |
| | | //today 要统计 firstday不统计 |
| | | long daysBetween = ChronoUnit.DAYS.between(firstDay, today); |
| | | if (daysBetween > 30) { |
| | | daysBetween = 30; |
| | | nextDate = firstDay.plusDays(daysBetween); |
| | | } |
| | | for (int i = 1; i <= daysBetween; i++) { |
| | | Date startDt = Date.from(LocalDateTime.of(nextDate, LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant()); |
| | | Date endDt = Date.from(LocalDateTime.of(nextDate, LocalTime.of(23, 59, 59)).atZone(ZoneId.systemDefault()).toInstant()); |
| | | workloadDao.insertBatch(startDt, endDt); |
| | | nextDate = firstDay.plusDays(i); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |