소스 검색

宣教文档和宣教文档广场新增、更新、校验文档内容是否存在提交

wangzl 7 달 전
부모
커밋
9e2d064caf

+ 53 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/dto/BizMissionDocJsonDTO.java

@@ -0,0 +1,53 @@
+package cn.tr.module.smart.common.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * @author wangzl
+ * @description: 宣教文档转换签名对象json对象
+ * @date 2025/5/26 11:26
+ */
+@Data
+@ApiModel("宣教文档转换Json对象字段")
+@ToString
+public class BizMissionDocJsonDTO {
+
+    /** 宣教类型 */
+    @ApiModelProperty(value = "宣教类型", position = 2)
+    private String type;
+
+    /** 宣教名称 */
+    @ApiModelProperty(value = "宣教名称", position = 3)
+    private String title;
+
+    /** 宣教来源 */
+    @ApiModelProperty(value = "宣教来源", position = 4)
+    private String source;
+
+    /** 封面图 */
+    @ApiModelProperty(value = "封面图", position = 5)
+    private String image;
+
+    /** 宣教内容 */
+    @ApiModelProperty(value = "宣教内容", position = 6)
+    private String content;
+
+    /** 宣教阶段 */
+    @ApiModelProperty(value = "宣教阶段", position = 7)
+    private String phase;
+
+    /** 间隔时间段(最小值),如术前2-6天,即2 */
+    @ApiModelProperty(value = "间隔时间段(最小值),如术前2-6天,即2", position = 8)
+    private String intervalMinDay;
+
+    /** 间隔时间段(最大值),如术后2-6天,即6 */
+    @ApiModelProperty(value = "间隔时间段(最大值),如术后2-6天,即6", position = 9)
+    private String intervalMaxDay;
+
+    /** 医院id(医院上传的自己的文档) */
+    @ApiModelProperty(value = "医院id(医院上传的自己的文档)", position = 10)
+    private String tenantId;
+}

+ 4 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizMissionDocMapper.java

@@ -1,7 +1,8 @@
 package cn.tr.module.smart.common.mapper;
 
-import cn.tr.module.smart.common.po.BizMissionDocPO;
 import cn.tr.module.smart.common.dto.BizMissionDocDTO;
+import cn.tr.module.smart.common.dto.BizMissionDocJsonDTO;
+import cn.tr.module.smart.common.po.BizMissionDocPO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
@@ -25,4 +26,6 @@ public interface BizMissionDocMapper {
 
     List<BizMissionDocPO> convertPOList(List<BizMissionDocDTO> source);
 
+    BizMissionDocJsonDTO convertJsonDTO(BizMissionDocDTO source);
+
 }

+ 4 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizMissionDocSquareMapper.java

@@ -1,7 +1,8 @@
 package cn.tr.module.smart.common.mapper;
 
-import cn.tr.module.smart.common.po.BizMissionDocSquarePO;
+import cn.tr.module.smart.common.dto.BizMissionDocJsonDTO;
 import cn.tr.module.smart.common.dto.BizMissionDocSquareDTO;
+import cn.tr.module.smart.common.po.BizMissionDocSquarePO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
@@ -25,4 +26,6 @@ public interface BizMissionDocSquareMapper {
 
     List<BizMissionDocSquarePO> convertPOList(List<BizMissionDocSquareDTO> source);
 
+    BizMissionDocJsonDTO convertJsonDTO(BizMissionDocSquareDTO source);
+
 }

+ 13 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizMissionDocPO.java

@@ -1,6 +1,6 @@
 package cn.tr.module.smart.common.po;
 
-import cn.tr.plugin.mybatis.pojo.TenantPO;   
+import cn.tr.plugin.mybatis.pojo.TenantPO;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;
@@ -61,4 +61,16 @@ public class BizMissionDocPO extends TenantPO {
     @ApiModelProperty(value = "医院id(医院上传的自己的文档)", position = 10)
     private String tenantId;
 
+    /** 版本号 */
+    @ApiModelProperty(value = "版本号", position = 15)
+    private Integer version;
+
+    /** md5 签名 */
+    @ApiModelProperty(value = " md5 签名", position = 16)
+    private String md5;
+
+    /** 宣教内容MD5签名 */
+    @ApiModelProperty(value = "宣教内容MD5签名", position = 17)
+    private String contentMd5;
+
 }

+ 5 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizMissionDocSquarePO.java

@@ -1,6 +1,6 @@
 package cn.tr.module.smart.common.po;
 
-import cn.tr.plugin.mybatis.pojo.TenantPO;   
+import cn.tr.plugin.mybatis.pojo.TenantPO;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;
@@ -80,4 +80,8 @@ public class BizMissionDocSquarePO extends TenantPO {
     /** 文档由医院上传,此处为医院上传的文档id */
     @ApiModelProperty(value = "文档由医院上传,此处为医院上传的文档id", position = 15)
     private String hospitalDocId;
+
+    /** 宣教内容MD5 */
+    @ApiModelProperty(value = "md5", position = 16)
+    private String contentMd5;
 }

+ 10 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizMissionDocService.java

@@ -2,7 +2,9 @@ package cn.tr.module.smart.common.service;
 
 import cn.tr.module.smart.common.dto.BizMissionDocDTO;
 import cn.tr.module.smart.common.dto.BizMissionDocQueryDTO;
-import java.util.*;
+
+import java.util.Collection;
+import java.util.List;
 
 /**
  * 宣教文档Service接口
@@ -51,4 +53,11 @@ public interface IBizMissionDocService{
      * @date    2025/05/23 16:24
      */
     int removeBizMissionDocByIds(Collection<String> ids);
+
+    /**
+     * @description: 校验宣教文档内容是否存在
+     * @author wangzl
+     * @date 2025/5/26
+     */
+    boolean  checkContent(String content);
 }

+ 30 - 16
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizMissionDocSquareService.java

@@ -2,53 +2,67 @@ package cn.tr.module.smart.common.service;
 
 import cn.tr.module.smart.common.dto.BizMissionDocSquareDTO;
 import cn.tr.module.smart.common.dto.BizMissionDocSquareQueryDTO;
-import java.util.*;
+
+import java.util.Collection;
+import java.util.List;
 
 /**
  * 宣教文档广场Service接口
  *
  * @author lf
- * @date  2025/05/23 14:24
+ * @date 2025/05/23 14:24
  **/
-public interface IBizMissionDocSquareService{
+public interface IBizMissionDocSquareService {
 
     /**
      * 根据条件查询宣教文档广场
-     * @param    query 查询参数
-     * @author   lf
-     * @date      2025/05/23 14:24
+     *
+     * @param query 查询参数
+     * @author lf
+     * @date 2025/05/23 14:24
      */
     List<BizMissionDocSquareDTO> selectBizMissionDocSquareList(BizMissionDocSquareQueryDTO query);
 
     /**
      * 根据id查询宣教文档广场
-     * @param    id 主键id
-     * @author   lf
-     * @date      2025/05/23 14:24
+     *
+     * @param id 主键id
+     * @author lf
+     * @date 2025/05/23 14:24
      */
     BizMissionDocSquareDTO selectBizMissionDocSquareById(String id);
 
     /**
      * 编辑宣教文档广场
-     * @param   source 编辑实体类
-     * @author  lf
-     * @date     2025/05/23 14:24
+     *
+     * @param source 编辑实体类
+     * @author lf
+     * @date 2025/05/23 14:24
      */
     boolean updateBizMissionDocSquareById(BizMissionDocSquareDTO source);
 
     /**
      * 新增宣教文档广场
-     * @param   source 新增实体类
+     *
+     * @param source 新增实体类
      * @author lf
-     * @date  2025/05/23 14:24
+     * @date 2025/05/23 14:24
      */
     boolean insertBizMissionDocSquare(BizMissionDocSquareDTO source);
 
     /**
      * 删除宣教文档广场详情
-     * @param  ids 删除主键集合
+     *
+     * @param ids 删除主键集合
      * @author lf
-     * @date    2025/05/23 14:24
+     * @date 2025/05/23 14:24
      */
     int removeBizMissionDocSquareByIds(Collection<String> ids);
+
+    /**
+     * @description: 校验宣教文档是否存在
+     * @author wangzl
+     * @date 2025/5/26
+     */
+    boolean checkContent(String content);
 }

+ 100 - 49
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizMissionDocServiceImpl.java

@@ -1,24 +1,31 @@
 package cn.tr.module.smart.common.service.impl;
 
-import cn.tr.core.exception.TRExcCode;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import cn.hutool.core.collection.CollectionUtil;
-import org.springframework.transaction.annotation.Transactional;
+import cn.hutool.crypto.digest.DigestUtil;
 import cn.tr.core.exception.ServiceException;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import cn.tr.module.smart.common.repository.BizMissionDocRepository;
-import cn.tr.module.smart.common.po.BizMissionDocPO;
+import cn.tr.core.exception.TRExcCode;
+import cn.tr.core.utils.JsonUtils;
 import cn.tr.module.smart.common.dto.BizMissionDocDTO;
+import cn.tr.module.smart.common.dto.BizMissionDocJsonDTO;
 import cn.tr.module.smart.common.dto.BizMissionDocQueryDTO;
-import java.util.*;
-import cn.tr.module.smart.common.service.IBizMissionDocService;
 import cn.tr.module.smart.common.mapper.BizMissionDocMapper;
+import cn.tr.module.smart.common.po.BizMissionDocPO;
+import cn.tr.module.smart.common.repository.BizMissionDocRepository;
+import cn.tr.module.smart.common.service.IBizMissionDocService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+
 /**
  * 宣教文档Service接口实现类
  *
  * @author lf
- * @date  2025/05/23 16:24
+ * @date 2025/05/23 16:24
  **/
 @Service
 public class BizMissionDocServiceImpl implements IBizMissionDocService {
@@ -27,66 +34,110 @@ public class BizMissionDocServiceImpl implements IBizMissionDocService {
 
 
     /**
-    * 根据条件查询宣教文档
-    * @param    query 查询参数
-    * @author   lf
-    * @date      2025/05/23 16:24
-    */
+     * 根据条件查询宣教文档
+     *
+     * @param query 查询参数
+     * @author lf
+     * @date 2025/05/23 16:24
+     */
     @Override
-    public List<BizMissionDocDTO> selectBizMissionDocList(BizMissionDocQueryDTO query){
+    public List<BizMissionDocDTO> selectBizMissionDocList(BizMissionDocQueryDTO query) {
         return BizMissionDocMapper.INSTANCE.convertDtoList(
                 baseRepository.selectList(new LambdaQueryWrapper<BizMissionDocPO>()
                 )
         );
-    };
+    }
+
 
     /**
-    * 根据id查询宣教文档
-    * @param    id 主键id
-    * @author   lf
-    * @date      2025/05/23 16:24
-    */
+     * 根据id查询宣教文档
+     *
+     * @param id 主键id
+     * @author lf
+     * @date 2025/05/23 16:24
+     */
     @Override
-    public BizMissionDocDTO selectBizMissionDocById(String id){
+    public BizMissionDocDTO selectBizMissionDocById(String id) {
         return BizMissionDocMapper.INSTANCE.convertDto(baseRepository.selectById(id));
-    };
+    }
+
 
     /**
-    * 编辑宣教文档
-    * @param   source 编辑实体类
-    * @author  lf
-    * @date     2025/05/23 16:24
-    */
+     * 编辑宣教文档
+     *
+     * @param source 编辑实体类
+     * @author lf
+     * @date 2025/05/23 16:24
+     */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public boolean updateBizMissionDocById(BizMissionDocDTO source){
-            return baseRepository.updateById(BizMissionDocMapper.INSTANCE.convertPO(source))!=0;
-    };
+    public boolean updateBizMissionDocById(BizMissionDocDTO source) {
+        BizMissionDocPO bizMissionDocPO = BizMissionDocMapper.INSTANCE.convertPO(source);
+        //旧版本版本号
+        BizMissionDocPO oldBizMissionDocPO = baseRepository.selectById(bizMissionDocPO.getId());
+        bizMissionDocPO.setVersion(oldBizMissionDocPO.getVersion() + 1);
+        //重新计算md5
+        String contentMD5 = DigestUtil.md5Hex(bizMissionDocPO.getContent());
+        bizMissionDocPO.setContentMd5(contentMD5);
+        BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocMapper.INSTANCE.convertJsonDTO(source);
+        String MD5 = DigestUtil.md5Hex(JsonUtils.toJsonString(bizMissionDocJsonDTO));
+        bizMissionDocPO.setMd5(MD5);
+        return baseRepository.updateById(bizMissionDocPO) != 0;
+    }
+
 
     /**
-    * 新增宣教文档
-    * @param   source 新增实体类
-    * @author lf
-    * @date  2025/05/23 16:24
-    */
+     * 新增宣教文档
+     *
+     * @param source 新增实体类
+     * @author lf
+     * @date 2025/05/23 16:24
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean insertBizMissionDoc(BizMissionDocDTO source){
-        return baseRepository.insert(BizMissionDocMapper.INSTANCE.convertPO(source))!=0;
-    };
+    public boolean insertBizMissionDoc(BizMissionDocDTO source) {
+        //根据传入内容转换成对应的数据库实体
+        BizMissionDocPO bizMissionDocPO = BizMissionDocMapper.INSTANCE.convertPO(source);
+        String contentMD5 = DigestUtil.md5Hex(bizMissionDocPO.getContent());
+        bizMissionDocPO.setContentMd5(contentMD5);
+        BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocMapper.INSTANCE.convertJsonDTO(source);
+        String MD5 = DigestUtil.md5Hex(JsonUtils.toJsonString(bizMissionDocJsonDTO));
+        bizMissionDocPO.setMd5(MD5);
+        bizMissionDocPO.setVersion(1);
+        return baseRepository.insert(bizMissionDocPO) != 0;
+    }
+
 
     /**
-    * 删除宣教文档详情
-    * @param  ids 删除主键集合
-    * @author lf
-    * @date    2025/05/23 16:24
-    */
+     * 删除宣教文档详情
+     *
+     * @param ids 删除主键集合
+     * @author lf
+     * @date 2025/05/23 16:24
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int removeBizMissionDocByIds(Collection<String> ids){
-        if(CollectionUtil.isEmpty(ids)){
-            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"请选择要删除的数据");
+    public int removeBizMissionDocByIds(Collection<String> ids) {
+        if (CollectionUtil.isEmpty(ids)) {
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "请选择要删除的数据");
         }
         return baseRepository.deleteBatchIds(ids);
-    };
+    }
+
+    /**
+     * @param content 宣教内容
+     * @description: 校验宣教文档内容是否存在
+     * @author wangzl
+     * @date 2025/5/26
+     */
+    @Override
+    public boolean checkContent(String content) {
+        BizMissionDocPO bizMissionDocPO = baseRepository.selectOne(new LambdaQueryWrapper<BizMissionDocPO>()
+                .eq(BizMissionDocPO::getContentMd5, DigestUtil.md5Hex(content))
+                .orderByDesc(BizMissionDocPO::getCreateTime)
+                .last("limit 1")
+        );
+        return !Objects.isNull(bizMissionDocPO);
+    }
+
 }

+ 92 - 49
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizMissionDocSquareServiceImpl.java

@@ -1,24 +1,30 @@
 package cn.tr.module.smart.common.service.impl;
 
-import cn.tr.core.exception.TRExcCode;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import cn.hutool.core.collection.CollectionUtil;
-import org.springframework.transaction.annotation.Transactional;
+import cn.hutool.crypto.digest.DigestUtil;
 import cn.tr.core.exception.ServiceException;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import cn.tr.module.smart.common.repository.BizMissionDocSquareRepository;
-import cn.tr.module.smart.common.po.BizMissionDocSquarePO;
+import cn.tr.core.exception.TRExcCode;
+import cn.tr.core.utils.JsonUtils;
+import cn.tr.module.smart.common.dto.BizMissionDocJsonDTO;
 import cn.tr.module.smart.common.dto.BizMissionDocSquareDTO;
 import cn.tr.module.smart.common.dto.BizMissionDocSquareQueryDTO;
-import java.util.*;
-import cn.tr.module.smart.common.service.IBizMissionDocSquareService;
 import cn.tr.module.smart.common.mapper.BizMissionDocSquareMapper;
+import cn.tr.module.smart.common.po.BizMissionDocSquarePO;
+import cn.tr.module.smart.common.repository.BizMissionDocSquareRepository;
+import cn.tr.module.smart.common.service.IBizMissionDocSquareService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collection;
+import java.util.List;
+
 /**
  * 宣教文档广场Service接口实现类
  *
  * @author lf
- * @date  2025/05/23 14:24
+ * @date 2025/05/23 14:24
  **/
 @Service
 public class BizMissionDocSquareServiceImpl implements IBizMissionDocSquareService {
@@ -27,66 +33,103 @@ public class BizMissionDocSquareServiceImpl implements IBizMissionDocSquareServi
 
 
     /**
-    * 根据条件查询宣教文档广场
-    * @param    query 查询参数
-    * @author   lf
-    * @date      2025/05/23 14:24
-    */
+     * 根据条件查询宣教文档广场
+     *
+     * @param query 查询参数
+     * @author lf
+     * @date 2025/05/23 14:24
+     */
     @Override
-    public List<BizMissionDocSquareDTO> selectBizMissionDocSquareList(BizMissionDocSquareQueryDTO query){
+    public List<BizMissionDocSquareDTO> selectBizMissionDocSquareList(BizMissionDocSquareQueryDTO query) {
         return BizMissionDocSquareMapper.INSTANCE.convertDtoList(
                 baseRepository.selectList(new LambdaQueryWrapper<BizMissionDocSquarePO>()
                 )
         );
-    };
+    }
 
     /**
-    * 根据id查询宣教文档广场
-    * @param    id 主键id
-    * @author   lf
-    * @date      2025/05/23 14:24
-    */
+     * 根据id查询宣教文档广场
+     *
+     * @param id 主键id
+     * @author lf
+     * @date 2025/05/23 14:24
+     */
     @Override
-    public BizMissionDocSquareDTO selectBizMissionDocSquareById(String id){
+    public BizMissionDocSquareDTO selectBizMissionDocSquareById(String id) {
         return BizMissionDocSquareMapper.INSTANCE.convertDto(baseRepository.selectById(id));
-    };
+    }
 
     /**
-    * 编辑宣教文档广场
-    * @param   source 编辑实体类
-    * @author  lf
-    * @date     2025/05/23 14:24
-    */
+     * 编辑宣教文档广场
+     *
+     * @param source 编辑实体类
+     * @author lf
+     * @date 2025/05/23 14:24
+     */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public boolean updateBizMissionDocSquareById(BizMissionDocSquareDTO source){
-            return baseRepository.updateById(BizMissionDocSquareMapper.INSTANCE.convertPO(source))!=0;
-    };
+    public boolean updateBizMissionDocSquareById(BizMissionDocSquareDTO source) {
+        BizMissionDocSquarePO bizMissionDocSquarePO = BizMissionDocSquareMapper.INSTANCE.convertPO(source);
+        BizMissionDocSquarePO oldBizMissionDocSquarePO = baseRepository.selectById(bizMissionDocSquarePO.getId());
+        bizMissionDocSquarePO.setVersion(oldBizMissionDocSquarePO.getVersion() + 1);
+        //重新计算md5
+        String contentMD5 = DigestUtil.md5Hex(bizMissionDocSquarePO.getContent());
+        bizMissionDocSquarePO.setContentMd5(contentMD5);
+        BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocSquareMapper.INSTANCE.convertJsonDTO(source);
+        String MD5 = DigestUtil.md5Hex(JsonUtils.toJsonString(bizMissionDocJsonDTO));
+        bizMissionDocSquarePO.setMd5(MD5);
+        return baseRepository.updateById(bizMissionDocSquarePO) != 0;
+    }
 
     /**
-    * 新增宣教文档广场
-    * @param   source 新增实体类
-    * @author lf
-    * @date  2025/05/23 14:24
-    */
+     * 新增宣教文档广场
+     *
+     * @param source 新增实体类
+     * @author lf
+     * @date 2025/05/23 14:24
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean insertBizMissionDocSquare(BizMissionDocSquareDTO source){
-        return baseRepository.insert(BizMissionDocSquareMapper.INSTANCE.convertPO(source))!=0;
-    };
+    public boolean insertBizMissionDocSquare(BizMissionDocSquareDTO source) {
+        BizMissionDocSquarePO bizMissionDocSquarePO = BizMissionDocSquareMapper.INSTANCE.convertPO(source);
+        String contentMD5 = DigestUtil.md5Hex(bizMissionDocSquarePO.getContent());
+        bizMissionDocSquarePO.setContentMd5(contentMD5);
+        BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocSquareMapper.INSTANCE.convertJsonDTO(source);
+        String MD5 = DigestUtil.md5Hex(JsonUtils.toJsonString(bizMissionDocJsonDTO));
+        bizMissionDocSquarePO.setMd5(MD5);
+        bizMissionDocSquarePO.setVersion(1);
+        return baseRepository.insert(bizMissionDocSquarePO) != 0;
+    }
 
     /**
-    * 删除宣教文档广场详情
-    * @param  ids 删除主键集合
-    * @author lf
-    * @date    2025/05/23 14:24
-    */
+     * 删除宣教文档广场详情
+     *
+     * @param ids 删除主键集合
+     * @author lf
+     * @date 2025/05/23 14:24
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int removeBizMissionDocSquareByIds(Collection<String> ids){
-        if(CollectionUtil.isEmpty(ids)){
-            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"请选择要删除的数据");
+    public int removeBizMissionDocSquareByIds(Collection<String> ids) {
+        if (CollectionUtil.isEmpty(ids)) {
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "请选择要删除的数据");
         }
         return baseRepository.deleteBatchIds(ids);
-    };
+    }
+
+    /**
+     * @param content 宣教内容
+     * @description: 校验宣教文档是否存在
+     * @author wangzl
+     * @date 2025/5/26
+     */
+    @Override
+    public boolean checkContent(String content) {
+        List<BizMissionDocSquarePO> bizMissionDocSquarePOS = baseRepository.selectList
+                (new LambdaQueryWrapper<BizMissionDocSquarePO>()
+                        .eq(BizMissionDocSquarePO::getContentMd5, DigestUtil.md5Hex(content))
+                );
+        return CollectionUtil.isNotEmpty(bizMissionDocSquarePOS);
+    }
+
 }

+ 20 - 15
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizMissionDocController.java

@@ -1,28 +1,25 @@
 package cn.tr.module.smart.web.controller;
 
 import cn.dev33.satoken.annotation.SaCheckLogin;
-import cn.tr.module.sys.oauth2.LoginTypeConstant;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.tr.core.pojo.CommonResult;
+import cn.tr.core.pojo.TableDataInfo;
 import cn.tr.core.validation.Insert;
 import cn.tr.core.validation.Update;
-import cn.tr.core.pojo.CommonResult;
-import lombok.AllArgsConstructor;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import cn.tr.module.api.sys.log.annotation.OperateLog;
 import cn.tr.module.smart.common.dto.BizMissionDocDTO;
-import cn.tr.module.smart.common.service.IBizMissionDocService;
 import cn.tr.module.smart.common.dto.BizMissionDocQueryDTO;
-import java.util.*;
+import cn.tr.module.smart.common.service.IBizMissionDocService;
+import cn.tr.module.sys.oauth2.LoginTypeConstant;
 import cn.tr.plugin.mybatis.base.BaseController;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-import cn.tr.module.api.sys.log.annotation.OperateLog;
-import cn.tr.core.pojo.TableDataInfo;
+
+import java.util.Collection;
 /**
  * 宣教文档控制器
  *
@@ -80,4 +77,12 @@ public class BizMissionDocController extends BaseController{
     public CommonResult<Integer> delete(@RequestBody Collection<String> ids) {
         return CommonResult.success(bizMissionDocService.removeBizMissionDocByIds(ids));
     }
+    @ApiOperationSupport(author = "wangzl",order = 5)
+    @ApiOperation(value="校验宣教文档是否存在",notes = "权限: common:missionDoc:check ,content宣教内容")
+    @PostMapping("/checkContent")
+    @OperateLog
+    @SaCheckPermission("common:missionDoc:check")
+    public CommonResult<Boolean> checkContent(@RequestParam String content) {
+        return CommonResult.success(bizMissionDocService.checkContent(content));
+    }
 }

+ 21 - 15
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizMissionDocSquareController.java

@@ -1,28 +1,25 @@
 package cn.tr.module.smart.web.controller;
 
 import cn.dev33.satoken.annotation.SaCheckLogin;
-import cn.tr.module.sys.oauth2.LoginTypeConstant;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.tr.core.pojo.CommonResult;
+import cn.tr.core.pojo.TableDataInfo;
 import cn.tr.core.validation.Insert;
 import cn.tr.core.validation.Update;
-import cn.tr.core.pojo.CommonResult;
-import lombok.AllArgsConstructor;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import cn.tr.module.api.sys.log.annotation.OperateLog;
 import cn.tr.module.smart.common.dto.BizMissionDocSquareDTO;
-import cn.tr.module.smart.common.service.IBizMissionDocSquareService;
 import cn.tr.module.smart.common.dto.BizMissionDocSquareQueryDTO;
-import java.util.*;
+import cn.tr.module.smart.common.service.IBizMissionDocSquareService;
+import cn.tr.module.sys.oauth2.LoginTypeConstant;
 import cn.tr.plugin.mybatis.base.BaseController;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-import cn.tr.module.api.sys.log.annotation.OperateLog;
-import cn.tr.core.pojo.TableDataInfo;
+
+import java.util.Collection;
 /**
  * 宣教文档广场控制器
  *
@@ -80,4 +77,13 @@ public class BizMissionDocSquareController extends BaseController{
     public CommonResult<Integer> delete(@RequestBody Collection<String> ids) {
         return CommonResult.success(bizMissionDocSquareService.removeBizMissionDocSquareByIds(ids));
     }
+
+    @ApiOperationSupport(author = "wangzl",order = 5)
+    @ApiOperation(value="校验宣教文档是否存在",notes = "权限: common:missionDocSquare:check ")
+    @PostMapping("/checkContent")
+    @OperateLog
+    @SaCheckPermission("common:missionDocSquare:check")
+    public CommonResult<Boolean> checkContent(@RequestParam String content) {
+        return CommonResult.success(bizMissionDocSquareService.checkContent(content));
+    }
 }