YITRadarApplyTask.java 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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.CommonManager;
  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 YITRadarApplyTask {
  24. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  25. @Autowired
  26. private BaseDao baseDao;
  27. @Autowired
  28. private CommonManager commonManager;
  29. @Scheduled(cron = "0 0/15 * * * ?")
  30. public void syncRadarSpecialofferApply() {
  31. String Master ="YIT.";
  32. try {
  33. List<String> field_values = new ArrayList<>();
  34. SqlRowList rs = baseDao.queryForRowSet("select ml_syncTime from (select * from "+Master+"FXXKDockingErrorlog where nvl(ML_TYPE,' ')='雷达申请下载' and ML_SYNCTIME is not null order by ml_date desc) where rownum=1");
  35. if(rs.next()){
  36. String ml_syncTime = rs.getGeneralString("ml_syncTime");
  37. field_values.add(ml_syncTime);
  38. CrmQueryResult crmQueryResult = commonManager.queryCommon("create_time", field_values, "GT", "create_time", true, 100, "object_XC82g__c", true);
  39. int errorCode = crmQueryResult.getErrorCode();
  40. if(errorCode == 0){
  41. Map<String, Object> data = crmQueryResult.getData();
  42. List<Map<String, Object>> dataList = (List<Map<String,Object>>) data.get("dataList");
  43. //m:成功条数 n:失败条数
  44. int m=0,n=0;
  45. if(dataList.size()>0){
  46. //最后(即最近)一次同步时间
  47. Long create_time_Last = Long.parseLong(new BigDecimal(dataList.get(dataList.size()-1).get("create_time").toString()).toPlainString());
  48. for (int i = 0; i < dataList.size(); i++) {
  49. Object _id = dataList.get(i).get("_id");
  50. Object name = dataList.get(i).get("name");
  51. SimpleDateFormat sdf = new SimpleDateFormat(Constant.YMD_HMS);
  52. //CRM负责人名称字段:owner__r
  53. Map<String,Object> owner__r = (Map<String,Object>) dataList.get(i).get("owner__r");
  54. //负责人姓名
  55. String owner = owner__r==null ? "" : owner__r.get("name").toString();
  56. if(baseDao.checkIf(Master+"RadarSpecialofferApply", "rsa_code='" + name + "'")){
  57. baseDao.execute("insert into "+Master+"FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values("+Master+"FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'雷达申请编号已存在','雷达申请下载','"+name+"')");
  58. logger.info("异常信息:雷达申请编号已存在");
  59. n++;
  60. continue;
  61. }
  62. try {
  63. Object cu_code = baseDao.getFieldDataByCondition(Master+"customer", "max(cu_code) cu_code", "cu_name='" + dataList.get(i).get("field_WycdH__c__r") + "'");
  64. String cuCode = cu_code == null ? "" : cu_code.toString();
  65. Object owner_code = baseDao.getFieldDataByCondition(Master+"employee", "max(em_code) em_code", "em_name='" + owner + "'");
  66. String ownerCode = owner_code == null ? "" : owner_code.toString();
  67. Long create_time = Long.parseLong(new BigDecimal(dataList.get(i).get("create_time").toString()).toPlainString());
  68. Long last_modified_time = Long.parseLong(new BigDecimal(dataList.get(i).get("last_modified_time").toString()).toPlainString());
  69. String record_type = getDisplayField(dataList, i, "record_type", "业务类型");
  70. String life_status = getDisplayField(dataList, i, "life_status", "生命状态");
  71. String field_aaPUk__c = getDisplayField(dataList, i, "field_aaPUk__c", "宋总审批结果");
  72. //创建人编号、名称
  73. Map<String,Object> created_by__r =(Map<String,Object>) dataList.get(i).get("created_by__r");
  74. //最后更新人编号、名称
  75. Map<String,Object> last_modified_by__r =(Map<String,Object>) dataList.get(i).get("last_modified_by__r");
  76. //data_own_department__r deptName
  77. Map<String,Object> data_own_department__r =(Map<String,Object>) dataList.get(i).get("data_own_department__r");
  78. String data_own_department = data_own_department__r==null ? "" : data_own_department__r.get("deptName").toString();
  79. String sql="insert into "+Master+"RadarSpecialofferApply(RSA_ID,RSA_CODE,RSA_OWNERCODE,RSA_OWNER,RSA_CUSTCODE,RSA_CUSTNAME,RSA_APPLYDESCRIBE," +
  80. "RSA_CUSTMONTHUSAGE,RSA_RADARTYPE,RSA_ENDINGPRICE,RSA_EXPECTPRICE,RSA_SZAPPROVALRESULT,RSA_LOCKSTATUS,RSA_OWNERDEPARTMENT," +
  81. "RSA_RECORDTYPE,RSA_LIFESTATUS,RSA_OUTOWNER,RSA_DATAOWNDEPARTMENT,RSA_RECORDMAN,RSA_RECORDDATE,RSA_LASTUPDATEMAN,RSA_LASTUPDATEDATE," +
  82. "RSA_FXXKID)" +
  83. "values("+Master+"RADARSPECIALOFFERAPPLY_seq.nextval,'"+name+"','"+ownerCode+"','"+owner+"','"+cuCode+"','"+getNotNull(dataList,i,"field_WycdH__c__r")+
  84. "','"+getNotNull(dataList,i,"field_saYFn__c")+"','"+getNotNull(dataList,i,"field_8yKdc__c")+"','"+getNotNull(dataList,i,"field_372mv__c")+
  85. "','"+getNotNull(dataList,i,"field_4t01W__c")+"','"+getNotNull(dataList,i,"field_BlP8a__c")+"','"+field_aaPUk__c+
  86. "','"+getNotNull(dataList,i,"lock_status")+"','" +getNotNull(dataList,i,"owner_department")+"','"+record_type+"','"+life_status+"'," +
  87. "'"+getNotNull(dataList,i,"out_owner")+"','"+data_own_department+"','"+created_by__r.get("name")+"',"+
  88. DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(create_time)))+",'"+last_modified_by__r.get("name")+"',"+
  89. DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(last_modified_time)))+",'"+_id+"')";
  90. baseDao.execute(sql);
  91. m++;
  92. }catch (Exception e){
  93. baseDao.execute("insert into "+Master+"FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values("+Master+"FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','雷达申请下载','"+name+"')");
  94. logger.info("异常信息:"+e);
  95. n++;
  96. }
  97. }
  98. baseDao.execute("insert into "+Master+"FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_syncTime) values("+Master+"FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'下载记录"+dataList.size()+"条,成功"+m+"条,失败"+n+"条','雷达申请下载','"+create_time_Last+"')");
  99. }
  100. }else{
  101. baseDao.execute("insert into "+Master+"FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values("+Master+"FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','雷达申请下载','')");
  102. logger.info("异常信息:"+crmQueryResult.getErrorMessage());
  103. }
  104. }
  105. }catch (Exception e){
  106. baseDao.execute("insert into "+Master+"FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values("+Master+"FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+e.getMessage()+"','雷达申请下载','')");
  107. logger.info("异常信息:"+e.getMessage());
  108. e.printStackTrace();
  109. }
  110. }
  111. private String getDisplayField(List<Map<String, Object>> dataList, int i, String Field, String APINAME){
  112. String Master ="YIT.";
  113. String ValueField ="";
  114. Object account_type = dataList.get(i).get(Field);
  115. if(account_type !=null && !"".equals(account_type.toString())){
  116. Object DISPLAYFIELD = baseDao.getFieldDataByCondition(Master+"comboData", "DISPLAYFIELD", "VALUEFIELD='" + account_type + "' and APINAME='"+APINAME+"' and MODULEAPINAME='客户资料'");
  117. ValueField= DISPLAYFIELD==null? "" :DISPLAYFIELD.toString();
  118. }
  119. return ValueField;
  120. }
  121. private String getValueField(String MODULEAPINAME, String APINAME, String DISPLAYFIELD){
  122. String Master ="YIT.";
  123. String result ="";
  124. if(DISPLAYFIELD !=null && !"".equals(DISPLAYFIELD)){
  125. Object VALUEFIELD = baseDao.getFieldDataByCondition(Master+"comboData", "VALUEFIELD", "MODULEAPINAME='" + MODULEAPINAME + "' and APINAME='"+APINAME+"' and DISPLAYFIELD='"+DISPLAYFIELD+"'");
  126. result = VALUEFIELD==null? "" :VALUEFIELD.toString();
  127. }
  128. return result;
  129. }
  130. private String getNotNull(List<Map<String, Object>> dataList, int i, String Field){
  131. return (dataList.get(i).get(Field)==null?"":dataList.get(i).get(Field)).toString();
  132. }
  133. }