春风项目四线(合箱线、总装线)
wujian
2024-04-28 9bc5106810d7c0e6f27e904b584c9bbfb3725a19
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
@@ -1,12 +1,29 @@
package com.jcdm.main.da.passingStationCollection.service.impl;
import java.util.List;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson2.JSONObject;
import com.jcdm.common.utils.DateUtils;
import com.jcdm.common.utils.StringUtils;
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.da.passingStationCollection.domain.DaPassingStationCollection;
import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper;
import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
import com.jcdm.main.da.passingStationCollection.vo.DaPassingStationVO;
import com.jcdm.main.rm.repairRecord.domain.RmRepairRecord;
import com.jcdm.main.rm.repairRecord.mapper.RmRepairRecordMapper;
import com.jcdm.main.websocket.WebSocketServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 产品过站采集Service业务层处理
@@ -19,6 +36,15 @@
{
    @Autowired
    private DaPassingStationCollectionMapper daPassingStationCollectionMapper;
    @Autowired
    private RmRepairRecordMapper rmRepairRecordMapper;
    @Autowired
    private BsOrderSchedulingMapper bsOrderSchedulingMapper;
    @Autowired
    private IBsOrderSchedulingService bsOrderSchedulingService;
    /**
     * 查询产品过站采集
@@ -42,6 +68,96 @@
    public List<DaPassingStationCollection> selectDaPassingStationCollectionList(DaPassingStationCollection daPassingStationCollection)
    {
        return daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
    }
    @Override
    public List<DaPassingStationVO> getTopProcess(DaPassingStationCollection daPassingStationCollection)
    {
        List<DaPassingStationVO> result = new ArrayList<>();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime startTime = LocalDate.now().atStartOfDay();
        LocalDateTime endTime = LocalDate.now().plusDays(1).atStartOfDay();
        String s1 = startTime.format(formatter);
        String s2 = endTime.format(formatter);
        daPassingStationCollection.setStartTime(s1);
        daPassingStationCollection.setEndTime(s2);
        List<DaPassingStationCollection> list = daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
        //筛除节拍为空的数据
        list = list.stream().filter(x -> StringUtils.isNotEmpty(x.getBeatTime())).collect(Collectors.toList());
        //做筛选操作
        if (CollUtil.isNotEmpty(list)){
            for (DaPassingStationCollection passingStationCollection : list) {
                if (StringUtils.isNotEmpty(passingStationCollection.getBeatTime())){
                    Long aLong = Long.valueOf(passingStationCollection.getBeatTime());
                    passingStationCollection.setBeatTimeLong(aLong);
                }else {
                    passingStationCollection.setBeatTimeLong(0L);
                }
            }
            Map<String, Double> collect = list.stream().collect(Collectors.groupingBy(DaPassingStationCollection::getLocationCode, Collectors.averagingLong(DaPassingStationCollection::getBeatTimeLong)));
            //排序
            List<Map.Entry<String,Double>> entryList = new ArrayList<>(collect.entrySet());
            Collections.sort(entryList, new Comparator<Map.Entry<String, Double>>() {
                @Override
                public int compare(Map.Entry<String, Double> o1, Map.Entry<String, Double> o2) {
                    double v = o2.getValue() - o1.getValue();
                    return (int) v;
                }
            });
            LinkedHashMap<String, Double> linkedHashMap = new LinkedHashMap<String, Double>();
            int i = 1;
            double sum =  0;
            for (Map.Entry<String,Double> e : entryList
            ) {
                if (i<6){
                    sum = sum + e.getValue();
                    linkedHashMap.put(e.getKey(),e.getValue());
                    i++;
                }
            }
            //计算数据
            if (CollUtil.isNotEmpty(linkedHashMap)){
                for (String s : linkedHashMap.keySet()) {
                    DaPassingStationVO vo = new DaPassingStationVO();
                    BigDecimal divide = BigDecimal.valueOf(linkedHashMap.get(s)).divide(BigDecimal.valueOf(sum),4, RoundingMode.HALF_UP);
                    vo.setName(s);
                    vo.setValue(divide);
                    result.add(vo);
                }
            }
//            Map<String, List<DaPassingStationCollection>> collect = list.stream().collect(Collectors.groupingBy(DaPassingStationCollection::getLocationCode));
//            for (String key:collect.keySet()){
//                List<DaPassingStationCollection> list1 = collect.get(key);
//                if (CollUtil.isNotEmpty(list1)) {
//                    Double collect1 = list1.stream().collect(Collectors.averagingLong(DaPassingStationCollection::getBeatTimeLong));
//                }
//            }
        }
        return result;
    }
    /**
     * 获取首页单日累计量产数据
     * @param fieldName bs
     * @return list
     */
    @Override
    public Integer getProduceNumToday(String fieldName) {
        BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
        bsOrderScheduling.setQueryField(fieldName);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime startTime = LocalDate.now().atStartOfDay();
        LocalDateTime endTime = LocalDate.now().plusDays(1).atStartOfDay();
        String s1 = startTime.format(formatter);
        String s2 = endTime.format(formatter);
        bsOrderScheduling.setStartTime(s1);
        bsOrderScheduling.setEndTime(s2);
        return bsOrderSchedulingMapper.getProduceNumToday(bsOrderScheduling);
    }
    /**
@@ -93,4 +209,46 @@
    {
        return daPassingStationCollectionMapper.deleteDaPassingStationCollectionById(id);
    }
    @Override
    public void insertRepairRecordByIds(DaPassingStationCollection daPassingStationCollection) {
        Long[] conditions = daPassingStationCollection.getIds();
        for (int i = 0; i < conditions.length; i++) {
            DaPassingStationCollection result = daPassingStationCollectionMapper.selectDaPassingStationCollectionById(conditions[i]);
            RmRepairRecord rmRepairRecord = new RmRepairRecord();
            rmRepairRecord.setBoxCode(result.getSfcCode());
            rmRepairRecord.setProcessesCode(result.getLocationCode());
            rmRepairRecord.setOriginalResult(result.getOutRsSign());
            rmRepairRecordMapper.insertRmRepairRecord(rmRepairRecord);
        }
    }
    @Override
    public String SelectSN(String SNcode,String node) {
        try {
            Map<String, Object> params = new HashMap<>();
            params.put("SN_CODE",SNcode);
            params.put("Node",node);
            params.put("Success","");
            daPassingStationCollectionMapper.SelectSN(params);
            return (String)params.get("Success");
        } catch (Exception e) {
            return "数据查询失败!";
        }
    }
    public String sendMessage(String message) throws Exception{
        Map<String,Object> map = new HashMap<>();
        // 获取当前日期和时间
        LocalDateTime nowDateTime = LocalDateTime.now();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        System.out.println(dateTimeFormatter.format(nowDateTime));
        map.put("server_time",dateTimeFormatter.format(nowDateTime));
        map.put("server_code","200");
        map.put("server_message",message);
        JSONObject jsonObject =  new JSONObject(map);
        WebSocketServer.sendAllMessage(jsonObject.toString());
        return jsonObject.toString();
    }
}