diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/Enum/OrderTypeEnum.java b/magic-boot/src/main/java/org/ssssssss/magicboot/Enum/OrderTypeEnum.java index 85d55dc..3cd778f 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/Enum/OrderTypeEnum.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/Enum/OrderTypeEnum.java @@ -6,8 +6,8 @@ import java.util.Map; public enum OrderTypeEnum { 普通销售("SO001"), 直运销售("SO004"), - 实验服务销售("SO071"), - 其他服务销售("SO004"); + 实验服务销售("SO005"), + 其他服务销售("QT001"); private final String value; diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectController.java index b8bf03c..a389313 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectController.java @@ -87,8 +87,10 @@ public class ProjectController { //开始封装请求 Map projectReqMap = new HashMap<>(); - //todo 所属项目类别 - projectReqMap.put("classifyid", "2143096107351670788"); + //所属项目类别 + String projectClassify = projectData.getString("project_category__c") != null ? projectData.getString("project_category__c") : ""; + + projectReqMap.put("classifyid___code", projectClassify); //所属组织 Map orgMap = new HashMap<>(); orgMap.put("en_US", "Enterprise Account"); @@ -131,22 +133,22 @@ public class ProjectController { System.out.println("负责人数据为:" + ownerRes); -// if (!"success".equals(ownerRes.getString("errorDescription")) || ownerRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { -// log.info("负责人不存在或者请求失败"); -// continue; -// } -// -// JSONObject ownerData = ownerRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); -// -// String ownerUserId = ownerData.getString("erp_id__c") != null ? ownerData.getString("erp_id__c") : ownerData.getString("user_id"); -// -// if (ownerUserId.equals("")) { -// log.info("负责人不存在或者请求失败"); -// continue; -// } + if (!"success".equals(ownerRes.getString("errorDescription")) || ownerRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { + log.info("负责人不存在或者请求失败"); + continue; + } - //projectReqMap.put("person", ownerUserId); - projectReqMap.put("person", "2155571363863068673"); + JSONObject ownerData = ownerRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); + + String ownerUserId = ownerData.getString("erp_id__c") != null ? ownerData.getString("erp_id__c") : ""; + + if (ownerUserId.equals("")) { + log.info("负责人不存在或者请求失败"); + continue; + } + + projectReqMap.put("person", ownerUserId); + //projectReqMap.put("person", "2155571363863068673"); //查询部门 String deptId = projectData.getString("owner_department_id"); @@ -166,25 +168,25 @@ public class ProjectController { System.out.println(getDeptRes); -// if (!"success".equals(getDeptRes.getString("errorDescription")) || getDeptRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { -// log.info("部门不存在,将不再继续向下执行"); -// continue; -// } -// -// log.info("部门存在,将开始执行"); -// -// JSONObject deptData = getDeptRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); -// -// String deptERPId = deptData.getString("erp_id__c") != null ? deptData.getString("erp_id__c") : ""; -// -// if (deptERPId.equals("")) { -// log.info("部门不存在或者请求失败"); -// continue; -// } + if (!"success".equals(getDeptRes.getString("errorDescription")) || getDeptRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { + log.info("部门不存在,将不再继续向下执行"); + continue; + } - //projectReqMap.put("deptid", deptERPId); - projectReqMap.put("deptid", "2155557327902605316"); - projectReqMap.put("sourceUnique", "2328679934822187269"); + log.info("部门存在,将开始执行"); + + JSONObject deptData = getDeptRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); + + String deptERPId = deptData.getString("erp_id__c") != null ? deptData.getString("erp_id__c") : ""; + + if (deptERPId.equals("")) { + log.info("部门不存在或者请求失败"); + continue; + } + + projectReqMap.put("deptid", deptERPId); + //projectReqMap.put("deptid", "2155557327902605316"); + projectReqMap.put("sourceUnique", projectId); projectReqMap.put("orgid", "666666"); //开始封装请求体 diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/SalesOrderController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/SalesOrderController.java index 795cd72..f77c2c1 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/SalesOrderController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/SalesOrderController.java @@ -16,6 +16,8 @@ import org.ssssssss.magicboot.entity.Filter; import org.ssssssss.magicboot.utils.CrmRequestUtil; import org.ssssssss.magicboot.utils.YSSignUtils; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; @@ -29,7 +31,7 @@ public class SalesOrderController { private RestTemplate restTemplate = new RestTemplate(); - public static void main(String[] weiLoong) { + public static void main(String[] args) { new SalesOrderController().syncSalesOrder(); } @@ -39,7 +41,7 @@ public class SalesOrderController { * @return void * @Author weiloong_zhang */ - @PostMapping("/sync/sales-order") + @PostMapping("/sync/salesOrder") public void syncSalesOrder() { CrmRequestUtil crmRequestUtil = new CrmRequestUtil(); @@ -50,38 +52,36 @@ public class SalesOrderController { new Filter("EQ", "life_status", Arrays.asList("normal")) ), "SalesOrderObj"); - JSONObject getSalesOrderRes = new JSONObject(); + JSONObject salesOrderRes = new JSONObject(); try { - getSalesOrderRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getSalesOrder, JSONObject.class); + salesOrderRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getSalesOrder, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } - System.out.println("销售订单查询结果为:" + getSalesOrderRes); - - if (!"success".equals(getSalesOrderRes.getString("errorDescription")) || getSalesOrderRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { - log.info("查询失败或者不存在符合条件数据"); + if (!"success".equals(salesOrderRes.getString("errorDescription")) || salesOrderRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { + log.info("销售订单不存在或者销售订单请求失败"); return; } - log.info("查询成功,继续向下执行"); + log.info("销售订单请求成功且数据存在,将继续向下执行"); - for (Object salesOrderObj : getSalesOrderRes.getJSONObject("data").getJSONArray("dataList")) { + for (Object salesOrderObj : salesOrderRes.getJSONObject("data").getJSONArray("dataList")) { JSONObject salesOrderData = JSON.parseObject(JSON.toJSONString(salesOrderObj)); - System.out.println("当前正在处理的数据为:" + salesOrderData); + System.out.println("当前正在处理的销售订单数据为:" + salesOrderData); //开始截取关键数据 String salesOrderId = salesOrderData.getString("_id"); - String salesOrderName = salesOrderData.getString("name"); + String salesOrderCode = salesOrderData.getString("name"); String modifyTime = salesOrderData.getString("last_modified_time"); - //开始查询当前数据是否已经集成过了 + //开始查询当前数据是否已经执行过了 JSONObject isLogRes = new JSONObject(); try { - isLogRes = restTemplate.getForObject("http://localhost:18080/Log/query/log_data?table=send_log_xsdd&log_type=KJHT&dataId=" + salesOrderId + "&mark=" + modifyTime, JSONObject.class); + isLogRes = restTemplate.getForObject("http://localhost:18080/Log/query/log_data?table=send_log_xsdd&log_type=XSDD&dataId=" + salesOrderId + "&mark=" + modifyTime, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } @@ -93,256 +93,303 @@ public class SalesOrderController { log.info("日志不存在,将继续向下执行"); - //开始封装数据 - Map salesOrderMap = new HashMap(); - //交易类型 - String orderType = salesOrderData.getString("order_type__c__r") != null ? salesOrderData.getString("order_type__c__r") : ""; + //开始封装主表相关数据 + Map salesOrderMap = new HashMap<>(); + //币种 + salesOrderMap.put("orderPrices!currency", "2158013267526025386"); + salesOrderMap.put("orderPrices!natCurrency", "2158013267526025386"); + //汇率 + salesOrderMap.put("orderPrices!exchRate", "13.0"); + //汇率类型 + salesOrderMap.put("orderPrices!exchangeRateType", "i3p6cwlm"); + //单价含税 + salesOrderMap.put("orderPrices!taxInclusive", true); - if ("".equals(orderType)) { - log.info("交易类型不存在"); - continue; + //开始获取交易类型 + String tradeType = salesOrderData.getString("order_type__c__r") != null ? salesOrderData.getString("order_type__c__r") : ""; + + String tradeTypeStr = ""; + + if (!tradeType.equals("")) { + tradeTypeStr = OrderTypeEnum.getValueByName(tradeType); } - String orderTypeName = OrderTypeEnum.getValueByName(orderType); + salesOrderMap.put("transactionTypeId", tradeTypeStr); - salesOrderMap.put("transactionTypeId_code", orderTypeName); + //todo 销售组织(思科捷) + salesOrderMap.put("salesOrgId", "2163138383273525256"); //销售组织 - salesOrderMap.put("settlementOrgId_code", "SKJ"); - salesOrderMap.put("settlementOrgId", "2132046702701969413"); - salesOrderMap.put("salesOrgId", "2132046702701969413"); - salesOrderMap.put("transTypeKeyField", "transTypeKeyField"); - salesOrderMap.put("transactionTypeId", "2126101050633486643"); - salesOrderMap.put("orderPrices!currency", "2126099298265333798"); - salesOrderMap.put("orderPrices!exchRate", 1); - salesOrderMap.put("orderPrices!exchangeRateType", "j30ib0to"); - salesOrderMap.put("orderPrices!natCurrency", "2126099298265333798"); - salesOrderMap.put("orderPrices!taxInclusive", true); - salesOrderMap.put("payMoney", 500); + salesOrderMap.put("settlementOrgId", "2163138383273525256"); + //单据编号 - salesOrderMap.put("code", salesOrderName); + salesOrderMap.put("code", salesOrderCode); + //销售订单金额 + BigDecimal orderAmount = salesOrderData.getBigDecimal("order_amount") != null ? salesOrderData.getBigDecimal("order_amount") : BigDecimal.ZERO; + + salesOrderMap.put("payMoney", orderAmount); + + //转换时间方法 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //单据日期 - long orderTime = salesOrderData.getLong("order_time__c") != null ? salesOrderData.getLong("order_time__c") : 0; + long docDate = salesOrderData.getLong("order_time"); - // 转换为 LocalDateTime - LocalDateTime dateTime = Instant.ofEpochMilli(orderTime) - .atZone(ZoneId.systemDefault()) - .toLocalDateTime(); + String docDateStr = sdf.format(new Date(docDate)); - // 格式化 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - - String orderTimeStr = dateTime.format(formatter); - - salesOrderMap.put("orderDate", orderTimeStr); - salesOrderMap.put("vouchdate", orderTimeStr); + salesOrderMap.put("vouchdate", docDateStr); //联系人 String contactId = salesOrderData.getString("contact_erpid__c") != null ? salesOrderData.getString("contact_erpid__c") : ""; salesOrderMap.put("agentId", contactId); + salesOrderMap.put("invoiceAgentId", contactId); - //客户 - String customerId = salesOrderData.getString("customer_erpid__c") != null ? salesOrderData.getString("customer_erpid__c") : ""; + //销售部门 + List ownerList = salesOrderData.getJSONArray("owner"); - if ("".equals(customerId)) { - log.info("客户不存在"); - continue; - } - - salesOrderMap.put("orderDefineCharacter__KHDW01", customerId); - salesOrderMap.put("invoiceAgentId", customerId); - - //课题组 - String researchId = salesOrderData.getString("topic_group_erpid__c") != null ? salesOrderData.getString("topic_group_erpid__c") : ""; - - salesOrderMap.put("orderDefineCharacter__K0003", researchId); - - //院所或科室 - String instituteId = salesOrderData.getString("institutionr_department__c") != null ? salesOrderData.getString("institutionr_department__c") : ""; - - salesOrderMap.put("orderDefineCharacter__Y005", instituteId); - - //业务员 -// List ownerList = salesOrderData.getJSONArray("owner"); -// -// JSONObject getSalesMan = crmRequestUtil.getCRMList(Arrays.asList( -// new Filter("EQ", "user_id", ownerList), -// new Filter("EQ", "life_status", Arrays.asList("normal")) -// ), "PersonnelObj"); -// -// JSONObject getSalesManRes = new JSONObject(); -// -// try { -// getSalesManRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getSalesMan, JSONObject.class); -// } catch (RestClientException e) { -// e.printStackTrace(); -// } -// -// if (!"success".equals(getSalesManRes.getString("errorDescription")) || getSalesManRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { -// log.info("业务员不存在"); -// continue; -// } -// -// log.info("业务员存在,继续向下执行"); -// -// JSONObject getSalesManData = getSalesManRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); - - //salesOrderMap.put("corpContact", getSalesManData.getString("erp_id__c") != null ? getSalesManData.getString("erp_id__c") : ""); - salesOrderMap.put("corpContact", "2155571363863068673"); - - String departmentId = salesOrderData.getString("owner_department_id"); - -// JSONObject getDepartment = crmRequestUtil.getCRMList(Arrays.asList( -// new Filter("EQ", "department_id", Arrays.asList(departmentId)), -// new Filter("EQ", "life_status", Arrays.asList("normal")) -// ), "DepartmentObj"); -// -// JSONObject getDepartmentRes = new JSONObject(); -// -// try { -// getDepartmentRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getDepartment, JSONObject.class); -// } catch (RestClientException e) { -// e.printStackTrace(); -// } -// -// if (!"success".equals(getDepartmentRes.getString("errorDescription")) || getDepartmentRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { -// log.info("部门不存在"); -// continue; -// } -// -// log.info("部门存在,继续向下执行"); -// -// JSONObject getDepartmentData = getDepartmentRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); - - //salesOrderMap.put("saleDepartmentId", getDepartmentData.getString("erp_id__c") != null ? getDepartmentData.getString("erp_id__c") : ""); - salesOrderMap.put("saleDepartmentId", "2155557327902605316"); - - //todo 实验项目名称 -// String projectId = salesOrderData.getString("project_erpid__c") != null ? salesOrderData.getString("project_erpid__c") : ""; -// -// salesOrderMap.put("orderDefineCharacter__X0001", projectId); - - //合同编号 - salesOrderMap.put("orderDefineCharacter__HTBH001", salesOrderData.getString("internal_contract_number__c") != null ? salesOrderData.getString("internal_contract_number__c") : ""); - - //付款方式 - String paymentType = salesOrderData.getString("field_0f31k__c") != null ? salesOrderData.getString("field_0f31k__c") : ""; - - salesOrderMap.put("orderDefineCharacter__FKFS001", paymentType); - - //终端客户 - String terminalCustomer = salesOrderData.getString("terminal_customer_erid__c") != null ? salesOrderData.getString("terminal_customer_erid__c") : ""; - - salesOrderMap.put("orderDefineCharacter__ZDKH01", terminalCustomer); - - //todo 核销备注 - salesOrderMap.put("orderDefineCharacter__HXBZ001", salesOrderData.getString("field_0f31k__c") != null ? salesOrderData.getString("field_0f31k__c") : ""); - - //备注 - salesOrderMap.put("memo", salesOrderData.getString("field_0f31k__c") != null ? salesOrderData.getString("field_0f31k__c") : ""); - - //收货地址 - salesOrderMap.put("receiveAddress", salesOrderData.getString("delivery_address__c") != null ? salesOrderData.getString("delivery_address__c") : ""); - salesOrderMap.put("receiver", salesOrderData.getString("contact_person__c__r") != null ? salesOrderData.getString("contact_person__c__r") : ""); - - //开始查询订单产品 - JSONObject getOrderProduct = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("EQ", "order_id", Arrays.asList(salesOrderId)), + JSONObject getPerson = crmRequestUtil.getCRMList(Arrays.asList( + new Filter("EQ", "user_id", ownerList), new Filter("EQ", "life_status", Arrays.asList("normal")) - ), "SalesOrderProductObj"); + ), "PersonnelObj"); - JSONObject getOrderProductRes = new JSONObject(); + JSONObject personRes = new JSONObject(); try { - getOrderProductRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getOrderProduct, JSONObject.class); + personRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getPerson, JSONObject.class); } catch (RestClientException e) { e.printStackTrace(); } - if (!"success".equals(getOrderProductRes.getString("errorDescription")) || getOrderProductRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { - log.info("订单产品不存在"); + if ("success".equals(personRes.getString("errorDescription")) && !personRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { + JSONObject personData = personRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); + + String personERPId = personData.getString("erp_id__c") != null ? personData.getString("erp_id__c") : ""; + + salesOrderMap.put("corpContact", personERPId); + } + + String ownerDepartmentId = salesOrderData.getString("owner_department_id"); + + JSONObject getDept = crmRequestUtil.getCRMList(Arrays.asList( + new Filter("EQ", "_id", Arrays.asList(ownerDepartmentId)), + new Filter("EQ", "life_status", Arrays.asList("normal")) + ), "DepartmentObj"); + + JSONObject deptRes = new JSONObject(); + + try { + deptRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getDept, 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); + + String deptERPId = deptData.getString("erp_id__c") != null ? deptData.getString("erp_id__c") : ""; + + salesOrderMap.put("saleDepartmentId", deptERPId); + } + + //实验项目名称 + String projectName = salesOrderData.getString("project_erpid__c") != null ? salesOrderData.getString("project_erpid__c") : ""; + + //todo salesOrderMap.put("projectName", projectName); + + //备注 + String remark = salesOrderData.getString("reconciliation_note__c") != null ? salesOrderData.getString("reconciliation_note__c") : ""; + + salesOrderMap.put("memo", remark); + + //收货地址 + String addressStr = salesOrderData.getString("delivery_address__c") != null ? salesOrderData.getString("delivery_address__c") : ""; + + salesOrderMap.put("receiveAddress", addressStr); + + //开始封装自定义信息 + Map orderDefineCharacter = new HashMap<>(); + //课题组 + String researchGroupId = salesOrderData.getString("topic_group_erpid__c") != null ? salesOrderData.getString("topic_group_erpid__c") : ""; + + orderDefineCharacter.put("KTZ001", researchGroupId); + + //客户单位 + String customerId = salesOrderData.getString("customer_erpid__c") != null ? salesOrderData.getString("customer_erpid__c") : ""; + + orderDefineCharacter.put("SJKH01", customerId); + //院所科室 + String instituteId = salesOrderData.getString("institutionr_department__c") != null ? salesOrderData.getString("institutionr_department__c") : ""; + + orderDefineCharacter.put("KSYS01", instituteId); + + //合同编号 + String contractNum = salesOrderData.getString("internal_contract_number__c") != null ? salesOrderData.getString("internal_contract_number__c") : ""; + + orderDefineCharacter.put("HT01", contractNum); + + //付款方式 + String paymentMethod = salesOrderData.getString("field_0f31k__c") != null ? salesOrderData.getString("field_0f31k__c") : ""; + + orderDefineCharacter.put("FKFS01", paymentMethod); + + //todo 终端客户 + + salesOrderMap.put("orderDefineCharacter", orderDefineCharacter); + + //状态 + salesOrderMap.put("_status", "Insert"); + + //开始封装明细数据 + //根据主表查询明细表 + JSONObject getSalesOrderDetail = crmRequestUtil.getCRMList(Arrays.asList( + new Filter("EQ", "order_id", Arrays.asList(salesOrderId)), + new Filter("EQ", "life_status", Arrays.asList("normal")) + ), "SalesOrderProductObj"); + + JSONObject salesOrderDetailRes = new JSONObject(); + + try { + salesOrderDetailRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, getSalesOrderDetail, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + if (!"success".equals(salesOrderDetailRes.getString("errorDescription")) || salesOrderDetailRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { + log.info("无销售订单详情,将不再继续向下执行"); continue; } - log.info("订单产品存在,继续向下执行"); + log.info("查询到了销售订单,继续向下执行"); - List orderDetails = new ArrayList(); + //封装销售订单明细 + List salesOrderDetails = new ArrayList<>(); - for (Object orderDetailObj : getOrderProductRes.getJSONObject("data").getJSONArray("dataList")) { - JSONObject orderDetailData = JSON.parseObject(JSON.toJSONString(orderDetailObj)); + for (Object salesDetailObj : salesOrderDetailRes.getJSONObject("data").getJSONArray("dataList")) { + JSONObject salesDetailData = JSON.parseObject(JSON.toJSONString(salesDetailObj)); - System.out.println("当前正在处理数据为:" + orderDetailData); + System.out.println("当前正在处理的销售订单明细数据为:" + salesDetailData); - Map orderDetailMap = new HashMap(); - - Map priceMap = new HashMap(); - - //商品编码和名称 - String productCode = orderDetailData.getString("product_code__c__r") != null ? orderDetailData.getString("product_code__c__r") : ""; - String productName = orderDetailData.getString("product_name__c") != null ? orderDetailData.getString("product_name__c") : ""; - - orderDetailMap.put("skuCode", productCode); - orderDetailMap.put("skuName", productName); + //开始封装明细数据 + Map salesDetail = new HashMap<>(); + //todo 实验项目编码 + String productId = salesDetailData.getString("product_erp_id__c"); + salesDetail.put("productId", productId); //数量 - orderDetailMap.put("qty", orderDetailData.getBigDecimal("quantity") != null ? orderDetailData.getBigDecimal("quantity") : 0); + BigDecimal quantity = salesDetailData.getBigDecimal("quantity") != null ? salesDetailData.getBigDecimal("quantity") : BigDecimal.ZERO; + salesDetail.put("qty", quantity); + salesDetail.put("subQty", quantity); + + //计价数量 + BigDecimal priceQuantity = salesDetailData.getBigDecimal("pricing_quantity__c") != null ? salesDetailData.getBigDecimal("pricing_quantity__c") : BigDecimal.ZERO; + + salesDetail.put("priceQty", priceQuantity); //含税成交价 - orderDetailMap.put("oriTaxUnitPrice", orderDetailData.getBigDecimal("tax_inclusive_deal_price__c") != null ? orderDetailData.getBigDecimal("tax_inclusive_deal_price__c") : 0); + BigDecimal taxInclusivePrice = salesDetailData.getBigDecimal("sales_price") != null ? salesDetailData.getBigDecimal("sales_price") : BigDecimal.ZERO; - //币种 - String currency = orderDetailData.getString("currency_type__c") != null ? orderDetailData.getString("currency_type__c") : ""; - - if (!"".equals(currency)) { - //orderDetailMap.put("currency", CurrencyEnum.getValueByName(currency)); - orderDetailMap.put("currency", "2126099298265333798"); - priceMap.put("currency", "2126099298265333798"); - } + salesDetail.put("oriTaxUnitPrice", taxInclusivePrice); //todo 目录价 - orderDetailMap.put("orderDetailDefineCharacter__MLJ01", orderDetailData.getBigDecimal("product_price") != null ? orderDetailData.getBigDecimal("product_price") : 0); + //todo BigDecimal catalogPrice = salesDetailData.getBigDecimal("product_price") != null ? salesDetailData.getBigDecimal("product_price") : BigDecimal.ZERO; + //含税金额 - orderDetailMap.put("oriSum", orderDetailData.getBigDecimal("subtotal") != null ? orderDetailData.getBigDecimal("subtotal") : 0); - //税率 - orderDetailMap.put("taxRate", orderDetailData.getBigDecimal("tax_rate__c") != null ? orderDetailData.getBigDecimal("tax_rate__c") : 0); + BigDecimal hsaTaxPrice = salesDetailData.getBigDecimal("subtotal") != null ? salesDetailData.getBigDecimal("subtotal") : BigDecimal.ZERO; + + 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"); + //税额 - priceMap.put("oriTax", orderDetailData.getBigDecimal("field_11b7H__c") != null ? orderDetailData.getBigDecimal("field_11b7H__c") : 0); - priceMap.put("orderDetailPrices!natSum", orderDetailData.getBigDecimal("field_11b7H__c") != null ? orderDetailData.getBigDecimal("field_11b7H__c") : 0); + BigDecimal taxAmount = salesDetailData.getBigDecimal("field_11b7H__c") != null ? salesDetailData.getBigDecimal("field_11b7H__c") : BigDecimal.ZERO; + + salesDetail.put("orderDetailPrices!oriTax", taxAmount); + salesDetail.put("orderDetailPrices!natTax", taxAmount); + //库存组织 - orderDetailMap.put("settlementOrgId_code", "SKJ"); - //质保期 - orderDetailMap.put("orderDetailDefineCharacter__ZBQ01", orderDetailData.getBigDecimal("field_jbN2r__c") != null ? orderDetailData.getBigDecimal("field_jbN2r__c") : 0); - //todo 市场活动备注 - orderDetailMap.put("orderDetailDefineCharacter__SCHDBZ", ""); + String kuCunOrg = salesDetailData.getString("inventory_organization__c") != null ? salesDetailData.getString("inventory_organization__c") : ""; + + salesDetail.put("stockOrgId", kuCunOrg); + +// //质保期 +// 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))); + //行备注 - orderDetailMap.put("memo", orderDetailData.getString("remark") != null ? orderDetailData.getString("remark") : ""); + String lineRemark = salesDetailData.getString("remark") != null ? salesDetailData.getString("remark") : ""; + + //暂时给行备注加上CRMID + salesDetail.put("memo", salesDetailData.getString("_id")); + + //销售单位 + String salesUnit = salesDetailData.getString("sales_unit__c") != null ? salesDetailData.getString("sales_unit__c") : ""; + + salesDetail.put("iProductAuxUnitId", salesUnit); + salesDetail.put("masterUnitId", salesUnit); + salesDetail.put("iProductUnitId", salesUnit); + + //todo 销售费用 +// BigDecimal salesFee = salesDetailData.getBigDecimal("sales_cost__c") != null ? salesDetailData.getBigDecimal("sales_cost__c") : BigDecimal.ZERO; +// +// salesDetail.put("iSalesFee", salesFee); + //无税金额 - priceMap.put("oriMoney", orderDetailData.getString("field_dt212__c") != null ? orderDetailData.getString("field_dt212__c") : ""); - //含税单价 - priceMap.put("natTaxUnitPrice", orderDetailData.getBigDecimal("sales_price") != null ? orderDetailData.getBigDecimal("sales_price") : 0); - //无税单价 - priceMap.put("natUnitPrice", orderDetailData.getBigDecimal("field_jyqC3__c") != null ? orderDetailData.getBigDecimal("field_jyqC3__c") : 0); + BigDecimal taxFreeAmount = salesDetailData.getBigDecimal("field_dt212__c") != null ? salesDetailData.getBigDecimal("field_dt212__c") : BigDecimal.ZERO; - orderDetailMap.put("orderDetailPrices", priceMap); -// orderDetailMap.put("orderPrices", priceMap); + salesDetail.put("orderDetailPrices!natMoney", salesDetailData.getBigDecimal("field_dt212__c") != null ? salesDetailData.getBigDecimal("field_dt212__c") : BigDecimal.ZERO); + salesDetail.put("orderDetailPrices!oriMoney", taxFreeAmount); - orderDetails.add(orderDetailMap); + //含税金额 + BigDecimal noTaxAmount = salesDetailData.getBigDecimal("field_jyqC3__c") != null ? salesDetailData.getBigDecimal("field_jyqC3__c") : BigDecimal.ZERO; + salesDetail.put("orderDetailPrices!natUnitPrice", noTaxAmount); + //无税成交价 + salesDetail.put("orderDetailPrices!oriUnitPrice", noTaxAmount); + salesDetail.put("oriTaxUnitPrice", noTaxAmount); + salesDetail.put("orderDetailPrices!natTaxUnitPrice", noTaxAmount); + + + //含税金额 + salesDetail.put("orderDetailPrices!natSum", salesDetailData.getBigDecimal("subtotal") != null ? salesDetailData.getBigDecimal("subtotal") : BigDecimal.ZERO); + + //销售组织 + salesDetail.put("settlementOrgId", "2163138383273525256"); + + //todo 销售换算率 + salesDetail.put("invExchRate", 1); + + //todo 计价单位是否浮动换算率 + salesDetail.put("unitExchangeTypePrice", 0); + + //todo 计价换算率 + salesDetail.put("invPriceExchRate", 1); + + //todo 商品售卖类型 + salesDetail.put("orderProductType", "SALE"); + + //todo 销售单位是否浮动换算率 + salesDetail.put("unitExchangeType", 0); + + //状态 + salesDetail.put("_status", "Insert"); + + salesOrderDetails.add(salesDetail); } - if (orderDetails.isEmpty()){ - log.info("无订单明细"); - continue; - } + salesOrderMap.put("orderDetails", salesOrderDetails); - //开始封装明细 - salesOrderMap.put("orderDetails", orderDetails); - - Map dataMap = new HashMap(); - dataMap.put("data", salesOrderMap); - - System.out.println("开始封装数据为:" + JSON.parseObject(JSON.toJSONString(dataMap))); + Map salesDataMap = new HashMap<>(); + salesDataMap.put("data", salesOrderMap); //开始获取token String erpToken = ""; @@ -353,13 +400,13 @@ public class SalesOrderController { e.printStackTrace(); } - //url - String url = "https://c1.yonyoucloud.com/iuap-api-gateway/yonbip/sd/voucherorder/singleSave" + "?access_token=" + erpToken; + //开始发起请求 + String url = "https://c1.yonyoucloud.com/iuap-api-gateway/yonbip/sd/voucherorder/singleSave?access_token=" + erpToken;//url JSONObject salesOrderERPRes = new JSONObject(); try { - salesOrderERPRes = restTemplate.postForObject(url, dataMap, JSONObject.class); + salesOrderERPRes = restTemplate.postForObject(url, salesDataMap, JSONObject.class); } catch (HttpStatusCodeException e) { //获取响应体的错误信息 String errorBody = e.getResponseBodyAsString(); @@ -372,7 +419,88 @@ public class SalesOrderController { System.out.println("调用接口失败:" + e.getMessage()); } - System.out.println(salesOrderERPRes); + System.out.println("销售订单创建结果为:" + salesOrderERPRes); + + //开始封装回写程序 + Map backReqMap = new HashMap(); + backReqMap.put("_id", salesOrderId); + backReqMap.put("dataObjectApiName", "SalesOrderObj"); + + Map backDetailMap = new HashMap(); + + //开始封装日志 + Map logMap = new HashMap<>(); + logMap.put("log_id", UUID.randomUUID().toString().replace("-", "")); + logMap.put("log_type", "XSDD"); + logMap.put("syn_type", "0"); + logMap.put("data_name", salesOrderCode); + logMap.put("data_id", salesOrderId); + logMap.put("mark", modifyTime); + logMap.put("send_body", JSON.toJSONString(salesDataMap)); + logMap.put("send_res", JSON.toJSONString(salesOrderERPRes)); + logMap.put("tableName", "send_log_xsdd"); + + if ("200".equals(salesOrderERPRes.getString("code"))) { + //同步成功 + log.info("销售订单同步成功"); + logMap.put("log_status", "0"); + logMap.put("res_body", "同步成功"); + + //erp返回全量数据 + JSONObject erpResponse = salesOrderERPRes.getJSONObject("data"); + //开始封装回写程序 + backReqMap.put("erp_id__c", erpResponse.getString("id")); + backReqMap.put("sync_status__c", "option_sync_success__c"); + backReqMap.put("response_status__c", "同步成功"); + + List backDetails = new ArrayList(); + //开始封装明细数据 + for (Object orderDetailObj : erpResponse.getJSONArray("orderDetails")) { + JSONObject orderDetail = JSON.parseObject(JSON.toJSONString(orderDetailObj)); + + Map backDetail = new HashMap(); + backDetail.put("_id", orderDetail.getString("memo")); + backDetail.put("field_9b817__c", orderDetail.getString("id")); + + backDetails.add(backDetail); + } + + backDetailMap.put("SalesOrderProductObj", backDetails); + + } else { + logMap.put("log_status", "1"); + logMap.put("res_body", "同步失败:" + salesOrderERPRes.getString("message") != null ? salesOrderERPRes.getString("message") : "同步失败,未知原因"); + backReqMap.put("sync_status__c", "option_sync_failed__c"); + backReqMap.put("response_status__c", salesOrderERPRes.getString("message") != null ? salesOrderERPRes.getString("message") : "同步失败,未知原因"); + + backDetailMap.put("SalesOrderProductObj", Arrays.asList()); + } + + log.info("开始回写数据"); + + JSONObject backReq = crmRequestUtil.crmWithDetail(backReqMap, backDetailMap); + + JSONObject backRes = new JSONObject(); + + try { + backRes = restTemplate.postForObject(URLConstant.UPDATE_CRM_MAIN, backReq, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + System.out.println("回写结果为:" + backRes); + logMap.put("send_memo", JSON.toJSONString(backRes)); + + //开始记录日志 + 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); } } diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/WarehouseController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/WarehouseController.java index d39b6ea..ea172b3 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/WarehouseController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/WarehouseController.java @@ -61,7 +61,7 @@ public class WarehouseController { getWarehouseMap.put("pageSize", 10); // getWarehouseMap.put("startTs", twoDaysAgoStr); // getWarehouseMap.put("endTs", nowStr); - getWarehouseMap.put("code", "A.001"); + getWarehouseMap.put("code", "BJ.002"); //开始获取erpToken System.out.println("人员列表请求参数为:" + JSON.toJSONString(getWarehouseMap)); @@ -134,8 +134,8 @@ public class WarehouseController { //开始封装请求 Map warehouseCrm = new HashMap<>(); warehouseCrm.put("dataObjectApiName", "WarehouseObj"); - //是否默认仓 - warehouseCrm.put("is_default", true); + //todo 是否默认仓 +// warehouseCrm.put("is_default", true); //仓库名称 warehouseCrm.put("name", warehouseName); //仓库编码 @@ -247,7 +247,7 @@ public class WarehouseController { JSONObject createWarehouseRes = new JSONObject(); if (isExist) { - log.info("该产人员不存在,将执行创建"); + log.info("该仓库不存在,将执行创建"); logMap.put("log_type", "CK"); @@ -259,7 +259,7 @@ public class WarehouseController { System.out.println("创建结果为:" + JSON.parseObject(JSON.toJSONString(createWarehouseRes))); } else { - log.info("该人员已存在,将执行更新"); + log.info("该仓库已存在,将执行更新"); logMap.put("log_type", "CKUP");