package com.jcdm.main.da.passingStationCollection.service.impl;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
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业务层处理
|
*
|
* @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();
|
String sfcCode = "";
|
List<RmRepairRecord> save = new ArrayList<>();
|
|
for (int i = 0; i < conditions.length; i++) {
|
DaPassingStationCollection result = daPassingStationCollectionMapper.selectDaPassingStationCollectionById(conditions[i]);
|
if (i==0){
|
if (ObjectUtil.isNotEmpty(result)){
|
sfcCode = result.getSfcCode();
|
rmRepairRecordMapper.deleteRmRepairRecordByCode(sfcCode);
|
}
|
}
|
if (ObjectUtil.isNotEmpty(result)){
|
RmRepairRecord rmRepairRecord = new RmRepairRecord();
|
rmRepairRecord.setBoxCode(result.getSfcCode());
|
rmRepairRecord.setProcessesCode(result.getLocationCode());
|
rmRepairRecord.setOriginalResult(result.getOutRsSign());
|
rmRepairRecord.setCreateTime(new Date());
|
rmRepairRecordMapper.insertRmRepairRecord(rmRepairRecord);
|
daPassingStationCollectionMapper.deleteDaPassingStationCollectionById(result.getId());
|
}
|
}
|
|
}
|
@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();
|
// }
|
|
public String sendMessage(String message,String userid) 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.sendInfo(jsonObject.toString(),userid);
|
return jsonObject.toString();
|
}
|
}
|