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; } /** * å®ä½è½¬æ¢æjsonå符 * @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; } } 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); } } } 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; } } 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()); } } 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; 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 = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) private Integer state; 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 = "ä¸å人ä¸è½ä¸ºç©º") 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; } inventory-server/src/main/java/com/yuanchu/mom/service/SaleService.java
@@ -77,4 +77,10 @@ * @return */ ConsignmentDto1 selSale(String orderNumber); /** * åæ¥è®¢å * @return */ String synchronization(); } 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; @@ -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 "忥æå!"; } } 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) { 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); } } }