zhyManagement/src/main/java/com/management/tzcontroller/ProjectInitiateController.java

194 lines
7.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.management.tzcontroller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.management.constant.URLConstant;
import com.management.entity.Filter;
import com.management.utils.CrmRequestUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* 项目启动单同步接口
*
* @return null
* @Author weiloong_zhang
*/
@RestController
@RequestMapping("/api/project/initiate")
@Slf4j
public class ProjectInitiateController {
private RestTemplate restTemplate = new RestTemplate();
public static void main(String[] args) {
new ProjectInitiateController().syncProjectInitiate();
}
/**
* 项目启动单同步
*
* @return void
* @Author weiloong_zhang
*/
@PostMapping("/sync/project_initiate")
public void syncProjectInitiate() {
CrmRequestUtil crmRequestUtil = new CrmRequestUtil();
String[] syncStatus = {"option_pending_sync__c", "option_resync__c"};
JSONObject getProjectInitiate = crmRequestUtil.getCRMList(Arrays.asList(
//new Filter("EQ", "project_no__c", Arrays.asList("XM202504250001"))
new Filter("GT", "last_modified_time", Arrays.asList("1748923200000")),
new Filter("EQ", "life_status", Arrays.asList("normal")),
new Filter("IN", "ledger_sync_status__c", Arrays.asList(syncStatus))
), "ProjectObj");
JSONObject projectInitiateRes = new JSONObject();
try {
projectInitiateRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getProjectInitiate, JSONObject.class);
} catch (RestClientException e) {
e.printStackTrace();
}
if (!"success".equals(projectInitiateRes.getString("errorDescription")) || projectInitiateRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
log.info("项目启动单获取失败或者数据不存在,将不再向下执行");
return;
}
log.info("项目启动单获取成功,继续向下执行");
for (Object projectInitiateObj : projectInitiateRes.getJSONObject("data").getJSONArray("dataList")) {
JSONObject projectInitiateData = JSON.parseObject(JSON.toJSONString(projectInitiateObj));
System.out.println("当前正在处理的数据为:" + projectInitiateData);
//开始截取关键数据
//CRM唯一ID
String projectInitiateId = projectInitiateData.getString("_id");
//单据编号
String projectInitiateCode = projectInitiateData.getString("project_no__c");
//最后修改时间
String modifyTime = projectInitiateData.getString("last_modified_time");
//开始判断项目启动单是否已经执行过了
JSONObject isLogRes = new JSONObject();
try {
isLogRes = restTemplate.getForObject("http://localhost:18085/Log/query/log_data?table=send_log_tzproject&log_type=项目启动单&dataId=" + projectInitiateId + "&mark=" + modifyTime, JSONObject.class);
} catch (RestClientException e) {
e.printStackTrace();
}
if (!isLogRes.getJSONArray("data").isEmpty()) {
log.info("数据已经执行过了,将不再向下执行");
continue;
}
log.info("数据没有执行过,将开始向下执行");
//开始封装数据
Map projectInitiateMap = new HashMap<>();
projectInitiateMap.put("project", projectInitiateCode);
projectInitiateMap.put("projectName", projectInitiateData.getString("name"));
//开始获取token
String token = new LedgerTokenController().getToken();
if (token == null || "".equals(token)) {
log.info("台账token获取失败将不再向下执行");
continue;
}
//开始封装请求头
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "application/json");
headers.set("accessToken", token);
HttpEntity reqEntity = new HttpEntity(Arrays.asList(projectInitiateMap), headers);
//开始发起请求
String projectUrl = "http://192.168.9.4:9011/crm/initProject";
JSONObject projectResult = new JSONObject();
try {
projectResult = restTemplate.postForObject(projectUrl, reqEntity, JSONObject.class);
} catch (RestClientException e) {
e.printStackTrace();
}
System.out.println(JSON.parseObject(JSON.toJSONString(projectResult)));
//开始封装回写程序
Map backReqMap = new HashMap();
backReqMap.put("_id", projectInitiateId);
backReqMap.put("dataObjectApiName", "ProjectObj");
//开始封装日志
Map logMap = new HashMap<>();
logMap.put("log_id", UUID.randomUUID().toString().replace("-", ""));
logMap.put("log_type", "项目启动单");
logMap.put("syn_type", "0");
logMap.put("data_name", projectInitiateCode);
logMap.put("data_id", projectInitiateId);
logMap.put("mark", modifyTime);
logMap.put("send_body", JSON.toJSONString(reqEntity));
logMap.put("send_res", JSON.toJSONString(projectResult));
logMap.put("tableName", "send_log_tzproject");
//判断是否执行成功
if (projectResult.getInteger("code") == 0) {
//同步成功
logMap.put("log_status", "0");
logMap.put("res_body", "同步成功");
backReqMap.put("ledger_sync_status__c", "option_sync_success__c");
backReqMap.put("ledger_response_info__c", projectResult.getString("msg"));
} else {
//同步失败
logMap.put("log_status", "1");
logMap.put("res_body", "同步失败:" + projectResult.getString("msg"));
backReqMap.put("ledger_sync_status__c", "option_sync_failure__c");
backReqMap.put("ledger_response_info__c", projectResult.getString("msg"));
}
//开始回写
JSONObject backReq = crmRequestUtil.updateCRM(backReqMap);
JSONObject backRes = new JSONObject();
try {
backRes = restTemplate.postForObject(URLConstant.UPDATE_CRM_CUSTOMIZE, backReq, JSONObject.class);
} catch (RestClientException e) {
e.printStackTrace();
}
System.out.println("回写结果为:" + backRes);
//开始记录日志
JSONObject logRes = new JSONObject();
try {
logRes = restTemplate.postForObject("http://localhost:18085/Log/insert/log_data", logMap, JSONObject.class);
} catch (RestClientException e) {
e.printStackTrace();
}
System.out.println("日志插入结果为:" + logRes);
}
}
}