chen.llin
14 小时以前 9c2c61a775bec01096ab0459b90e46d2f1d8d439
src/main/java/com/zy/task/CrnTiltRecordTask.java
@@ -94,32 +94,43 @@
            
            log.info("找到 {} 台堆垛机,开始记录倾斜度数据", crnSlaves.size());
            Date recordDate = new Date();
            Date recordTime = new Date();
            // 计算今天的开始时间(用于去重判断)
            Calendar cal = Calendar.getInstance();
            cal.setTime(recordDate);
            cal.setTime(recordTime);
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MILLISECOND, 0);
            Date recordDateOnly = cal.getTime();
            Date todayStart = cal.getTime();
            Date todayEnd = new Date(todayStart.getTime() + 24 * 60 * 60 * 1000 - 1);
            int successCount = 0;
            int failCount = 0;
            for (CrnSlave crnSlave : crnSlaves) {
                try {
                    // 检查今天是否已经记录过(使用 record_time 的日期部分)
                    EntityWrapper<CrnTiltRecord> checkWrapper = new EntityWrapper<>();
                    checkWrapper.eq("crn_no", crnSlave.getId());
                    checkWrapper.ge("record_time", todayStart);
                    checkWrapper.le("record_time", todayEnd);
                    int count = crnTiltRecordService.selectCount(checkWrapper);
                    if (count > 0) {
                        log.info("堆垛机{}今天已记录过倾斜度数据,跳过", crnSlave.getId());
                        continue;
                    }
                    // 读取倾斜度数据
                    CrnTiltRecord record = readTiltDataFromPLC(crnSlave);
                    if (record != null) {
                        record.setCrnNo(crnSlave.getId());
                        record.setRecordDate(recordDateOnly);
                        record.setRecordTime(recordDate);
                        record.setRecordTime(recordTime);
                        record.setRecordType("STARTUP"); // 启动时记录
                        // 获取上次记录用于对比
                        EntityWrapper<CrnTiltRecord> lastWrapper = new EntityWrapper<>();
                        lastWrapper.eq("crn_no", crnSlave.getId());
                        lastWrapper.orderBy("record_date", false);
                        lastWrapper.orderBy("record_time", false);
                        lastWrapper.last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY");
                        CrnTiltRecord lastRecord = crnTiltRecordService.selectOne(lastWrapper);
@@ -179,26 +190,31 @@
                return;
            }
            Date recordDate = new Date();
            Date recordTime = new Date();
            // 计算本周的开始时间(用于去重判断)
            Calendar cal = Calendar.getInstance();
            cal.setTime(recordDate);
            // 设置为当天的开始时间(00:00:00)
            cal.setTime(recordTime);
            // 设置为本周一
            int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
            int daysFromMonday = (dayOfWeek == Calendar.SUNDAY ? 6 : dayOfWeek - Calendar.MONDAY);
            cal.add(Calendar.DAY_OF_MONTH, -daysFromMonday);
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MILLISECOND, 0);
            Date recordDateOnly = cal.getTime();
            Date weekStart = cal.getTime();
            Date weekEnd = new Date(weekStart.getTime() + 7 * 24 * 60 * 60 * 1000 - 1);
            int successCount = 0;
            int failCount = 0;
            for (CrnSlave crnSlave : crnSlaves) {
                try {
                    // 检查本周是否已经记录过
                    // 检查本周是否已经记录过(使用 record_time 的日期部分)
                    EntityWrapper<CrnTiltRecord> wrapper = new EntityWrapper<>();
                    wrapper.eq("crn_no", crnSlave.getId());
                    wrapper.ge("record_date", recordDateOnly);
                    wrapper.le("record_date", new Date(recordDateOnly.getTime() + 24 * 60 * 60 * 1000 - 1));
                    wrapper.ge("record_time", weekStart);
                    wrapper.le("record_time", weekEnd);
                    
                    int count = crnTiltRecordService.selectCount(wrapper);
                    if (count > 0) {
@@ -210,14 +226,12 @@
                    CrnTiltRecord record = readTiltDataFromPLC(crnSlave);
                    if (record != null) {
                        record.setCrnNo(crnSlave.getId());
                        record.setRecordDate(recordDateOnly);
                        record.setRecordTime(recordDate);
                        record.setRecordTime(recordTime);
                        record.setRecordType("AUTO"); // 自动记录
                        // 获取上次记录用于对比
                        EntityWrapper<CrnTiltRecord> lastWrapper = new EntityWrapper<>();
                        lastWrapper.eq("crn_no", crnSlave.getId());
                        lastWrapper.orderBy("record_date", false);
                        lastWrapper.orderBy("record_time", false);
                        lastWrapper.last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY");
                        CrnTiltRecord lastRecord = crnTiltRecordService.selectOne(lastWrapper);
@@ -340,14 +354,7 @@
                return;
            }
            Date recordDate = new Date();
            Calendar cal = Calendar.getInstance();
            cal.setTime(recordDate);
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MILLISECOND, 0);
            Date recordDateOnly = cal.getTime();
            Date recordTime = new Date();
            int successCount = 0;
            int failCount = 0;
@@ -363,14 +370,12 @@
                    CrnTiltRecord record = readTiltDataFromPLC(crnSlave);
                    if (record != null) {
                        record.setCrnNo(crnSlave.getId());
                        record.setRecordDate(recordDateOnly);
                        record.setRecordTime(recordDate);
                        record.setRecordTime(recordTime);
                        record.setRecordType("MANUAL"); // 手动触发
                        // 获取上次记录用于对比
                        EntityWrapper<CrnTiltRecord> lastWrapper = new EntityWrapper<>();
                        lastWrapper.eq("crn_no", crnSlave.getId());
                        lastWrapper.orderBy("record_date", false);
                        lastWrapper.orderBy("record_time", false);
                        lastWrapper.last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY");
                        CrnTiltRecord lastRecord = crnTiltRecordService.selectOne(lastWrapper);