package com.smartor.service.impl; import com.alibaba.fastjson2.JSON; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DtoConversionUtils; import com.smartor.domain.*; import com.smartor.mapper.SvyTaskSingleMapper; import com.smartor.service.ISvyTaskService; import com.smartor.service.ISvyTaskSingleService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * 单一任务(问卷)Service业务层处理 * * @author ruoyi * @date 2024-06-12 */ @Slf4j @Service public class SvyTaskSingleServiceImpl implements ISvyTaskSingleService { @Autowired private SvyTaskSingleMapper svyTaskSingleMapper; @Autowired private ISvyTaskService svyTaskService; /** * 查询单一任务(问卷) * * @param id 单一任务(问卷)主键 * @return 单一任务(问卷) */ @Override public SvyTaskSingle selectSvyTaskSingleById(Long id) { return svyTaskSingleMapper.selectSvyTaskSingleById(id); } /** * 查询单一任务(问卷)列表 * * @param svyTaskSingle 单一任务(问卷) * @return 单一任务(问卷) */ @Override public List selectSvyTaskSingleList(SvyTaskSingle svyTaskSingle) { return svyTaskSingleMapper.selectSvyTaskSingleList(svyTaskSingle); } /** * 新增单一任务(问卷) * * @param svyTaskSingle 单一任务(问卷) * @return 结果 */ @Override public int insertSvyTaskSingle(SvyTaskSingle svyTaskSingle) { svyTaskSingle.setCreateTime(DateUtils.getNowDate()); return svyTaskSingleMapper.insertSvyTaskSingle(svyTaskSingle); } /** * 修改单一任务(问卷) * * @param svyTaskSingle 单一任务(问卷) * @return 结果 */ @Override public int updateSvyTaskSingle(SvyTaskSingle svyTaskSingle) { svyTaskSingle.setUpdateTime(DateUtils.getNowDate()); return svyTaskSingleMapper.updateSvyTaskSingle(svyTaskSingle); } /** * 批量删除单一任务(问卷) * * @param ids 需要删除的单一任务(问卷)主键 * @return 结果 */ @Override public int deleteSvyTaskSingleByIds(Long[] ids) { return svyTaskSingleMapper.deleteSvyTaskSingleByIds(ids); } /** * 删除单一任务(问卷)信息 * * @param id 单一任务(问卷)主键 * @return 结果 */ @Override public int deleteSvyTaskSingleById(Long id) { return svyTaskSingleMapper.deleteSvyTaskSingleById(id); } @Override public int insertOrUpdateSvyTask(SvyTaskVO svyTaskVO) { if (ObjectUtils.isEmpty(svyTaskVO)) { log.info("问卷任务入参为空,请检查入参"); throw new BaseException("问卷任务入参为空,请检查入参"); } Integer integer = 1; SvyTask svyTask = DtoConversionUtils.sourceToTarget(svyTaskVO, SvyTask.class); svyTask.setTextParam(JSON.toJSONString(svyTaskVO.getTextParamMap())); if (svyTaskVO.getIsoperation() != null && svyTaskVO.getIsoperation() == 1) { //往任务表中,新增任务 if (ObjectUtils.isNotEmpty(svyTaskVO.getSendTimeSlot())) svyTask.setSendTimeSlot(JSON.toJSONString(svyTaskVO.getSendTimeSlot())); if (svyTask.getSendState() == null) svyTask.setSendState("1"); svyTask.setTemplateid(svyTaskVO.getLibtemplateid()); svyTaskService.insertSvyTask(svyTask); //将任务信息放到服务表中 SvyTaskSingle svyTaskSingle = DtoConversionUtils.sourceToTarget(svyTaskVO, SvyTaskSingle.class); svyTaskSingle.setTaskid(svyTask.getTaskid()); //新增 if (CollectionUtils.isNotEmpty(svyTaskVO.getPatTaskRelevances())) { for (PatTaskRelevance patTaskRelevance : svyTaskVO.getPatTaskRelevances()) { //将任务信息新增到随访服务表中 svyTaskSingle.setSendname(patTaskRelevance.getName()); svyTaskSingle.setAge(patTaskRelevance.getAge()); svyTaskSingle.setSfzh(patTaskRelevance.getSfzh()); svyTaskSingle.setPhone(patTaskRelevance.getPhone()); svyTaskSingle.setAddr(patTaskRelevance.getAddr()); svyTaskSingle.setPatid(patTaskRelevance.getPatid()); svyTaskSingle.setSendstate(1L); svyTaskSingle.setHospType(patTaskRelevance.getHospType()); svyTaskSingle.setCreateTime(DateUtils.getNowDate()); svyTaskSingleMapper.insertSvyTaskSingle(svyTaskSingle); integer = svyTaskSingle.getId().intValue(); } } } else if (svyTaskVO.getIsoperation() != null && svyTaskVO.getIsoperation() == 2) { //任务修改 if (ObjectUtils.isNotEmpty(svyTaskVO.getSendTimeSlot())) svyTask.setSendTimeSlot(JSON.toJSONString(svyTaskVO.getSendTimeSlot())); //修改操作,需要将stopState状态+1 SvyTask svyTask1 = svyTaskService.selectSvyTaskByTaskid(svyTaskVO.getTaskid()); svyTask.setStopState(svyTask1.getStopState() + 1); svyTask.setTemplateid(svyTaskVO.getLibtemplateid()); svyTaskService.updateSvyTask(svyTask); if (CollectionUtils.isNotEmpty(svyTaskVO.getPatTaskRelevances())) { for (PatTaskRelevance patTaskRelevance : svyTaskVO.getPatTaskRelevances()) { SvyTaskSingle svyTaskSingle = DtoConversionUtils.sourceToTarget(svyTaskVO, SvyTaskSingle.class); svyTaskSingle.setSendname(patTaskRelevance.getName()); svyTaskSingle.setAge(patTaskRelevance.getAge()); svyTaskSingle.setSfzh(patTaskRelevance.getSfzh()); svyTaskSingle.setPhone(patTaskRelevance.getPhone()); svyTaskSingle.setAddr(patTaskRelevance.getAddr()); svyTaskSingle.setPatid(patTaskRelevance.getPatid()); svyTaskSingle.setHospType(patTaskRelevance.getHospType()); svyTaskSingle.setCreateTime(DateUtils.getNowDate()); svyTaskSingle.setTextParam(new Gson().toJson(svyTaskVO.getTextParamMap())); if (patTaskRelevance.getIsoperation() != null) { optionHandle(svyTaskSingle, svyTaskVO.getTaskid(), patTaskRelevance.getIsoperation(), patTaskRelevance.getPatid()); } else if (patTaskRelevance.getIsoperation() == null) { optionHandle(svyTaskSingle, svyTaskVO.getTaskid(), svyTaskVO.getIsoperation(), patTaskRelevance.getPatid()); } integer = svyTaskSingle.getTaskid().intValue(); } } } return integer; } @Override public SvyTaskVO queryTaskByCondition(SvyTaskSingle svyTaskSingle) { //定义患者与单一任务关联表集合 List patTaskRelevances = new ArrayList<>(); List list = selectSvyTaskSingleList(svyTaskSingle); if (CollectionUtils.isEmpty(list) || list.size() == 0) { return new SvyTaskVO(); } SvyTask svyTask = svyTaskService.selectSvyTaskByTaskid(svyTaskSingle.getTaskid()); //将查出来的数据倒入ivrTasksingleVO中 SvyTaskVO svyTaskVO = DtoConversionUtils.sourceToTarget(list.get(0), SvyTaskVO.class); svyTaskVO.setShowDate(svyTask.getShowDate()); svyTaskVO.setShowTimeMorn(svyTask.getShowTimeMorn()); svyTaskVO.setShowTimeNoon(svyTask.getShowTimeNoon()); svyTaskVO.setShowTimeNight(svyTask.getShowTimeNight()); svyTaskVO.setPreachform(svyTask.getPreachform()); String sendTimeSlot = svyTask.getSendTimeSlot(); ObjectMapper objectMapper = new ObjectMapper(); try { //获取到发送时间的集合 if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) { List taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class); svyTaskVO.setSendTimeSlot(taskSendTimeVOList); svyTaskVO.setSendType(svyTask.getSendType()); } //文本变量参数 if (com.ruoyi.common.utils.StringUtils.isNotEmpty(svyTask.getTextParam())) { Map> textParam = objectMapper.readValue(svyTask.getTextParam(), Map.class); svyTaskVO.setTextParam(textParam); } } catch (JsonProcessingException e) { e.printStackTrace(); } for (SvyTaskSingle svyTaskSingle1 : list) { PatTaskRelevance patTaskRelevance = new PatTaskRelevance(); if (!svyTaskSingle1.getHospType().equals("2")) { log.info("随访查询不为出院,{}", svyTaskSingle1.getHospType()); //获取到患者信息,并放入到集合中 patTaskRelevance.setName(svyTaskSingle1.getSendname()); patTaskRelevance.setAge(svyTaskSingle1.getAge()); patTaskRelevance.setSfzh(svyTaskSingle1.getSfzh()); patTaskRelevance.setPhone(svyTaskSingle1.getPhone()); patTaskRelevance.setAddr(svyTaskSingle1.getAddr()); patTaskRelevance.setDiagname(svyTaskSingle1.getDiagname()); patTaskRelevance.setPatid(svyTaskSingle1.getPatid()); patTaskRelevance.setSendStatus(svyTaskSingle1.getSendstate()); patTaskRelevances.add(patTaskRelevance); } if (svyTaskSingle1.getHospType().equals("2")) { log.info("随访查询为出院,{}", svyTaskSingle1.getHospType()); patTaskRelevance.setName(svyTaskSingle1.getSendname()); patTaskRelevance.setAge(svyTaskSingle1.getAge()); patTaskRelevance.setSfzh(svyTaskSingle1.getSfzh()); patTaskRelevance.setPhone(svyTaskSingle1.getPhone()); patTaskRelevance.setAddr(svyTaskSingle1.getAddr()); patTaskRelevance.setDeptName(svyTaskSingle1.getDeptname()); patTaskRelevance.setBedNo(svyTaskSingle1.getBedno()); patTaskRelevance.setDiagname(svyTaskSingle1.getDiagname()); patTaskRelevance.setPatid(svyTaskSingle1.getPatid()); patTaskRelevance.setSendStatus(svyTaskSingle1.getSendstate()); patTaskRelevances.add(patTaskRelevance); } } svyTaskVO.setPatTaskRelevances(patTaskRelevances); return svyTaskVO; } private void optionHandle(SvyTaskSingle svyTaskSingle, Long taskId, Integer isoperation, Long patid) { if (isoperation == 1) { svyTaskSingle.setSendstate(1L); svyTaskSingleMapper.insertSvyTaskSingle(svyTaskSingle); } else if (isoperation == 2) svyTaskSingleMapper.updateSvyTaskSingle(svyTaskSingle); else if (isoperation == 3) svyTaskSingleMapper.deleteSvyTaskcallByCondition(taskId, patid); } }