package com.om.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.om.entity.dto.DiagnosisInfoDTO;
import com.om.entity.dto.UpStatusDto;
import com.om.entity.po.*;
import com.om.entity.vo.DiagnosisVersionVO;
import com.om.entity.vo.DignosisPageVO;
import com.om.mapper.DiagnosisVersionInfoMapper;
import com.om.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.om.utils.Result;
import com.om.utils.UserContext;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author bmmx
* @since 2024-03-06
*/
@Service
public class DiagnosisVersionInfoServiceImpl extends ServiceImpl implements IDiagnosisVersionInfoService {
@Resource
IDiagnosisVersionDescribeService describeService;
@Resource
IBrandService brandService;
@Resource
IClientService clientService;
@Resource
IUserService userService;
@Override
public Result add(DiagnosisVersionVO diagnosisVersionVO) {
DiagnosisVersionInfo info = new DiagnosisVersionInfo();
//copy了文件地址和名称,品牌名称,文件大小
BeanUtil.copyProperties(diagnosisVersionVO,info);
//获取user用户。保存当前操作人
Integer userId = UserContext.getUserId();
User user = userService.getById(userId);
info.setUsername(user.getUsername());
info.setVersionNum("1.0");
info.setStatus(0);
this.save(info);
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DiagnosisVersionInfo::getFile,diagnosisVersionVO.getFile());
queryWrapper.eq(DiagnosisVersionInfo::getDiagnosisName,diagnosisVersionVO.getDiagnosisName());
queryWrapper.eq(DiagnosisVersionInfo::getBrandCode,diagnosisVersionVO.getBrandCode());
//保存后获取
DiagnosisVersionInfo versionInfo = getOne(queryWrapper);
DiagnosisVersionDescribe describe = new DiagnosisVersionDescribe();
describe.setDiagnosisId(versionInfo.getId());
describe.setDescription(diagnosisVersionVO.getDescriptionList());
describe.setLanguage(diagnosisVersionVO.getLanguage());
describeService.save(describe);
return Result.ok();
}
@Override
public Result downloadFile(Integer id) {
return null;
}
@Override
public Result edit(DiagnosisVersionVO diagnosisVersionVO) {
Integer diaId = diagnosisVersionVO.getId();
DiagnosisVersionInfo versionInfo = getById(diaId);
versionInfo.setBrandCode(diagnosisVersionVO.getBrandCode());
versionInfo.setClientNumber(diagnosisVersionVO.getClientNums());
this.update(versionInfo,null);
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DiagnosisVersionDescribe::getDiagnosisId,diaId);
DiagnosisVersionDescribe describe = describeService.getOne(queryWrapper);
describe.setDescription(diagnosisVersionVO.getDescriptionList());
describeService.update(describe,null);
return Result.ok();
}
@Override
public Result getByUserId(Integer id) {
DiagnosisVersionInfo versionInfo = this.getById(id);
if (versionInfo == null){
return Result.ok();
}
DiagnosisInfoDTO diagnosisInfo = new DiagnosisInfoDTO();
diagnosisInfo.setId(id);
diagnosisInfo.setBrandName(versionInfo.getBrandCode());
//根据客户端信息,获取客户端名称
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Client::getName,diagnosisInfo.getClientName());
Client client = clientService.getOne(queryWrapper);
diagnosisInfo.setClientName(client.getName());
diagnosisInfo.setCreateTime(versionInfo.getCreateTime());
diagnosisInfo.setDiagnosisName(versionInfo.getDiagnosisName());
diagnosisInfo.setFileSize(versionInfo.getDiagnosisFileSize());
diagnosisInfo.setSecret(versionInfo.getCipherCode());
diagnosisInfo.setStatus(diagnosisInfo.getStatus());
diagnosisInfo.setUsername(diagnosisInfo.getUsername());
diagnosisInfo.setVersion(versionInfo.getVersionNum());
return Result.ok(diagnosisInfo);
}
@Override
public Result getPageList(DignosisPageVO dignosisPageVO) {
Page page = this.lambdaQuery()
.like(StringUtils.isNotBlank(dignosisPageVO.getQuery()),DiagnosisVersionInfo::getUsername,dignosisPageVO.getQuery())
.page(new Page<>(dignosisPageVO.getPageIndex(),dignosisPageVO.getPageSize()));
return Result.ok(page);
}
@Override
public Result release(Integer id) {
DiagnosisVersionInfo info = this.getById(id);
info.setStatus(1);
this.update(info,null);
return Result.ok();
}
@Override
public Result repeal(Integer id) {
DiagnosisVersionInfo info = this.getById(id);
info.setStatus(0);
this.update(info,null);
return Result.ok();
}
/*
目前用不上
*/
@Override
public Result upStatus(UpStatusDto upStatusDto) {
return null;
}
@Override
public Result getDesc(DiagnosisVersionVO diagnosisVersionVO) {
return null;
}
}