From bd6c66c1a161e9f0fe94b94bed7935b2bde541f2 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期三, 14 五月 2025 18:14:32 +0800 Subject: [PATCH] 代码提交 --- smartor/src/main/java/com/smartor/service/impl/PatMedOperationServiceImpl.java | 200 +++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 175 insertions(+), 25 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 436ed44..bc61593 100644 --- a/smartor/src/main/java/com/smartor/service/impl/PatMedOperationServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOperationServiceImpl.java @@ -1,96 +1,246 @@ 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.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.domain.PatMedOperation; import com.smartor.service.IPatMedOperationService; /** * 鎮h�呮墜鏈褰昐ervice涓氬姟灞傚鐞� - * + * * @author lihu - * @date 2024-08-05 + * @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�呮墜鏈褰� - * + * * @param id 鎮h�呮墜鏈褰曚富閿� * @return 鎮h�呮墜鏈褰� */ @Override - public PatMedOperation selectPatMedOperationById(Long id) - { + public PatMedOperation selectPatMedOperationById(Long id) { return patMedOperationMapper.selectPatMedOperationById(id); } /** * 鏌ヨ鎮h�呮墜鏈褰曞垪琛� - * + * * @param patMedOperation 鎮h�呮墜鏈褰� * @return 鎮h�呮墜鏈褰� */ @Override - public List<PatMedOperation> selectPatMedOperationList(PatMedOperation patMedOperation) - { + public List<PatMedOperation> selectPatMedOperationList(PatMedOperation patMedOperation) { return patMedOperationMapper.selectPatMedOperationList(patMedOperation); } /** * 鏂板鎮h�呮墜鏈褰� - * + * * @param patMedOperation 鎮h�呮墜鏈褰� * @return 缁撴灉 */ @Override - public int insertPatMedOperation(PatMedOperation patMedOperation) - { + public int insertPatMedOperation(PatMedOperation patMedOperation) { patMedOperation.setCreateTime(DateUtils.getNowDate()); return patMedOperationMapper.insertPatMedOperation(patMedOperation); } /** * 淇敼鎮h�呮墜鏈褰� - * + * * @param patMedOperation 鎮h�呮墜鏈褰� * @return 缁撴灉 */ @Override - public int updatePatMedOperation(PatMedOperation patMedOperation) - { + public int updatePatMedOperation(PatMedOperation patMedOperation) { patMedOperation.setUpdateTime(DateUtils.getNowDate()); return patMedOperationMapper.updatePatMedOperation(patMedOperation); } /** * 鎵归噺鍒犻櫎鎮h�呮墜鏈褰� - * + * * @param ids 闇�瑕佸垹闄ょ殑鎮h�呮墜鏈褰曚富閿� * @return 缁撴灉 */ @Override - public int deletePatMedOperationByIds(Long[] ids) - { + public int deletePatMedOperationByIds(Long[] ids) { return patMedOperationMapper.deletePatMedOperationByIds(ids); } /** * 鍒犻櫎鎮h�呮墜鏈褰曚俊鎭� - * + * * @param id 鎮h�呮墜鏈褰曚富閿� * @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()); + log.error("serviceSubtask888888鐨勫�间负锛歿}",serviceSubtask); + //涓嶆墽琛� + 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