package cn.lihu.jh.module.ecg.service.devrent; 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.jobrecord.JobRecordDO; import cn.lihu.jh.module.ecg.dal.mysql.jobrecord.JobRecordMapper; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.*; 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.pojo.PageParam; 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; @Override @Transactional public Long installOperation(DevRentSaveReqVO createReqVO) { Long userId = SecurityFrameworkUtils.getLoginUserId(); String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); Long rent_id = createReqVO.getId(); if (null == rent_id) { rent_id = createDevRent(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(0); jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); jobRecordSaveReqVO.setSummary(""); JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); jobRecordMapper.insert(jobRecord); } else { updateDevRent( createReqVO ); JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdJobTypeDocId(rent_id, 0, userId); if (null != jobRecordDO) { jobRecordDO.setJobTime(createReqVO.getRentTime()); jobRecordDO.setRemark(createReqVO.getRemark()); jobRecordDO.setUpdater(String.valueOf(userId)); jobRecordDO.setUpdateTime(LocalDateTime.now()); jobRecordMapper.updateById(jobRecordDO); } } return rent_id; } @Override @Transactional public Long dismantleOperation(DevRentSaveReqVO updateReqVO) { updateDevRent( updateReqVO ); Long userId = SecurityFrameworkUtils.getLoginUserId(); String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdJobTypeDocId(updateReqVO.getId(), 1, userId); if (jobRecordDO == null) { 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( 1 ); jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() ); jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() ); JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); jobRecordMapper.insert(jobRecord); } else { 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 0L; } @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_RENT_NOT_EXISTS); } } @Override public DevRentDO getDevRent(Long id) { return devRentMapper.selectById(id); } @Override public PageResult getDevRentPage(DevRentPageReqVO pageReqVO) { return devRentMapper.selectPage(pageReqVO); } @Override public DevRentDO getLatestRent(String devId) { return devRentMapper.getLatestRent(devId); } }