Selaa lähdekoodia

修改下发子站预测文件

xusl 1 kuukausi sitten
vanhempi
commit
4e0fd3c6d5

+ 6 - 2
ipp-idp/src/main/java/com/jiayue/ipp/idp/job/SendJyDqData.java

@@ -42,14 +42,18 @@ public class SendJyDqData {
     @Autowired
     SysParameterService sysParameterService;
 
-    @Scheduled(cron = "0 0 5 * * ?")
+    @Scheduled(cron = "0 19 10 * * ?")
     public void sendJyDqData() {
         int autoSendDq = Integer.parseInt(sysParameterService.getSysParameterAndAll("AUTO_SEND_DQ", "0"));
         if (autoSendDq==1){
             log.info("中心侧下发DQ数据定时开始");
             // 获取ftp通道
             LambdaQueryWrapper<ParsingChannel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-            lambdaQueryWrapper.eq(ParsingChannel::getAnChannelType, "E1");
+            lambdaQueryWrapper.and(wrapper -> wrapper
+                    .eq(ParsingChannel::getAnChannelType, "E1")
+                    .or()
+                    .eq(ParsingChannel::getAnChannelType, "E2")
+            );
             lambdaQueryWrapper.eq(ParsingChannel::getUseStatus, "E1");
             List<ParsingChannel> parsingChannels = parsingChannelService.list(lambdaQueryWrapper);
             //遍历解析路径,对文件进行解析

+ 1 - 1
ipp-idp/src/main/java/com/jiayue/ipp/idp/service/impl/DqInterveneServiceImpl.java

@@ -40,7 +40,7 @@ public class DqInterveneServiceImpl extends ServiceImpl<DqInterveneMapper, DqInt
         QueryWrapper<ForecastPowerShortTerm> queryWrapper = new QueryWrapper<>();
         queryWrapper.between("forecast_time", new Date(startTime), new Date(endTime));
         queryWrapper.eq("station_code",stationCode);
-        queryWrapper.eq("forecast_manufactor","SYJY");
+        queryWrapper.eq("forecast_manufactor",electricField.getBelongForecastManufactor());
         List<ForecastPowerShortTerm> ForecastPowerShortTermList = forecastPowerShortTermService.list(queryWrapper);
         // 整合数据返给前端
         List<DqInterveneDto> presetsShortDtoList = new ArrayList<>();

+ 53 - 42
ipp-idp/src/main/java/com/jiayue/ipp/idp/service/impl/SendJyDqDataServiceImpl.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.jiayue.ipfcst.common.core.util.DateMomentUtil;
 import com.jiayue.ipp.common.data.entity.DqIntervene;
+import com.jiayue.ipp.common.data.entity.ElectricField;
 import com.jiayue.ipp.common.data.entity.ForecastPowerShortTerm;
 import com.jiayue.ipp.idp.dto.ForecastData;
 import com.jiayue.ipp.idp.service.DqInterveneService;
+import com.jiayue.ipp.idp.service.ElectricFieldService;
 import com.jiayue.ipp.idp.service.ForecastPowerShortTermService;
 import com.jiayue.ipp.idp.service.SysParameterService;
 import com.jiayue.ipp.idp.util.FileUtil;
@@ -45,6 +47,8 @@ public class SendJyDqDataServiceImpl{
     DqInterveneService dqInterveneService;
     @Autowired
     VelocityEngine velocityEngine;
+    @Autowired
+    ElectricFieldService electricFieldService;
 
     public void sendDqDownloadFile(String stationCode,String ftpAccount){
         try{
@@ -60,59 +64,66 @@ public class SendJyDqDataServiceImpl{
             Long startTime = DateMomentUtil.getDayStartTime(DateUtils.addDays(new Date(), 1).getTime());
             // 结束时间(开始加24小时再减去1秒)
             Long endTime = DateMomentUtil.getDayLastTime(DateUtils.addDays(new Date(), dqForecastDays).getTime());
+            ElectricField electricField = electricFieldService.findByStationCode(stationCode);
             // 查询短期预测功率
             LambdaQueryWrapper<ForecastPowerShortTerm> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(ForecastPowerShortTerm::getForecastManufactor, "SYJY");
+            queryWrapper.eq(ForecastPowerShortTerm::getForecastManufactor, electricField.getBelongForecastManufactor());
             queryWrapper.eq(ForecastPowerShortTerm::getStationCode, stationCode);
             queryWrapper.between(ForecastPowerShortTerm::getForecastTime, new Date(startTime), new Date(endTime));
 
             List<ForecastPowerShortTerm> forecastPowerShortTermList = this.forecastPowerShortTermService.list(queryWrapper);
-            Map<Long, ForecastPowerShortTerm> forecastPowerShortMap = forecastPowerShortTermList.stream()
-                    .collect(Collectors.toMap(
-                            myObject -> myObject.getForecastTime().getTime(), // keyMapper,将Date转换为long
-                            myObject -> myObject, // valueMapper,保持原对象
-                            (existing, replacement) -> existing // mergeFunction,处理重复key的情况,这里简单地保留现有的value
-                    ));
+            // 判断短期实时总数是否满足未来10天的数据
+            if (forecastPowerShortTermList.size() >= dqForecastDays * 96) {
+                Map<Long, ForecastPowerShortTerm> forecastPowerShortMap = forecastPowerShortTermList.stream()
+                        .collect(Collectors.toMap(
+                                myObject -> myObject.getForecastTime().getTime(), // keyMapper,将Date转换为long
+                                myObject -> myObject, // valueMapper,保持原对象
+                                (existing, replacement) -> existing // mergeFunction,处理重复key的情况,这里简单地保留现有的value
+                        ));
 
-            // 人工干预
-            QueryWrapper<DqIntervene> dqInterveneQueryWrapper = new QueryWrapper<>();
-            dqInterveneQueryWrapper.between("forecast_time", new Date(startTime), new Date(endTime));
-            dqInterveneQueryWrapper.eq("station_code",stationCode);
-            List<DqIntervene> dqInterveneList = dqInterveneService.list(dqInterveneQueryWrapper);
-            Map<Long, DqIntervene> dqInterveneMap = dqInterveneList.stream()
-                    .collect(Collectors.toMap(
-                            myObject -> myObject.getForecastTime().getTime(), // keyMapper,将Date转换为long
-                            myObject -> myObject, // valueMapper,保持原对象
-                            (existing, replacement) -> existing // mergeFunction,处理重复key的情况,这里简单地保留现有的value
-                    ));
+                // 人工干预
+                QueryWrapper<DqIntervene> dqInterveneQueryWrapper = new QueryWrapper<>();
+                dqInterveneQueryWrapper.between("forecast_time", new Date(startTime), new Date(endTime));
+                dqInterveneQueryWrapper.eq("station_code",stationCode);
+                List<DqIntervene> dqInterveneList = dqInterveneService.list(dqInterveneQueryWrapper);
+                Map<Long, DqIntervene> dqInterveneMap = dqInterveneList.stream()
+                        .collect(Collectors.toMap(
+                                myObject -> myObject.getForecastTime().getTime(), // keyMapper,将Date转换为long
+                                myObject -> myObject, // valueMapper,保持原对象
+                                (existing, replacement) -> existing // mergeFunction,处理重复key的情况,这里简单地保留现有的value
+                        ));
 
-            List<ForecastData> vList = new ArrayList<>();
+                List<ForecastData> vList = new ArrayList<>();
 
-            for (Long tempTime = startTime.longValue(); tempTime <= endTime.longValue(); tempTime = tempTime + 15 * 60 * 1000L) {
-                ForecastData forecastData = new ForecastData();
-                forecastData.setTime(DateFormatUtils.format(tempTime, "yyyy-MM-dd HH:mm:ss"));
-                if (dqInterveneMap.get(tempTime)!=null){
-                    forecastData.setPower(dqInterveneMap.get(tempTime).getActivePower().toString());
-                }
-                else if (forecastPowerShortMap.get(tempTime)!=null){
-                    forecastData.setPower(forecastPowerShortMap.get(tempTime).getFpValue().toString());
-                }
-                else{
-                    forecastData.setPower("");
+                for (Long tempTime = startTime.longValue(); tempTime <= endTime.longValue(); tempTime = tempTime + 15 * 60 * 1000L) {
+                    ForecastData forecastData = new ForecastData();
+                    forecastData.setTime(DateFormatUtils.format(tempTime, "yyyy-MM-dd HH:mm:ss"));
+                    if (dqInterveneMap.get(tempTime)!=null){
+                        forecastData.setPower(dqInterveneMap.get(tempTime).getActivePower().toString());
+                    }
+                    else if (forecastPowerShortMap.get(tempTime)!=null){
+                        forecastData.setPower(forecastPowerShortMap.get(tempTime).getFpValue().toString());
+                    }
+                    else{
+                        forecastData.setPower("");
+                    }
+                    vList.add(forecastData);
                 }
-                vList.add(forecastData);
-            }
 
-            VelocityContext velocityContext = new VelocityContext();
-            velocityContext.put("vList", vList);
-            // 系统当前日期
-            velocityContext.put("currentTime", DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
-            StringWriter writer = new StringWriter();
-            org.apache.velocity.Template template = this.velocityEngine.getTemplate(FileUtil.getResourceBasePath() + "/templates/send_dq.vm");
-            template.merge(velocityContext, writer);
-            String dateDir = DateFormatUtils.format(new Date(startTime), "yyyyMMdd");
-            String vmFileName = "download_"+ftpAccount+"_dq_"+dateDir+".WPD";
-            createSendDqFile(writer,new File(distPath + File.separator+vmFileName));
+                VelocityContext velocityContext = new VelocityContext();
+                velocityContext.put("vList", vList);
+                // 系统当前日期
+                velocityContext.put("currentTime", DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+                StringWriter writer = new StringWriter();
+                org.apache.velocity.Template template = this.velocityEngine.getTemplate(FileUtil.getResourceBasePath() + "/templates/send_dq.vm");
+                template.merge(velocityContext, writer);
+                String dateDir = DateFormatUtils.format(new Date(startTime), "yyyyMMdd");
+                String vmFileName = "download_"+ftpAccount+"_dq_"+dateDir+".WPD";
+                createSendDqFile(writer,new File(distPath + File.separator+vmFileName));
+            }
+            else{
+                log.info(electricField.getName()+"短期数据不足10天,不能下发子站文件");
+            }
         }
         catch (Exception e){
             e.printStackTrace();