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.math.BigDecimal; import java.util.*; /** * 设计文件 * * @param * @return null * @Author weiloong_zhang */ @RestController @RequestMapping("/api/design") @Slf4j public class DesignController { private RestTemplate restTemplate = new RestTemplate(); public static void main(String[] args) { new DesignController().syncDesign(); } /** * 设计文件同步 * * @return void * @Author weiloong_zhang */ @PostMapping("/sync/designDoc") public void syncDesign() { CrmRequestUtil crmRequestUtil = new CrmRequestUtil(); log.info("开始同步设计文件"); String[] syncStatus = {"option_pending_sync__c", "option_resync__c"}; JSONObject getDesignDoc = crmRequestUtil.getCRMList(Arrays.asList( //new Filter("IS", "erp_id__c", Arrays.asList("")), new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)), //new Filter("EQ", "name", Arrays.asList("SJWJ250528-0022")), new Filter("GT", "create_time", Arrays.asList("1748923200000")), new Filter("EQ", "life_status", Arrays.asList("normal")) ), "design_file__c"); JSONObject designDocRes = new JSONObject(); try { designDocRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getDesignDoc, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } if (!"success".equals(designDocRes.getString("errorDescription")) || designDocRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { log.info("查询失败或者不存在符合条件的数据"); return; } log.info("查询成功,继续向下执行"); for (Object designDocObj : designDocRes.getJSONObject("data").getJSONArray("dataList")) { JSONObject designDocData = JSON.parseObject(JSON.toJSONString(designDocObj)); System.out.println("当前正在处理的设计文件数据为:" + designDocData); //当前设计文件的唯一id String designDocId = designDocData.getString("_id"); //当前单据的编号 String designDocName = designDocData.getString("name"); //当前单据的创建时间 //String createTime = designDocData.getString("create_time"); String createTime = designDocData.getString("last_modified_time"); //开始查询该单据是否已经集成过 JSONObject isLog = new JSONObject(); try { isLog = restTemplate.getForObject("http://localhost:18085/Log/query/log_data?table=send_log_sjwj&log_type=DF&dataId=" + designDocId + "&mark=" + createTime, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } //判断是否已经执行过 if (!isLog.getJSONArray("data").isEmpty()) { log.info("当前单据已经集成过了,将不再向下执行"); continue; } log.info("当前单据没有集成过,将开始向下执行"); //开始封装传输至ERP中的请求 Map erpDesignMap = new HashMap<>(); erpDesignMap.put("billno", designDocName);//设计文件编号 //判断组织编码 String orgCode = ""; if (designDocData.getString("erp_organization_sales_con__c__v") != null && !"".equals(designDocData.getString("erp_organization_sales_con__c__v"))) { orgCode = designDocData.getString("erp_organization_sales_con__c__v"); } else if (designDocData.getString("erp_organization_pre_contr__c__v") != null && !"".equals(designDocData.getString("erp_organization_pre_contr__c__v"))) { orgCode = designDocData.getString("erp_organization_pre_contr__c__v"); } else { log.info("当前单据没有组织编码,将不再向下执行"); continue; } erpDesignMap.put("org_number", orgCode);//组织编码 erpDesignMap.put("billtype_number", "pm_requirapplybill_BT_sjwjxf");//单据类型 erpDesignMap.put("biztype_name", "物料类采购");//业务类型 //开始获取单据日期 long bizTime = designDocData.getLong("document_date__c"); Date date = new Date(bizTime); erpDesignMap.put("biztime", date);//单据日期 //部门编码 String deptCode = ""; List deptIdList = designDocData.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") : ""; } //erpDesignMap.put("dept_number", "004");//部门编码 erpDesignMap.put("dept_number", deptCode);//部门编码 //获取负责人编码 String ownerCode = ""; List ownerIdList = designDocData.getJSONArray("owner"); System.out.println(ownerIdList); 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(); } System.out.println("查询负责人结果为:" + ownerRes); 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") : ""; } //erpDesignMap.put("bizuser_number", "ID-000011");//人员编码 erpDesignMap.put("bizuser_number", ownerCode);//人员编码 erpDesignMap.put("bizorg_number", orgCode);//采购组织 erpDesignMap.put("project_number", designDocData.getString("project_id__c") != null ? designDocData.getString("project_id__c") : "");//项目号(商机) //合同 String contractNo = ""; if (designDocData.getString("sales_contract_number__c__r") != null) { contractNo = designDocData.getString("sales_contract_number__c__r"); } else if (designDocData.getString("pre_signed_contract_id__c__r") != null) { contractNo = designDocData.getString("pre_signed_contract_id__c__r"); } else { log.info("当前单据没有合同号,将不再向下执行"); continue; } erpDesignMap.put("contractno", contractNo);//合同号 erpDesignMap.put("crmid", designDocId);//crm唯一id erpDesignMap.put("comment", designDocData.getString("remark__c") != null ? designDocData.getString("remark__c") : "");//备注 //开始获取设计文件明细 JSONObject getDesignDocDetail = crmRequestUtil.getCRMList(Arrays.asList( new Filter("EQ", "design_file__c", Arrays.asList(designDocId)) ), "design_file_details__c"); JSONObject designDocDetailRes = new JSONObject(); try { designDocDetailRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getDesignDocDetail, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } if (!"success".equals(designDocDetailRes.getString("errorDescription")) || designDocDetailRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { log.info("查询失败或不存在当前设计文件明细"); continue; } List designDocList = new ArrayList<>(); for (Object designDocDetailObj : designDocDetailRes.getJSONObject("data").getJSONArray("dataList")) { JSONObject designDocDetailData = JSON.parseObject(JSON.toJSONString(designDocDetailObj)); System.out.println("当前正在处理的设计文件明细数据为:" + designDocDetailData); //开始封装设计文件明细 Map designDocDetailMap = new HashMap<>(); designDocDetailMap.put("materialmasterid_number", designDocDetailData.getString("material_name__c"));//设计文件明细 designDocDetailMap.put("qty", designDocDetailData.getBigDecimal("quantity__c") != null ? designDocDetailData.getBigDecimal("quantity__c") : 0);//数量 designDocDetailMap.put("materialtype", designDocDetailData.getString("customer_material_type__c"));//客指供应类型 designDocDetailMap.put("crmentryid", designDocDetailData.getString("_id"));//crm明细行id designDocDetailMap.put("entrycomment", designDocDetailData.getString("remark__c") != null ? designDocDetailData.getString("remark__c") : "");//备注 designDocDetailMap.put("supplier_number", designDocDetailData.getString("supplier_code__c") != null ? designDocDetailData.getString("supplier_code__c") : "");//建议供应商 //是否直发 String isDirectDeliveryStr = designDocDetailData.getString("is_direct_delivery__c") != null ? designDocDetailData.getString("is_direct_delivery__c") : ""; switch (isDirectDeliveryStr) { case "yes": designDocDetailMap.put("isdirectdelivery", "YES");//是否直发 break; case "no": designDocDetailMap.put("isdirectdelivery", "NO");//是否直发 break; default: designDocDetailMap.put("isdirectdelivery", "");//是否直发 } //直发现场时间 long directDeliveryTime = designDocDetailData.getLong("direct_delivery_time__c") != null ? designDocDetailData.getLong("direct_delivery_time__c") : 0; designDocDetailMap.put("deliverytime", new Date(directDeliveryTime)); //直发现场地址 designDocDetailMap.put("deliverylocation", designDocDetailData.getString("direct_delivery_location__c") != null ? designDocDetailData.getString("direct_delivery_location__c") : ""); designDocList.add(designDocDetailMap); } erpDesignMap.put("billentry", designDocList); Map erpContractData = new HashMap<>(); erpContractData.put("data", Arrays.asList(erpDesignMap));//请求体 System.out.println("erp请求为:" + JSON.parseObject(JSON.toJSONString(erpContractData))); 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 designDocReqEntity = new HttpEntity(erpContractData, headers); System.out.println("请求为:" + JSON.parseObject(JSON.toJSONString(designDocReqEntity))); //开始向金蝶发起请求 String designPlanUrl = ERPURLConstant.ERP_URL + "/ierp/kapi/v2/f9w5/pssc/requirapplybillSave"; JSONObject erpDesignDocRes = new JSONObject(); try { erpDesignDocRes = restTemplate.postForObject(designPlanUrl, designDocReqEntity, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } System.out.println("设计文件结果为:" + JSON.parseObject(JSON.toJSONString(erpDesignDocRes))); //开始封装回写程序 Map backReqMap = new HashMap(); backReqMap.put("_id", designDocId); backReqMap.put("dataObjectApiName", "design_file__c"); //开始封装日志 Map logMap = new HashMap<>(); logMap.put("log_id", UUID.randomUUID().toString().replace("-", "")); logMap.put("log_type", "DF"); logMap.put("syn_type", "0"); logMap.put("data_name", designDocName); logMap.put("data_id", designDocId); logMap.put("mark", createTime); logMap.put("send_body", JSON.toJSONString(designDocReqEntity)); logMap.put("send_res", JSON.toJSONString(erpDesignDocRes)); logMap.put("tableName", "send_log_sjwj"); //判断是否执行成功 if ("0".equals(erpDesignDocRes.getString("errorCode"))) { //同步成功 logMap.put("log_status", "0"); logMap.put("res_body", "同步成功"); backReqMap.put("erp_id__c", erpDesignDocRes.getJSONObject("datas").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(erpDesignDocRes.getJSONObject("datas").getJSONArray("result").getJSONObject(0).getString("id"), "pm_requirapplybill"); } else { //同步失败 logMap.put("log_status", "1"); logMap.put("res_body", "同步失败:" + erpDesignDocRes.getString("message")); backReqMap.put("sync_status__c", "option_sync_failure__c"); backReqMap.put("response_info__c", erpDesignDocRes.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); //判断一下设计文件的状态,没有成功就不传了 if (!"0".equals(erpDesignDocRes.getString("errorCode"))) { continue; } //开始封装明细回写程序 for (Object resultObj : erpDesignDocRes.getJSONObject("datas").getJSONArray("result").getJSONObject(0).getJSONArray("entry")) { JSONObject resultData = JSON.parseObject(JSON.toJSONString(resultObj)); String erpLineId = resultData.getString("entryid"); String crmLineId = resultData.getString("crmentryid"); //开始封装 Map backMap = new HashMap(); backMap.put("_id", crmLineId); backMap.put("erp_line_id__c", erpLineId); backMap.put("dataObjectApiName", "design_file_details__c"); JSONObject detailReq = crmRequestUtil.updateCRM(backMap); JSONObject detailRes = new JSONObject(); try { detailRes = restTemplate.postForObject(URLConstant.UPDATE_CRM_CUSTOMIZE, detailReq, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } System.out.println("明细回写结果为:" + detailRes); } } } /** * 设计文件变更接口 * * @return void * @Author weiloong_zhang */ @PostMapping("/sync/designDocBG") public void upDesignDoc() { CrmRequestUtil crmRequestUtil = new CrmRequestUtil(); JSONObject getDesignBGDoc = crmRequestUtil.getCRMList(Arrays.asList( new Filter("EQ", "name", Arrays.asList("2025-06-20-00015")) ), "design_file__c__changeObj__c"); System.out.println("设计文件变更接口请求为:" + JSON.parseObject(JSON.toJSONString(getDesignBGDoc))); JSONObject designBGDocRes = new JSONObject(); try { designBGDocRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getDesignBGDoc, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } System.out.println("设计文件变更结果为:" + JSON.parseObject(JSON.toJSONString(designBGDocRes))); if (!"success".equals(designBGDocRes.getString("errorDescription")) || designBGDocRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { log.info("未找到设计文件变更数据或者查询失败"); return; } log.info("当前设计文件变更数据存在"); for (Object designBGDocObj : designBGDocRes.getJSONObject("data").getJSONArray("dataList")) { JSONObject designBGDocData = JSON.parseObject(JSON.toJSONString(designBGDocObj)); System.out.println("当前正在处理的设计文件变更数据为:" + designBGDocData); //开始截取关键数据 String designBGDocId = designBGDocData.getString("_id"); String designBGDocName = designBGDocData.getString("name"); String createTime = designBGDocData.getString("create_time"); String originalName = designBGDocData.getString("original_data__r"); String originalId = designBGDocData.getString("original_data"); //开始判断该单据是否已经执行过 JSONObject isLogRes = new JSONObject(); try { isLogRes = restTemplate.getForObject("http://localhost:18085/Log/query/log_data?table=send_log_sjwj&log_type=DFBG&dataId=" + designBGDocId + "&mark=" + createTime, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } if (!isLogRes.getJSONArray("data").isEmpty()) { log.info("当前数据已经执行过了,将不再向下执行"); continue; } log.info("日志不存在,将继续向下执行"); //开始封装主表数据 Map designBGDocMap = new HashMap(); //开始获取部门数据 //获取部门 String ownerDept = designBGDocData.getString("owner_department_id") != null ? designBGDocData.getString("owner_department_id") : ""; JSONObject getDept = crmRequestUtil.getCRMList(Arrays.asList( new Filter("EQ", "_id", Arrays.asList(ownerDept)) ), "DepartmentObj"); JSONObject deptRes = new JSONObject(); try { deptRes = restTemplate.postForObject(URLConstant.GET_CRM_LIST_URL, getDept, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } if (!"success".equals(deptRes.getString("errorDescription")) || deptRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { log.info("不存在该部门,将不再向下执行"); continue; } String deptERPCode = deptRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0).getString("field_Vj6sf__c"); designBGDocMap.put("dept", "ZHY");//部门编码 //designBGDocMap.put("dept", deptERPCode);//部门 //申请日期 long changeDate = designBGDocData.getLong("changed_time"); Date changeDateFormat = new Date(changeDate); designBGDocMap.put("biztime", changeDateFormat);//申请日期 //申请人 List ownerId = designBGDocData.getJSONArray("change_owner") != null ? designBGDocData.getJSONArray("change_owner") : new ArrayList<>(); JSONObject getOwner = crmRequestUtil.getCRMList(Arrays.asList( new Filter("EQ", "user_id", ownerId) ), "PersonnelObj"); JSONObject ownerRes = new JSONObject(); try { ownerRes = restTemplate.postForObject(URLConstant.GET_CRM_LIST_URL, getOwner, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } if (!"success".equals(ownerRes.getString("errorDescription")) || ownerRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { log.info("负责人不存在或者请求失败"); continue; } System.out.println("负责人数据为:" + ownerRes); String ownerUserId = ownerRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0).getString("field_T1xid__c"); designBGDocData.put("bizuser", "ID-000016");//负责人 //designBGDocMap.put("bizuser", ownerUserId);//申请人 //采购组织 //判断组织编码 String orgCode = ""; if (designBGDocData.getString("change_erp_organization_sales_con__c") != null && !"".equals(designBGDocData.getString("change_erp_organization_sales_con__c"))) { orgCode = designBGDocData.getString("change_erp_organization_sales_con__c"); } else if (designBGDocData.getString("change_erp_organization_pre_contr__c") != null && !"".equals(designBGDocData.getString("change_erp_organization_pre_contr__c"))) { orgCode = designBGDocData.getString("change_erp_organization_pre_contr__c"); } else { log.info("当前单据没有组织编码,将不再向下执行"); continue; } designBGDocMap.put("bizorg", orgCode);//采购组织 //销售合同号 designBGDocMap.put("contractno", designBGDocData.getString("change_sales_contract_number__c__r") != null ? designBGDocData.getString("change_sales_contract_number__c__r") : ""); //项目号 designBGDocMap.put("project", designBGDocData.getString("change_project_id__c") != null ? designBGDocData.getString("change_project_id__c") : ""); //CRMID designBGDocMap.put("crmid", originalId); //ERPID designBGDocMap.put("erpId", designBGDocData.getString("change_erp_id__c") != null ? designBGDocData.getString("change_erp_id__c") : ""); String changeReason = designBGDocData.getString("changed_reason") != null ? designBGDocData.getString("changed_reason") : ""; //开始获取EP明细 JSONObject getDesignDocDetails = crmRequestUtil.getCRMList(Arrays.asList( new Filter("EQ", "changed_data", Arrays.asList(designBGDocId)) ), "design_file_details__c__changeObj__c"); JSONObject designDocDetailsRes = new JSONObject(); try { designDocDetailsRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getDesignDocDetails, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } if (!"success".equals(designDocDetailsRes.getString("errorDescription")) || designDocDetailsRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { log.info("请求失败或者该变更单不存在明细,将不再向下执行"); continue; } log.info("设计文件变更单明细存在,将继续向下执行"); List designDocDetailList = new ArrayList(); for (Object designDocDetailObj : designDocDetailsRes.getJSONObject("data").getJSONArray("dataList")) { JSONObject designDocDetailData = JSON.parseObject(JSON.toJSONString(designDocDetailObj)); System.out.println("设计文件变更单明细数据为:" + designDocDetailData); //开始封装设计文件变更单明细数据 Map designDocDetailMap = new HashMap(); //物料编码 designDocDetailMap.put("material", designDocDetailData.getString("change_material_id__c__r") != null ? designDocDetailData.getString("change_material_id__c__r") : ""); //数量 designDocDetailMap.put("qty", designDocDetailData.getBigDecimal("change_quantity__c") != null ? designDocDetailData.getBigDecimal("change_quantity__c") : BigDecimal.ZERO); //需求原因 designDocDetailMap.put("reqdes", changeReason); //todo 建议供应商 designDocDetailMap.put("supplier", ""); //项目号 designDocDetailMap.put("project", designDocDetailData.getString("change_project_details__c__r") != null ? designDocDetailData.getString("change_project_details__c__r") : ""); //需求日期 long reqDate = designDocDetailData.getLong("create_time"); Date reqDateDate = new Date(reqDate); designDocDetailMap.put("reqdate", reqDateDate); //CRM行ID //判断变更类型 String changeType = designDocDetailData.getString("changed_type") != null ? designDocDetailData.getString("changed_type") : ""; if (changeType.equals("add")) { //变更类型为新增,获取当前的行ID //行ID log.info("新增行"); designDocDetailMap.put("changeType", "add"); designDocDetailMap.put("crmEntryId", designDocDetailData.getString("_id")); designDocDetailMap.put("lineType", "010"); } else if (changeType.equals("update")) { //变更类型为删除或者修改,获取源单的行id log.info("更新行"); designDocDetailMap.put("changeType", "modify"); designDocDetailMap.put("crmEntryId", designDocDetailData.getString("original_detail_data")); } else if (changeType.equals("deleted")) { //变更类型为删除或者修改,获取源单的行id log.info("删除行"); designDocDetailMap.put("changeType", "delete"); designDocDetailMap.put("crmEntryId", designDocDetailData.getString("original_detail_data")); } else { log.info("变更类型不存在"); continue; } //ERP行明细 designDocDetailMap.put("entryId", designDocDetailData.getString("change_erp_line_id__c") != null ? designDocDetailData.getString("change_erp_line_id__c") : ""); designDocDetailList.add(designDocDetailMap); } //开始封装明细 designBGDocMap.put("entryList", designDocDetailList); //开始获取ERPToken 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 designDocReqEntity = new HttpEntity(designBGDocMap, headers); System.out.println(JSON.parseObject(JSON.toJSONString(designDocReqEntity))); String designUrl = ERPURLConstant.ERP_URL + "/ierp/kapi/v2/f9w5/pssc/requirapply/change"; JSONObject designDocRes = new JSONObject(); try { designDocRes = restTemplate.postForObject(designUrl, designDocReqEntity, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } System.out.println(JSON.parseObject(JSON.toJSONString(designDocRes))); //开始封装回写程序 Map backReqMap = new HashMap(); backReqMap.put("_id", originalId); backReqMap.put("dataObjectApiName", "design_file__c"); //开始封装日志 Map logMap = new HashMap<>(); logMap.put("log_id", UUID.randomUUID().toString().replace("-", "")); logMap.put("log_type", "DFBG"); logMap.put("syn_type", "0"); logMap.put("data_name", designBGDocName); logMap.put("data_id", designBGDocId); logMap.put("mark", createTime); logMap.put("send_body", JSON.toJSONString(designDocReqEntity)); logMap.put("send_res", JSON.toJSONString(designDocRes)); logMap.put("tableName", "send_log_sjwj"); //判断是否执行成功 if ("0".equals(designDocRes.getString("errorCode"))) { //同步成功 logMap.put("log_status", "0"); logMap.put("res_body", "同步成功"); //backReqMap.put("updated_erp_id__c", contractRes.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(contractRes.getJSONObject("data").getJSONArray("result").getJSONObject(0).getString("id"), "conm_salcontract"); } else { //同步失败 logMap.put("log_status", "1"); logMap.put("res_body", "同步失败:" + designDocRes.getString("message")); backReqMap.put("sync_status__c", "option_sync_failure__c"); backReqMap.put("response_info__c", "变更失败:" + designDocRes.getString("message")); } //开始回写 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); } } }