9209c0c9943b7a46b8e8ed9c7a0f6bf0265d5cc1.svn-base 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package com.chinacreator.process.job;
  2. import com.chinacreator.process.bean.DeveuploadBean;
  3. import com.chinacreator.process.dao.DeveuploadDao;
  4. import org.apache.commons.lang.StringUtils;
  5. import org.apache.log4j.Logger;
  6. import org.quartz.DisallowConcurrentExecution;
  7. import org.quartz.PersistJobDataAfterExecution;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.concurrent.*;
  12. @PersistJobDataAfterExecution
  13. @DisallowConcurrentExecution
  14. public class DeveuploadJob {
  15. private Logger logger = Logger.getLogger("deveuploadlog");
  16. @Autowired
  17. private DeveuploadDao deveuploadDao;
  18. public void doProcess() throws Exception {
  19. logger.info("开始处理科创每日新增订购数据入库job");
  20. try {
  21. //获取表中需要订购的数据
  22. List<HashMap> dataList = deveuploadDao.queryList();
  23. logger.info("获取数据条数" + dataList.size());
  24. if (dataList != null && dataList.size() > 0) {
  25. // CountDownLatch threadSignal = new CountDownLatch(dataList.size());
  26. ExecutorService executorService = new ThreadPoolExecutor(10, 20, 10L, TimeUnit.MINUTES, new LinkedBlockingQueue<Runnable>(), new ThreadPoolExecutor.CallerRunsPolicy());
  27. for (HashMap<String, String> data : dataList) {
  28. deveuploadDao.updataQueryList(data.get("ID"), "2");
  29. }
  30. for (HashMap<String, String> data : dataList) {
  31. DeveuploadService continueService = new DeveuploadService(deveuploadDao,data);
  32. executorService.execute(continueService);
  33. }
  34. executorService.shutdown();
  35. try {
  36. executorService.awaitTermination(5L, TimeUnit.MINUTES);
  37. } catch (InterruptedException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. Thread.sleep(100);
  42. //获取执行状态为2且执行时间超过10分钟的数据为待处理
  43. int i = deveuploadDao.updExecTimeout();
  44. if (i > 0) {
  45. logger.info("更新状态为0处理中且执行时间超过10分钟的数据为待处理的异常数据条数【" + i + "】");
  46. }
  47. }catch (Exception ee){
  48. ee.printStackTrace();
  49. logger.info("科创每日新增订购数据入库job执行出现异常,"+ee.getMessage());
  50. }
  51. logger.info("结束开始处理科创每日新增订购数据入库job");
  52. }
  53. }
  54. class DeveuploadService implements Runnable {
  55. private static Logger logger = Logger.getLogger("deveuploadlog");
  56. private DeveuploadDao deveuploadDao;
  57. private HashMap<String,String> data; //订购数据
  58. public DeveuploadService(DeveuploadDao deveuploadDao, HashMap<String, String> data) {
  59. this.deveuploadDao = deveuploadDao;
  60. this.data = data;
  61. }
  62. @Override
  63. public void run() {
  64. String resultcode = "0";
  65. String resultinfo = "成功";
  66. String id = data.get("ID");
  67. String insertcount = data.get("INSERTCOUNT");
  68. HashMap<String,Object> logmap = new HashMap<String, Object>();
  69. logmap.put("data",data);
  70. try {
  71. String spid = data.get("SPID");
  72. String channel = "kc";
  73. String userid = data.get("USERID");
  74. String busiunit = "畅视事业部";
  75. String province = data.get("PROVINCE");
  76. String area = data.get("AREA");
  77. String orderchannel = data.get("ORDERCHANNEL");
  78. String orderchannel2 = data.get("ORDERCHANNEL2");
  79. String prodname = "";
  80. String prodprmid = "";
  81. String prodnoprmid = "";
  82. String orderchannelid = "";
  83. String orderchannelname = "";
  84. String orderchannelkind = "";
  85. String ordertime = data.get("ORDERTIME");
  86. List<HashMap> list = deveuploadDao.querySpinfo(spid);
  87. logmap.put("spdata",list);
  88. if (list!=null&&list.size()>0){
  89. HashMap spinfo = list.get(0);
  90. prodname = (String) spinfo.get("SPNAME");
  91. prodprmid = (String)spinfo.get("VACPRODUCTID");
  92. if (StringUtils.isEmpty(prodprmid)){
  93. prodnoprmid = spid;
  94. }
  95. }
  96. if (!StringUtils.isEmpty(orderchannel2)){
  97. orderchannelid = orderchannel2;
  98. List<HashMap> list1 = deveuploadDao.queryChannel2(orderchannel2);
  99. logmap.put("channeldata",list1);
  100. if (list1!=null&&list1.size()>0){
  101. HashMap hashMap = list1.get(0);
  102. orderchannelname = (String) hashMap.get("SUBCHANNELNAME");
  103. orderchannelkind = (String) hashMap.get("CHANNELTYPE");
  104. }else {
  105. list1 = deveuploadDao.queryChannel(orderchannel2);
  106. if (list1!=null&&list1.size()>0){
  107. HashMap hashMap = list1.get(0);
  108. orderchannelname = (String) hashMap.get("NAME");
  109. orderchannelkind = (String) hashMap.get("BELONGTO");
  110. }
  111. }
  112. }else if (!StringUtils.isEmpty(orderchannel)){
  113. orderchannelid = orderchannel;
  114. List<HashMap> list1 = deveuploadDao.queryChannel(orderchannel);
  115. logmap.put("channeldata",list1);
  116. if (list1!=null&&list1.size()>0){
  117. HashMap hashMap = list1.get(0);
  118. orderchannelname = (String) hashMap.get("NAME");
  119. orderchannelkind = (String) hashMap.get("BELONGTO");
  120. }
  121. }
  122. DeveuploadBean bean = new DeveuploadBean();
  123. bean.setChannel(channel);
  124. bean.setUserid(userid);
  125. bean.setBusiunit(busiunit);
  126. bean.setProvince(province);
  127. bean.setArea(area);
  128. bean.setProdname(prodname);
  129. bean.setProdprmid(prodprmid);
  130. bean.setProdnoprmid(prodnoprmid);
  131. bean.setOrderchannelid(orderchannelid);
  132. bean.setOrderchannelname(orderchannelname);
  133. bean.setOrderchannelkind(orderchannelkind);
  134. bean.setOrdertime(ordertime);
  135. logmap.put("bean",bean);
  136. deveuploadDao.insertBeans(bean);
  137. }catch (Exception e){
  138. e.printStackTrace();
  139. resultcode = "8000";
  140. resultinfo = e.getMessage();
  141. }finally {
  142. logmap.put("resultcode",resultcode);
  143. logmap.put("resultinfo",resultinfo);
  144. try {
  145. deveuploadDao.updata(id,resultcode,resultinfo,Integer.parseInt(insertcount)+1);
  146. }catch (Exception e){
  147. e.printStackTrace();
  148. logger.error("id: "+id+"修改失败:"+e.getMessage());
  149. }
  150. logger.info(logmap);
  151. }
  152. }
  153. }