From 707f7f5edc1a5d6cfe5d3e63be680bc4536b0d4c Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Mon, 1 Jul 2024 14:47:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=BB=E5=83=8F=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LabelFieldContentController.java | 4 +- .../tasktypedict/TaskTypeDictController.java | 3 + .../LabelFieldContentMapper.java | 3 + .../labelfieldinfo/LabelFieldInfoMapper.java | 3 +- .../ILabelFieldContentService.java | 4 +- .../impl/LabelFieldContentServiceImpl.java | 117 ++++++++++-------- .../vo/labelfieldcontent/GroupingValue.java | 2 + .../vo/labelfieldcontent/LabelField.java | 2 + .../LabelFieldAndPartitionDict.java | 18 +++ .../vo/labelfieldcontent/PortraitSnVO.java | 13 ++ .../LabelFieldContentMapper.xml | 76 ++++++++++++ .../labelfieldinfo/LabelFieldInfoMapper.xml | 16 ++- 12 files changed, 194 insertions(+), 67 deletions(-) create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/LabelFieldAndPartitionDict.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/PortraitSnVO.java diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/labelfieldcontent/LabelFieldContentController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/labelfieldcontent/LabelFieldContentController.java index 5c26a2de..e17d7723 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/labelfieldcontent/LabelFieldContentController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/labelfieldcontent/LabelFieldContentController.java @@ -15,6 +15,8 @@ import com.xinelu.manage.vo.labelfieldcontent.LabelField; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; + +import com.xinelu.manage.vo.labelfieldcontent.LabelFieldAndPartitionDict; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -111,7 +113,7 @@ public class LabelFieldContentController extends BaseController { * 画像查询 */ @GetMapping("/groupingValue") - public List> groupingValue(Long taskPartitionDictId, Long patientId) { + public List groupingValue(Long taskPartitionDictId, Long patientId) { return labelFieldContentService.groupingValue(taskPartitionDictId, patientId); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/tasktypedict/TaskTypeDictController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/tasktypedict/TaskTypeDictController.java index ec645f1a..2045f6ad 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/tasktypedict/TaskTypeDictController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/tasktypedict/TaskTypeDictController.java @@ -38,6 +38,9 @@ public class TaskTypeDictController extends BaseController { return getDataTable(list); } + /** + * 查询任务类型字典列表(不分页) + */ @GetMapping("/selectTaskTypeList") public AjaxResult selectTaskTypeList(TaskTypeDict taskTypeDict) { return AjaxResult.success(taskTypeDictService.selectTaskTypeDictList(taskTypeDict)); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/labelfieldcontent/LabelFieldContentMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/labelfieldcontent/LabelFieldContentMapper.java index 0d60deaa..7330699c 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/labelfieldcontent/LabelFieldContentMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/labelfieldcontent/LabelFieldContentMapper.java @@ -2,6 +2,7 @@ package com.xinelu.manage.mapper.labelfieldcontent; import com.xinelu.manage.domain.labelfieldcontent.LabelFieldContent; import com.xinelu.manage.vo.labelfieldcontent.GroupingValue; +import com.xinelu.manage.vo.labelfieldcontent.LabelFieldAndPartitionDict; import com.xinelu.manage.vo.labelfieldcontent.LabelFieldContentVO; import com.xinelu.manage.vo.labelfieldcontent.LabelFieldInfoContentVo; import org.apache.ibatis.annotations.Param; @@ -89,6 +90,8 @@ public interface LabelFieldContentMapper { * @param portraitStatus 状态 * @return GroupingValue */ + List labelFieldAndPartitionDict(@Param("taskPartitionDictId") Long taskPartitionDictId, @Param("patientId") Long patientId, @Param("portraitStatus") String portraitStatus); + List groupingValue(@Param("taskPartitionDictId") Long taskPartitionDictId, @Param("patientId") Long patientId, @Param("portraitStatus") String portraitStatus); /** diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/labelfieldinfo/LabelFieldInfoMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/labelfieldinfo/LabelFieldInfoMapper.java index e100bd44..eee9fdf6 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/labelfieldinfo/LabelFieldInfoMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/labelfieldinfo/LabelFieldInfoMapper.java @@ -83,10 +83,9 @@ public interface LabelFieldInfoMapper { /** * 分组信息 * - * @param taskPartitionDictName 分组名 * @return LabelFieldInfo */ - List taskPartitionDictIdList(String taskPartitionDictName); + List taskPartitionDictIdList(); /** * 查询标签 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/labelfieldcontent/ILabelFieldContentService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/labelfieldcontent/ILabelFieldContentService.java index ea78045a..7b17e7a3 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/labelfieldcontent/ILabelFieldContentService.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/labelfieldcontent/ILabelFieldContentService.java @@ -5,6 +5,8 @@ import com.xinelu.manage.domain.labelfieldcontent.LabelFieldContent; import com.xinelu.manage.dto.labelfieldcontent.LabelFieldContentAddDTO; import com.xinelu.manage.vo.labelfieldcontent.GroupingValue; import com.xinelu.manage.vo.labelfieldcontent.LabelField; +import com.xinelu.manage.vo.labelfieldcontent.LabelFieldAndPartitionDict; + import java.util.List; /** @@ -81,7 +83,7 @@ public interface ILabelFieldContentService { * @param patientId 患者id * @return GroupingValue */ - List> groupingValue(Long taskPartitionDictId, Long patientId); + List groupingValue(Long taskPartitionDictId, Long patientId); /** * 画像内容新增 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/labelfieldcontent/impl/LabelFieldContentServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/labelfieldcontent/impl/LabelFieldContentServiceImpl.java index 48c6beef..f7bad8fd 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/labelfieldcontent/impl/LabelFieldContentServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/labelfieldcontent/impl/LabelFieldContentServiceImpl.java @@ -18,25 +18,23 @@ import com.xinelu.manage.mapper.labelfieldcontent.LabelFieldContentMapper; import com.xinelu.manage.mapper.labelfieldinfo.LabelFieldInfoMapper; import com.xinelu.manage.mapper.patientinfo.PatientAllInfoViewMapper; import com.xinelu.manage.service.labelfieldcontent.ILabelFieldContentService; -import com.xinelu.manage.vo.labelfieldcontent.GroupingValue; -import com.xinelu.manage.vo.labelfieldcontent.LabelField; -import com.xinelu.manage.vo.labelfieldcontent.LabelFieldContentVO; +import com.xinelu.manage.vo.labelfieldcontent.*; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; import java.lang.reflect.Field; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import javax.annotation.Resource; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; /** * 标签字段内容信息Service业务层处理 @@ -148,7 +146,7 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService { BeanUtils.copyProperties(contentDTO, labelFieldContent); labelFieldContent.setFieldId(labelFieldContentAddDTO.getFieldId()); labelFieldContent.setFieldName(labelFieldContentAddDTO.getFieldName()); - labelFieldContent.setPortraitStatus(PortraitStatusEnum.INUSE.getInfo()); + labelFieldContent.setPortraitStatus(PortraitStatusEnum.INUSE.getInfo()); labelFieldContent.setCreateBy(SecurityUtils.getUsername()); labelFieldContent.setCreateTime(LocalDateTime.now()); if (labelFieldContentMapper.insertLabelFieldContent(labelFieldContent) <= 0) { @@ -172,7 +170,7 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService { labelFieldInfo.setTaskPartitionDictName("全部"); labelFieldInfoList.add(labelFieldInfo); //任务细分表数据 - List labelFieldInfos = labelFieldInfoMapper.taskPartitionDictIdList(null); + List labelFieldInfos = labelFieldInfoMapper.taskPartitionDictIdList(); if (CollectionUtils.isNotEmpty(labelFieldInfos)) { labelFieldInfoList.addAll(labelFieldInfos); } @@ -191,15 +189,14 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService { * @return GroupingValue */ @Override - public List> groupingValue(Long taskPartitionDictId, Long patientId) { + public List groupingValue(Long taskPartitionDictId, Long patientId) { if (ObjectUtils.isEmpty(patientId)) { throw new ServiceException("请选择患者!"); } //根据patientId查询是否有已经维护的参数 - List labelFieldContents = labelFieldContentMapper.groupingValue(taskPartitionDictId, patientId, null); + List labelFieldContents = labelFieldContentMapper.labelFieldAndPartitionDict(taskPartitionDictId, patientId, null); if (CollectionUtils.isNotEmpty(labelFieldContents)) { - Map> collect = labelFieldContents.stream().collect(Collectors.groupingBy(GroupingValue::getPortraitSn)); - return new ArrayList<>(collect.values()); + return labelFieldContents; } //查询未维护标签及从患者表取值 List labelFieldContentList = labelFieldInfoMapper.selectLabelFieldInfoByTaskPartitionDictId(taskPartitionDictId); @@ -214,15 +211,21 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService { for (int i = 0; i < declaredFields.length; i++) { strings[i] = declaredFields[i].getName().toUpperCase(); } - List strings1 = Arrays.asList(strings); + List PortraitSnVOS = new ArrayList<>(); + List asListStrings = Arrays.asList(strings); for (GroupingValue groupingValue : labelFieldContentList) { + PortraitSnVO portraitSnVO = new PortraitSnVO(); groupingValue.setPatientId(patientId); - String s = strings1.stream().filter(Objects::nonNull).filter(item -> item.equals(groupingValue.getFieldCode())).findFirst().orElse(new String()); + String s = asListStrings.stream().filter(Objects::nonNull).filter(item -> item.equals(groupingValue.getFieldCode())).findFirst().orElse(new String()); groupingValue.setFieldValue(paramsValue.getOrDefault(s, "").toString()); + portraitSnVO.setPortraitSn(groupingValue.getPortraitSn()); + PortraitSnVOS.add(portraitSnVO); } - List> lists = new ArrayList<>(); - lists.add(labelFieldContentList); - return lists; + List labelFieldAndPartitionDictList = new ArrayList<>(); + LabelFieldAndPartitionDict labelFieldAndPartitionDict = new LabelFieldAndPartitionDict(); + labelFieldAndPartitionDict.setPortraitSnVOList(PortraitSnVOS); + labelFieldAndPartitionDictList.add(labelFieldAndPartitionDict); + return labelFieldAndPartitionDictList; } /** @@ -234,22 +237,27 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService { @Transactional(rollbackFor = Exception.class) @Override public AjaxResult insertLabelField(LabelField labelField) { - if (CollectionUtils.isEmpty(labelField.getGroupingValues())) { + if (CollectionUtils.isEmpty(labelField.getLabelFieldAndPartitionDictList())) { return AjaxResult.success(); } - List groupingValues = new ArrayList<>(); + List PortraitSnVOS = new ArrayList<>(); try { - for (List groupingValue : labelField.getGroupingValues()) { - if (StringUtils.isBlank(groupingValue.get(0).getPortraitSn())) { + for (LabelFieldAndPartitionDict labelFieldAndPartitionDict : labelField.getLabelFieldAndPartitionDictList()) { + if (StringUtils.isBlank(labelFieldAndPartitionDict.getPortraitSnVOList().get(0).getPortraitSn())) { String portraitSn = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); - groupingValue.forEach(item -> item.setPortraitSn(portraitSn)); + labelFieldAndPartitionDict.getPortraitSnVOList().forEach(item -> item.setPortraitSn(portraitSn)); } - groupingValues.addAll(groupingValue); + PortraitSnVOS.addAll(labelFieldAndPartitionDict.getPortraitSnVOList()); TimeUnit.MILLISECONDS.sleep(10); } } catch (InterruptedException e) { throw new RuntimeException(e); } + List groupingValues = new ArrayList<>(); + for (PortraitSnVO portraitSnVO : PortraitSnVOS) { + portraitSnVO.getGroupingValues().forEach(item -> item.setPortraitSn(portraitSnVO.getPortraitSn())); + groupingValues.addAll(portraitSnVO.getGroupingValues()); + } List updateGroupingValues = new ArrayList<>(); List insertGroupingValues = new ArrayList<>(); //传入标签ids @@ -269,13 +277,13 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService { if (Objects.isNull(groupingValue.getLabelFieldContentId())) { groupingValue.setCreateBy(SecurityUtils.getUsername()); groupingValue.setCreateTime(LocalDateTime.now()); - groupingValue.setPortraitStatus(PortraitStatusEnum.INUSE.getInfo()); + groupingValue.setPortraitStatus(PortraitStatusEnum.INUSE.getInfo()); insertGroupingValues.add(groupingValue); } if (Objects.nonNull(groupingValue.getLabelFieldContentId())) { groupingValue.setCreateTime(LocalDateTime.now()); groupingValue.setCreateBy(SecurityUtils.getUsername()); - groupingValue.setPortraitStatus(PortraitStatusEnum.INUSE.getInfo()); + groupingValue.setPortraitStatus(PortraitStatusEnum.INUSE.getInfo()); updateGroupingValues.add(groupingValue); } } @@ -288,33 +296,34 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService { return AjaxResult.success(); } - @Override public List> getPortaitByPatient(Long patientId) { - //List>>> retMap = new ArrayList<>(); - List> retList = new ArrayList<>(); - List labelFieldContents = labelFieldContentMapper.groupingValue(0L, patientId, null); - if (CollectionUtils.isEmpty(labelFieldContents)) { - return null; - } - retList.add(labelFieldContents); - // 按照任务细分分组 - //Map> groupByPartition = labelFieldContents.stream().collect(Collectors.groupingBy(GroupingValue::getTaskPartitionDictId)); + @Override + public List> getPortaitByPatient(Long patientId) { + //List>>> retMap = new ArrayList<>(); + List> retList = new ArrayList<>(); + List labelFieldContents = labelFieldContentMapper.groupingValue(0L, patientId, null); + if (CollectionUtils.isEmpty(labelFieldContents)) { + return null; + } + retList.add(labelFieldContents); + // 按照任务细分分组 + //Map> groupByPartition = labelFieldContents.stream().collect(Collectors.groupingBy(GroupingValue::getTaskPartitionDictId)); - //for (Long taskPartitionDictId : groupByPartition.keySet()) { - // Map>> retObj = new HashMap<>(); - // List> lists = new ArrayList<>(); - // // 按照sn分组 - // List partitionList = groupByPartition.get(taskPartitionDictId); - // Map> groupBySn = partitionList.stream().collect(Collectors.groupingBy(GroupingValue::getPortraitSn)); - // for (String sn : groupBySn.keySet()) { - // lists.add(groupBySn.get(sn)); - // } - // retObj.put(partitionList.get(0).getTaskPartitionDictName(), lists); - // retMap.add(retObj); - //} - return retList; - } + //for (Long taskPartitionDictId : groupByPartition.keySet()) { + // Map>> retObj = new HashMap<>(); + // List> lists = new ArrayList<>(); + // // 按照sn分组 + // List partitionList = groupByPartition.get(taskPartitionDictId); + // Map> groupBySn = partitionList.stream().collect(Collectors.groupingBy(GroupingValue::getPortraitSn)); + // for (String sn : groupBySn.keySet()) { + // lists.add(groupBySn.get(sn)); + // } + // retObj.put(partitionList.get(0).getTaskPartitionDictName(), lists); + // retMap.add(retObj); + //} + return retList; + } - /** + /** * 根据任务细分类型获取患者的真实信息 * * @param patientId 患者主键 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/GroupingValue.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/GroupingValue.java index e55b213c..c51758c7 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/GroupingValue.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/GroupingValue.java @@ -78,4 +78,6 @@ public class GroupingValue extends LabelFieldInfo { */ @ApiModelProperty(value = "内容备注信息") private String contentRemark; + + private Integer sign; } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/LabelField.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/LabelField.java index 5317f84c..7fd084b3 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/LabelField.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/LabelField.java @@ -8,4 +8,6 @@ import java.util.List; public class LabelField { private List> groupingValues; + + private List labelFieldAndPartitionDictList; } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/LabelFieldAndPartitionDict.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/LabelFieldAndPartitionDict.java new file mode 100644 index 00000000..88fc6953 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/LabelFieldAndPartitionDict.java @@ -0,0 +1,18 @@ +package com.xinelu.manage.vo.labelfieldcontent; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class LabelFieldAndPartitionDict { + + @ApiModelProperty(value = "任务细分id,当做分组使用") + private Long taskPartitionDictId; + + @ApiModelProperty(value = "任务细分名称(冗余)") + private String taskPartitionDictName; + + private List portraitSnVOList; +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/PortraitSnVO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/PortraitSnVO.java new file mode 100644 index 00000000..888bf978 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/labelfieldcontent/PortraitSnVO.java @@ -0,0 +1,13 @@ +package com.xinelu.manage.vo.labelfieldcontent; + +import lombok.Data; + +import java.util.List; + +@Data +public class PortraitSnVO { + + private String portraitSn; + + private List groupingValues; +} diff --git a/postdischarge-manage/src/main/resources/mapper/manage/labelfieldcontent/LabelFieldContentMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/labelfieldcontent/LabelFieldContentMapper.xml index b9784c95..bf330aa4 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/labelfieldcontent/LabelFieldContentMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/labelfieldcontent/LabelFieldContentMapper.xml @@ -21,6 +21,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, field_id, @@ -284,6 +320,46 @@ where content.patient_id = #{patientId} and content.portrait_status='INUSE' + + insert into label_field_content( field_id, diff --git a/postdischarge-manage/src/main/resources/mapper/manage/labelfieldinfo/LabelFieldInfoMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/labelfieldinfo/LabelFieldInfoMapper.xml index 56fc1cda..d3877b1e 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/labelfieldinfo/LabelFieldInfoMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/labelfieldinfo/LabelFieldInfoMapper.xml @@ -221,15 +221,13 @@