c439672e2b8bb44693bbc95b93e3d06367020d3f.svn-base 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package com.chinacreator.process.job;
  2. import com.chinacreator.common.exception.BusinessException;
  3. import com.chinacreator.common.util.URLUtil;
  4. import com.chinacreator.process.bean.WyjLogBean;
  5. import com.chinacreator.process.dao.WyjAsyncOrderDao;
  6. import com.chinacreator.process.util.DesUtil;
  7. import net.sf.json.JSONObject;
  8. import org.apache.log4j.Logger;
  9. import org.quartz.DisallowConcurrentExecution;
  10. import org.quartz.PersistJobDataAfterExecution;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.scheduling.annotation.Scheduled;
  13. import java.net.URLEncoder;
  14. import java.sql.SQLException;
  15. import java.util.ArrayList;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. @PersistJobDataAfterExecution
  19. @DisallowConcurrentExecution
  20. public class WyjAsyncOrderJob {
  21. private static Logger logger = Logger.getLogger("wyjAsyncOrder");
  22. @Autowired
  23. private WyjAsyncOrderDao wyjAsyncOrderDao;
  24. /**
  25. * 订购违约包
  26. * @throws Exception
  27. */
  28. @Scheduled(cron = "0/10 * * * * *")
  29. public void doProcess() throws Exception{
  30. System.out.println("开始订购违约包job");
  31. //获取表中需要订购的数据
  32. List<HashMap> dataList = wyjAsyncOrderDao.queryList();
  33. logger.info("获取数据条数" + dataList.size());
  34. if (dataList!=null&&dataList.size()>0){
  35. //对同一个手机号10分钟内有订购违约金的,往后顺延10分钟后处理
  36. dataList = paraseData(dataList);
  37. logger.info("去重与顺延后剩余数据条数" + dataList.size());
  38. //修改为处理中
  39. for (HashMap<String,String> data : dataList){
  40. wyjAsyncOrderDao.updataResultCode(data.get("ID"),"2");
  41. }
  42. for (HashMap<String,String> data : dataList){
  43. //组件订购参数
  44. logger.info("获取数据" +"USERID: "+ data.get("USERID") + data);
  45. WyjLogBean wyjLogBean = new WyjLogBean();
  46. wyjLogBean.setId(data.get("ID"));
  47. wyjLogBean.setUserid(data.get("USERID"));
  48. wyjLogBean.setProvince(data.get("PROVINCE"));
  49. wyjLogBean.setArea(data.get("AREA"));
  50. wyjLogBean.setCpid(data.get("CPID"));
  51. wyjLogBean.setSpid(data.get("SPID"));
  52. // wyjLogBean.setInserttime(data.get("INSERTTIME"));
  53. wyjLogBean.setResultcode(data.get("RESULTCODE"));
  54. wyjLogBean.setResultinfo(data.get("RESULTINFO"));
  55. wyjLogBean.setChannel(data.get("CHANNEL"));
  56. String netPwd = "wyj44e50";
  57. //发起订购
  58. String result = null;
  59. String url = "";
  60. try{
  61. // url = "http://10.0.17.151:6060/videoif/order.do";//测试环境
  62. // url = "http://172.16.1.81:809/videoif/order.do";
  63. url = wyjAsyncOrderDao.getValue("commonOrderUrl");
  64. String urlStr = url+"order.do?userid="+ URLEncoder.encode(DesUtil.encode(wyjLogBean.getUserid(), netPwd), "UTF-8")+"&cpid="+wyjLogBean.getCpid()+"&spid="+wyjLogBean.getSpid()+"&channel="+data.get("CHANNEL")+"&extend1="+data.get("EXTEND1")+"&apptype=2";
  65. logger.info("url: "+ urlStr);
  66. result = URLUtil.get(urlStr,60000);
  67. logger.info("result: " + result);
  68. }catch (Exception e) {
  69. e.printStackTrace();
  70. logger.info("调videoif订购出错" +"userid"+ wyjLogBean.getUserid() + "url:" + url+"?cpid="+wyjLogBean.getCpid()+"&spid="+wyjLogBean.getSpid()+"&userid="+wyjLogBean.getUserid()+e);
  71. wyjAsyncOrderDao.updataResultCode(wyjLogBean.getId(),"9017");
  72. // wyjLogBean.setResultcode("-1");
  73. // wyjLogBean.setResultinfo("调能力平台订购出错");
  74. // wyjLogBean.setExtend1("1");
  75. // wyjAsyncOrderDao.addWYJLog(wyjLogBean);
  76. }
  77. JSONObject obj = JSONObject.fromObject(result);
  78. if(!obj.getString("resultcode").equals("0")){
  79. wyjAsyncOrderDao.updataResultCode(wyjLogBean.getId(),"3");
  80. // wyjLogBean.setResultcode("-1");
  81. // wyjLogBean.setResultinfo(obj.getString("resultCode") + obj.getString("resultInfo"));
  82. // wyjLogBean.setExtend1("1");
  83. // wyjAsyncOrderDao.addWYJLog(wyjLogBean);
  84. }else {
  85. wyjAsyncOrderDao.updataResultCode(wyjLogBean.getId(),"0");
  86. // wyjLogBean.setResultcode("0");
  87. // wyjLogBean.setResultinfo("成功");
  88. // wyjLogBean.setExtend1("2");
  89. // wyjAsyncOrderDao.addWYJLog(wyjLogBean);
  90. }
  91. }
  92. }
  93. //更新执行状态为2且执行时间超过10分钟的数据为待处理
  94. int res = wyjAsyncOrderDao.updataTooLong();
  95. if(res > 0){
  96. logger.info("更新状态为2处理中且执行时间超过10分钟的数据为待处理的异常数据条数【"+res+"】");
  97. }
  98. System.out.println("结束订购违约包job");
  99. }
  100. private List<HashMap> paraseData(List<HashMap> dataList) throws SQLException {
  101. //去重复后的数据集
  102. List<HashMap> reDataList = new ArrayList<HashMap>();
  103. HashMap<Object, Object> tmpMap = new HashMap<Object, Object>();
  104. for (HashMap dataMap : dataList) {
  105. if(tmpMap.containsKey(dataMap.get("USERID"))){
  106. logger.info("重复数据,"+dataMap);
  107. }else{
  108. tmpMap.put(dataMap.get("USERID"), dataMap);
  109. reDataList.add(dataMap);
  110. }
  111. }
  112. dataList = reDataList;
  113. //获取10分钟内订购数据
  114. List<HashMap> recdataList = wyjAsyncOrderDao.queryRecList();
  115. reDataList = new ArrayList<HashMap>();
  116. if (recdataList!=null&&recdataList.size()>0){
  117. for (HashMap<String,String> data : dataList){
  118. boolean flag = true;
  119. for (HashMap<String,String> recdata : recdataList){
  120. if (recdata.get("USERID").equals(data.get("USERID"))){
  121. wyjAsyncOrderDao.updataInserttime(data.get("ID"),recdata.get("ORDERTIME"));
  122. flag = false;
  123. }
  124. }
  125. if (flag){
  126. reDataList.add(data);
  127. }
  128. }
  129. }else {
  130. reDataList = dataList;
  131. }
  132. return reDataList;
  133. }
  134. }