新起線程任務

//新起線程清洗
            new Thread(new FilterResultThread(filter)).start();  
            renderJSON(ResultInfo.success(filter,""));
package job;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.persistence.EntityManager;

import net.sf.json.JSONObject;

import models.FilterResult;

import play.Logger;
import play.Play;
import play.db.jpa.JPA;
import play.db.jpa.Transactional;
import play.jobs.Every;
import play.jobs.Job;
import util.Constants;
import util.DBHelper;
import util.DBUtil;
import util.DateUtil;
import util.DocUtil;
import util.SqlHelper;
import util.XString;

import com.google.gson.Gson;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;

/**
 * @ClassName: FilterResultJob
 * @Description: 清洗詞 任務
 * @author wlj
 * @date 2016-9-22 下午4:27:29
 * 
 */
public class FilterResultThread implements Runnable {
    private FilterResult filter;

    public FilterResultThread(FilterResult filter) {
        this.filter = filter;
    }

    @Override
    @Transactional
    public void run() {
        if (JPA.local.get() == null) {
            EntityManager em = JPA.newEntityManager();
            final JPA jpa = new JPA();
            jpa.entityManager = em;
            JPA.local.set(jpa);
        }
        String et = filter.createTimeStr;
        updateResult(et, filter);
        JPA.em().close();
    }

    static String oldet = "";

    public static void updateResult(String et, FilterResult filter) {
        JPA.em().getTransaction().begin();
        System.out.println(oldet + "****" + et);
        HashMap<String, Object> condition = new HashMap<String, Object>();
        condition.put("tag", "t" + filter.taskId);
        condition.put("et", et);
        condition.put("ps", 5000);
        condition.put("p", 1);
        condition.put("sb", "real_time");
        condition.put("so", -1);
        condition.put("ch", "0");
        condition.put("status", "0");
        JSONObject json = DocUtil.getNewForFilter(condition, true, true,
                filter.word,filter.userName);
        List<Map> result=json.getJSONArray("result");
        int num=json.getInt("num");
        System.out.println("result.size=="+result.size());
        if (result.size() <5000 || oldet == et) {
            System.out.println("完成");
            String sql="update filter_result set status='完成' where id="+filter.id;
            System.out.println(sql);
            SqlHelper.updateBySql(sql);
            JPA.em().getTransaction().commit();
        } else {
            oldet = et;
            et = result.get(result.size() - 1).get("real_time").toString();
            String sql="update filter_result set num=num+"+num+" , do_time='"+et+"' where id="+filter.id;
            System.out.println(sql);
            SqlHelper.updateBySql(sql);
            JPA.em().getTransaction().commit();
            updateResult(et, filter);
        }

    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章