package com.ozs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.ozs.common.core.domain.AjaxResult;
import com.ozs.common.exception.ServiceException;
import com.ozs.common.utils.StringUtils;
import com.ozs.common.utils.bean.BeanValidators;
import com.ozs.entity.BaseTerminal;
import com.ozs.entity.vo.BaseVehicleTerminalVo;
import com.ozs.mapper.BaseTerminalMapper;
import com.ozs.service.BaseTerminalService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.validation.Validator;
import java.util.Date;
import java.util.List;
/**
*
* 机车车载终端信息表 服务实现类
*
*
* @author ozs
* @since 2023-04-11
*/
@Service
public class BaseTerminalServiceImpl extends ServiceImpl implements BaseTerminalService {
@Autowired
private BaseTerminalMapper baseTerminalMapper;
@Autowired
protected Validator validator;
@Override
public IPage vehicleTerminalList(BaseVehicleTerminalVo baseVehicleTerminalleVo) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper();
if (!StringUtils.isEmptySunhh(baseVehicleTerminalleVo) && !StringUtils.isEmptySunhh(baseVehicleTerminalleVo.getTerminalCode())) {
wrapper.eq(BaseTerminal::getTerminalCode, baseVehicleTerminalleVo.getTerminalCode());
}
if (!StringUtils.isEmptySunhh(baseVehicleTerminalleVo) && !StringUtils.isEmptySunhh(baseVehicleTerminalleVo.getTerminalName())) {
wrapper.eq(BaseTerminal::getTerminalName, baseVehicleTerminalleVo.getTerminalName());
}
if (!StringUtils.isEmptySunhh(baseVehicleTerminalleVo) && !StringUtils.isEmptySunhh(baseVehicleTerminalleVo.getStatus())) {
wrapper.eq(BaseTerminal::getStatus, baseVehicleTerminalleVo.getStatus());
}
wrapper.orderByDesc(BaseTerminal::getCreateTime);
int pageNum = Integer.parseInt(baseVehicleTerminalleVo.getPageNum().toString());
int pageSize = Integer.parseInt(baseVehicleTerminalleVo.getPageSize().toString());
com.github.pagehelper.Page page = PageHelper.startPage(pageNum, pageSize)
.doSelectPage(() -> baseTerminalMapper.selectList(wrapper));
com.baomidou.mybatisplus.extension.plugins.pagination.Page pageR =
new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum, pageSize);
pageR.setRecords(page.getResult());
pageR.setTotal(page.getTotal());
return pageR;
}
@Override
public AjaxResult baseVehicleTerminalDetails(BaseVehicleTerminalVo baseVehicleTerminalVo) {
BaseTerminal baseVehicleTerminal = baseTerminalMapper.selectById(baseVehicleTerminalVo.getId());
return AjaxResult.success(baseVehicleTerminal);
}
@Override
public AjaxResult vehicleTerminalAdd(BaseTerminal baseVehicleTerminal, String userId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper();
if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalCode())) {
wrapper.eq(BaseTerminal::getTerminalCode, baseVehicleTerminal.getTerminalCode());
}
List baseVehicles = baseTerminalMapper.selectList(wrapper);
if (baseVehicles.size() > 0) {
return AjaxResult.error("车载终端编码已存在!");
}
Date date = new Date();
baseVehicleTerminal.setCreateBy(userId);
baseVehicleTerminal.setUpdateBy(userId);
baseVehicleTerminal.setCreateTime(date);
baseVehicleTerminal.setUpdateTime(date);
int insert = baseTerminalMapper.insert(baseVehicleTerminal);
if (insert > 0) {
return AjaxResult.success();
} else {
return AjaxResult.error();
}
}
@Override
public AjaxResult vehicleTerminalUpdate(BaseTerminal baseTerminal, String userId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper();
if (!StringUtils.isEmptySunhh(baseTerminal) && !StringUtils.isEmptySunhh(baseTerminal.getTerminalCode())) {
wrapper.eq(BaseTerminal::getTerminalCode, baseTerminal.getTerminalCode());
}
if (!StringUtils.isEmptySunhh(baseTerminal) && !StringUtils.isEmptySunhh(baseTerminal.getId())) {
wrapper.ne(BaseTerminal::getId, baseTerminal.getId());
}
List baseVehicles = baseTerminalMapper.selectList(wrapper);
if (baseVehicles.size() > 0) {
return AjaxResult.error("机车编码已存在!");
}
baseTerminal.setUpdateBy(userId);
baseTerminal.setUpdateTime(new Date());
int update = baseTerminalMapper.updateById(baseTerminal);
if (update > 0) {
return AjaxResult.success();
} else {
return AjaxResult.error();
}
}
@Override
public String importBaseVehicleTerminal(List accountManageList, boolean updateSupport, String userId) {
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
for (BaseTerminal baseVehicleTerminal : accountManageList) {
try {
// BaseVehicle baseVehicle = new BaseVehicle();
// BeanUtils.copyProperties(baseVehicleTerminal, baseVehicle);
// 判断机车编码是否存在
LambdaQueryWrapper lw = new LambdaQueryWrapper();
if (!StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalCode())) {
lw.eq(BaseTerminal::getTerminalCode, baseVehicleTerminal.getTerminalCode());
}
BaseTerminal baseVehicle1 = baseTerminalMapper.selectOne(lw);
if (StringUtils.isEmptySunhh(baseVehicle1)) {
BeanValidators.validateWithException(validator, baseVehicleTerminal);
baseVehicleTerminal.setStatus("在线".equals(baseVehicleTerminal.getStatusStr()) ? 1 : 2);
baseVehicleTerminal.setUpdateBy(userId);
baseVehicleTerminal.setCreateBy(userId);
Date date = new Date();
baseVehicleTerminal.setCreateTime(date);
baseVehicleTerminal.setUpdateTime(date);
int insert = baseTerminalMapper.insert(baseVehicleTerminal);
successNum++;
successMsg.append(successNum + "、终端编码 " + baseVehicleTerminal.getTerminalCode() + " 导入成功");
} else if (updateSupport) {
BeanValidators.validateWithException(validator, baseVehicleTerminal);
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper();
if (!StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalCode())) {
lambdaQueryWrapper.eq(BaseTerminal::getTerminalCode, baseVehicleTerminal.getTerminalCode());
}
BaseTerminal baseVehicle4 = baseTerminalMapper.selectOne(lambdaQueryWrapper);
if (StringUtils.isEmptySunhh(baseVehicle4)) {
baseVehicleTerminal.setUpdateBy(userId);
baseVehicleTerminal.setUpdateTime(new Date());
baseVehicleTerminal.setId(baseVehicle4.getId());
baseTerminalMapper.updateById(baseVehicleTerminal);
successNum++;
successMsg.append(successNum + "、终端编码 " + baseVehicleTerminal.getTerminalCode() + " 更新成功");
} else {
failureNum++;
failureMsg.append(failureNum + "、终端编码 " + baseVehicleTerminal.getTerminalCode() + "不存在");
}
}
} catch (Exception e) {
failureNum++;
String msg = failureNum + "、终端编码 " + baseVehicleTerminal.getTerminalCode() + " 导入失败:";
failureMsg.append(msg);
log.error(msg, e);
}
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条。");
}
return successMsg.toString();
}
@Override
public List exportBaseVehicleTerminal(BaseTerminal baseVehicleTerminal) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper();
if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalName())) {
wrapper.eq(BaseTerminal::getTerminalName, baseVehicleTerminal.getTerminalName());
}
if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalCode())) {
wrapper.eq(BaseTerminal::getTerminalCode, baseVehicleTerminal.getTerminalCode());
}
if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getStatus())) {
wrapper.eq(BaseTerminal::getStatus, baseVehicleTerminal.getStatus());
}
List baseVehicleTerminalList = baseTerminalMapper.selectList(wrapper);
for (BaseTerminal baseVehicleTerminal1 : baseVehicleTerminalList) {
baseVehicleTerminal1.setStatusStr(baseVehicleTerminal1.getStatus() == 1 ? "在线" : "离线");
}
return baseVehicleTerminalList;
}
}