|
@@ -12,51 +12,36 @@ import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.dromara.common.core.constant.BizConst;
|
|
|
import org.dromara.common.core.domain.R;
|
|
|
-import org.dromara.common.core.enums.biz.DelFlag;
|
|
|
-import org.dromara.common.core.enums.biz.FeeType;
|
|
|
-import org.dromara.common.core.enums.biz.PaymentStatus;
|
|
|
+import org.dromara.common.core.enums.biz.*;
|
|
|
import org.dromara.common.core.exception.ServiceException;
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
+import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
+import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
import org.dromara.system.domain.SysUser;
|
|
|
import org.dromara.system.domain.vo.SysDictDataVo;
|
|
|
+import org.dromara.system.mapper.SysDeptMapper;
|
|
|
import org.dromara.system.mapper.SysUserMapper;
|
|
|
import org.dromara.system.service.ISysDictDataService;
|
|
|
-import org.dromara.web.domain.EnteralNutrition;
|
|
|
-import org.dromara.web.domain.EnteralNutritionConsumable;
|
|
|
-import org.dromara.web.domain.ProductNutrition;
|
|
|
-import org.dromara.web.domain.Settlement;
|
|
|
-import org.dromara.web.domain.SuppliesManage;
|
|
|
-import org.dromara.web.domain.TreatmentUser;
|
|
|
+import org.dromara.web.domain.*;
|
|
|
import org.dromara.web.domain.bo.EnteralNutritionBo;
|
|
|
import org.dromara.web.domain.bo.EnteralNutritionConsumableBo;
|
|
|
import org.dromara.web.domain.bo.EnteralNutritionSaveBo;
|
|
|
import org.dromara.web.domain.bo.SettlementBo;
|
|
|
-import org.dromara.web.domain.vo.EnteralNutritionConsumableVo;
|
|
|
-import org.dromara.web.domain.vo.EnteralNutritionQueryVo;
|
|
|
-import org.dromara.web.domain.vo.EnteralNutritionVo;
|
|
|
-import org.dromara.web.domain.vo.ProductNutritionVo;
|
|
|
-import org.dromara.web.mapper.EnteralNutritionConsumableMapper;
|
|
|
-import org.dromara.web.mapper.EnteralNutritionMapper;
|
|
|
-import org.dromara.web.mapper.ProductNutritionMapper;
|
|
|
-import org.dromara.web.mapper.SettlementMapper;
|
|
|
-import org.dromara.web.mapper.SuppliesManageMapper;
|
|
|
-import org.dromara.web.mapper.TreatmentUserMapper;
|
|
|
+import org.dromara.web.domain.vo.*;
|
|
|
+import org.dromara.web.mapper.*;
|
|
|
import org.dromara.web.service.IEnteralNutritionService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Collection;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Optional;
|
|
|
-import java.util.Set;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalTime;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* 肠内营养Service业务层处理
|
|
@@ -78,6 +63,9 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
private final SysUserMapper userMapper;
|
|
|
private final ISysDictDataService dataService;
|
|
|
|
|
|
+ private final SysDeptMapper deptMapper;
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 查询肠内营养
|
|
|
*
|
|
@@ -89,24 +77,164 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
return baseMapper.selectVoById(id);
|
|
|
}
|
|
|
|
|
|
+ public List<EnteralNutritionVo> queryBySettlementId(Long settlementId) {
|
|
|
+ SettlementVo selectVoById = settlementMapper.selectVoById(settlementId);
|
|
|
+
|
|
|
+ List<EnteralNutritionVo> nutritionVoList = baseMapper.selectVoList(new LambdaQueryWrapper<EnteralNutrition>().eq(EnteralNutrition::getSettlementId, selectVoById.getId()));
|
|
|
+ if (CollUtil.isNotEmpty(nutritionVoList)) {
|
|
|
+ Set<Long> userList = CollUtil.newHashSet();
|
|
|
+ nutritionVoList.forEach(v -> {
|
|
|
+ userList.add(v.getConfigBy());
|
|
|
+ userList.add(v.getExecuteBy());
|
|
|
+ });
|
|
|
+ // 按settlementId和groupNo分组
|
|
|
+ Map<String, List<EnteralNutritionVo>> groupedRecords = nutritionVoList.stream().collect(Collectors.groupingBy(r -> r.getSettlementId() + "_" + r.getGroupNo(), Collectors.toList()));
|
|
|
+
|
|
|
+ Map<Long, String> userMap = userMapper.selectList(Wrappers.lambdaQuery(SysUser.class).select(SysUser::getUserId, SysUser::getNickName).in(SysUser::getUserId, userList)).stream().collect(Collectors.toMap(k1 -> k1.getUserId(), k2 -> k2.getNickName(), (k1, k2) -> k1));
|
|
|
+ for (List<EnteralNutritionVo> group : groupedRecords.values()) {
|
|
|
+ if (CollUtil.isEmpty(group)) continue;
|
|
|
+ // 拼接id
|
|
|
+ String enteralNutritionIds = group.stream().map(EnteralNutritionVo::getId).filter(Objects::nonNull).distinct().map(String::valueOf).collect(Collectors.joining(","));
|
|
|
+
|
|
|
+ for (EnteralNutritionVo record : group) {
|
|
|
+ // 设置用户信息
|
|
|
+ record.setIdStr(enteralNutritionIds);
|
|
|
+ record.setCreateByName(userMap.get(record.getCreateBy()));
|
|
|
+ record.setConfigByName(userMap.get(record.getConfigBy()));
|
|
|
+ record.setExecuteByName(userMap.get(record.getExecuteBy()));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return nutritionVoList;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R<List<EnteralNutritionVo>> queryById(String ids) {
|
|
|
+ List<EnteralNutritionVo> nutritionVoList = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotBlank(ids)) {
|
|
|
+ // 获取当前登录用户的ID,并填充更新人信息
|
|
|
+ Long userId = LoginHelper.getUserId();
|
|
|
+ Optional.ofNullable(ids) // 处理ids可能为null的情况
|
|
|
+ .map(str -> Arrays.stream(str.split(","))) // 按逗号分割
|
|
|
+ .orElseGet(Stream::empty) // 如果ids为null,返回空流
|
|
|
+ .map(String::trim) // 去除空格
|
|
|
+ .filter(StringUtils::isNotBlank) // 过滤空字符串
|
|
|
+ .forEach(id -> {
|
|
|
+ try {
|
|
|
+ Long parsedId = Long.parseLong(id);
|
|
|
+ EnteralNutritionVo enteralNutritionVo = baseMapper.selectVoById(parsedId);
|
|
|
+ nutritionVoList.add(enteralNutritionVo);
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ log.error("Invalid ID format: {}", id, e); // 记录错误日志
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return R.ok(nutritionVoList);
|
|
|
+ }
|
|
|
+
|
|
|
+ //手动配置
|
|
|
+ @Override
|
|
|
+ public R manualConfig(String ids) {
|
|
|
+ if (StringUtils.isNotBlank(ids)) {
|
|
|
+ // 获取当前登录用户的ID,并填充更新人信息
|
|
|
+ Long userId = LoginHelper.getUserId();
|
|
|
+ Optional.ofNullable(ids) // 处理ids可能为null的情况
|
|
|
+ .map(str -> Arrays.stream(str.split(","))) // 按逗号分割
|
|
|
+ .orElseGet(Stream::empty) // 如果ids为null,返回空流
|
|
|
+ .map(String::trim) // 去除空格
|
|
|
+ .filter(StringUtils::isNotBlank) // 过滤空字符串
|
|
|
+ .forEach(id -> {
|
|
|
+ try {
|
|
|
+ Long parsedId = Long.parseLong(id);
|
|
|
+ EnteralNutrition vo = baseMapper.selectById(parsedId);
|
|
|
+ if (vo != null) {
|
|
|
+ vo.setConfigStatus(ConfigStatus.ONE.getCode()); // 设置状态
|
|
|
+ vo.setConfigTime(new Date()); // 设置更新时间
|
|
|
+ vo.setConfigBy(userId); // 设置操作人(需替换成实际方法)
|
|
|
+ baseMapper.updateById(vo); // 执行更新
|
|
|
+ }
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ log.error("Invalid ID format: {}", id, e); // 记录错误日志
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R execute(String ids) {
|
|
|
+ if (StringUtils.isNotBlank(ids)) {
|
|
|
+ // 获取当前登录用户的ID,并填充更新人信息
|
|
|
+ Long userId = LoginHelper.getUserId();
|
|
|
+ Optional.ofNullable(ids) // 处理ids可能为null的情况
|
|
|
+ .map(str -> Arrays.stream(str.split(","))) // 按逗号分割
|
|
|
+ .orElseGet(Stream::empty) // 如果ids为null,返回空流
|
|
|
+ .map(String::trim) // 去除空格
|
|
|
+ .filter(StringUtils::isNotBlank) // 过滤空字符串
|
|
|
+ .forEach(id -> {
|
|
|
+ try {
|
|
|
+ Long parsedId = Long.parseLong(id);
|
|
|
+ EnteralNutrition vo = baseMapper.selectById(parsedId);
|
|
|
+ if (vo != null) {
|
|
|
+ vo.setExecuteStatus(ExecuteStatus.ONE.getCode()); // 设置状态
|
|
|
+ vo.setExecuteDate(LocalDate.now()); // 更新执行时间
|
|
|
+ vo.setExecuteTime(LocalTime.now());
|
|
|
+ vo.setExecuteBy(userId); // 设置操作人(需替换成实际方法)
|
|
|
+ baseMapper.updateById(vo); // 执行更新
|
|
|
+ }
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ log.error("Invalid ID format: {}", id, e); // 记录错误日志
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R tagPrint(String ids) {
|
|
|
+ if (StringUtils.isNotBlank(ids)) {
|
|
|
+ System.err.println("当前打印 ids : " + ids);
|
|
|
+ // 获取当前登录用户的ID,并填充更新人信息
|
|
|
+ Long userId = LoginHelper.getUserId();
|
|
|
+ Optional.ofNullable(ids) // 处理ids可能为null的情况
|
|
|
+ .map(str -> Arrays.stream(str.split(","))) // 按逗号分割
|
|
|
+ .orElseGet(Stream::empty) // 如果ids为null,返回空流
|
|
|
+ .map(String::trim) // 去除空格
|
|
|
+ .filter(StringUtils::isNotBlank) // 过滤空字符串
|
|
|
+ .forEach(id -> {
|
|
|
+ System.err.println("当前打印:"+id);
|
|
|
+ try {
|
|
|
+ Long parsedId = Long.parseLong(id);
|
|
|
+ EnteralNutrition vo = baseMapper.selectById(parsedId);
|
|
|
+ if (vo != null) {
|
|
|
+ vo.setTagPrintNum(vo.getTagPrintNum() + 1);
|
|
|
+ baseMapper.updateById(vo); // 执行更新
|
|
|
+ }
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ log.error("Invalid ID format: {}", id, e); // 记录错误日志
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public R<EnteralNutritionQueryVo> detail(Long id) {
|
|
|
if (ObjUtil.isNull(id)) {
|
|
|
throw new ServiceException("id不能为空!");
|
|
|
}
|
|
|
|
|
|
- List<EnteralNutrition> nutritionList = baseMapper.selectList(Wrappers.lambdaQuery(EnteralNutrition.class)
|
|
|
- .eq(EnteralNutrition::getSettlementId, id));
|
|
|
- List<EnteralNutritionConsumable> consumableList = consumableMapper.selectList(Wrappers.lambdaQuery(EnteralNutritionConsumable.class)
|
|
|
- .eq(EnteralNutritionConsumable::getSettlementId, id));
|
|
|
+ List<EnteralNutrition> nutritionList = baseMapper.selectList(Wrappers.lambdaQuery(EnteralNutrition.class).eq(EnteralNutrition::getSettlementId, id));
|
|
|
+ List<EnteralNutritionConsumable> consumableList = consumableMapper.selectList(Wrappers.lambdaQuery(EnteralNutritionConsumable.class).eq(EnteralNutritionConsumable::getSettlementId, id));
|
|
|
|
|
|
EnteralNutritionQueryVo queryVo = new EnteralNutritionQueryVo();
|
|
|
queryVo.setNutritionList(MapstructUtils.convert(nutritionList, EnteralNutritionVo.class));
|
|
|
queryVo.setConsumableList(MapstructUtils.convert(consumableList, EnteralNutritionConsumableVo.class));
|
|
|
|
|
|
if (CollUtil.isNotEmpty(nutritionList)) {
|
|
|
- queryVo.setProductNutritionMap(productNutritionMapper.selectByIds(nutritionList.stream().map(EnteralNutrition::getNutritionProductId).collect(Collectors.toSet()))
|
|
|
- .stream().map(v -> MapstructUtils.convert(v, ProductNutritionVo.class)).collect(Collectors.toMap(k1 -> k1.getId(), k2 -> k2, (k1, k12) -> k1)));
|
|
|
+ queryVo.setProductNutritionMap(productNutritionMapper.selectByIds(nutritionList.stream().map(EnteralNutrition::getNutritionProductId).collect(Collectors.toSet())).stream().map(v -> MapstructUtils.convert(v, ProductNutritionVo.class)).collect(Collectors.toMap(k1 -> k1.getId(), k2 -> k2, (k1, k12) -> k1)));
|
|
|
|
|
|
queryVo.getNutritionList().forEach(nutrition -> {
|
|
|
nutrition.setMealTime(Arrays.stream(nutrition.getMealTime().split(",")).filter(StrUtil::isNotBlank).collect(Collectors.joining(",")));
|
|
@@ -174,17 +302,11 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
});
|
|
|
|
|
|
Set<Long> settlementIdList = settlementMap.keySet();
|
|
|
- Map<Long, List<EnteralNutrition>> nutritionGroupMap = baseMapper.selectList(
|
|
|
- Wrappers.lambdaQuery(EnteralNutrition.class).in(EnteralNutrition::getSettlementId, settlementIdList))
|
|
|
- .stream().collect(Collectors.groupingBy(EnteralNutrition::getSettlementId));
|
|
|
+ Map<Long, List<EnteralNutrition>> nutritionGroupMap = baseMapper.selectList(Wrappers.lambdaQuery(EnteralNutrition.class).in(EnteralNutrition::getSettlementId, settlementIdList)).stream().collect(Collectors.groupingBy(EnteralNutrition::getSettlementId));
|
|
|
|
|
|
- Map<Long, List<EnteralNutritionConsumable>> consumableGroupMap = consumableMapper.selectList(
|
|
|
- Wrappers.lambdaQuery(EnteralNutritionConsumable.class).in(EnteralNutritionConsumable::getSettlementId, settlementIdList))
|
|
|
- .stream().collect(Collectors.groupingBy(EnteralNutritionConsumable::getSettlementId));
|
|
|
+ Map<Long, List<EnteralNutritionConsumable>> consumableGroupMap = consumableMapper.selectList(Wrappers.lambdaQuery(EnteralNutritionConsumable.class).in(EnteralNutritionConsumable::getSettlementId, settlementIdList)).stream().collect(Collectors.groupingBy(EnteralNutritionConsumable::getSettlementId));
|
|
|
|
|
|
- Map<Long, String> userMap = userMapper.selectList(Wrappers.lambdaQuery(SysUser.class)
|
|
|
- .select(SysUser::getUserId, SysUser::getNickName)
|
|
|
- .in(SysUser::getUserId, userList)).stream().collect(Collectors.toMap(k1 -> k1.getUserId(), k2 -> k2.getNickName(), (k1, k2) -> k1));
|
|
|
+ Map<Long, String> userMap = userMapper.selectList(Wrappers.lambdaQuery(SysUser.class).select(SysUser::getUserId, SysUser::getNickName).in(SysUser::getUserId, userList)).stream().collect(Collectors.toMap(k1 -> k1.getUserId(), k2 -> k2.getNickName(), (k1, k2) -> k1));
|
|
|
|
|
|
Map<String, List<SysDictDataVo>> dictMap = dataService.selectGroupByType(List.of(BizConst.PAYMENT_STATUS, BizConst.FEE_TYPE)).getData();
|
|
|
Map<String, String> paymentMap = dictMap.get(BizConst.PAYMENT_STATUS).stream().collect(Collectors.toMap(k1 -> k1.getDictValue(), k2 -> k2.getDictLabel(), (k1, k2) -> k1));
|
|
@@ -271,8 +393,7 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
}
|
|
|
|
|
|
private void saveOrUpdateData(EnteralNutritionSaveBo bo, Settlement settlement) {
|
|
|
- Map<String, List<SysDictDataVo>> dictMap = dataService.selectGroupByType(
|
|
|
- List.of(BizConst.PRODUCT_SPEC_UNIT, BizConst.PRODUCT_PACKAGE_UNIT)).getData();
|
|
|
+ Map<String, List<SysDictDataVo>> dictMap = dataService.selectGroupByType(List.of(BizConst.PRODUCT_SPEC_UNIT, BizConst.PRODUCT_PACKAGE_UNIT)).getData();
|
|
|
Map<String, String> specUnitMap = dictMap.get(BizConst.PRODUCT_SPEC_UNIT).stream().collect(Collectors.toMap(k1 -> k1.getDictValue(), k2 -> k2.getDictLabel(), (k1, k2) -> k1));
|
|
|
Map<String, String> packageUnitMap = dictMap.get(BizConst.PRODUCT_PACKAGE_UNIT).stream().collect(Collectors.toMap(k1 -> k1.getDictValue(), k2 -> k2.getDictLabel(), (k1, k2) -> k1));
|
|
|
|
|
@@ -290,8 +411,7 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- Map<Long, ProductNutrition> nutritionMap = productNutritionMapper.selectByIds(idList)
|
|
|
- .stream().collect(Collectors.toMap(k1 -> k1.getId(), k2 -> k2, (k1, k2) -> k1));
|
|
|
+ Map<Long, ProductNutrition> nutritionMap = productNutritionMapper.selectByIds(idList).stream().collect(Collectors.toMap(k1 -> k1.getId(), k2 -> k2, (k1, k2) -> k1));
|
|
|
BigDecimal total = BigDecimal.ZERO;
|
|
|
Map<String, EnteralNutritionBo> groupNoMap = MapUtil.newHashMap(bo.getNutritionList().size());
|
|
|
for (EnteralNutritionBo nutritionBo : bo.getNutritionList()) {
|
|
@@ -305,8 +425,7 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
throw new ServiceException("餐次时间不能为空");
|
|
|
}
|
|
|
|
|
|
- Set<String> mealTimeSet = Arrays.stream(nutritionBo.getMealTime().split(","))
|
|
|
- .map(String::trim).filter(StrUtil::isNotBlank).collect(Collectors.toSet());
|
|
|
+ Set<String> mealTimeSet = Arrays.stream(nutritionBo.getMealTime().split(",")).map(String::trim).filter(StrUtil::isNotBlank).collect(Collectors.toSet());
|
|
|
nutritionBo.setFrequency(Long.valueOf(mealTimeSet.size()));
|
|
|
|
|
|
if (FeeType.PRE_PACKAGED_PRESCRIPTION.getCode().equalsIgnoreCase(bo.getChargeType())) {
|
|
@@ -324,11 +443,9 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
throw new ServiceException("数量不能为空");
|
|
|
}
|
|
|
|
|
|
- nutritionBo.setAmount(BigDecimal.valueOf(nutritionBo.getQuantity() * nutrition.getPackagePrice())
|
|
|
- .multiply(new BigDecimal(nutrition.getProductSpec())).multiply(nutritionBo.getDosePerTime()));
|
|
|
+ nutritionBo.setAmount(BigDecimal.valueOf(nutritionBo.getQuantity() * nutrition.getPackagePrice()).multiply(new BigDecimal(nutrition.getProductSpec())).multiply(nutritionBo.getDosePerTime()));
|
|
|
|
|
|
- nutritionBo.setDailyCalories(BigDecimal.valueOf(nutrition.getCalorie() * nutritionBo.getFrequency() / 100.0)
|
|
|
- .multiply(nutritionBo.getDosePerTime()));
|
|
|
+ nutritionBo.setDailyCalories(BigDecimal.valueOf(nutrition.getCalorie() * nutritionBo.getFrequency() / 100.0).multiply(nutritionBo.getDosePerTime()));
|
|
|
|
|
|
settlement.setStopDate(DateUtil.offsetDay(nutritionBo.getPrescriptionDate(), nutritionBo.getUsageDays().intValue() - 1));
|
|
|
nutritionBo.setStopDate(settlement.getStopDate());
|
|
@@ -371,16 +488,12 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
throw new ServiceException("首日不能为空");
|
|
|
}
|
|
|
|
|
|
- product.setAmount(BigDecimal.valueOf(nutrition.getConfigSalePrice() *
|
|
|
- (nutritionBo.getFrequency() * (nutritionBo.getUsageDays() - 1) + nutritionBo.getFirstDay()))
|
|
|
- .multiply(product.getDosePerTime()));
|
|
|
+ product.setAmount(BigDecimal.valueOf(nutrition.getConfigSalePrice() * (nutritionBo.getFrequency() * (nutritionBo.getUsageDays() - 1) + nutritionBo.getFirstDay())).multiply(product.getDosePerTime()));
|
|
|
product.setAmount(BigDecimal.ZERO.compareTo(product.getAmount()) > 0 ? BigDecimal.ZERO : product.getAmount());
|
|
|
|
|
|
- product.setDailyCalories(BigDecimal.valueOf(nutrition.getCalorie() * nutritionBo.getFrequency() / 100.0)
|
|
|
- .multiply(product.getDosePerTime()));
|
|
|
+ product.setDailyCalories(BigDecimal.valueOf(nutrition.getCalorie() * nutritionBo.getFrequency() / 100.0).multiply(product.getDosePerTime()));
|
|
|
|
|
|
- product.setTotalDose(BigDecimal.valueOf((nutritionBo.getFrequency() * (nutritionBo.getUsageDays() - 1) + nutritionBo.getFirstDay()))
|
|
|
- .multiply(product.getDosePerTime()));
|
|
|
+ product.setTotalDose(BigDecimal.valueOf((nutritionBo.getFrequency() * (nutritionBo.getUsageDays() - 1) + nutritionBo.getFirstDay())).multiply(product.getDosePerTime()));
|
|
|
|
|
|
settlement.setStopDate(DateUtil.offsetDay(nutritionBo.getPrescriptionDate(), product.getUsageDays().intValue() - 1));
|
|
|
product.setStopDate(settlement.getStopDate());
|
|
@@ -400,12 +513,10 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
long days = DateUtil.between(nutritionBo.getPrescriptionDate(), product.getStopDate(), DateUnit.DAY) + 1;
|
|
|
product.setUsageDays(days);
|
|
|
|
|
|
- product.setAmount(BigDecimal.valueOf(((days - 1) * nutritionBo.getFrequency() + nutritionBo.getFirstDay()) * nutrition.getConfigSalePrice())
|
|
|
- .multiply(product.getDosePerTime()));
|
|
|
+ product.setAmount(BigDecimal.valueOf(((days - 1) * nutritionBo.getFrequency() + nutritionBo.getFirstDay()) * nutrition.getConfigSalePrice()).multiply(product.getDosePerTime()));
|
|
|
product.setAmount(BigDecimal.ZERO.compareTo(product.getAmount()) > 0 ? BigDecimal.ZERO : product.getAmount());
|
|
|
|
|
|
- product.setDailyCalories(BigDecimal.valueOf(nutrition.getCalorie() * nutritionBo.getFrequency() / 100.0)
|
|
|
- .multiply(product.getDosePerTime()));
|
|
|
+ product.setDailyCalories(BigDecimal.valueOf(nutrition.getCalorie() * nutritionBo.getFrequency() / 100.0).multiply(product.getDosePerTime()));
|
|
|
|
|
|
settlement.setStopDate(product.getStopDate());
|
|
|
}
|
|
@@ -430,8 +541,7 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
consumableIds.add(v.getConsumableId());
|
|
|
});
|
|
|
|
|
|
- Map<Long, SuppliesManage> suppliesManageMap = suppliesManageMapper.selectByIds(consumableIds).stream()
|
|
|
- .collect(Collectors.toMap(k1 -> k1.getId(), k2 -> k2, (k1, k2) -> k1));
|
|
|
+ Map<Long, SuppliesManage> suppliesManageMap = suppliesManageMapper.selectByIds(consumableIds).stream().collect(Collectors.toMap(k1 -> k1.getId(), k2 -> k2, (k1, k2) -> k1));
|
|
|
|
|
|
bo.getConsumableList().forEach(v -> {
|
|
|
SuppliesManage suppliesManage = suppliesManageMap.get(v.getConsumableId());
|
|
@@ -449,8 +559,7 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
days = nutritionBo.getUsageDays();
|
|
|
}
|
|
|
|
|
|
- v.setQuantity(BigDecimal.valueOf(days - 1).multiply(BigDecimal.valueOf(v.getFrequency()))
|
|
|
- .add(BigDecimal.valueOf(v.getFirstDay())).multiply(v.getDosePerTime()).longValue());
|
|
|
+ v.setQuantity(BigDecimal.valueOf(days - 1).multiply(BigDecimal.valueOf(v.getFrequency())).add(BigDecimal.valueOf(v.getFirstDay())).multiply(v.getDosePerTime()).longValue());
|
|
|
v.setQuantity(Math.max(v.getQuantity(), 0L));
|
|
|
}
|
|
|
|
|
@@ -551,9 +660,39 @@ public class EnteralNutritionServiceImpl implements IEnteralNutritionService {
|
|
|
if (isValid) {
|
|
|
//TODO 做一些业务上的校验,判断是否需要校验
|
|
|
}
|
|
|
- int cnt = settlementMapper.update(Wrappers.lambdaUpdate(Settlement.class)
|
|
|
- .set(Settlement::getDelFlag, DelFlag.YES.getCode())
|
|
|
- .in(Settlement::getId, ids));
|
|
|
+ int cnt = settlementMapper.update(Wrappers.lambdaUpdate(Settlement.class).set(Settlement::getDelFlag, DelFlag.YES.getCode()).in(Settlement::getId, ids));
|
|
|
return cnt > 0;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TableDataInfo<EnteralNutritionQueryOneVo> queryEnteralNutritionPageList(EnteralNutritionBo bo, PageQuery pageQuery) {
|
|
|
+ Map<String, Object> params = bo.getParams();
|
|
|
+ List<Date> executeDateRange = bo.getExecuteDateRange();
|
|
|
+ List<Date> prescriptionDateRange = bo.getPrescriptionDateRange();
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ String startExecuteDate = null;
|
|
|
+ String endExecuteDate = null;
|
|
|
+ String startTime = null;
|
|
|
+ String endTime = null;
|
|
|
+ if (executeDateRange != null && executeDateRange.size() == 2) {
|
|
|
+ startExecuteDate = sdf.format(executeDateRange.get(0)) + " 00:00:00"; // 开始时间
|
|
|
+ endExecuteDate = sdf.format(executeDateRange.get(1)) + " 23:59:59"; // 结束时间
|
|
|
+ }
|
|
|
+ if (prescriptionDateRange != null && prescriptionDateRange.size() == 2) {
|
|
|
+ startTime = sdf.format(prescriptionDateRange.get(0)) + " 00:00:00"; // 开始时间
|
|
|
+ endTime = sdf.format(prescriptionDateRange.get(1)) + " 23:59:59"; // 结束时间
|
|
|
+ }
|
|
|
+ // 计算正确的offset
|
|
|
+ int offset = (pageQuery.getPageNum() - 1) * pageQuery.getPageSize();
|
|
|
+ Integer total = baseMapper.queryPageVoCount(bo.getPrescriptionType(), bo.getVisitType(), bo.getConfigStatus(), bo.getPaymentStatus(), bo.getExecuteStatus(), bo.getDoorId(), bo.getWardId(), bo.getSearchValue(), startExecuteDate, endExecuteDate, startTime, endTime);
|
|
|
+
|
|
|
+ List<EnteralNutritionQueryOneVo> enteralNutritionVoList = baseMapper.queryPageVoList(bo.getPrescriptionType(), bo.getVisitType(), bo.getConfigStatus(), bo.getPaymentStatus(), bo.getExecuteStatus(), bo.getDoorId(), bo.getWardId(), bo.getSearchValue(), startExecuteDate, endExecuteDate, startTime, endTime, offset, pageQuery.getPageSize());
|
|
|
+
|
|
|
+ TableDataInfo tableDataInfo = new TableDataInfo();
|
|
|
+ tableDataInfo.setRows(enteralNutritionVoList);
|
|
|
+ tableDataInfo.setTotal(total);
|
|
|
+ return tableDataInfo;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|