燕山石化溯源三维电子沙盘-【后端】-服务
`1
13693261870
2023-08-11 783babb9878c2bfab8a26460a0f25f4c7e25fc5d
src/main/java/com/yssh/service/XlsReportService.java
@@ -151,7 +151,7 @@
     */
    public void createDayReport(Date date) {
        try {
            Date yesterday = DateUtils.getAPeriodOfTime(date, -1, Calendar.DATE);
            Date yesterday = DateUtils.getAPeriodOfTime(date, -1, Calendar.DATE); // 2023-07-24
            String yyyy = DateUtils.parseDateToStr(DateUtils.YYYY, yesterday); // 2023
            String yyyymmdd = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, yesterday); // 20230724
            // String yyyy_mm_dd = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, yesterday); // 2023-07-24
@@ -164,7 +164,9 @@
            for (int i = 1; i < 47; i++) {
                String name = "AI-" + (i < 10 ? "0" : "") + i;
                double rjz = mapper.selectDayAvg(yyyymmdd + "%", name); // 日均值
                double lj = mapper.selectAccumulate(yearStart, end, name); // 累计
                double ljjz = mapper.selectYearAccumulate(yyyy + "%", name); // 今年累计均值
                double qnLjjz = mapper.selectYearAccumulate(lastYear + "%", name); // 去年累计均值
                double ljtb = CalculateUtils.round2((ljjz - qnLjjz) / qnLjjz * 100); // 累计同比
@@ -173,9 +175,9 @@
                String id = point.getId().substring(0, point.getId().lastIndexOf("_") + 1) + "0";
                // List<SuYuan700> suList = mapper.selectSuYuanByTime(id, yyyy_mm_dd + " 00:00:00", yyyy_mm_dd + " 23:00:00");
                List<SuYuan700> suList = mapper.selectSuYuanByStartAndEnd(id, name, yjz, dayStart, end);
                String ys = getYs(suList);
                String ys = getYs(suList); // 受影响因素及原因
                list.add(new DayExcel("" + rjz, "" + lj, ljtb + "%", ys, "", "", ""));
                list.add(new DayExcel(rjz + "", lj + "", ljtb + "%", ys, "", "", ""));
            }
            saveResult("day", yesterday, list);
        } catch (Exception ex) {
@@ -188,41 +190,55 @@
     */
    public void createWeekReport(Date date) {
        try {
            Date mon = DateUtils.getAPeriodOfTime(date, -7, Calendar.DATE);
            Date sun = DateUtils.getAPeriodOfTime(date, -1, Calendar.DATE);
            Date lastMon = DateUtils.getAPeriodOfTime(date, -14, Calendar.DATE);
            Date lastSun = DateUtils.getAPeriodOfTime(date, -8, Calendar.DATE);
            Date lastYearMon = DateUtils.getAPeriodOfTime(mon, -1, Calendar.YEAR);
            Date lastYearSun = DateUtils.getAPeriodOfTime(sun, -1, Calendar.YEAR);
            Date mon = DateUtils.getAPeriodOfTime(date, -7, Calendar.DATE); // 2023-07-24
            Date sun = DateUtils.getAPeriodOfTime(date, -1, Calendar.DATE); // 2023-07-30
            Date lastMon = DateUtils.getAPeriodOfTime(date, -14, Calendar.DATE); // 2023-07-17
            Date lastSun = DateUtils.getAPeriodOfTime(date, -8, Calendar.DATE); // 2023-07-23
            Date lastYear1 = DateUtils.getAPeriodOfTime(mon, -1, Calendar.YEAR); // 2022-07-24
            Date lastYear7 = DateUtils.getAPeriodOfTime(sun, -1, Calendar.YEAR); // 2022-07-30
            Integer intMon = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, mon) + "00"); // 2023072400
            Integer intSun = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, sun) + "23"); // 2023073023
            Integer intLastMon = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, lastMon) + "00"); // 2023071700
            Integer intLastSun = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, lastSun) + "23"); // 2023072323
            Integer intLastYearMon = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, lastYearMon) + "00"); // 2022071700
            Integer intLastYearSun = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, lastYearSun) + "23"); // 2022072323
            Integer intLastYear1 = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, lastYear1) + "00"); // 2022072400
            Integer intLastYear7 = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, lastYear7) + "23"); // 2022073023
            String yyyy = DateUtils.parseDateToStr(DateUtils.YYYY, sun); // 2023
            Integer yearStart = Integer.parseInt(yyyy + "010100"); // 2023010100
            String lastYear = DateUtils.parseDateToStr(DateUtils.YYYY, DateUtils.lastYear(sun)); // 2022
            int weekOfYear = DateUtils.getWeekOfYear(sun); // 31
            Date lastYearSun = DateUtils.getWeekOfYearForSun(Integer.parseInt(lastYear), weekOfYear); // 2022-07-24
            Date lastYearMon = DateUtils.getAPeriodOfTime(lastYearSun, -6, Calendar.DATE); // 2022-07-18
            Integer intLastYearMon = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, lastYearMon) + "00"); // 2022071800
            Integer intLastYearSun = Integer.parseInt(DateUtils.parseDateToStr(DateUtils.YYYYMMDD, lastYearSun) + "23"); // 2022072423
            List<WeekExcel> list = new ArrayList<>();
            for (int i = 1; i < 47; i++) {
                String name = "AI-" + (i < 10 ? "0" : "") + i;
                double sz = mapper.selectAccumulate(intMon, intSun, name); // 上周
                double ssz = mapper.selectAccumulate(intLastMon, intLastSun, name); // 上上周
                double zhb = CalculateUtils.round2((sz - ssz) / ssz * 100); // 周环比
                double qntq = mapper.selectAccumulate(intLastYearMon, intLastYearSun, name); // 去年同期
                double ztb = CalculateUtils.round2((sz - qntq) / qntq * 100); // 周同比
                double qntq = mapper.selectAccumulate(intLastYear1, intLastYear7, name); // 去年同期
                double ztq = CalculateUtils.round2((sz - qntq) / qntq * 100); // 周同期
                double qntz = mapper.selectAccumulate(intLastYearMon, intLastYearSun, name); // 去年同周
                double ztb = CalculateUtils.round2((sz - qntz) / qntz * 100); // 周同比
                double lj = mapper.selectAccumulate(yearStart, intSun, name); // 累计
                double lastLj = mapper.selectYearAccumulate(lastYear + "%", name); // 去年累计
                double ljtb = CalculateUtils.round2((lj - lastLj) / lastLj * 100); // 累计同比
                double syn = CalculateUtils.round2((lj - lastLj) / lastLj * 100); // 较上一年度变化幅度
                double ljjz = mapper.selectYearAccumulate(yyyy + "%", name); // 今年累计均值
                double qnLjjz = mapper.selectYearAccumulate(lastYear + "%", name); // 去年累计均值
                double ljtb = CalculateUtils.round2((ljjz - qnLjjz) / qnLjjz * 100); // 累计同比
                double syn = CalculateUtils.round2((ljjz - qnLjjz) / qnLjjz * 100); // 较上一年度变化幅度
                MonitorPointPosition point = commonService.select3dCheckPointByName(name);
                String id = point.getId().substring(0, point.getId().lastIndexOf("_") + 1) + "0";
                List<SuYuan700> suList = mapper.selectSuYuanByStartAndEnd(id, name, yjz, intMon, intSun);
                String ys = getYs(suList);
                String ys = getYs(suList); // 受影响因素及原因
                list.add(new WeekExcel("" + sz, zhb + "%", "", ztb + "%", "" + lj, "" + ljtb, "", ys, "", "", ""));
                list.add(new WeekExcel(sz + "", zhb + "%", ztq + "", ztb + "%", lj + "", ljtb + "", syn + "", ys, "", "", ""));
            }
            saveResult("week", sun, list);
        } catch (Exception ex) {