Merge remote-tracking branch 'origin/dev_2.1.0' into dev_2.1.0

dev_2.1.0
xueqingkun 1 year ago
commit 5c2c347a3f

@ -1,16 +1,18 @@
package com.supervision.manage.controller.config;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.manage.service.AncillaryItemManageService;
import com.supervision.model.ConfigAncillaryItem;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@Api(tags = "辅助检查项管理")
@ -20,9 +22,35 @@ import java.util.List;
public class AncillaryItemManageController {
private final AncillaryItemManageService ancillaryItemManageService;
@ApiOperation("查询辅助检查项目列表")
@GetMapping("queryAncillaryItemList")
public List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo) {
return ancillaryItemManageService.queryAncillaryItemList(ancillaryItemReqVo);
}
@ApiOperation("分页查询辅助检查")
@GetMapping("queryAncillaryPage")
public IPage<ConfigAncillaryItem> queryAncillaryPage(String name, String type, Integer pageNum, Integer pageSize) {
return ancillaryItemManageService.queryAncillaryPage(name, type, pageNum, pageSize);
}
@ApiOperation("保存辅助检查项")
@PostMapping("saveAncillaryItem")
public void saveAncillaryItem(@RequestBody ConfigAncillaryItem configAncillaryItem) {
ancillaryItemManageService.saveAncillaryItem(configAncillaryItem);
}
@ApiOperation("修改辅助检查项")
@PostMapping("modifyAncillaryItem")
public void modifyAncillaryItem(@RequestBody ConfigAncillaryItem configAncillaryItem) {
ancillaryItemManageService.modifyAncillaryItem(configAncillaryItem);
}
@ApiOperation("删除辅助检查项")
@GetMapping("deleteAncillaryItem")
public void deleteAncillaryItem(String id){
ancillaryItemManageService.deleteAncillaryItem(id);
}
}

@ -4,6 +4,7 @@ package com.supervision.manage.controller.config;
import com.supervision.manage.service.PhysicalLocationManageService;
import com.supervision.vo.manage.PhysicalLocationNode;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
@ -26,4 +27,13 @@ public class PhysicalLocationManageController {
return physicalLocationManageService.queryTree();
}
@ApiModelProperty("查询体格检查身体部位配置树(支持已配置部位)")
@GetMapping("queryLocationTreeForPhysicalConfig")
public List<PhysicalLocationNode> queryLocationTreeForPhysicalConfig(String physicalId) {
return physicalLocationManageService.queryLocationTreeForPhysicalConfig(physicalId);
}
}

@ -41,6 +41,8 @@ public class PhysicalToolManageController {
return physicalToolManageService.queryConfigPhysicalToolDetail(id);
}
@ApiOperation("保存体格工具")
@PostMapping("saveConfigPhysicalTool")
public void saveConfigPhysicalTool(@RequestBody PhysicalToolVO physicalToolVO) {

@ -1,11 +1,22 @@
package com.supervision.manage.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.model.ConfigAncillaryItem;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
public interface AncillaryItemManageService {
List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo);
IPage<ConfigAncillaryItem> queryAncillaryPage(String name, String type, Integer pageNum, Integer pageSize);
void saveAncillaryItem(ConfigAncillaryItem configAncillaryItem);
void modifyAncillaryItem(ConfigAncillaryItem configAncillaryItem);
void deleteAncillaryItem(String id);
}

@ -9,4 +9,6 @@ public interface PhysicalLocationManageService {
List<PhysicalLocationNode> queryTree();
List<PhysicalLocationNode> queryLocationTreeForPhysicalConfig(String physicalId);
}

@ -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);
}
}

@ -3,10 +3,15 @@ package com.supervision.manage.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.CoordinateUtil;
import cn.hutool.core.util.StrUtil;
import com.supervision.manage.service.PhysicalLocationManageService;
import com.supervision.model.ConfigPhysicalLocation;
import com.supervision.model.ConfigPhysicalTool;
import com.supervision.model.DefaultPhysicalIndicator;
import com.supervision.service.ConfigPhysicalLocationService;
import com.supervision.service.ConfigPhysicalToolService;
import com.supervision.service.DefaultPhysicalIndicatorService;
import com.supervision.vo.manage.PhysicalLocationNode;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@ -20,6 +25,9 @@ import java.util.stream.Collectors;
public class PhysicalLocationManageServiceImpl implements PhysicalLocationManageService {
private final ConfigPhysicalLocationService configPhysicalLocationService;
private final DefaultPhysicalIndicatorService defaultPhysicalIndicatorService;
@Override
public List<PhysicalLocationNode> queryTree() {
@ -30,7 +38,7 @@ public class PhysicalLocationManageServiceImpl implements PhysicalLocationManage
Map<String, PhysicalLocationNode> map = list.stream().collect(
Collectors.toMap(ConfigPhysicalLocation::getId, p -> BeanUtil.toBean(p, PhysicalLocationNode.class)));
// 这里只支持2层
for (Map.Entry<String, PhysicalLocationNode> entry : map.entrySet()) {
PhysicalLocationNode value = entry.getValue();
if (StrUtil.isNotEmpty(value.getParentId())) {
@ -48,4 +56,33 @@ public class PhysicalLocationManageServiceImpl implements PhysicalLocationManage
return map.values().stream().filter(n -> StrUtil.isEmpty(n.getParentId())).collect(Collectors.toList());
}
@Override
public List<PhysicalLocationNode> queryLocationTreeForPhysicalConfig(String physicalId) {
// 首先构建位置树
List<PhysicalLocationNode> physicalLocationNodes = queryTree();
// 查询体格检查项目已经配置的部位
if (StrUtil.isNotEmpty(physicalId)) {
List<DefaultPhysicalIndicator> defaultPhysicalIndicatorList = defaultPhysicalIndicatorService.lambdaQuery().eq(DefaultPhysicalIndicator::getItemId, physicalId).list();
if (CollUtil.isNotEmpty(defaultPhysicalIndicatorList)) {
Set<String> itemIdSet = defaultPhysicalIndicatorList.stream().map(DefaultPhysicalIndicator::getLocationId).collect(Collectors.toSet());
if (CollUtil.isNotEmpty(itemIdSet)) {
// 现在只有2层,遍历2次就可以了
for (PhysicalLocationNode physicalLocationNode : physicalLocationNodes) {
if (itemIdSet.contains(physicalLocationNode.getId())) {
physicalLocationNode.setChoose(1);
}
if (CollUtil.isNotEmpty(physicalLocationNode.getChild())) {
for (PhysicalLocationNode child : physicalLocationNode.getChild()) {
if (itemIdSet.contains(child.getId())) {
child.setChoose(1);
}
}
}
}
}
}
}
return physicalLocationNodes;
}
}

@ -1,6 +1,7 @@
package com.supervision.vo.manage;
import com.supervision.model.ConfigPhysicalLocation;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -12,4 +13,7 @@ public class PhysicalLocationNode extends ConfigPhysicalLocation{
private List<PhysicalLocationNode> child;
@ApiModelProperty("是否被选中,1已被选中")
private Integer choose = 0;
}

Loading…
Cancel
Save