|
|
|
@ -1,9 +1,16 @@
|
|
|
|
|
package com.supervision.manage.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.supervision.exception.BusinessException;
|
|
|
|
|
import com.supervision.manage.service.AncillaryItemManageService;
|
|
|
|
|
import com.supervision.model.CommonDic;
|
|
|
|
|
import com.supervision.model.ConfigAncillaryItem;
|
|
|
|
|
import com.supervision.model.DiseaseAncillary;
|
|
|
|
|
import com.supervision.service.CommonDicService;
|
|
|
|
|
import com.supervision.service.ConfigAncillaryItemService;
|
|
|
|
|
import com.supervision.service.DiseaseAncillaryService;
|
|
|
|
|
import com.supervision.vo.ask.AncillaryItemReqVo;
|
|
|
|
@ -15,15 +22,93 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static cn.hutool.core.util.NumberUtil.add;
|
|
|
|
|
import static cn.hutool.core.util.NumberUtil.isValid;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
public class AncillaryItemManageServiceImpl implements AncillaryItemManageService {
|
|
|
|
|
|
|
|
|
|
private final ConfigAncillaryItemService configAncillaryItemService;
|
|
|
|
|
|
|
|
|
|
private final CommonDicService commonDicService;
|
|
|
|
|
|
|
|
|
|
private final DiseaseAncillaryService diseaseAncillaryService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo) {
|
|
|
|
|
return configAncillaryItemService.queryAncillaryItemList(ancillaryItemReqVo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public IPage<ConfigAncillaryItem> queryAncillaryPage(String name, String type, Integer pageNum, Integer pageSize) {
|
|
|
|
|
return configAncillaryItemService.lambdaQuery().like(StrUtil.isNotBlank(name), ConfigAncillaryItem::getItemName, name)
|
|
|
|
|
.eq(StrUtil.isNotBlank(type), ConfigAncillaryItem::getType, type)
|
|
|
|
|
.orderByAsc(ConfigAncillaryItem::getItemPriority)
|
|
|
|
|
.orderByDesc(ConfigAncillaryItem::getUpdateTime)
|
|
|
|
|
.page(new Page<>(pageNum, pageSize));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void saveAncillaryItem(ConfigAncillaryItem configAncillaryItem) {
|
|
|
|
|
Assert.notBlank(configAncillaryItem.getType(), () -> new BusinessException("类型不能为空"));
|
|
|
|
|
Assert.notBlank(configAncillaryItem.getItemName(), () -> new BusinessException("中文名不能为空"));
|
|
|
|
|
Assert.notBlank(configAncillaryItem.getItemNameEn(), () -> new BusinessException("英文名不能为空"));
|
|
|
|
|
if (0 > configAncillaryItemService.lambdaQuery().eq(ConfigAncillaryItem::getType, configAncillaryItem.getType())
|
|
|
|
|
.eq(ConfigAncillaryItem::getItemName, configAncillaryItem.getItemName()).count()) {
|
|
|
|
|
throw new BusinessException("中文名已存在,请重新输入");
|
|
|
|
|
}
|
|
|
|
|
if (0 > configAncillaryItemService.lambdaQuery().eq(ConfigAncillaryItem::getType, configAncillaryItem.getType())
|
|
|
|
|
.eq(ConfigAncillaryItem::getItemName, configAncillaryItem.getItemNameEn()).count()) {
|
|
|
|
|
throw new BusinessException("英文名名已存在,请重新输入");
|
|
|
|
|
}
|
|
|
|
|
CommonDic one = commonDicService.lambdaQuery().eq(CommonDic::getNameZh, configAncillaryItem.getItemName())
|
|
|
|
|
.eq(CommonDic::getGroupCode, "ANCILLARY_ITEM_PRIORITY").last("limit 1").one();
|
|
|
|
|
Assert.notNull(one, () -> new BusinessException("检查项类型不正确"));
|
|
|
|
|
configAncillaryItem.setTypePriority(Integer.valueOf(one.getCode()));
|
|
|
|
|
configAncillaryItemService.save(configAncillaryItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void modifyAncillaryItem(ConfigAncillaryItem configAncillaryItem) {
|
|
|
|
|
Assert.notBlank(configAncillaryItem.getId(), () -> new BusinessException("ID不能为空"));
|
|
|
|
|
Assert.notBlank(configAncillaryItem.getType(), () -> new BusinessException("类型不能为空"));
|
|
|
|
|
Assert.notBlank(configAncillaryItem.getItemName(), () -> new BusinessException("中文名不能为空"));
|
|
|
|
|
Assert.notBlank(configAncillaryItem.getItemNameEn(), () -> new BusinessException("英文名不能为空"));
|
|
|
|
|
// 首先找到原先的
|
|
|
|
|
ConfigAncillaryItem old = Optional.ofNullable(configAncillaryItemService.getById(configAncillaryItem.getId())).orElseThrow(() -> new BusinessException("未找到数据"));
|
|
|
|
|
|
|
|
|
|
if (0 > configAncillaryItemService.lambdaQuery()
|
|
|
|
|
.ne(ConfigAncillaryItem::getId, configAncillaryItem.getId())
|
|
|
|
|
.eq(ConfigAncillaryItem::getType, configAncillaryItem.getType())
|
|
|
|
|
.eq(ConfigAncillaryItem::getItemName, configAncillaryItem.getItemName()).count()) {
|
|
|
|
|
throw new BusinessException("中文名已存在,请重新输入");
|
|
|
|
|
}
|
|
|
|
|
if (0 > configAncillaryItemService.lambdaQuery()
|
|
|
|
|
.ne(ConfigAncillaryItem::getId, configAncillaryItem.getId())
|
|
|
|
|
.eq(ConfigAncillaryItem::getType, configAncillaryItem.getType())
|
|
|
|
|
.eq(ConfigAncillaryItem::getItemName, configAncillaryItem.getItemNameEn()).count()) {
|
|
|
|
|
throw new BusinessException("英文名名已存在,请重新输入");
|
|
|
|
|
}
|
|
|
|
|
if (!StrUtil.equals(configAncillaryItem.getType(), old.getType())) {
|
|
|
|
|
CommonDic one = commonDicService.lambdaQuery().eq(CommonDic::getNameZh, configAncillaryItem.getItemName())
|
|
|
|
|
.eq(CommonDic::getGroupCode, "ANCILLARY_ITEM_PRIORITY").last("limit 1").one();
|
|
|
|
|
Assert.notNull(one, () -> new BusinessException("检查项类型不正确"));
|
|
|
|
|
configAncillaryItem.setTypePriority(Integer.valueOf(one.getCode()));
|
|
|
|
|
}
|
|
|
|
|
configAncillaryItemService.saveOrUpdate(configAncillaryItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void deleteAncillaryItem(String id) {
|
|
|
|
|
// 首先检查辅助检查项是否被使用
|
|
|
|
|
if (0 > diseaseAncillaryService.lambdaQuery().eq(DiseaseAncillary::getItemId, id).count()){
|
|
|
|
|
throw new BusinessException("辅助检查项已被使用,无法删除");
|
|
|
|
|
}
|
|
|
|
|
configAncillaryItemService.removeById(id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|