|
|
@@ -0,0 +1,186 @@
|
|
|
+package com.uas.eis.task;
|
|
|
+
|
|
|
+import com.uas.eis.beans.req.CrmQueryReq;
|
|
|
+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 YITRadarBasicProjectTask {
|
|
|
+
|
|
|
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private BaseDao baseDao;
|
|
|
+ @Autowired
|
|
|
+ private CommonManager commonManager;
|
|
|
+
|
|
|
+ @Scheduled(cron = "0 0/2 * * * ?")
|
|
|
+ public void syncRadarBasicProject() {
|
|
|
+ String Master ="YIT.";
|
|
|
+ try {
|
|
|
+ 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()){
|
|
|
+ List<CrmQueryReq.Filters> filtersList = new ArrayList<>();
|
|
|
+
|
|
|
+ List<String> field_values = new ArrayList<>();
|
|
|
+ String ml_syncTime = rs.getGeneralString("ml_syncTime");
|
|
|
+ field_values.add(ml_syncTime);
|
|
|
+
|
|
|
+ CrmQueryReq.Filters filters = new CrmQueryReq.Filters();
|
|
|
+ filters.setField_name("last_modified_time");
|
|
|
+ filters.setField_values(field_values);
|
|
|
+ filters.setOperator("GT");
|
|
|
+ filtersList.add(filters);
|
|
|
+
|
|
|
+ List<String> field_values2 = new ArrayList<>();
|
|
|
+ field_values2.add("option1");
|
|
|
+
|
|
|
+ CrmQueryReq.Filters filters2 = new CrmQueryReq.Filters();
|
|
|
+ filters2.setField_name("field_jO31l__c");
|
|
|
+ filters2.setField_values(field_values2);
|
|
|
+ filters2.setOperator("EQ");
|
|
|
+ filtersList.add(filters2);
|
|
|
+ CrmQueryResult crmQueryResult = commonManager.multiQueryCommon(filtersList, "last_modified_time", true, 100, "object_xo712__c", true);
|
|
|
+ int errorCode = crmQueryResult.getErrorCode();
|
|
|
+ if(errorCode == 0){
|
|
|
+ Map<String, Object> data = crmQueryResult.getData();
|
|
|
+ List<Map<String, Object>> dataList = (List<Map<String,Object>>) data.get("dataList");
|
|
|
+ //m:成功条数 n:失败条数
|
|
|
+ int m=0,n=0,k=0;
|
|
|
+ if(dataList!=null && dataList.size()>0){
|
|
|
+ //最后(即最近)一次同步时间
|
|
|
+ Long last_modified_time_sync = Long.parseLong(new BigDecimal(dataList.get(dataList.size()-1).get("last_modified_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<String,Object> owner__r = (Map<String,Object>) dataList.get(i).get("owner__r");
|
|
|
+ //负责人姓名
|
|
|
+ String owner = owner__r==null ? "" : owner__r.get("name").toString();
|
|
|
+ if(baseDao.checkIf(Master+"RadarBasicProject", "rbp_fxxkId='" + _id + "'")){
|
|
|
+ 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 {
|
|
|
+ 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());
|
|
|
+ Long field_2htkK__c = Long.parseLong(new BigDecimal(dataList.get(i).get("field_2htkK__c").toString()).toPlainString());
|
|
|
+
|
|
|
+ Map<String,Object> data_own_department__r = (Map<String,Object>) dataList.get(i).get("data_own_department__r");
|
|
|
+ String deptName = data_own_department__r==null ? "" : data_own_department__r.get("deptName").toString();
|
|
|
+ Map<String,Object> out_owner__r = (Map<String,Object>) dataList.get(i).get("out_owner__r");
|
|
|
+ String out_owner = out_owner__r==null ? "" : out_owner__r.get("name").toString();
|
|
|
+ Map<String,Object> created_by__r = (Map<String,Object>) dataList.get(i).get("created_by__r");
|
|
|
+ String created_by_name = created_by__r ==null ? "" : created_by__r .get("name").toString();
|
|
|
+ Map<String,Object> last_modified_by__r = (Map<String,Object>) dataList.get(i).get("last_modified_by__r");
|
|
|
+ String last_modified_by_name = last_modified_by__r ==null ? "" : last_modified_by__r .get("name").toString();
|
|
|
+
|
|
|
+ String field_y60xA__c = getDisplayField(dataList, i, "field_y60xA__c", "产品定位");
|
|
|
+ String field_jO31l__c = getDisplayField(dataList, i, "field_jO31l__c", "宋总审批结果");
|
|
|
+ String lock_status = getDisplayField(dataList, i, "lock_status", "锁定状态");
|
|
|
+
|
|
|
+ Object life_status = dataList.get(i).get("life_status");
|
|
|
+ Object record_type = dataList.get(i).get("record_type");
|
|
|
+
|
|
|
+ String lifeStatus = "normal".equals(life_status) ? "正常": (life_status==null? "" : life_status.toString());
|
|
|
+ String recordType = "default__c".equals(record_type) ? "预设业务类型": (record_type==null? "" : record_type.toString());
|
|
|
+ String rbp_code = baseDao.sGetMaxNumber(Master+"RadarBasicProject", 2);
|
|
|
+ String sql="insert into "+Master+"RadarBasicProject(rbp_id,rbp_code,rbp_fxxkid,name,data_own_department," +
|
|
|
+ "owner,field_y60xa__c,field_8htac__c," +
|
|
|
+ "field_1vlo1__c,field_rn30q__c,field_290w9__c,field_2htkk__c,field_7rst2__c,field_ul166__c," +
|
|
|
+ "field_4czln__c,field_zb17n__c,field_nex7a__c,field_96jf3__c,field_cgjd4__c,field_rb7gd__c," +
|
|
|
+ "field_d0wd5__c,field_o2ol7__c,field_o65a2__c,field_abh39__c,field_7r1xr__c,field_s4421__c," +
|
|
|
+ "field_n3nn2__c,field_c147e__c,field_70kbr__c,field_nt4l0__c,field_jo31l__c,lock_status," +
|
|
|
+ "owner_department,create_time,created_by,out_owner,last_modified_time,last_modified_by," +
|
|
|
+ "record_type,life_status)" +
|
|
|
+ "values("+Master+"RadarBasicProject_SEQ.nextval,'"+rbp_code+"','"+_id+"','"+name+"','" +
|
|
|
+ deptName+"','"+owner+"','"+
|
|
|
+ field_y60xA__c+"','"+getNotNull(dataList,i,"field_8hTac__c")+"','"+
|
|
|
+ getNotNull(dataList,i,"field_1vLO1__c")+"','"+getNotNull(dataList,i,"field_rn30q__c")+"','"+
|
|
|
+ getNotNull(dataList,i,"field_290w9__c")+"',"+
|
|
|
+ DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(field_2htkK__c)))+",'"+
|
|
|
+ getNotNull(dataList,i,"field_7rst2__c")+"','"+getNotNull(dataList,i,"field_Ul166__c")+"','" +
|
|
|
+ getNotNull(dataList,i,"field_4cZLN__c")+"','"+getNotNull(dataList,i,"field_Zb17n__c")+"','" +
|
|
|
+ getNotNull(dataList,i,"field_neX7a__c")+"','"+getNotNull(dataList,i,"field_96Jf3__c")+"','" +
|
|
|
+ getNotNull(dataList,i,"field_cGjD4__c")+"','"+getNotNull(dataList,i,"field_rb7gD__c")+"','" +
|
|
|
+ getNotNull(dataList,i,"field_D0WD5__c")+"','"+getNotNull(dataList,i,"field_O2oL7__c")+"','" +
|
|
|
+ getNotNull(dataList,i,"field_o65A2__c")+"','"+getNotNull(dataList,i,"field_aBH39__c")+"','" +
|
|
|
+ getNotNull(dataList,i,"field_7r1xr__c")+"','"+getNotNull(dataList,i,"field_s4421__c")+"','" +
|
|
|
+ getNotNull(dataList,i,"field_n3NN2__c")+"','"+getNotNull(dataList,i,"field_c147e__c")+"','" +
|
|
|
+ getNotNull(dataList,i,"field_70Kbr__c")+"','"+getNotNull(dataList,i,"field_Nt4l0__c")+"','" +
|
|
|
+ field_jO31l__c+"','"+lock_status+"','" +
|
|
|
+ getNotNull(dataList,i,"owner_department")+"',"+
|
|
|
+ DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(create_time)))+",'" +
|
|
|
+ created_by_name+"','"+out_owner+"',"+
|
|
|
+ DateUtil.parseDateToOracleString(Constant.YMD_HMS,sdf.parse(sdf.format(last_modified_time)))+
|
|
|
+ ",'"+last_modified_by_name+"','"+recordType+"','"+lifeStatus+"')";
|
|
|
+ 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+"条','雷达基础类立项下载','"+last_modified_time_sync+"')");
|
|
|
+ }
|
|
|
+ }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<Map<String, Object>> 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<Map<String, Object>> dataList, int i, String Field){
|
|
|
+ return (dataList.get(i).get(Field)==null?"":dataList.get(i).get(Field)).toString();
|
|
|
+ }
|
|
|
+}
|