424f5b446096c561def92cac2fa07c95f6b71568.svn-base 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package com.chinacreator.process.dao;
  2. import com.chinacreator.common.exception.BusinessException;
  3. import com.chinacreator.process.bean.ChannelOrderBean;
  4. import com.chinacreator.process.bean.NetOrderBean;
  5. import com.chinacreator.process.bean.OrderLog;
  6. import com.chinacreator.process.util.DataSource;
  7. import com.frameworkset.common.poolman.PreparedDBUtil;
  8. import com.frameworkset.common.poolman.SQLExecutor;
  9. import org.apache.log4j.Logger;
  10. import org.springframework.stereotype.Component;
  11. import java.sql.SQLException;
  12. import java.text.SimpleDateFormat;
  13. import java.util.Date;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. @Component
  17. public class NextMonthEffectDao
  18. {
  19. private static Logger logger = Logger.getLogger(NextMonthEffectDao.class);
  20. /**
  21. * 订购次月生效的产品
  22. * @param orderInfo
  23. * @throws BusinessException
  24. */
  25. public void nmaOrder(NetOrderBean orderBean) throws SQLException {
  26. String sql = " MERGE INTO TD_NMA_ORDER_RELATIONS A USING (SELECT #[cpid] CPID, #[spid] SPID, #[userid] USERID FROM DUAL) B "+
  27. " ON (A.USERID = B.USERID AND A.CPID = B.CPID AND A.SPID = B.SPID ) "+
  28. " WHEN MATCHED THEN UPDATE SET "+
  29. " ORDERTIME = TO_DATE(#[ordertimestr], 'yyyymmddhh24miss'), CANCELTIME = NULL, CANCELCHANNEL = NULL, CANCELCHANNEL2 = NULL, SYNCTIME = NULL, ENDTIME = NULL, SYNCSTATUS = #[syncstatus], "+
  30. " STATUS = #[status], ORDERCHANNEL = #[orderchannel], ORDERCHANNEL2 = #[channel2], EFFECTTIME = TO_DATE(#[effecttimestr], 'yyyymmddhh24miss'), ORDERSTAFFID = #[staffid], ORDERDEPARTID = #[departid] "+
  31. " WHEN NOT MATCHED THEN INSERT ( "+
  32. " ID, CPID, SPID, USERID, ORDERTIME, STATUS, PROVINCE, AREA, ORDERCHANNEL,ORDERCHANNEL2, EFFECTTIME, SYNCSTATUS, ORDERSTAFFID, ORDERDEPARTID, ORDERSTATUS "+
  33. " )VALUES( "+
  34. " TO_CHAR(SYSDATE, 'yyyymmddhh24miss') || SEQ_COMMON6.nextval, #[cpid], #[spid], #[userid], TO_DATE(#[ordertimestr], 'yyyymmddhh24miss'), #[status], #[province], "+
  35. " #[area], #[orderchannel], #[channel2], TO_DATE(#[effecttimestr], 'yyyymmddhh24miss'), #[syncstatus], #[staffid], #[departid], #[orderstatus] "+
  36. " )";
  37. SQLExecutor.insertBean(DataSource.NET3G, sql, orderBean);
  38. }
  39. /**
  40. * 订购次月生效的产品
  41. * @param orderInfo
  42. * @throws BusinessException
  43. */
  44. public void nmaCancel(NetOrderBean orderBean) throws SQLException {
  45. //System.out.println(orderBean.getCanceltimestr()+"||"+orderBean.getEndtimestr()+"||"+orderBean.getEffecttimestr());
  46. String sql = " MERGE INTO TD_NMA_ORDER_RELATIONS A USING (SELECT #[cpid] CPID, #[spid] SPID, #[userid] USERID FROM DUAL) B "+
  47. " ON (A.USERID = B.USERID AND A.CPID = B.CPID AND A.SPID = B.SPID ) "+
  48. " WHEN MATCHED THEN UPDATE SET "+
  49. " CANCELTIME = TO_DATE(#[canceltimestr], 'yyyymmddhh24miss'), SYNCSTATUS = #[syncstatus], STATUS = '1', SYNCTIME = NULL, "+
  50. " CANCELCHANNEL = #[cancelchannel], CANCELCHANNEL2 = #[channel2], ORDERSTATUS = #[orderstatus], "+
  51. " EFFECTTIME = NULL, ENDTIME = TO_DATE(#[endtimestr], 'yyyymmddhh24miss'), CANCELSTAFFID = #[staffid], CANCELDEPARTID = #[departid] ";
  52. SQLExecutor.insertBean(DataSource.NET3G, sql, orderBean);
  53. }
  54. /**
  55. * 获取配置数据
  56. * @param spid
  57. * @return
  58. * @throws SQLException
  59. */
  60. public List<HashMap> qryAopConf(String spid) throws SQLException {
  61. String sql = "SELECT * FROM TB_SP_AOP_CONFIG WHERE ENABLE_TAG = '2' AND SP_ID = ? ";
  62. PreparedDBUtil pdb = new PreparedDBUtil();
  63. try {
  64. pdb.preparedSelect(DataSource.NET3G, sql);
  65. pdb.setString(1, spid);
  66. return pdb.executePreparedForList(HashMap.class);
  67. } catch (SQLException e) {
  68. e.printStackTrace();
  69. }
  70. return null;
  71. }
  72. /**
  73. * 获取已有订购关系
  74. * @param orderInfo
  75. * @return
  76. * @throws SQLException
  77. */
  78. public List<HashMap> qryNmaOrder(NetOrderBean orderBean) throws SQLException {
  79. String sql = " SELECT "+
  80. " STATUS, SYNCSTATUS, "+
  81. " TO_CHAR(ENDTIME,'YYYYMMDDHH24MISS') ENDTIME, "+
  82. " TO_CHAR(ORDERTIME,'YYYYMMDDHH24MISS') ORDERTIME, "+
  83. " TO_CHAR(CANCELTIME,'YYYYMMDDHH24MISS') CANCELTIME, "+
  84. " TO_CHAR(EFFECTTIME,'YYYYMMDDHH24MISS') EFFECTTIME, "+
  85. " TO_CHAR(ORDERTIME,'YYYYMM') ORDERMONTH, "+
  86. " TO_CHAR(CANCELTIME,'YYYYMM') CANCELMONTH, "+
  87. " TO_CHAR(SYSDATE,'YYYYMM') CURRMONTH "+
  88. " FROM TD_NMA_ORDER_RELATIONS A "+
  89. " WHERE A.USERID = ? AND CPID = ? AND SPID = ? ";
  90. PreparedDBUtil pdb = new PreparedDBUtil();
  91. try {
  92. pdb.preparedSelect(DataSource.NET3G, sql);
  93. pdb.setString(1, orderBean.getUserid());
  94. pdb.setString(2, orderBean.getCpid());
  95. pdb.setString(3, orderBean.getSpid());
  96. return pdb.executePreparedForList(HashMap.class);
  97. } catch (SQLException e) {
  98. e.printStackTrace();
  99. }
  100. return null;
  101. }
  102. /**
  103. * 获取生效时间,下月第一天0时0分0秒
  104. * @return
  105. * @throws SQLException
  106. */
  107. public Date getEffecttime() throws SQLException {
  108. String sql = "SELECT TO_DATE(TO_CHAR(LAST_DAY(SYSDATE)+1,'YYYYMMDD')||'000000','YYYYMMDDHH24MISS') EFFECTTIME FROM DUAL ";
  109. return SQLExecutor.queryObject(Date.class, DataSource.NET3G, sql, null);
  110. }
  111. /**
  112. * 根据订购时间获取生效时间,下月第一天0时0分0秒
  113. * @return
  114. * @throws SQLException
  115. */
  116. public Date getEffecttime(String ordertime) throws SQLException {
  117. PreparedDBUtil pdb = new PreparedDBUtil();
  118. String sql = "SELECT TO_DATE(TO_CHAR(LAST_DAY(TO_DATE(?,'YYYYMMDDHH24MISS'))+1,'YYYYMMDD')||'000000','YYYYMMDDHH24MISS') EFFECTTIME FROM DUAL ";
  119. try {
  120. pdb.preparedSelect(DataSource.NET3G, sql);
  121. pdb.setString(1, ordertime);
  122. pdb.executePrepared();
  123. return pdb.getDate(0, 0);
  124. } catch (SQLException e) {
  125. e.printStackTrace();
  126. }
  127. return null;
  128. }
  129. /**
  130. * 根据退订时间获取结束时间
  131. */
  132. public Date getEndtime(String canceltime) throws SQLException{
  133. PreparedDBUtil pdb = new PreparedDBUtil();
  134. String sql = "SELECT trunc(last_day(to_date(?, 'yyyymmddhh24miss')))+1-1/86400 FROM DUAL";
  135. try {
  136. pdb.preparedSelect(DataSource.NET3G, sql);
  137. pdb.setString(1, canceltime);
  138. pdb.executePrepared();
  139. return pdb.getDate(0, 0);
  140. } catch (SQLException e) {
  141. e.printStackTrace();
  142. }
  143. return null;
  144. }
  145. /**
  146. * 添加订购日志
  147. * @param orderLog
  148. * @throws SQLException
  149. */
  150. public void addNmaOrderLog(OrderLog orderLog) throws SQLException {
  151. try {
  152. String sql = " insert into TL_NMA_ORDER_LOG (id, userid, province, area, apptype, "+
  153. " channel, cpid, spid, errorcode, errorinfo, status, orderstatus, ordertype, inserttime) values ( "+
  154. " TO_CHAR(SYSDATE, 'yyyymmddhh24miss') || SEQ_COMMON6.nextval, #[userid], #[province], #[area], #[apptype], #[channel], #[cpid], "+
  155. " #[spid], #[errorcode], #[errorinfo], #[status], #[orderstatus], #[ordertype], sysdate) ";
  156. SQLExecutor.insertBean(DataSource.NET3G, sql, orderLog);
  157. } catch (SQLException e) {
  158. e.printStackTrace();
  159. logger.error(orderLog.getUserid()+"=>保存订购日志失败", e);
  160. }
  161. }
  162. public List<HashMap> findOrderRela(NetOrderBean orderBean) throws SQLException {
  163. String sql = " SELECT CPID,SPID,USERID, ORDERCHANNEL, CANCELCHANNEL, TO_CHAR(ORDERTIME, 'yyyymmddhh24miss') ORDERTIME, "+
  164. " TO_CHAR(endtime, 'yyyymmddhh24miss') endtime, TO_CHAR(CANCELTIME, 'yyyymmddhh24miss') CANCELTIME, "+
  165. " (case when endtime is null then '0' when endtime >= sysdate then '1' else '2' end) STATUS "+
  166. " FROM TD_ORDER_RELATIONS WHERE USERID = ? AND CPID = ? AND SPID = ? ";
  167. PreparedDBUtil pdb = new PreparedDBUtil();
  168. try {
  169. pdb.preparedSelect(DataSource.NET3G, sql);
  170. pdb.setString(1, orderBean.getUserid());
  171. pdb.setString(2, orderBean.getCpid());
  172. pdb.setString(3, orderBean.getSpid());
  173. return pdb.executePreparedForList(HashMap.class);
  174. } catch (SQLException e) {
  175. e.printStackTrace();
  176. }
  177. return null;
  178. }
  179. public Date getEndDayOfCurrentMonth() throws SQLException {
  180. String sql = "select to_char(trunc(last_day(sysdate))+1-1/86400, 'yyyymmddhh24miss') from dual";
  181. return SQLExecutor.queryObject(Date.class, DataSource.NET3G, sql, null);
  182. }
  183. public static void main(String[] args) throws SQLException {
  184. NextMonthEffectDao dao = new NextMonthEffectDao();
  185. System.out.println(dao.getEffecttime("20220512154147"));
  186. }
  187. }