春风项目四线(合箱线、总装线)
wujian
2024-03-22 9e6d86cfea30f99668cde150b49abae780239a55
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java
@@ -1,14 +1,34 @@
package com.jcdm.main.bs.orderScheduling.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.jcdm.common.utils.DateUtils;
import com.jcdm.common.utils.StringUtils;
import com.jcdm.main.bs.orderScheduling.Query.PrepareOnlineQuery;
import com.jcdm.main.bs.orderScheduling.common.Constants;
import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
import com.jcdm.main.bs.orderScheduling.mapper.BsOrderSchedulingMapper;
import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService;
import com.jcdm.main.bs.orderScheduling.vo.FollowReportVO;
import com.jcdm.main.bs.orderScheduling.vo.LineChartVO;
import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper;
import com.jcdm.main.da.paramCollection.service.impl.DaParamCollectionServiceImpl;
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * 订单排产Service业务层处理
@@ -21,6 +41,12 @@
{
    @Autowired
    private BsOrderSchedulingMapper bsOrderSchedulingMapper;
    @Resource
    private DaParamCollectionMapper daParamCollectionMapper;
    @Resource
    private DaPassingStationCollectionMapper daPassingStationCollectionMapper;
    /**
     * 查询订单排产
@@ -51,6 +77,92 @@
        return bsOrderSchedulingMapper.selectBsOrderSchedulingList(bsOrderScheduling);
    }
    @Override
    public FollowReportVO getFollowReportList(BsOrderScheduling bsOrderScheduling)
    {
        FollowReportVO vo = new FollowReportVO();
        if(bsOrderScheduling.getDateConditions()!=null){
            String[] conditions = bsOrderScheduling.getDateConditions();
            bsOrderScheduling.setStartTime(conditions[0]);
            bsOrderScheduling.setEndTime(conditions[1]);
        }
        //主表数据
        List<BsOrderScheduling> mainList = bsOrderSchedulingMapper.selectBsOrderSchedulingList(bsOrderScheduling);
        vo.setMainList(mainList);
        List<String> engineNoList = mainList.stream().map(BsOrderScheduling::getEngineNo).distinct().collect(Collectors.toList());
        List<DaParamCollection> allChildList = new ArrayList<>();
        List<DaPassingStationCollection> collect5 = new ArrayList<>();
        if (CollUtil.isNotEmpty(engineNoList)){
            allChildList = daParamCollectionMapper.getListBySfcCode(engineNoList);
            collect5 = daPassingStationCollectionMapper.getListBySfcCode(engineNoList);
        }
        if (CollUtil.isNotEmpty(allChildList)){
            //拿到所有子数据
            List<DaParamCollection> collect1 = allChildList.stream().filter(x -> Constants.DATA1.equals(x.getType())).collect(Collectors.toList());
            List<DaParamCollection> collect2 = allChildList.stream().filter(x -> Constants.DATA2.equals(x.getType())).collect(Collectors.toList());
            List<DaParamCollection> collect3 = allChildList.stream().filter(x -> Constants.DATA3.equals(x.getType())).collect(Collectors.toList());
            List<DaParamCollection> collect4 = allChildList.stream().filter(x -> Constants.DATA4.equals(x.getType())).collect(Collectors.toList());
            vo.setList1(collect1);
            vo.setList2(collect2);
            vo.setList3(collect3);
            vo.setList4(collect4);
        }
        vo.setList5(collect5);
        return vo;
    }
    @Override
    public List<LineChartVO> getOffLineNum()
    {
        List<LineChartVO> result = new ArrayList<>();
        BsOrderScheduling bsOrderScheduling =  new BsOrderScheduling();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime startTime = LocalDateTime.of(now.getYear(),now.getMonthValue(),now.getDayOfMonth(),8,0,0);
        LocalDateTime endTime = LocalDateTime.of(now.getYear(),now.getMonthValue(),now.plusDays(1).getDayOfMonth(),22,0,0);
        String s1 = startTime.format(formatter);
        String s2 = endTime.format(formatter);
        bsOrderScheduling.setStartTime(s1);
        bsOrderScheduling.setEndTime(s2);
        List<BsOrderScheduling> todayList = bsOrderSchedulingMapper.selectBsOrderSchedulingList(bsOrderScheduling);
        todayList = todayList.stream().filter(x -> ObjectUtil.isNotEmpty(x.getCvtOfflineTime())).collect(Collectors.toList());
        if (CollUtil.isNotEmpty(todayList)){
            List<String> allModel = todayList.stream().map(BsOrderScheduling::getModel).distinct().collect(Collectors.toList());
            Map<String, List<BsOrderScheduling>> collect = new HashMap<>();
            for (String s : allModel) {
                LineChartVO vo = new LineChartVO();
                List<Integer> arr = new ArrayList<>();
                vo.setName(s);
                collect = todayList.stream().filter(x -> s.equals(x.getModel())).collect(Collectors.groupingBy(item -> new SimpleDateFormat("yyyy-MM-dd HH").format(item
                        .getCvtOfflineTime())));
                Map<Integer,Integer> temp = new HashMap<>();
                if (CollUtil.isNotEmpty(collect)){
                    for (String string : collect.keySet()) {
                        int size = collect.get(string).size();
                        String s3 = string.split(StringUtils.SPACE)[1];
                        if (StringUtils.isNotEmpty(s3)){
                            int i = Integer.parseInt(s3);
                            temp.put(i+1,size);
                        }
                    }
                }
                for (int i = 8; i < 23; i++) {
                    if (i==8){
                        arr.add(0);
                    }else {
                        arr.add(temp.getOrDefault(i, 0));
                    }
                }
                vo.setData(arr);
                vo.setType("line");
                result.add(vo);
            }
        }
        return result;
    }
    /**
     * 查询合箱上线列表