Просмотр исходного кода

患者修改的时候常量数据内容变更自动添加到常量表

wangzl 3 месяцев назад
Родитель
Сommit
a923a922ec

+ 0 - 17
pump-web/src/main/java/com/tuoren/web/layer/controller/BusConstantController.java

@@ -58,23 +58,6 @@ public class BusConstantController {
             return CommonResult.failed("修改失败");
         }
     }
-    @ApiOperation("新增常量内容")
-    @PostMapping("/insert")
-    public CommonResult insert(@RequestBody BusConstantEntity busConstantEntity){
-        try {
-            String md5 = SecureUtil.md5(busConstantEntity.getHospitalCode() + busConstantEntity.getContent());
-            busConstantEntity.setMd5(md5);
-            BusConstantEntity entity = iBusConstantService.getBaseMapper().selectOne(new LambdaQueryWrapper<BusConstantEntity>()
-                    .eq(BusConstantEntity::getMd5, md5).last("limit 1"));
-            if(ObjectUtil.isNotEmpty(entity)){
-                return CommonResult.failed("该内容已存在");
-            }
-            return CommonResult.success(this.iBusConstantService.save(busConstantEntity),"新增成功");
-        } catch (Exception e) {
-            log.error("出现错误, {}",e.getMessage());
-            return CommonResult.failed("新增失败");
-        }
-    }
     /**
      * 删除数据
      *

+ 21 - 0
pump-web/src/main/java/com/tuoren/web/layer/controller/BusPatientController.java

@@ -1,11 +1,14 @@
 package com.tuoren.web.layer.controller;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.tuoren.common.api.CommonResult;
+import com.tuoren.web.layer.entity.BusConstantEntity;
 import com.tuoren.web.layer.entity.BusPatientEntity;
+import com.tuoren.web.layer.service.IBusConstantService;
 import com.tuoren.web.layer.service.IBusPatientService;
 import com.tuoren.web.layer.vo.PatientExceptionFlagParam;
 import com.tuoren.web.layer.vo.PatientParam;
@@ -13,6 +16,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.Serializable;
@@ -34,6 +38,9 @@ public class BusPatientController{
     @Autowired
     public IBusPatientService iBusPatientEntityService;
 
+    @Autowired
+    public IBusConstantService iBusConstantService;
+
     /**
          * 分页查询所有数据
          *
@@ -71,8 +78,15 @@ public class BusPatientController{
          */
         @ApiOperation("新增数据")
         @PostMapping
+        @Transactional(rollbackFor = Exception.class)
         public CommonResult insert(@RequestBody BusPatientEntity busPatientEntity) {
             try{
+                //处理常量表数据
+                List<BusConstantEntity> busConstantEntities = iBusPatientEntityService.handleConstantData(busPatientEntity);
+                if(CollectionUtil.isNotEmpty(busConstantEntities)){
+                    log.info("保存常量数据个数 {}",busConstantEntities.size());
+                    iBusConstantService.saveOrUpdateBatch(busConstantEntities);
+                }
                 return CommonResult.success(this.iBusPatientEntityService.save( busPatientEntity),"添加成功");
             } catch (Exception e) {
                 log.error("出现错误, {}",e.getMessage());
@@ -88,10 +102,17 @@ public class BusPatientController{
          */
         @ApiOperation("修改数据")
         @PutMapping
+        @Transactional(rollbackFor = Exception.class)
         public CommonResult update(@RequestBody BusPatientEntity busPatientEntity) {
             try {
                 boolean flag = this.iBusPatientEntityService.updateById(busPatientEntity);
                 if(flag){
+                    //处理常量表数据
+                    List<BusConstantEntity> busConstantEntities = iBusPatientEntityService.handleConstantData(busPatientEntity);
+                    if(CollectionUtil.isNotEmpty(busConstantEntities)){
+                        log.info("保存常量数据个数 {}",busConstantEntities.size());
+                        iBusConstantService.saveOrUpdateBatch(busConstantEntities);
+                    }
                     iBusPatientEntityService.sendPatientInfoToPump(busPatientEntity.getPatientId());
                 }
                 return CommonResult.success(flag,"修改成功");

+ 12 - 3
pump-web/src/main/java/com/tuoren/web/layer/service/IBusPatientService.java

@@ -1,10 +1,12 @@
 package com.tuoren.web.layer.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.tuoren.web.layer.entity.BusPumpEntity;
-import com.tuoren.web.layer.vo.PatientParam;
-import com.tuoren.web.layer.entity.BusPatientEntity;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.tuoren.web.layer.entity.BusConstantEntity;
+import com.tuoren.web.layer.entity.BusPatientEntity;
+import com.tuoren.web.layer.vo.PatientParam;
+
+import java.util.List;
 
 /**
  * <p>
@@ -29,4 +31,11 @@ public interface IBusPatientService extends IService<BusPatientEntity> {
      */
     void sendPatientInfoToPump(String id) ;
 
+    /**
+     * @description: 处理常量表数据是否修改
+     * @author wangzl
+     * @date 2025/9/3
+     */
+    List<BusConstantEntity> handleConstantData(BusPatientEntity busPatientEntity);
+
 }

+ 68 - 1
pump-web/src/main/java/com/tuoren/web/layer/service/impl/BusPatientServiceImpl.java

@@ -1,24 +1,32 @@
 package com.tuoren.web.layer.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.json.JSONUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.gson.Gson;
 import com.tuoren.common.utils.ConstastUtils;
 import com.tuoren.web.layer.d0.PatientDTO;
+import com.tuoren.web.layer.entity.BusConstantEntity;
 import com.tuoren.web.layer.entity.BusPatientEntity;
 import com.tuoren.web.layer.mapper.BusPatientMapper;
+import com.tuoren.web.layer.service.IBusConstantService;
 import com.tuoren.web.layer.service.IBusPatientService;
 import com.tuoren.web.layer.vo.PatientParam;
+import com.tuoren.web.rabbit.helper.BusConstantHelper;
+import com.tuoren.web.utils.enums.BusConstantEnum;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.ZoneId;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -34,6 +42,9 @@ public class BusPatientServiceImpl extends ServiceImpl<BusPatientMapper, BusPati
     @Autowired
     private RabbitTemplate rabbitTemplate;
 
+    @Autowired
+    private IBusConstantService iBusConstantService;
+
     @Override
     public IPage<BusPatientEntity> queryFuzzyPatient(PatientParam patientParam) {
         IPage<BusPatientEntity> iPage = new Page<>(patientParam.getPageNo(), patientParam.getPageSize());
@@ -116,5 +127,61 @@ public class BusPatientServiceImpl extends ServiceImpl<BusPatientMapper, BusPati
         }
     }
 
+    /**
+     * 处理常量表数据是否修改
+     *
+     * @param busPatientEntity
+     * @author wangzl
+     * @date 2025/9/3
+     */
+    @Override
+    public List<BusConstantEntity> handleConstantData(BusPatientEntity busPatientEntity) {
+        if (busPatientEntity == null) {
+            return new ArrayList<>();
+        }
+
+        String hospitalCode = busPatientEntity.getHospitalCode();
+        if (StrUtil.isEmpty(hospitalCode) && StrUtil.isNotBlank(busPatientEntity.getPatientId())) {
+            BusPatientEntity dbEntity = this.baseMapper.selectById(busPatientEntity.getPatientId());
+            hospitalCode = dbEntity.getHospitalCode();
+        } else {
+            return new ArrayList<>();
+        }
+        List<BusConstantEntity> busConstantEntities = new ArrayList<>();
+        // 处理各个字段
+        addConstantIfValid(busConstantEntities, hospitalCode, busPatientEntity.getWardCode(), BusConstantEnum.wardCode);
+        addConstantIfValid(busConstantEntities, hospitalCode, busPatientEntity.getOperationName(), BusConstantEnum.operationName);
+        addConstantIfValid(busConstantEntities, hospitalCode, busPatientEntity.getOperationDoctor(), BusConstantEnum.operationDoctor);
+        addConstantIfValid(busConstantEntities, hospitalCode, busPatientEntity.getAnesthesiaDoctor1(), BusConstantEnum.anesthesiaDoctor);
+        addConstantIfValid(busConstantEntities, hospitalCode, busPatientEntity.getAnesthesiaMode(), BusConstantEnum.anesthesiaMode);
+        addConstantIfValid(busConstantEntities, hospitalCode, busPatientEntity.getEasyMode(), BusConstantEnum.easyMode);
+        addConstantIfValid(busConstantEntities, hospitalCode, busPatientEntity.getFormula(), BusConstantEnum.formula);
+        if (CollectionUtil.isNotEmpty(busConstantEntities)) {
+            List<String> md5s = busConstantEntities.stream().map(BusConstantEntity::getMd5).collect(Collectors.toList());
+            //先查询md5存在的
+            List<BusConstantEntity> list = iBusConstantService.list(new LambdaQueryWrapper<BusConstantEntity>()
+                    .in(BusConstantEntity::getMd5, md5s));
+            //去掉已经存储的数据
+            return BusConstantHelper.dealConstantList(busConstantEntities, list);
+        }
+        return busConstantEntities;
+    }
+
+    private void addConstantIfValid(List<BusConstantEntity> list, String hospitalCode, String content, BusConstantEnum type) {
+        Optional.ofNullable(content)
+                .filter(StrUtil::isNotEmpty)
+                .ifPresent(value -> list.add(buildBusConstantEntity(hospitalCode, value, type.getType())));
+    }
+
+
+    public BusConstantEntity buildBusConstantEntity(String hospitalCode, String content, Integer type) {
+        String md5 = DigestUtils.md5Hex(hospitalCode + content);
+        return BusConstantEntity.builder()
+                .hospitalCode(hospitalCode)
+                .content(content)
+                .md5(md5)
+                .type(type)
+                .build();
+    }
 
 }

+ 4 - 24
pump-web/src/main/java/com/tuoren/web/rabbit/RabbitHandle.java

@@ -281,30 +281,10 @@ public class RabbitHandle {
 			List<BusConstantEntity> list = iBusConstantService.list(new LambdaQueryWrapper<BusConstantEntity>()
 					.in(BusConstantEntity::getMd5,md5s));
 			//去掉已经存储的数据
-			List<BusConstantEntity> collect = busConstantEntities.stream()
-					.filter(item -> {
-						// 查找是否有匹配的已删除记录
-						Optional<BusConstantEntity> deletedEntity = list.stream()
-								.filter(entity -> entity.getMd5().equals(item.getMd5()) &&
-										Boolean.TRUE.equals(entity.getIsDelete()))
-								.findFirst();
-						if (deletedEntity.isPresent()) {
-							// 恢复已删除记录
-							item.setId(deletedEntity.get().getId());
-							item.setIsDelete(false);
-							return true;
-						}
-						// 检查是否已存在且未删除
-						boolean exists = list.stream()
-								.anyMatch(entity -> entity.getMd5().equals(item.getMd5()) &&
-										!Boolean.TRUE.equals(entity.getIsDelete()));
-						// 只有在不存在或已删除时才保留
-						return !exists;
-					})
-					.collect(Collectors.toList());
-			log.info("保存的常量数据个数:{}", collect.size());
-			if(CollectionUtil.isNotEmpty(collect)){
-				iBusConstantService.saveOrUpdateBatch(collect);
+			List<BusConstantEntity> result = BusConstantHelper.dealConstantList(busConstantEntities, list);
+			log.info("保存的常量数据个数:{}", result.size());
+			if(CollectionUtil.isNotEmpty(result)){
+				iBusConstantService.saveOrUpdateBatch(result);
 			}
 		}
 	}

+ 30 - 8
pump-web/src/main/java/com/tuoren/web/rabbit/helper/BusConstantHelper.java

@@ -1,21 +1,14 @@
 package com.tuoren.web.rabbit.helper;
 
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.lang.TypeReference;
-import cn.hutool.core.util.EnumUtil;
-import cn.hutool.crypto.SecureUtil;
 import cn.hutool.crypto.digest.DigestUtil;
-import cn.hutool.json.JSONUtil;
 import com.tuoren.web.layer.entity.BusConstantEntity;
 import com.tuoren.web.rabbit.dto.BusConstantDTO;
 import com.tuoren.web.rabbit.dto.BusConstantValueDTO;
 import com.tuoren.web.utils.enums.BusConstantEnum;
 import lombok.extern.slf4j.Slf4j;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -86,4 +79,33 @@ public class BusConstantHelper {
                 .collect(Collectors.toList());
     }
 
+    /***
+     * 处理数据是否已经存在 或者已删除 只将未处理的进行存储
+     * @author wangzl
+     * @date 2025/9/3
+     */
+
+    public static List<BusConstantEntity> dealConstantList(List<BusConstantEntity> busConstantEntities, List<BusConstantEntity> list) {
+        return busConstantEntities.stream()
+                .filter(item -> {
+                    // 查找是否有匹配的已删除记录
+                    Optional<BusConstantEntity> deletedEntity = list.stream()
+                            .filter(entity -> entity.getMd5().equals(item.getMd5()) &&
+                                    Boolean.TRUE.equals(entity.getIsDelete()))
+                            .findFirst();
+                    if (deletedEntity.isPresent()) {
+                        // 恢复已删除记录
+                        item.setId(deletedEntity.get().getId());
+                        item.setIsDelete(false);
+                        return true;
+                    }
+                    // 检查是否已存在且未删除
+                    boolean exists = list.stream()
+                            .anyMatch(entity -> entity.getMd5().equals(item.getMd5()) &&
+                                    !Boolean.TRUE.equals(entity.getIsDelete()));
+                    // 只有在不存在或已删除时才保留
+                    return !exists;
+                })
+                .collect(Collectors.toList());
+    }
 }