package com.jcdm.main.da.passingStationCollection.service.impl; 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; import cn.hutool.core.collection.CollUtil; import com.jcdm.common.constant.Constants; 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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.stereotype.Service; /** * 产品过站采集Service业务层处理 * * @author yyt * @date 2023-12-12 */ @Service public class DaPassingStationCollectionServiceImpl implements IDaPassingStationCollectionService { @Autowired private DaPassingStationCollectionMapper daPassingStationCollectionMapper; @Autowired private RmRepairRecordMapper rmRepairRecordMapper; @Autowired private BsOrderSchedulingMapper bsOrderSchedulingMapper; @Autowired private IBsOrderSchedulingService bsOrderSchedulingService; /** * 查询产品过站采集 * * @param id 产品过站采集主键 * @return 产品过站采集 */ @Override public DaPassingStationCollection selectDaPassingStationCollectionById(Long id) { return daPassingStationCollectionMapper.selectDaPassingStationCollectionById(id); } /** * 查询产品过站采集列表 * * @param daPassingStationCollection 产品过站采集 * @return 产品过站采集 */ @Override public List selectDaPassingStationCollectionList(DaPassingStationCollection daPassingStationCollection) { return daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection); } @Override public List getTopProcess(DaPassingStationCollection daPassingStationCollection) { List 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 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 collect = list.stream().collect(Collectors.groupingBy(DaPassingStationCollection::getLocationCode, Collectors.averagingLong(DaPassingStationCollection::getBeatTimeLong))); //排序 List> entryList = new ArrayList<>(collect.entrySet()); Collections.sort(entryList, new Comparator>() { @Override public int compare(Map.Entry o1, Map.Entry o2) { double v = o2.getValue() - o1.getValue(); return (int) v; } }); LinkedHashMap linkedHashMap = new LinkedHashMap(); int i = 1; double sum = 0; for (Map.Entry 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> collect = list.stream().collect(Collectors.groupingBy(DaPassingStationCollection::getLocationCode)); // for (String key:collect.keySet()){ // List 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); } /** * 新增产品过站采集 * * @param daPassingStationCollection 产品过站采集 * @return 结果 */ @Override public int insertDaPassingStationCollection(DaPassingStationCollection daPassingStationCollection) { daPassingStationCollection.setCreateTime(DateUtils.getNowDate()); return daPassingStationCollectionMapper.insertDaPassingStationCollection(daPassingStationCollection); } /** * 修改产品过站采集 * * @param daPassingStationCollection 产品过站采集 * @return 结果 */ @Override public int updateDaPassingStationCollection(DaPassingStationCollection daPassingStationCollection) { daPassingStationCollection.setUpdateTime(DateUtils.getNowDate()); return daPassingStationCollectionMapper.updateDaPassingStationCollection(daPassingStationCollection); } /** * 批量删除产品过站采集 * * @param ids 需要删除的产品过站采集主键 * @return 结果 */ @Override public int deleteDaPassingStationCollectionByIds(Long[] ids) { return daPassingStationCollectionMapper.deleteDaPassingStationCollectionByIds(ids); } /** * 删除产品过站采集信息 * * @param id 产品过站采集主键 * @return 结果 */ @Override public int deleteDaPassingStationCollectionById(Long id) { 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); } } }