Преглед изворни кода

Merge remote-tracking branch 'origin/master'

zhouzeyu пре 6 месеци
родитељ
комит
33e127313c
15 измењених фајлова са 460 додато и 14 уклоњено
  1. 59 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/dto/BizMissionDocAndSquareCoverDTO.java
  2. 5 1
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizMissionDocMapper.java
  3. 4 1
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizMissionDocSquareMapper.java
  4. 15 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizMissionDocPO.java
  5. 11 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizMissionDocSquarePO.java
  6. 7 1
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/repository/BizMissionDocRepository.java
  7. 4 1
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/repository/BizMissionDocSquareRepository.java
  8. 6 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizMissionDocService.java
  9. 7 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizMissionDocSquareService.java
  10. 50 6
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizMissionDocServiceImpl.java
  11. 62 2
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizMissionDocSquareServiceImpl.java
  12. 10 1
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizMissionDocController.java
  13. 9 1
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizMissionDocSquareController.java
  14. 103 0
      tr-modules/tr-module-smartFollowUp/src/main/resources/mapper/smart/BizMissionDocMapper.xml
  15. 108 0
      tr-modules/tr-module-smartFollowUp/src/main/resources/mapper/smart/BizMissionDocSquareMapper.xml

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

@@ -0,0 +1,59 @@
+package cn.tr.module.smart.common.dto;
+
+import cn.tr.core.annotation.ColumnDefaultValue;
+import cn.tr.core.annotation.Comment;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.ibatis.type.JdbcType;
+
+import java.io.Serializable;
+
+/**
+ * @author wangzl
+ * @description: 宣教文档转换成广场数据
+ * @date 2025/5/27 16:18
+ */
+@Data
+public class BizMissionDocAndSquareCoverDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "宣教类型", position = 1)
+    private String type;
+
+    @ApiModelProperty(value = "宣教名称", position = 2)
+    private String title;
+
+    @ApiModelProperty(value = "宣教来源", position = 3)
+    private String source;
+
+    @ApiModelProperty(value = "封面图", position = 4)
+    private String image;
+
+    @ApiModelProperty(value = "宣教内容", position = 5)
+    private String content;
+
+    @ApiModelProperty(value = "宣教阶段", position = 6)
+    private String phase;
+
+    @ApiModelProperty(value = "间隔时间段(最小值),如术前2-6天,即2", position = 7)
+    private String intervalMinDay;
+
+    @ApiModelProperty(value = "间隔时间段(最大值),如术后2-6天,即6", position = 8)
+    private String intervalMaxDay;
+
+    /** version */
+    @ApiModelProperty(value = "version", position = 14)
+    private Integer version;
+
+    /** 宣教内容MD5 */
+    @ApiModelProperty(value = "md5", position = 16)
+    private String contentMd5;
+
+    /** md5 */
+    @ApiModelProperty(value = "md5", position = 13)
+    private String md5;
+
+
+}

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

@@ -1,5 +1,6 @@
 package cn.tr.module.smart.common.mapper;
 
+import cn.tr.module.smart.common.dto.BizMissionDocAndSquareCoverDTO;
 import cn.tr.module.smart.common.dto.BizMissionDocDTO;
 import cn.tr.module.smart.common.dto.BizMissionDocJsonDTO;
 import cn.tr.module.smart.common.po.BizMissionDocPO;
@@ -26,6 +27,9 @@ public interface BizMissionDocMapper {
 
     List<BizMissionDocPO> convertPOList(List<BizMissionDocDTO> source);
 
-    BizMissionDocJsonDTO convertJsonDTO(BizMissionDocDTO source);
+    BizMissionDocJsonDTO convertJsonDTO(BizMissionDocPO source);
+
+    BizMissionDocPO convertSquarePO(BizMissionDocAndSquareCoverDTO source);
+    BizMissionDocAndSquareCoverDTO convertCoverDTO(BizMissionDocPO source);
 
 }

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

@@ -1,5 +1,6 @@
 package cn.tr.module.smart.common.mapper;
 
+import cn.tr.module.smart.common.dto.BizMissionDocAndSquareCoverDTO;
 import cn.tr.module.smart.common.dto.BizMissionDocJsonDTO;
 import cn.tr.module.smart.common.dto.BizMissionDocSquareDTO;
 import cn.tr.module.smart.common.po.BizMissionDocSquarePO;
@@ -26,6 +27,8 @@ public interface BizMissionDocSquareMapper {
 
     List<BizMissionDocSquarePO> convertPOList(List<BizMissionDocSquareDTO> source);
 
-    BizMissionDocJsonDTO convertJsonDTO(BizMissionDocSquareDTO source);
+    BizMissionDocJsonDTO convertJsonDTO(BizMissionDocSquarePO source);
+    BizMissionDocSquarePO convertSquarePO(BizMissionDocAndSquareCoverDTO source);
+    BizMissionDocAndSquareCoverDTO convertCoverDTO(BizMissionDocSquarePO source);
 
 }

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

@@ -1,12 +1,17 @@
 package cn.tr.module.smart.common.po;
 
+import cn.tr.core.annotation.ColumnDefaultValue;
+import cn.tr.core.annotation.Comment;
 import cn.tr.plugin.mybatis.pojo.TenantPO;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
+import org.apache.ibatis.type.JdbcType;
 
 /**
  * 宣教文档实体
@@ -73,4 +78,14 @@ public class BizMissionDocPO extends TenantPO {
     @ApiModelProperty(value = "宣教内容MD5签名", position = 17)
     private String contentMd5;
 
+    /** 宣教光广场ID */
+    @ApiModelProperty(value = "宣教光广场ID", position = 18)
+    private String squareDocId;
+
+    @Comment("删除标记")
+    @ColumnDefaultValue("0")
+    @TableLogic
+    @TableField(jdbcType = JdbcType.TINYINT)
+    private Boolean deleted;
+
 }

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

@@ -1,12 +1,17 @@
 package cn.tr.module.smart.common.po;
 
+import cn.tr.core.annotation.ColumnDefaultValue;
+import cn.tr.core.annotation.Comment;
 import cn.tr.plugin.mybatis.pojo.TenantPO;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
+import org.apache.ibatis.type.JdbcType;
 
 /**
  * 宣教文档广场实体
@@ -84,4 +89,10 @@ public class BizMissionDocSquarePO extends TenantPO {
     /** 宣教内容MD5 */
     @ApiModelProperty(value = "md5", position = 16)
     private String contentMd5;
+
+    @Comment("删除标记")
+    @ColumnDefaultValue("0")
+    @TableLogic
+    @TableField(jdbcType = JdbcType.TINYINT)
+    private Boolean deleted;
 }

+ 7 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/repository/BizMissionDocRepository.java

@@ -1,9 +1,9 @@
 package cn.tr.module.smart.common.repository;
 
+import cn.tr.module.smart.common.po.BizMissionDocPO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
-import cn.tr.module.smart.common.po.BizMissionDocPO;
 /**
  * 宣教文档Mapper接口
  *
@@ -13,4 +13,10 @@ import cn.tr.module.smart.common.po.BizMissionDocPO;
 @Repository
 @Mapper
 public interface BizMissionDocRepository extends BaseMapper<BizMissionDocPO> {
+
+    BizMissionDocPO selectBizMissionDocById(String id);
+
+    BizMissionDocPO selectOneBySquareId(String squareId);
+
+    int updateBizMissionDocById(BizMissionDocPO source);
 }

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

@@ -1,9 +1,9 @@
 package cn.tr.module.smart.common.repository;
 
+import cn.tr.module.smart.common.po.BizMissionDocSquarePO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
-import cn.tr.module.smart.common.po.BizMissionDocSquarePO;
 /**
  * 宣教文档广场Mapper接口
  *
@@ -13,4 +13,7 @@ import cn.tr.module.smart.common.po.BizMissionDocSquarePO;
 @Repository
 @Mapper
 public interface BizMissionDocSquareRepository extends BaseMapper<BizMissionDocSquarePO> {
+
+    BizMissionDocSquarePO selectOneByHospitalId(String id);
+    int updateBizMissionDocSquareById(BizMissionDocSquarePO source);
 }

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

@@ -60,4 +60,10 @@ public interface IBizMissionDocService{
      * @date 2025/5/26
      */
     boolean  checkContent(String content);
+    /**
+     * @description: 推送医院宣教文档到宣教文档广场
+     * @author wangzl
+     * @date 2025/5/27
+     */
+    boolean pushDoc(String id);
 }

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

@@ -65,4 +65,11 @@ public interface IBizMissionDocSquareService {
      * @date 2025/5/26
      */
     boolean checkContent(String content);
+
+    /**
+     * @description: 拉取宣教文档到医院宣教文档
+     * @author wangzl
+     * @date 2025/5/27
+     */
+    boolean pullDoc(String id);
 }

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

@@ -4,20 +4,28 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.crypto.digest.DigestUtil;
 import cn.tr.core.exception.ServiceException;
 import cn.tr.core.exception.TRExcCode;
+import cn.tr.core.strategy.LoginUserStrategy;
 import cn.tr.core.utils.JsonUtils;
+import cn.tr.module.smart.common.dto.BizMissionDocAndSquareCoverDTO;
 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 cn.tr.module.smart.common.mapper.BizMissionDocMapper;
+import cn.tr.module.smart.common.mapper.BizMissionDocSquareMapper;
 import cn.tr.module.smart.common.po.BizMissionDocPO;
+import cn.tr.module.smart.common.po.BizMissionDocSquarePO;
 import cn.tr.module.smart.common.repository.BizMissionDocRepository;
+import cn.tr.module.smart.common.repository.BizMissionDocSquareRepository;
 import cn.tr.module.smart.common.service.IBizMissionDocService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.Collection;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
@@ -32,6 +40,9 @@ public class BizMissionDocServiceImpl implements IBizMissionDocService {
     @Autowired
     private BizMissionDocRepository baseRepository;
 
+    @Resource
+    private BizMissionDocSquareRepository bizMissionDocSquareRepository;
+
 
     /**
      * 根据条件查询宣教文档
@@ -77,11 +88,13 @@ public class BizMissionDocServiceImpl implements IBizMissionDocService {
         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);
+        if (StringUtils.isNotEmpty(bizMissionDocPO.getContent())) {
+            String contentMD5 = DigestUtil.md5Hex(bizMissionDocPO.getContent());
+            bizMissionDocPO.setContentMd5(contentMD5);
+            BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocMapper.INSTANCE.convertJsonDTO(bizMissionDocPO);
+            String MD5 = DigestUtil.md5Hex(JsonUtils.toJsonString(bizMissionDocJsonDTO));
+            bizMissionDocPO.setMd5(MD5);
+        }
         return baseRepository.updateById(bizMissionDocPO) != 0;
     }
 
@@ -100,7 +113,7 @@ public class BizMissionDocServiceImpl implements IBizMissionDocService {
         BizMissionDocPO bizMissionDocPO = BizMissionDocMapper.INSTANCE.convertPO(source);
         String contentMD5 = DigestUtil.md5Hex(bizMissionDocPO.getContent());
         bizMissionDocPO.setContentMd5(contentMD5);
-        BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocMapper.INSTANCE.convertJsonDTO(source);
+        BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocMapper.INSTANCE.convertJsonDTO(bizMissionDocPO);
         String MD5 = DigestUtil.md5Hex(JsonUtils.toJsonString(bizMissionDocJsonDTO));
         bizMissionDocPO.setMd5(MD5);
         bizMissionDocPO.setVersion(1);
@@ -140,4 +153,35 @@ public class BizMissionDocServiceImpl implements IBizMissionDocService {
         return !Objects.isNull(bizMissionDocPO);
     }
 
+    /**
+     * @param id
+     * @description: 推送医院宣教文档到宣教文档广场
+     * @author wangzl
+     * @date 2025/5/27
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean pushDoc(String id) {
+        String currentUserId = LoginUserStrategy.tr.getCurrentUserId();
+        BizMissionDocPO bizMissionDocPO = baseRepository.selectById(id);
+        if (Objects.isNull(bizMissionDocPO)) {
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "该宣教文档不存在");
+        }
+        BizMissionDocSquarePO bizMissionDocSquarePO = bizMissionDocSquareRepository.selectOneByHospitalId(id);
+        BizMissionDocAndSquareCoverDTO bizMissionDocAndSquareCoverDTO = BizMissionDocMapper.INSTANCE.convertCoverDTO(bizMissionDocPO);
+        BizMissionDocSquarePO newBizMissionDocSquarePO = BizMissionDocSquareMapper.INSTANCE.convertSquarePO(bizMissionDocAndSquareCoverDTO);
+        if (Objects.isNull(bizMissionDocSquarePO)) {
+            newBizMissionDocSquarePO.setOwner(bizMissionDocPO.getCreateBy());
+            newBizMissionDocSquarePO.setHospitalDocId(bizMissionDocPO.getId());
+            newBizMissionDocSquarePO.setCitationCount(0);
+            return bizMissionDocSquareRepository.insert(newBizMissionDocSquarePO) != 0;
+        } else {
+            newBizMissionDocSquarePO.setId(bizMissionDocSquarePO.getId());
+            newBizMissionDocSquarePO.setUpdateBy(currentUserId);
+            newBizMissionDocSquarePO.setUpdateTime(new Date());
+            newBizMissionDocSquarePO.setDeleted(false);
+            return bizMissionDocSquareRepository.updateBizMissionDocSquareById(newBizMissionDocSquarePO) != 0;
+        }
+    }
+
 }

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

@@ -4,21 +4,31 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.crypto.digest.DigestUtil;
 import cn.tr.core.exception.ServiceException;
 import cn.tr.core.exception.TRExcCode;
+import cn.tr.core.strategy.LoginUserStrategy;
+import cn.tr.core.tenant.TenantContextHolder;
 import cn.tr.core.utils.JsonUtils;
+import cn.tr.module.smart.common.dto.BizMissionDocAndSquareCoverDTO;
 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 cn.tr.module.smart.common.mapper.BizMissionDocMapper;
 import cn.tr.module.smart.common.mapper.BizMissionDocSquareMapper;
+import cn.tr.module.smart.common.po.BizMissionDocPO;
 import cn.tr.module.smart.common.po.BizMissionDocSquarePO;
+import cn.tr.module.smart.common.repository.BizMissionDocRepository;
 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 com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.Collection;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 宣教文档广场Service接口实现类
@@ -30,6 +40,8 @@ import java.util.List;
 public class BizMissionDocSquareServiceImpl implements IBizMissionDocSquareService {
     @Autowired
     private BizMissionDocSquareRepository baseRepository;
+    @Resource
+    private BizMissionDocRepository bizMissionDocRepository;
 
 
     /**
@@ -75,7 +87,7 @@ public class BizMissionDocSquareServiceImpl implements IBizMissionDocSquareServi
         //重新计算md5
         String contentMD5 = DigestUtil.md5Hex(bizMissionDocSquarePO.getContent());
         bizMissionDocSquarePO.setContentMd5(contentMD5);
-        BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocSquareMapper.INSTANCE.convertJsonDTO(source);
+        BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocSquareMapper.INSTANCE.convertJsonDTO(bizMissionDocSquarePO);
         String MD5 = DigestUtil.md5Hex(JsonUtils.toJsonString(bizMissionDocJsonDTO));
         bizMissionDocSquarePO.setMd5(MD5);
         return baseRepository.updateById(bizMissionDocSquarePO) != 0;
@@ -94,7 +106,7 @@ public class BizMissionDocSquareServiceImpl implements IBizMissionDocSquareServi
         BizMissionDocSquarePO bizMissionDocSquarePO = BizMissionDocSquareMapper.INSTANCE.convertPO(source);
         String contentMD5 = DigestUtil.md5Hex(bizMissionDocSquarePO.getContent());
         bizMissionDocSquarePO.setContentMd5(contentMD5);
-        BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocSquareMapper.INSTANCE.convertJsonDTO(source);
+        BizMissionDocJsonDTO bizMissionDocJsonDTO = BizMissionDocSquareMapper.INSTANCE.convertJsonDTO(bizMissionDocSquarePO);
         String MD5 = DigestUtil.md5Hex(JsonUtils.toJsonString(bizMissionDocJsonDTO));
         bizMissionDocSquarePO.setMd5(MD5);
         bizMissionDocSquarePO.setVersion(1);
@@ -132,4 +144,52 @@ public class BizMissionDocSquareServiceImpl implements IBizMissionDocSquareServi
         return CollectionUtil.isNotEmpty(bizMissionDocSquarePOS);
     }
 
+    /**
+     * @param id 拉取的ID
+     * @description: 推送宣教文档到宣教文档广场
+     * @author wangzl
+     * @date 2025/5/27
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean pullDoc(String id) {
+        String currentUserId = LoginUserStrategy.tr.getCurrentUserId();
+        BizMissionDocSquarePO bizMissionDocSquarePO = baseRepository.selectById(id);
+        if (Objects.isNull(bizMissionDocSquarePO)) {
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "该宣教文档不存在");
+        }
+        //拉取者所在医院
+        String tenantId = TenantContextHolder.getTenantId();
+        BizMissionDocAndSquareCoverDTO bizMissionDocAndSquareCoverDTO = BizMissionDocSquareMapper.INSTANCE.convertCoverDTO(bizMissionDocSquarePO);
+        BizMissionDocPO newBizMissionDocPO = BizMissionDocMapper.INSTANCE.convertSquarePO(bizMissionDocAndSquareCoverDTO);
+        newBizMissionDocPO.setDeleted(false);
+        if (tenantId.equals(bizMissionDocSquarePO.getTenantId())) {
+            //拉取自己医院推送数据 软删除所以只会更新即可
+            BizMissionDocPO bizMissionDocPO = bizMissionDocRepository.selectBizMissionDocById(bizMissionDocSquarePO.getHospitalDocId());
+            if (Objects.isNull(bizMissionDocPO)) {
+                throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "该宣教文档不存在");
+            } else {
+                newBizMissionDocPO.setId(bizMissionDocPO.getId());
+                newBizMissionDocPO.setUpdateBy(currentUserId);
+                newBizMissionDocPO.setUpdateTime(new Date());
+                bizMissionDocRepository.updateBizMissionDocById(newBizMissionDocPO);
+            }
+        } else {
+            newBizMissionDocPO.setSquareDocId(bizMissionDocSquarePO.getId());
+            BizMissionDocPO bizMissionDocPO = bizMissionDocRepository.selectOneBySquareId(bizMissionDocSquarePO.getId());
+            if (Objects.isNull(bizMissionDocPO)) {
+                bizMissionDocRepository.insert(newBizMissionDocPO);
+            } else {
+                newBizMissionDocPO.setId(bizMissionDocPO.getId());
+                newBizMissionDocPO.setUpdateBy(currentUserId);
+                newBizMissionDocPO.setUpdateTime(new Date());
+                bizMissionDocRepository.updateBizMissionDocById(newBizMissionDocPO);
+            }
+        }
+        //增加引用次数
+        return baseRepository.update(null, new LambdaUpdateWrapper<BizMissionDocSquarePO>()
+                .eq(BizMissionDocSquarePO::getId, bizMissionDocSquarePO.getId())
+                .set(BizMissionDocSquarePO::getCitationCount, bizMissionDocSquarePO.getCitationCount() + 1)) != 0;
+    }
+
 }

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

@@ -77,7 +77,7 @@ public class BizMissionDocController extends BaseController{
     public CommonResult<Integer> delete(@RequestBody Collection<String> ids) {
         return CommonResult.success(bizMissionDocService.removeBizMissionDocByIds(ids));
     }
-    @ApiOperationSupport(author = "wangzl",order = 5)
+    @ApiOperationSupport(author = "wangzl",order = 6)
     @ApiOperation(value="校验宣教文档是否存在",notes = "权限: common:missionDoc:check ,content宣教内容")
     @PostMapping("/checkContent")
     @OperateLog
@@ -85,4 +85,13 @@ public class BizMissionDocController extends BaseController{
     public CommonResult<Boolean> checkContent(@RequestParam String content) {
         return CommonResult.success(bizMissionDocService.checkContent(content));
     }
+
+    @ApiOperationSupport(author = "wangzl",order = 7)
+    @ApiOperation(value="推送宣教文档到宣教文档广场",notes = "权限: common:missionDoc:push  宣教文档ID ")
+    @GetMapping("/push/{id}")
+    @OperateLog
+    @SaCheckPermission("common:missionDoc:push")
+    public CommonResult<Boolean> pushDoc(@PathVariable String id) {
+        return CommonResult.success(bizMissionDocService.pushDoc(id));
+    }
 }

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

@@ -78,7 +78,7 @@ public class BizMissionDocSquareController extends BaseController{
         return CommonResult.success(bizMissionDocSquareService.removeBizMissionDocSquareByIds(ids));
     }
 
-    @ApiOperationSupport(author = "wangzl",order = 5)
+    @ApiOperationSupport(author = "wangzl",order = 6)
     @ApiOperation(value="校验宣教文档是否存在",notes = "权限: common:missionDocSquare:check ")
     @PostMapping("/checkContent")
     @OperateLog
@@ -86,4 +86,12 @@ public class BizMissionDocSquareController extends BaseController{
     public CommonResult<Boolean> checkContent(@RequestParam String content) {
         return CommonResult.success(bizMissionDocSquareService.checkContent(content));
     }
+    @ApiOperationSupport(author = "wangzl",order = 7)
+    @ApiOperation(value="拉取宣教文档到自己医院",notes = "权限: common:missionDocSquare:pull  宣教广场文档ID ")
+    @GetMapping("/push/{id}")
+    @OperateLog
+    @SaCheckPermission("common:missionDocSquare:pull")
+    public CommonResult<Boolean> pullDoc(@PathVariable String id) {
+        return CommonResult.success(bizMissionDocSquareService.pullDoc(id));
+    }
 }

+ 103 - 0
tr-modules/tr-module-smartFollowUp/src/main/resources/mapper/smart/BizMissionDocMapper.xml

@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.tr.module.smart.common.repository.BizMissionDocRepository">
+    <resultMap id="MissionDoc" type="cn.tr.module.smart.common.po.BizMissionDocPO">
+        <result property="id" column="id"/>
+        <result property="type" column="type"/>
+        <result property="title" column="title"/>
+        <result property="source" column="source"/>
+        <result property="image" column="image"/>
+        <result property="content" column="content"/>
+        <result property="phase" column="phase"/>
+        <result property="intervalMinDay" column="interval_min_day"/>
+        <result property="intervalMaxDay" column="interval_max_day"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="version" column="version"/>
+        <result property="md5" column="md5"/>
+        <result property="contentMd5" column="content_md5"/>
+        <result property="deleted" column="deleted"/>
+        <result property="squareDocId" column="square_doc_id"/>
+    </resultMap>
+    <sql id="baseColumn">
+        id
+        , type, title, source, image, content, phase, interval_min_day, interval_max_day, tenant_id, create_time, create_by, update_time, update_by, version, md5, content_md5, deleted, square_doc_id
+    </sql>
+
+    <select id="selectBizMissionDocById" resultMap="MissionDoc">
+        SELECT
+        <include refid="baseColumn"/>
+        FROM biz_mission_doc
+        where id = #{id ,jdbcType=VARCHAR}
+    </select>
+
+    <select id="selectOneBySquareId" resultMap="MissionDoc">
+        SELECT
+        <include refid="baseColumn"/>
+        FROM biz_mission_doc
+        where
+        square_doc_id = #{squareId ,jdbcType=VARCHAR}
+        order by create_time desc
+        limit 1
+    </select>
+
+    <update id="updateBizMissionDocById">
+        UPDATE biz_mission_doc
+        <set>
+            <if test="type != null">
+                type = #{type ,jdbcType=VARCHAR},
+            </if>
+            <if test="title != null">
+                title = #{title ,jdbcType=VARCHAR},
+            </if>
+            <if test="source != null">
+                source = #{source ,jdbcType=VARCHAR},
+            </if>
+            <if test="image != null">
+                image = #{image ,jdbcType=VARCHAR},
+            </if>
+            <if test="content != null">
+                content = #{content ,jdbcType=VARCHAR},
+            </if>
+            <if test="phase != null">
+                phase = #{phase ,jdbcType=VARCHAR},
+            </if>
+            <if test="intervalMinDay != null">
+                interval_min_day = #{intervalMinDay ,jdbcType=VARCHAR},
+            </if>
+            <if test="intervalMaxDay != null">
+                interval_max_day = #{intervalMaxDay ,jdbcType=VARCHAR},
+            </if>
+            <if test="tenantId != null">
+                tenant_id = #{tenantId ,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time = #{updateTime ,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateBy != null">
+                update_by = #{updateBy ,jdbcType=VARCHAR},
+            </if>
+            <if test="version != null">
+                version = #{version ,jdbcType=BIGINT},
+            </if>
+            <if test="md5 != null">
+                md5 = #{md5 ,jdbcType=VARCHAR},
+            </if>
+            <if test="contentMd5 != null">
+                content_md5 = #{contentMd5 ,jdbcType=VARCHAR},
+            </if>
+            <if test="deleted != null">
+                deleted = #{deleted ,jdbcType=BIT},
+            </if>
+            <if test="squareDocId != null">
+                square_doc_id = #{squareDocId ,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where id = #{id ,jdbcType=VARCHAR}
+    </update>
+</mapper>

+ 108 - 0
tr-modules/tr-module-smartFollowUp/src/main/resources/mapper/smart/BizMissionDocSquareMapper.xml

@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.tr.module.smart.common.repository.BizMissionDocSquareRepository">
+    <resultMap id="MissionDocSquare" type="cn.tr.module.smart.common.po.BizMissionDocSquarePO">
+        <result property="id" column="id"/>
+        <result property="type" column="type"/>
+        <result property="title" column="title"/>
+        <result property="source" column="source"/>
+        <result property="image" column="image"/>
+        <result property="content" column="content"/>
+        <result property="phase" column="phase"/>
+        <result property="intervalMinDay" column="interval_min_day"/>
+        <result property="intervalMaxDay" column="interval_max_day"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="citationCount" column="citation_count"/>
+        <result property="owner" column="owner"/>
+        <result property="md5" column="md5"/>
+        <result property="version" column="version"/>
+        <result property="hospitalDocId" column="hospital_doc_id"/>
+        <result property="contentMd5" column="content_md5"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="deleted" column="deleted"/>
+    </resultMap>
+    <sql id="baseColumn">
+        id
+        , type, title, source, image, content, phase, interval_min_day, interval_max_day, tenant_id, citation_count, owner, md5, version, hospital_doc_id, content_md5, create_time, create_by, update_time, update_by, deleted
+    </sql>
+    <update id="updateBizMissionDocSquareById">
+        UPDATE biz_mission_doc_square
+        <set>
+            <if test="type != null">
+                type = #{type ,jdbcType=VARCHAR},
+            </if>
+            <if test="title != null">
+                title = #{title ,jdbcType=VARCHAR},
+            </if>
+            <if test="source != null">
+                source = #{source ,jdbcType=VARCHAR},
+            </if>
+            <if test="image != null">
+                image = #{image ,jdbcType=VARCHAR},
+            </if>
+            <if test="content != null">
+                content = #{content ,jdbcType=VARCHAR},
+            </if>
+            <if test="phase != null">
+                phase = #{phase ,jdbcType=VARCHAR},
+            </if>
+            <if test="intervalMinDay != null">
+                interval_min_day = #{intervalMinDay ,jdbcType=VARCHAR},
+            </if>
+            <if test="intervalMaxDay != null">
+                interval_max_day = #{intervalMaxDay ,jdbcType=VARCHAR},
+            </if>
+            <if test="tenantId != null">
+                tenant_id = #{tenantId ,jdbcType=VARCHAR},
+            </if>
+            <if test="citationCount != null">
+                citation_count = #{citationCount ,jdbcType=INTEGER},
+            </if>
+            <if test="owner != null">
+                owner = #{owner ,jdbcType=VARCHAR},
+            </if>
+            <if test="md5 != null">
+                md5 = #{md5 ,jdbcType=VARCHAR},
+            </if>
+            <if test="version != null">
+                version = #{version ,jdbcType=INTEGER},
+            </if>
+            <if test="hospitalDocId != null">
+                hospital_doc_id = #{hospitalDocId ,jdbcType=VARCHAR},
+            </if>
+            <if test="contentMd5 != null">
+                content_md5 = #{contentMd5 ,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time = #{createTime ,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createBy != null">
+                create_by = #{createBy ,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time = #{updateTime ,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateBy != null">
+                update_by = #{updateBy ,jdbcType=VARCHAR},
+            </if>
+            <if test="deleted != null">
+                deleted = #{deleted ,jdbcType=BIT},
+            </if>
+        </set>
+        where id = #{id ,jdbcType=VARCHAR}
+    </update>
+
+    <select id="selectOneByHospitalId" resultMap="MissionDocSquare">
+        select
+        <include refid="baseColumn"/>
+        from biz_mission_doc_square
+        where hospital_doc_id = #{id ,jdbcType=VARCHAR}
+        order by create_time desc
+        limit 1
+    </select>
+</mapper>