From ce6ce8f0fc90718184bf54a149d6cf70a63efb17 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期二, 12 十一月 2024 16:02:09 +0800
Subject: [PATCH] update

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java |  120 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 103 insertions(+), 17 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
index abbdbea..d1b9401 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
@@ -3,14 +3,17 @@
 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.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.queue.QueueDO;
 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.service.queue.QueueServiceTxFunctions;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.transaction.annotation.Transactional;
@@ -40,6 +43,9 @@
 @Service
 @Validated
 public class DevRentServiceImpl implements DevRentService {
+
+    @Resource
+    QueueServiceTxFunctions queueServiceTxFunctions;
 
     @Resource
     private DevRentMapper devRentMapper;
@@ -75,7 +81,7 @@
         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());
+            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
             if (devRentDOList.size() == 0)
                 throw  exception(DEV_INSTALL_NOT_APPOINTMENT);
             else if (devRentDOList.size() != 1) {
@@ -98,6 +104,7 @@
             jobRecordSaveReqVO.setJobType( DevRentStateEnum.ROUTINE_FINISH.getState() );
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
+            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
@@ -117,8 +124,25 @@
         }
 
         // 鏇存柊..闃熷垪鐘舵��
-        queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
-                QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus());
+        //queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
+        //        QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus());
+
+        QueueDO firstOnStageQueueItem = queueMapper.getFirstItemByBedAndStatus(createReqVO.getRoomId(),
+                                            createReqVO.getBedNo(), QueueStatusEnum.ONSTAGE.getStatus());
+        // QueueStatusEnum.ONSTAGE  =>  QueueStatusEnum.FINISH
+        firstOnStageQueueItem.setStatus(QueueStatusEnum.FINISH.getStatus());  // 榛樿鐘舵�� 璁剧疆
+        queueMapper.updateById( firstOnStageQueueItem );
+
+        // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫
+        CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( firstOnStageQueueItem.getBookCheckType() );
+        if (checkTypeDO.getAffinityCheckTypes().length > 0) {
+            List<QueueDO> affinityAffinityWaitingItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.AFFINITY_WAITING.getStatus());
+            if (!affinityAffinityWaitingItems.isEmpty()) {
+                QueueDO tmpQueueDO = affinityAffinityWaitingItems.get(0);
+                tmpQueueDO.setStatus(QueueStatusEnum.ONSTAGE.getStatus());
+                queueMapper.updateById(tmpQueueDO);
+            }
+        }
 
         return CommonResult.success(rent_id);
     }
@@ -141,7 +165,7 @@
         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());
+            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
             if (devRentDOList.size() == 0)
                 throw exception(DEV_INSTALL_NOT_APPOINTMENT);
             else if (devRentDOList.size() != 1) {
@@ -164,6 +188,7 @@
             jobRecordSaveReqVO.setJobType( DevRentStateEnum.READY.getState() );
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
+            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
@@ -183,8 +208,39 @@
         }
 
         // 鏇存柊..闃熷垪鐘舵��
-        queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
-                QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus());
+        //queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
+        //        QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus());
+
+        QueueDO firstOnStageQueueItem = queueMapper.getFirstItemByBedAndStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), QueueStatusEnum.ONSTAGE.getStatus());
+        CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( firstOnStageQueueItem.getBookCheckType() );
+
+        // QueueStatusEnum.ONSTAGE  =>  QueueStatusEnum.RECEIVED
+        firstOnStageQueueItem.setStatus(QueueStatusEnum.RECEIVED.getStatus());  // 榛樿鐘舵�� 璁剧疆
+        // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫
+        if (checkTypeDO.getAffinityCheckTypes().length > 0) {
+            List<QueueDO> affinityInstallingItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.INSTALLING.getStatus());
+            if (!affinityInstallingItems.isEmpty()) {
+                firstOnStageQueueItem.setStatus(QueueStatusEnum.AFFINITY_RECEIVED.getStatus());
+            }
+        }
+        queueMapper.updateById( firstOnStageQueueItem );
+
+        // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫
+        if (checkTypeDO.getAffinityCheckTypes().length > 0) {
+            List<QueueDO> affinityReadyItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.READY.getStatus());
+            if (!affinityReadyItems.isEmpty()) {
+                QueueDO tmpQueueDO = affinityReadyItems.get(0);
+                tmpQueueDO.setStatus(QueueStatusEnum.ONSTAGE.getStatus());
+                queueMapper.updateById(tmpQueueDO);
+            } else {
+                List<QueueDO> affinityAffinityWaitingItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.AFFINITY_WAITING.getStatus());
+                if (!affinityAffinityWaitingItems.isEmpty()) {
+                    QueueDO tmpQueueDO = affinityAffinityWaitingItems.get(0);
+                    tmpQueueDO.setStatus(QueueStatusEnum.ONSTAGE.getStatus());
+                    queueMapper.updateById(tmpQueueDO);
+                }
+            }
+        }
 
         return CommonResult.success(rent_id);
     }
@@ -216,7 +272,7 @@
 
         // 绗竴娆� 瀹夎鎿嶄綔
         if (null == jobRecordDO) {
-            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.READY.getState());
+            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.READY.getState());
             if (devRentDOList.size() == 0)
                 throw exception(DEV_INSTALL_NOT_RECEIVED);
             else if (devRentDOList.size() != 1) {
@@ -239,6 +295,7 @@
             jobRecordSaveReqVO.setJobType( DevRentStateEnum.INSTALLED.getState() );
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
+            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
@@ -257,8 +314,25 @@
         }
 
         // 鏇存柊..闃熷垪鐘舵��
-        queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
-                QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.FINISH.getStatus());
+        //queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
+        //        QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.FINISH.getStatus());
+
+        QueueDO firstInstallingQueueItem = queueMapper.getFirstItemByBedAndStatus(createReqVO.getRoomId(),
+                                                    createReqVO.getBedNo(), QueueStatusEnum.INSTALLING.getStatus());
+        // QueueStatusEnum.INSTALLING  =>  QueueStatusEnum.FINISH
+        firstInstallingQueueItem.setStatus(QueueStatusEnum.FINISH.getStatus());  // 榛樿鐘舵�� 璁剧疆
+        queueMapper.updateById( firstInstallingQueueItem );
+
+        // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫
+        CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( firstInstallingQueueItem.getBookCheckType() );
+        if (checkTypeDO.getAffinityCheckTypes().length > 0) {
+            List<QueueDO> affinityAffinityReceivedItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstInstallingQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.AFFINITY_RECEIVED.getStatus());
+            if (!affinityAffinityReceivedItems.isEmpty()) {
+                QueueDO tmpQueueDO = affinityAffinityReceivedItems.get(0);
+                tmpQueueDO.setStatus(QueueStatusEnum.INSTALLING.getStatus());
+                queueMapper.updateById(tmpQueueDO);
+            }
+        }
 
         return CommonResult.success(rent_id);
     }
@@ -291,6 +365,7 @@
             jobRecordSaveReqVO.setJobType( DevRentStateEnum.DISMANTLED.getState() );
             jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() );
             jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
+            jobRecordSaveReqVO.setCheckType( updateReqVO.getCheckType() );
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
@@ -329,6 +404,7 @@
             jobRecordSaveReqVO.setJobType( DevRentStateEnum.DATAENTERED.getState() );
             jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() );
             jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
+            jobRecordSaveReqVO.setCheckType( updateReqVO.getCheckType() );
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
@@ -360,7 +436,7 @@
         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());
+            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
             if (devRentDOList.size() != 1)
                 throw exception(ROUTINE_CHECK_EXIST);
 
@@ -380,6 +456,7 @@
             jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
+            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
@@ -420,7 +497,7 @@
         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());
+            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
             if (devRentDOList.size() != 1)
                 throw exception(DEV_INSTALL_EXIST);
 
@@ -440,6 +517,7 @@
             jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
+            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
@@ -480,7 +558,7 @@
         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());
+            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.READY.getState());
             if (devRentDOList.size() != 1)
                 throw exception(DEV_INSTALL_EXIST);
 
@@ -500,6 +578,7 @@
             jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
+            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
@@ -521,23 +600,29 @@
     @Transactional(rollbackFor = Exception.class)
     public CommonResult<Long> dismantleExceptionOperation(DevRentSaveReqVO updateReqVO) {
         DevStateEnum devStateEnum = null;
-        if (updateReqVO.getState() == DevStateEnum.DAMAGED.getState())
+        DevRentStateEnum devRentStateEnum = null;
+        if (updateReqVO.getState() == DevStateEnum.DAMAGED.getState()) {
             devStateEnum = DevStateEnum.DAMAGED;
-        else if (updateReqVO.getState() == DevStateEnum.LOST.getState())
+            devRentStateEnum = DevRentStateEnum.DAMAGED;
+        }
+        else if (updateReqVO.getState() == DevStateEnum.LOST.getState()) {
             devStateEnum = DevStateEnum.LOST;
+            devRentStateEnum = DevRentStateEnum.LOST;
+        }
         else
             throw exception(DEV_DISMANTLE_EXCEPTION);
 
         // 璁惧閬楀け鏃�, 鏍囨敞閬楀け
         markDevDismantleException( updateReqVO.getDevId(), updateReqVO.getId(), updateReqVO.getReturnTime().toLocalDate(), devStateEnum );
 
-        updateReqVO.setState( DevRentStateEnum.LOST.getState() );
+        updateReqVO.setState( devRentStateEnum.getState() );
         updateDevRent( updateReqVO );
 
         Long userId = SecurityFrameworkUtils.getLoginUserId();
         String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
 
         List<Integer> jobTypeList = new ArrayList<Integer>();
+        jobTypeList.add( DevRentStateEnum.DAMAGED.getState());
         jobTypeList.add( DevRentStateEnum.LOST.getState());
         JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList);
         if (null == jobRecordDO) {
@@ -549,13 +634,14 @@
             jobRecordSaveReqVO.setPatId( updateReqVO.getPatId() );
             jobRecordSaveReqVO.setPatName( updateReqVO.getPatName() );
             jobRecordSaveReqVO.setJobTime( updateReqVO.getReturnTime() );
-            jobRecordSaveReqVO.setJobType( DevRentStateEnum.LOST.getState() );
+            jobRecordSaveReqVO.setJobType( devRentStateEnum.getState() );
             jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() );
             jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
+            jobRecordSaveReqVO.setCheckType( updateReqVO.getCheckType() );
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
-            jobRecordDO.setJobType( DevRentStateEnum.LOST.getState() );
+            jobRecordDO.setJobType( devRentStateEnum.getState() );
             jobRecordDO.setJobTime( updateReqVO.getReturnTime() );
             jobRecordDO.setRemark( updateReqVO.getRemark() );
             jobRecordDO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );

--
Gitblit v1.9.3