zhanghl
2025-05-23 1c61a282a831cea285ddb503bdb810df9250b191
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateProcessStatServiceImpl.java
@@ -107,18 +107,18 @@
    /**
     * 保存钣金统计数据
     */
    @Transactional
    @Override
    public void savePlateProcessStat() {
    public List<ApsPlateProcessStat> computePlateProcessStat() {
        String batchNum = IdUtils.fastSimpleUUID();
        List<ApsPlateProcessStat> tempList = apsPlateProcessStatMapper.queryTempStat();
        ApsPlateProcessStat apsPlateProcessStat = tempList.stream().filter(x -> x.getWorkOrderNo().equals("MO-250409003498")).findFirst().get();
        Map<String, List<ApsPlateProcessStat>> groupByOrderNo = tempList.stream().collect(groupingBy(ApsPlateProcessStat::getWorkOrderNo));
        Boolean hasBefore = false;
        LocalDateTime now = LocalDateTime.now();
        List<ApsPlateProcessStat> totalList=new ArrayList<>();
        for (Map.Entry<String, List<ApsPlateProcessStat>> entry : groupByOrderNo.entrySet()) {
            List<ApsPlateProcessStat> statPerOrder = entry.getValue();
        ArrayList<Map.Entry<String, List<ApsPlateProcessStat>>> orderProcessRoutes = new ArrayList<>(groupByOrderNo.entrySet());
        orderProcessRoutes.stream().parallel().forEach(x->{
            boolean hasBefore = false;
            List<ApsPlateProcessStat>  statPerOrder = x.getValue();
            /*num 为根据完工时间排序出的序号,按此排序,可保证是按完工时间倒叙排列*/
            statPerOrder.sort((a, b)->a.getNum().compareTo(b.getNum()));
            ApsPlateProcessStat last=null;
@@ -182,20 +182,10 @@
                }
                last = stat;
                totalList.add(stat);
                //apsPlateProcessStatMapper.insertApsPlateProcessStat(stat);
            }
            hasBefore=false;
        }
        apsPlateProcessStatMapper.removeOtherStat(batchNum);
        if(!totalList.isEmpty()){
            int batchSize = 1000;
            totalList.forEach(x->x.setId(String.valueOf(IdUtil.getSnowflakeNextId())));
            for (int i = 0; i < totalList.size(); i += batchSize) {
                int end = Math.min(i + batchSize, totalList.size());
                List<ApsPlateProcessStat> batch = totalList.subList(i, end);
                apsPlateProcessStatMapper.batchInsertPlateStat(batch);
            }
        }
        });
        return totalList;
    }