chenlu
2025-07-16 c7da09314b249df0e516af98c3faa2f52ef79d50
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -16,6 +16,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Service;
import java.awt.*;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@@ -617,6 +618,7 @@
    public Map<String, Object> getSelectPrintCustomLabelSv(String type, Integer lableType, Map<String, Object> object) {
        String isRepeat = object.get("isRepeat").toString();
        Map<String, Object> map = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//最终结果
        List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class);
@@ -628,12 +630,15 @@
                    String processId = flowCard.getProcessId();
                    Integer orderNumber = flowCard.getOrderNumber();
                    String uniqueKey = processId + "|" + orderNumber;  // 用特殊字符连接防止冲突
                    // 检查是否已经处理过该 processId,如果处理过则跳过
                    if (processedKeys.contains(uniqueKey)) {
                        continue;
                    if (isRepeat=="false"){//根据mse传过来的值判断是否去除重复
                        // 检查是否已经处理过该 processId,如果处理过则跳过
                        if (processedKeys.contains(uniqueKey)) {
                            continue;
                        }
                    }
                    Map<String, Object> itemmap = new HashMap<>();
                    itemmap.put("data", flowCardMapper.getPrintCustomData(flowCard.getProcessId(), flowCard.getOrderNumber()));
                    itemmap.put("data", flowCardMapper.getPrintCustomData(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getPrintQuantity()));
                    list.add(itemmap);
                    // 将该 processId 加入已处理集合
@@ -642,7 +647,27 @@
            } else {//小片标签
                for (FlowCard flowCard : flowCardList) {
                    Map<String, Object> itemmap = new HashMap<>();
                    itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess()));
                    String orderNumber = "";
                    if (flowCard.getOrderNumber() != null) {
                        orderNumber = String.valueOf(flowCard.getOrderNumber());
                    }
                    // 判断是否为非空字符串
                    if (orderNumber != null && !orderNumber.trim().isEmpty()) {
                        itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(
                                flowCard.getProcessId(),
                                flowCard.getTechnologyNumber(),
                                flowCard.getProcess(),
                                flowCard.getOrderNumber()
                        ));
                    } else {
                        itemmap.put("data", flowCardMapper.getPrintCustomDataSemiTj(
                                flowCard.getProcessId(),
                                flowCard.getTechnologyNumber(),
                                flowCard.getProcess()
                        ));
                    }
                    list.add(itemmap);
                }
            }
@@ -678,7 +703,7 @@
            } else {//小片标签
                for (FlowCard flowCard : flowCardList) {
                    Map<String, Object> itemmap = new HashMap<>();
                    itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess()));
                    itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flowCard.getOrderNumber()));
                    list.add(itemmap);
                }
            }
@@ -851,6 +876,10 @@
    }
    public Map<String, Object> getSelectPrintCustomLabelDetailsSv(String type, Integer lableType, Map<String, Object> object) {
        String landingSequence = "";
        if (object.get("landingSequence") != null) {
            landingSequence = object.get("landingSequence").toString();
        }
        Map<String, Object> map = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//最终结果
        List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class);
@@ -891,11 +920,31 @@
            } else {//小片标签
                for (FlowCard flowCard : flowCardList) {
                    Map<String, Object> itemmap = new HashMap<>();
                    itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess()));
                    itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flowCard.getOrderNumber()));
                    list.add(itemmap);
                }
            }
        }
        if (!"1".equals(landingSequence)) {
            // 构造一个先按短边、再按长边的比较器
            Comparator<Map<String,Object>> comparator = Comparator
                    .comparingDouble((Map<String,Object> m) -> {
                        Map<String,Object> first = ((List<Map<String,Object>>)m.get("data")).get(0);
                        double w = ((Number) first.get("width")).doubleValue();
                        double h = ((Number) first.get("height")).doubleValue();
                        return Math.min(w, h);
                    })
                    .thenComparingDouble(m -> {
                        Map<String,Object> first = ((List<Map<String,Object>>)m.get("data")).get(0);
                        double w = ((Number) first.get("width")).doubleValue();
                        double h = ((Number) first.get("height")).doubleValue();
                        return Math.max(w, h);
                    });
            // 对整个 list 排序,并整体反转,短边大→前,短边相同时长边大→前
            list.sort(comparator.reversed());
        }
        map.put("data", list);
        map.put("title", flowCardMapper.getPrintTitle(type));
        return map;