package cn.lihu.jh.module.ecg.service.devrent;
|
|
import cn.lihu.jh.framework.common.pojo.CommonResult;
|
import cn.lihu.jh.framework.security.core.util.SecurityFrameworkUtils;
|
import cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo.JobRecordSaveReqVO;
|
import cn.lihu.jh.module.ecg.dal.dataobject.devmanage.DeviceDO;
|
import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordDO;
|
import cn.lihu.jh.module.ecg.dal.mysql.devmanage.DeviceMapper;
|
import cn.lihu.jh.module.ecg.dal.mysql.jobrecord.JobRecordMapper;
|
import cn.lihu.jh.module.ecg.dal.mysql.queue.QueueMapper;
|
import cn.lihu.jh.module.ecg.enums.DevRentStateEnum;
|
import cn.lihu.jh.module.ecg.enums.DevStateEnum;
|
import cn.lihu.jh.module.ecg.enums.QueueStatusEnum;
|
import org.springframework.stereotype.Service;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*;
|
import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
|
import cn.lihu.jh.framework.common.pojo.PageResult;
|
import cn.lihu.jh.framework.common.util.object.BeanUtils;
|
|
import cn.lihu.jh.module.ecg.dal.mysql.devrent.DevRentMapper;
|
|
import javax.annotation.Resource;
|
|
import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
|
|
/**
|
* 装机拆机 Service 实现类
|
*
|
* @author 芋道源码
|
*/
|
@Service
|
@Validated
|
public class DevRentServiceImpl implements DevRentService {
|
|
@Resource
|
private DevRentMapper devRentMapper;
|
|
@Resource
|
private JobRecordMapper jobRecordMapper;
|
|
@Resource
|
DeviceMapper deviceMapper;
|
|
@Resource
|
QueueMapper queueMapper;
|
|
@Override
|
public CommonResult<Long> registerOperation(DevRentSaveReqVO createReqVO) {
|
Long rent_id = createDevRent(createReqVO);
|
return CommonResult.success(rent_id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public CommonResult<Long> routineFinishOperation(RoutineFinishReqVO routineFinishReqVO) {
|
DevRentSaveReqVO createReqVO = BeanUtils.toBean(routineFinishReqVO, DevRentSaveReqVO.class);
|
|
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
|
// 同样 在预约确实时 就进入 [dev_rent] 表了
|
Long rent_id = createReqVO.getId();
|
|
List<Integer> jobTypeList = new ArrayList<Integer>();
|
jobTypeList.add( DevRentStateEnum.ROUTINE_FINISH.getState());
|
jobTypeList.add( DevRentStateEnum.ROUTINE_CANCELLED.getState());
|
JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
|
if (null == jobRecordDO) {
|
List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState());
|
if (devRentDOList.size() == 0)
|
throw exception(DEV_INSTALL_NOT_APPOINTMENT);
|
else if (devRentDOList.size() != 1) {
|
throw exception(DEV_INSTALL_EXCEPTION);
|
}
|
|
rent_id = devRentDOList.getFirst().getId();
|
createReqVO.setId( rent_id );
|
createReqVO.setState( DevRentStateEnum.ROUTINE_FINISH.getState() );
|
updateDevRent( createReqVO );
|
|
JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
|
jobRecordSaveReqVO.setRentId(rent_id);
|
jobRecordSaveReqVO.setDevId(createReqVO.getDevId());
|
jobRecordSaveReqVO.setDocId(userId);
|
jobRecordSaveReqVO.setDocName(userNickname);
|
jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
|
jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
|
jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
|
jobRecordSaveReqVO.setJobType( DevRentStateEnum.ROUTINE_FINISH.getState() );
|
jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
|
jobRecordSaveReqVO.setSummary("");
|
|
JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
|
jobRecordMapper.insert(jobRecord);
|
} else {
|
// 撤销 放弃操作
|
createReqVO.setState( DevRentStateEnum.ROUTINE_FINISH.getState() );
|
|
updateDevRent( createReqVO );
|
|
jobRecordDO.setDevId(createReqVO.getDevId());
|
jobRecordDO.setJobType( DevRentStateEnum.ROUTINE_FINISH.getState() );
|
jobRecordDO.setJobTime(createReqVO.getRentTime());
|
jobRecordDO.setRemark(createReqVO.getRemark());
|
jobRecordDO.setUpdater(String.valueOf(userId));
|
jobRecordDO.setUpdateTime(LocalDateTime.now());
|
jobRecordMapper.updateById(jobRecordDO);
|
}
|
|
// 更新..队列状态
|
queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
|
QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus());
|
|
return CommonResult.success(rent_id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public CommonResult<Long> readyOperation(DevRentSaveReqVO createReqVO) {
|
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
Long rent_id = createReqVO.getId();
|
|
// 标注设备 已领取
|
Integer ret = markDevRecieved(createReqVO.getDevId(), rent_id);
|
if (null == ret || 0 == ret) {
|
throw exception(DEVICE_NOT_FREE);
|
}
|
|
List<Integer> jobTypeList = new ArrayList<Integer>();
|
jobTypeList.add( DevRentStateEnum.READY.getState());
|
jobTypeList.add( DevRentStateEnum.READY_CANCELLED.getState());
|
JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
|
if (null == jobRecordDO) {
|
List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState());
|
if (devRentDOList.size() == 0)
|
throw exception(DEV_INSTALL_NOT_APPOINTMENT);
|
else if (devRentDOList.size() != 1) {
|
throw exception(DEV_INSTALL_EXCEPTION);
|
}
|
|
rent_id = devRentDOList.getFirst().getId();
|
createReqVO.setId( rent_id );
|
createReqVO.setState( DevRentStateEnum.READY.getState() );
|
updateDevRent( createReqVO );
|
|
JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
|
jobRecordSaveReqVO.setRentId(rent_id);
|
jobRecordSaveReqVO.setDevId(createReqVO.getDevId());
|
jobRecordSaveReqVO.setDocId(userId);
|
jobRecordSaveReqVO.setDocName(userNickname);
|
jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
|
jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
|
jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
|
jobRecordSaveReqVO.setJobType( DevRentStateEnum.READY.getState() );
|
jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
|
jobRecordSaveReqVO.setSummary("");
|
|
JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
|
jobRecordMapper.insert(jobRecord);
|
} else {
|
// 撤销 放弃操作
|
createReqVO.setState( DevRentStateEnum.READY.getState() );
|
|
updateDevRent( createReqVO );
|
|
jobRecordDO.setDevId(createReqVO.getDevId());
|
jobRecordDO.setJobType( DevRentStateEnum.READY.getState() );
|
jobRecordDO.setJobTime(createReqVO.getRentTime());
|
jobRecordDO.setRemark(createReqVO.getRemark());
|
jobRecordDO.setUpdater(String.valueOf(userId));
|
jobRecordDO.setUpdateTime(LocalDateTime.now());
|
jobRecordMapper.updateById(jobRecordDO);
|
}
|
|
// 更新..队列状态
|
queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
|
QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus());
|
|
return CommonResult.success(rent_id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public CommonResult<Long> installOperation(DevRentSaveReqVO createReqVO) {
|
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
Long rent_id = createReqVO.getId();
|
|
// 设置设备 使用中
|
Integer ret = markDevInUse(createReqVO.getDevId(), rent_id);
|
if (null == ret || 0 == ret) {
|
throw exception(DEVICE_NOT_RECEIVED);
|
}
|
|
// 检查 job_record 用于确认是否是第一次安装操作
|
List<Integer> jobTypeList = new ArrayList<Integer>();
|
jobTypeList.add( DevRentStateEnum.INSTALLED.getState());
|
jobTypeList.add( DevRentStateEnum.INSTALL_CANCELLED.getState());
|
JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
|
|
// 第一次 安装操作
|
if (null == jobRecordDO) {
|
List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.READY.getState());
|
if (devRentDOList.size() == 0)
|
throw exception(DEV_INSTALL_NOT_RECEIVED);
|
else if (devRentDOList.size() != 1) {
|
throw exception(DEV_INSTALL_EXCEPTION);
|
}
|
|
rent_id = devRentDOList.getFirst().getId();
|
createReqVO.setId( rent_id );
|
createReqVO.setState( DevRentStateEnum.INSTALLED.getState() );
|
updateDevRent( createReqVO );
|
|
JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
|
jobRecordSaveReqVO.setRentId(rent_id);
|
jobRecordSaveReqVO.setDevId(createReqVO.getDevId());
|
jobRecordSaveReqVO.setDocId(userId);
|
jobRecordSaveReqVO.setDocName(userNickname);
|
jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
|
jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
|
jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
|
jobRecordSaveReqVO.setJobType( DevRentStateEnum.INSTALLED.getState() );
|
jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
|
jobRecordSaveReqVO.setSummary("");
|
|
JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
|
jobRecordMapper.insert(jobRecord);
|
} else {
|
// 撤销 放弃操作
|
createReqVO.setState( DevRentStateEnum.INSTALLED.getState() );
|
updateDevRent( createReqVO );
|
|
jobRecordDO.setDevId(createReqVO.getDevId());
|
jobRecordDO.setJobType( DevRentStateEnum.INSTALLED.getState() );
|
jobRecordDO.setJobTime(createReqVO.getRentTime());
|
jobRecordDO.setRemark(createReqVO.getRemark());
|
jobRecordDO.setUpdater(String.valueOf(userId));
|
jobRecordDO.setUpdateTime(LocalDateTime.now());
|
jobRecordMapper.updateById(jobRecordDO);
|
}
|
|
// 更新..队列状态
|
queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
|
QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.FINISH.getStatus());
|
|
return CommonResult.success(rent_id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public Long dismantleOperation(DevRentSaveReqVO updateReqVO) {
|
updateReqVO.setState( DevRentStateEnum.DISMANTLED.getState() );
|
updateDevRent( updateReqVO );
|
Long rentId = updateReqVO.getId();
|
|
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
|
// 设备恢复到空闲
|
markDevFree( updateReqVO.getDevId(), rentId );
|
|
List<Integer> jobTypeList = new ArrayList<Integer>();
|
jobTypeList.add( DevRentStateEnum.DISMANTLED.getState());
|
JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList);
|
if (null == jobRecordDO) {
|
JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
|
jobRecordSaveReqVO.setRentId( updateReqVO.getId() );
|
jobRecordSaveReqVO.setDevId( updateReqVO.getDevId() );
|
jobRecordSaveReqVO.setDocId( userId );
|
jobRecordSaveReqVO.setDocName( userNickname );
|
jobRecordSaveReqVO.setPatId( updateReqVO.getPatId() );
|
jobRecordSaveReqVO.setPatName( updateReqVO.getPatName() );
|
jobRecordSaveReqVO.setJobTime( updateReqVO.getReturnTime() );
|
jobRecordSaveReqVO.setJobType( DevRentStateEnum.DISMANTLED.getState() );
|
jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() );
|
jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
|
JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
|
jobRecordMapper.insert(jobRecord);
|
} else {
|
jobRecordDO.setJobType( DevRentStateEnum.DISMANTLED.getState() );
|
jobRecordDO.setJobTime( updateReqVO.getReturnTime() );
|
jobRecordDO.setRemark( updateReqVO.getRemark() );
|
jobRecordDO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
|
jobRecordDO.setUpdater( String.valueOf(userId) );
|
jobRecordDO.setUpdateTime( LocalDateTime.now() );
|
jobRecordMapper.updateById(jobRecordDO);
|
}
|
return updateReqVO.getId();
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public Long dataEntryOperation(DevRentSaveReqVO updateReqVO) {
|
updateReqVO.setState( DevRentStateEnum.DATAENTERED.getState() );
|
updateDevRent( updateReqVO );
|
|
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
|
List<Integer> jobTypeList = new ArrayList<Integer>();
|
jobTypeList.add( DevRentStateEnum.DATAENTERED.getState());
|
JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList);
|
if (null == jobRecordDO) {
|
JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
|
jobRecordSaveReqVO.setRentId( updateReqVO.getId() );
|
jobRecordSaveReqVO.setDevId( updateReqVO.getDevId() );
|
jobRecordSaveReqVO.setDocId( userId );
|
jobRecordSaveReqVO.setDocName( userNickname );
|
jobRecordSaveReqVO.setPatId( updateReqVO.getPatId() );
|
jobRecordSaveReqVO.setPatName( updateReqVO.getPatName() );
|
jobRecordSaveReqVO.setJobTime( updateReqVO.getEntryTime() );
|
jobRecordSaveReqVO.setJobType( DevRentStateEnum.DATAENTERED.getState() );
|
jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() );
|
jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
|
JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
|
jobRecordMapper.insert(jobRecord);
|
} else {
|
jobRecordDO.setJobType( DevRentStateEnum.DATAENTERED.getState() );
|
jobRecordDO.setJobTime( updateReqVO.getEntryTime() );
|
jobRecordDO.setRemark( updateReqVO.getRemark() );
|
jobRecordDO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
|
jobRecordDO.setUpdater( String.valueOf(userId) );
|
jobRecordMapper.updateById(jobRecordDO);
|
}
|
return updateReqVO.getId();
|
}
|
|
// 常规检查 取消
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public CommonResult<Long> cancelRoutineOperation(DevCancelReqVO cancelReqVO) {
|
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
|
DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class);
|
createReqVO.setDevId(null);
|
createReqVO.setState( DevRentStateEnum.ROUTINE_CANCELLED.getState());
|
|
Long rent_id = createReqVO.getId();
|
|
List<Integer> jobTypeList = new ArrayList<Integer>();
|
jobTypeList.add( DevRentStateEnum.ROUTINE_FINISH.getState());
|
jobTypeList.add( DevRentStateEnum.ROUTINE_CANCELLED.getState());
|
JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
|
if (null == jobRecordDO) {
|
List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState());
|
if (devRentDOList.size() != 1)
|
throw exception(ROUTINE_CHECK_EXIST);
|
|
rent_id = devRentDOList.getFirst().getId();
|
createReqVO.setId( rent_id );
|
createReqVO.setState( DevRentStateEnum.ROUTINE_CANCELLED.getState() );
|
updateDevRent( createReqVO );
|
|
JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
|
jobRecordSaveReqVO.setRentId(rent_id);
|
jobRecordSaveReqVO.setDevId(null);
|
jobRecordSaveReqVO.setDocId(userId);
|
jobRecordSaveReqVO.setDocName(userNickname);
|
jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
|
jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
|
jobRecordSaveReqVO.setJobType( DevRentStateEnum.ROUTINE_CANCELLED.getState() );
|
jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
|
jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
|
jobRecordSaveReqVO.setSummary("");
|
|
JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
|
jobRecordMapper.insert(jobRecord);
|
} else {
|
updateDevRent( createReqVO );
|
|
jobRecordDO.setDevId(null);
|
jobRecordDO.setJobType(DevRentStateEnum.ROUTINE_CANCELLED.getState());
|
jobRecordDO.setJobTime(createReqVO.getRentTime());
|
jobRecordDO.setRemark(createReqVO.getRemark());
|
jobRecordDO.setUpdater(String.valueOf(userId));
|
jobRecordDO.setUpdateTime(LocalDateTime.now());
|
jobRecordMapper.updateById(jobRecordDO);
|
}
|
return CommonResult.success(rent_id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public CommonResult<Long> cancelReadyOperation(DevCancelReqVO cancelReqVO) {
|
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
Long rentId = cancelReqVO.getId();
|
|
// 若从 装机 改为 取消装机,恢复设备状态
|
if (null != cancelReqVO.getDevId()) {
|
markDevFree( cancelReqVO.getDevId(), rentId );
|
}
|
|
DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class);
|
createReqVO.setDevId(null);
|
createReqVO.setState( DevRentStateEnum.READY_CANCELLED.getState());
|
|
Long rent_id = createReqVO.getId();
|
|
List<Integer> jobTypeList = new ArrayList<Integer>();
|
jobTypeList.add( DevRentStateEnum.READY.getState());
|
jobTypeList.add( DevRentStateEnum.READY_CANCELLED.getState());
|
JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
|
if (null == jobRecordDO) {
|
List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState());
|
if (devRentDOList.size() != 1)
|
throw exception(DEV_INSTALL_EXIST);
|
|
rent_id = devRentDOList.getFirst().getId();
|
createReqVO.setId( rent_id );
|
createReqVO.setState( DevRentStateEnum.READY_CANCELLED.getState() );
|
updateDevRent( createReqVO );
|
|
JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
|
jobRecordSaveReqVO.setRentId(rent_id);
|
jobRecordSaveReqVO.setDevId(null);
|
jobRecordSaveReqVO.setDocId(userId);
|
jobRecordSaveReqVO.setDocName(userNickname);
|
jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
|
jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
|
jobRecordSaveReqVO.setJobType( DevRentStateEnum.READY_CANCELLED.getState() );
|
jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
|
jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
|
jobRecordSaveReqVO.setSummary("");
|
|
JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
|
jobRecordMapper.insert(jobRecord);
|
} else {
|
updateDevRent( createReqVO );
|
|
jobRecordDO.setDevId(null);
|
jobRecordDO.setJobType(DevRentStateEnum.READY_CANCELLED.getState());
|
jobRecordDO.setJobTime(createReqVO.getRentTime());
|
jobRecordDO.setRemark(createReqVO.getRemark());
|
jobRecordDO.setUpdater(String.valueOf(userId));
|
jobRecordDO.setUpdateTime(LocalDateTime.now());
|
jobRecordMapper.updateById(jobRecordDO);
|
}
|
return CommonResult.success(rent_id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public CommonResult<Long> cancelInstallOperation(DevCancelReqVO cancelReqVO) {
|
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
Long rentId = cancelReqVO.getId();
|
|
// 若从 装机 改为 取消装机,恢复设备状态
|
if (null != cancelReqVO.getDevId()) {
|
markDevFree( cancelReqVO.getDevId(), rentId );
|
}
|
|
DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class);
|
createReqVO.setDevId(null);
|
createReqVO.setState( DevRentStateEnum.INSTALL_CANCELLED.getState() );
|
|
Long rent_id = createReqVO.getId();
|
|
List<Integer> jobTypeList = new ArrayList<Integer>();
|
jobTypeList.add( DevRentStateEnum.INSTALLED.getState());
|
jobTypeList.add( DevRentStateEnum.INSTALL_CANCELLED.getState());
|
JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
|
if (null == jobRecordDO) {
|
List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.READY.getState());
|
if (devRentDOList.size() != 1)
|
throw exception(DEV_INSTALL_EXIST);
|
|
rent_id = devRentDOList.getFirst().getId();
|
createReqVO.setId( rent_id );
|
createReqVO.setState( DevRentStateEnum.INSTALL_CANCELLED.getState() );
|
updateDevRent( createReqVO );
|
|
JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
|
jobRecordSaveReqVO.setRentId(rent_id);
|
jobRecordSaveReqVO.setDevId(null);
|
jobRecordSaveReqVO.setDocId(userId);
|
jobRecordSaveReqVO.setDocName(userNickname);
|
jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
|
jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
|
jobRecordSaveReqVO.setJobType( DevRentStateEnum.INSTALL_CANCELLED.getState() );
|
jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
|
jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
|
jobRecordSaveReqVO.setSummary("");
|
|
JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
|
jobRecordMapper.insert(jobRecord);
|
} else {
|
updateDevRent( createReqVO );
|
|
jobRecordDO.setDevId(null);
|
jobRecordDO.setJobType( DevRentStateEnum.INSTALL_CANCELLED.getState() );
|
jobRecordDO.setJobTime(createReqVO.getRentTime());
|
jobRecordDO.setRemark(createReqVO.getRemark());
|
jobRecordDO.setUpdater(String.valueOf(userId));
|
jobRecordDO.setUpdateTime(LocalDateTime.now());
|
jobRecordMapper.updateById(jobRecordDO);
|
}
|
return CommonResult.success(rent_id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public CommonResult<Long> dismantleExceptionOperation(DevRentSaveReqVO updateReqVO) {
|
DevStateEnum devStateEnum = null;
|
if (updateReqVO.getState() == DevStateEnum.DAMAGED.getState())
|
devStateEnum = DevStateEnum.DAMAGED;
|
else if (updateReqVO.getState() == DevStateEnum.LOST.getState())
|
devStateEnum = DevStateEnum.LOST;
|
else
|
throw exception(DEV_DISMANTLE_EXCEPTION);
|
|
// 设备遗失时, 标注遗失
|
markDevDismantleException( updateReqVO.getDevId(), updateReqVO.getId(), updateReqVO.getReturnTime().toLocalDate(), devStateEnum );
|
|
updateReqVO.setState( DevRentStateEnum.LOST.getState() );
|
updateDevRent( updateReqVO );
|
|
Long userId = SecurityFrameworkUtils.getLoginUserId();
|
String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
|
|
List<Integer> jobTypeList = new ArrayList<Integer>();
|
jobTypeList.add( DevRentStateEnum.LOST.getState());
|
JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList);
|
if (null == jobRecordDO) {
|
JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
|
jobRecordSaveReqVO.setRentId( updateReqVO.getId() );
|
jobRecordSaveReqVO.setDevId( updateReqVO.getDevId() );
|
jobRecordSaveReqVO.setDocId( userId );
|
jobRecordSaveReqVO.setDocName( userNickname );
|
jobRecordSaveReqVO.setPatId( updateReqVO.getPatId() );
|
jobRecordSaveReqVO.setPatName( updateReqVO.getPatName() );
|
jobRecordSaveReqVO.setJobTime( updateReqVO.getReturnTime() );
|
jobRecordSaveReqVO.setJobType( DevRentStateEnum.LOST.getState() );
|
jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() );
|
jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
|
JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
|
jobRecordMapper.insert(jobRecord);
|
} else {
|
jobRecordDO.setJobType( DevRentStateEnum.LOST.getState() );
|
jobRecordDO.setJobTime( updateReqVO.getReturnTime() );
|
jobRecordDO.setRemark( updateReqVO.getRemark() );
|
jobRecordDO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
|
jobRecordDO.setUpdater( String.valueOf(userId) );
|
jobRecordDO.setUpdateTime( LocalDateTime.now() );
|
jobRecordMapper.updateById(jobRecordDO);
|
}
|
|
return CommonResult.success(updateReqVO.getId());
|
}
|
|
@Override
|
public Long createDevRent(DevRentSaveReqVO createReqVO) {
|
// 插入
|
DevRentDO devRent = BeanUtils.toBean(createReqVO, DevRentDO.class);
|
devRentMapper.insert(devRent);
|
// 返回
|
return devRent.getId();
|
}
|
|
@Override
|
public void updateDevRent(DevRentSaveReqVO updateReqVO) {
|
// 校验存在
|
validateDevRentExists(updateReqVO.getId());
|
// 更新
|
DevRentDO updateObj = BeanUtils.toBean(updateReqVO, DevRentDO.class);
|
devRentMapper.updateById(updateObj);
|
}
|
|
@Override
|
public void deleteDevRent(Long id) {
|
// 校验存在
|
validateDevRentExists(id);
|
// 删除
|
devRentMapper.deleteById(id);
|
}
|
|
private void validateDevRentExists(Long id) {
|
if (devRentMapper.selectById(id) == null) {
|
throw exception(DEV_INSTALL_NOT_EXISTS);
|
}
|
}
|
|
@Override
|
public DevRentDO getDevRent(Long id) {
|
return devRentMapper.selectById(id);
|
}
|
|
@Override
|
public PageResult<DevRentDO> getDevRentPage(DevRentPageReqVO pageReqVO) {
|
return devRentMapper.selectPage(pageReqVO);
|
}
|
|
@Override
|
public DevRentDO getInstalledOrCancelledRent(DevRentSearchReqVO searchReqVO) {
|
List<Integer> stateList = new ArrayList<>();
|
stateList.add( DevRentStateEnum.INSTALLED.getState() );
|
stateList.add( DevRentStateEnum.INSTALL_CANCELLED.getState());
|
searchReqVO.setStateList( stateList );
|
return devRentMapper.getRentByState(searchReqVO);
|
}
|
|
@Override
|
public DevRentDO getFreeRent(DevRentSearchReqVO searchReqVO) {
|
List<Integer> stateList = new ArrayList<>();
|
stateList.add( DevRentStateEnum.FREE.getState() );
|
searchReqVO.setStateList( stateList );
|
return devRentMapper.getRentByState(searchReqVO);
|
}
|
|
@Override
|
public DevRentDO getReadyOrCancelledRent(DevRentSearchReqVO searchReqVO) {
|
List<Integer> stateList = new ArrayList<>();
|
stateList.add( DevRentStateEnum.READY.getState() );
|
stateList.add( DevRentStateEnum.READY_CANCELLED.getState());
|
searchReqVO.setStateList( stateList );
|
return devRentMapper.getRentByState(searchReqVO);
|
}
|
|
@Override
|
public DevRentDO getDismantledRent(DevRentSearchReqVO searchReqVO) {
|
List<Integer> stateList = new ArrayList<>();
|
stateList.add( DevRentStateEnum.DISMANTLED.getState() );
|
searchReqVO.setStateList( stateList );
|
return devRentMapper.getRentByState(searchReqVO);
|
}
|
|
// 标记 设备已被领取
|
private Integer markDevRecieved(String devId, Long rentId) {
|
// 设备标注 已领取
|
DeviceDO deviveDO = deviceMapper.getDeviceByDevId(devId);
|
if (null != deviveDO && deviveDO.getState() == DevStateEnum.FREE.getState()) {
|
deviveDO.setState( DevStateEnum.RECEIVED.getState() );
|
deviveDO.setRentId( rentId );
|
deviveDO.setStateDate( LocalDate.now() );
|
return deviceMapper.updateById(deviveDO);
|
}
|
|
return 0;
|
}
|
|
// 标记 设备已被使用
|
private Integer markDevInUse(String devId, Long rentId) {
|
DeviceDO deviveDO = deviceMapper.getDeviceByDevId(devId);
|
if (null == deviveDO)
|
return 0;
|
|
if (deviveDO.getState() == DevStateEnum.RECEIVED.getState() && deviveDO.getRentId() == rentId) {
|
deviveDO.setState( DevStateEnum.INUSE.getState() );
|
deviveDO.setStateDate( LocalDate.now() );
|
return deviceMapper.updateById(deviveDO);
|
}
|
|
if (deviveDO.getState() == DevStateEnum.FREE.getState()) {
|
deviveDO.setState( DevStateEnum.INUSE.getState() );
|
deviveDO.setStateDate( LocalDate.now() );
|
deviveDO.setRentId( rentId );
|
return deviceMapper.updateById(deviveDO);
|
}
|
|
return 0;
|
}
|
|
private Integer markDevDismantleException(String devId, Long rentId, LocalDate localDate, DevStateEnum devStateEnum) {
|
// 设备标注遗失
|
DeviceDO deviveDO = deviceMapper.getDeviceByDevId(devId);
|
if (null != deviveDO && deviveDO.getState() == DevStateEnum.INUSE.getState() && deviveDO.getRentId() == rentId) {
|
deviveDO.setState( devStateEnum.getState() );
|
deviveDO.setStateDate( localDate );
|
return deviceMapper.updateById(deviveDO);
|
}
|
|
return 0;
|
}
|
|
private Integer markDevFree(String devId, Long rentId) {
|
// 设备标注遗失 恢复为空闲
|
DeviceDO deviveDO = deviceMapper.getDeviceByDevId( devId );
|
if (null != deviveDO && deviveDO.getRentId() == rentId) {
|
deviveDO.setState( DevStateEnum.FREE.getState() );
|
deviveDO.setStateDate( LocalDate.now() );
|
deviveDO.setRentId(null);
|
return deviceMapper.updateById(deviveDO);
|
}
|
|
return 0;
|
}
|
|
}
|