CustomerTask.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package com.uas.eis.task;
  2. import com.uas.eis.beans.result.CrmQueryResult;
  3. import com.uas.eis.dao.BaseDao;
  4. import com.uas.eis.dao.SqlRowList;
  5. import com.uas.eis.manager.CustomerManager;
  6. import com.uas.eis.utils.Constant;
  7. import com.uas.eis.utils.DateUtil;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.scheduling.annotation.EnableAsync;
  12. import org.springframework.scheduling.annotation.EnableScheduling;
  13. import org.springframework.scheduling.annotation.Scheduled;
  14. import org.springframework.stereotype.Component;
  15. import java.math.BigDecimal;
  16. import java.text.SimpleDateFormat;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. import java.util.Map;
  20. @Component
  21. @EnableAsync
  22. @EnableScheduling
  23. public class CustomerTask {
  24. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  25. @Autowired
  26. private BaseDao baseDao;
  27. @Autowired
  28. private CustomerManager customerManager;
  29. @Scheduled(cron = "*/10 * * * * ?")
  30. public void syncCustomers() {
  31. try {
  32. List<String> field_values = new ArrayList<>();
  33. SqlRowList rs = baseDao.queryForRowSet("select ml_syncTime from (select * from FXXKDockingErrorlog where 1=2 and nvl(ML_TYPE,' ')='客户资料下载' and ML_SYNCTIME is not null order by ml_date desc) where rownum=1");
  34. if(rs.next()){
  35. String ml_syncTime = rs.getGeneralString("ml_syncTime");
  36. field_values.add(ml_syncTime);
  37. CrmQueryResult crmQueryResult = customerManager.queryCustomer(field_values);
  38. int errorCode = crmQueryResult.getErrorCode();
  39. if(errorCode == 0){
  40. Map<String, Object> data = crmQueryResult.getData();
  41. List<Map<String, Object>> dataList = (List<Map<String,Object>>) data.get("dataList");
  42. //m:成功条数 n:失败条数
  43. int m=0,n=0;
  44. if(dataList.size()>0){
  45. //最后(即最近)一次同步时间
  46. Long create_time_Last = Long.parseLong(new BigDecimal(dataList.get(dataList.size()-1).get("create_time").toString()).toPlainString());
  47. for (int i = 0; i < dataList.size(); i++) {
  48. Object _id = dataList.get(i).get("_id");
  49. Object name = dataList.get(i).get("name");
  50. SimpleDateFormat sdf = new SimpleDateFormat(Constant.YMD_HMS);
  51. if(baseDao.checkIf("customer", "cu_name='" + name + "'")){
  52. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'客户名称已存在','客户资料下载','"+name+"')");
  53. logger.info("异常信息:客户名称已存在");
  54. n++;
  55. continue;
  56. }
  57. try {
  58. Object em_code = baseDao.getFieldDataByCondition("employee", "max(em_code) em_code", "em_name='" + dataList.get(i).get("field_w9e4q__c") + "'");
  59. /*Object[] pa_code = baseDao.getFieldsDataByCondition("Payments", new String[]{"max(pa_id) pa_id","max(pa_code) pa_code" }, "pa_name='" + dataList.get(i).get("UDSSel1__c") + "'");
  60. int cu_paymentid= 0;
  61. String cu_paymentscode= "";
  62. if(pa_code != null && pa_code[0]!=null && pa_code[1]!=null){
  63. cu_paymentid=Integer.parseInt(pa_code[0].toString());
  64. cu_paymentscode=pa_code[1].toString();
  65. }*/
  66. Long create_time = Long.parseLong(new BigDecimal(dataList.get(i).get("create_time").toString()).toPlainString());
  67. Long last_modified_time = Long.parseLong(new BigDecimal(dataList.get(i).get("last_modified_time").toString()).toPlainString());
  68. String sql="insert into customer(cu_id,cu_code,cu_name,cu_shortname,cu_add2,cu_sellercode,cu_sellername,cu_kind," +
  69. //"cu_paymentid,cu_paymentscode,cu_payments," +
  70. "cu_mobile,cu_email,cu_recordman,cu_recorddate,cu_lastdate,cu_auditstatus,cu_auditstatuscode,CU_FXXKID)" +
  71. "values(CUSTOMER_SEQ.nextval,'"+dataList.get(i).get("account_no")+"','"+name+"','"+dataList.get(i).get("UDSText3__c")+"','"+ dataList.get(i).get("address")+"'," +
  72. "'"+em_code+"','"+dataList.get(i).get("field_w9e4q__c")+"','"+dataList.get(i).get("account_type")+"'," +
  73. //cu_paymentid+",'"+cu_paymentscode+"','"+dataList.get(i).get("UDSSel1__c")+"'," +
  74. "'"+dataList.get(i).get("tel")+"','"+dataList.get(i).get("email")+"'," +
  75. "'"+dataList.get(i).get("created_by")+"',"+DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(create_time)))+"," +
  76. DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(last_modified_time)))+",'在录入','ENTERING','"+_id+"')";
  77. baseDao.execute(sql);
  78. m++;
  79. }catch (Exception e){
  80. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','客户资料下载','"+name+"')");
  81. logger.info("异常信息:"+e);
  82. n++;
  83. }
  84. }
  85. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_syncTime) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'下载记录"+dataList.size()+"条,成功"+m+"条,失败"+n+"条','客户资料下载','"+create_time_Last+"')");
  86. }
  87. }else{
  88. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','客户资料下载','')");
  89. logger.info("异常信息:"+crmQueryResult.getErrorMessage());
  90. }
  91. }
  92. }catch (Exception e){
  93. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+e.getMessage()+"','客户资料下载','')");
  94. logger.info("异常信息:"+e.getMessage());
  95. e.printStackTrace();
  96. }
  97. }
  98. }