package com.uas.eis.task; import com.uas.eis.beans.result.CrmQueryResult; import com.uas.eis.dao.BaseDao; import com.uas.eis.dao.SqlRowList; import com.uas.eis.manager.CommonManager; import com.uas.eis.utils.Constant; import com.uas.eis.utils.DateUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; @Component @EnableAsync @EnableScheduling public class YITRadarApplyTask { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private BaseDao baseDao; @Autowired private CommonManager commonManager; @Scheduled(cron = "0 0/15 * * * ?") public void syncRadarSpecialofferApply() { String Master ="YIT."; try { List field_values = new ArrayList<>(); 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"); if(rs.next()){ String ml_syncTime = rs.getGeneralString("ml_syncTime"); field_values.add(ml_syncTime); CrmQueryResult crmQueryResult = commonManager.queryCommon("create_time", field_values, "GT", "create_time", true, 100, "object_XC82g__c", true); int errorCode = crmQueryResult.getErrorCode(); if(errorCode == 0){ Map data = crmQueryResult.getData(); List> dataList = (List>) data.get("dataList"); //m:成功条数 n:失败条数 int m=0,n=0; if(dataList.size()>0){ //最后(即最近)一次同步时间 Long create_time_Last = Long.parseLong(new BigDecimal(dataList.get(dataList.size()-1).get("create_time").toString()).toPlainString()); for (int i = 0; i < dataList.size(); i++) { Object _id = dataList.get(i).get("_id"); Object name = dataList.get(i).get("name"); SimpleDateFormat sdf = new SimpleDateFormat(Constant.YMD_HMS); //CRM负责人名称字段:owner__r Map owner__r = (Map) dataList.get(i).get("owner__r"); //负责人姓名 String owner = owner__r==null ? "" : owner__r.get("name").toString(); if(baseDao.checkIf(Master+"RadarSpecialofferApply", "rsa_code='" + name + "'")){ baseDao.execute("insert into "+Master+"FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values("+Master+"FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'雷达申请编号已存在','雷达申请下载','"+name+"')"); logger.info("异常信息:雷达申请编号已存在"); n++; continue; } try { Object cu_code = baseDao.getFieldDataByCondition(Master+"customer", "max(cu_code) cu_code", "cu_name='" + dataList.get(i).get("field_WycdH__c__r") + "'"); String cuCode = cu_code == null ? "" : cu_code.toString(); Object owner_code = baseDao.getFieldDataByCondition(Master+"employee", "max(em_code) em_code", "em_name='" + owner + "'"); String ownerCode = owner_code == null ? "" : owner_code.toString(); Long create_time = Long.parseLong(new BigDecimal(dataList.get(i).get("create_time").toString()).toPlainString()); Long last_modified_time = Long.parseLong(new BigDecimal(dataList.get(i).get("last_modified_time").toString()).toPlainString()); String record_type = getDisplayField(dataList, i, "record_type", "业务类型"); String life_status = getDisplayField(dataList, i, "life_status", "生命状态"); String field_aaPUk__c = getDisplayField(dataList, i, "field_aaPUk__c", "宋总审批结果"); //创建人编号、名称 Map created_by__r =(Map) dataList.get(i).get("created_by__r"); //最后更新人编号、名称 Map last_modified_by__r =(Map) dataList.get(i).get("last_modified_by__r"); //data_own_department__r deptName Map data_own_department__r =(Map) dataList.get(i).get("data_own_department__r"); String data_own_department = data_own_department__r==null ? "" : data_own_department__r.get("deptName").toString(); String sql="insert into "+Master+"RadarSpecialofferApply(RSA_ID,RSA_CODE,RSA_OWNERCODE,RSA_OWNER,RSA_CUSTCODE,RSA_CUSTNAME,RSA_APPLYDESCRIBE," + "RSA_CUSTMONTHUSAGE,RSA_RADARTYPE,RSA_ENDINGPRICE,RSA_EXPECTPRICE,RSA_SZAPPROVALRESULT,RSA_LOCKSTATUS,RSA_OWNERDEPARTMENT," + "RSA_RECORDTYPE,RSA_LIFESTATUS,RSA_OUTOWNER,RSA_DATAOWNDEPARTMENT,RSA_RECORDMAN,RSA_RECORDDATE,RSA_LASTUPDATEMAN,RSA_LASTUPDATEDATE," + "RSA_FXXKID)" + "values("+Master+"RADARSPECIALOFFERAPPLY_seq.nextval,'"+name+"','"+ownerCode+"','"+owner+"','"+cuCode+"','"+getNotNull(dataList,i,"field_WycdH__c__r")+ "','"+getNotNull(dataList,i,"field_saYFn__c")+"','"+getNotNull(dataList,i,"field_8yKdc__c")+"','"+getNotNull(dataList,i,"field_372mv__c")+ "','"+getNotNull(dataList,i,"field_4t01W__c")+"','"+getNotNull(dataList,i,"field_BlP8a__c")+"','"+field_aaPUk__c+ "','"+getNotNull(dataList,i,"lock_status")+"','" +getNotNull(dataList,i,"owner_department")+"','"+record_type+"','"+life_status+"'," + "'"+getNotNull(dataList,i,"out_owner")+"','"+data_own_department+"','"+created_by__r.get("name")+"',"+ DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(create_time)))+",'"+last_modified_by__r.get("name")+"',"+ DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(last_modified_time)))+",'"+_id+"')"; baseDao.execute(sql); m++; }catch (Exception e){ 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+"')"); logger.info("异常信息:"+e); n++; } } 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+"')"); } }else{ baseDao.execute("insert into "+Master+"FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values("+Master+"FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmQueryResult.getErrorMessage()+"','雷达申请下载','')"); logger.info("异常信息:"+crmQueryResult.getErrorMessage()); } } }catch (Exception e){ baseDao.execute("insert into "+Master+"FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values("+Master+"FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+e.getMessage()+"','雷达申请下载','')"); logger.info("异常信息:"+e.getMessage()); e.printStackTrace(); } } private String getDisplayField(List> dataList, int i, String Field, String APINAME){ String Master ="YIT."; String ValueField =""; Object account_type = dataList.get(i).get(Field); if(account_type !=null && !"".equals(account_type.toString())){ Object DISPLAYFIELD = baseDao.getFieldDataByCondition(Master+"comboData", "DISPLAYFIELD", "VALUEFIELD='" + account_type + "' and APINAME='"+APINAME+"' and MODULEAPINAME='客户资料'"); ValueField= DISPLAYFIELD==null? "" :DISPLAYFIELD.toString(); } return ValueField; } private String getValueField(String MODULEAPINAME, String APINAME, String DISPLAYFIELD){ String Master ="YIT."; String result =""; if(DISPLAYFIELD !=null && !"".equals(DISPLAYFIELD)){ Object VALUEFIELD = baseDao.getFieldDataByCondition(Master+"comboData", "VALUEFIELD", "MODULEAPINAME='" + MODULEAPINAME + "' and APINAME='"+APINAME+"' and DISPLAYFIELD='"+DISPLAYFIELD+"'"); result = VALUEFIELD==null? "" :VALUEFIELD.toString(); } return result; } private String getNotNull(List> dataList, int i, String Field){ return (dataList.get(i).get(Field)==null?"":dataList.get(i).get(Field)).toString(); } }