|
@@ -61,6 +61,10 @@ public class FileAnalysisService extends BaseService {
|
|
|
|
|
|
NwpService nwpService;
|
|
|
|
|
|
+ NwpOneService nwpOneService;
|
|
|
+
|
|
|
+ NwpTwoService nwpTwoService;
|
|
|
+
|
|
|
FileAnalysisRecordService fileAnalysisRecordService;
|
|
|
|
|
|
EntityManagerRepository entityManagerRepository;
|
|
@@ -332,62 +336,204 @@ public class FileAnalysisService extends BaseService {
|
|
|
|
|
|
if (file.getName().startsWith("NWP")) {
|
|
|
try {
|
|
|
- List<Nwp> listNwp = fileAnalysisNwp(file);
|
|
|
- Nwp nwpData = null;
|
|
|
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
- if (listNwp != null && listNwp.size() > 0) {
|
|
|
- while (listNwp.get(listNwp.size() - 1).getPreTime() < DateTimeUtil.getMillisecondsSubDay() + 4 * 24 * 60 * 60 * 1000 - timeD) {
|
|
|
- nwpData = new Nwp();
|
|
|
- long time = 0;
|
|
|
- try {
|
|
|
- time = sdf.parse(listNwp.get(listNwp.size() - 96).getPreDate()).getTime() + 24 * 60 * 60 * 1000;
|
|
|
- } catch (ParseException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- nwpData.setFarmId(listNwp.get(listNwp.size() - 96).getFarmId());
|
|
|
- nwpData.setScDate(listNwp.get(listNwp.size() - 96).getScDate());
|
|
|
- nwpData.setScTime(listNwp.get(listNwp.size() - 96).getScTime());
|
|
|
- nwpData.setPreDate(sdf.format(time));
|
|
|
- nwpData.setPreTime(listNwp.get(listNwp.size() - 1).getPreTime() + timeD);
|
|
|
- nwpData.setT(listNwp.get(listNwp.size() - 96).getT());//温度
|
|
|
- nwpData.setRh(listNwp.get(listNwp.size() - 96).getRh());//湿度
|
|
|
- nwpData.setPressure(listNwp.get(listNwp.size() - 96).getPressure());//气压
|
|
|
- nwpData.setSwr(listNwp.get(listNwp.size() - 96).getSwr());//辐射
|
|
|
- nwpData.setLwr(listNwp.get(listNwp.size() - 96).getLwr());//辐射
|
|
|
- nwpData.setDiffuseRadiation(listNwp.get(listNwp.size() - 96).getDiffuseRadiation());//散接辐射
|
|
|
- nwpData.setDirectRadiation(listNwp.get(listNwp.size() - 96).getDirectRadiation());//直接辐射
|
|
|
-
|
|
|
- nwpData.setSenf(listNwp.get(listNwp.size() - 96).getSenf());//热感通量
|
|
|
-
|
|
|
- nwpData.setWs10(listNwp.get(listNwp.size() - 96).getWs10());//10 m 风速
|
|
|
- nwpData.setWs30(listNwp.get(listNwp.size() - 96).getWs30());//30 m 风速
|
|
|
- nwpData.setWs50(listNwp.get(listNwp.size() - 96).getWs50());//50 m 风速
|
|
|
- nwpData.setWs70(listNwp.get(listNwp.size() - 96).getWs70());//70 m 风速
|
|
|
- nwpData.setWs80(listNwp.get(listNwp.size() - 96).getWs80());//80 m 风速
|
|
|
- nwpData.setWs90(listNwp.get(listNwp.size() - 96).getWs90());//90 m 风速
|
|
|
- nwpData.setWs100(listNwp.get(listNwp.size() - 96).getWs100());//100 m 风速
|
|
|
- nwpData.setWs170(listNwp.get(listNwp.size() - 96).getWs170());//170 m 风速
|
|
|
-
|
|
|
- nwpData.setWd10(listNwp.get(listNwp.size() - 96).getWd10());//10 m 风向
|
|
|
- nwpData.setWd30(listNwp.get(listNwp.size() - 96).getWd30());//30 m 风向
|
|
|
- nwpData.setWd50(listNwp.get(listNwp.size() - 96).getWd50());//50 m 风向
|
|
|
- nwpData.setWd70(listNwp.get(listNwp.size() - 96).getWd70());//70 m 风向
|
|
|
- nwpData.setWd80(listNwp.get(listNwp.size() - 96).getWd80());//80 m 风向
|
|
|
- nwpData.setWd90(listNwp.get(listNwp.size() - 96).getWd90());//90 m 风向
|
|
|
- nwpData.setWd100(listNwp.get(listNwp.size() - 96).getWd100());//100 m 风向
|
|
|
- nwpData.setWd170(listNwp.get(listNwp.size() - 96).getWd170());//170 m 风向
|
|
|
- listNwp.add(nwpData);
|
|
|
- }
|
|
|
- } else {
|
|
|
- flag = false;
|
|
|
- log.info(file.getName() + "文件数据内容为空、不能正常解析 、移除该文件、执行数据修正功能");
|
|
|
- }
|
|
|
+ try (InputStreamReader read = new InputStreamReader(new FileInputStream(file), "utf-8");
|
|
|
+ BufferedReader bufferedReader = new BufferedReader(read);){
|
|
|
+ String stringLine;
|
|
|
+ while ((stringLine = bufferedReader.readLine()) != null) {
|
|
|
+ // 读取第一行的场站名称判断是哪期的
|
|
|
+ String[] firstRow = stringLine.split(" ");
|
|
|
+ if (firstRow.length==2){
|
|
|
+ // 获取场站名称
|
|
|
+ String czmc = firstRow[0].split("::")[1];
|
|
|
+ if ("龙阜风电场".equals(czmc)){
|
|
|
+ ycbs = 0;
|
|
|
+ }
|
|
|
+ if ("龙阜风电场一期".equals(czmc)){
|
|
|
+ ycbs = 1;
|
|
|
+ }
|
|
|
+ else if ("龙阜风电场二期".equals(czmc)){
|
|
|
+ ycbs = 2;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //保存NWP实时数据
|
|
|
- Long startTime = listNwp.get(0).getPreTime();
|
|
|
- Long endTime = listNwp.get(listNwp.size() - 1).getPreTime();//删除相同时间数据
|
|
|
- nwpService.deleteBetweenAndPreTime(startTime, endTime, listNwp);
|
|
|
- flag = true;
|
|
|
+ if (ycbs==0) {
|
|
|
+ // 原来总的
|
|
|
+ List<Nwp> listNwp = fileAnalysisNwp(file);
|
|
|
+ Nwp nwpData = null;
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ if (listNwp != null && listNwp.size() > 0) {
|
|
|
+ while (listNwp.get(listNwp.size() - 1).getPreTime() < DateTimeUtil.getMillisecondsSubDay() + 4 * 24 * 60 * 60 * 1000 - timeD) {
|
|
|
+ nwpData = new Nwp();
|
|
|
+ long time = 0;
|
|
|
+ try {
|
|
|
+ time = sdf.parse(listNwp.get(listNwp.size() - 96).getPreDate()).getTime() + 24 * 60 * 60 * 1000;
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ nwpData.setFarmId(listNwp.get(listNwp.size() - 96).getFarmId());
|
|
|
+ nwpData.setScDate(listNwp.get(listNwp.size() - 96).getScDate());
|
|
|
+ nwpData.setScTime(listNwp.get(listNwp.size() - 96).getScTime());
|
|
|
+ nwpData.setPreDate(sdf.format(time));
|
|
|
+ nwpData.setPreTime(listNwp.get(listNwp.size() - 1).getPreTime() + timeD);
|
|
|
+ nwpData.setT(listNwp.get(listNwp.size() - 96).getT());//温度
|
|
|
+ nwpData.setRh(listNwp.get(listNwp.size() - 96).getRh());//湿度
|
|
|
+ nwpData.setPressure(listNwp.get(listNwp.size() - 96).getPressure());//气压
|
|
|
+ nwpData.setSwr(listNwp.get(listNwp.size() - 96).getSwr());//辐射
|
|
|
+ nwpData.setLwr(listNwp.get(listNwp.size() - 96).getLwr());//辐射
|
|
|
+ nwpData.setDiffuseRadiation(listNwp.get(listNwp.size() - 96).getDiffuseRadiation());//散接辐射
|
|
|
+ nwpData.setDirectRadiation(listNwp.get(listNwp.size() - 96).getDirectRadiation());//直接辐射
|
|
|
+
|
|
|
+ nwpData.setSenf(listNwp.get(listNwp.size() - 96).getSenf());//热感通量
|
|
|
+
|
|
|
+ nwpData.setWs10(listNwp.get(listNwp.size() - 96).getWs10());//10 m 风速
|
|
|
+ nwpData.setWs30(listNwp.get(listNwp.size() - 96).getWs30());//30 m 风速
|
|
|
+ nwpData.setWs50(listNwp.get(listNwp.size() - 96).getWs50());//50 m 风速
|
|
|
+ nwpData.setWs70(listNwp.get(listNwp.size() - 96).getWs70());//70 m 风速
|
|
|
+ nwpData.setWs80(listNwp.get(listNwp.size() - 96).getWs80());//80 m 风速
|
|
|
+ nwpData.setWs90(listNwp.get(listNwp.size() - 96).getWs90());//90 m 风速
|
|
|
+ nwpData.setWs100(listNwp.get(listNwp.size() - 96).getWs100());//100 m 风速
|
|
|
+ nwpData.setWs170(listNwp.get(listNwp.size() - 96).getWs170());//170 m 风速
|
|
|
+
|
|
|
+ nwpData.setWd10(listNwp.get(listNwp.size() - 96).getWd10());//10 m 风向
|
|
|
+ nwpData.setWd30(listNwp.get(listNwp.size() - 96).getWd30());//30 m 风向
|
|
|
+ nwpData.setWd50(listNwp.get(listNwp.size() - 96).getWd50());//50 m 风向
|
|
|
+ nwpData.setWd70(listNwp.get(listNwp.size() - 96).getWd70());//70 m 风向
|
|
|
+ nwpData.setWd80(listNwp.get(listNwp.size() - 96).getWd80());//80 m 风向
|
|
|
+ nwpData.setWd90(listNwp.get(listNwp.size() - 96).getWd90());//90 m 风向
|
|
|
+ nwpData.setWd100(listNwp.get(listNwp.size() - 96).getWd100());//100 m 风向
|
|
|
+ nwpData.setWd170(listNwp.get(listNwp.size() - 96).getWd170());//170 m 风向
|
|
|
+ listNwp.add(nwpData);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ flag = false;
|
|
|
+ log.info(file.getName() + "文件数据内容为空、不能正常解析 、移除该文件、执行数据修正功能");
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存NWP实时数据
|
|
|
+ Long startTime = listNwp.get(0).getPreTime();
|
|
|
+ Long endTime = listNwp.get(listNwp.size() - 1).getPreTime();//删除相同时间数据
|
|
|
+ nwpService.deleteBetweenAndPreTime(startTime, endTime, listNwp);
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ else if (ycbs==1) {
|
|
|
+ // 一期
|
|
|
+ List<NwpOne> listNwp = fileAnalysisNwpOne(file);
|
|
|
+ NwpOne nwpData = null;
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ if (listNwp != null && listNwp.size() > 0) {
|
|
|
+ while (listNwp.get(listNwp.size() - 1).getPreTime() < DateTimeUtil.getMillisecondsSubDay() + 4 * 24 * 60 * 60 * 1000 - timeD) {
|
|
|
+ nwpData = new NwpOne();
|
|
|
+ long time = 0;
|
|
|
+ try {
|
|
|
+ time = sdf.parse(listNwp.get(listNwp.size() - 96).getPreDate()).getTime() + 24 * 60 * 60 * 1000;
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ nwpData.setFarmId(listNwp.get(listNwp.size() - 96).getFarmId());
|
|
|
+ nwpData.setScDate(listNwp.get(listNwp.size() - 96).getScDate());
|
|
|
+ nwpData.setScTime(listNwp.get(listNwp.size() - 96).getScTime());
|
|
|
+ nwpData.setPreDate(sdf.format(time));
|
|
|
+ nwpData.setPreTime(listNwp.get(listNwp.size() - 1).getPreTime() + timeD);
|
|
|
+ nwpData.setT(listNwp.get(listNwp.size() - 96).getT());//温度
|
|
|
+ nwpData.setRh(listNwp.get(listNwp.size() - 96).getRh());//湿度
|
|
|
+ nwpData.setPressure(listNwp.get(listNwp.size() - 96).getPressure());//气压
|
|
|
+ nwpData.setSwr(listNwp.get(listNwp.size() - 96).getSwr());//辐射
|
|
|
+ nwpData.setLwr(listNwp.get(listNwp.size() - 96).getLwr());//辐射
|
|
|
+ nwpData.setDiffuseRadiation(listNwp.get(listNwp.size() - 96).getDiffuseRadiation());//散接辐射
|
|
|
+ nwpData.setDirectRadiation(listNwp.get(listNwp.size() - 96).getDirectRadiation());//直接辐射
|
|
|
+
|
|
|
+ nwpData.setSenf(listNwp.get(listNwp.size() - 96).getSenf());//热感通量
|
|
|
+
|
|
|
+ nwpData.setWs10(listNwp.get(listNwp.size() - 96).getWs10());//10 m 风速
|
|
|
+ nwpData.setWs30(listNwp.get(listNwp.size() - 96).getWs30());//30 m 风速
|
|
|
+ nwpData.setWs50(listNwp.get(listNwp.size() - 96).getWs50());//50 m 风速
|
|
|
+ nwpData.setWs70(listNwp.get(listNwp.size() - 96).getWs70());//70 m 风速
|
|
|
+ nwpData.setWs80(listNwp.get(listNwp.size() - 96).getWs80());//80 m 风速
|
|
|
+ nwpData.setWs90(listNwp.get(listNwp.size() - 96).getWs90());//90 m 风速
|
|
|
+ nwpData.setWs100(listNwp.get(listNwp.size() - 96).getWs100());//100 m 风速
|
|
|
+ nwpData.setWs170(listNwp.get(listNwp.size() - 96).getWs170());//170 m 风速
|
|
|
+
|
|
|
+ nwpData.setWd10(listNwp.get(listNwp.size() - 96).getWd10());//10 m 风向
|
|
|
+ nwpData.setWd30(listNwp.get(listNwp.size() - 96).getWd30());//30 m 风向
|
|
|
+ nwpData.setWd50(listNwp.get(listNwp.size() - 96).getWd50());//50 m 风向
|
|
|
+ nwpData.setWd70(listNwp.get(listNwp.size() - 96).getWd70());//70 m 风向
|
|
|
+ nwpData.setWd80(listNwp.get(listNwp.size() - 96).getWd80());//80 m 风向
|
|
|
+ nwpData.setWd90(listNwp.get(listNwp.size() - 96).getWd90());//90 m 风向
|
|
|
+ nwpData.setWd100(listNwp.get(listNwp.size() - 96).getWd100());//100 m 风向
|
|
|
+ nwpData.setWd170(listNwp.get(listNwp.size() - 96).getWd170());//170 m 风向
|
|
|
+ listNwp.add(nwpData);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ flag = false;
|
|
|
+ log.info(file.getName() + "一期NWP文件数据内容为空、不能正常解析 、移除该文件、执行数据修正功能");
|
|
|
+ }
|
|
|
+ //保存NWP实时数据
|
|
|
+ Long startTime = listNwp.get(0).getPreTime();
|
|
|
+ Long endTime = listNwp.get(listNwp.size() - 1).getPreTime();//删除相同时间数据
|
|
|
+ nwpOneService.deleteBetweenAndPreTime(startTime, endTime, listNwp);
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ else if (ycbs==2) {
|
|
|
+ // 二期
|
|
|
+ List<NwpTwo> listNwp = fileAnalysisNwpTwo(file);
|
|
|
+ NwpTwo nwpData = null;
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ if (listNwp != null && listNwp.size() > 0) {
|
|
|
+ while (listNwp.get(listNwp.size() - 1).getPreTime() < DateTimeUtil.getMillisecondsSubDay() + 4 * 24 * 60 * 60 * 1000 - timeD) {
|
|
|
+ nwpData = new NwpTwo();
|
|
|
+ long time = 0;
|
|
|
+ try {
|
|
|
+ time = sdf.parse(listNwp.get(listNwp.size() - 96).getPreDate()).getTime() + 24 * 60 * 60 * 1000;
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ nwpData.setFarmId(listNwp.get(listNwp.size() - 96).getFarmId());
|
|
|
+ nwpData.setScDate(listNwp.get(listNwp.size() - 96).getScDate());
|
|
|
+ nwpData.setScTime(listNwp.get(listNwp.size() - 96).getScTime());
|
|
|
+ nwpData.setPreDate(sdf.format(time));
|
|
|
+ nwpData.setPreTime(listNwp.get(listNwp.size() - 1).getPreTime() + timeD);
|
|
|
+ nwpData.setT(listNwp.get(listNwp.size() - 96).getT());//温度
|
|
|
+ nwpData.setRh(listNwp.get(listNwp.size() - 96).getRh());//湿度
|
|
|
+ nwpData.setPressure(listNwp.get(listNwp.size() - 96).getPressure());//气压
|
|
|
+ nwpData.setSwr(listNwp.get(listNwp.size() - 96).getSwr());//辐射
|
|
|
+ nwpData.setLwr(listNwp.get(listNwp.size() - 96).getLwr());//辐射
|
|
|
+ nwpData.setDiffuseRadiation(listNwp.get(listNwp.size() - 96).getDiffuseRadiation());//散接辐射
|
|
|
+ nwpData.setDirectRadiation(listNwp.get(listNwp.size() - 96).getDirectRadiation());//直接辐射
|
|
|
+
|
|
|
+ nwpData.setSenf(listNwp.get(listNwp.size() - 96).getSenf());//热感通量
|
|
|
+
|
|
|
+ nwpData.setWs10(listNwp.get(listNwp.size() - 96).getWs10());//10 m 风速
|
|
|
+ nwpData.setWs30(listNwp.get(listNwp.size() - 96).getWs30());//30 m 风速
|
|
|
+ nwpData.setWs50(listNwp.get(listNwp.size() - 96).getWs50());//50 m 风速
|
|
|
+ nwpData.setWs70(listNwp.get(listNwp.size() - 96).getWs70());//70 m 风速
|
|
|
+ nwpData.setWs80(listNwp.get(listNwp.size() - 96).getWs80());//80 m 风速
|
|
|
+ nwpData.setWs90(listNwp.get(listNwp.size() - 96).getWs90());//90 m 风速
|
|
|
+ nwpData.setWs100(listNwp.get(listNwp.size() - 96).getWs100());//100 m 风速
|
|
|
+ nwpData.setWs170(listNwp.get(listNwp.size() - 96).getWs170());//170 m 风速
|
|
|
+
|
|
|
+ nwpData.setWd10(listNwp.get(listNwp.size() - 96).getWd10());//10 m 风向
|
|
|
+ nwpData.setWd30(listNwp.get(listNwp.size() - 96).getWd30());//30 m 风向
|
|
|
+ nwpData.setWd50(listNwp.get(listNwp.size() - 96).getWd50());//50 m 风向
|
|
|
+ nwpData.setWd70(listNwp.get(listNwp.size() - 96).getWd70());//70 m 风向
|
|
|
+ nwpData.setWd80(listNwp.get(listNwp.size() - 96).getWd80());//80 m 风向
|
|
|
+ nwpData.setWd90(listNwp.get(listNwp.size() - 96).getWd90());//90 m 风向
|
|
|
+ nwpData.setWd100(listNwp.get(listNwp.size() - 96).getWd100());//100 m 风向
|
|
|
+ nwpData.setWd170(listNwp.get(listNwp.size() - 96).getWd170());//170 m 风向
|
|
|
+ listNwp.add(nwpData);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ flag = false;
|
|
|
+ log.info(file.getName() + "二期NWP文件数据内容为空、不能正常解析 、移除该文件、执行数据修正功能");
|
|
|
+ }
|
|
|
+ //保存NWP实时数据
|
|
|
+ Long startTime = listNwp.get(0).getPreTime();
|
|
|
+ Long endTime = listNwp.get(listNwp.size() - 1).getPreTime();//删除相同时间数据
|
|
|
+ nwpTwoService.deleteBetweenAndPreTime(startTime, endTime, listNwp);
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
} catch (Exception e) {
|
|
|
log.error("解析NWP文件失败", e);
|
|
|
flag = false;
|
|
@@ -1182,8 +1328,8 @@ public class FileAnalysisService extends BaseService {
|
|
|
try {
|
|
|
readNwp = new InputStreamReader(new FileInputStream(file), "utf-8");//考虑到编码格式
|
|
|
bufferedReaderNwp = new BufferedReader(readNwp);
|
|
|
- String fileName = file.getName();
|
|
|
- fileName = fileName.substring(fileName.indexOf("_") + 1, fileName.lastIndexOf("."));
|
|
|
+// String fileName = file.getName();
|
|
|
+// fileName = fileName.substring(fileName.indexOf("_") + 1, fileName.lastIndexOf("."));
|
|
|
String lineTxt;
|
|
|
Nwp nwpData = null;
|
|
|
BigDecimal nwpDirectRadiation = new BigDecimal(0.7); //直接辐射
|
|
@@ -1262,6 +1408,178 @@ public class FileAnalysisService extends BaseService {
|
|
|
return listNwp;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 一期NWP解析
|
|
|
+ *
|
|
|
+ * @param file 文件路径
|
|
|
+ * @return 样例集合
|
|
|
+ */
|
|
|
+ private List<NwpOne> fileAnalysisNwpOne(File file) {
|
|
|
+ List<NwpOne> listNwpOne = new ArrayList<>();
|
|
|
+ if (file.renameTo(file)) {
|
|
|
+ InputStreamReader readNwp = null;
|
|
|
+ BufferedReader bufferedReaderNwp = null;
|
|
|
+ try {
|
|
|
+ readNwp = new InputStreamReader(new FileInputStream(file), "utf-8");//考虑到编码格式
|
|
|
+ bufferedReaderNwp = new BufferedReader(readNwp);
|
|
|
+// String fileName = file.getName();
|
|
|
+// fileName = fileName.substring(fileName.indexOf("_") + 1, fileName.lastIndexOf("."));
|
|
|
+ String lineTxt;
|
|
|
+ NwpOne nwpData = null;
|
|
|
+ BigDecimal nwpDirectRadiation = new BigDecimal(0.7); //直接辐射
|
|
|
+ BigDecimal nwpDiffuseRadiation = new BigDecimal(0.3); //散接辐射
|
|
|
+
|
|
|
+ while ((lineTxt = bufferedReaderNwp.readLine()) != null) {
|
|
|
+ //NWP文件按照Tab方式截取
|
|
|
+ String[] datas = lineTxt.split("\t");
|
|
|
+ if (datas.length >= 35 && datas[0].startsWith("#")) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ if (datas != null && datas.length > 0) {
|
|
|
+ //过滤当天的数据
|
|
|
+ //if (sdf.parse(datas[5]).getTime() >= TimeUtils.getMillisecondsSubDay() + 24 * 60 * 60 *
|
|
|
+ // 1000) {
|
|
|
+ nwpData = new NwpOne();
|
|
|
+
|
|
|
+ //将截取的文件放入nwpData中
|
|
|
+ nwpData.setFarmId(datas[1]);
|
|
|
+ nwpData.setScDate(datas[2]);
|
|
|
+ nwpData.setScTime(datas[3]);
|
|
|
+ nwpData.setPreDate(datas[4]);
|
|
|
+ nwpData.setPreTime(sdf.parse(datas[5]).getTime());//采集时间 与 短期预测时间关联
|
|
|
+ nwpData.setT(NumberUtils.subtract(new BigDecimal(datas[6]), new BigDecimal(273.15)));//温度
|
|
|
+
|
|
|
+ nwpData.setSenf(new BigDecimal(datas[11]).setScale(2, RoundingMode.HALF_UP));//感热
|
|
|
+ nwpData.setSwr(new BigDecimal(datas[9]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
|
|
|
+ nwpData.setLwr(new BigDecimal(datas[10]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
|
|
|
+ nwpData.setPressure(new BigDecimal(datas[8]).setScale(2, RoundingMode.HALF_UP));//地表气压
|
|
|
+ nwpData.setRh(new BigDecimal(datas[7]).setScale(2, RoundingMode.HALF_UP));//2m相对湿度
|
|
|
+ nwpData.setDiffuseRadiation(new BigDecimal(datas[9]).multiply(nwpDiffuseRadiation).setScale(2, RoundingMode.HALF_UP));//散接辐射
|
|
|
+ nwpData.setDirectRadiation(new BigDecimal(datas[9]).multiply(nwpDirectRadiation).setScale(2, RoundingMode.HALF_UP));//直接辐射
|
|
|
+
|
|
|
+ nwpData.setWs10(new BigDecimal(datas[19]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs30(new BigDecimal(datas[20]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs50(new BigDecimal(datas[21]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs70(new BigDecimal(datas[22]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs80(new BigDecimal(datas[23]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs90(new BigDecimal(datas[24]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs100(new BigDecimal(datas[25]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs170(new BigDecimal(datas[26]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd10(new BigDecimal(datas[27]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd30(new BigDecimal(datas[28]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd50(new BigDecimal(datas[29]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd70(new BigDecimal(datas[30]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd80(new BigDecimal(datas[31]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd90(new BigDecimal(datas[32]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd100(new BigDecimal(datas[33]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd170(new BigDecimal(datas[34]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ listNwpOne.add(nwpData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (IOException | ParseException | RuntimeException e) {
|
|
|
+ log.error("系统错误:", e);
|
|
|
+ File destFile = new File(file.getPath().replaceFirst("new", "error"));
|
|
|
+ if (destFile.exists()) {
|
|
|
+ destFile.delete();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ FileUtils.moveFile(file, destFile);
|
|
|
+ } catch (IOException e1) {
|
|
|
+ log.error(file.getName() + "一期NWP文件解析失败", e);
|
|
|
+ }
|
|
|
+ } finally {
|
|
|
+ close(bufferedReaderNwp, readNwp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return listNwpOne;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 二期NWP解析
|
|
|
+ *
|
|
|
+ * @param file 文件路径
|
|
|
+ * @return 样例集合
|
|
|
+ */
|
|
|
+ private List<NwpTwo> fileAnalysisNwpTwo(File file) {
|
|
|
+ List<NwpTwo> listNwpTwo = new ArrayList<>();
|
|
|
+ if (file.renameTo(file)) {
|
|
|
+ InputStreamReader readNwp = null;
|
|
|
+ BufferedReader bufferedReaderNwp = null;
|
|
|
+ try {
|
|
|
+ readNwp = new InputStreamReader(new FileInputStream(file), "utf-8");//考虑到编码格式
|
|
|
+ bufferedReaderNwp = new BufferedReader(readNwp);
|
|
|
+// String fileName = file.getName();
|
|
|
+// fileName = fileName.substring(fileName.indexOf("_") + 1, fileName.lastIndexOf("."));
|
|
|
+ String lineTxt;
|
|
|
+ NwpTwo nwpData = null;
|
|
|
+ BigDecimal nwpDirectRadiation = new BigDecimal(0.7); //直接辐射
|
|
|
+ BigDecimal nwpDiffuseRadiation = new BigDecimal(0.3); //散接辐射
|
|
|
+
|
|
|
+ while ((lineTxt = bufferedReaderNwp.readLine()) != null) {
|
|
|
+ //NWP文件按照Tab方式截取
|
|
|
+ String[] datas = lineTxt.split("\t");
|
|
|
+ if (datas.length >= 35 && datas[0].startsWith("#")) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ if (datas != null && datas.length > 0) {
|
|
|
+ //过滤当天的数据
|
|
|
+ //if (sdf.parse(datas[5]).getTime() >= TimeUtils.getMillisecondsSubDay() + 24 * 60 * 60 *
|
|
|
+ // 1000) {
|
|
|
+ nwpData = new NwpTwo();
|
|
|
+
|
|
|
+ //将截取的文件放入nwpData中
|
|
|
+ nwpData.setFarmId(datas[1]);
|
|
|
+ nwpData.setScDate(datas[2]);
|
|
|
+ nwpData.setScTime(datas[3]);
|
|
|
+ nwpData.setPreDate(datas[4]);
|
|
|
+ nwpData.setPreTime(sdf.parse(datas[5]).getTime());//采集时间 与 短期预测时间关联
|
|
|
+ nwpData.setT(NumberUtils.subtract(new BigDecimal(datas[6]), new BigDecimal(273.15)));//温度
|
|
|
+
|
|
|
+ nwpData.setSenf(new BigDecimal(datas[11]).setScale(2, RoundingMode.HALF_UP));//感热
|
|
|
+ nwpData.setSwr(new BigDecimal(datas[9]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
|
|
|
+ nwpData.setLwr(new BigDecimal(datas[10]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
|
|
|
+ nwpData.setPressure(new BigDecimal(datas[8]).setScale(2, RoundingMode.HALF_UP));//地表气压
|
|
|
+ nwpData.setRh(new BigDecimal(datas[7]).setScale(2, RoundingMode.HALF_UP));//2m相对湿度
|
|
|
+ nwpData.setDiffuseRadiation(new BigDecimal(datas[9]).multiply(nwpDiffuseRadiation).setScale(2, RoundingMode.HALF_UP));//散接辐射
|
|
|
+ nwpData.setDirectRadiation(new BigDecimal(datas[9]).multiply(nwpDirectRadiation).setScale(2, RoundingMode.HALF_UP));//直接辐射
|
|
|
+
|
|
|
+ nwpData.setWs10(new BigDecimal(datas[19]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs30(new BigDecimal(datas[20]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs50(new BigDecimal(datas[21]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs70(new BigDecimal(datas[22]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs80(new BigDecimal(datas[23]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs90(new BigDecimal(datas[24]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs100(new BigDecimal(datas[25]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWs170(new BigDecimal(datas[26]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd10(new BigDecimal(datas[27]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd30(new BigDecimal(datas[28]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd50(new BigDecimal(datas[29]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd70(new BigDecimal(datas[30]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd80(new BigDecimal(datas[31]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd90(new BigDecimal(datas[32]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd100(new BigDecimal(datas[33]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ nwpData.setWd170(new BigDecimal(datas[34]).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ listNwpTwo.add(nwpData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (IOException | ParseException | RuntimeException e) {
|
|
|
+ log.error("系统错误:", e);
|
|
|
+ File destFile = new File(file.getPath().replaceFirst("new", "error"));
|
|
|
+ if (destFile.exists()) {
|
|
|
+ destFile.delete();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ FileUtils.moveFile(file, destFile);
|
|
|
+ } catch (IOException e1) {
|
|
|
+ log.error(file.getName() + "二期NWP文件解析失败", e);
|
|
|
+ }
|
|
|
+ } finally {
|
|
|
+ close(bufferedReaderNwp, readNwp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return listNwpTwo;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* update文件解析
|
|
|
*
|
|
@@ -1782,7 +2100,15 @@ public class FileAnalysisService extends BaseService {
|
|
|
fileType = "DQ2";//二期短期文件
|
|
|
}
|
|
|
} else if (file.getName().startsWith("NWP")) {
|
|
|
- fileType = "NWP";//NWP文件
|
|
|
+ if (ycbs==0){
|
|
|
+ fileType = "NWP";//总NWP
|
|
|
+ }
|
|
|
+ else if (ycbs==1){
|
|
|
+ fileType = "NWP1";//一期NWP
|
|
|
+ }
|
|
|
+ else if (ycbs==2){
|
|
|
+ fileType = "NWP2";//二期NWP
|
|
|
+ }
|
|
|
} else if (file.getName().startsWith("UP")) {
|
|
|
fileType = "UP";//UP文件
|
|
|
} else {
|