dy
2025-04-16 df4d4ead9b72c058819660d90080d58da733b2d1
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWeldSeamServiceImpl.java
@@ -17,7 +17,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 焊缝Service业务层处理
@@ -109,22 +110,23 @@
        List<ApsWeldSeamTemp> apsWeldSeamTemps = apsWeldSeamTempMapper.selectApsWeldSeamTempList(apsWeldSeamTemp);
        int count = 0;
        String[] ids = new String[apsWeldSeamTemps.size()];
        apsWeldSeamMapper.removeLastBatch();
        for (int i = 0; i < apsWeldSeamTemps.size(); i++) {
            //记录临时表id
            ids[i] = apsWeldSeamTemps.get(i).getId();
            ApsWeldSeam apsWeldSeam = new ApsWeldSeam();
            BeanUtils.copyProperties(apsWeldSeamTemps.get(i), apsWeldSeam);
            //通过工单号查询是否存在数据
            ApsWeldSeam apsWeldSeam1 = apsWeldSeamMapper.selectApsWeldSeamByWorkOrderNo(apsWeldSeam.getWorkOrderNo());
            /*ApsWeldSeam apsWeldSeam1 = apsWeldSeamMapper.selectApsWeldSeamByWorkOrderNo(apsWeldSeam.getWorkOrderNo());
            //当工单号存在则更新数据否则插入数据
            if (apsWeldSeam1!=null&&apsWeldSeam1.getId()!=null) {
                apsWeldSeam.setId(apsWeldSeam1.getId());
                apsWeldSeamMapper.updateApsWeldSeam(apsWeldSeam);
            } else {
            } else {*/
                //插入正式表,并记录
                apsWeldSeam.setId(IdUtils.fastUUID());
                apsWeldSeamMapper.insertApsWeldSeam(apsWeldSeam);
            }
            apsWeldSeam.setId(IdUtils.fastUUID());
            apsWeldSeamMapper.insertApsWeldSeam(apsWeldSeam);
            //}
            count++;
        }
        //插入数量与临时表查询一直则删除临时表数据
@@ -139,20 +141,27 @@
        List<Long> years = apsWeldSeamStatistics.stream().map(ApsWeldSeamStatistics::getYear).distinct().toList();
        List<Long> months = apsWeldSeamStatistics.stream().map(ApsWeldSeamStatistics::getMonth).distinct().toList();
        List<String> bases = apsWeldSeamStatistics.stream().map(ApsWeldSeamStatistics::getProductionBase).distinct().toList();
        /*工单类型:订单*/
        String WorkOrderType_Order="0";
        /*工单类型:预测*/
        String WorkOrderType_Prediction="1";
        /*类型:气体*/
        String Classification_Gas="0";
        /*类型:管路*/
        String Classification_Piping="1";
        for (Long year : years) {
            for (Long month : months) {
                for (String basis : bases) {
                    List<ApsWeldSeamStatistics> list = apsWeldSeamStatistics.stream()
                            .filter(x -> x.getYear().equals(year) && x.getMonth().equals(month) && x.getProductionBase().equals(basis)).toList();
                    long gasOrderRequirement = list.stream().filter(x -> x.getWorkOrderType().equals("0") && x.getClassification().equals("0"))
                    long gasOrderRequirement = list.stream().filter(x -> x.getWorkOrderType().equals(WorkOrderType_Order) && x.getClassification().equals(Classification_Gas))
                            .mapToLong(ApsWeldSeamStatistics::getTotal).sum();
                    long gasPredictionRequirement = list.stream().filter(x -> x.getWorkOrderType().equals("1") && x.getClassification().equals("0"))
                    long gasPredictionRequirement = list.stream().filter(x -> x.getWorkOrderType().equals(WorkOrderType_Prediction) && x.getClassification().equals(Classification_Gas))
                            .mapToLong(ApsWeldSeamStatistics::getTotal).sum();
                    long pipingOrderRequirement = list.stream().filter(x -> x.getWorkOrderType().equals("0") && x.getClassification().equals("1"))
                    long pipingOrderRequirement = list.stream().filter(x -> x.getWorkOrderType().equals(WorkOrderType_Order) && x.getClassification().equals(Classification_Piping))
                            .mapToLong(ApsWeldSeamStatistics::getTotal).sum();
                    long pipingPredictionRequirement = list.stream().filter(x -> x.getWorkOrderType().equals("1") && x.getClassification().equals("1"))
                    long pipingPredictionRequirement = list.stream().filter(x -> x.getWorkOrderType().equals(WorkOrderType_Prediction) && x.getClassification().equals(Classification_Piping))
                            .mapToLong(ApsWeldSeamStatistics::getTotal).sum();
                    long total = gasOrderRequirement + gasPredictionRequirement + pipingOrderRequirement + pipingPredictionRequirement;
                    if(total>0) {
@@ -217,4 +226,68 @@
        }*/
        return 1;
    }
    @Override
    public List<List<String>> weldSeamEchartsList(ApsWeldSeam apsWeldSeam) {
        Map<String, Object> params = apsWeldSeam.getParams();
        if(ObjectUtils.isNotEmpty(params)){
            String startDay = params.get("startDay").toString();
            String endDay = params.get("endDay").toString();
            List<Long> produceYears = new ArrayList<>();
            List<Long> produceMonths = new ArrayList<>();
            String startQueryYear = startDay.substring(0,4);
            String endQueryYear = endDay.substring(0,4);
            String startQueryDay = startDay.substring(6,7);
            String endQueryDay = endDay.substring(6,7);
            produceYears.add(Long.valueOf(startQueryYear));
            produceYears.add(Long.valueOf(endQueryYear));
            produceMonths.add(Long.valueOf(startQueryDay));
            produceMonths.add(Long.valueOf(endQueryDay));
            apsWeldSeam.setProduceYears(produceYears);
            apsWeldSeam.setProduceMonths(produceMonths);
        }
        List<Map> mapList =apsWeldSeamMapper.weldSeamEcharts(apsWeldSeam);
        Set monthSet=mapList.stream().map(e->e.get("produce_month").toString()).collect(Collectors.toSet());
        List monthList = new ArrayList(monthSet);
        Collections.sort(monthList);
        List<List<String>> echartsList = new ArrayList<>();
        Set<String> titleSet = new HashSet<>();
        List<String> title = new ArrayList<>(titleSet);
        title.add("product");
        mapList.forEach(item->{
            StringBuilder sb = new StringBuilder();
            sb.append(item.get("production_base"));
            sb.append("-");
            sb.append(item.get("work_order_name"));
            sb.append("-");
            sb.append(item.get("classification_name"));
            title.add(sb.toString());
        });
        echartsList.add(title);
        System.out.println(monthList);
        monthList.forEach(month->{
            List<String> table = new ArrayList<>();
            table.add(month+"月");
            for (int i=1;i<title.size();i++){
                for(int j=0;j<mapList.size();j++){
                    Map value =mapList.get(j);
                    StringBuilder sb = new StringBuilder();
                    sb.append(value.get("production_base"));
                    sb.append("-");
                    sb.append(value.get("work_order_name"));
                    sb.append("-");
                    sb.append(value.get("classification_name"));
                    if(sb.toString().equals(title.get(i)) && month.equals(value.get("produce_month").toString())){
                        table.add(value.get("total_weld_seam").toString());
                    }
                }
            }
            echartsList.add(table);
        });
        return echartsList;
    }
}