Browse Source

【越加红】【销售月数据统计 上传CRM】

samhoo 3 years ago
parent
commit
0e1c763553

+ 3 - 0
src/main/java/com/uas/eis/manager/CommonManager.java

@@ -1,6 +1,7 @@
 package com.uas.eis.manager;
 
 import com.uas.eis.beans.result.BaseResult;
+import com.uas.eis.beans.result.CrmAddResult;
 import com.uas.eis.beans.result.CrmQueryResult;
 import com.uas.eis.exception.AccessTokenException;
 
@@ -12,4 +13,6 @@ public interface CommonManager {
     public CrmQueryResult queryCommon(String field_name, List<String> field_values, String operator, String orderFieldName, Boolean orderAsc, int limit, String dataObjectApiName, Boolean isCustom) throws AccessTokenException;
 
     public BaseResult changeOwnerCommon(List<Map<String,Object>> list, String dataObjectApiName) throws AccessTokenException;
+
+    public CrmAddResult createCommonOfCustom(Map<String,Object> data) throws AccessTokenException;
 }

+ 22 - 0
src/main/java/com/uas/eis/manager/impl/CommonManagerImpl.java

@@ -1,9 +1,11 @@
 package com.uas.eis.manager.impl;
 
 import com.uas.eis.beans.CorpAccessToken;
+import com.uas.eis.beans.req.CrmAddReq;
 import com.uas.eis.beans.req.CrmChangeOwnerReq;
 import com.uas.eis.beans.req.CrmQueryReq;
 import com.uas.eis.beans.result.BaseResult;
+import com.uas.eis.beans.result.CrmAddResult;
 import com.uas.eis.beans.result.CrmQueryResult;
 import com.uas.eis.exception.AccessTokenException;
 import com.uas.eis.manager.AccessTokenManager;
@@ -101,4 +103,24 @@ public class CommonManagerImpl implements CommonManager {
         }
         return baseResult;
     }
+
+    @Override
+    public CrmAddResult createCommonOfCustom(Map<String,Object> data) throws AccessTokenException{
+        CrmAddResult crmAddResult = new CrmAddResult();
+        CorpAccessToken token = accessTokenManager.getCorpAccessToken();
+        String openUserId = configuration.getOpenUserId();
+
+        CrmAddReq crmAddReq = new CrmAddReq();
+        crmAddReq.setCorpAccessToken(token.getCorpAccessToken());
+        crmAddReq.setCorpId(token.getCorpId());
+        crmAddReq.setCurrentOpenUserId(openUserId);
+        crmAddReq.setData(data);
+
+        try {
+            crmAddResult = OpenAPIUtils.createCrmCustomData(crmAddReq);
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
+        return crmAddResult;
+    }
 }

+ 93 - 0
src/main/java/com/uas/eis/task/SaleMonthDataTask.java

@@ -0,0 +1,93 @@
+package com.uas.eis.task;
+
+import com.uas.eis.beans.result.CrmAddResult;
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.dao.SqlRowList;
+import com.uas.eis.manager.CommonManager;
+import com.uas.eis.utils.Configuration;
+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 javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Component
+@EnableAsync
+@EnableScheduling
+public class SaleMonthDataTask {
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    @Autowired
+    private BaseDao baseDao;
+    @Autowired
+    private CommonManager commonManager;
+    @Resource(name = "configuration")
+    private Configuration configuration;
+
+    //每月1日凌晨10分执行
+    @Scheduled(cron = "0 10 0 1 * ?")
+    public void syncProducts() {
+        SqlRowList rs = baseDao.queryForRowSet("select * from (select * from saleMonthData left join customer on SM_CUSTCODE=CU_CODE where nvl(cu_fxxkid,' ')<>' ' and nvl(SM_SENDSTATUS,' ')='待上传' order by sm_id) where rownum<=200");
+        String openUserId = configuration.getOpenUserId();
+        while (rs.next()){
+            Map<String,Object> data = new HashMap<>();
+            Map<String,Object> map = new HashMap<>();
+            List<String> owner = new ArrayList<>();
+            owner.add(openUserId);
+            map.put("owner",owner);
+            map.put("field_6secE__c",rs.getGeneralDouble("sm_salesum"));//接单金额
+            map.put("field_Frnzy__c",rs.getGeneralString("cu_fxxkid"));//客户名称 关联ID
+            String sm_yearmonth = rs.getGeneralString("sm_yearmonth");
+            String year = sm_yearmonth.substring(0, 4);
+            String month = sm_yearmonth.substring(4);
+            String valueField_year = getValueField("销售月数据统计", "年份", year);
+            String valueField_month = getValueField("销售月数据统计", "月份", month);
+            map.put("field_22s1K__c",valueField_year);//年份
+
+            map.put("field_C71qd__c",rs.getGeneralDouble("sm_saleoutsum"));//出货金额
+            map.put("field_1s1t2__c",valueField_month);//月份
+            map.put("field_m2ypV__c",rs.getGeneralDouble("sm_paysum"));//应收货款
+            map.put("dataObjectApiName","object_8r53c__c");
+            map.put("created_by",openUserId);
+            map.put("life_status","normal");
+            map.put("record_type","default__c");
+            data.put("object_data",map);
+            try {
+                CrmAddResult crmAddResult = commonManager.createCommonOfCustom(data);
+                int errorCode = crmAddResult.getErrorCode();
+                String dataId = crmAddResult.getDataId();
+                if(errorCode == 0){
+                    baseDao.execute("update saleMonthData set SM_SENDSTATUS='已上传',SM_FXXKDATAID='"+dataId+"' where sm_id="+rs.getInt("sm_id"));
+                    baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'销售月数据统计上传成功','销售月数据统计上传','"+rs.getGeneralString("sm_yearmonth")+rs.getString("sm_custcode")+"')");
+                }else{
+                    baseDao.execute("update saleMonthData set SM_SENDSTATUS='未上传成功' where sm_id="+rs.getInt("sm_id"));
+                    baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+crmAddResult.getErrorMessage()+"','销售月数据统计上传','"+rs.getGeneralString("sm_yearmonth")+rs.getString("sm_custcode")+"')");
+                    logger.info("异常信息:"+crmAddResult.getErrorMessage());
+                }
+            }catch (Exception e){
+                baseDao.execute("update saleMonthData set SM_SENDSTATUS='未上传成功' where sm_id="+rs.getInt("sm_id"));
+                baseDao.execute("insert into FXXKDockingErrorlog(ml_id,ml_date,ml_result,ml_type,ml_code) values(FXXKDOCKINGERRORLOG_SEQ.nextval,sysdate,'"+e.getMessage()+"','销售月数据统计上传','"+rs.getGeneralString("sm_yearmonth")+rs.getString("sm_custcode")+"')");
+                logger.info("异常信息:"+e.getMessage());
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private String getValueField(String MODULEAPINAME, String APINAME, String DISPLAYFIELD){
+        String result ="";
+        if(DISPLAYFIELD !=null && !"".equals(DISPLAYFIELD)){
+            Object VALUEFIELD = baseDao.getFieldDataByCondition("comboData", "VALUEFIELD", "MODULEAPINAME='" + MODULEAPINAME + "' and APINAME='"+APINAME+"' and DISPLAYFIELD='"+DISPLAYFIELD+"'");
+            result = VALUEFIELD==null? "" :VALUEFIELD.toString();
+        }
+        return result;
+    }
+}

+ 10 - 0
src/main/java/com/uas/eis/utils/OpenAPIUtils.java

@@ -189,6 +189,16 @@ public class OpenAPIUtils {
         return doPost(url, req, CrmQueryResult.class);
     }
 
+    /**
+     * CRM自定义对象新增接口
+     * @param req
+     * @return
+     */
+    public static CrmAddResult createCrmCustomData(CrmAddReq req) {
+        String url = prefix + "/cgi/crm/custom/v2/data/create";
+        return doPost(url, req, CrmAddResult.class);
+    }
+
     /**
      * CRM获取详情 元数据接口
      */