From 18648905bd0fd3b0dd1cf39a88ff90ec77dc5e30 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 20 九月 2023 10:28:11 +0800
Subject: [PATCH] 修改   9.20

---
 system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java           |   43 +++++++
 inventory-server/src/main/java/com/yuanchu/mom/pojo/SaleMaterial.java            |    9 +
 inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleDto.java             |   15 --
 inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleMaterialDto.java     |   17 ++
 inventory-server/src/main/java/com/yuanchu/mom/Task/DataPullTask.java            |   62 ++++++++++
 framework/src/main/java/com/yuanchu/mom/utils/JsonUtil.java                      |   54 +++++++++
 inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java    |    5 
 inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java |   54 ++++++++
 system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java               |    2 
 inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java          |    6 +
 inventory-server/src/main/java/com/yuanchu/mom/Task/SyncOrder.java               |   72 ++++++++++++
 inventory-server/src/main/java/com/yuanchu/mom/pojo/Sale.java                    |    9 -
 12 files changed, 319 insertions(+), 29 deletions(-)

diff --git a/framework/src/main/java/com/yuanchu/mom/utils/JsonUtil.java b/framework/src/main/java/com/yuanchu/mom/utils/JsonUtil.java
new file mode 100644
index 0000000..2327161
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/JsonUtil.java
@@ -0,0 +1,54 @@
+package com.yuanchu.mom.utils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+
+import java.text.SimpleDateFormat;
+
+/**
+ * @Author 寮犲
+ */
+public class JsonUtil {
+
+	private static ObjectMapper JSON_MAPPER = new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+	static {
+		JSON_MAPPER.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
+		JSON_MAPPER.registerModule(new JavaTimeModule());
+	}
+
+	/**
+	 * json杞崲瀵瑰簲瀹炰綋
+	 * @param json
+	 * @param clazz
+	 * @param <T>
+	 * @return
+	 */
+	public static <T> T jsonToPojo(String json, Class<T> clazz){
+		T t=null;
+		try {
+			t=JSON_MAPPER.readValue(json,clazz);
+		} catch (JsonProcessingException e) {
+			e.printStackTrace();
+		}
+		return t;
+	}
+
+	/**
+	 * 瀹炰綋杞崲鎴恓son瀛楃
+	 * @param t
+	 * @param <T>
+	 * @return
+	 */
+	public static <T> String jsonToString(T t){
+		String result=null;
+		try {
+			result=JSON_MAPPER.writeValueAsString(t);
+		} catch (JsonProcessingException e) {
+			e.printStackTrace();
+		}
+		return result;
+	}
+
+}
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/Task/DataPullTask.java b/inventory-server/src/main/java/com/yuanchu/mom/Task/DataPullTask.java
new file mode 100644
index 0000000..d28113e
--- /dev/null
+++ b/inventory-server/src/main/java/com/yuanchu/mom/Task/DataPullTask.java
@@ -0,0 +1,62 @@
+package com.yuanchu.mom.Task;
+
+import cn.hutool.core.date.DateUtil;
+import com.yuanchu.mom.pojo.Sale;
+import com.yuanchu.mom.pojo.SaleMaterial;
+import com.yuanchu.mom.service.SaleMaterialService;
+import com.yuanchu.mom.service.SaleService;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Component
+public class DataPullTask {
+
+    @Resource
+    SaleService saleService;
+
+    @Resource
+    SaleMaterialService saleMaterialService;
+
+    @Scheduled(cron = "0 0 4 * * ?") // 姣忓ぉ鍑屾櫒4鐐硅Е鍙�
+    public void pullDataFromOtherSystem() {
+        //鑾峰彇涓婚攢鍞暟鎹�
+        List<Map<String, Object>> order = SyncOrder.getMainOrder("2023-08-01 10:00:00 ");
+        List<Sale> list = order.stream().map(orde -> {
+            Sale sale = new Sale();
+            sale.setOrderNumber(orde.get("orderNo").toString());//璁㈠崟缂栧彿
+            sale.setCode(String.valueOf(orde.get("customerContractNumber")));//瀹㈡埛鍚堝悓缂栧彿
+            sale.setName(orde.get("projectName").toString());//宸ョ▼鍚嶇О
+            sale.setProname(orde.get("customerName").toString());//瀹㈡埛鍚嶇О
+            sale.setOrderName(orde.get("createdName").toString());//涓嬪崟浜�
+            sale.setSaleman(orde.get("salesmanName").toString());//涓氬姟鍛�
+            sale.setDelTime(DateUtil.parseDate(orde.get("wantedDeliveryDate").toString()));//浜よ揣鏃ユ湡
+            sale.setCreateTime(DateUtil.parseDate(orde.get("orderDate").toString()));//涓嬪崟鏃ユ湡
+            sale.setNote(String.valueOf(orde.get("comment")));//澶囨敞
+            return sale;
+        }).collect(Collectors.toList());
+        saleService.saveBatch(list);
+        for (Sale sale : list) {
+            List<Map<String, Object>> innerOrder = SyncOrder.getInnerOrder("2023-08-01 10:00:00", sale.getOrderNumber());
+            List<SaleMaterial> saleMaterials = innerOrder.stream().map(inorder -> {
+                SaleMaterial saleMaterial = new SaleMaterial();
+                saleMaterial.setName(inorder.get("productName").toString()); //浜у搧鍚嶇О
+                saleMaterial.setSpecifications(inorder.get("specificationModel").toString()); //浜у搧瑙勬牸鍨嬪彿
+                saleMaterial.setUnit(inorder.get("unit").toString());   //鍗曚綅
+                saleMaterial.setNumber((int) Double.parseDouble(inorder.get("quantity").toString()));  //鏁伴噺
+                saleMaterial.setPrice(inorder.get("unitPriceInclTax").toString());  //鍗曚环
+                saleMaterial.setSaleId(sale.getId());  //鍏宠仈 閿�鍞崟id
+                saleMaterial.setAdress(String.valueOf(inorder.get("shippingAddress")));  //鏀惰揣鍦板潃
+                saleMaterial.setUsername(String.valueOf(inorder.get("receivingContact")));  //鑱旂郴浜�
+                saleMaterial.setPhone(String.valueOf(inorder.get("receivingContactPhone")));  //鎵嬫満鍙�
+                return saleMaterial;
+            }).collect(Collectors.toList());
+            saleMaterialService.saveBatch(saleMaterials);
+        }
+    }
+}
\ No newline at end of file
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/Task/SyncOrder.java b/inventory-server/src/main/java/com/yuanchu/mom/Task/SyncOrder.java
new file mode 100644
index 0000000..e44997f
--- /dev/null
+++ b/inventory-server/src/main/java/com/yuanchu/mom/Task/SyncOrder.java
@@ -0,0 +1,72 @@
+package com.yuanchu.mom.Task;
+
+
+import cn.hutool.http.HttpRequest;
+import com.yuanchu.mom.utils.JsonUtil;
+import com.yuanchu.mom.vo.Result;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/9/19
+ */
+public class SyncOrder {
+
+    private static final String TOKEN_URL="http://192.168.18.16:9999/auth/oauth/token";
+
+    private static final String GET_ORDER_MAIN_URL="http://192.168.18.16:9999/order/otcService/getOrderInfoForHyxtMes";
+
+    private static final String GET_ORDER_INNER_URL="http://192.168.18.16:9999/order/otcService/getOrderLineForHyxtMes";
+
+    private static final Map<String, String> GET_TOKEN_HEADER=new HashMap<>(2);
+
+    private static final Map<String, Object>USER_INFO=new HashMap<>(4);
+
+    static {
+        GET_TOKEN_HEADER.put("Authorization","Basic cGlnOnBpZw==");
+        GET_TOKEN_HEADER.put("Content-Type","application/x-www-form-urlencoded");
+
+
+        USER_INFO.put("username","external_interface_hyxt_mes");
+        USER_INFO.put("password","uCc+u3iP83WhO2dAU+5HUkCgfINnKfrHXMT/lwI/1f0=");
+        USER_INFO.put("scope","server");
+        USER_INFO.put("grant_type","password");
+    }
+
+    private static String getToken(){
+        String body = HttpRequest.post(TOKEN_URL)
+                .headerMap(GET_TOKEN_HEADER, true)
+                .form(USER_INFO)//琛ㄥ崟鍐呭
+                .timeout(20000)//瓒呮椂锛屾绉�
+                .execute().body();
+        return String.valueOf(JsonUtil.jsonToPojo(body, Map.class).get("access_token"));
+    }
+
+    public static List<Map<String, Object>> getMainOrder(String time){
+        Map<String,Object> orderCondition = new HashMap<String,Object>();
+        orderCondition.put("selectTime", time);
+        String result = HttpRequest.get(GET_ORDER_MAIN_URL)
+                .header("Authorization", "Bearer " + getToken())
+                .form(orderCondition)
+                .execute().body();
+        List<Map<String, Object>>list = JsonUtil.jsonToPojo(JsonUtil.jsonToString(JsonUtil.jsonToPojo(result,Result.class).getData()),List.class);
+        return list.stream().filter(l-> Objects.equals(l.get("status"),"宸蹭笅杈�")).collect(Collectors.toList());
+    }
+
+    public static List<Map<String, Object>> getInnerOrder(String time,String orderNo){
+        Map<String,Object> orderCondition = new HashMap<String,Object>();
+        orderCondition.put("selectTime", time);
+        orderCondition.put("orderNo",orderNo);
+        String result = HttpRequest.get(GET_ORDER_INNER_URL)
+                .header("Authorization", "Bearer " + getToken())
+                .form(orderCondition)
+                .execute().body();
+        List<Map<String, Object>>list = JsonUtil.jsonToPojo(JsonUtil.jsonToString(JsonUtil.jsonToPojo(result,Result.class).getData()),List.class);
+        return list;
+    }
+}
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java b/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java
index 80fb37c..572c0c4 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java
@@ -133,5 +133,10 @@
         return Result.success("瀹℃牳鎴愬姛");
     }
 
+    @ApiOperation(value = "鍚屾")
+    @PostMapping("/synchronization")
+    public Result synchronization(){
+        return Result.success(saleService.synchronization());
+    }
 
 }
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/pojo/Sale.java b/inventory-server/src/main/java/com/yuanchu/mom/pojo/Sale.java
index dbe6b3c..04c7520 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/pojo/Sale.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/pojo/Sale.java
@@ -44,15 +44,6 @@
     @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
     private String proname;
 
-    @ApiModelProperty(value = "鏀惰揣鍦板潃")
-    private String adress;
-
-    @ApiModelProperty(value = "鑱旂郴浜�")
-    private String username;
-
-    @ApiModelProperty(value = "鑱旂郴鐢佃瘽")
-    private String phone;
-
     @ApiModelProperty(value = "涓嬪崟浜�")
     private String orderName;
 
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/pojo/SaleMaterial.java b/inventory-server/src/main/java/com/yuanchu/mom/pojo/SaleMaterial.java
index 7093b4c..0765c2b 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/pojo/SaleMaterial.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/pojo/SaleMaterial.java
@@ -48,6 +48,15 @@
     @ApiModelProperty(value = "鍗曚环")
     private String price;
 
+    @ApiModelProperty(value = "鏀惰揣鍦板潃")
+    private String adress;
+
+    @ApiModelProperty(value = "鑱旂郴浜�")
+    private String username;
+
+    @ApiModelProperty(value = "鑱旂郴鐢佃瘽")
+    private String phone;
+
     @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
     private Integer state;
 
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleDto.java b/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleDto.java
index a97829f..04d32db 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleDto.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleDto.java
@@ -36,21 +36,6 @@
     @JsonSerialize
     private String proname;
 
-    //鏀惰揣鍦板潃
-    @NotBlank(message = "鏀惰揣鍦板潃涓嶈兘涓虹┖")
-    @JsonSerialize
-    private String adress;
-
-    //鑱旂郴浜�
-    @NotBlank(message = "鑱旂郴浜轰笉鑳戒负绌�")
-    @JsonSerialize
-    private String username;
-
-    //鑱旂郴鐢佃瘽
-    @NotBlank(message = "鑱旂郴鐢佃瘽涓嶈兘涓虹┖")
-    @JsonSerialize
-    private String phone;
-
     //涓嬪崟浜�
     @JsonSerialize
     @NotBlank(message = "涓嬪崟浜轰笉鑳戒负绌�")
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleMaterialDto.java b/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleMaterialDto.java
index 889fd6d..0b45e74 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleMaterialDto.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleMaterialDto.java
@@ -32,7 +32,7 @@
     private String unit;
 
     //鏁伴噺
-    @NotBlank(message = "鏁伴噺涓嶈兘涓虹┖")
+    @NotNull(message = "鏁伴噺涓嶈兘涓虹┖")
     @JsonSerialize
     private Integer number;
 
@@ -40,4 +40,19 @@
     @NotBlank(message = "鍗曚环涓嶈兘涓虹┖")
     @JsonSerialize
     private String price;
+
+    //鏀惰揣鍦板潃
+    @NotBlank(message = "鏀惰揣鍦板潃涓嶈兘涓虹┖")
+    @JsonSerialize
+    private String adress;
+
+    //鑱旂郴浜�
+    @NotBlank(message = "鑱旂郴浜轰笉鑳戒负绌�")
+    @JsonSerialize
+    private String username;
+
+    //鑱旂郴鐢佃瘽
+    @NotBlank(message = "鑱旂郴鐢佃瘽涓嶈兘涓虹┖")
+    @JsonSerialize
+    private String phone;
 }
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java b/inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java
index d583655..94453b6 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java
@@ -77,4 +77,10 @@
      * @return
      */
     ConsignmentDto1 selSale(String orderNumber);
+
+    /**
+     * 鍚屾璁㈠崟
+     * @return
+     */
+    String synchronization();
 }
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
index 3e7a1d7..956c217 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
@@ -1,8 +1,10 @@
 package com.yuanchu.mom.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.Task.SyncOrder;
 import com.yuanchu.mom.mapper.SaleMaterialMapper;
 import com.yuanchu.mom.pojo.Sale;
 import com.yuanchu.mom.mapper.SaleMapper;
@@ -12,6 +14,7 @@
 import com.yuanchu.mom.pojo.dto.SaleDto;
 import com.yuanchu.mom.pojo.dto.SaleMaterialDto;
 import com.yuanchu.mom.pojo.vo.SaleVo;
+import com.yuanchu.mom.service.SaleMaterialService;
 import com.yuanchu.mom.service.SaleService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yuanchu.mom.vo.Result;
@@ -36,6 +39,9 @@
 
     @Resource
     SaleMapper saleMapper;
+
+    @Resource
+    SaleMaterialService saleMaterialService;
 
     @Resource
     SaleMaterialMapper saleMaterialMapper;
@@ -113,7 +119,7 @@
         List<SaleMaterialDto> saleMaterialList = saleVo.getSaleMaterialList();
         // 浣跨敤鍝堝笇闆嗗悎鏉ュ垽鏂槸鍚﹀瓨鍦ㄧ浉鍚屽瓧娈靛�肩粍鍚�
         Set<String> seen = new HashSet<>();
-        for (SaleMaterialDto saleMaterial: saleMaterialList) {
+        for (SaleMaterialDto saleMaterial : saleMaterialList) {
             String key = saleMaterial.getName() + "," + saleMaterial.getSpecifications();
             if (seen.contains(key)) {
                 return "鍚屼竴涓骇鍝佺殑瑙勬牸鍨嬪彿涓嶈兘鐩稿悓";
@@ -176,11 +182,51 @@
                 .orderCode(orderNumber)
                 .customerCode(sale.getCode())
                 .proname(sale.getProname())
-                .adress(sale.getAdress())
-                .username(sale.getUsername())
-                .phone(sale.getPhone())
+                //.adress(sale.getAdress())
+                //.username(sale.getUsername())
+                //.phone(sale.getPhone())
                 .messages(dto2List)
                 .build();
         return consignmentDto1;
     }
+
+    //鍚屾閿�鍞暟鎹�
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String synchronization() {
+        //鑾峰彇涓婚攢鍞暟鎹�
+        List<Map<String, Object>> order = SyncOrder.getMainOrder("2023-08-01 10:00:00 ");
+        List<Sale> list = order.stream().map(orde -> {
+            Sale sale = new Sale();
+            sale.setOrderNumber(orde.get("orderNo").toString());//璁㈠崟缂栧彿
+            sale.setCode(String.valueOf(orde.get("customerContractNumber")));//瀹㈡埛鍚堝悓缂栧彿
+            sale.setName(orde.get("projectName").toString());//宸ョ▼鍚嶇О
+            sale.setProname(orde.get("customerName").toString());//瀹㈡埛鍚嶇О
+            sale.setOrderName(orde.get("createdName").toString());//涓嬪崟浜�
+            sale.setSaleman(orde.get("salesmanName").toString());//涓氬姟鍛�
+            sale.setDelTime(DateUtil.parseDate(orde.get("wantedDeliveryDate").toString()));//浜よ揣鏃ユ湡
+            sale.setCreateTime(DateUtil.parseDate(orde.get("orderDate").toString()));//涓嬪崟鏃ユ湡
+            sale.setNote(String.valueOf(orde.get("comment")));//澶囨敞
+            return sale;
+        }).collect(Collectors.toList());
+        this.saveBatch(list);
+        for (Sale sale : list) {
+            List<Map<String, Object>> innerOrder = SyncOrder.getInnerOrder("2023-08-01 10:00:00", sale.getOrderNumber());
+            List<SaleMaterial> saleMaterials = innerOrder.stream().map(inorder -> {
+                SaleMaterial saleMaterial = new SaleMaterial();
+                saleMaterial.setName(inorder.get("productName").toString()); //浜у搧鍚嶇О
+                saleMaterial.setSpecifications(inorder.get("specificationModel").toString()); //浜у搧瑙勬牸鍨嬪彿
+                saleMaterial.setUnit(inorder.get("unit").toString());   //鍗曚綅
+                saleMaterial.setNumber((int) Double.parseDouble(inorder.get("quantity").toString()));  //鏁伴噺
+                saleMaterial.setPrice(inorder.get("unitPriceInclTax").toString());  //鍗曚环
+                saleMaterial.setSaleId(sale.getId());  //鍏宠仈 閿�鍞崟id
+                saleMaterial.setAdress(String.valueOf(inorder.get("shippingAddress")));  //鏀惰揣鍦板潃
+                saleMaterial.setUsername(String.valueOf(inorder.get("receivingContact")));  //鑱旂郴浜�
+                saleMaterial.setPhone(String.valueOf(inorder.get("receivingContactPhone")));  //鎵嬫満鍙�
+                return saleMaterial;
+            }).collect(Collectors.toList());
+            saleMaterialService.saveBatch(saleMaterials);
+        }
+        return "鍚屾鎴愬姛!";
+    }
 }
diff --git a/system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java b/system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java
index e38aeea..cdc5971 100644
--- a/system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java
+++ b/system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java
@@ -4,9 +4,11 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.AutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 @SpringBootApplication
 @MapperScan("com.yuanchu.mom.mapper")// 鎵弿Mybatis涓殑mapper鍖�
+@EnableScheduling
 public class SystemRunApplication {
 
     public static void main(String[] args) {
diff --git a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
index f048138..8db80aa 100644
--- a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
+++ b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
@@ -1,13 +1,56 @@
 package com.yuanchu.mom;
 
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import com.yuanchu.mom.Task.SyncOrder;
+import com.yuanchu.mom.pojo.Sale;
+import com.yuanchu.mom.pojo.SaleMaterial;
+import com.yuanchu.mom.vo.Result;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @SpringBootTest
 class SystemRunApplicationTest {
 
     @Test
     void contextLoads() {
+        List<Map<String, Object>> order = SyncOrder.getMainOrder("2023-08-01 10:00:00 ");
+        List<Sale> list = order.stream().map(orde -> {
+            Sale sale = new Sale();
+            sale.setOrderNumber(orde.get("orderNo").toString());//璁㈠崟缂栧彿
+            sale.setCode(String.valueOf(orde.get("customerContractNumber")));//瀹㈡埛鍚堝悓缂栧彿
+            sale.setName(orde.get("projectName").toString());//宸ョ▼鍚嶇О
+            sale.setProname(orde.get("customerName").toString());//瀹㈡埛鍚嶇О
+            sale.setOrderName(orde.get("createdName").toString());//涓嬪崟浜�
+            sale.setSaleman(orde.get("salesmanName").toString());//涓氬姟鍛�
+            sale.setDelTime(DateUtil.parseDate(orde.get("wantedDeliveryDate").toString()));//浜よ揣鏃ユ湡
+            sale.setCreateTime(DateUtil.parseDate(orde.get("orderDate").toString()));//涓嬪崟鏃ユ湡
+            sale.setNote(String.valueOf(orde.get("comment")));//澶囨敞
+            return sale;
+        }).collect(Collectors.toList());
+        //System.out.println(list);
 
+        for (Sale sale : list) {
+            List<Map<String, Object>> innerOrder = SyncOrder.getInnerOrder("2023-08-01 10:00:00", sale.getOrderNumber());
+            List<SaleMaterial> saleMaterials = innerOrder.stream().map(inorder -> {
+                SaleMaterial saleMaterial = new SaleMaterial();
+                saleMaterial.setName(inorder.get("productName").toString()); //浜у搧鍚嶇О
+                saleMaterial.setSpecifications(inorder.get("specificationModel").toString()); //浜у搧瑙勬牸鍨嬪彿
+                saleMaterial.setUnit(inorder.get("unit").toString());   //鍗曚綅
+                saleMaterial.setNumber((int)Double.parseDouble(inorder.get("quantity").toString()));  //鏁伴噺
+                saleMaterial.setPrice(inorder.get("unitPriceInclTax").toString());  //鍗曚环
+                saleMaterial.setSaleId(sale.getId());  //鍏宠仈 閿�鍞崟id
+                saleMaterial.setAdress(String.valueOf(inorder.get("shippingAddress")));  //鏀惰揣鍦板潃
+                saleMaterial.setUsername(String.valueOf(inorder.get("receivingContact")));  //鑱旂郴浜�
+                saleMaterial.setPhone(String.valueOf(inorder.get("receivingContactPhone")));  //鎵嬫満鍙�
+                return saleMaterial;
+            }).collect(Collectors.toList());
+            System.out.println(saleMaterials);
+        }
     }
 }

--
Gitblit v1.9.3