zhanghl
2025-04-16 55b27f5ff82fcb1e81340bb3793ad4d5abd51072
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWeldSeamServiceImpl.java
@@ -3,6 +3,7 @@
import com.aps.common.core.utils.DateUtils;
import com.aps.common.core.utils.StringUtils;
import com.aps.common.core.utils.uuid.IdUtils;
import com.aps.common.security.utils.SecurityUtils;
import com.aps.core.domain.ApsWeldSeam;
import com.aps.core.domain.ApsWeldSeamStatistics;
import com.aps.core.domain.ApsWeldSeamTemp;
@@ -14,6 +15,7 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -100,6 +102,7 @@
        return apsWeldSeamMapper.deleteApsWeldSeamById(id);
    }
    @Transactional
    @Override
    public int confirmWeldSeam(ApsWeldSeamTemp apsWeldSeamTemp) {
        //查询临时表数据
@@ -128,16 +131,69 @@
        if (count == apsWeldSeamTemps.size()) {
            apsWeldSeamTempMapper.deleteApsWeldSeamTempByIds(ids);
        }
        /*删除旧数据*/
        apsWeldSeamStatisticsMapper.removeLastBatch();
        //插入焊缝统计表
        List<ApsWeldSeamStatistics> apsWeldSeamStatistics = apsWeldSeamMapper.weldSeamStat(apsWeldSeamTemps);
        for (int i = 0; i < apsWeldSeamStatistics.size(); i++) {
        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(WorkOrderType_Order) && x.getClassification().equals(Classification_Gas))
                            .mapToLong(ApsWeldSeamStatistics::getTotal).sum();
                    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(WorkOrderType_Order) && x.getClassification().equals(Classification_Piping))
                            .mapToLong(ApsWeldSeamStatistics::getTotal).sum();
                    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) {
                        ApsWeldSeamStatistics seamStatistics = new ApsWeldSeamStatistics();
                        seamStatistics.setId(IdUtils.fastSimpleUUID());
                        seamStatistics.setYear(year);
                        seamStatistics.setMonth(month);
                        seamStatistics.setProductionBase(basis);
                        seamStatistics.setPipingOrderRequirement(pipingOrderRequirement);
                        seamStatistics.setPipingPredictionRequirement(pipingPredictionRequirement);
                        seamStatistics.setGasOrderRequirement(gasOrderRequirement);
                        seamStatistics.setGasPredictionRequirement(gasPredictionRequirement);
                        seamStatistics.setTotal(total);
                        seamStatistics.setCreateTime(DateUtils.getNowDate());
                        seamStatistics.setCreateBy(SecurityUtils.getUsername());
                        apsWeldSeamStatisticsMapper.insertApsWeldSeamStatistics(seamStatistics);
                    }
                }
            }
        }
        /*for (int i = 0; i < apsWeldSeamStatistics.size(); i++) {
            List<ApsWeldSeamStatistics> apsWeldSeamStatistics1 = apsWeldSeamStatisticsMapper.selectApsWeldSeamStatisticsList(apsWeldSeamStatistics.get(i));
            if (apsWeldSeamStatistics1.size() > 0) {
                ApsWeldSeamStatistics apsWeldSeamStatistics2 = apsWeldSeamStatistics1.get(0);
                apsWeldSeamStatistics2.setPipingOrderRequirement(apsWeldSeamStatistics.get(i).getPipingOrderRequirement());
                apsWeldSeamStatistics2.setGasOrderRequirement(apsWeldSeamStatistics.get(i).getGasOrderRequirement());
                apsWeldSeamStatistics2.setPipingPredictionRequirement(apsWeldSeamStatistics.get(i).getPipingPredictionRequirement());
                apsWeldSeamStatistics2.setGasPredictionRequirement(apsWeldSeamStatistics.get(i).getGasPredictionRequirement());
                //预留紧急订单产出是否为空
                if (apsWeldSeamStatistics2.getReserveEmergencyOrderOutput() != null) {
                    apsWeldSeamStatistics2.setTotal(apsWeldSeamStatistics2.getPipingOrderRequirement() + apsWeldSeamStatistics2.getPipingPredictionRequirement() + apsWeldSeamStatistics2.getGasOrderRequirement() + apsWeldSeamStatistics2.getGasPredictionRequirement() + apsWeldSeamStatistics2.getReserveEmergencyOrderOutput());
@@ -165,7 +221,7 @@
                apsWeldSeamStatisticsMapper.insertApsWeldSeamStatistics(apsWeldSeamStatistics.get(i));
            }
        }
        }*/
        return 1;
    }
}