| | |
| | | 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.appointment.AppointmentDO; |
| | | import cn.lihu.jh.module.ecg.dal.dataobject.checktype.CheckTypeDO; |
| | | 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.dataobject.patient.PatDetails; |
| | | import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO; |
| | | import cn.lihu.jh.module.ecg.dal.mysql.appointment.AppointmentMapper; |
| | | import cn.lihu.jh.module.ecg.dal.mysql.checktype.CheckTypeMapper; |
| | | 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 cn.lihu.jh.module.ecg.feign.*; |
| | | import cn.lihu.jh.module.ecg.feign.dto.AppointmentExternal; |
| | | import cn.lihu.jh.module.ecg.service.queue.QueueServiceTxFunctions; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.dataformat.xml.XmlMapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.io.Console; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | |
| | | import javax.annotation.Resource; |
| | | |
| | | import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.lihu.jh.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| | | import static cn.lihu.jh.framework.common.util.date.DateUtils.getCurTimeString; |
| | | import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Service |
| | | @Validated |
| | | @Slf4j |
| | | public class DevRentServiceImpl implements DevRentService { |
| | | |
| | | @Resource |
| | | QueueServiceTxFunctions queueServiceTxFunctions; |
| | | |
| | | @Resource |
| | | private FeeConfirmFeignService feeConfirmFeignService; |
| | | |
| | | @Resource |
| | | private DevRentMapper devRentMapper; |
| | |
| | | |
| | | @Resource |
| | | QueueMapper queueMapper; |
| | | |
| | | @Resource |
| | | CheckTypeMapper checkTypeMapper; |
| | | |
| | | @Override |
| | | public CommonResult<Long> registerOperation(DevRentSaveReqVO createReqVO) { |
| | |
| | | |
| | | Long userId = SecurityFrameworkUtils.getLoginUserId(); |
| | | String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); |
| | | String userHisId = SecurityFrameworkUtils.getLoginUserHisId(); |
| | | |
| | | // 同样 在预约确实时 就进入 [dev_rent] 表了 |
| | | // 在预约确认时 就进入 [dev_rent] 表了 |
| | | Long rent_id = createReqVO.getId(); |
| | | |
| | | List<Integer> jobTypeList = new ArrayList<Integer>(); |
| | |
| | | public CommonResult<Long> readyOperation(DevRentSaveReqVO createReqVO) { |
| | | Long userId = SecurityFrameworkUtils.getLoginUserId(); |
| | | String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); |
| | | |
| | | // 在预约确认时 就进入 [dev_rent] 表了 |
| | | Long rent_id = createReqVO.getId(); // dev_rent 表的ID |
| | | |
| | | // 标注设备 已领取 |
| | |
| | | String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); |
| | | Long rent_id = createReqVO.getId(); |
| | | |
| | | // 对于已有领用,但是装机时使用的不是已领用设备,需释放 源领用 设备 |
| | | DevRentDO devRentDO = getDevRent(rent_id); |
| | | |
| | | // 对于已有领用,但是装机时使用的不是已领用设备,报错 |
| | | if ( null != devRentDO.getDevId() && !createReqVO.getDevId().equals(devRentDO.getDevId()) ) { |
| | | markDevFree( devRentDO.getDevId(), rent_id); |
| | | throw exception(DEVICE_NOT_PAT_RECEIVED); |
| | | } |
| | | |
| | | // 设置设备 使用中 |
| | |
| | | return devRentMapper.getRentByState(searchReqVO); |
| | | } |
| | | |
| | | // 确费处理 |
| | | // 返回值: 0 成功 1 失败 2 不用确费 |
| | | @Override |
| | | public Integer feeConfirm(Long rentId, String hisId, String userNickname, Boolean isFeeConfirmOrCancel) { |
| | | DevRentDO devRentDO = devRentMapper.selectById(rentId); |
| | | |
| | | // 查询检查类型,确定是否需要确费 |
| | | CheckTypeDO checkTypeDO = checkTypeMapper.getCheckTypeByValue(devRentDO.getCheckType()); |
| | | if (0 == checkTypeDO.getExpenseRecognition()) { |
| | | return 2; |
| | | } |
| | | |
| | | PatDetails patDetails = devRentDO.getPatDetails(); |
| | | HisFeeConfirmReqBody hisFeeConfirmReqBody = new HisFeeConfirmReqBody(); |
| | | MsgHeader msgHeader = new MsgHeader(); |
| | | msgHeader.setMsgType("ODS_2212"); |
| | | msgHeader.setMsgVersion("3.0"); |
| | | msgHeader.setSender("ECG"); |
| | | hisFeeConfirmReqBody.setMsgHeader(msgHeader); |
| | | Item item = new Item(); |
| | | item.setItemCode( getHisCheckCode(devRentDO.getCheckType()) ); // |
| | | item.setItemStatus( isFeeConfirmOrCancel? "5" : "6" ); // 5 确费 6 取消确费 |
| | | item.setExeOrganization("47162057-2"); |
| | | item.setExeDeptName("心电科"); |
| | | item.setExeDept("心电科"); |
| | | item.setExeDoctor( hisId ); // |
| | | item.setExeDoctorName( userNickname ); // |
| | | item.setExeDateTime( getCurTimeString() ); // |
| | | ExmRequest exmRequest = new ExmRequest(); |
| | | exmRequest.setAuthorOrganization("47162057-2"); |
| | | exmRequest.setRequestId( devRentDO.getApplyNo() ); // |
| | | exmRequest.setPatientType( getPatientType(patDetails.getSource()) ); // |
| | | exmRequest.setItem(item); |
| | | hisFeeConfirmReqBody.setExmRequest(exmRequest); |
| | | HisFeeConfirmRespResult result = feeConfirmFeignService.httpFeeApi("UpdateExmRequestStatus", "ECG", "ECG", hisFeeConfirmReqBody); |
| | | log.info( result.getMsgHeader().getStatus() ); |
| | | Integer returnValue = result.getMsgHeader().getStatus().equals("true") ? 0 : 1; |
| | | if (0 == returnValue) { |
| | | devRentMapper.setPaid(rentId, isFeeConfirmOrCancel ? 1 : 0); |
| | | } |
| | | return returnValue; // 0 成功 1 失败 2 不用确费 |
| | | } |
| | | |
| | | // 标记 设备已被领取 |
| | | private Integer markDevRecieved(String devId, Long rentId, PatDetails patDetails) { |
| | | // 设备标注 已领取 |
| | |
| | | } |
| | | } |
| | | |
| | | private String getHisCheckCode(Integer checkType) { |
| | | if (100 == checkType) |
| | | return "691133607"; |
| | | else if (200 == checkType) |
| | | return "201605"; |
| | | else if (300 == checkType) |
| | | return "200327"; |
| | | else if (400 == checkType) |
| | | return "201652"; |
| | | else if (500 == checkType) |
| | | return "502490914"; |
| | | else if (600 == checkType) |
| | | return "419562119"; |
| | | else if (700 == checkType) |
| | | return "201604"; |
| | | else if (800 == checkType) |
| | | return "1202042"; |
| | | else if (900 == checkType) |
| | | return "1202058"; |
| | | else if (1000 == checkType) |
| | | return "1202065"; |
| | | else if (1100 == checkType) |
| | | return "559542128"; |
| | | else if (1200 == checkType) |
| | | return "590244511"; |
| | | else if (1300 == checkType) |
| | | return "666454217"; |
| | | else if (1400 == checkType) |
| | | return "720791490"; |
| | | else if (1500 == checkType) |
| | | return "720792077"; |
| | | |
| | | return "691133607"; |
| | | } |
| | | |
| | | String getPatientType( Integer patientSource ) { |
| | | if (1 == patientSource || 2 == patientSource) |
| | | return "01"; |
| | | else if (3 == patientSource) |
| | | return "03"; |
| | | else if (4 == patientSource) |
| | | return "04"; |
| | | |
| | | return "01"; |
| | | } |
| | | |
| | | } |
| | | |