27 changed files with 675 additions and 248 deletions
@ -1,15 +0,0 @@ |
|||
package com.acupuncture.system.service; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.acupuncture.system.service |
|||
* @Date 2025/2/12 17:58 |
|||
* @description: |
|||
*/ |
|||
public interface TaskService { |
|||
|
|||
/** |
|||
* 定时任务添加随访工单 |
|||
*/ |
|||
void task(); |
|||
} |
@ -1,120 +0,0 @@ |
|||
package com.acupuncture.system.service.impl; |
|||
|
|||
import cn.hutool.core.bean.BeanUtil; |
|||
import cn.hutool.core.collection.CollectionUtil; |
|||
import cn.hutool.core.util.IdUtil; |
|||
import com.acupuncture.system.domain.po.FmsFollowupTask; |
|||
import com.acupuncture.system.domain.vo.FmsFollowupVo; |
|||
import com.acupuncture.system.domain.vo.UmsDataSourceVo; |
|||
import com.acupuncture.system.persist.dao.FmsFollowupDao; |
|||
import com.acupuncture.system.persist.dao.UmsDataSourceDao; |
|||
import com.acupuncture.system.persist.mapper.FmsFollowupTaskMapper; |
|||
import com.acupuncture.system.service.TaskService; |
|||
import org.quartz.TriggerUtils; |
|||
import org.quartz.impl.triggers.CronTriggerImpl; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.ArrayList; |
|||
import java.util.Calendar; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zzc |
|||
* @Package com.acupuncture.system.service.impl |
|||
* @Date 2025/2/12 17:58 |
|||
* @description: |
|||
*/ |
|||
@Service |
|||
public class TaskServiceImpl implements TaskService { |
|||
|
|||
@Resource |
|||
private FmsFollowupDao fmsFollowupDao; |
|||
@Resource |
|||
private FmsFollowupTaskMapper fmsFollowupTaskMapper; |
|||
@Resource |
|||
private UmsDataSourceDao umsDataSourceDao; |
|||
|
|||
@Override |
|||
public void task() { |
|||
|
|||
//获取随访患者列表,根据患者出院日时间和队列添加工单
|
|||
//1. 查询队列
|
|||
List<FmsFollowupVo.FollowupQueueVO> queueList = fmsFollowupDao.selectQueueList(null); |
|||
//查询公共队列
|
|||
List<FmsFollowupVo.FollowupQueueVO> queueResults = fmsFollowupDao.queryCommonQueue(null); |
|||
if (CollectionUtil.isEmpty(queueList)) { |
|||
queueList = queueResults; |
|||
} else { |
|||
queueList.addAll(queueResults); |
|||
} |
|||
for (FmsFollowupVo.FollowupQueueVO followupQueueVO : queueList) { |
|||
//2. 查询队列随访患者列表
|
|||
List<FmsFollowupVo.FollowupPatient> patientList = fmsFollowupDao.queryPatient(followupQueueVO.getId()); |
|||
if (CollectionUtil.isEmpty(patientList)) { |
|||
continue; |
|||
} |
|||
//随访总月数
|
|||
Integer followupMethod = followupQueueVO.getFollowupMethod(); |
|||
for (FmsFollowupVo.FollowupPatient followupPatient : patientList) { |
|||
//获取随访到期时间 出院时间+随访总月数 = 到期时间
|
|||
Calendar calendar = Calendar.getInstance(); |
|||
calendar.setTime(followupPatient.getDischargeTime()); |
|||
calendar.set(Calendar.MONTH, followupMethod); |
|||
Date time = calendar.getTime(); |
|||
|
|||
//获取队列信息
|
|||
String frequency = followupQueueVO.getFrequency(); |
|||
List<Date> dateList = new ArrayList<>(); |
|||
try { |
|||
CronTriggerImpl cronTrigger = new CronTriggerImpl(); |
|||
cronTrigger.setCronExpression(frequency); |
|||
//TriggerUtils.computeFireTimesBetween(要计算触发时间的触发器对象, 用于计算触发时间的日历对象, 计算触发时间的起始时间点, 计算触发时间的结束时间点);
|
|||
dateList = TriggerUtils.computeFireTimesBetween(cronTrigger, null, followupPatient.getDischargeTime(), time); |
|||
if (CollectionUtil.isEmpty(dateList)) { |
|||
continue; |
|||
} |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
//3. 判断随访类型
|
|||
if (followupQueueVO.getFollowupType() == 0) { |
|||
//单次
|
|||
FmsFollowupTask fmsFollowupTask = new FmsFollowupTask(); |
|||
BeanUtil.copyProperties(followupQueueVO, fmsFollowupTask); |
|||
fmsFollowupTask.setId(IdUtil.getSnowflakeNextId()); |
|||
fmsFollowupTask.setQueueId(followupQueueVO.getId()); |
|||
fmsFollowupTask.setDelFlag((byte) 0); |
|||
fmsFollowupTask.setCreateTime(new Date()); |
|||
fmsFollowupTask.setStatus((byte) 0); |
|||
fmsFollowupTask.setStartTime(dateList.get(0)); |
|||
fmsFollowupTask.setEndTime(dateList.get(0)); |
|||
fmsFollowupTask.setFollowuper(followupQueueVO.getPersonInCharge()); |
|||
fmsFollowupTask.setFollowupTime(dateList.get(0)); |
|||
fmsFollowupTaskMapper.insertSelective(fmsFollowupTask); |
|||
|
|||
} else { |
|||
//周期
|
|||
//4. 根据频次和总月数添加
|
|||
for (Date date : dateList) { |
|||
//单次
|
|||
FmsFollowupTask fmsFollowupTask = new FmsFollowupTask(); |
|||
BeanUtil.copyProperties(followupQueueVO, fmsFollowupTask); |
|||
fmsFollowupTask.setId(IdUtil.getSnowflakeNextId()); |
|||
fmsFollowupTask.setQueueId(followupQueueVO.getId()); |
|||
fmsFollowupTask.setDelFlag((byte) 0); |
|||
fmsFollowupTask.setCreateTime(new Date()); |
|||
fmsFollowupTask.setStatus((byte) 0); |
|||
fmsFollowupTask.setStartTime(date); |
|||
fmsFollowupTask.setEndTime(date); |
|||
fmsFollowupTask.setFollowuper(followupQueueVO.getPersonInCharge()); |
|||
fmsFollowupTask.setFollowupTime(date); |
|||
fmsFollowupTaskMapper.insertSelective(fmsFollowupTask); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
} |
Loading…
Reference in new issue