package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.whyc.constant.ExperimentType;
|
import com.whyc.dto.ExperimentConditionDTO;
|
import com.whyc.dto.Response;
|
import com.whyc.mapper.ExperimentBaseDataKZMapper;
|
import com.whyc.mapper.ExperimentMapper;
|
import com.whyc.mapper.ExperimentPointMapper;
|
import com.whyc.pojo.Experiment;
|
import com.whyc.pojo.ExperimentBaseDataKZ;
|
import com.whyc.pojo.ExperimentPoint;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
public class ExperimentService {
|
|
@Resource
|
private ExperimentMapper mapper;
|
@Resource
|
private ExperimentBaseDataKZMapper kzMapper;
|
@Resource
|
private ExperimentPointMapper pointMapper;
|
|
/**
|
* 绕组:rz,
|
* 空载:kz,
|
* 负载:fz,
|
* 升温:sw,
|
* 超速:cs,
|
* 空载反电动势:kzfdds,
|
* 振动:zd,
|
* 耐压:ny,
|
* 转动惯量:zdgl
|
* @param type
|
* @return
|
*/
|
public Response getExperimentId(String type) {
|
String id = null;
|
//查询当前试验类型的最大编号
|
QueryWrapper<Experiment> wrapper = Wrappers.query();
|
Date now = new Date();
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
|
String nowFormat = dateFormat.format(now);
|
String idLike = type.toUpperCase()+"_"+nowFormat;
|
wrapper.select("id").likeRight("id",idLike).orderByDesc("id").last(" limit 1");
|
Experiment experiment = mapper.selectOne(wrapper);
|
if(experiment!=null) {
|
int idPrefixLength = idLike.length();
|
String idSuffixStr = experiment.getId().substring(idPrefixLength);
|
Integer idSuffix = Integer.parseInt(idSuffixStr)+1;
|
//前面填充0的位数
|
int zeroCount = idSuffixStr.length()-idSuffix.toString().length();
|
StringBuilder zeroStr = new StringBuilder();
|
for (int i = 0; i < zeroCount; i++) {
|
zeroStr.append("0");
|
}
|
id = idLike+zeroStr+idSuffix;
|
}else{
|
id = idLike+"001";
|
}
|
return new Response().set(1,id);
|
|
}
|
|
@Transactional
|
public Response addKZ(Experiment experiment) {
|
//插入experiment数据
|
experiment.setCreateTime(new Date());
|
//新增初始化状态为1,正在进行
|
experiment.setStatus(1);
|
mapper.insert(experiment);
|
|
//插入experiment_base_data数据
|
kzMapper.insert((ExperimentBaseDataKZ) experiment.getBaseData());
|
|
//插入experiment_point数据
|
ExperimentPoint point = (ExperimentPoint) experiment.getPoint();
|
point.setStatus(1);
|
pointMapper.insert(point);
|
|
//TODO 插入紧急停止数据
|
|
return new Response().setMsg(1,"新增成功");
|
}
|
|
/*======History======*/
|
|
public Response<PageInfo<Experiment>> getPage(Integer pageNum, Integer pageSize, ExperimentConditionDTO condition) {
|
PageHelper.startPage(pageNum,pageSize);
|
List<Experiment> experimentList = mapper.getPage(condition);
|
//查询结果的duration是分钟,转换为 x时x分格式
|
experimentList.stream().forEach(experiment -> {
|
int duration = Integer.parseInt(experiment.getDuration());
|
//获取时
|
int hour = duration/60;
|
//获取分
|
int minute = duration%60;
|
experiment.setDuration(hour+"小时"+minute+"分");
|
});
|
|
PageInfo<Experiment> pageInfo = new PageInfo<>(experimentList);
|
return new Response<PageInfo<Experiment>>().set(1,pageInfo);
|
}
|
|
/**
|
* 检查前置条件
|
* @param type
|
* @return
|
*/
|
public Response checkPrecondition(String type) {
|
boolean status = false;
|
//空载试验
|
if (type.equals(ExperimentType.KZ.getValue())){
|
//进线屏开关状态
|
//出线屏开关状态
|
//大功率整流电源电压
|
//直流配电板A排电压
|
//直流配电板B排电压
|
//油站
|
//水站
|
//被试电机通讯
|
|
}
|
//负载试验
|
else if (type.equals(ExperimentType.FZ.getValue())){
|
|
}else{
|
|
}
|
return new Response().set(1,status);
|
}
|
}
|