|
@@ -4,10 +4,14 @@ import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
|
|
+import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
|
|
import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanPageReqVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanPageReqVO;
|
|
|
import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanItemRespVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanItemRespVO;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanLogRespVO;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanLowFrequencyByFloorRespVO;
|
|
|
import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanRespVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanRespVO;
|
|
|
import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanSaveReqVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanSaveReqVO;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanItemWithElderVO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.biz.DailyExpensesDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.biz.DailyExpensesDO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyContractDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyContractDO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyInfoDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyInfoDO;
|
|
@@ -22,10 +26,12 @@ import cn.iocoder.yudao.module.system.dal.mysql.biz.NurseItemMapper;
|
|
|
import cn.iocoder.yudao.module.system.dal.mysql.biz.NursingCategoryMapper;
|
|
import cn.iocoder.yudao.module.system.dal.mysql.biz.NursingCategoryMapper;
|
|
|
import cn.iocoder.yudao.module.system.dal.mysql.biz.NursingPlanItemMapper;
|
|
import cn.iocoder.yudao.module.system.dal.mysql.biz.NursingPlanItemMapper;
|
|
|
import cn.iocoder.yudao.module.system.dal.mysql.biz.NursingPlanMapper;
|
|
import cn.iocoder.yudao.module.system.dal.mysql.biz.NursingPlanMapper;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.mysql.elderly.ElderlyNursingLogMapper;
|
|
|
import cn.iocoder.yudao.module.system.enums.common.BooleanEnum;
|
|
import cn.iocoder.yudao.module.system.enums.common.BooleanEnum;
|
|
|
import cn.iocoder.yudao.module.system.service.biz.BuildService;
|
|
import cn.iocoder.yudao.module.system.service.biz.BuildService;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
@@ -37,6 +43,7 @@ import java.math.RoundingMode;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
import java.time.ZoneId;
|
|
import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -73,6 +80,9 @@ public class NursingPlanServiceImpl implements NursingPlanService {
|
|
|
@Resource
|
|
@Resource
|
|
|
private DailyExpensesMapper dailyExpensesMapper;
|
|
private DailyExpensesMapper dailyExpensesMapper;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private ElderlyNursingLogMapper elderlyNursingLogMapper;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional
|
|
@Transactional
|
|
|
public void createNursingPlan(NursingPlanSaveReqVO createReqVO) {
|
|
public void createNursingPlan(NursingPlanSaveReqVO createReqVO) {
|
|
@@ -90,6 +100,7 @@ public class NursingPlanServiceImpl implements NursingPlanService {
|
|
|
NursingPlanDO nursingPlan = new NursingPlanDO();
|
|
NursingPlanDO nursingPlan = new NursingPlanDO();
|
|
|
BeanUtils.copyProperties(createReqVO, nursingPlan);
|
|
BeanUtils.copyProperties(createReqVO, nursingPlan);
|
|
|
nursingPlan.setCreatedTime(new Date());
|
|
nursingPlan.setCreatedTime(new Date());
|
|
|
|
|
+ nursingPlan.setStatus(1);
|
|
|
nursingPlan.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
nursingPlan.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
|
|
|
|
|
|
|
|
|
@@ -151,7 +162,7 @@ public class NursingPlanServiceImpl implements NursingPlanService {
|
|
|
respVO.setNurseLevelName(elderlyInfoDO == null ? null : elderlyInfoDO.getNurseLevelName());
|
|
respVO.setNurseLevelName(elderlyInfoDO == null ? null : elderlyInfoDO.getNurseLevelName());
|
|
|
|
|
|
|
|
List<NursingPlanItemRespVO> allItems =
|
|
List<NursingPlanItemRespVO> allItems =
|
|
|
- nursingPlanItemMapper.selectNursingPlanItemsWithFrequencyCategory(nursingPlanDO.getId(), null);
|
|
|
|
|
|
|
+ nursingPlanItemMapper.selectNursingPlanItemsWithFrequencyCategory(nursingPlanDO.getId(), null,null);
|
|
|
Map<Boolean, List<NursingPlanItemRespVO>> itemGroup = allItems.stream()
|
|
Map<Boolean, List<NursingPlanItemRespVO>> itemGroup = allItems.stream()
|
|
|
.collect(Collectors.partitioningBy(item -> BooleanEnum.TRUE.getValue().equals(item.getIsExtra())));
|
|
.collect(Collectors.partitioningBy(item -> BooleanEnum.TRUE.getValue().equals(item.getIsExtra())));
|
|
|
|
|
|
|
@@ -275,20 +286,44 @@ public class NursingPlanServiceImpl implements NursingPlanService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public List<NursingPlanRespVO> getNursingPlanByElderId(Long elderId) {
|
|
|
|
|
- List<NursingPlanDO> nursingPlanList = nursingPlanMapper.selectList(new LambdaQueryWrapperX<NursingPlanDO>()
|
|
|
|
|
- .eq(NursingPlanDO::getElderId, elderId));
|
|
|
|
|
-
|
|
|
|
|
- return nursingPlanList.stream().map(e -> {
|
|
|
|
|
- NursingPlanRespVO respVO = new NursingPlanRespVO();
|
|
|
|
|
- BeanUtils.copyProperties(e, respVO);
|
|
|
|
|
|
|
+ public List<NursingPlanLogRespVO> getNursingPlanByElderId(Long elderId) {
|
|
|
|
|
+ return elderlyNursingLogMapper.selectPlanLogByElderIdWithItemName(elderId);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- List<NursingPlanItemRespVO> nursingPlanItem =
|
|
|
|
|
- nursingPlanItemMapper.selectNursingPlanItemsWithFrequencyCategory(e.getId(), null);
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<NursingPlanLowFrequencyByFloorRespVO> getLowFrequencyPlanItemsByFloorId(Long floorId,Long tenantId) {
|
|
|
|
|
+ List<ElderlyInfoDO> elders = elderlyInfoMapper.selectList(new LambdaQueryWrapperX<ElderlyInfoDO>()
|
|
|
|
|
+ .select(ElderlyInfoDO::getId, ElderlyInfoDO::getElderName)
|
|
|
|
|
+ .eq(ElderlyInfoDO::getFloorId, floorId)
|
|
|
|
|
+ .eq(ElderlyInfoDO::getInStatus, 1));
|
|
|
|
|
+ if (CollectionUtil.isEmpty(elders)) {
|
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- respVO.setItems(nursingPlanItem);
|
|
|
|
|
- return respVO;
|
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
|
|
+ List<Long> elderIds = elders.stream().map(ElderlyInfoDO::getId).collect(Collectors.toList());
|
|
|
|
|
+ List<NursingPlanItemWithElderVO> rows = nursingPlanItemMapper
|
|
|
|
|
+ .selectPlanItemsWithElderByElderIdsAndFrequencyCategoryType(elderIds, 2, LocalDate.now(), tenantId);
|
|
|
|
|
+
|
|
|
|
|
+ Map<Long, List<NursingPlanItemRespVO>> itemsByElderId = rows.stream()
|
|
|
|
|
+ .filter(r -> r.getElderId() != null)
|
|
|
|
|
+ .collect(Collectors.groupingBy(NursingPlanItemWithElderVO::getElderId,
|
|
|
|
|
+ Collectors.mapping(r -> {
|
|
|
|
|
+ NursingPlanItemRespVO item = new NursingPlanItemRespVO();
|
|
|
|
|
+ BeanUtils.copyProperties(r, item);
|
|
|
|
|
+ return item;
|
|
|
|
|
+ }, Collectors.toList())));
|
|
|
|
|
+
|
|
|
|
|
+ List<NursingPlanLowFrequencyByFloorRespVO> result = new ArrayList<>(elders.size());
|
|
|
|
|
+ for (ElderlyInfoDO elder : elders) {
|
|
|
|
|
+ NursingPlanLowFrequencyByFloorRespVO vo = new NursingPlanLowFrequencyByFloorRespVO();
|
|
|
|
|
+ vo.setElderId(elder.getId());
|
|
|
|
|
+ vo.setElderName(elder.getElderName());
|
|
|
|
|
+ vo.setItems(itemsByElderId.getOrDefault(elder.getId(), Collections.emptyList()));
|
|
|
|
|
+ result.add(vo);
|
|
|
|
|
+ }
|
|
|
|
|
+ return result.stream()
|
|
|
|
|
+ .filter(e->CollectionUtil.isNotEmpty(e.getItems()))
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|