2025-07-05 15:58:54 +08:00

218 lines
8.8 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;
@RestController
@RequestMapping("/api/tz/salesOrder")
@Slf4j
public class TZXSHTController {
private RestTemplate restTemplate = new RestTemplate();
public static void main(String[] args) {
new TZXSHTController().syncSaleOrder();
}
/**
* 智洋同步销售合同(台账)
*
* @return void
* @Author weiloong_zhang
*/
@PostMapping("/sync/order")
public void syncSaleOrder() {
CrmRequestUtil crmRequestUtil = new CrmRequestUtil();
String[] syncStatus = {"option_pending_sync__c", "option_resync__c"};
JSONObject salesOrderReq = crmRequestUtil.getCRMList(Arrays.asList(
new Filter("GT", "last_modified_time", Arrays.asList("1748923200000")),
new Filter("EQ", "life_status", Arrays.asList("normal")),
new Filter("N", "is_initial__c", Arrays.asList("true")),
//new Filter("EQ", "name", Arrays.asList("ZHY2505260018")),
new Filter("IN", "ledger_sync_status__c", Arrays.asList(syncStatus))
), "SaleContractObj");
JSONObject salesOrderRes = new JSONObject();
try {
salesOrderRes = restTemplate.postForObject(URLConstant.GET_CRM_LIST_URL, salesOrderReq, JSONObject.class);
} catch (RestClientException e) {
e.printStackTrace();
}
if (!"success".equals(salesOrderRes.getString("errorDescription")) || salesOrderRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
log.info("销售合同为空或者请求失败,将不再向下执行");
return;
}
for (Object salesOrderObj : salesOrderRes.getJSONObject("data").getJSONArray("dataList")) {
JSONObject salesOrderData = JSON.parseObject(JSON.toJSONString(salesOrderObj));
System.out.println("当前正在处理的数据为:" + salesOrderData);
//开始截取关键数据
String salesOrderId = salesOrderData.getString("_id");//唯一id
String salesOrderName = salesOrderData.getString("name");
String modifyTime = salesOrderData.getString("last_modified_time");
//开始查询数据库是否已经存在该数据
JSONObject salesOrderIsExist = new JSONObject();
try {
salesOrderIsExist = restTemplate.getForObject("http://localhost:18085/Log/query/log_data?table=send_log_tzht&log_type=TZXSHT&dataId=" + salesOrderId + "&mark=" + modifyTime, JSONObject.class);
} catch (RestClientException e) {
e.printStackTrace();
}
if (!salesOrderIsExist.getJSONArray("data").isEmpty()) {
log.info("数据已经存在,将不再继续向下执行");
continue;
}
log.info("数据不存在,将开始向下执行");
Map salesOrderReqMap = new HashMap<>();
salesOrderReqMap.put("crmId", salesOrderId);
salesOrderReqMap.put("contract", salesOrderName);//合同号
salesOrderReqMap.put("contractName", salesOrderData.getString("project_name__c") != null ? salesOrderData.getString("project_name__c") : "");//合同名称
salesOrderReqMap.put("signingUnit", salesOrderData.getString("account_id__r") != null ? salesOrderData.getString("account_id__r") : "");//签订单位
//开始获取地区
//省
String province = salesOrderData.getString("field_9IuQE__c__r") != null ? salesOrderData.getString("field_9IuQE__c__r") : "";
//市
String city = salesOrderData.getString("field_cuMW9__c__r") != null ? salesOrderData.getString("field_cuMW9__c__r") : "";
//区
String district = salesOrderData.getString("field_e9XrV__c__r") != null ? salesOrderData.getString("field_e9XrV__c__r") : "";
//详细地址
String address = salesOrderData.getString("field_tfkq9__c") != null ? salesOrderData.getString("field_tfkq9__c") : "";
//地址
String region = province + city + district + address;
salesOrderReqMap.put("region", region);//地区
//是否竣工
String isComplete = salesOrderData.getString("is_completed__c") != null ? salesOrderData.getString("is_completed__c") : "";
Integer isCompletion = 0;
switch (isComplete) {
case "yes":
isCompletion = 1;
break;
case "no":
isCompletion = 0;
break;
default:
isCompletion = 0;
}
salesOrderReqMap.put("isCompletion", isCompletion);//是否竣工
//开始获取oken
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(salesOrderReqMap), headers);
System.out.println(JSON.parseObject(JSON.toJSONString(reqEntity)));
String url = "http://192.168.9.4:9011/crm/initContract";
JSONObject salesOrderResult = new JSONObject();
try {
salesOrderResult = restTemplate.postForObject(url, reqEntity, JSONObject.class);
} catch (RestClientException e) {
e.printStackTrace();
}
System.out.println(JSON.parseObject(JSON.toJSONString(salesOrderResult)));
//开始封装回写程序
Map backReqMap = new HashMap();
backReqMap.put("_id", salesOrderId);
backReqMap.put("dataObjectApiName", "SaleContractObj");
//开始封装日志
Map logMap = new HashMap<>();
logMap.put("log_id", UUID.randomUUID().toString().replace("-", ""));
logMap.put("log_type", "TZXSHT");
logMap.put("syn_type", "0");
logMap.put("data_name", salesOrderName);
logMap.put("data_id", salesOrderId);
logMap.put("mark", modifyTime);
logMap.put("send_body", JSON.toJSONString(reqEntity));
logMap.put("send_res", JSON.toJSONString(salesOrderResult));
logMap.put("tableName", "send_log_tzht");
//判断是否执行成功
if (salesOrderResult.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_status__c", salesOrderResult.getString("msg"));
} else {
//同步失败
logMap.put("log_status", "1");
logMap.put("res_body", "同步失败:" + salesOrderResult.getString("msg"));
backReqMap.put("ledger_sync_status__c", "option_sync_failure__c");
backReqMap.put("ledger_response_status__c", salesOrderResult.getString("msg"));
}
//开始回写
JSONObject backReq = crmRequestUtil.updateCRM(backReqMap);
JSONObject backRes = new JSONObject();
try {
backRes = restTemplate.postForObject(URLConstant.UPDATE_CRM_MAIN, 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);
}
}
}