From 371603a0eb9f3a279cf77073734e991b5851b792 Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期五, 05 九月 2025 16:21:01 +0800
Subject: [PATCH] 市一短信接口同步服务对接
---
smartor/src/main/java/com/smartor/service/impl/PatMedOperationServiceImpl.java | 184 +++++++++++++++++++++++++++++++++++++++++----
1 files changed, 167 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..298bf62 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,149 @@
* @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);
+ serviceSubtask.setVisitTime(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