From 4cccaf33dd171c20b6c262467f24706e3d175aab Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 25 二月 2025 18:15:09 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/PatMedOperationServiceImpl.java |  183 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 166 insertions(+), 17 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedOperationServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedOperationServiceImpl.java
index 76569fb..7c8c18f 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOperationServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOperationServiceImpl.java
@@ -1,11 +1,17 @@
 package com.smartor.service.impl;
 
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
+
 import com.ruoyi.common.utils.DateUtils;
-import com.smartor.domain.PatMedOperation;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.smartor.domain.*;
+import com.smartor.mapper.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.smartor.mapper.PatMedOperationMapper;
 import com.smartor.service.IPatMedOperationService;
 
 /**
@@ -14,11 +20,19 @@
  * @author lihu
  * @date 2025-02-21
  */
+@Slf4j
 @Service
-public class PatMedOperationServiceImpl implements IPatMedOperationService
-{
+public class PatMedOperationServiceImpl implements IPatMedOperationService {
     @Autowired
     private PatMedOperationMapper patMedOperationMapper;
+    @Autowired
+    private PatArchiveMapper patArchiveMapper;
+    @Autowired
+    private ServiceTaskoperMapper serviceTaskoperMapper;
+    @Autowired
+    private ServiceTaskMapper serviceTaskMapper;
+    @Autowired
+    private ServiceSubtaskMapper serviceSubtaskMapper;
 
     /**
      * 鏌ヨ鎮h�呮墜鏈褰�
@@ -27,8 +41,7 @@
      * @return 鎮h�呮墜鏈褰�
      */
     @Override
-    public PatMedOperation selectPatMedOperationById(Long id)
-    {
+    public PatMedOperation selectPatMedOperationById(Long id) {
         return patMedOperationMapper.selectPatMedOperationById(id);
     }
 
@@ -39,8 +52,7 @@
      * @return 鎮h�呮墜鏈褰�
      */
     @Override
-    public List<PatMedOperation> selectPatMedOperationList(PatMedOperation patMedOperation)
-    {
+    public List<PatMedOperation> selectPatMedOperationList(PatMedOperation patMedOperation) {
         return patMedOperationMapper.selectPatMedOperationList(patMedOperation);
     }
 
@@ -51,8 +63,7 @@
      * @return 缁撴灉
      */
     @Override
-    public int insertPatMedOperation(PatMedOperation patMedOperation)
-    {
+    public int insertPatMedOperation(PatMedOperation patMedOperation) {
         patMedOperation.setCreateTime(DateUtils.getNowDate());
         return patMedOperationMapper.insertPatMedOperation(patMedOperation);
     }
@@ -64,8 +75,7 @@
      * @return 缁撴灉
      */
     @Override
-    public int updatePatMedOperation(PatMedOperation patMedOperation)
-    {
+    public int updatePatMedOperation(PatMedOperation patMedOperation) {
         patMedOperation.setUpdateTime(DateUtils.getNowDate());
         return patMedOperationMapper.updatePatMedOperation(patMedOperation);
     }
@@ -77,8 +87,7 @@
      * @return 缁撴灉
      */
     @Override
-    public int deletePatMedOperationByIds(Long[] ids)
-    {
+    public int deletePatMedOperationByIds(Long[] ids) {
         return patMedOperationMapper.deletePatMedOperationByIds(ids);
     }
 
@@ -89,8 +98,148 @@
      * @return 缁撴灉
      */
     @Override
-    public int deletePatMedOperationById(Long id)
-    {
+    public int deletePatMedOperationById(Long id) {
         return patMedOperationMapper.deletePatMedOperationById(id);
     }
+
+    @Override
+    public int dealOperationInfo() {
+        PatMedOperation patMedOperation = new PatMedOperation();
+        //鑾峰彇闇�瑕佸嚭闄㈤殢璁匡紝鏈鐞嗙殑鏁版嵁
+        patMedOperation.setCheckFlag("0");
+        List<PatMedOperation> patMedOperations = patMedOperationMapper.selectPatMedOperationList(patMedOperation);
+        log.error("dealOperationInfo闇�瑕佸鐞嗙殑鎵嬫湳淇℃伅锛歿}", patMedOperations);
+
+        for (PatMedOperation patMedOperation1 : patMedOperations) {
+            //鑾峰彇鎮h�呬俊鎭�
+            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOperation1.getPatid());
+            try {
+                //鏍规嵁鎮h�呮墍鍦ㄧ瀹わ紝鑾峰彇璇ユ墜鏈紪鐮佸搴旂殑闀挎湡浠诲姟
+                ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
+                serviceTaskoper.setLongtask(1L);
+                serviceTaskoper.setOpcode(patMedOperation1.getOpcode());
+                List<ServiceTaskoper> serviceTaskopers = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper);
+                //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堟殏瀹氾紝灏嗗嚭鍏ラ櫌琛ㄧ殑check_flag璁剧疆涓�2  锛宭ong_task_reason 璁板綍鍘熷洜锛�
+                if (CollectionUtils.isEmpty(serviceTaskopers) || serviceTaskopers.size() == 0) {
+                    patMedOperation1.setCheckFlag("2");
+                    patMedOperation1.setLongTaskReason("璇ユ墜鏈紪鐮侊紝鏈厤缃暱鏈熶换鍔�;");
+                    patMedOperationMapper.updatePatMedOperation(patMedOperation1);
+                    continue;
+                } else if (serviceTaskopers.size() > 1) {
+                    //濡傛灉鏌ヨ鍑哄涓换鍔★紝閭e氨鍙栫涓�涓紝骞跺湪鎮h�呭娉ㄤ竴涓�
+                    List<Long> taskIds = serviceTaskopers.stream().map(ServiceTaskoper::getTaskId).collect(Collectors.toList());
+                    patMedOperation1.setLongTaskReason("璇ユ墜鏈紪鐮侊紝鏈夊涓殢璁块暱鏈熶换鍔�:" + taskIds);
+                    patMedOperationMapper.updatePatMedOperation(patMedOperation1);
+                    ServiceTaskoper serviceTaskoper1 = serviceTaskopers.get(0);
+                    serviceTaskopers = new ArrayList<>();
+                    serviceTaskopers.add(serviceTaskoper1);
+                }
+
+                writeInSubTask(serviceTaskopers.get(0).getTaskId(), true, patMedOperation1, patArchive);
+
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error("浜哄憳澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
+            }
+        }
+
+        return 1;
+    }
+
+    //灏嗘偅鑰呮斁鍒皊ubtask涓�
+    private void writeInSubTask(Long taskid, Boolean check, PatMedOperation patMedOperation1, PatArchive patArchive) {
+        String longTaskReason = patMedOperation1.getLongTaskReason();
+        if (StringUtils.isEmpty(longTaskReason)) longTaskReason = "";
+//            Long taskid = std.getTaskId();
+        ServiceTask st = new ServiceTask();
+        st.setTaskid(taskid);
+        st.setSendState(2L);
+        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
+        if (CollectionUtils.isEmpty(serviceTasks)) {
+            log.error("璇ユ墜鏈紪鐮侀暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}", taskid);
+            patMedOperation1.setCheckFlag("2");
+            patMedOperation1.setLongTaskReason(longTaskReason + " & 璇ユ墜鏈紪鐮侀暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
+            patMedOperationMapper.updatePatMedOperation(patMedOperation1);
+            return;
+        }
+        ServiceTask serviceTask = serviceTasks.get(0);
+
+        //灏佽serviceSubtask
+        ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedOperation1, patArchive);
+        int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+
+        if (i == 1) {
+            //灏哻heck_flag鏀规垚1锛堝凡澶勭悊锛�
+            PatMedOperation patMedOperation = new PatMedOperation();
+            patMedOperation.setId(patMedOperation1.getId());
+            patMedOperation.setCheckFlag("1");
+            patMedOperationMapper.updatePatMedOperation(patMedOperation);
+        } else {
+            //鐢熸垚瀛愪换鍔″け璐ワ紝
+            log.error("鐢熸垚瀛愪换鍔″け璐erviceSubtask涓猴細{}", serviceSubtask);
+            PatMedOperation patMedOperation = new PatMedOperation();
+            patMedOperation.setId(patMedOperation1.getId());
+            patMedOperation.setRemark("鐢熸垚瀛愪换鍔″け璐�");
+            patMedOperationMapper.updatePatMedOperation(patMedOperation);
+        }
+    }
+
+    //灏佽serviceSubtask
+    private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedOperation patMedOperation1, PatArchive patArchive) {
+        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
+        serviceSubtask.setTaskid(serviceTask.getTaskid());
+        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
+            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
+        serviceSubtask.setNurseId(patMedOperation1.getNurseId());
+        serviceSubtask.setNurseName(patMedOperation1.getNurseName());
+//        serviceSubtask.setInhospid(patMedOperation1.getInhospid());
+        serviceSubtask.setDrcode(patMedOperation1.getDrcode());
+        serviceSubtask.setDrname(patMedOperation1.getDrname());
+        serviceSubtask.setDeptcode(patMedOperation1.getDeptcode());
+        serviceSubtask.setDeptname(patMedOperation1.getDeptname());
+        serviceSubtask.setTemplateid(serviceTask.getTemplateid());
+        serviceSubtask.setTemplatename(serviceTask.getTemplatename());
+        serviceSubtask.setPatid(patArchive.getId());
+        serviceSubtask.setSendname(patArchive.getName());
+        serviceSubtask.setSfzh(patArchive.getIdcardno());
+        serviceSubtask.setPhone(patArchive.getTelcode());
+        if (StringUtils.isBlank(patArchive.getTelcode())) serviceSubtask.setPhone(patArchive.getRelativetelcode());
+        serviceSubtask.setSex(patArchive.getSex());
+        serviceSubtask.setAge(patArchive.getAge());
+        serviceSubtask.setSendstate(2L);
+        serviceSubtask.setStarttime(patMedOperation1.getOpreqtime());
+        serviceSubtask.setEndtime(patMedOperation1.getOpreqtime());
+        serviceSubtask.setServiceType("2");
+        serviceSubtask.setPreachform(serviceTask.getPreachform());
+        serviceSubtask.setHospType("2");
+        serviceSubtask.setCreateTime(new Date());
+        serviceSubtask.setUpdateTime(new Date());
+//        serviceSubtask.setCreateBy(patMedInhosp1.getNurseName());
+//        serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());
+//        serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
+        //璁剧疆鍙戦�佹椂闂�
+        if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L);
+        Date newDate = addDays(patMedOperation1.getOpreqtime(), serviceTask.getSendDay().intValue());
+        serviceSubtask.setLongSendTime(newDate);
+        //鎮h�呭彂閫佹椂闂�
+        if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
+            String remark = patArchive.getNotrequiredreason();
+            serviceSubtask.setRemark(remark);
+            serviceSubtask.setResult("error");
+            serviceSubtask.setFinishtime(new Date());
+            //涓嶆墽琛�
+            serviceSubtask.setSendstate(4L);
+        }
+        return serviceSubtask;
+    }
+
+    private Date addDays(Date date, Integer days) {
+        if (days == null) {
+            days = 1;
+        }
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, days);
+        return calendar.getTime();
+    }
 }

--
Gitblit v1.9.3