SampleApplyTask.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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 SampleApplyTask {
  24. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  25. @Autowired
  26. private BaseDao baseDao;
  27. @Autowired
  28. private CommonManager commonManager;
  29. @Scheduled(cron = "*/10 * * * * ?")
  30. public void syncSampleApply() {
  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. //样品申请主表下载
  38. CrmQueryResult crmQueryResult = commonManager.queryCommon("create_time", field_values, "GT", "create_time", true, 5, "object_83m40__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. if(baseDao.checkIf("ProdInOutApply", "pi_code='" + name + "'")){
  53. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'样品申请编号已存在','样品申请主表下载','"+name+"')");
  54. logger.info("异常信息:样品申请编号已存在");
  55. n++;
  56. continue;
  57. }
  58. try {
  59. Object cu_code = baseDao.getFieldDataByCondition("customer", "max(cu_code) cu_code", "CU_FXXKID='" + dataList.get(i).get("field_l6W5b__c") + "'");
  60. String cuCode =cu_code == null ? "" : cu_code.toString();
  61. Object life_status = dataList.get(i).get("life_status");
  62. Object record_type = dataList.get(i).get("record_type");
  63. String lifeStatus = "normal".equals(life_status) ? "正常": (life_status==null? "" : life_status.toString());
  64. String recordType = "default__c".equals(record_type) ? "预设业务类型": (record_type==null? "" : record_type.toString());
  65. //负责人编号、名称
  66. Map<String,Object> owner__r =(Map<String,Object>) dataList.get(i).get("owner__r");
  67. Object owner_code = baseDao.getFieldDataByCondition("employee", "max(em_code) em_code", "em_name='" + owner__r.get("name") + "'");
  68. //创建人编号、名称
  69. Map<String,Object> created_by__r =(Map<String,Object>) dataList.get(i).get("created_by__r");
  70. Object created_by_code = baseDao.getFieldDataByCondition("employee", "max(em_code) em_code", "em_name='" + created_by__r.get("name") + "'");
  71. //最后更新人编号、名称
  72. Map<String,Object> last_modified_by__r =(Map<String,Object>) dataList.get(i).get("last_modified_by__r");
  73. Object last_modified_by_code = baseDao.getFieldDataByCondition("employee", "max(em_code) em_code", "em_name='" + last_modified_by__r.get("name") + "'");
  74. //申请日期
  75. Long field_lp4Q1__c = Long.parseLong(new BigDecimal(dataList.get(i).get("field_lp4Q1__c").toString()).toPlainString());
  76. Long create_time = Long.parseLong(new BigDecimal(dataList.get(i).get("create_time").toString()).toPlainString());
  77. Long last_modified_time = Long.parseLong(new BigDecimal(dataList.get(i).get("last_modified_time").toString()).toPlainString());
  78. //客户联系人:pi_purposename 电话:pi_expresscode
  79. int pi_id = baseDao.getSeqId("PRODINOUTAPPLY_SEQ");
  80. String sql="insert into ProdInOutApply(pi_id,pi_code,pi_class,pi_date,pi_status,pi_statuscode,pi_cardcode,pi_title,pi_emcode,pi_emname,pi_recordman,pi_recorddate," +
  81. "pi_updateman,pi_updatedate,pi_purposename,pi_expresscode,pi_address,pi_field_Il1e1,pi_record_type,pi_life_status,PI_FXXKID)" +
  82. "values("+pi_id+",'"+name+"','其它出库申请单',"+DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(field_lp4Q1__c)))+"," +
  83. "'在录入','ENTERING','"+cuCode+"','"+dataList.get(i).get("field_l6W5b__c__r")+"','"+owner_code+"','"+owner__r.get("name")+"','"+ created_by__r.get("name")+"'," +
  84. DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(create_time)))+",'"+last_modified_by__r.get("name")+"',"+
  85. DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(last_modified_time)))+",'" +dataList.get(i).get("field_DzO73__c__r")+"',"+
  86. "'"+dataList.get(i).get("field_57196__c")+"','"+(dataList.get(i).get("field_6OcTn__c")==null?"":dataList.get(i).get("field_6OcTn__c"))+"','"+dataList.get(i).get("field_Il1e1__c")+"','"+recordType+"','"+lifeStatus+"','"+_id+"')";
  87. baseDao.execute(sql);
  88. //样品申请明细下载
  89. syncSampleApplyDetail(_id.toString(),pi_id);
  90. m++;
  91. }catch (Exception e){
  92. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','样品申请主表下载','"+name+"')");
  93. logger.info("异常信息:"+e);
  94. n++;
  95. }
  96. }
  97. 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+"')");
  98. }
  99. }else{
  100. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','样品申请主表下载','')");
  101. logger.info("异常信息:"+crmQueryResult.getErrorMessage());
  102. }
  103. }
  104. }catch (Exception e){
  105. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+e.getMessage()+"','样品申请主表下载','')");
  106. logger.info("异常信息:"+e.getMessage());
  107. e.printStackTrace();
  108. }
  109. }
  110. private void syncSampleApplyDetail(String SampleApply_id,int pi_id){
  111. List<String> field_values_Detail = new ArrayList<>();
  112. field_values_Detail.add(SampleApply_id);
  113. try {
  114. CrmQueryResult crmQueryResult = commonManager.queryCommon("field_8019j__c", field_values_Detail, "EQ", "create_time", true, 5, "object_Q55Nj__c", true);
  115. int errorCode = crmQueryResult.getErrorCode();
  116. if(errorCode == 0){
  117. Map<String, Object> data = crmQueryResult.getData();
  118. List<Map<String, Object>> dataList = (List<Map<String,Object>>) data.get("dataList");
  119. //m:成功条数 n:失败条数
  120. int m=0,n=0;
  121. if(dataList.size()>0){
  122. //最后(即最近)一次同步时间
  123. Long create_time_Last = Long.parseLong(new BigDecimal(dataList.get(dataList.size()-1).get("create_time").toString()).toPlainString());
  124. for (int i = 0; i < dataList.size(); i++) {
  125. Object _id = dataList.get(i).get("_id");
  126. Object name = dataList.get(i).get("name");
  127. SimpleDateFormat sdf = new SimpleDateFormat(Constant.YMD_HMS);
  128. if(baseDao.checkIf("ProdIOApplyDetail", "pd_code='" + name + "' and pd_piid="+pi_id)){
  129. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'样品申请明细编号已存在','样品申请明细表下载','"+name+"')");
  130. logger.info("异常信息:样品申请明细编号已存在");
  131. n++;
  132. continue;
  133. }
  134. try {
  135. //负责人编号、名称
  136. Map<String,Object> owner__r =(Map<String,Object>) dataList.get(i).get("owner__r");
  137. Object owner_code = baseDao.getFieldDataByCondition("employee", "max(em_code) em_code", "em_name='" + owner__r.get("name") + "'");
  138. //客户联系人:pi_purposename 电话:pi_expresscode
  139. String sql="insert into ProdIOApplyDetail(pd_id,pd_piid,pd_pdno,pd_code,pd_piclass,pd_picode,pd_ownercode,pd_owner,pd_prodcode,pd_detail,pd_sepc,pd_brand,pd_outqty,YPonhand,PD_FXXKID)" +
  140. "values(PRODIOAPPLYDETAIL_SEQ.nextval,"+pi_id+","+(i+1)+",'"+name+"','其它出库申请单','"+dataList.get(i).get("field_8019j__c__r")+"'," +
  141. "'"+owner_code+"','"+owner__r.get("name")+"','"+ (dataList.get(i).get("field_2Lq6Y__c")==null?"":dataList.get(i).get("field_2Lq6Y__c")) +"','"+(dataList.get(i).get(" field_utezf__c__r")==null?"":dataList.get(i).get(" field_utezf__c__r"))+"'," +
  142. "'"+(dataList.get(i).get("field_21Suz__c")==null?"":dataList.get(i).get("field_21Suz__c"))+"','"+(dataList.get(i).get("field_y5dz2__c")==null?"":dataList.get(i).get("field_y5dz2__c"))+"','" +dataList.get(i).get("field_7uspZ__c")+"',"+
  143. "'"+dataList.get(i).get("field_lzxe2__c")+"','"+_id+"')";
  144. baseDao.execute(sql);
  145. m++;
  146. }catch (Exception e){
  147. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','样品申请明细表下载','"+name+"')");
  148. logger.info("异常信息:"+e);
  149. n++;
  150. }
  151. }
  152. 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+"')");
  153. }
  154. }else{
  155. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','样品申请明细表下载','')");
  156. logger.info("异常信息:"+crmQueryResult.getErrorMessage());
  157. }
  158. }catch (Exception e){
  159. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+e.getMessage()+"','样品申请明细表下载','')");
  160. logger.info("异常信息:"+e.getMessage());
  161. e.printStackTrace();
  162. }
  163. }
  164. }