|
@@ -3,92 +3,156 @@ package cn.tr.module.smart.common.service.impl;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.tr.core.exception.ServiceException;
|
|
import cn.tr.core.exception.ServiceException;
|
|
|
import cn.tr.core.exception.TRExcCode;
|
|
import cn.tr.core.exception.TRExcCode;
|
|
|
|
|
+import cn.tr.module.quartz.exception.TaskException;
|
|
|
|
|
+import cn.tr.module.quartz.job.dto.SysJobDTO;
|
|
|
|
|
+import cn.tr.module.quartz.utils.ScheduleUtils;
|
|
|
import cn.tr.module.smart.common.dto.BizMpPublishTaskDTO;
|
|
import cn.tr.module.smart.common.dto.BizMpPublishTaskDTO;
|
|
|
import cn.tr.module.smart.common.dto.BizMpPublishTaskQueryDTO;
|
|
import cn.tr.module.smart.common.dto.BizMpPublishTaskQueryDTO;
|
|
|
import cn.tr.module.smart.common.mapper.BizMpPublishTaskMapper;
|
|
import cn.tr.module.smart.common.mapper.BizMpPublishTaskMapper;
|
|
|
|
|
+import cn.tr.module.smart.common.po.BizClinicRoomPO;
|
|
|
|
|
+import cn.tr.module.smart.common.po.BizDeptPO;
|
|
|
import cn.tr.module.smart.common.po.BizMpPublishTaskPO;
|
|
import cn.tr.module.smart.common.po.BizMpPublishTaskPO;
|
|
|
|
|
+import cn.tr.module.smart.common.po.BizQuestionGroupPO;
|
|
|
|
|
+import cn.tr.module.smart.common.repository.BizClinicRoomRepository;
|
|
|
|
|
+import cn.tr.module.smart.common.repository.BizDeptRepository;
|
|
|
import cn.tr.module.smart.common.repository.BizMpPublishTaskRepository;
|
|
import cn.tr.module.smart.common.repository.BizMpPublishTaskRepository;
|
|
|
|
|
+import cn.tr.module.smart.common.repository.BizQuestionGroupRepository;
|
|
|
import cn.tr.module.smart.common.service.IBizMpPublishTaskService;
|
|
import cn.tr.module.smart.common.service.IBizMpPublishTaskService;
|
|
|
|
|
+import cn.tr.module.smart.common.service.helper.BizClinicRoomHelper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
+import org.quartz.JobDetail;
|
|
|
|
|
+import org.quartz.Scheduler;
|
|
|
|
|
+import org.quartz.SchedulerException;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
import java.util.Collection;
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Objects;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 公众号推送任务表Service接口实现类
|
|
* 公众号推送任务表Service接口实现类
|
|
|
*
|
|
*
|
|
|
* @author wangzl
|
|
* @author wangzl
|
|
|
- * @date 2025/07/25 08:29
|
|
|
|
|
|
|
+ * @date 2025/07/25 08:29
|
|
|
**/
|
|
**/
|
|
|
@Service
|
|
@Service
|
|
|
public class BizMpPublishTaskServiceImpl implements IBizMpPublishTaskService {
|
|
public class BizMpPublishTaskServiceImpl implements IBizMpPublishTaskService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private BizMpPublishTaskRepository baseRepository;
|
|
private BizMpPublishTaskRepository baseRepository;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private Scheduler scheduler;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private BizQuestionGroupRepository questionGroupRepository;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private BizClinicRoomRepository bizClinicRoomRepository;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private BizDeptRepository bizDeptRepository;
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 根据条件查询公众号推送任务表
|
|
|
|
|
- * @param query 查询参数
|
|
|
|
|
- * @author wangzl
|
|
|
|
|
- * @date 2025/07/25 08:29
|
|
|
|
|
- */
|
|
|
|
|
|
|
+ * 根据条件查询公众号推送任务表
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param query 查询参数
|
|
|
|
|
+ * @author wangzl
|
|
|
|
|
+ * @date 2025/07/25 08:29
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
- public List<BizMpPublishTaskDTO> selectBizMpPublishTaskList(BizMpPublishTaskQueryDTO query){
|
|
|
|
|
|
|
+ public List<BizMpPublishTaskDTO> selectBizMpPublishTaskList(BizMpPublishTaskQueryDTO query) {
|
|
|
return BizMpPublishTaskMapper.INSTANCE.convertDtoList(
|
|
return BizMpPublishTaskMapper.INSTANCE.convertDtoList(
|
|
|
baseRepository.selectList(new LambdaQueryWrapper<BizMpPublishTaskPO>()
|
|
baseRepository.selectList(new LambdaQueryWrapper<BizMpPublishTaskPO>()
|
|
|
)
|
|
)
|
|
|
);
|
|
);
|
|
|
- };
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 根据id查询公众号推送任务表
|
|
|
|
|
- * @param id 主键id
|
|
|
|
|
- * @author wangzl
|
|
|
|
|
- * @date 2025/07/25 08:29
|
|
|
|
|
- */
|
|
|
|
|
|
|
+ * 根据id查询公众号推送任务表
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param id 主键id
|
|
|
|
|
+ * @author wangzl
|
|
|
|
|
+ * @date 2025/07/25 08:29
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
- public BizMpPublishTaskDTO selectBizMpPublishTaskById(String id){
|
|
|
|
|
|
|
+ public BizMpPublishTaskDTO selectBizMpPublishTaskById(String id) {
|
|
|
return BizMpPublishTaskMapper.INSTANCE.convertDto(baseRepository.selectById(id));
|
|
return BizMpPublishTaskMapper.INSTANCE.convertDto(baseRepository.selectById(id));
|
|
|
- };
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 编辑公众号推送任务表
|
|
|
|
|
- * @param source 编辑实体类
|
|
|
|
|
- * @author wangzl
|
|
|
|
|
- * @date 2025/07/25 08:29
|
|
|
|
|
- */
|
|
|
|
|
|
|
+ * 编辑公众号推送任务表
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param source 编辑实体类
|
|
|
|
|
+ * @author wangzl
|
|
|
|
|
+ * @date 2025/07/25 08:29
|
|
|
|
|
+ */
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
@Override
|
|
|
- public boolean updateBizMpPublishTaskById(BizMpPublishTaskDTO source){
|
|
|
|
|
- return baseRepository.updateById(BizMpPublishTaskMapper.INSTANCE.convertPO(source))!=0;
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ public boolean updateBizMpPublishTaskById(BizMpPublishTaskDTO source) {
|
|
|
|
|
+ return baseRepository.updateById(BizMpPublishTaskMapper.INSTANCE.convertPO(source)) != 0;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 新增公众号推送任务表
|
|
|
|
|
- * @param source 新增实体类
|
|
|
|
|
- * @author wangzl
|
|
|
|
|
- * @date 2025/07/25 08:29
|
|
|
|
|
- */
|
|
|
|
|
|
|
+ * 新增公众号推送任务表
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param source 新增实体类
|
|
|
|
|
+ * @author wangzl
|
|
|
|
|
+ * @date 2025/07/25 08:29
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public boolean insertBizMpPublishTask(BizMpPublishTaskDTO source){
|
|
|
|
|
- return baseRepository.insert(BizMpPublishTaskMapper.INSTANCE.convertPO(source))!=0;
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ public boolean insertBizMpPublishTask(BizMpPublishTaskDTO source) {
|
|
|
|
|
+ return baseRepository.insert(BizMpPublishTaskMapper.INSTANCE.convertPO(source)) != 0;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 删除公众号推送任务表详情
|
|
|
|
|
- * @param ids 删除主键集合
|
|
|
|
|
- * @author wangzl
|
|
|
|
|
- * @date 2025/07/25 08:29
|
|
|
|
|
- */
|
|
|
|
|
|
|
+ * 删除公众号推送任务表详情
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param ids 删除主键集合
|
|
|
|
|
+ * @author wangzl
|
|
|
|
|
+ * @date 2025/07/25 08:29
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public int removeBizMpPublishTaskByIds(Collection<String> ids){
|
|
|
|
|
- if(CollectionUtil.isEmpty(ids)){
|
|
|
|
|
- throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"请选择要删除的数据");
|
|
|
|
|
|
|
+ public int removeBizMpPublishTaskByIds(Collection<String> ids) {
|
|
|
|
|
+ if (CollectionUtil.isEmpty(ids)) {
|
|
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "请选择要删除的数据");
|
|
|
}
|
|
}
|
|
|
return baseRepository.deleteBatchIds(ids);
|
|
return baseRepository.deleteBatchIds(ids);
|
|
|
- };
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @description: 创建定时任务
|
|
|
|
|
+ * @author wangzl
|
|
|
|
|
+ * @date 2025/7/29
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public void createQuestionTask(String clinicId, Date clinicEndTime, String type) throws SchedulerException, TaskException {
|
|
|
|
|
+ //查询推送频次和推送次数
|
|
|
|
|
+ BizClinicRoomPO bizClinicRoomPO = bizClinicRoomRepository.selectById(clinicId);
|
|
|
|
|
+ if (Objects.isNull(bizClinicRoomPO)){
|
|
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "未查询到手术信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ BizDeptPO bizDeptPO = bizDeptRepository.selectById(bizClinicRoomPO.getDeptId());
|
|
|
|
|
+ if (Objects.isNull(bizDeptPO)){
|
|
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "未查询到科室信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ BizQuestionGroupPO bizQuestionGroupPO = questionGroupRepository.selectById(bizDeptPO.getGroupId());
|
|
|
|
|
+ if (Objects.isNull(bizQuestionGroupPO)){
|
|
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "未查询到问卷组信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ List<BizMpPublishTaskPO> mpPublishTask = BizClinicRoomHelper.getMpPublishTask(clinicId, clinicEndTime,
|
|
|
|
|
+ bizQuestionGroupPO.getInterval(), bizQuestionGroupPO.getFrequency(), type);
|
|
|
|
|
+ for (BizMpPublishTaskPO task : mpPublishTask) {
|
|
|
|
|
+ SysJobDTO job = BizClinicRoomHelper.getJobQuestion(task);
|
|
|
|
|
+ JobDetail scheduleJob = ScheduleUtils.createScheduleJob(scheduler, job);
|
|
|
|
|
+ task.setCronJob(scheduleJob);
|
|
|
|
|
+ baseRepository.insert(task);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|