Newer
Older
pgdsc / src / com / szpg / task / ReadAssetInSpectionTask.java
T440 on 10 Sep 2019 3 KB 修改巡检数据同步功能
package com.szpg.task;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.szpg.db.dao.PgAssetInSpectionDao;
import com.szpg.db.dao.impl.PgAssetInSpectionImpl;
import com.szpg.db.data.PgAssetInSpectionPlan;
import com.szpg.db.data.PgAssetPlanJson;
import com.szpg.test;
import com.szpg.util.HttpRequest;
import org.apache.log4j.Logger;

import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class ReadAssetInSpectionTask implements Runnable{
    private org.apache.log4j.Logger logger = Logger.getLogger(this.getClass().getName());
    final String tableName="ASSET_INSPECTION_PLAN";
    final String url="http://10.10.2.31:9056/GLYW/api/Common/LoadIndexData";
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    @Override
    public void run(){
        PgAssetInSpectionDao pgAssetInSpectionDao=new PgAssetInSpectionImpl();

        String startTime=pgAssetInSpectionDao.findLastRecordTime();//上次同步数据最后记录时间
        String endTime= dateFormat.format(new Date());//当前时间

        if(startTime==null)
            startTime=getYestodayStr();

        StringBuilder sb = new StringBuilder();
        sb.append("tableName=").append(tableName);
        sb.append("&page=-1");
        sb.append("&strWhere= UPDATEDATE");
        sb.append(" between '").append(startTime);
        sb.append("' and '").append(endTime);
        sb.append("'");

        logger.info("开始请求巡检数据");
        String jsonStr = HttpRequest.sendPostByHttp(url, sb.toString());
        if (jsonStr.equals(""))
            logger.error("巡检数据请求失败");
        else {
            saveAsFileWriter(jsonStr,"d:\\test.txt");
            insertDB(pgAssetInSpectionDao, jsonStr);
            logger.error("巡检数据存储成功");
        }

    }

    private void saveAsFileWriter(String content,String filePath) {

        FileWriter fwriter = null;
        try {
            fwriter = new FileWriter(filePath);
            fwriter.write(content);
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                fwriter.flush();
                fwriter.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void insertDB(PgAssetInSpectionDao pgAssetInSpectionDao,String jsonStr)
    {
        List<PgAssetInSpectionPlan> pgAssetInSpectionPlanList= getAssetByJsonString(jsonStr);
        logger.info("同步巡检数据条数:"+ String.valueOf(pgAssetInSpectionPlanList.size()));
        pgAssetInSpectionDao.addAssetInSpectionPlan(pgAssetInSpectionPlanList);
    }

    private List<PgAssetInSpectionPlan> getAssetByJsonString(String jsonStr){
        try {
            String jsonString=String.valueOf(JSON.parse(jsonStr));
            PgAssetPlanJson pgAssetPlanJson = JSONObject.parseObject(jsonString, new TypeReference<PgAssetPlanJson>() {});
            List<PgAssetInSpectionPlan> pgAssetInSpectionPlanList = pgAssetPlanJson.getRows();
            return pgAssetInSpectionPlanList;
        }
        catch(Exception ex){
            logger.error(ex.getMessage());
            return null;
        }

    }

    public String getYestodayStr() {
        Date dt = new Date();
        String yesToday = "";
        Date dtt = (Date) dt.clone();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dtt);
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        yesToday = dateFormat.format(calendar.getTime());

        return yesToday;
    }

}