e9373929ef2741ef116e5a41e4353e6e93acbdbf.svn-base 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. package com.chinacreator.process.service;
  2. import java.sql.SQLException;
  3. import org.apache.commons.lang.StringUtils;
  4. import org.apache.commons.lang.time.DateFormatUtils;
  5. import org.apache.commons.lang.time.DateUtils;
  6. import org.apache.log4j.Logger;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Component;
  9. import com.chinacreator.common.exception.BusinessException;
  10. import com.chinacreator.process.bean.AreaInfo;
  11. import com.chinacreator.process.bean.NetOrderBean;
  12. import com.chinacreator.process.bean.OrderBean;
  13. import com.chinacreator.process.bean.OrderLog;
  14. import com.chinacreator.process.dao.CSactiveDao;
  15. import com.chinacreator.process.dao.CallerAreacodeDao;
  16. import com.chinacreator.process.dao.NetOrderDao;
  17. import com.chinacreator.process.dao.SysDao;
  18. @Component
  19. public class CSorderService {
  20. private static Logger log = Logger.getLogger(CSorderService.class);
  21. @Autowired
  22. private NetOrderDao netOrderDao;
  23. @Autowired
  24. private CSactiveDao csActiveDao;
  25. @Autowired
  26. private CallerAreacodeDao callerAreacodeDao;
  27. @Autowired
  28. private EcbService ecbService;
  29. @Autowired
  30. private SysDao sysDao;
  31. public void handle(OrderBean bean){
  32. NetOrderBean netOrderBean = trunBean(bean);
  33. if(bean.getOrderType().equals("0")){
  34. compareOrderForNet(netOrderBean);
  35. }else{
  36. compareCancelForNet(netOrderBean);
  37. }
  38. }
  39. public NetOrderBean trunBean(OrderBean bean){
  40. NetOrderBean netOrderBean = new NetOrderBean();
  41. netOrderBean.setId(bean.getId());
  42. netOrderBean.setUserid(bean.getUserid());
  43. netOrderBean.setCpid(bean.getCpid());
  44. netOrderBean.setSpid(bean.getSpid());
  45. AreaInfo areaInfo = callerAreacodeDao.findByCallerhead(bean.getUserid().substring(0, 7));
  46. netOrderBean.setProvince(areaInfo.getProvince());
  47. netOrderBean.setArea(areaInfo.getArea());
  48. netOrderBean.setApptype("");
  49. netOrderBean.setIsexperience(0);
  50. if(bean.getOrderType().equals("0")){
  51. netOrderBean.setStatus("0");
  52. netOrderBean.setOrdertype("0");
  53. netOrderBean.setOrderstatus(2);
  54. netOrderBean.setOrderchannel(bean.getChannel());
  55. }else{
  56. netOrderBean.setStatus("1");
  57. netOrderBean.setOrdertype("1");
  58. netOrderBean.setOrderstatus(4);
  59. netOrderBean.setCancelchannel(bean.getChannel());
  60. }
  61. return netOrderBean;
  62. }
  63. public void compareOrderForNet(NetOrderBean bean) {
  64. String errorcode = "0";
  65. String errorinfo = "";
  66. String state ="3";
  67. NetOrderBean oldOrderBean = null;
  68. try {
  69. oldOrderBean = this.netOrderDao.findOrder(bean.getCpid(), bean.getSpid(), bean.getUserid());
  70. if (oldOrderBean != null && oldOrderBean.getStatus().equals("0")) {
  71. throw new BusinessException("9010", "已订购,请不要重复订购", new String[0]);
  72. }
  73. errorcode = ecbService.order(bean.getUserid(), bean.getCpid(), bean.getSpid());
  74. bean.setOrdertime(sysDao.getSysdate());
  75. this.netOrderDao.order(bean);
  76. } catch (Exception e) {
  77. state ="6";
  78. log.error(bean.getUserid()+"订购失败:",e);
  79. if ((e instanceof BusinessException)) {
  80. errorcode = ((BusinessException) e).getCode();
  81. errorinfo = e.getMessage();
  82. } else {
  83. errorcode = "8000";
  84. errorinfo = "系统忙!";
  85. }
  86. if(StringUtils.isNotEmpty(errorinfo) && errorinfo.length() >200){
  87. errorinfo = errorinfo.substring(0, 200);
  88. }
  89. } finally {
  90. try {
  91. csActiveDao.update(bean.getId(), errorcode, errorinfo,state);
  92. saveNetLog(bean, errorcode, errorinfo, "0");
  93. } catch (SQLException e) {
  94. e.printStackTrace();
  95. }
  96. }
  97. }
  98. public void compareCancelForNet(NetOrderBean bean) {
  99. String errorcode = "0";
  100. String errorinfo = "";
  101. String state ="5";
  102. NetOrderBean oldOrderBean = null;
  103. try {
  104. oldOrderBean = this.netOrderDao.findOrder(bean.getCpid(), bean.getSpid(), bean.getUserid());
  105. if (oldOrderBean == null) {
  106. throw new BusinessException("9026", "本地无订购", new String[0]);
  107. }
  108. if (oldOrderBean != null && !oldOrderBean.getStatus().equals("0")) {
  109. throw new BusinessException("9006", "已退订,请不要重复退订", new String[0]);
  110. }
  111. if(oldOrderBean.getOrdertime().compareTo(DateUtils.parseDate("20170621235959",new String[]{"yyyyMMddHHmmss"})) > 0){
  112. errorcode = ecbService.cancelOrder(bean.getUserid(), bean.getCpid(),bean.getSpid(),DateFormatUtils.format(oldOrderBean.getOrdertime(), "yyyyMMddHHmmss"));
  113. }
  114. bean.setCanceltime(sysDao.getSysdate());
  115. this.netOrderDao.cancelOrder(bean);
  116. } catch (Exception e) {
  117. state ="7";
  118. log.error(bean.getUserid()+"退订失败:",e);
  119. if ((e instanceof BusinessException)) {
  120. errorcode = ((BusinessException) e).getCode();
  121. errorinfo = e.getMessage();
  122. } else {
  123. errorcode = "8000";
  124. errorinfo = "系统忙!";
  125. }
  126. if(StringUtils.isNotEmpty(errorinfo) && errorinfo.length() >200){
  127. errorinfo = errorinfo.substring(0, 200);
  128. }
  129. } finally {
  130. try {
  131. saveNetLog(bean, errorcode, errorinfo, "1");
  132. csActiveDao.update(bean.getId(), errorcode, errorinfo,state);
  133. } catch (SQLException e) {
  134. e.printStackTrace();
  135. }
  136. }
  137. }
  138. public void saveNetLog(NetOrderBean orderInfo, String errorcode, String errorinfo, String ordertype)
  139. throws SQLException {
  140. OrderLog orderLog = new OrderLog();
  141. orderLog.setApptype(orderInfo.getApptype());
  142. orderLog.setChannel(ordertype.equals("0") ? orderInfo.getOrderchannel() : orderInfo.getCancelchannel());
  143. orderLog.setOrderstatus(orderInfo.getOrderstatus());
  144. orderLog.setStatus(Integer.valueOf(orderInfo.getStatus()).intValue());
  145. orderLog.setCpid(orderInfo.getCpid());
  146. orderLog.setIsexperience(orderInfo.getIsexperience());
  147. orderLog.setOrdertype(orderInfo.getOrdertype());
  148. orderLog.setProvince(orderInfo.getProvince());
  149. orderLog.setArea(orderInfo.getArea());
  150. orderLog.setSpid(orderInfo.getSpid());
  151. orderLog.setUserid(orderInfo.getUserid());
  152. orderLog.setErrorcode(errorcode);
  153. orderLog.setErrorinfo(errorinfo);
  154. this.netOrderDao.addOrderLog(orderLog);
  155. }
  156. }