SampleApplyTask.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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. try {
  53. String MAUser="DATACENTER";
  54. //根据申请抬头取得对应的子账套 若没有值则取资料中心
  55. Object field_h73i7__c = dataList.get(i).get("field_h73i7__c");
  56. if(field_h73i7__c!=null && !"".equals(field_h73i7__c.toString())){
  57. Object DISPLAYFIELD = baseDao.getFieldDataByCondition("comboData", "DISPLAYFIELD", "VALUEFIELD='" + field_h73i7__c + "' and APICODE='field_h73i7__c' and MODULEAPINAME='样品申请单'");
  58. if(DISPLAYFIELD!=null && !"".equals(DISPLAYFIELD.toString())){
  59. Object MA_USER = baseDao.getFieldDataByCondition("master", "MA_USER", "MA_FUNCTION='" + DISPLAYFIELD + "'");
  60. MAUser = (MA_USER == null || "".equals(MA_USER.toString()))?"YJH_T":MA_USER.toString();
  61. }
  62. }
  63. if(baseDao.checkIf(MAUser+".ProdInOutApply", "pi_code='" + name + "'") || i==2){
  64. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'样品申请编号已存在','样品申请主表下载','"+name+"')");
  65. logger.info("异常信息:样品申请编号已存在");
  66. n++;
  67. continue;
  68. }
  69. Object cu_code = baseDao.getFieldDataByCondition("customer", "max(cu_code) cu_code", "CU_FXXKID='" + dataList.get(i).get("field_l6W5b__c") + "'");
  70. String cuCode =cu_code == null ? "" : cu_code.toString();
  71. Object life_status = dataList.get(i).get("life_status");
  72. Object record_type = dataList.get(i).get("record_type");
  73. String lifeStatus = "normal".equals(life_status) ? "正常": (life_status==null? "" : life_status.toString());
  74. String recordType = "default__c".equals(record_type) ? "预设业务类型": (record_type==null? "" : record_type.toString());
  75. //负责人编号、名称
  76. Map<String,Object> owner__r =(Map<String,Object>) dataList.get(i).get("owner__r");
  77. Object owner_code = baseDao.getFieldDataByCondition(MAUser+".employee", "max(em_code) em_code", "em_name='" + owner__r.get("name") + "'");
  78. //创建人编号、名称
  79. Map<String,Object> created_by__r =(Map<String,Object>) dataList.get(i).get("created_by__r");
  80. Object created_by_code = baseDao.getFieldDataByCondition(MAUser+".employee", "max(em_code) em_code", "em_name='" + created_by__r.get("name") + "'");
  81. //最后更新人编号、名称
  82. Map<String,Object> last_modified_by__r =(Map<String,Object>) dataList.get(i).get("last_modified_by__r");
  83. Object last_modified_by_code = baseDao.getFieldDataByCondition(MAUser+".employee", "max(em_code) em_code", "em_name='" + last_modified_by__r.get("name") + "'");
  84. //申请日期
  85. Long field_lp4Q1__c = Long.parseLong(new BigDecimal(dataList.get(i).get("field_lp4Q1__c").toString()).toPlainString());
  86. Long create_time = Long.parseLong(new BigDecimal(dataList.get(i).get("create_time").toString()).toPlainString());
  87. Long last_modified_time = Long.parseLong(new BigDecimal(dataList.get(i).get("last_modified_time").toString()).toPlainString());
  88. //客户联系人:pi_purposename 电话:pi_expresscode
  89. int pi_id = baseDao.getSeqId(MAUser+".PRODINOUTAPPLY_SEQ");
  90. String sql="insert into "+MAUser+".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," +
  91. "pi_updateman,pi_updatedate,pi_purposename,pi_expresscode,pi_address,pi_field_Il1e1,pi_record_type,pi_life_status,PI_FXXKID)" +
  92. "values("+pi_id+",'"+name+"','其它出库申请单',"+DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(field_lp4Q1__c)))+"," +
  93. "'在录入','ENTERING','"+cuCode+"','"+dataList.get(i).get("field_l6W5b__c__r")+"','"+owner_code+"','"+owner__r.get("name")+"','"+ created_by__r.get("name")+"'," +
  94. DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(create_time)))+",'"+last_modified_by__r.get("name")+"',"+
  95. DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(last_modified_time)))+",'" +dataList.get(i).get("field_DzO73__c__r")+"',"+
  96. "'"+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+"')";
  97. baseDao.execute(sql);
  98. //样品申请明细下载
  99. syncSampleApplyDetail(_id.toString(),pi_id,MAUser);
  100. m++;
  101. }catch (Exception e){
  102. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','样品申请主表下载','"+name+"')");
  103. logger.info("异常信息:"+e);
  104. n++;
  105. }
  106. }
  107. 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+"')");
  108. }
  109. }else{
  110. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','样品申请主表下载','')");
  111. logger.info("异常信息:"+crmQueryResult.getErrorMessage());
  112. }
  113. }
  114. }catch (Exception e){
  115. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+e.getMessage()+"','样品申请主表下载','')");
  116. logger.info("异常信息:"+e.getMessage());
  117. e.printStackTrace();
  118. }
  119. }
  120. private void syncSampleApplyDetail(String SampleApply_id,int pi_id,String MAUser){
  121. List<String> field_values_Detail = new ArrayList<>();
  122. field_values_Detail.add(SampleApply_id);
  123. try {
  124. CrmQueryResult crmQueryResult = commonManager.queryCommon("field_8019j__c", field_values_Detail, "EQ", "create_time", true, 5, "object_Q55Nj__c", true);
  125. int errorCode = crmQueryResult.getErrorCode();
  126. if(errorCode == 0){
  127. Map<String, Object> data = crmQueryResult.getData();
  128. List<Map<String, Object>> dataList = (List<Map<String,Object>>) data.get("dataList");
  129. //m:成功条数 n:失败条数
  130. int m=0,n=0;
  131. if(dataList.size()>0){
  132. //最后(即最近)一次同步时间
  133. Long create_time_Last = Long.parseLong(new BigDecimal(dataList.get(dataList.size()-1).get("create_time").toString()).toPlainString());
  134. for (int i = 0; i < dataList.size(); i++) {
  135. Object _id = dataList.get(i).get("_id");
  136. Object name = dataList.get(i).get("name");
  137. SimpleDateFormat sdf = new SimpleDateFormat(Constant.YMD_HMS);
  138. if(baseDao.checkIf(MAUser+".ProdIOApplyDetail", "pd_code='" + name + "' and pd_piid="+pi_id)){
  139. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'样品申请明细编号已存在','样品申请明细表下载','"+name+"')");
  140. logger.info("异常信息:样品申请明细编号已存在");
  141. n++;
  142. continue;
  143. }
  144. try {
  145. //负责人编号、名称
  146. Map<String,Object> owner__r =(Map<String,Object>) dataList.get(i).get("owner__r");
  147. Object owner_code = baseDao.getFieldDataByCondition(MAUser+".employee", "max(em_code) em_code", "em_name='" + owner__r.get("name") + "'");
  148. //客户联系人:pi_purposename 电话:pi_expresscode
  149. String sql="insert into "+MAUser+".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)" +
  150. "values("+MAUser+".PRODIOAPPLYDETAIL_SEQ.nextval,"+pi_id+","+(i+1)+",'"+name+"','其它出库申请单','"+dataList.get(i).get("field_8019j__c__r")+"'," +
  151. "'"+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"))+"'," +
  152. "'"+(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")+"',"+
  153. "'"+dataList.get(i).get("field_lzxe2__c")+"','"+_id+"')";
  154. baseDao.execute(sql);
  155. m++;
  156. }catch (Exception e){
  157. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','样品申请明细表下载','"+name+"')");
  158. logger.info("异常信息:"+e);
  159. n++;
  160. }
  161. }
  162. 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+"')");
  163. }
  164. }else{
  165. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','样品申请明细表下载','')");
  166. logger.info("异常信息:"+crmQueryResult.getErrorMessage());
  167. }
  168. }catch (Exception e){
  169. baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+e.getMessage()+"','样品申请明细表下载','')");
  170. logger.info("异常信息:"+e.getMessage());
  171. e.printStackTrace();
  172. }
  173. }
  174. }