1063 lines
49 KiB
Java
1063 lines
49 KiB
Java
package com.management.controller;
|
||
|
||
import com.alibaba.fastjson.JSON;
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.management.constant.ERPURLConstant;
|
||
import com.management.constant.URLConstant;
|
||
import com.management.entity.Filter;
|
||
import com.management.utils.CrmRequestUtil;
|
||
import com.management.utils.KingDeeUtils;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.springframework.http.HttpEntity;
|
||
import org.springframework.http.HttpHeaders;
|
||
import org.springframework.http.MediaType;
|
||
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.*;
|
||
import java.util.concurrent.Executors;
|
||
import java.util.concurrent.ScheduledExecutorService;
|
||
import java.util.concurrent.TimeUnit;
|
||
|
||
/**
|
||
* 要货计划
|
||
*
|
||
* @param
|
||
* @return null
|
||
* @Author weiloong_zhang
|
||
*/
|
||
@RestController
|
||
@RequestMapping("/api/goods_plan")
|
||
@Slf4j
|
||
public class GoodsPlanController {
|
||
|
||
private RestTemplate restTemplate = new RestTemplate();
|
||
|
||
public static void main(String[] args) {
|
||
new GoodsPlanController().syncGoodsPlan();
|
||
//new GoodsPlanController().updateGoodsPlan();
|
||
//new GoodsPlanController().syncTrackingNum();
|
||
}
|
||
|
||
/**
|
||
* 同步新增要货计划
|
||
*
|
||
* @return void
|
||
* @Author weiloong_zhang
|
||
*/
|
||
@PostMapping("/sync/goodsPlan")
|
||
public void syncGoodsPlan() {
|
||
CrmRequestUtil crmRequestUtil = new CrmRequestUtil();
|
||
log.info("开始同步要货计划");
|
||
|
||
String[] syncStatus = {"option_pending_sync__c", "option_resync__c"};
|
||
|
||
//要货计划请求
|
||
JSONObject getGoodsPlan = crmRequestUtil.getCRMList(Arrays.asList(
|
||
//new Filter("IS", "erp_id__c", Arrays.asList("")),
|
||
new Filter("EQ", "business_status__c", Arrays.asList("option_normal__c")),
|
||
new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)),
|
||
new Filter("GT", "create_time", Arrays.asList("1748923200000")),
|
||
//new Filter("EQ", "name", Arrays.asList("YHJH20250508-0002")),
|
||
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||
), "purchase_plan__c");
|
||
|
||
JSONObject goodsPlanRes = new JSONObject();
|
||
|
||
//开始发起请求
|
||
try {
|
||
goodsPlanRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getGoodsPlan, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
//判断是否请求成功
|
||
if (!"success".equals(goodsPlanRes.getString("errorDescription")) || goodsPlanRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
log.info("请求失败或数据不存在");
|
||
return;
|
||
}
|
||
|
||
//请求成功
|
||
for (Object goodsPlanObj : goodsPlanRes.getJSONObject("data").getJSONArray("dataList")) {
|
||
//将Obj转为JSONObject
|
||
JSONObject goodsPlanData = JSON.parseObject(JSON.toJSONString(goodsPlanObj));
|
||
|
||
System.out.println("当前正在处理的要货计划数据为:" + goodsPlanData);
|
||
|
||
//获取当前单据的唯一id
|
||
String goodsPlanId = goodsPlanData.getString("_id");
|
||
|
||
//获取当前单据名称
|
||
String goodsPlanName = goodsPlanData.getString("name");
|
||
|
||
//获取当前单据的创建时间
|
||
//String createTime = goodsPlanData.getString("create_time");
|
||
String createTime = goodsPlanData.getString("last_modified_time");
|
||
|
||
//开始查询该单据是否已经集成过
|
||
JSONObject logRes = new JSONObject();
|
||
|
||
try {
|
||
logRes = restTemplate.getForObject("http://localhost:18085/Log/query/log_data?table=send_log_goodsplan&log_type=GP&dataId=" + goodsPlanId + "&mark=" + createTime, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
if (!logRes.getJSONArray("data").isEmpty()) {
|
||
log.info("当前单据已经集成过了");
|
||
continue;
|
||
}
|
||
|
||
log.info("当前单据没有集成过");
|
||
|
||
//开始封装传输至ERP的请求
|
||
log.info("开始封装请求");
|
||
|
||
Map erpGoodsPlanReq = new HashMap<>();
|
||
erpGoodsPlanReq.put("f9w5_crmid", goodsPlanId);
|
||
erpGoodsPlanReq.put("billno", goodsPlanName);//单据编号
|
||
erpGoodsPlanReq.put("billtype_number", "f9w5_sm_purchaseplan_BT");//单据类型
|
||
|
||
String orgNum = goodsPlanData.getString("erp_organization__c") != null ? goodsPlanData.getString("erp_organization__c") : "";
|
||
|
||
erpGoodsPlanReq.put("org_number", orgNum);//组织编码
|
||
|
||
String businessType = goodsPlanData.getString("business_status__c") != null ? goodsPlanData.getString("business_status__c") : "";
|
||
|
||
switch (businessType) {
|
||
case "option_normal__c":
|
||
erpGoodsPlanReq.put("f9w5_busstatus", "A");//业务状态
|
||
break;
|
||
case "option_close__c":
|
||
erpGoodsPlanReq.put("f9w5_busstatus", "B");//业务状态
|
||
break;
|
||
default:
|
||
erpGoodsPlanReq.put("f9w5_busstatus", "A");//业务状态
|
||
break;
|
||
}
|
||
|
||
//开始获取需求日期
|
||
long biztime = goodsPlanData.getLong("requirement_date__c");
|
||
|
||
Date date = new Date(biztime);
|
||
erpGoodsPlanReq.put("biztime", date);//需求日期
|
||
|
||
//部门编码
|
||
String deptCode = "";
|
||
|
||
List deptIdList = goodsPlanData.getJSONArray("data_own_department");
|
||
|
||
//开始查询部门编码
|
||
JSONObject deptReq = crmRequestUtil.getCRMList(Arrays.asList(
|
||
new Filter("EQ", "_id", deptIdList)
|
||
), "DepartmentObj");
|
||
|
||
JSONObject deptRes = new JSONObject();
|
||
|
||
try {
|
||
deptRes = restTemplate.postForObject(URLConstant.GET_CRM_LIST_URL, deptReq, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
if ("success".equals(deptRes.getString("errorDescription")) && !deptRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
JSONObject deptData = deptRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||
deptCode = deptData.getString("field_Vj6sf__c") != null ? deptData.getString("field_Vj6sf__c") : "";
|
||
}
|
||
|
||
//erpGoodsPlanReq.put("dept", "zyierp");//todo 归属部门
|
||
erpGoodsPlanReq.put("dept", deptCode);//todo 归属部门
|
||
|
||
//获取负责人编码
|
||
String ownerCode = "";
|
||
|
||
List ownerIdList = goodsPlanData.getJSONArray("owner");
|
||
|
||
JSONObject ownerReq = crmRequestUtil.getCRMList(Arrays.asList(
|
||
new Filter("EQ", "user_id", ownerIdList)
|
||
), "PersonnelObj");
|
||
|
||
JSONObject ownerRes = new JSONObject();
|
||
|
||
try {
|
||
ownerRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, ownerReq, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
if ("success".equals(ownerRes.getString("errorDescription")) && !ownerRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
JSONObject ownerData = ownerRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||
ownerCode = ownerData.getString("field_T1xid__c") != null ? ownerData.getString("field_T1xid__c") : "";
|
||
}
|
||
|
||
//erpGoodsPlanReq.put("operator", "ID-000011");//todo 负责人
|
||
erpGoodsPlanReq.put("operator", ownerCode);//todo 负责人
|
||
|
||
//根据要货计划查询要货计划明细
|
||
JSONObject getGoodsPlanDetail = crmRequestUtil.getCRMList(Arrays.asList(
|
||
new Filter("EQ", "purchase_plan__c", Arrays.asList(goodsPlanId))
|
||
), "purchase_plan_details__c");
|
||
|
||
JSONObject goodsPlanDetailRes = new JSONObject();
|
||
|
||
try {
|
||
goodsPlanDetailRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getGoodsPlanDetail, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
System.out.println("要货计划明细查询结果为:" + goodsPlanDetailRes);
|
||
|
||
if (!"success".equals(goodsPlanDetailRes.getString("errorDescription")) || goodsPlanDetailRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
log.info("要货计划明细查询失败不存在当前要货计划明细");
|
||
continue;
|
||
}
|
||
|
||
log.info("要货计划明细存在,继续向下执行");
|
||
|
||
//延时执行(非阻塞)
|
||
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
|
||
executor.schedule(() -> {
|
||
System.out.println("延时任务执行");
|
||
}, 10, TimeUnit.SECONDS); //10秒后执行
|
||
executor.shutdown(); // 关闭线程池
|
||
|
||
//明细列表
|
||
List goodsPlanDetailList = new ArrayList<>();
|
||
|
||
//用来判断跟踪号是否传输成功
|
||
JSONObject trackingNumReason = new JSONObject();
|
||
|
||
for (Object goodsPlanDetailObj : goodsPlanDetailRes.getJSONObject("data").getJSONArray("dataList")) {
|
||
|
||
if (!trackingNumReason.isEmpty()) {
|
||
log.info("已经存在执行错误的明细,将不再执行本条数据");
|
||
continue;
|
||
}
|
||
|
||
JSONObject goodsPlanDetailData = JSON.parseObject(JSON.toJSONString(goodsPlanDetailObj));
|
||
|
||
System.out.println("当前正在处理的要货计划明细数据为:" + goodsPlanDetailData);
|
||
|
||
String trackingNum = goodsPlanDetailData.getString("batch_number__c") != null ? goodsPlanDetailData.getString("batch_number__c") : "";
|
||
|
||
if (trackingNum.equals("")) {
|
||
log.info("跟踪号不存在,将不再向下执行");
|
||
trackingNumReason.put("status", "false");
|
||
trackingNumReason.put("reason", "跟踪号不存在,将不再向下执行");
|
||
continue;
|
||
}
|
||
|
||
//跟踪号存在,开始执行
|
||
JSONObject syncTrackingNum = syncTrackingNum(trackingNum);
|
||
|
||
//判断是否执行成功
|
||
if (!"success".equals(syncTrackingNum.getString("errorCode"))) {
|
||
trackingNumReason.put("status", "false");
|
||
trackingNumReason.put("reason", syncTrackingNum.getString("message"));
|
||
continue;
|
||
}
|
||
|
||
//开始封装要货计划明细数据
|
||
Map erpGoodsPlanDetailReq = new HashMap<>();
|
||
erpGoodsPlanDetailReq.put("f9w5_crmentryid", goodsPlanDetailData.getString("_id"));//crm明细id
|
||
erpGoodsPlanDetailReq.put("material_number", goodsPlanDetailData.getString("material_id__c__r"));//物料编号
|
||
erpGoodsPlanDetailReq.put("entryorg_number", orgNum);//组织编码
|
||
erpGoodsPlanDetailReq.put("qty", goodsPlanDetailData.getBigDecimal("quantity__c") != null ? goodsPlanDetailData.getBigDecimal("quantity__c") : 0);//数量
|
||
//erpGoodsPlanDetailReq.put("lot_number", goodsPlanDetailData.getString("batch_number__c") != null ? goodsPlanDetailData.getString("batch_number__c") : "");//批号
|
||
erpGoodsPlanDetailReq.put("entrycomment", goodsPlanDetailData.getString("remark__c") != null ? goodsPlanDetailData.getString("remark__c") : "");//备注
|
||
erpGoodsPlanDetailReq.put("f9w5_contractno", goodsPlanDetailData.getString("sales_contract_number__c__r") != null ? goodsPlanDetailData.getString("sales_contract_number__c__r") : "");//销售合同编号
|
||
erpGoodsPlanDetailReq.put("f9w5_tracknumber_number", trackingNum);//跟踪号
|
||
|
||
//程序版本
|
||
String programVersion = goodsPlanDetailData.getString("program_version_number__c") != null ? goodsPlanDetailData.getString("program_version_number__c") : "";
|
||
|
||
if (programVersion.equals("")) {
|
||
log.info("程序版本不存在,将不再向下执行");
|
||
continue;
|
||
}
|
||
|
||
erpGoodsPlanDetailReq.put("f9w5_programversion_number", programVersion);//程序版本
|
||
|
||
//程序版本编码
|
||
String programVersionCode = goodsPlanDetailData.getString("platform_name_code__c") != null ? goodsPlanDetailData.getString("platform_name_code__c") : "";
|
||
|
||
if (programVersionCode.equals("")) {
|
||
log.info("程序版本编码不存在,将不再向下执行");
|
||
continue;
|
||
}
|
||
|
||
erpGoodsPlanDetailReq.put("f9w5_smplatform_number", programVersionCode);
|
||
|
||
// //开始查询项目号
|
||
// String projectId = goodsPlanDetailData.getString("project_name__c") != null ? goodsPlanDetailData.getString("project_name__c") : "";
|
||
//
|
||
// //开始查询项目号
|
||
// JSONObject getProjectReq = crmRequestUtil.getCRMList(Arrays.asList(
|
||
// new Filter("EQ", "_id", Arrays.asList(projectId))
|
||
// ), "NewOpportunityObj");
|
||
//
|
||
// JSONObject projectRes = new JSONObject();
|
||
//
|
||
// try {
|
||
// projectRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getProjectReq, JSONObject.class);
|
||
// } catch (RestClientException e) {
|
||
// e.printStackTrace();
|
||
// }
|
||
//
|
||
// String projectCode = "";
|
||
//
|
||
// if ("success".equals(projectRes.getString("errorDescription")) && !projectRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
// JSONObject projectData = projectRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||
// projectCode = projectData.getString("opportunity_id__c") != null ? projectData.getString("opportunity_id__c") : "";
|
||
// }
|
||
|
||
//项目号
|
||
erpGoodsPlanDetailReq.put("f9w5_project_number", goodsPlanDetailData.getString("project_no__c") != null ? goodsPlanDetailData.getString("project_no__c") : "");//项目号
|
||
|
||
goodsPlanDetailList.add(erpGoodsPlanDetailReq);
|
||
|
||
}
|
||
|
||
//开始封装回写程序
|
||
Map backReqMap = new HashMap();
|
||
backReqMap.put("_id", goodsPlanId);
|
||
backReqMap.put("dataObjectApiName", "purchase_plan__c");
|
||
|
||
//开始判断
|
||
if (!trackingNumReason.isEmpty()) {
|
||
log.info("明细封装错误,将不再向下执行");
|
||
backReqMap.put("sync_status__c", "option_sync_failure__c");
|
||
backReqMap.put("response_info__c", trackingNumReason.getString("reason"));
|
||
|
||
//开始回写
|
||
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);
|
||
continue;
|
||
}
|
||
|
||
//判断明细是否存在
|
||
if (goodsPlanDetailList.isEmpty()) {
|
||
log.info("明细为空,将不再向下执行");
|
||
continue;
|
||
}
|
||
|
||
erpGoodsPlanReq.put("billentry", goodsPlanDetailList);
|
||
|
||
//开始封装要货计划请求
|
||
System.out.println("erp请求为:" + JSON.parseObject(JSON.toJSONString(erpGoodsPlanReq)));
|
||
|
||
Map erpContractData = new HashMap<>();
|
||
erpContractData.put("data", Arrays.asList(erpGoodsPlanReq));//请求体
|
||
|
||
String accessToken = new KDTokenController().getKDAccessTokenTest();
|
||
|
||
if (accessToken == null || accessToken.equals("")) {
|
||
log.info("金蝶token为空或不存在");
|
||
return;
|
||
}
|
||
String uuid = UUID.randomUUID().toString().replace("-", "");
|
||
//开始封装请求头
|
||
HttpHeaders headers = new HttpHeaders();
|
||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||
headers.set("accessToken", accessToken);
|
||
headers.set("Idempotency-Key", uuid);
|
||
|
||
HttpEntity goodsPlanReqEntity = new HttpEntity(erpContractData, headers);
|
||
|
||
System.out.println(JSON.parseObject(JSON.toJSONString(goodsPlanReqEntity)));
|
||
|
||
//开始向金蝶发起请求
|
||
String goodsPlanUrl = ERPURLConstant.ERP_URL + "/ierp/kapi/v2/f9w5/sm/f9w5_sm_purchaseplan/purchaseplanSave";
|
||
|
||
JSONObject erpGoodsPlanRes = new JSONObject();
|
||
|
||
try {
|
||
erpGoodsPlanRes = restTemplate.postForObject(goodsPlanUrl, goodsPlanReqEntity, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
System.out.println("要货计划结果为:" + JSON.parseObject(JSON.toJSONString(erpGoodsPlanRes)));
|
||
|
||
//开始封装日志
|
||
Map logMap = new HashMap<>();
|
||
logMap.put("log_id", UUID.randomUUID().toString().replace("-", ""));
|
||
logMap.put("log_type", "GP");
|
||
logMap.put("syn_type", "0");
|
||
logMap.put("data_name", goodsPlanName);
|
||
logMap.put("data_id", goodsPlanId);
|
||
logMap.put("mark", createTime);
|
||
logMap.put("send_body", JSON.toJSONString(goodsPlanReqEntity));
|
||
logMap.put("send_res", JSON.toJSONString(erpGoodsPlanRes));
|
||
logMap.put("tableName", "send_log_goodsplan");
|
||
|
||
//判断是否执行成功
|
||
if ("0".equals(erpGoodsPlanRes.getString("errorCode"))) {
|
||
//同步成功
|
||
logMap.put("log_status", "0");
|
||
logMap.put("res_body", "同步成功");
|
||
backReqMap.put("erp_id__c", erpGoodsPlanRes.getJSONObject("data").getJSONArray("result").getJSONObject(0).getString("id"));
|
||
backReqMap.put("sync_status__c", "option_sync_success__c");
|
||
backReqMap.put("response_info__c", "同步成功");
|
||
|
||
//审核
|
||
KingDeeUtils kingDeeUtils = new KingDeeUtils();
|
||
kingDeeUtils.audit(erpGoodsPlanRes.getJSONObject("data").getJSONArray("result").getJSONObject(0).getString("id"), "f9w5_sm_purchaseplan");
|
||
} else {
|
||
//同步失败
|
||
logMap.put("log_status", "1");
|
||
logMap.put("res_body", "同步失败:" + erpGoodsPlanRes.getString("message"));
|
||
backReqMap.put("sync_status__c", "option_sync_failure__c");
|
||
backReqMap.put("response_info__c", erpGoodsPlanRes.getString("message"));
|
||
}
|
||
|
||
//开始回写
|
||
JSONObject backReq = crmRequestUtil.updateCRM(backReqMap);
|
||
|
||
System.out.println("回写请求为:" + JSON.parseObject(JSON.toJSONString(backReq)));
|
||
|
||
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 logResMap = new JSONObject();
|
||
try {
|
||
logResMap = restTemplate.postForObject("http://localhost:18085/Log/insert/log_data", logMap, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
System.out.println("日志插入结果为:" + logResMap);
|
||
|
||
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 要货计划更新接口
|
||
*
|
||
* @return void
|
||
* @Author weiloong_zhang
|
||
*/
|
||
@PostMapping("/update/goodsPlan")
|
||
public void updateGoodsPlan() {
|
||
CrmRequestUtil crmRequestUtil = new CrmRequestUtil();
|
||
log.info("开始同步更新要货计划");
|
||
|
||
//要货计划请求
|
||
JSONObject getGoodsPlan = crmRequestUtil.getCRMList(Arrays.asList(
|
||
//new Filter("IS", "erp_id__c", Arrays.asList("")),
|
||
new Filter("EQ", "business_status__c", Arrays.asList("option_close__c")),
|
||
//new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)),
|
||
new Filter("GT", "create_time", Arrays.asList("1748923200000")),
|
||
//new Filter("EQ", "name", Arrays.asList("YHJH20250508-0002")),
|
||
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||
), "purchase_plan__c");
|
||
|
||
JSONObject goodsPlanRes = new JSONObject();
|
||
|
||
//开始发起请求
|
||
try {
|
||
goodsPlanRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getGoodsPlan, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
//判断是否请求成功
|
||
if (!"success".equals(goodsPlanRes.getString("errorDescription")) || goodsPlanRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
log.info("请求失败或数据不存在");
|
||
return;
|
||
}
|
||
|
||
//请求成功
|
||
for (Object goodsPlanObj : goodsPlanRes.getJSONObject("data").getJSONArray("dataList")) {
|
||
//将Obj转为JSONObject
|
||
JSONObject goodsPlanData = JSON.parseObject(JSON.toJSONString(goodsPlanObj));
|
||
|
||
System.out.println("当前正在处理的要货计划数据为:" + goodsPlanData);
|
||
|
||
//获取当前单据的唯一id
|
||
String goodsPlanId = goodsPlanData.getString("_id");
|
||
|
||
//获取当前单据名称
|
||
String goodsPlanName = goodsPlanData.getString("name");
|
||
|
||
//获取当前单据的最后修改时间
|
||
String lastModifyTime = goodsPlanData.getString("last_modified_time");
|
||
|
||
//开始查询该单据是否已经集成过
|
||
JSONObject logRes = new JSONObject();
|
||
|
||
try {
|
||
logRes = restTemplate.getForObject("http://localhost:18085/Log/query/log_data?table=send_log_goodsplan&log_type=GPUP&dataId=" + goodsPlanId + "&mark=" + lastModifyTime, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
if (!logRes.getJSONArray("data").isEmpty()) {
|
||
log.info("当前单据已经更新过了");
|
||
continue;
|
||
}
|
||
|
||
log.info("当前单据没有集成过");
|
||
|
||
//开始封装传输至ERP的请求
|
||
log.info("开始封装请求");
|
||
|
||
//获取ERPID
|
||
String erpId = goodsPlanData.getString("erp_id__c") != null ? goodsPlanData.getString("erp_id__c") : "";
|
||
|
||
if ("".equals(erpId)) {
|
||
log.info("当前单据erp_id__c为空,不再向下执行");
|
||
continue;
|
||
}
|
||
|
||
log.info("存在ERPID,继续向下执行!");
|
||
|
||
Map erpGoodsPlanReq = new HashMap<>();
|
||
erpGoodsPlanReq.put("id", erpId);
|
||
erpGoodsPlanReq.put("f9w5_crmid", goodsPlanId);
|
||
erpGoodsPlanReq.put("billno", goodsPlanName);//单据编号
|
||
erpGoodsPlanReq.put("billtype_number", "f9w5_sm_purchaseplan_BT");//单据类型
|
||
|
||
//组织编码
|
||
String orgNum = goodsPlanData.getString("erp_organization__c") != null ? goodsPlanData.getString("erp_organization__c") : "";
|
||
|
||
erpGoodsPlanReq.put("org_number", orgNum);//组织编码
|
||
|
||
String businessType = goodsPlanData.getString("business_status__c") != null ? goodsPlanData.getString("business_status__c") : "";
|
||
|
||
switch (businessType) {
|
||
case "option_normal__c":
|
||
erpGoodsPlanReq.put("f9w5_busstatus", "A");//业务状态
|
||
break;
|
||
case "option_close__c":
|
||
erpGoodsPlanReq.put("f9w5_busstatus", "B");//业务状态
|
||
break;
|
||
default:
|
||
erpGoodsPlanReq.put("f9w5_busstatus", "A");//业务状态
|
||
break;
|
||
}
|
||
|
||
//开始获取需求日期
|
||
long biztime = goodsPlanData.getLong("requirement_date__c");
|
||
|
||
Date date = new Date(biztime);
|
||
erpGoodsPlanReq.put("biztime", date);//需求日期
|
||
|
||
//部门编码
|
||
String deptCode = "";
|
||
|
||
List deptIdList = goodsPlanData.getJSONArray("data_own_department");
|
||
|
||
//开始查询部门编码
|
||
JSONObject deptReq = crmRequestUtil.getCRMList(Arrays.asList(
|
||
new Filter("EQ", "_id", deptIdList)
|
||
), "DepartmentObj");
|
||
|
||
JSONObject deptRes = new JSONObject();
|
||
|
||
try {
|
||
deptRes = restTemplate.postForObject(URLConstant.GET_CRM_LIST_URL, deptReq, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
if ("success".equals(deptRes.getString("errorDescription")) && !deptRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
JSONObject deptData = deptRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||
deptCode = deptData.getString("field_Vj6sf__c") != null ? deptData.getString("field_Vj6sf__c") : "";
|
||
}
|
||
|
||
erpGoodsPlanReq.put("dept", deptCode);//todo 归属部门
|
||
|
||
//获取负责人编码
|
||
String ownerCode = "";
|
||
|
||
List ownerIdList = goodsPlanData.getJSONArray("owner");
|
||
|
||
JSONObject ownerReq = crmRequestUtil.getCRMList(Arrays.asList(
|
||
new Filter("EQ", "user_id", ownerIdList)
|
||
), "PersonnelObj");
|
||
|
||
JSONObject ownerRes = new JSONObject();
|
||
|
||
try {
|
||
ownerRes = restTemplate.postForObject(URLConstant.GET_CRM_LIST_URL, ownerReq, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
if ("success".equals(ownerRes.getString("errorDescription")) && !ownerRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
JSONObject ownerData = ownerRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||
ownerCode = ownerData.getString("field_T1xid__c") != null ? ownerData.getString("field_T1xid__c") : "";
|
||
}
|
||
|
||
erpGoodsPlanReq.put("operator", ownerCode);//todo 负责人
|
||
|
||
//根据要货计划查询要货计划明细
|
||
JSONObject getGoodsPlanDetail = crmRequestUtil.getCRMList(Arrays.asList(
|
||
new Filter("EQ", "purchase_plan__c", Arrays.asList(goodsPlanId))
|
||
), "purchase_plan_details__c");
|
||
|
||
JSONObject goodsPlanDetailRes = new JSONObject();
|
||
|
||
try {
|
||
goodsPlanDetailRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getGoodsPlanDetail, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
System.out.println("要货计划明细查询结果为:" + goodsPlanDetailRes);
|
||
|
||
if (!"success".equals(goodsPlanDetailRes.getString("errorDescription")) || goodsPlanDetailRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
log.info("要货计划明细查询失败不存在当前要货计划明细");
|
||
continue;
|
||
}
|
||
|
||
log.info("要货计划明细存在,继续向下执行");
|
||
|
||
//明细列表
|
||
List goodsPlanDetailList = new ArrayList<>();
|
||
|
||
//用来判断跟踪号是否传输成功
|
||
JSONObject trackingNumReason = new JSONObject();
|
||
|
||
for (Object goodsPlanDetailObj : goodsPlanDetailRes.getJSONObject("data").getJSONArray("dataList")) {
|
||
JSONObject goodsPlanDetailData = JSON.parseObject(JSON.toJSONString(goodsPlanDetailObj));
|
||
|
||
System.out.println("当前正在处理的要货计划明细数据为:" + goodsPlanDetailData);
|
||
|
||
String trackingNum = goodsPlanDetailData.getString("batch_number__c") != null ? goodsPlanDetailData.getString("batch_number__c") : "";
|
||
|
||
if (trackingNum.equals("")) {
|
||
log.info("跟踪号不存在,将不再向下执行");
|
||
trackingNumReason.put("status", "false");
|
||
trackingNumReason.put("reason", "跟踪号不存在,将不再向下执行");
|
||
continue;
|
||
}
|
||
|
||
//跟踪号存在,开始执行
|
||
JSONObject syncTrackingNum = syncTrackingNum(trackingNum);
|
||
|
||
//判断是否执行成功
|
||
if (!"success".equals(syncTrackingNum.getString("errorCode"))) {
|
||
trackingNumReason.put("status", "false");
|
||
trackingNumReason.put("reason", syncTrackingNum.getString("message"));
|
||
continue;
|
||
}
|
||
|
||
//开始封装要货计划明细数据
|
||
Map erpGoodsPlanDetailReq = new HashMap<>();
|
||
erpGoodsPlanDetailReq.put("f9w5_crmentryid", goodsPlanDetailData.getString("_id"));//crm明细id
|
||
erpGoodsPlanDetailReq.put("material_number", goodsPlanDetailData.getString("material_id__c__r"));//物料编号
|
||
erpGoodsPlanDetailReq.put("entryorg_number", orgNum);//组织编码
|
||
erpGoodsPlanDetailReq.put("qty", goodsPlanDetailData.getBigDecimal("quantity__c") != null ? goodsPlanDetailData.getBigDecimal("quantity__c") : 0);//数量
|
||
//erpGoodsPlanDetailReq.put("lot_number", goodsPlanDetailData.getString("batch_number__c") != null ? goodsPlanDetailData.getString("batch_number__c") : "");//批号
|
||
erpGoodsPlanDetailReq.put("entrycomment", goodsPlanDetailData.getString("remark__c") != null ? goodsPlanDetailData.getString("remark__c") : "");//备注
|
||
erpGoodsPlanDetailReq.put("f9w5_contractno", goodsPlanDetailData.getString("sales_contract_number__c__r") != null ? goodsPlanDetailData.getString("sales_contract_number__c__r") : "");//销售合同编号
|
||
erpGoodsPlanDetailReq.put("f9w5_tracknumber_number", trackingNum);//跟踪号
|
||
|
||
//开始查询项目号
|
||
String projectId = goodsPlanDetailData.getString("project_name__c") != null ? goodsPlanDetailData.getString("project_name__c") : "";
|
||
|
||
//开始查询项目号
|
||
JSONObject getProjectReq = crmRequestUtil.getCRMList(Arrays.asList(
|
||
new Filter("EQ", "_id", Arrays.asList(projectId))
|
||
), "NewOpportunityObj");
|
||
|
||
JSONObject projectRes = new JSONObject();
|
||
|
||
try {
|
||
projectRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getProjectReq, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
String projectCode = "";
|
||
|
||
if ("success".equals(projectRes.getString("errorDescription")) && !projectRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
JSONObject projectData = projectRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||
projectCode = projectData.getString("opportunity_id__c") != null ? projectData.getString("opportunity_id__c") : "";
|
||
}
|
||
|
||
erpGoodsPlanDetailReq.put("f9w5_project_number", projectCode);//项目号
|
||
|
||
goodsPlanDetailList.add(erpGoodsPlanDetailReq);
|
||
|
||
}
|
||
|
||
//开始封装回写程序
|
||
Map backReqMap = new HashMap();
|
||
backReqMap.put("_id", goodsPlanId);
|
||
backReqMap.put("dataObjectApiName", "purchase_plan__c");
|
||
|
||
//开始判断
|
||
if (!trackingNumReason.isEmpty()) {
|
||
log.info("明细封装错误,将不再向下执行");
|
||
backReqMap.put("sync_status__c", "option_sync_failure__c");
|
||
backReqMap.put("response_info__c", trackingNumReason.getString("reason"));
|
||
|
||
//开始回写
|
||
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);
|
||
continue;
|
||
}
|
||
|
||
erpGoodsPlanReq.put("billentry", goodsPlanDetailList);
|
||
|
||
//开始封装要货计划请求
|
||
System.out.println("erp请求为:" + JSON.parseObject(JSON.toJSONString(erpGoodsPlanReq)));
|
||
|
||
Map erpContractData = new HashMap<>();
|
||
erpContractData.put("data", Arrays.asList(erpGoodsPlanReq));//请求体
|
||
|
||
String accessToken = new KDTokenController().getKDAccessTokenTest();
|
||
|
||
if (accessToken == null || accessToken.equals("")) {
|
||
log.info("金蝶token为空或不存在");
|
||
return;
|
||
}
|
||
String uuid = UUID.randomUUID().toString().replace("-", "");
|
||
//开始封装请求头
|
||
HttpHeaders headers = new HttpHeaders();
|
||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||
headers.set("accessToken", accessToken);
|
||
headers.set("Idempotency-Key", uuid);
|
||
|
||
HttpEntity goodsPlanReqEntity = new HttpEntity(erpContractData, headers);
|
||
|
||
System.out.println(JSON.parseObject(JSON.toJSONString(goodsPlanReqEntity)));
|
||
|
||
//开始向金蝶发起请求
|
||
String goodsPlanUrl = ERPURLConstant.ERP_URL + "/ierp/kapi/v2/f9w5/sm/f9w5_sm_purchaseplan/purchaseplanSave";
|
||
|
||
JSONObject erpGoodsPlanRes = new JSONObject();
|
||
|
||
try {
|
||
erpGoodsPlanRes = restTemplate.postForObject(goodsPlanUrl, goodsPlanReqEntity, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
System.out.println("要货计划结果为:" + JSON.parseObject(JSON.toJSONString(erpGoodsPlanRes)));
|
||
|
||
//开始封装日志
|
||
Map logMap = new HashMap<>();
|
||
logMap.put("log_id", UUID.randomUUID().toString().replace("-", ""));
|
||
logMap.put("log_type", "GPUP");
|
||
logMap.put("syn_type", "1");
|
||
logMap.put("data_name", goodsPlanName);
|
||
logMap.put("data_id", goodsPlanId);
|
||
logMap.put("mark", lastModifyTime);
|
||
logMap.put("send_body", JSON.toJSONString(goodsPlanReqEntity));
|
||
logMap.put("send_res", JSON.toJSONString(erpGoodsPlanRes));
|
||
logMap.put("tableName", "send_log_goodsplan");
|
||
|
||
//判断是否执行成功
|
||
if ("0".equals(erpGoodsPlanRes.getString("errorCode"))) {
|
||
//同步成功
|
||
logMap.put("log_status", "0");
|
||
logMap.put("res_body", "同步成功");
|
||
backReqMap.put("erp_id__c", erpGoodsPlanRes.getJSONObject("data").getJSONArray("result").getJSONObject(0).getString("id"));
|
||
backReqMap.put("sync_status__c", "option_sync_success__c");
|
||
backReqMap.put("response_info__c", "同步成功");
|
||
} else {
|
||
//同步失败
|
||
logMap.put("log_status", "1");
|
||
logMap.put("res_body", "同步失败:" + erpGoodsPlanRes.getString("message"));
|
||
backReqMap.put("sync_status__c", "option_sync_failure__c");
|
||
backReqMap.put("response_info__c", erpGoodsPlanRes.getString("message"));
|
||
}
|
||
|
||
//开始回写
|
||
JSONObject backReq = crmRequestUtil.updateCRM(backReqMap);
|
||
|
||
System.out.println("回写请求为:" + JSON.parseObject(JSON.toJSONString(backReq)));
|
||
|
||
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 logResMap = new JSONObject();
|
||
try {
|
||
logResMap = restTemplate.postForObject("http://localhost:18085/Log/insert/log_data", logMap, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
System.out.println("日志插入结果为:" + logResMap);
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 跟踪号同步方法
|
||
*
|
||
* @return java.lang.String
|
||
* @Author weiloong_zhang
|
||
*/
|
||
public JSONObject syncTrackingNum(String trackingNum) {
|
||
CrmRequestUtil crmRequestUtil = new CrmRequestUtil();
|
||
|
||
//String trackingNum = "YHJH2505290005-1";
|
||
|
||
JSONObject res = new JSONObject();
|
||
|
||
JSONObject getTrackNum = crmRequestUtil.getCRMList(Arrays.asList(
|
||
new Filter("EQ", "name", Arrays.asList(trackingNum))
|
||
), "tracking_number__c");
|
||
|
||
JSONObject trackingNumRes = new JSONObject();
|
||
|
||
try {
|
||
trackingNumRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getTrackNum, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
System.out.println("跟踪号查询结果为:" + trackingNumRes);
|
||
|
||
if (!"success".equals(trackingNumRes.getString("errorDescription")) || trackingNumRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||
log.info("查询失败或者不存在符合条件数据");
|
||
res.put("errorCode", "error");
|
||
res.put("message", "跟踪号查询失败或者不存在符合条件数据");
|
||
return res;
|
||
}
|
||
|
||
log.info("跟踪号查询成功,继续向下执行");
|
||
|
||
JSONObject trackingNumData = trackingNumRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||
|
||
System.out.println("当前正在处理的跟踪号为:" + trackingNumData);
|
||
|
||
String trackingNumStr = trackingNumData.getString("name");
|
||
//开始封装跟踪号数据
|
||
Map trackingNumMap = new HashMap();
|
||
trackingNumMap.put("number", trackingNumStr);//跟踪号
|
||
trackingNumMap.put("status", "C");//数据状态
|
||
trackingNumMap.put("sourcebillno", trackingNumData.getString("purchase_plan__c__r") != null ? trackingNumData.getString("purchase_plan__c__r") : "");//todo 来源单据编号
|
||
trackingNumMap.put("description", "C");//todo 描述
|
||
|
||
String lineStr = trackingNumStr.split("-")[1];
|
||
|
||
trackingNumMap.put("sourcebillentryseq", lineStr);//来源单据分录行号
|
||
trackingNumMap.put("f9w5_materialname", trackingNumData.getString("material_name__c") != null ? trackingNumData.getString("material_name__c") : "");//物料名称
|
||
|
||
String isNeedForProduction = trackingNumData.getString("is_need_for_production__c") != null ? trackingNumData.getString("is_need_for_production__c") : "";
|
||
|
||
switch (isNeedForProduction) {
|
||
case "yes":
|
||
trackingNumMap.put("f9w5_isuse", true);//是否需要生产使用该参数
|
||
break;
|
||
case "no":
|
||
trackingNumMap.put("f9w5_isuse", false);//是否需要生产使用该参数
|
||
break;
|
||
default:
|
||
trackingNumMap.put("f9w5_isuse", null);//是否需要生产使用该参数
|
||
break;
|
||
}
|
||
|
||
trackingNumMap.put("f9w5_deviceid", trackingNumData.getString("device_id_third__c") != null ? trackingNumData.getString("device_id_third__c") : "");//设备ID(第三方编号)
|
||
trackingNumMap.put("f9w5_apn", trackingNumData.getString("apn_parameters__c") != null ? trackingNumData.getString("apn_parameters__c") : "");//APN参数
|
||
trackingNumMap.put("f9w5_ip", trackingNumData.getString("ip_address__c") != null ? trackingNumData.getString("ip_address__c") : "");//ip
|
||
trackingNumMap.put("f9w5_port", trackingNumData.getString("port__c") != null ? trackingNumData.getString("port__c") : "");//端口
|
||
|
||
//是否插卡
|
||
String isCard = trackingNumData.getString("is_card_inserted__c") != null ? trackingNumData.getString("is_card_inserted__c") : "";
|
||
|
||
switch (isCard) {
|
||
case "yes":
|
||
trackingNumMap.put("f9w5_bindingcard", true);//是否插卡
|
||
break;
|
||
case "no":
|
||
trackingNumMap.put("f9w5_bindingcard", false);//是否插卡
|
||
break;
|
||
default:
|
||
trackingNumMap.put("f9w5_bindingcard", null);//是否插卡
|
||
break;
|
||
}
|
||
|
||
//快快拍模式
|
||
String snapShot = trackingNumData.getString("snap_mode__c") != null ? trackingNumData.getString("snap_mode__c") : "";
|
||
|
||
switch (snapShot) {
|
||
case "yes":
|
||
trackingNumMap.put("f9w5_snapshot", true);//是否插卡
|
||
break;
|
||
case "no":
|
||
trackingNumMap.put("f9w5_snapshot", false);//是否插卡
|
||
break;
|
||
default:
|
||
trackingNumMap.put("f9w5_snapshot", null);//是否插卡
|
||
break;
|
||
}
|
||
|
||
//前端智能识别
|
||
String isFront = trackingNumData.getString("front_end_intelligent_reco__c") != null ? trackingNumData.getString("front_end_intelligent_reco__c") : "";
|
||
|
||
switch (isFront) {
|
||
case "yes":
|
||
trackingNumMap.put("f9w5_frontir", true);//前端智能识别
|
||
break;
|
||
case "no":
|
||
trackingNumMap.put("f9w5_frontir", false);//前端智能识别
|
||
break;
|
||
default:
|
||
trackingNumMap.put("f9w5_frontir", null);//前端智能识别
|
||
break;
|
||
}
|
||
|
||
//运行模式修改
|
||
String runMode = trackingNumData.getString("operation_mode_update__c") != null ? trackingNumData.getString("operation_mode_update__c") : "";
|
||
|
||
trackingNumMap.put("f9w5_runmodification", runMode);
|
||
//通道拍照时间间隔
|
||
trackingNumMap.put("f9w5_channelinterval", trackingNumData.getString("channel_photo_interval__c__r") != null ? trackingNumData.getString("channel_photo_interval__c__r") : "");
|
||
//通道图片分辨率/像素
|
||
trackingNumMap.put("f9w5_channelpixel", trackingNumData.getString("channel_image_resolution__c__r") != null ? trackingNumData.getString("channel_image_resolution__c__r") : "");
|
||
//机芯图片分辨率/像素
|
||
trackingNumMap.put("f9w5_movementpixel", trackingNumData.getString("core_image_resolution__c__r") != null ? trackingNumData.getString("core_image_resolution__c__r") : "");
|
||
//副机通道号
|
||
String auxiliarychannel = trackingNumData.getString("secondary_channel_number__c") != null ? trackingNumData.getString("secondary_channel_number__c") : "";
|
||
if (auxiliarychannel.equals("") || auxiliarychannel.equals("option_none__c")) {
|
||
auxiliarychannel = "";
|
||
}
|
||
|
||
trackingNumMap.put("f9w5_auxiliarychannel", auxiliarychannel);
|
||
//机芯拍照时间间隔
|
||
trackingNumMap.put("f9w5_movementinterval", trackingNumData.getString("core_photo_interval__c__r") != null ? trackingNumData.getString("core_photo_interval__c__r") : "");
|
||
//副机绑定地址
|
||
trackingNumMap.put("f9w5_auxiliaryip", trackingNumData.getString("secondary_device_bound_add__c__r") != null ? trackingNumData.getString("secondary_device_bound_add__c__r") : "");
|
||
//副机通道类型
|
||
String auxiliarychanneltype = trackingNumData.getString("secondary_channel_type__c__r") != null ? trackingNumData.getString("secondary_channel_type__c__r") : "";
|
||
|
||
if (auxiliarychanneltype.equals("") || auxiliarychanneltype.equals("option_none__c")) {
|
||
auxiliarychanneltype = "";
|
||
}
|
||
|
||
trackingNumMap.put("f9w5_auxiliarytype", auxiliarychanneltype);
|
||
//维护时间段
|
||
trackingNumMap.put("f9w5_maintenancetime", trackingNumData.getString("maintenance_time_period__c") != null ? trackingNumData.getString("maintenance_time_period__c") : "");
|
||
//出厂内外卡选择
|
||
trackingNumMap.put("f9w5_inoutcard", trackingNumData.getString("factory_external_card_choi__c__r") != null ? trackingNumData.getString("factory_external_card_choi__c__r") : "");
|
||
//出厂平台选择
|
||
trackingNumMap.put("f9w5_outplatform", trackingNumData.getString("factory_platform_choice__c__r") != null ? trackingNumData.getString("factory_platform_choice__c__r") : "");
|
||
//铭牌
|
||
trackingNumMap.put("f9w5_nameplate", trackingNumData.getString("tag_name__c__r") != null ? trackingNumData.getString("tag_name__c__r") : "");
|
||
//流量卡
|
||
trackingNumMap.put("f9w5_flowcard", trackingNumData.getString("traffic_card__c__r") != null ? trackingNumData.getString("traffic_card__c__r") : "");
|
||
//联网模式配置
|
||
trackingNumMap.put("f9w5_confignetset", trackingNumData.getString("network_mode_config__c__r") != null ? trackingNumData.getString("network_mode_config__c__r") : "");
|
||
//是否开启维护模式
|
||
String isMaintenance = trackingNumData.getString("is_maintenance_mode_enable__c") != null ? trackingNumData.getString("is_maintenance_mode_enable__c") : "";
|
||
|
||
switch (isMaintenance) {
|
||
case "yes":
|
||
trackingNumMap.put("f9w5_ismaintenance", true);//前端智能识别
|
||
break;
|
||
case "no":
|
||
trackingNumMap.put("f9w5_ismaintenance", false);//前端智能识别
|
||
break;
|
||
default:
|
||
trackingNumMap.put("f9w5_ismaintenance", null);//前端智能识别
|
||
break;
|
||
}
|
||
|
||
//物料编码
|
||
trackingNumMap.put("f9w5_material_number", trackingNumData.getString("material_code__c__r") != null ? trackingNumData.getString("material_code__c__r") : "");
|
||
//平台
|
||
trackingNumMap.put("f9w5_smplatform_number", trackingNumData.getString("platform_name_code__c") != null ? trackingNumData.getString("platform_name_code__c") : "");
|
||
//todo 来源单据类型.编码
|
||
trackingNumMap.put("sourcebilltype_number", "f9w5_sm_purchaseplan_BT");
|
||
|
||
Map erpTrackReq = new HashMap<>();
|
||
erpTrackReq.put("data", Arrays.asList(trackingNumMap));
|
||
|
||
//开始获取token
|
||
String accessToken = new KDTokenController().getKDAccessTokenTest();
|
||
|
||
if (accessToken == null || accessToken.equals("")) {
|
||
log.info("金蝶token为空或不存在");
|
||
res.put("errorCode", "error");
|
||
res.put("message", "跟踪号金蝶token为空或不存在");
|
||
return res;
|
||
}
|
||
String uuid = UUID.randomUUID().toString().replace("-", "");
|
||
//开始封装请求头
|
||
HttpHeaders headers = new HttpHeaders();
|
||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||
headers.set("accessToken", accessToken);
|
||
headers.set("Idempotency-Key", uuid);
|
||
|
||
HttpEntity contractReqEntity = new HttpEntity(erpTrackReq, headers);
|
||
|
||
System.out.println(JSON.parseObject(JSON.toJSONString(contractReqEntity)));
|
||
|
||
String trackingNumUrl = ERPURLConstant.ERP_URL + "/ierp/kapi/v2/f9w5/sbd/bd_tracknumber/bdTracknumberSave";
|
||
|
||
//开始调用金蝶接口
|
||
JSONObject trackingNumERPRes = new JSONObject();
|
||
|
||
try {
|
||
trackingNumERPRes = restTemplate.postForObject(trackingNumUrl, contractReqEntity, JSONObject.class);
|
||
} catch (RestClientException e) {
|
||
e.printStackTrace();
|
||
res.put("errorCode", "error");
|
||
res.put("message", "跟踪号新增或更新请求失败");
|
||
return res;
|
||
}
|
||
|
||
System.out.println(JSON.parseObject(JSON.toJSONString(trackingNumERPRes)));
|
||
|
||
if ("0".equals(trackingNumERPRes.getString("errorCode"))) {
|
||
log.info("金蝶接口返回成功");
|
||
String trackingNumId = trackingNumERPRes.getJSONObject("data").getJSONArray("result").getJSONObject(0).getString("id");
|
||
res.put("errorCode", "success");
|
||
res.put("message", "请求成功");
|
||
} else {
|
||
log.info("金蝶接口返回失败");
|
||
res.put("errorCode", "error");
|
||
res.put("message", "跟踪号新增或更新请求失败" + trackingNumERPRes.getString("message"));
|
||
return res;
|
||
}
|
||
return res;
|
||
}
|
||
}
|