From f72306be34e0f859b5ab08df32c4a41e4eaa92eb Mon Sep 17 00:00:00 2001 From: 刘小明 <liuxm_a@163.com> Date: 星期三, 16 十月 2024 11:30:46 +0800 Subject: [PATCH] 添加每天完成设备数量统计定时任务 --- pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java | 89 ++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 80 insertions(+), 9 deletions(-) diff --git a/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java b/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java index 871085b..7fd3d85 100644 --- a/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java +++ b/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java @@ -1,7 +1,12 @@ package com.dy.pmsOther.screen; +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 lombok.extern.slf4j.Slf4j; @@ -13,11 +18,14 @@ 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; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; @Slf4j @Service @@ -27,6 +35,9 @@ private StaWipSnExMapper wipSnExDao; private StaDeviceProductionLogMapper deviceProductionLogDao; private StaRepairInfoMapper repairInfoDao; + private PrAssemblyPlanMapper assemblyPlanDao; + private OthStatisticWorkloadMapper workloadDao; + @Autowired public void setDeviceLastDao(StaDeviceLastMapper deviceLastDao) { this.deviceLastDao = deviceLastDao; @@ -48,8 +59,18 @@ } @Autowired + public void setAssemblyPlanDao(PrAssemblyPlanMapper assemblyPlanDao) { + this.assemblyPlanDao = assemblyPlanDao; + } + + @Autowired public void setRepairInfoDao(StaRepairInfoMapper repairInfoDao) { this.repairInfoDao = repairInfoDao; + } + + @Autowired + public void setWorkloadDao(OthStatisticWorkloadMapper workloadDao) { + this.workloadDao = workloadDao; } public Map<String, Object> getDeviceInfo(String deviceNo) { @@ -61,7 +82,7 @@ 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); @@ -79,25 +100,75 @@ } 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<>(); // 浣跨敤骞跺彂瀹夊叏鐨凪ap + 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"); + array.add(innerObject); + } else { + JSONArray array = new JSONArray(); + array.add(innerObject); + JSONObject outObject = new JSONObject() + .set("planId", planId) + .set("planName", item.getObj("planName")) + .set("nodes", array); + 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); + } + } + } + } -- Gitblit v1.8.0