소스 검색

风格服饰采购订单修改及发起拆分

fyz 1 개월 전
부모
커밋
526ef8fc08

+ 12 - 8
mjava-fenggefushi/src/main/java/com/malk/fenggefushi/controller/HeiHuOrderController.java

@@ -98,15 +98,19 @@ public class HeiHuOrderController {
     @PostMapping("/test12")
     @Scheduled(cron = "0 */5 * * * ?")
     McR purchaseSchedule(){
-        return McR.success(huOrderService.purchaseSchedule());
-    }
+        List<Map<String, Object>> dataList = huOrderService.queryAllPurchase();
 
-    /*todo:定时抓取修改采购订单*/
-    @SneakyThrows
-    @PostMapping("/testUpdate")
-    @Scheduled(cron = "0 3,8 * * * ?")
-    McR purchaseUpdateSchedule(){
-        return McR.success(huOrderService.purchaseUpdateSchedule());
+        return McR.success(huOrderService.purchaseSchedule(dataList));
     }
 
+//    /*todo:定时抓取修改采购订单*/
+//    @SneakyThrows
+//    @PostMapping("/testUpdate")
+//    @Scheduled(cron = "0 3,8 * * * ?")
+//    McR purchaseUpdateSchedule(){
+//        log.info("开始执行定时抓取修改后的采购订单数据");
+//        System.out.println("开始执行定时抓取修改后的采购订单数据");
+//        return McR.success(huOrderService.purchaseUpdateSchedule());
+//    }
+
 }

+ 6 - 1
mjava-fenggefushi/src/main/java/com/malk/fenggefushi/service/HeiHuOrderService.java

@@ -7,6 +7,7 @@ import com.malk.server.common.McR;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -42,7 +43,11 @@ public interface HeiHuOrderService {
     String getProductColor(@RequestParam List list) throws JacksonException;
 
     /*采购订单定时同步*/
-    McR purchaseSchedule() throws JacksonException;
+    McR purchaseSchedule(List<Map<String, Object>> dataList) throws JacksonException;
+
+    List<Map<String, Object>> queryAllPurchase();
+
     McR purchaseUpdateSchedule() throws JacksonException;
 
+
 }

+ 123 - 72
mjava-fenggefushi/src/main/java/com/malk/fenggefushi/service/Impl/HeiHuOrderServiceImpl.java

@@ -5,13 +5,10 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.core.JacksonException;
-import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.malk.fenggefushi.entity.Order;
 import com.malk.fenggefushi.service.HeiHuOrderService;
-import com.malk.fenggefushi.test.test;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.aliwork.YDSearch;
@@ -23,7 +20,6 @@ import com.malk.utils.UtilHttp;
 import com.malk.utils.UtilMap;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
-import org.checkerframework.checker.fenum.qual.SwingBoxOrientation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -32,7 +28,6 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
-import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -432,8 +427,8 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
                 row.put("textField_mhsj6gtq",productDescription);//todo:产品描述
                 JSONArray array1 = detail.getJSONArray("customFieldValues");
                 color = array1.stream()
-                                .map(obj -> (JSONObject) obj)
-                                        .filter(item -> item.getIntValue("fieldId") == 82259)
+                        .map(obj -> (JSONObject) obj)
+                        .filter(item -> item.getIntValue("fieldId") == 82259)
                         .map(item -> item.getString("value"))
                         .findFirst()
                         .orElse(null);
@@ -1002,76 +997,47 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
         return colorValue;
     }
 
+    @SneakyThrows
     @Override
-    public McR purchaseSchedule() throws JacksonException {
+    public McR purchaseSchedule(List<Map<String, Object>> dataList) {
         HashMap header = new HashMap();
         header.put("X-AUTH", HeiHuAccessToken().getData().toString());
         header.put("Content-Type", "application/json");
         String targetValue = "合同确认,提交审批";
-//        String targetValue1 = "合同修改,修改审批";
-        Map<String, List<String>> purchaserOrderCodes = new HashMap<>();
-
-        int pageNum = 1;
-        int pageSize = 100;
-        boolean hasMoreData = true;
-
-        while (hasMoreData) {
-            HashMap body = new HashMap();
-            Map<String, Integer> page = new HashMap<>();
-            page.put("pageNum", pageNum);
-            page.put("pageSize", pageSize);
-            List<Integer> status = Arrays.asList(1);
-            body.put("page", page);
-            body.put("status", status);
-
-            String doPost = UtilHttp.doPost("https://liteweb.blacklake.cn/api/dytin/external/purchaseOrder/queryList2", header, null, body);//查询采购订单
-
-            ObjectMapper mapper = new ObjectMapper();
-            Map<String, Object> response = mapper.readValue(doPost, Map.class);
+        String targetValueUpdate = "合同修改,修改审批";
 
-            if (!"01000000".equals(response.get("code"))) {
-                System.out.println("请求失败: " + response.get("msg"));
-                break;
-            }
+        // 定义一个字符串集合,默认包含两个值:"默认值1"、"默认值2"
+        List<String> targetValues = new ArrayList() {{
+            add("合同确认,提交审批");
+            add("合同修改,修改审批");
+        }};
+        Map<String, List<String>> purchaserOrderCodes = new HashMap<>();
 
-            List<Map<String, Object>> dataList = (List<Map<String, Object>>) response.get("data");
-            if (dataList != null) {
-                for (Map<String, Object> item : dataList) {
-                    String purchaserName = (String) item.get("purchaserName");
-                    if (purchaserName == null) purchaserName = "未知";
 
-                    boolean hasTargetStatus = false;
-                    List<Map<String, Object>> customFieldValues = (List<Map<String, Object>>) item.get("customFieldValues");
-                    if (customFieldValues != null) {
-                        for (Map<String, Object> field : customFieldValues) {
-//                            if (targetValue.equals(field.get("value") ) || targetValue1.equals(field.get("value"))) {
-                            if (targetValue.equals(field.get("value"))) {
-                                hasTargetStatus = true;
-                                break;
+        if (ObjectUtil.isNotNull(dataList) && dataList.size() > 0) {
+            for (Map<String, Object> item : dataList) {
+                String purchaserName = (String) item.get("purchaserName");
+                if (purchaserName == null) purchaserName = "未知";
+
+//                boolean hasTargetStatus = false;
+                List<Map<String, Object>> customFieldValues = (List<Map<String, Object>>) item.get("customFieldValues");
+                if (customFieldValues != null) {
+                    for (Map<String, Object> field : customFieldValues) {
+                        if (targetValue.equals(field.get("value") ) || targetValueUpdate.equals(field.get("value"))) {
+                            System.out.println("合同状态类型:"+field.get("value"));
+//                        if (targetValue.equals(field.get("value"))) {
+//                            hasTargetStatus = true;
+                            String orderCode = (String) item.get("orderCode");
+                            if (orderCode != null) {
+                                purchaserOrderCodes.computeIfAbsent(purchaserName + "-" + field.get("value"), k -> new ArrayList<>()).add(orderCode);
                             }
-                        }
-                    }
-
-                    if (hasTargetStatus) {
-                        String orderCode = (String) item.get("orderCode");
-                        if (orderCode != null) {
-                            purchaserOrderCodes.computeIfAbsent(purchaserName, k -> new ArrayList<>()).add(orderCode);
+                            break;
                         }
                     }
                 }
 
-                hasMoreData = dataList.size() >= pageSize;
-            } else {
-                hasMoreData = false;
             }
 
-            pageNum++;
-
-            try {
-                Thread.sleep(200);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
         }
 
         // 输出所有采购员的待审批订单
@@ -1089,19 +1055,20 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
 
             // 输出每个采购员的情况
             for (Map.Entry<String, List<String>> entry : purchaserOrderCodes.entrySet()) {
-                String purchaserName = entry.getKey();
+                String[] split = entry.getKey().split("-");
+                String purchaserName = split[0];
+                String type = split[1];
                 List<String> orderCodes = entry.getValue();
                 int orderCount = orderCodes.size();
 
                 System.out.println("采购员: " + purchaserName);
                 System.out.println("待审批订单数量: " + orderCount);
+                System.out.println("审批类型: " + type);
 
                 if (orderCount > 1) {
                     System.out.println("⚠️  注意:该采购员有 " + orderCount + " 个待审批订单");
                 }
-
                 System.out.println("订单编号: " + String.join(", ", orderCodes));
-                System.out.println();
             }
 
             // 按订单数量排序输出
@@ -1109,8 +1076,11 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
             purchaserOrderCodes.entrySet().stream()
                     .sorted((e1, e2) -> Integer.compare(e2.getValue().size(), e1.getValue().size()))
                     .forEach(entry -> {
-                        String purchaserName = entry.getKey();
+                        String[] split = entry.getKey().split("-");
+                        String purchaserName = split[0];
+                        String type = split[1];
                         List<String> orderCodes = entry.getValue();
+
                         System.out.println(purchaserName + " (" + orderCodes.size() + "个): " +
                                 String.join(", ", orderCodes));
 
@@ -1128,13 +1098,16 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
 
                         // ========== 修改点2:为每个订单创建临时存储列表 ==========
                         // 用于暂存每个订单的明细数据,等计算出毛利率后再决定添加到哪个列表
-                        Map<String, List<Map<String, String>>> tempOrderDataMap = new HashMap<>();
+//                        Map<String, List<Map<String, String>>> tempOrderDataMap = new HashMap<>();
                         // 用于存储每个订单的汇总数据,用于计算毛利率
-                        Map<String, Map<String, Double>> orderSummaryForMlv = new HashMap<>();
+//                        Map<String, Map<String, Double>> orderSummaryForMlv = new HashMap<>();
+                        List<String> oldIds = new ArrayList<>();
 
                         for (String orderCode : orderCodes) {
                             System.out.println("正在处理订单: " + orderCode);
-
+                            if (type.equals(targetValueUpdate)){
+                                oldIds.add(orderCode);
+                            }
                             // ========== 修改点3:为当前订单创建临时数据存储 ==========
                             List<Map<String, String>> currentOrderRows = new ArrayList<>();
                             double orderTotalSalesAmount = 0.0;
@@ -1318,6 +1291,33 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
                                 System.out.println("订单 " + orderCode + " 归类到低毛利率审批(<15%)");
                             }
                         }
+                        List<Map<String, Object>> oldList = new ArrayList<>();
+                        if (type.equals(targetValueUpdate)){
+                            oldIds.forEach(h->{
+                                List<Map> oldDataList = ydService.queryFormData_all(YDParam.builder()
+                                        .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+                                        .formUuid("FORM-278D56A5065641F8AC95BCA0A8CE8447D8QY")
+                                        .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_mmx9gyct", h)))
+                                        .build());
+                                if (ObjectUtil.isNotNull(oldDataList) && oldDataList.size()>0){
+                                    List<Map> sonList = ydService.queryDetails(YDParam.builder()
+                                            .appType(ydConf.getAppType()).systemToken(ydConf.getSystemToken())
+                                            .formInstanceId(UtilMap.getString(oldDataList.get(0),"textField_mmx9gycu"))
+                                            .formUuid("FORM-3A54B12BE3D241218A75242B935F2987YWV2")
+                                            .tableFieldId("tableField_ml6g7k5d")
+                                            .build());
+                                    if (ObjectUtil.isNotNull(sonList) && sonList.size() > 0){
+                                        sonList.forEach(s->{
+                                            Map<String, Object> map = new HashMap<>();
+                                            TABLEFIELD_ENUM.forEach((k,v)->{
+                                                map.put(v,UtilMap.getString(s,k));
+                                            });
+                                            oldList.add(map);
+                                        });
+                                    }
+                                }
+                            });
+                        }
 
                         // ========== 修改点8:分别处理高低毛利率的审批 ==========
 
@@ -1331,6 +1331,7 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
                             //组装数据塞到采购审批单号明细
                             List<Map<String, String>> orderSummaryListHigh = calculateOrderSummary(tabledataHigh);
                             formdataHigh.put("tableField_ml7ch2pj", orderSummaryListHigh);
+                            formdataHigh.put("tableField_mmx6gata", oldList);
 
                             //数值统计毛利率
                             int szHigh = 0;
@@ -1365,6 +1366,7 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
 
                             //组装数据塞到采购明细表
                             formdataLow.put("tableField_ml6g7k5d", tabledataLow);
+                            formdataLow.put("tableField_mmx6gata", oldList);
 
                             //组装数据塞到采购审批单号明细
                             List<Map<String, String>> orderSummaryListLow = calculateOrderSummary(tabledataLow);
@@ -1403,6 +1405,56 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
 
         return null;
     }
+
+    @SneakyThrows
+    @Override
+    public List<Map<String, Object>> queryAllPurchase() {
+        HashMap header = new HashMap();
+        header.put("X-AUTH", HeiHuAccessToken().getData().toString());
+        header.put("Content-Type", "application/json");
+        boolean hasMoreData = true;
+        int pageNum = 1;
+        int pageSize = 100;
+        List<Map<String, Object>> dataList = new ArrayList<>();
+        while (hasMoreData) {
+            HashMap body = new HashMap();
+            Map<String, Integer> page = new HashMap<>();
+            page.put("pageNum", pageNum);
+            page.put("pageSize", pageSize);
+            List<Integer> status = Arrays.asList(1);
+            body.put("page", page);
+            body.put("status", status);
+
+            String doPost = UtilHttp.doPost("https://liteweb.blacklake.cn/api/dytin/external/purchaseOrder/queryList2", header, null, body);//查询采购订单
+
+            ObjectMapper mapper = new ObjectMapper();
+            Map<String, Object> response = mapper.readValue(doPost, Map.class);
+
+            if (!"01000000".equals(response.get("code"))) {
+                System.out.println("请求失败: " + response.get("msg"));
+                break;
+            }
+
+//            dataList.addAll(UtilMap.getList(response,"data"));
+            List<Map<String, Object>> mapList = (List<Map<String, Object>>) response.get("data");
+            if (ObjectUtil.isNotNull(mapList) && mapList.size() > 0){
+                dataList.addAll(mapList);
+
+                hasMoreData = mapList.size() >= pageSize;
+            } else {
+                hasMoreData = false;
+            }
+            pageNum++;
+        }
+
+        try {
+            Thread.sleep(200);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        return dataList;
+    }
+
     @Override
     public McR purchaseUpdateSchedule() throws JacksonException {
         HashMap header = new HashMap();
@@ -1414,7 +1466,6 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
         int pageNum = 1;
         int pageSize = 100;
         boolean hasMoreData = true;
-        boolean isUpdate = false;
 
         while (hasMoreData) {
             HashMap body = new HashMap();
@@ -1431,7 +1482,7 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
             Map<String, Object> response = mapper.readValue(doPost, Map.class);
 
             if (!"01000000".equals(response.get("code"))) {
-                System.out.println("请求失败: " + response.get("msg"));
+                log.info("请求失败: {}" , response.get("msg"));
                 break;
             }
 
@@ -1817,7 +1868,7 @@ public class HeiHuOrderServiceImpl implements HeiHuOrderService {
                                 }
                             });
                             //组装数据塞到采购明细表
-                            formdataHigh.put("tableField_mmx6gata", oldList);
+                            formdataLow.put("tableField_mmx6gata", oldList);
                             //组装数据塞到采购明细表
                             formdataLow.put("tableField_ml6g7k5d", tabledataLow);