浩赛集成程序更新内容和优化内容
This commit is contained in:
parent
a4fd46aa17
commit
891476e60d
@ -0,0 +1,33 @@
|
|||||||
|
package org.ssssssss.magicboot.Enum;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public enum OrderTradeTypeEnum {
|
||||||
|
普通销售("x1t62v6gw"),
|
||||||
|
直运销售("Jr5i6W1HU"),
|
||||||
|
实验服务销售("option1"),
|
||||||
|
其他服务销售("QT001");
|
||||||
|
|
||||||
|
|
||||||
|
private final String value;
|
||||||
|
private static final Map<String, String> MAPPING = new HashMap<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
for (OrderTradeTypeEnum e : values()) {
|
||||||
|
MAPPING.put(e.name(), e.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OrderTradeTypeEnum(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getValueByName(String name) {
|
||||||
|
return MAPPING.get(name);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package org.ssssssss.magicboot.Enum;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public enum SalesOrgEnum {
|
||||||
|
浩赛集团("3gTA4C2xh"),
|
||||||
|
山东思科捷生物技术有限公司("3gTA4C2xh"),
|
||||||
|
山东浩赛科技有限公司("5b595vac9"),
|
||||||
|
青岛浩赛科技股份有限公司("7T938S18Y"),
|
||||||
|
上海浩赛科技有限公司("kk1vq3awb"),
|
||||||
|
北京浩赛科技有限公司("98MwRKR0k"),
|
||||||
|
青岛铠聚生物科技有限公司("eFqhIbW7c"),
|
||||||
|
青岛逸鸿生物科技有限公司("rq68TgzoR"),
|
||||||
|
青岛贝好生物科技有限公司("59p76ry3D"),
|
||||||
|
江苏贝艾欧生物科技有限公司("bBXJf8W3Q"),
|
||||||
|
山东谦益生物科技有限公司("QY");
|
||||||
|
|
||||||
|
|
||||||
|
private final String value;
|
||||||
|
private static final Map<String, String> MAPPING = new HashMap<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
for (SalesOrgEnum e : values()) {
|
||||||
|
MAPPING.put(e.name(), e.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SalesOrgEnum(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getValueByName(String name) {
|
||||||
|
return MAPPING.get(name);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package org.ssssssss.magicboot.Enum;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public enum TaxRateEnum {
|
||||||
|
RATE_13(new BigDecimal("13.0"), "VATR1"),
|
||||||
|
RATE_06(new BigDecimal("6.0"), "RT7"),
|
||||||
|
RATE_4_8(new BigDecimal("4.8"), "RT5"),
|
||||||
|
RATE_4(new BigDecimal("4.0"), "RT4"),
|
||||||
|
RATE_2(new BigDecimal("2.0"), "RT2"),
|
||||||
|
RATE_0_005(new BigDecimal("0.005"), "SDR5"),
|
||||||
|
RATE_0_025(new BigDecimal("0.025"), "SDR4"),
|
||||||
|
RATE_0_03(new BigDecimal("0.03"), "SDR3"),
|
||||||
|
RATE_0_05(new BigDecimal("0.05"), "SDR2"),
|
||||||
|
RATE_9(new BigDecimal("9.0"), "VATR2"),
|
||||||
|
RATE_5(new BigDecimal("5.0"), "VATR4"),
|
||||||
|
RATE_3(new BigDecimal("3.0"), "VATR5"),
|
||||||
|
RATE_1_5(new BigDecimal("1.5"), "VATR6"),
|
||||||
|
RATE_0(new BigDecimal("0.0"), "VATZR"),
|
||||||
|
RATE_1(new BigDecimal("1.0"), "VATR01"),
|
||||||
|
RATE_17(new BigDecimal("17.0"), "VATR17"),
|
||||||
|
RATE_16(new BigDecimal("16.0"), "VATR16");
|
||||||
|
|
||||||
|
|
||||||
|
private final BigDecimal rate;
|
||||||
|
private final String code;
|
||||||
|
|
||||||
|
TaxRateEnum(BigDecimal rate, String code) {
|
||||||
|
this.rate = rate.stripTrailingZeros();
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCode(BigDecimal rate) {
|
||||||
|
if (rate == null) return null;
|
||||||
|
for (TaxRateEnum r : values()) {
|
||||||
|
if (r.rate.compareTo(rate.stripTrailingZeros()) == 0) {
|
||||||
|
return r.code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -18,6 +18,7 @@ import org.ssssssss.magicboot.utils.CrmRequestUtil;
|
|||||||
import org.ssssssss.magicboot.utils.YSSignUtils;
|
import org.ssssssss.magicboot.utils.YSSignUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户
|
* 客户
|
||||||
@ -518,8 +519,28 @@ public class CustomerController {
|
|||||||
nameMap.put("simplifiedName", customerData.getString("name"));
|
nameMap.put("simplifiedName", customerData.getString("name"));
|
||||||
contactMap.put("name", nameMap);
|
contactMap.put("name", nameMap);
|
||||||
//客户简称
|
//客户简称
|
||||||
|
//客户简称生成
|
||||||
|
String contactName = customerData.getString("name");
|
||||||
|
|
||||||
|
//课题组
|
||||||
|
String researchName = customerData.getString("research_group_name__c__r") != null ? customerData.getString("research_group_name__c__r") : "";
|
||||||
|
|
||||||
|
//科室院所
|
||||||
|
String institute = customerData.getString("institute_department__c__r") != null ? customerData.getString("institute_department__c__r") : "";
|
||||||
|
|
||||||
|
//客户单位
|
||||||
|
String customer = customerData.getString("account_id__r") != null ? customerData.getString("account_id__r") : "";
|
||||||
|
|
||||||
|
//开始拼接客户单位
|
||||||
|
List<String> parts = Arrays.asList(contactName, researchName, institute, customer);
|
||||||
|
|
||||||
|
// 过滤掉 null 或空字符串,然后用 "#" 拼接
|
||||||
|
String shortName = parts.stream()
|
||||||
|
.filter(s -> s != null && !s.isEmpty())
|
||||||
|
.collect(Collectors.joining("#"));
|
||||||
|
|
||||||
Map shortnameMap = new HashMap<>();
|
Map shortnameMap = new HashMap<>();
|
||||||
shortnameMap.put("simplifiedName", customerData.getString("name"));
|
shortnameMap.put("simplifiedName", shortName);
|
||||||
contactMap.put("shortname", shortnameMap);
|
contactMap.put("shortname", shortnameMap);
|
||||||
//上级客户
|
//上级客户
|
||||||
contactMap.put("parentCustomerCode", customerData.getString("parent_customer_code__c") != null ? customerData.getString("parent_customer_code__c") : "");
|
contactMap.put("parentCustomerCode", customerData.getString("parent_customer_code__c") != null ? customerData.getString("parent_customer_code__c") : "");
|
||||||
|
@ -53,7 +53,7 @@ public class DeptController {
|
|||||||
getDeptReq.put("pageIndex", 1);
|
getDeptReq.put("pageIndex", 1);
|
||||||
getDeptReq.put("externalOrg", 0);
|
getDeptReq.put("externalOrg", 0);
|
||||||
getDeptReq.put("sourceType", 1);
|
getDeptReq.put("sourceType", 1);
|
||||||
getDeptReq.put("codes", Arrays.asList("SKJ-BM12.03"));
|
//getDeptReq.put("codes", Arrays.asList("SKJ-BM12.03"));
|
||||||
getDeptReq.put("dr", 0);
|
getDeptReq.put("dr", 0);
|
||||||
getDeptReq.put("funcTypeCode", "orgunit");
|
getDeptReq.put("funcTypeCode", "orgunit");
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ public class DeptController {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
parentId = getDeptSuperior.getJSONObject("data").getString("parent");
|
parentId = getDeptSuperior.getJSONObject("data").getString("parent_name");
|
||||||
|
|
||||||
departmentOwner = getDeptSuperior.getJSONObject("data").getString("principal_name");
|
departmentOwner = getDeptSuperior.getJSONObject("data").getString("principal_name");
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ public class DeptController {
|
|||||||
pid = "999999";
|
pid = "999999";
|
||||||
} else {
|
} else {
|
||||||
JSONObject getPid = crmRequestUtil.getCRMList(Arrays.asList(
|
JSONObject getPid = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
new Filter("EQ", "erp_id__c", Arrays.asList(parentId)),
|
new Filter("EQ", "name", Arrays.asList(parentId)),
|
||||||
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
), "DepartmentObj");
|
), "DepartmentObj");
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ public class DeptController {
|
|||||||
|
|
||||||
//开始查询是否已经存在重名部门
|
//开始查询是否已经存在重名部门
|
||||||
JSONObject getDept = crmRequestUtil.getCRMList(Arrays.asList(
|
JSONObject getDept = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
new Filter("EQ", "erp_id__c", Arrays.asList(deptId)),
|
new Filter("EQ", "name", Arrays.asList(deptName)),
|
||||||
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
), "DepartmentObj");
|
), "DepartmentObj");
|
||||||
|
|
||||||
|
@ -0,0 +1,264 @@
|
|||||||
|
package org.ssssssss.magicboot.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
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.HttpStatusCodeException;
|
||||||
|
import org.springframework.web.client.RestClientException;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
import org.ssssssss.magicboot.constant.URLConstant;
|
||||||
|
import org.ssssssss.magicboot.entity.Filter;
|
||||||
|
import org.ssssssss.magicboot.utils.CrmRequestUtil;
|
||||||
|
import org.ssssssss.magicboot.utils.YSSignUtils;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/hs")
|
||||||
|
@Slf4j
|
||||||
|
public class FHSQBackController {
|
||||||
|
|
||||||
|
private RestTemplate restTemplate = new RestTemplate();
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new FHSQBackController().syncDelivery();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/sync/back/delivery")
|
||||||
|
public void syncDelivery() {
|
||||||
|
CrmRequestUtil crmRequestUtil = new CrmRequestUtil();
|
||||||
|
|
||||||
|
log.info("开始同步发货申请审批状态和仓库情况");
|
||||||
|
|
||||||
|
JSONObject getShipment = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("N", "shipping_status__c", Arrays.asList("OUTSTOCKED")),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "shipping_application_form__c");
|
||||||
|
|
||||||
|
JSONObject shipmentRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
shipmentRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getShipment, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!"success".equals(shipmentRes.getString("errorDescription")) || shipmentRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
log.info("查询失败或者没有符合条件的单据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("查询成功,开始处理数据");
|
||||||
|
|
||||||
|
for (Object shipmentObj : shipmentRes.getJSONObject("data").getJSONArray("dataList")) {
|
||||||
|
JSONObject shipmentData = JSON.parseObject(JSON.toJSONString(shipmentObj));
|
||||||
|
|
||||||
|
System.out.println("当前正在处理数据为:" + shipmentData);
|
||||||
|
|
||||||
|
//开始根据ERPID查询销售发货申请的详情数据
|
||||||
|
//String erpShipmentId = shipmentData.getString("erp_id__c") != null ? shipmentData.getString("erp_id__c") : "";
|
||||||
|
String erpShipmentId = "2341284461238288389";//todo 测试
|
||||||
|
|
||||||
|
if (erpShipmentId.equals("")) {
|
||||||
|
log.info("erpId为空,直接跳过");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取当前状态
|
||||||
|
String shipmentStatus = shipmentData.getString("shipping_status__c") != null ? shipmentData.getString("shipping_status__c") : "";
|
||||||
|
|
||||||
|
//开始封装请求数据
|
||||||
|
//开始查询token
|
||||||
|
String erpToken = "";
|
||||||
|
|
||||||
|
try {
|
||||||
|
erpToken = new YSSignUtils().getYSToken();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
//开始发起请求
|
||||||
|
String url = "https://c1.yonyoucloud.com/iuap-api-gateway/yonbip/sd/voucherdelivery/detail?access_token=" + erpToken + "&id=" + erpShipmentId;//url
|
||||||
|
|
||||||
|
JSONObject getShipmentRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
getShipmentRes = restTemplate.getForObject(url, JSONObject.class);
|
||||||
|
} catch (HttpStatusCodeException e) {
|
||||||
|
//获取响应体的错误信息
|
||||||
|
String errorBody = e.getResponseBodyAsString();
|
||||||
|
System.out.println("调用接口失败,状态码:" + e.getStatusCode());
|
||||||
|
System.out.println("错误响应:" + errorBody);
|
||||||
|
|
||||||
|
//将错误响应封装为 JSONObject(可选)
|
||||||
|
getShipmentRes = JSONObject.parseObject(errorBody);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
System.out.println("调用接口失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("查询的发货申请数据为" + getShipmentRes);
|
||||||
|
|
||||||
|
if (!"200".equals(getShipmentRes.getString("code")) || getShipmentRes.getJSONObject("data").isEmpty()) {
|
||||||
|
log.info("erp请求发货申请详情失败或者没有符合条件数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("erp请求出库单详情成功,继续向下执行");
|
||||||
|
|
||||||
|
//获取关键数据
|
||||||
|
JSONObject shipmentERPData = getShipmentRes.getJSONObject("data");
|
||||||
|
|
||||||
|
//截取关键数据
|
||||||
|
String erpCode = shipmentERPData.getString("code");
|
||||||
|
String erpId = shipmentERPData.getString("id");
|
||||||
|
String erpModifyTime = shipmentERPData.getString("modifyTime");
|
||||||
|
|
||||||
|
//开始查询日志中是否已经存在
|
||||||
|
JSONObject isLogRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
isLogRes = restTemplate.getForObject("http://localhost:18080/Log/query/log_data?table=send_log_bmxx&log_type=FHSQHX&dataId=" + erpId + "&mark=" + erpModifyTime, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isLogRes.getJSONArray("data").isEmpty()) {
|
||||||
|
log.info("日志中已经存在当前日志了");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("日志中不存在当前日志,开始执行");
|
||||||
|
|
||||||
|
//开始封装主表数据
|
||||||
|
Map shipmentMain = new HashMap<>();
|
||||||
|
//开始获取发货状态
|
||||||
|
String shipStatus = shipmentData.getString("statusCode") != null ? shipmentData.getString("statusCode") : "";
|
||||||
|
|
||||||
|
if (shipmentStatus.equals(shipStatus)) {
|
||||||
|
log.info("发货单状态未改变");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
shipmentMain.put("shipping_status__c", shipStatus);
|
||||||
|
|
||||||
|
shipmentMain.put("_id", shipmentData.getString("_id"));
|
||||||
|
shipmentMain.put("dataObjectApiName", "shipping_application_detai__c");
|
||||||
|
|
||||||
|
//开始封装明细数据
|
||||||
|
List shipmentDetails = new ArrayList<>();
|
||||||
|
|
||||||
|
for (Object shipmentDetailObj : shipmentERPData.getJSONArray("deliveryDetails")) {
|
||||||
|
JSONObject shipmentDetailData = JSON.parseObject(JSON.toJSONString(shipmentDetailObj));
|
||||||
|
|
||||||
|
System.out.println("当前正在处理发货申请明细的数据为:" + shipmentDetailData);
|
||||||
|
|
||||||
|
//开始封装数据
|
||||||
|
Map shipmentDetail = new HashMap();
|
||||||
|
|
||||||
|
//仓库
|
||||||
|
String stockId = shipmentDetailData.getString("stockId") != null ? shipmentDetailData.getString("stockId") : "";
|
||||||
|
|
||||||
|
JSONObject getWarehouse = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("EQ", "erp_id__c", Arrays.asList(stockId)),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "WarehouseObj");
|
||||||
|
|
||||||
|
JSONObject warehouseRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
warehouseRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getWarehouse, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("success".equals(warehouseRes.getString("errorDescription")) && !warehouseRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
JSONObject warehouseData = warehouseRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
String warehouseCRMId = warehouseData.getString("_id");
|
||||||
|
shipmentDetail.put("warehouse__c", warehouseCRMId);
|
||||||
|
}
|
||||||
|
|
||||||
|
//批次号
|
||||||
|
String batchNo = shipmentDetailData.getString("batchNo") != null ? shipmentDetailData.getString("batchNo") : "";
|
||||||
|
|
||||||
|
shipmentDetail.put("batch_number__c", batchNo);
|
||||||
|
|
||||||
|
//根据erpId查询CRM单据号
|
||||||
|
String erpDetailId = shipmentDetailData.getString("id") != null ? shipmentDetailData.getString("id") : "";
|
||||||
|
|
||||||
|
JSONObject getCrmDetail = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("EQ", "erp_line_id__c", Arrays.asList(erpDetailId)),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "shipment_detail__c");
|
||||||
|
|
||||||
|
JSONObject crmDetailRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
crmDetailRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getCrmDetail, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("success".equals(crmDetailRes.getString("errorDescription")) && !crmDetailRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
JSONObject crmDetailData = crmDetailRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
|
||||||
|
String crmDetailId = crmDetailData.getString("_id");
|
||||||
|
|
||||||
|
shipmentDetail.put("_id", crmDetailId);
|
||||||
|
}
|
||||||
|
|
||||||
|
shipmentDetails.add(shipmentDetail);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map details = new HashMap();
|
||||||
|
details.put("shipping_application_detai__c", shipmentDetails);
|
||||||
|
|
||||||
|
JSONObject backShipmentReq = crmRequestUtil.crmWithDetail(shipmentMain, details);
|
||||||
|
|
||||||
|
System.out.println("回写发货申请请求为:" + backShipmentReq);
|
||||||
|
|
||||||
|
//开始封装日志
|
||||||
|
Map logMap = new HashMap<>();
|
||||||
|
logMap.put("log_id", UUID.randomUUID().toString().replace("-", ""));
|
||||||
|
logMap.put("log_type", "FHSQHX");
|
||||||
|
logMap.put("data_name", erpCode);
|
||||||
|
logMap.put("data_id", erpId);
|
||||||
|
logMap.put("mark", erpModifyTime);
|
||||||
|
logMap.put("send_body", JSON.toJSONString(backShipmentReq));
|
||||||
|
logMap.put("tableName", "send_log_shipment");
|
||||||
|
|
||||||
|
JSONObject backShipmentRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
backShipmentRes = restTemplate.postForObject(URLConstant.UPDATE_CRM_CUSTOMIZE, backShipmentReq, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("回写结果为:" + JSON.parseObject(JSON.toJSONString(backShipmentRes)));
|
||||||
|
|
||||||
|
if ("success".equals(backShipmentRes.getString("errorDescription"))) {
|
||||||
|
logMap.put("log_status", "0");
|
||||||
|
logMap.put("res_body", "同步成功");
|
||||||
|
} else {
|
||||||
|
logMap.put("log_status", "1");
|
||||||
|
logMap.put("res_body", "同步失败" + backShipmentRes.getString("errorMessage"));
|
||||||
|
}
|
||||||
|
|
||||||
|
logMap.put("send_res", JSON.toJSONString(backShipmentRes));
|
||||||
|
//logMap.put("send_memo", JSON.toJSONString(categoryData));
|
||||||
|
|
||||||
|
JSONObject logRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
logRes = restTemplate.postForObject("http://localhost:18080/Log/insert/log_data", logMap, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("日志插入结果为:" + logRes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -162,6 +162,11 @@ public class FHSQController {
|
|||||||
|
|
||||||
shipmentDetail.put("sourceautoid", salesOrderDetailId);
|
shipmentDetail.put("sourceautoid", salesOrderDetailId);
|
||||||
|
|
||||||
|
//todo erpId先用这个字段承接
|
||||||
|
Map deliveryDetailDefineCharacter = new HashMap();
|
||||||
|
deliveryDetailDefineCharacter.put("HT01", shipmentDetailData.getString("_id"));
|
||||||
|
shipmentDetail.put("deliveryDetailDefineCharacter", deliveryDetailDefineCharacter);
|
||||||
|
|
||||||
//操作标识
|
//操作标识
|
||||||
shipmentDetail.put("_status", "Insert");
|
shipmentDetail.put("_status", "Insert");
|
||||||
|
|
||||||
@ -210,6 +215,8 @@ public class FHSQController {
|
|||||||
backReqMap.put("_id", shipmentId);
|
backReqMap.put("_id", shipmentId);
|
||||||
backReqMap.put("dataObjectApiName", "shipping_application_form__c");
|
backReqMap.put("dataObjectApiName", "shipping_application_form__c");
|
||||||
|
|
||||||
|
Map backDetailMap = new HashMap<>();
|
||||||
|
|
||||||
//开始封装日志
|
//开始封装日志
|
||||||
Map logMap = new HashMap<>();
|
Map logMap = new HashMap<>();
|
||||||
logMap.put("log_id", UUID.randomUUID().toString().replace("-", ""));
|
logMap.put("log_id", UUID.randomUUID().toString().replace("-", ""));
|
||||||
@ -222,6 +229,7 @@ public class FHSQController {
|
|||||||
logMap.put("send_res", JSON.toJSONString(deliveryERPRes));
|
logMap.put("send_res", JSON.toJSONString(deliveryERPRes));
|
||||||
logMap.put("tableName", "send_log_shipment");
|
logMap.put("tableName", "send_log_shipment");
|
||||||
|
|
||||||
|
JSONObject backReq = new JSONObject();
|
||||||
|
|
||||||
if ("200".equals(deliveryERPRes.getString("code"))) {
|
if ("200".equals(deliveryERPRes.getString("code"))) {
|
||||||
log.info("同步成功");
|
log.info("同步成功");
|
||||||
@ -236,6 +244,23 @@ public class FHSQController {
|
|||||||
backReqMap.put("erp_shipment_application_c__c", erpResponse.getString("code"));
|
backReqMap.put("erp_shipment_application_c__c", erpResponse.getString("code"));
|
||||||
backReqMap.put("sync_status__c", "option_sync_success__c");
|
backReqMap.put("sync_status__c", "option_sync_success__c");
|
||||||
backReqMap.put("response_status__c", "同步成功");
|
backReqMap.put("response_status__c", "同步成功");
|
||||||
|
|
||||||
|
List backDetails = new ArrayList();
|
||||||
|
//开始封装明细数据
|
||||||
|
for (Object orderDetailObj : erpResponse.getJSONArray("deliveryDetails")) {
|
||||||
|
JSONObject orderDetail = JSON.parseObject(JSON.toJSONString(orderDetailObj));
|
||||||
|
|
||||||
|
Map backDetail = new HashMap();
|
||||||
|
backDetail.put("_id", orderDetail.getJSONObject("deliveryDetailDefineCharacter").getString("HT01"));
|
||||||
|
backDetail.put("erp_line_id__c", orderDetail.getString("id"));
|
||||||
|
|
||||||
|
backDetails.add(backDetail);
|
||||||
|
}
|
||||||
|
|
||||||
|
backDetailMap.put("shipping_application_detai__c", backDetails);
|
||||||
|
|
||||||
|
backReq = crmRequestUtil.crmWithDetail(backReqMap, backDetailMap);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.info("同步失败");
|
log.info("同步失败");
|
||||||
|
|
||||||
@ -243,9 +268,11 @@ public class FHSQController {
|
|||||||
logMap.put("res_body", "同步失败:" + deliveryERPRes.getString("message") != null ? deliveryERPRes.getString("message") : "同步失败,未知原因");
|
logMap.put("res_body", "同步失败:" + deliveryERPRes.getString("message") != null ? deliveryERPRes.getString("message") : "同步失败,未知原因");
|
||||||
backReqMap.put("sync_status__c", "option_sync_failed__c");
|
backReqMap.put("sync_status__c", "option_sync_failed__c");
|
||||||
backReqMap.put("response_status__c", deliveryERPRes.getString("message") != null ? deliveryERPRes.getString("message") : "同步失败,未知原因");
|
backReqMap.put("response_status__c", deliveryERPRes.getString("message") != null ? deliveryERPRes.getString("message") : "同步失败,未知原因");
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject backReq = crmRequestUtil.updateCRM(backReqMap);
|
backDetailMap.put("shipment_detail__c", Arrays.asList());
|
||||||
|
|
||||||
|
backReq = crmRequestUtil.createCRM(backReqMap);
|
||||||
|
}
|
||||||
|
|
||||||
JSONObject backRes = new JSONObject();
|
JSONObject backRes = new JSONObject();
|
||||||
|
|
||||||
|
@ -0,0 +1,539 @@
|
|||||||
|
package org.ssssssss.magicboot.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
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.HttpStatusCodeException;
|
||||||
|
import org.springframework.web.client.RestClientException;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
import org.ssssssss.magicboot.Enum.OrderTradeTypeEnum;
|
||||||
|
import org.ssssssss.magicboot.Enum.OrderTypeEnum;
|
||||||
|
import org.ssssssss.magicboot.Enum.SalesOrgEnum;
|
||||||
|
import org.ssssssss.magicboot.Enum.TaxRateEnum;
|
||||||
|
import org.ssssssss.magicboot.constant.URLConstant;
|
||||||
|
import org.ssssssss.magicboot.entity.Filter;
|
||||||
|
import org.ssssssss.magicboot.utils.CrmRequestUtil;
|
||||||
|
import org.ssssssss.magicboot.utils.YSSignUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/hs")
|
||||||
|
@Slf4j
|
||||||
|
public class SalesOrderBGController {
|
||||||
|
|
||||||
|
private RestTemplate restTemplate = new RestTemplate();
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new SalesOrderBGController().salesOrderBG();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始执行销售订单变更查询
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @Author weiloong_zhang
|
||||||
|
*/
|
||||||
|
@PostMapping("/sync/salesOrder/BG")
|
||||||
|
public void salesOrderBG() {
|
||||||
|
CrmRequestUtil crmRequestUtil = new CrmRequestUtil();
|
||||||
|
|
||||||
|
log.info("开始执行销售订单变更同步");
|
||||||
|
|
||||||
|
//获取当前的时间
|
||||||
|
DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
|
||||||
|
String nowStr = now.format(sdf);
|
||||||
|
|
||||||
|
log.info("当前时间:{}", nowStr);
|
||||||
|
|
||||||
|
//获取两天前的时间
|
||||||
|
LocalDateTime twoDaysAgo = now.minusDays(1);//直接减去2天
|
||||||
|
|
||||||
|
String twoDaysAgoStr = twoDaysAgo.format(sdf);
|
||||||
|
|
||||||
|
log.info("两天前的时间:{}", twoDaysAgoStr);
|
||||||
|
|
||||||
|
Map getSalesOrder = new HashMap<>();
|
||||||
|
getSalesOrder.put("pageIndex", 1);
|
||||||
|
getSalesOrder.put("pageSize", 10);
|
||||||
|
getSalesOrder.put("isSum", true);
|
||||||
|
getSalesOrder.put("code", "DD25082200001");
|
||||||
|
|
||||||
|
Map simpleVO = new HashMap<>();
|
||||||
|
simpleVO.put("op", "gt");
|
||||||
|
simpleVO.put("field", "modifyTime");
|
||||||
|
simpleVO.put("value1", twoDaysAgoStr);
|
||||||
|
|
||||||
|
getSalesOrder.put("simpleVOs", Arrays.asList(simpleVO));
|
||||||
|
|
||||||
|
System.out.println(JSONObject.parseObject(JSON.toJSONString(getSalesOrder)));
|
||||||
|
|
||||||
|
//开始获取token
|
||||||
|
String erpToken = "";
|
||||||
|
|
||||||
|
try {
|
||||||
|
erpToken = new YSSignUtils().getYSToken();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
//开始发起请求
|
||||||
|
String url = "https://c1.yonyoucloud.com/iuap-api-gateway/yonbip/sd/voucherorder/list" + "?access_token=" + erpToken;//url
|
||||||
|
|
||||||
|
JSONObject salesOrderRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
salesOrderRes = restTemplate.postForObject(url, getSalesOrder, JSONObject.class);
|
||||||
|
} catch (HttpStatusCodeException e) {
|
||||||
|
// 获取响应体的错误信息
|
||||||
|
String errorBody = e.getResponseBodyAsString();
|
||||||
|
System.out.println("调用接口失败,状态码:" + e.getStatusCode());
|
||||||
|
System.out.println("错误响应:" + errorBody);
|
||||||
|
|
||||||
|
// 将错误响应封装为 JSONObject(可选)
|
||||||
|
salesOrderRes = JSONObject.parseObject(errorBody);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
System.out.println("调用接口失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println(salesOrderRes);
|
||||||
|
|
||||||
|
if (!"200".equals(salesOrderRes.getString("code")) || salesOrderRes.getJSONObject("data").getJSONArray("recordList").isEmpty()) {
|
||||||
|
log.info("erp请求订单失败或者没有符合条件的数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("erp请求订单成功,继续向下执行");
|
||||||
|
|
||||||
|
for (Object salesOrderObj : salesOrderRes.getJSONObject("data").getJSONArray("recordList")) {
|
||||||
|
JSONObject salesOrderData = JSON.parseObject(JSON.toJSONString(salesOrderObj));
|
||||||
|
|
||||||
|
System.out.println("当前正在处理的销售订单数据为:" + salesOrderData);
|
||||||
|
|
||||||
|
//开始截取关键数据
|
||||||
|
String salesOrderId = salesOrderData.getString("id");
|
||||||
|
String salesOrderCode = salesOrderData.getString("code");
|
||||||
|
String modifyTime = salesOrderData.getString("modifyTime");
|
||||||
|
|
||||||
|
JSONObject isLogRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
isLogRes = restTemplate.getForObject("http://localhost:18080/Log/query/log_data?table=send_log_xsdd&log_type=XSDDBG&dataId=" + salesOrderId + "&mark=" + modifyTime, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isLogRes.getJSONArray("data").isEmpty()) {
|
||||||
|
log.info("销售订单已经执行过了,将不再继续向下执行");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("销售订单没有执行过,将继续执行");
|
||||||
|
|
||||||
|
//先查询CRM中是否存在当前销售订单
|
||||||
|
JSONObject getOrderFromCRM = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("EQ", "erp_id__c", Arrays.asList(salesOrderId)),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "SalesOrderObj");
|
||||||
|
|
||||||
|
JSONObject orderFromCRMRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
orderFromCRMRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getOrderFromCRM, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!"success".equals(orderFromCRMRes.getString("errorDescription")) || orderFromCRMRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
log.info("CRM中不存在该销售订单");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//存在销售订单
|
||||||
|
JSONObject orderData = orderFromCRMRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
|
||||||
|
log.info("开始封装主表数据");
|
||||||
|
|
||||||
|
//开始封装主表数据
|
||||||
|
Map salesOrderMain = new HashMap<>();
|
||||||
|
salesOrderMain.put("_id", orderData.getString("_id"));
|
||||||
|
|
||||||
|
//开始获取交易类型
|
||||||
|
String tradeType = salesOrderData.getString("transactionTypeId_name") != null ? salesOrderData.getString("transactionTypeId_name") : "";
|
||||||
|
String tradeTypeStr = "";
|
||||||
|
|
||||||
|
if (!tradeType.equals("")) {
|
||||||
|
tradeTypeStr = OrderTradeTypeEnum.getValueByName(tradeType);
|
||||||
|
}
|
||||||
|
salesOrderMain.put("order_type__c", tradeTypeStr);
|
||||||
|
|
||||||
|
//销售组织
|
||||||
|
String salesOrg = salesOrderData.getString("salesOrgId_name") != null ? salesOrderData.getString("salesOrgId_name") : "";
|
||||||
|
String salesOrgStr = "";
|
||||||
|
|
||||||
|
if (!salesOrg.equals("")) {
|
||||||
|
salesOrgStr = SalesOrgEnum.getValueByName(salesOrg);
|
||||||
|
}
|
||||||
|
|
||||||
|
salesOrderMain.put("field_1Vkdk__c", salesOrgStr);
|
||||||
|
|
||||||
|
//单据日期
|
||||||
|
String docDateStr = salesOrderData.getString("vouchdate") != null ? salesOrderData.getString("vouchdate") : "";
|
||||||
|
|
||||||
|
// 解析格式
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
|
LocalDateTime localDateTime = LocalDateTime.parse(docDateStr, formatter);
|
||||||
|
|
||||||
|
// 转换为时间戳(毫秒)
|
||||||
|
long docDataStamp = localDateTime
|
||||||
|
.atZone(ZoneId.systemDefault()) // 系统默认时区
|
||||||
|
.toInstant()
|
||||||
|
.toEpochMilli();
|
||||||
|
|
||||||
|
salesOrderMain.put("order_time", docDataStamp);
|
||||||
|
|
||||||
|
//联系人
|
||||||
|
String contactERPId = salesOrderData.getString("agentId") != null ? salesOrderData.getString("agentId") : "";
|
||||||
|
//String contactERPId = "2339048217807683589";//todo 测试
|
||||||
|
|
||||||
|
//开始查询联系人信息
|
||||||
|
JSONObject getContact = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("EQ", "erp_id__c", Arrays.asList(contactERPId)),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "ContactObj");
|
||||||
|
|
||||||
|
JSONObject contactRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
contactRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getContact, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("success".equals(contactRes.getString("errorDescription")) && !contactRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
JSONObject contactData = contactRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
|
||||||
|
salesOrderMain.put("contact_person__c", contactData.getString("_id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//客户单位
|
||||||
|
//获取自定义字段
|
||||||
|
JSONObject customizeData = salesOrderData.getJSONObject("orderDefineCharacter");
|
||||||
|
|
||||||
|
//获取客户erp编码
|
||||||
|
String customerERPId = customizeData.getString("SJKH01") != null ? customizeData.getString("SJKH01") : "";
|
||||||
|
//String customerERPId = "2339048071778795532"; //todo 测试
|
||||||
|
|
||||||
|
JSONObject getCustomer = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("EQ", "ERP_ID__c", Arrays.asList(customerERPId)),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "AccountObj");
|
||||||
|
|
||||||
|
JSONObject customerRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
customerRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getCustomer, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("success".equals(customerRes.getString("errorDescription")) && !customerRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
JSONObject customerData = customerRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
|
||||||
|
salesOrderMain.put("account_id", customerData.getString("_id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//课题组
|
||||||
|
String researchGroup = customizeData.getString("KTZ001") != null ? customizeData.getString("KTZ001") : "";
|
||||||
|
//String researchGroup = "2337485545509224455"; //todo 测试
|
||||||
|
|
||||||
|
JSONObject getResearchGroup = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("EQ", "erp_id__c", Arrays.asList(researchGroup)),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "topic_group__c");
|
||||||
|
|
||||||
|
JSONObject researchGroupRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
researchGroupRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getResearchGroup, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("success".equals(researchGroupRes.getString("errorDescription")) && !researchGroupRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
JSONObject researchGroupData = researchGroupRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
|
||||||
|
salesOrderMain.put("research_team__c", researchGroupData.getString("_id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//院所或者科室
|
||||||
|
String institute = customizeData.getString("KSYS01") != null ? customizeData.getString("KSYS01") : "";
|
||||||
|
//String institute = "2337485150355456003";
|
||||||
|
|
||||||
|
JSONObject getInstitute = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("EQ", "erp_id__c", Arrays.asList(institute)),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "department_institute__c");
|
||||||
|
|
||||||
|
JSONObject instituteRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
instituteRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getInstitute, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("success".equals(instituteRes.getString("errorDescription")) && !instituteRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
JSONObject instituteData = instituteRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
|
||||||
|
salesOrderMain.put("institution_or_department__c", instituteData.getString("_id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//销售员
|
||||||
|
String salesman = salesOrderData.getString("corpContact") != null ? salesOrderData.getString("corpContact") : "";
|
||||||
|
|
||||||
|
JSONObject getSalesman = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("EQ", "erp_id__c", Arrays.asList(salesman)),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "PersonnelObj");
|
||||||
|
|
||||||
|
JSONObject salesmanRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
salesmanRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getSalesman, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("success".equals(salesmanRes.getString("errorDescription")) && !salesmanRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
JSONObject salesmanData = salesmanRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
|
||||||
|
String userId = salesmanData.getString("user_id") != null ? salesmanData.getString("user_id") : "";
|
||||||
|
|
||||||
|
salesOrderMain.put("owner", Arrays.asList(userId));
|
||||||
|
}
|
||||||
|
|
||||||
|
//合同编号
|
||||||
|
salesOrderMain.put("contract_number__c", customizeData.getString("HT01") != null ? customizeData.getString("HT01") : "");
|
||||||
|
|
||||||
|
//付款方式
|
||||||
|
salesOrderMain.put("field_0f31k__c", customizeData.getString("FKFS01") != null ? customizeData.getString("FKFS01") : "");
|
||||||
|
|
||||||
|
//核销备注
|
||||||
|
salesOrderMain.put("reconciliation_note__c", customizeData.getString("ZDY0006") != null ? customizeData.getString("ZDY0006") : "");
|
||||||
|
|
||||||
|
//备注
|
||||||
|
salesOrderMain.put("delivery_comment", customizeData.getString("memo") != null ? customizeData.getString("memo") : "");
|
||||||
|
|
||||||
|
//收货地址
|
||||||
|
salesOrderMain.put("delivery_address__c", customizeData.getString("orderShippingAddress") != null ? customizeData.getString("orderShippingAddress") : "");
|
||||||
|
|
||||||
|
salesOrderMain.put("dataObjectApiName", "SalesOrderObj");
|
||||||
|
|
||||||
|
//开始查询销售订单明细
|
||||||
|
String detailUrl = "https://c1.yonyoucloud.com/iuap-api-gateway/yonbip/sd/voucherorder/detail?access_token=" + erpToken + "&id=" + salesOrderId;
|
||||||
|
|
||||||
|
JSONObject salesOrderDetail = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
salesOrderDetail = restTemplate.getForObject(detailUrl, JSONObject.class);
|
||||||
|
} catch (HttpStatusCodeException e) {
|
||||||
|
//获取响应体的错误信息
|
||||||
|
String errorBody = e.getResponseBodyAsString();
|
||||||
|
System.out.println("调用接口失败,状态码:" + e.getStatusCode());
|
||||||
|
System.out.println("错误响应:" + errorBody);
|
||||||
|
|
||||||
|
//将错误响应封装为 JSONObject(可选)
|
||||||
|
salesOrderDetail = JSONObject.parseObject(errorBody);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
System.out.println("调用接口失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("查询的销售订单数据为" + salesOrderDetail);
|
||||||
|
|
||||||
|
if (!"200".equals(salesOrderDetail.getString("code")) || salesOrderDetail.getJSONObject("data").getJSONArray("orderDetails").isEmpty()) {
|
||||||
|
log.info("erp请求销售订单明细失败或者没有符合条件数据");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
List orderDetailList = new ArrayList();
|
||||||
|
|
||||||
|
for (Object orderDetailObj : salesOrderDetail.getJSONObject("data").getJSONArray("orderDetails")) {
|
||||||
|
JSONObject orderDetailData = JSON.parseObject(JSON.toJSONString(orderDetailObj));
|
||||||
|
|
||||||
|
System.out.println("当前正在处理数据为:" + orderDetailData);
|
||||||
|
|
||||||
|
//开始封装明细数据
|
||||||
|
Map orderDetailMap = new HashMap();
|
||||||
|
//erp行Id
|
||||||
|
orderDetailMap.put("field_9b817__c", orderDetailData.getString("id"));
|
||||||
|
|
||||||
|
//获取产品编码
|
||||||
|
String productCode = orderDetailData.getString("productCode") != null ? orderDetailData.getString("productCode") : "";
|
||||||
|
|
||||||
|
//根据物料编码查询CRM产品
|
||||||
|
JSONObject getProduct = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("EQ", "name", Arrays.asList(productCode)),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "ProductObj");
|
||||||
|
|
||||||
|
JSONObject productRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
productRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getProduct, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("success".equals(productRes.getString("errorDescription")) && !productRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
JSONObject productData = productRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
|
||||||
|
orderDetailMap.put("product_id", productData.getString("_id"));
|
||||||
|
//目录价
|
||||||
|
orderDetailMap.put("product_price", productData.getBigDecimal("price") != null ? productData.getBigDecimal("price") : BigDecimal.ZERO);
|
||||||
|
}
|
||||||
|
|
||||||
|
//计划发货日期
|
||||||
|
String planShipDate = orderDetailData.getString("consignTime") != null ? orderDetailData.getString("consignTime") : "";
|
||||||
|
|
||||||
|
LocalDateTime planShipDateTime = LocalDateTime.parse(planShipDate, formatter);
|
||||||
|
|
||||||
|
// 转换为时间戳(毫秒)
|
||||||
|
long planShipStamp = planShipDateTime
|
||||||
|
.atZone(ZoneId.systemDefault()) // 系统默认时区
|
||||||
|
.toInstant()
|
||||||
|
.toEpochMilli();
|
||||||
|
|
||||||
|
orderDetailMap.put("planned_shipment_date__c", planShipStamp);
|
||||||
|
|
||||||
|
//规格型号
|
||||||
|
orderDetailMap.put("specification_model__c", orderDetailData.getString("modelDescription") != null ? orderDetailData.getString("modelDescription") : "");
|
||||||
|
|
||||||
|
//折扣
|
||||||
|
JSONObject orderDetailDefineCharacter = orderDetailData.getJSONObject("orderDetailDefineCharacter");
|
||||||
|
orderDetailMap.put("discount", orderDetailDefineCharacter.getBigDecimal("ZKL01") != null ? orderDetailDefineCharacter.getBigDecimal("ZKL01") : BigDecimal.ZERO);
|
||||||
|
|
||||||
|
//数量
|
||||||
|
orderDetailMap.put("quantity", orderDetailData.getBigDecimal("qty") != null ? orderDetailData.getBigDecimal("qty") : BigDecimal.ZERO);
|
||||||
|
|
||||||
|
//含税单价
|
||||||
|
orderDetailMap.put("sales_price", orderDetailData.getBigDecimal("oriTaxUnitPrice") != null ? orderDetailData.getBigDecimal("oriTaxUnitPrice") : BigDecimal.ZERO);
|
||||||
|
|
||||||
|
//含税小计
|
||||||
|
orderDetailMap.put("subtotal", orderDetailData.getBigDecimal("oriSum") != null ? orderDetailData.getBigDecimal("oriSum") : BigDecimal.ZERO);
|
||||||
|
|
||||||
|
//税率
|
||||||
|
BigDecimal taxRate = orderDetailData.getBigDecimal("taxRate") != null ? orderDetailData.getBigDecimal("taxRate") : BigDecimal.ZERO;
|
||||||
|
String taxRateStr = TaxRateEnum.getCode(taxRate);
|
||||||
|
|
||||||
|
orderDetailMap.put("tax_rate__c", taxRate);
|
||||||
|
orderDetailMap.put("tax_rate_code__c", taxRateStr);
|
||||||
|
|
||||||
|
//税额
|
||||||
|
JSONObject orderPrice = orderDetailData.getJSONObject("orderDetailPrices");
|
||||||
|
orderDetailMap.put("field_11b7H__c", orderPrice.getBigDecimal("oriTax") != null ? orderPrice.getBigDecimal("oriTax") : BigDecimal.ZERO);
|
||||||
|
|
||||||
|
//库存组织
|
||||||
|
orderDetailMap.put("inventory_organization__c", orderDetailData.getString("stockOrgId_code") != null ? orderDetailData.getString("stockOrgId_code") : "");
|
||||||
|
|
||||||
|
//行备注
|
||||||
|
orderDetailMap.put("remark", orderDetailData.getString("memo") != null ? orderDetailData.getString("memo") : "");
|
||||||
|
|
||||||
|
//市场活动备注
|
||||||
|
orderDetailMap.put("field_Jz17y__c", orderDetailDefineCharacter.getString("SCHDBZ") != null ? orderDetailDefineCharacter.getString("SCHDBZ") : "");
|
||||||
|
|
||||||
|
//无税金额
|
||||||
|
orderDetailMap.put("field_dt212__c", orderPrice.getBigDecimal("oriMoney") != null ? orderPrice.getBigDecimal("oriMoney") : BigDecimal.ZERO);
|
||||||
|
|
||||||
|
//含税单价
|
||||||
|
orderDetailMap.put("sales_price", orderDetailData.getBigDecimal("oriTaxUnitPrice") != null ? orderDetailData.getBigDecimal("oriTaxUnitPrice") : BigDecimal.ZERO);
|
||||||
|
|
||||||
|
//无税单价
|
||||||
|
orderDetailMap.put("field_jyqC3__c", orderPrice.getBigDecimal("oriUnitPrice") != null ? orderPrice.getBigDecimal("oriUnitPrice") : BigDecimal.ZERO);
|
||||||
|
|
||||||
|
String orderDetailId = orderDetailData.getString("id");
|
||||||
|
|
||||||
|
JSONObject getOrderDetail = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
|
new Filter("EQ", "field_9b817__c", Arrays.asList(orderDetailId)),
|
||||||
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
|
), "SalesOrderProductObj");
|
||||||
|
|
||||||
|
JSONObject orderDetailRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
orderDetailRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getOrderDetail, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("success".equals(orderDetailRes.getString("errorDescription")) && !orderDetailRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) {
|
||||||
|
JSONObject crmDetailData = orderDetailRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
orderDetailMap.put("_id", crmDetailData.getString("_id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
orderDetailList.add(orderDetailMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
//开始封装
|
||||||
|
Map details = new HashMap<>();
|
||||||
|
details.put("SalesOrderProductObj", orderDetailList);
|
||||||
|
|
||||||
|
JSONObject updateOrder = crmRequestUtil.crmWithDetail(salesOrderMain, details);
|
||||||
|
|
||||||
|
System.out.println("销售订单请求为:" + updateOrder);
|
||||||
|
|
||||||
|
//开始封装日志
|
||||||
|
Map logMap = new HashMap<>();
|
||||||
|
logMap.put("log_id", UUID.randomUUID().toString().replace("-", ""));
|
||||||
|
logMap.put("syn_type", "1");
|
||||||
|
logMap.put("log_type", "XSDDBG");
|
||||||
|
logMap.put("data_name", salesOrderCode);
|
||||||
|
logMap.put("data_id", salesOrderId);
|
||||||
|
logMap.put("mark", modifyTime);
|
||||||
|
logMap.put("send_body", JSON.toJSONString(updateOrder));
|
||||||
|
logMap.put("tableName", "send_log_xsdd");
|
||||||
|
|
||||||
|
JSONObject updateOrderRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
updateOrderRes = restTemplate.postForObject(URLConstant.UPDATE_CRM_MAIN, updateOrder, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("创建结果为:" + JSON.parseObject(JSON.toJSONString(updateOrderRes)));
|
||||||
|
|
||||||
|
if ("success".equals(updateOrderRes.getString("errorDescription"))) {
|
||||||
|
logMap.put("log_status", "0");
|
||||||
|
logMap.put("res_body", "同步成功");
|
||||||
|
} else {
|
||||||
|
logMap.put("log_status", "1");
|
||||||
|
logMap.put("res_body", "同步失败" + updateOrderRes.getString("errorMessage"));
|
||||||
|
}
|
||||||
|
|
||||||
|
logMap.put("send_res", JSON.toJSONString(updateOrderRes));
|
||||||
|
logMap.put("send_memo", JSON.toJSONString(updateOrderRes));
|
||||||
|
|
||||||
|
JSONObject logRes = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
logRes = restTemplate.postForObject("http://localhost:18080/Log/insert/log_data", logMap, JSONObject.class);
|
||||||
|
} catch (RestClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("日志插入结果为:" + logRes);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import org.springframework.web.client.HttpStatusCodeException;
|
import org.springframework.web.client.HttpStatusCodeException;
|
||||||
import org.springframework.web.client.RestClientException;
|
import org.springframework.web.client.RestClientException;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
import org.ssssssss.magicboot.Enum.AccountOrgEnum;
|
||||||
import org.ssssssss.magicboot.Enum.CurrencyEnum;
|
import org.ssssssss.magicboot.Enum.CurrencyEnum;
|
||||||
import org.ssssssss.magicboot.Enum.OrderTypeEnum;
|
import org.ssssssss.magicboot.Enum.OrderTypeEnum;
|
||||||
import org.ssssssss.magicboot.constant.URLConstant;
|
import org.ssssssss.magicboot.constant.URLConstant;
|
||||||
@ -48,7 +49,7 @@ public class SalesOrderController {
|
|||||||
log.info("开始同步销售订单");
|
log.info("开始同步销售订单");
|
||||||
|
|
||||||
JSONObject getSalesOrder = crmRequestUtil.getCRMList(Arrays.asList(
|
JSONObject getSalesOrder = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
new Filter("EQ", "name", Arrays.asList("DD25081300001")),
|
new Filter("EQ", "name", Arrays.asList("DD25082200001")),
|
||||||
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
new Filter("EQ", "life_status", Arrays.asList("normal"))
|
||||||
), "SalesOrderObj");
|
), "SalesOrderObj");
|
||||||
|
|
||||||
@ -99,7 +100,7 @@ public class SalesOrderController {
|
|||||||
salesOrderMap.put("orderPrices!currency", "2158013267526025386");
|
salesOrderMap.put("orderPrices!currency", "2158013267526025386");
|
||||||
salesOrderMap.put("orderPrices!natCurrency", "2158013267526025386");
|
salesOrderMap.put("orderPrices!natCurrency", "2158013267526025386");
|
||||||
//汇率
|
//汇率
|
||||||
salesOrderMap.put("orderPrices!exchRate", "13.0");
|
salesOrderMap.put("orderPrices!exchRate", "1");
|
||||||
//汇率类型
|
//汇率类型
|
||||||
salesOrderMap.put("orderPrices!exchangeRateType", "i3p6cwlm");
|
salesOrderMap.put("orderPrices!exchangeRateType", "i3p6cwlm");
|
||||||
//单价含税
|
//单价含税
|
||||||
@ -116,10 +117,17 @@ public class SalesOrderController {
|
|||||||
|
|
||||||
salesOrderMap.put("transactionTypeId", tradeTypeStr);
|
salesOrderMap.put("transactionTypeId", tradeTypeStr);
|
||||||
|
|
||||||
//todo 销售组织(思科捷)
|
//销售组织(思科捷)
|
||||||
salesOrderMap.put("salesOrgId", "2163138383273525256");
|
String salesOrg = salesOrderData.getString("field_1Vkdk__c__r") != null ? salesOrderData.getString("field_1Vkdk__c__r") : "";
|
||||||
|
String salesOrgStr = "";
|
||||||
|
|
||||||
|
if (!salesOrg.equals("")) {
|
||||||
|
salesOrgStr = AccountOrgEnum.getValueByName(salesOrg);
|
||||||
|
}
|
||||||
|
|
||||||
|
salesOrderMap.put("salesOrgId", salesOrgStr);
|
||||||
//销售组织
|
//销售组织
|
||||||
salesOrderMap.put("settlementOrgId", "2163138383273525256");
|
salesOrderMap.put("settlementOrgId", salesOrgStr);
|
||||||
|
|
||||||
//单据编号
|
//单据编号
|
||||||
salesOrderMap.put("code", salesOrderCode);
|
salesOrderMap.put("code", salesOrderCode);
|
||||||
@ -145,6 +153,9 @@ public class SalesOrderController {
|
|||||||
salesOrderMap.put("invoiceAgentId", contactId);
|
salesOrderMap.put("invoiceAgentId", contactId);
|
||||||
|
|
||||||
//销售部门
|
//销售部门
|
||||||
|
String personERPIdStr = "";
|
||||||
|
String deptId = "";
|
||||||
|
|
||||||
List ownerList = salesOrderData.getJSONArray("owner");
|
List ownerList = salesOrderData.getJSONArray("owner");
|
||||||
|
|
||||||
JSONObject getPerson = crmRequestUtil.getCRMList(Arrays.asList(
|
JSONObject getPerson = crmRequestUtil.getCRMList(Arrays.asList(
|
||||||
@ -164,6 +175,7 @@ public class SalesOrderController {
|
|||||||
JSONObject personData = personRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
JSONObject personData = personRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
|
||||||
String personERPId = personData.getString("erp_id__c") != null ? personData.getString("erp_id__c") : "";
|
String personERPId = personData.getString("erp_id__c") != null ? personData.getString("erp_id__c") : "";
|
||||||
|
personERPIdStr = personERPId;
|
||||||
|
|
||||||
salesOrderMap.put("corpContact", personERPId);
|
salesOrderMap.put("corpContact", personERPId);
|
||||||
}
|
}
|
||||||
@ -187,6 +199,7 @@ public class SalesOrderController {
|
|||||||
JSONObject deptData = deptRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
JSONObject deptData = deptRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0);
|
||||||
|
|
||||||
String deptERPId = deptData.getString("erp_id__c") != null ? deptData.getString("erp_id__c") : "";
|
String deptERPId = deptData.getString("erp_id__c") != null ? deptData.getString("erp_id__c") : "";
|
||||||
|
deptId = deptERPId;
|
||||||
|
|
||||||
salesOrderMap.put("saleDepartmentId", deptERPId);
|
salesOrderMap.put("saleDepartmentId", deptERPId);
|
||||||
}
|
}
|
||||||
@ -281,55 +294,53 @@ public class SalesOrderController {
|
|||||||
salesDetail.put("subQty", quantity);
|
salesDetail.put("subQty", quantity);
|
||||||
|
|
||||||
//计价数量
|
//计价数量
|
||||||
BigDecimal priceQuantity = salesDetailData.getBigDecimal("pricing_quantity__c") != null ? salesDetailData.getBigDecimal("pricing_quantity__c") : BigDecimal.ZERO;
|
salesDetail.put("priceQty", quantity);
|
||||||
|
|
||||||
salesDetail.put("priceQty", priceQuantity);
|
//含税成交价=含税单价/含税小计
|
||||||
|
|
||||||
//含税成交价
|
|
||||||
BigDecimal taxInclusivePrice = salesDetailData.getBigDecimal("sales_price") != null ? salesDetailData.getBigDecimal("sales_price") : BigDecimal.ZERO;
|
BigDecimal taxInclusivePrice = salesDetailData.getBigDecimal("sales_price") != null ? salesDetailData.getBigDecimal("sales_price") : BigDecimal.ZERO;
|
||||||
|
|
||||||
salesDetail.put("oriTaxUnitPrice", taxInclusivePrice);
|
salesDetail.put("oriTaxUnitPrice", taxInclusivePrice);
|
||||||
|
|
||||||
//todo 目录价
|
//todo 目录价
|
||||||
//todo BigDecimal catalogPrice = salesDetailData.getBigDecimal("product_price") != null ? salesDetailData.getBigDecimal("product_price") : BigDecimal.ZERO;
|
|
||||||
|
|
||||||
|
|
||||||
//含税金额
|
//含税金额
|
||||||
BigDecimal hsaTaxPrice = salesDetailData.getBigDecimal("subtotal") != null ? salesDetailData.getBigDecimal("subtotal") : BigDecimal.ZERO;
|
BigDecimal hsaTaxPrice = salesDetailData.getBigDecimal("subtotal") != null ? salesDetailData.getBigDecimal("subtotal") : BigDecimal.ZERO;
|
||||||
|
|
||||||
salesDetail.put("oriSum", hsaTaxPrice);
|
salesDetail.put("oriSum", hsaTaxPrice);
|
||||||
//todo 税率
|
//税率
|
||||||
//todo BigDecimal taxRate = salesDetailData.getBigDecimal("tax_rate__c") != null ? salesDetailData.getBigDecimal("tax_rate__c") : BigDecimal.ZERO;
|
|
||||||
|
|
||||||
salesDetail.put("taxId", "VATR1");
|
salesDetail.put("taxId", salesDetailData.getString("tax_rate_code__c") != null ? salesDetailData.getString("tax_rate_code__c") : "");
|
||||||
|
|
||||||
//税额
|
//税额
|
||||||
BigDecimal taxAmount = salesDetailData.getBigDecimal("field_11b7H__c") != null ? salesDetailData.getBigDecimal("field_11b7H__c") : BigDecimal.ZERO;
|
BigDecimal taxAmount = salesDetailData.getBigDecimal("field_11b7H__c") != null ? salesDetailData.getBigDecimal("field_11b7H__c") : BigDecimal.ZERO;
|
||||||
|
|
||||||
|
//税额=税额
|
||||||
salesDetail.put("orderDetailPrices!oriTax", taxAmount);
|
salesDetail.put("orderDetailPrices!oriTax", taxAmount);
|
||||||
|
//本币税额
|
||||||
salesDetail.put("orderDetailPrices!natTax", taxAmount);
|
salesDetail.put("orderDetailPrices!natTax", taxAmount);
|
||||||
|
|
||||||
//库存组织
|
//库存组织
|
||||||
String kuCunOrg = salesDetailData.getString("inventory_organization__c") != null ? salesDetailData.getString("inventory_organization__c") : "";
|
salesDetail.put("stockOrgId", salesOrgStr);
|
||||||
|
|
||||||
salesDetail.put("stockOrgId", kuCunOrg);
|
//计划发货日期
|
||||||
|
long planDate = salesDetailData.getLong("planned_shipment_date__c") != null ? salesDetailData.getLong("planned_shipment_date__c") : 0;
|
||||||
// //质保期
|
|
||||||
// long zhiBaoQi = salesDetailData.getLong("field_jbN2r__c") != null ? salesDetailData.getLong("field_jbN2r__c") : 0;
|
|
||||||
//
|
|
||||||
// String zhiBaoQiStr = sdf.format(new Date(zhiBaoQi));
|
|
||||||
//
|
|
||||||
// salesDetail.put("warrantyDate", zhiBaoQiStr);
|
|
||||||
|
|
||||||
long planDate = salesDetailData.getLong("acceptance_date__c") != null ? salesDetailData.getLong("acceptance_date__c") : 0;
|
|
||||||
|
|
||||||
salesDetail.put("consignTime", sdf.format(new Date(planDate)));
|
salesDetail.put("consignTime", sdf.format(new Date(planDate)));
|
||||||
|
|
||||||
//行备注
|
//行备注
|
||||||
String lineRemark = salesDetailData.getString("remark") != null ? salesDetailData.getString("remark") : "";
|
String lineRemark = salesDetailData.getString("remark") != null ? salesDetailData.getString("remark") : "";
|
||||||
|
salesDetail.put("memo", lineRemark);
|
||||||
|
|
||||||
//暂时给行备注加上CRMID
|
//暂时给行备注加上CRMID
|
||||||
salesDetail.put("memo", salesDetailData.getString("_id"));
|
Map orderDetailDefineCharacter = new HashMap<>();
|
||||||
|
orderDetailDefineCharacter.put("item2852kg", salesDetailData.getString("_id"));
|
||||||
|
orderDetailDefineCharacter.put("MLJ", salesDetailData.getBigDecimal("product_price") != null ? salesDetailData.getBigDecimal("product_price") : BigDecimal.ZERO);
|
||||||
|
orderDetailDefineCharacter.put("ZKL01", salesDetailData.getBigDecimal("discount") != null ? salesDetailData.getBigDecimal("discount") : BigDecimal.ZERO);
|
||||||
|
orderDetailDefineCharacter.put("SCHDBZ", salesDetailData.getString("field_Jz17y__c") != null ? salesDetailData.getString("field_Jz17y__c") : "");
|
||||||
|
orderDetailDefineCharacter.put("CustNB001", deptId);//内部交易部门
|
||||||
|
orderDetailDefineCharacter.put("CustNB002", personERPIdStr);//内部交易人员
|
||||||
|
|
||||||
|
salesDetail.put("orderDetailDefineCharacter", orderDetailDefineCharacter);
|
||||||
|
|
||||||
//销售单位
|
//销售单位
|
||||||
String salesUnit = salesDetailData.getString("sales_unit__c") != null ? salesDetailData.getString("sales_unit__c") : "";
|
String salesUnit = salesDetailData.getString("sales_unit__c") != null ? salesDetailData.getString("sales_unit__c") : "";
|
||||||
@ -339,31 +350,31 @@ public class SalesOrderController {
|
|||||||
salesDetail.put("iProductUnitId", salesUnit);
|
salesDetail.put("iProductUnitId", salesUnit);
|
||||||
|
|
||||||
//todo 销售费用
|
//todo 销售费用
|
||||||
// BigDecimal salesFee = salesDetailData.getBigDecimal("sales_cost__c") != null ? salesDetailData.getBigDecimal("sales_cost__c") : BigDecimal.ZERO;
|
|
||||||
//
|
|
||||||
// salesDetail.put("iSalesFee", salesFee);
|
|
||||||
|
|
||||||
//无税金额
|
//无税金额
|
||||||
BigDecimal taxFreeAmount = salesDetailData.getBigDecimal("field_dt212__c") != null ? salesDetailData.getBigDecimal("field_dt212__c") : BigDecimal.ZERO;
|
BigDecimal taxFreeAmount = salesDetailData.getBigDecimal("field_dt212__c") != null ? salesDetailData.getBigDecimal("field_dt212__c") : BigDecimal.ZERO;
|
||||||
|
|
||||||
|
//本币无税金额=不含税小计
|
||||||
salesDetail.put("orderDetailPrices!natMoney", salesDetailData.getBigDecimal("field_dt212__c") != null ? salesDetailData.getBigDecimal("field_dt212__c") : BigDecimal.ZERO);
|
salesDetail.put("orderDetailPrices!natMoney", salesDetailData.getBigDecimal("field_dt212__c") != null ? salesDetailData.getBigDecimal("field_dt212__c") : BigDecimal.ZERO);
|
||||||
|
//无税金额
|
||||||
salesDetail.put("orderDetailPrices!oriMoney", taxFreeAmount);
|
salesDetail.put("orderDetailPrices!oriMoney", taxFreeAmount);
|
||||||
|
|
||||||
//含税金额
|
//含税金额
|
||||||
BigDecimal noTaxAmount = salesDetailData.getBigDecimal("field_jyqC3__c") != null ? salesDetailData.getBigDecimal("field_jyqC3__c") : BigDecimal.ZERO;
|
BigDecimal noTaxAmount = salesDetailData.getBigDecimal("field_jyqC3__c") != null ? salesDetailData.getBigDecimal("field_jyqC3__c") : BigDecimal.ZERO;
|
||||||
|
|
||||||
|
//本币无税单价=不含税单价
|
||||||
salesDetail.put("orderDetailPrices!natUnitPrice", noTaxAmount);
|
salesDetail.put("orderDetailPrices!natUnitPrice", noTaxAmount);
|
||||||
//无税成交价
|
//无税成交价
|
||||||
salesDetail.put("orderDetailPrices!oriUnitPrice", noTaxAmount);
|
salesDetail.put("orderDetailPrices!oriUnitPrice", noTaxAmount);
|
||||||
salesDetail.put("oriTaxUnitPrice", noTaxAmount);
|
//本币含税单价
|
||||||
salesDetail.put("orderDetailPrices!natTaxUnitPrice", noTaxAmount);
|
salesDetail.put("orderDetailPrices!natTaxUnitPrice", salesDetailData.getString("sales_price") != null ? salesDetailData.getBigDecimal("sales_price") : BigDecimal.ZERO);
|
||||||
|
|
||||||
|
|
||||||
//含税金额
|
//本币含税金额=含税小计
|
||||||
salesDetail.put("orderDetailPrices!natSum", salesDetailData.getBigDecimal("subtotal") != null ? salesDetailData.getBigDecimal("subtotal") : BigDecimal.ZERO);
|
salesDetail.put("orderDetailPrices!natSum", salesDetailData.getBigDecimal("subtotal") != null ? salesDetailData.getBigDecimal("subtotal") : BigDecimal.ZERO);
|
||||||
|
|
||||||
//销售组织
|
//销售组织
|
||||||
salesDetail.put("settlementOrgId", "2163138383273525256");
|
salesDetail.put("settlementOrgId", salesOrgStr);
|
||||||
|
|
||||||
//todo 销售换算率
|
//todo 销售换算率
|
||||||
salesDetail.put("invExchRate", 1);
|
salesDetail.put("invExchRate", 1);
|
||||||
@ -391,6 +402,8 @@ public class SalesOrderController {
|
|||||||
Map salesDataMap = new HashMap<>();
|
Map salesDataMap = new HashMap<>();
|
||||||
salesDataMap.put("data", salesOrderMap);
|
salesDataMap.put("data", salesOrderMap);
|
||||||
|
|
||||||
|
System.out.println("开始同步销售订单:" + JSON.parseObject(JSON.toJSONString(salesOrderMap)));
|
||||||
|
|
||||||
//开始获取token
|
//开始获取token
|
||||||
String erpToken = "";
|
String erpToken = "";
|
||||||
|
|
||||||
@ -440,6 +453,8 @@ public class SalesOrderController {
|
|||||||
logMap.put("send_res", JSON.toJSONString(salesOrderERPRes));
|
logMap.put("send_res", JSON.toJSONString(salesOrderERPRes));
|
||||||
logMap.put("tableName", "send_log_xsdd");
|
logMap.put("tableName", "send_log_xsdd");
|
||||||
|
|
||||||
|
JSONObject backReq = new JSONObject();
|
||||||
|
|
||||||
if ("200".equals(salesOrderERPRes.getString("code"))) {
|
if ("200".equals(salesOrderERPRes.getString("code"))) {
|
||||||
//同步成功
|
//同步成功
|
||||||
log.info("销售订单同步成功");
|
log.info("销售订单同步成功");
|
||||||
@ -459,7 +474,7 @@ public class SalesOrderController {
|
|||||||
JSONObject orderDetail = JSON.parseObject(JSON.toJSONString(orderDetailObj));
|
JSONObject orderDetail = JSON.parseObject(JSON.toJSONString(orderDetailObj));
|
||||||
|
|
||||||
Map backDetail = new HashMap();
|
Map backDetail = new HashMap();
|
||||||
backDetail.put("_id", orderDetail.getString("memo"));
|
backDetail.put("_id", orderDetail.getJSONObject("orderDetailDefineCharacter").getString("item2852kg"));
|
||||||
backDetail.put("field_9b817__c", orderDetail.getString("id"));
|
backDetail.put("field_9b817__c", orderDetail.getString("id"));
|
||||||
|
|
||||||
backDetails.add(backDetail);
|
backDetails.add(backDetail);
|
||||||
@ -467,19 +482,18 @@ public class SalesOrderController {
|
|||||||
|
|
||||||
backDetailMap.put("SalesOrderProductObj", backDetails);
|
backDetailMap.put("SalesOrderProductObj", backDetails);
|
||||||
|
|
||||||
|
backReq = crmRequestUtil.crmWithDetail(backReqMap, backDetailMap);
|
||||||
} else {
|
} else {
|
||||||
logMap.put("log_status", "1");
|
logMap.put("log_status", "1");
|
||||||
logMap.put("res_body", "同步失败:" + salesOrderERPRes.getString("message") != null ? salesOrderERPRes.getString("message") : "同步失败,未知原因");
|
logMap.put("res_body", "同步失败:" + salesOrderERPRes.getString("message") != null ? salesOrderERPRes.getString("message") : "同步失败,未知原因");
|
||||||
backReqMap.put("sync_status__c", "option_sync_failed__c");
|
backReqMap.put("sync_status__c", "option_sync_failed__c");
|
||||||
backReqMap.put("response_status__c", salesOrderERPRes.getString("message") != null ? salesOrderERPRes.getString("message") : "同步失败,未知原因");
|
backReqMap.put("response_status__c", salesOrderERPRes.getString("message") != null ? salesOrderERPRes.getString("message") : "同步失败,未知原因");
|
||||||
|
|
||||||
backDetailMap.put("SalesOrderProductObj", Arrays.asList());
|
backReq = crmRequestUtil.createCRM(backReqMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("开始回写数据");
|
log.info("开始回写数据");
|
||||||
|
|
||||||
JSONObject backReq = crmRequestUtil.crmWithDetail(backReqMap, backDetailMap);
|
|
||||||
|
|
||||||
JSONObject backRes = new JSONObject();
|
JSONObject backRes = new JSONObject();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -263,8 +263,12 @@ public class XXTHController {
|
|||||||
refundDetailList.add(salesReturnDetail);
|
refundDetailList.add(salesReturnDetail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
salesReturnMap.put("saleReturnDetails", refundDetailList);
|
||||||
|
|
||||||
Map salesDataMap = new HashMap<>();
|
Map salesDataMap = new HashMap<>();
|
||||||
salesDataMap.put("data", refundDetailList);
|
salesDataMap.put("data", salesReturnMap);
|
||||||
|
|
||||||
|
System.out.println(JSON.parse(JSON.toJSONString(salesDataMap)));
|
||||||
|
|
||||||
//开始获取token
|
//开始获取token
|
||||||
String erpToken = "";
|
String erpToken = "";
|
||||||
@ -342,7 +346,7 @@ public class XXTHController {
|
|||||||
JSONObject backRes = new JSONObject();
|
JSONObject backRes = new JSONObject();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
backRes = restTemplate.postForObject(URLConstant.UPDATE_CRM_MAIN, backReq, JSONObject.class);
|
backRes = restTemplate.postForObject(URLConstant.UPDATE_CRM_CUSTOMIZE, backReq, JSONObject.class);
|
||||||
} catch (RestClientException e) {
|
} catch (RestClientException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user