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
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)
}
}
}