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<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);
|
}
|
|
/**
|
* 新增产品过站采集
|
*
|
* @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);
|
}
|
}
|
@Override
|
public String SelectSN(String SNcode){
|
return "1";
|
|
// --订单排产
|
// select * from bs_order_scheduling where engine_no='2V91Y-F RA182118'
|
//
|
// --工艺路线子表信息
|
// select * from bs_technology_route_child_info where route_code='H_191S'
|
//
|
// --返修数据
|
// select * from rm_repair_record where box_code='2V91Y-F RA182118'
|
//
|
// --过站采集
|
// select * from da_passing_station_collection --where sfc_code='2V91Y-F RA182118'
|
}
|
}
|