From b33491a04bf0076c2f495a8f9ee496c5c9b2a936 Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Wed, 26 Jun 2024 11:34:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LabelFieldContentMapper.java | 16 +++++ .../impl/LabelFieldContentServiceImpl.java | 42 +++++++++-- .../vo/labelfieldcontent/LabelField.java | 2 +- .../LabelFieldContentMapper.xml | 72 +++++++++++++++++++ 4 files changed, 125 insertions(+), 7 deletions(-) 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 30dc8866..f695a741 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 @@ -96,4 +96,20 @@ public interface LabelFieldContentMapper { * @return 患者标签字段列表 */ List selectByPatientId(Long patientId); + + /** + * 批量新增 + * + * @param labelFieldContentList 标签内容 + * @return int + */ + int insertLabelFieldContentList(List labelFieldContentList); + + /** + * 批量修改 + * + * @param labelFieldContentList + * @return + */ + int updateContentRemarkLabelFieldContentList(List labelFieldContentList); } 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 aac52fa8..0eab350b 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 @@ -15,14 +15,10 @@ import com.xinelu.manage.dto.labelfieldcontent.LabelFieldContentDTO; 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.mapper.patientinfo.PatientInfoMapper; -import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper; -import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper; -import com.xinelu.manage.mapper.specialdiseasenode.SpecialDiseaseNodeMapper; -import com.xinelu.manage.mapper.taskpartitiondict.TaskPartitionDictMapper; 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 org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; @@ -34,6 +30,7 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -250,8 +247,41 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService { return retObj; } + @Transactional(rollbackFor = Exception.class) @Override public AjaxResult insertLabelField(LabelField labelField) { - return null; + if (CollectionUtils.isEmpty(labelField.getGroupingValues())) { + return AjaxResult.success(); + } + List groupingValues = new ArrayList<>(); + for (List groupingValue : labelField.getGroupingValues()) { + groupingValues.addAll(groupingValue); + } + List updateGroupingValues = new ArrayList<>(); + List insertGroupingValues = new ArrayList<>(); + //传入标签ids + List afferentLabelFieldInfoIds = groupingValues.stream().filter(Objects::nonNull).map(GroupingValue::getLabelFieldInfoId).filter(Objects::nonNull).collect(Collectors.toList()); + //传入标签内容ids + List afferentLabelFieldContentIds = groupingValues.stream().filter(Objects::nonNull).map(GroupingValue::getLabelFieldContentId).filter(Objects::nonNull).collect(Collectors.toList()); + //数据库标签内容ids + List databaseLabelFieldContents = labelFieldContentMapper.selectLabelFieldContent(afferentLabelFieldInfoIds); + List databaseLabelFieldContentIds = databaseLabelFieldContents.stream().filter(Objects::nonNull).map(LabelFieldContentVO::getLabelFieldContentId).filter(Objects::nonNull).collect(Collectors.toList()); + //做差集 + List subtractLabelFieldContentIds = (List) CollectionUtils.subtract(databaseLabelFieldContentIds, afferentLabelFieldContentIds); + if (CollectionUtils.isNotEmpty(subtractLabelFieldContentIds)) { + labelFieldContentMapper.deleteLabelFieldContentByIds(subtractLabelFieldContentIds.toArray(new Long[0])); + } + for (GroupingValue groupingValue : groupingValues) { + if (Objects.isNull(groupingValue.getLabelFieldContentId())) { + groupingValue.setPortraitSn(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + insertGroupingValues.add(groupingValue); + } + if (Objects.nonNull(groupingValue.getLabelFieldContentId())) { + updateGroupingValues.add(groupingValue); + } + } + int insert = labelFieldContentMapper.insertLabelFieldContentList(insertGroupingValues); + int update = labelFieldContentMapper.updateContentRemarkLabelFieldContentList(updateGroupingValues); + return AjaxResult.success(); } } 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 7b0dda15..5317f84c 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 @@ -7,5 +7,5 @@ import java.util.List; @Data public class LabelField { - private List groupingValues; + 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 144e851d..8d68b9cd 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/labelfieldcontent/LabelFieldContentMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/labelfieldcontent/LabelFieldContentMapper.xml @@ -279,4 +279,76 @@ from label_field_content content left join label_field_info info on content.field_id = info.id where content.patient_id = #{patientId} and content.portrait_status='INUSE' + + + insert into label_field_content( + field_id, + field_name, + field_code, + field_value, + portrait_sn, + patient_id, + portrait_status, + content_sort, + content_remark, + create_by, + create_time + ) + values + + ( + #{GroupingValue.fieldId}, + #{GroupingValue.fieldName}, + #{GroupingValue.fieldCode}, + #{GroupingValue.fieldValue}, + #{GroupingValue.portraitSn}, + #{GroupingValue.patientId}, + #{GroupingValue.portraitStatus}, + #{GroupingValue.contentSort}, + #{GroupingValue.contentRemark}, + #{GroupingValue.create_by}, + #{GroupingValue.create_time} + ) + + + + + + update label_field_content + field_id = + #{item.fieldId}, + + field_name = + #{item.fieldName}, + + field_code = + #{item.fieldCode}, + + field_value = + #{item.fieldValue}, + + portrait_sn = + #{item.portraitSn}, + + patient_id = + #{item.patientId}, + + portrait_status = + #{item.portraitStatus}, + + content_sort = + #{item.contentSort}, + + content_remark = + #{item.contentRemark}, + + update_by = + #{item.updateBy}, + + update_time = + #{item.updateTime}, + + where id = #{item.id} + + \ No newline at end of file