Commit 5d9cb8a3 authored by Xuxiaodong's avatar Xuxiaodong

梳理流程

parent f3313744
package com.jianju.di.Manager;
import DataBaseManager.GribManager;
import DataBaseManager.ICEandSST;
import DataBaseManager.MongodbManager;
import visad.browser.Convert;
import java.io.*;
import java.sql.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
public class PostGISMannager {
private Connection c ;
......@@ -19,6 +23,23 @@ public class PostGISMannager {
stmt=c.createStatement();
m_tablename=tablename;
}
public void createOisstv2Mon(String tableName) throws SQLException
{
String sql="create table if not exists public."+tableName+
"(byteData bytea,"+
"name char(100),"+
"time integer,"+
"minlon numeric,"+
"maxlon numeric,"+
"maxlat numeric,"+
"minlat numeric,"+
"type char(50),"+
"dataCode char(50),"+
"geom geometry);";
stmt.executeUpdate(sql);
}
public void createOlrDay(String tableName) throws SQLException
{
String sql="create table if not exists public."+tableName+
......@@ -35,6 +56,8 @@ public class PostGISMannager {
stmt.executeUpdate(sql);
}
public void createTableGDAS(String tableName) throws SQLException {
String sql="create table if not exists public."+tableName+
"(byteData bytea,"+
......@@ -50,14 +73,60 @@ public class PostGISMannager {
stmt.executeUpdate(sql);
}
public int insertGodasToPG(String tableName,String gdasName) throws IOException, SQLException, ParseException {
public int insertOisstv2MonToPG(String tableName,String dataPath,boolean ice) throws ParseException, IOException {
int status=0;
String geom;
String type="oisst";
String datacode="REAN_NOAA_OISST_ORIGINAL";
String time;
float minLat,maxLat,minLon,maxLon;
ICEandSST readICESST=new ICEandSST();
float[] iceData=readICESST.readIceTxtData(dataPath,ice);
minLon=readICESST.getMinlon();
maxLat=readICESST.getMaxlat();
maxLon=readICESST.getMaxlon();
minLat=readICESST.getMinlat();
minLat=-minLat;
ArrayList<Integer> arrayListTimeInt =readICESST.getArrayListTimeInt();
int Time= arrayListTimeInt.get(0);
geom="POLYGON(("+minLon+" "+maxLat+","+maxLon+" "+maxLat+","+maxLon+" "+minLat+","+minLon+" "+minLat+","+minLon+" "+maxLat+"))";
String[] arrName=dataPath.split("\\\\");
String name=arrName[arrName.length-1];
PreparedStatement ps = null;
ResultSet st = null;
try
{
System.out.println("success connect");
String sql ="insert into "+tableName+"(bytedata,name,time,minlon,maxlon,maxlat,minlat,type,dataCode,geom)" +
" values(?,?,?,?,?,?,?,?,?,"+"'"+geom+"'"+")";
try {
ps = c.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
byte[] byteData=floatArrayToByteArray(iceData);
ps.setBytes(1, byteData);
ps.setString(2,name);
ps.setInt(3, Time);
ps.setFloat(4,minLon);
ps.setFloat(5,maxLon);
ps.setFloat(6,maxLat);
ps.setFloat(7,minLat);
ps.setString(8,type);
ps.setString(9,datacode);
status=ps.executeUpdate();
}
catch (Exception ex)
{
ex.printStackTrace(System.out);
}
return status;
}
public int insertGodasToPG(String tableName,String gdasName) throws IOException, SQLException, ParseException {
String name="";
int lines=0;
String geom;
String type="u";
......@@ -75,14 +144,11 @@ public class PostGISMannager {
minLon=1;
maxLon=(float)360;
int hou=1;
//String []s=str.split(",");
name = gdasName;
String[] temp=name.split("\\\\");
String filename=temp[temp.length-1];
String[] strDate=filename.split("\\.");
int intYear= Convert.getInt(strDate[2]);
// intYear=intYear*100;
// intYear=intYear+hou;
if (name.endsWith(".grb")) {
hou++;
......@@ -194,8 +260,6 @@ public class PostGISMannager {
public int insertOlrToPG(String tableName,String dataPath) throws IOException, SQLException, ParseException {
int lines=0;
String geom;
String type="orl";
......@@ -243,7 +307,7 @@ public class PostGISMannager {
ps.setFloat(4,minLon);
ps.setFloat(5,maxLon);
ps.setFloat(6,maxLat);
ps.setFloat(7,maxLat);
ps.setFloat(7,minLat);
ps.setString(8,type);
ps.setString(9,datacode);
status=ps.executeUpdate();
......
package com.jianju.di.entity;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.util.TypeUtils;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author D
*/
@Data
public class Di {
private String type;
......@@ -19,18 +27,22 @@ public class Di {
String DATA_TYPE_1;
String RECEIVE;
String SEND;
@JSONField(format="yyyy-MM-dd HH:mm:ss")
Date TRAN_TIME;
@JSONField(format="yyyy-MM-dd HH:mm:ss")
Date DATA_TIME;
String DATA_FLOW;
String SYSTEM;
String PROCESS_LINK;
@JSONField(format="yyyy-MM-dd HH:mm:ss")
Date PROCESS_START_TIME;
@JSONField(format="yyyy-MM-dd HH:mm:ss")
Date PROCESS_END_TIME;
String FILE_NAME_O;
String FILE_NAME_N;
double FILE_SIZE;
int PROCESS_STATE;
int BUSINESS_STATE;
String FILE_SIZE;
String PROCESS_STATE;
String BUSINESS_STATE;
Date RECORD_TIME;
}
......@@ -38,5 +50,37 @@ public class Di {
public static void main(String[] args) {
List a = new ArrayList();
Di di = new Di();
Di.Fields fields = di.new Fields();
di.setName("OLR数据入库");
di.setOccur_time(System.currentTimeMillis());
di.setMessage("文件级");
di.setType("RT.CTS.STATION.DI");
fields.setDATA_TYPE("OLR");
fields.setDATA_TYPE_1("OLR");
fields.setRECEIVE("CTS");
fields.setSEND("userid001");
fields.setTRAN_TIME(new Date());
fields.setDATA_TIME(new Date()); //文件名时间
fields.setDATA_FLOW("BDMAIN");
fields.setSYSTEM("SDO");
fields.setPROCESS_LINK("1");
fields.setPROCESS_START_TIME(new Date()); //下载数据之前记录的时间
fields.setPROCESS_END_TIME(new Date()); //入库完成时间 或者失败的时间
fields.setFILE_NAME_O("#20200321");
fields.setFILE_NAME_N("#20200321");
fields.setFILE_SIZE("43"); //单位B
fields.setPROCESS_STATE("0"); // 1 正常 0 失败
fields.setBUSINESS_STATE("1"); // 1 正常 0 失败
fields.setRECORD_TIME(new Date());
di.setFields(fields);
a.add(di);
TypeUtils.compatibleWithJavaBean =true;
String s = JSONObject.toJSONString(a);
}
}
......@@ -2,6 +2,7 @@ package com.jianju.di.task;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.util.TypeUtils;
import com.fasterxml.jackson.databind.util.JSONPObject;
import com.jianju.di.Manager.PostGISMannager;
import com.jianju.di.entity.Di;
......@@ -14,9 +15,12 @@ import org.springframework.stereotype.Component;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @author D
......@@ -57,7 +61,7 @@ public class PullFileTask {
@Value("${postgis.tbname}")
private String tbName;
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("YYYYMMdd");
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
......@@ -71,9 +75,11 @@ public class PullFileTask {
c.add(Calendar.DATE, -2);
String fileName = "#"+dateFormat.format(c.getTime());
log.info("开始下载----"+"#"+fileName);
log.info("开始下载----"+fileName);
long beforeDown = System.currentTimeMillis();
boolean download = FtpUtil.download(ftpConfig, remotePath, fileName, localPath, fileName);
if(download)
long afterDown = System.currentTimeMillis();
if(download)
{
log.info("下载成功");
PostGISMannager postGIS = new PostGISMannager(dbHost, dbPort,
......@@ -81,16 +87,14 @@ public class PullFileTask {
postGIS.createOlrDay(tbName);
if(postGIS.insertOlrToPG(tbName, localPath + fileName)>0){
//发送Di
Di di = new Di();
// di.setType();
// di.setName();
// di.setMessage();
// di.setOccur_time();
Di.Fields fields = di.new Fields();
di.setFields(fields);
afterDown = System.currentTimeMillis();
Date start = new Date(beforeDown);
String diJson = sendDi(c.getTime(), new Date(beforeDown), new Date(afterDown), fileName, "1");
OkHttpClient httpClient = new OkHttpClient();
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), JSONObject.toJSONString(di));
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), JSONObject.toJSONString(diJson));
Request request = new Request.Builder()
.url("127.0.0.1:29999/transfer")
.post(requestBody)
......@@ -107,11 +111,7 @@ public class PullFileTask {
} catch (IOException e) {
e.printStackTrace();
}
}
}
else
{
......@@ -119,6 +119,37 @@ public class PullFileTask {
}
}
private String sendDi(Date DATA_TIME,Date PROCESS_START_TIME, Date PROCESS_END_TIME , String FILE_NAME ,String PROCESS_STATE)
{
List a = new ArrayList();
Di di = new Di();
Di.Fields fields = di.new Fields();
di.setName("OLR数据入库");
di.setOccur_time(System.currentTimeMillis());
di.setMessage("文件级");
di.setType("RT.CTS.STATION.DI");
fields.setDATA_TYPE("OLR");
fields.setDATA_TYPE_1("OLR");
fields.setRECEIVE("CTS");
fields.setSEND("userid001");
fields.setTRAN_TIME(new Date());
fields.setDATA_TIME(DATA_TIME); //文件名时间
fields.setDATA_FLOW("BDMAIN");
fields.setSYSTEM("SDO");
fields.setPROCESS_LINK("1");
fields.setPROCESS_START_TIME(PROCESS_START_TIME); //下载数据之前记录的时间
fields.setPROCESS_END_TIME(PROCESS_END_TIME); //入库完成时间 或者失败的时间
fields.setFILE_NAME_O(FILE_NAME);
fields.setFILE_NAME_N(FILE_NAME);
fields.setFILE_SIZE("44032"); //单位B
fields.setPROCESS_STATE(PROCESS_STATE); // 1 正常 0 失败
fields.setBUSINESS_STATE(PROCESS_STATE); // 1 正常 0 失败
fields.setRECORD_TIME(new Date());
di.setFields(fields);
a.add(di);
TypeUtils.compatibleWithJavaBean =true;
return JSONObject.toJSONString(a);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment