Bläddra i källkod

问卷组合问卷信息内容增加根据Id查询详细信息借口

wangzl 4 månader sedan
förälder
incheckning
2892e47f5f
12 ändrade filer med 205 tillägg och 13 borttagningar
  1. 8 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizQuestionGroupMapper.java
  2. 9 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizQuestionMapper.java
  3. 6 3
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizQuestionGroupPO.java
  4. 6 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizQuestionGroupService.java
  5. 13 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizQuestionGroupSquareService.java
  6. 6 2
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizQuestionService.java
  7. 12 2
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizQuestionGroupServiceImpl.java
  8. 97 5
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizQuestionGroupSquareServiceImpl.java
  9. 12 1
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizQuestionServiceImpl.java
  10. 9 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizQuestionController.java
  11. 9 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizQuestionGroupController.java
  12. 18 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizQuestionGroupSquareController.java

+ 8 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizQuestionGroupMapper.java

@@ -2,7 +2,10 @@ package cn.tr.module.smart.common.mapper;
 
 import cn.tr.module.smart.common.po.BizQuestionGroupPO;
 import cn.tr.module.smart.common.dto.BizQuestionGroupDTO;
+import cn.tr.module.smart.common.po.BizQuestionGroupSquarePO;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
 import org.mapstruct.factory.Mappers;
 
 import java.util.List;
@@ -25,4 +28,9 @@ public interface BizQuestionGroupMapper {
 
     List<BizQuestionGroupPO> convertPOList(List<BizQuestionGroupDTO> source);
 
+    @Mappings({
+            @Mapping(target = "id", ignore = true)
+    })
+    BizQuestionGroupPO convertQuestionGroupPO(BizQuestionGroupSquarePO source);
+
 }

+ 9 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizQuestionMapper.java

@@ -3,8 +3,11 @@ package cn.tr.module.smart.common.mapper;
 import cn.tr.module.smart.common.entity.BizQuestionEntity;
 import cn.tr.module.smart.common.po.BizQuestionPO;
 import cn.tr.module.smart.common.dto.BizQuestionDTO;
+import cn.tr.module.smart.common.po.BizQuestionSquarePO;
 import cn.tr.module.smart.wx.controller.vo.BizWxDeptQuestionVO;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
 import org.mapstruct.factory.Mappers;
 
 import java.util.List;
@@ -30,4 +33,10 @@ public interface BizQuestionMapper {
     List<BizQuestionEntity> convertEntityList(List<BizQuestionPO> source);
 
     List<BizWxDeptQuestionVO> convertWxDeptQuestionVOList(List<BizQuestionPO> list);
+
+    @Mappings({
+            @Mapping(target = "groupId", ignore = true),
+            @Mapping(target = "id",  ignore = true)
+    })
+    BizQuestionPO convertQuestionPO(BizQuestionSquarePO source);
 }

+ 6 - 3
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizQuestionGroupPO.java

@@ -40,12 +40,15 @@ public class BizQuestionGroupPO extends TenantPO {
     @ApiModelProperty(value = "问卷类型", position = 3)
     private String type;
 
-    @ApiModelProperty("MD5")
+    @ApiModelProperty(value = "MD5",position = 4)
     private String md5;
 
-    @ApiModelProperty("术后推送间隔(小时)")
+    @ApiModelProperty(value = "术后推送间隔(小时)",position = 5)
     private Integer interval;
 
-    @ApiModelProperty("术后推送频率(次)")
+    @ApiModelProperty(value = "术后推送频率(次)",position = 6)
     private Integer frequency;
+
+    @ApiModelProperty(value = "拉取广场ID", position = 7)
+    private String squareId;
 }

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

@@ -60,4 +60,10 @@ public interface IBizQuestionGroupService{
       * @date 2025/7/31
       */
      boolean pushQuestion(String id);
+    /**
+     * @description: 根据问卷组ID查询问卷详情
+     * @author wangzl
+     * @date 2025/7/31
+     */
+     BizQuestionGroupDTO  selectQuestionGroupById(String id);
 }

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

@@ -51,4 +51,17 @@ public interface IBizQuestionGroupSquareService{
      * @date    2025/05/23 16:36
      */
     int removeBizQuestionGroupSquareByIds(Collection<String> ids);
+    /**
+     * @description: TODO
+     * @author wangzl
+     * @date 2025/7/31
+     */
+    boolean checkContent(String id);
+
+    /**
+     * @description: 拉取问卷组到自己医院
+     * @author wangzl
+     * @date 2025/7/31
+     */
+    boolean pullQuestionGroup(String id);
 }

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

@@ -29,7 +29,11 @@ public interface IBizQuestionService{
      * @date  2025/05/23 17:03
      */
     boolean insertBizQuestion(List<BizQuestionDTO> source);
-
-
+    /**
+     * @description: 根据问卷组ID查询问卷详细信息
+     * @author wangzl
+     * @date 2025/7/31
+     */
+    List<BizQuestionDTO> selectQuestionByGroupId(String groupId);
     List<BizWxDeptQuestionVO> selectBizQuestionByGroupId(String groupId);
 }

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

@@ -47,8 +47,7 @@ public class BizQuestionGroupServiceImpl implements IBizQuestionGroupService {
     private BizQuestionGroupSquareRepository bizQuestionGroupSquareRepository;
     @Autowired
     private BizQuestionSquareServiceImpl bizQuestionSquareServiceImpl;
-    @Autowired
-    private BizQuestionSquareRepository bizQuestionSquareRepository;
+
 
     private static final String[] MD5_FIELDS = {"name", "type", "interval", "frequency"};
 
@@ -192,4 +191,15 @@ public class BizQuestionGroupServiceImpl implements IBizQuestionGroupService {
             return  bizQuestionSquareServiceImpl.saveOrUpdateBatch(bizQuestionSquarePoList);
         }
     }
+
+    /**
+     * @param id
+     * @description: 根据问卷组ID查询问卷详情
+     * @author wangzl
+     * @date 2025/7/31
+     */
+    @Override
+    public BizQuestionGroupDTO selectQuestionGroupById(String id) {
+        return BizQuestionGroupMapper.INSTANCE.convertDto(baseRepository.selectById(id));
+    }
 }

+ 97 - 5
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizQuestionGroupSquareServiceImpl.java

@@ -1,6 +1,19 @@
 package cn.tr.module.smart.common.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import cn.tr.core.exception.TRExcCode;
+import cn.tr.core.strategy.LoginUserStrategy;
+import cn.tr.core.tenant.TenantContextHolder;
+import cn.tr.module.smart.common.mapper.BizQuestionGroupMapper;
+import cn.tr.module.smart.common.mapper.BizQuestionMapper;
+import cn.tr.module.smart.common.mapper.BizQuestionSquareMapper;
+import cn.tr.module.smart.common.po.BizQuestionGroupPO;
+import cn.tr.module.smart.common.po.BizQuestionPO;
+import cn.tr.module.smart.common.po.BizQuestionSquarePO;
+import cn.tr.module.smart.common.repository.BizQuestionGroupRepository;
+import cn.tr.module.smart.common.repository.BizQuestionSquareRepository;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import cn.hutool.core.collection.CollectionUtil;
@@ -12,6 +25,8 @@ import cn.tr.module.smart.common.po.BizQuestionGroupSquarePO;
 import cn.tr.module.smart.common.dto.BizQuestionGroupSquareDTO;
 import cn.tr.module.smart.common.dto.BizQuestionGroupSquareQueryDTO;
 import java.util.*;
+import java.util.stream.Collectors;
+
 import cn.tr.module.smart.common.service.IBizQuestionGroupSquareService;
 import cn.tr.module.smart.common.mapper.BizQuestionGroupSquareMapper;
 /**
@@ -25,6 +40,13 @@ public class BizQuestionGroupSquareServiceImpl implements IBizQuestionGroupSquar
     @Autowired
     private BizQuestionGroupSquareRepository baseRepository;
 
+    @Autowired
+    private BizQuestionSquareRepository bizQuestionSquareRepository;
+    @Autowired
+    private BizQuestionServiceImpl bizQuestionServiceimpl;
+
+    @Autowired
+    private BizQuestionGroupRepository bizQuestionGroupRepository;
 
     /**
     * 根据条件查询问卷组广场
@@ -38,7 +60,7 @@ public class BizQuestionGroupSquareServiceImpl implements IBizQuestionGroupSquar
                 baseRepository.selectList(new LambdaQueryWrapper<BizQuestionGroupSquarePO>()
                 )
         );
-    };
+    }
 
     /**
     * 根据id查询问卷组广场
@@ -49,7 +71,7 @@ public class BizQuestionGroupSquareServiceImpl implements IBizQuestionGroupSquar
     @Override
     public BizQuestionGroupSquareDTO selectBizQuestionGroupSquareById(String id){
         return BizQuestionGroupSquareMapper.INSTANCE.convertDto(baseRepository.selectById(id));
-    };
+    }
 
     /**
     * 编辑问卷组广场
@@ -61,7 +83,7 @@ public class BizQuestionGroupSquareServiceImpl implements IBizQuestionGroupSquar
     @Override
     public boolean updateBizQuestionGroupSquareById(BizQuestionGroupSquareDTO source){
             return baseRepository.updateById(BizQuestionGroupSquareMapper.INSTANCE.convertPO(source))!=0;
-    };
+    }
 
     /**
     * 新增问卷组广场
@@ -73,7 +95,7 @@ public class BizQuestionGroupSquareServiceImpl implements IBizQuestionGroupSquar
     @Transactional(rollbackFor = Exception.class)
     public boolean insertBizQuestionGroupSquare(BizQuestionGroupSquareDTO source){
         return baseRepository.insert(BizQuestionGroupSquareMapper.INSTANCE.convertPO(source))!=0;
-    };
+    }
 
     /**
     * 删除问卷组广场详情
@@ -88,5 +110,75 @@ public class BizQuestionGroupSquareServiceImpl implements IBizQuestionGroupSquar
             throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"请选择要删除的数据");
         }
         return baseRepository.deleteBatchIds(ids);
-    };
+    }
+
+    /**
+     * @param id
+     * @description: TODO
+     * @author wangzl
+     * @date 2025/7/31
+     */
+    @Override
+    public boolean checkContent(String id) {
+        BizQuestionGroupSquarePO bizQuestionGroupSquarePO = baseRepository.selectById(id);
+        if(ObjectUtil.isNull(bizQuestionGroupSquarePO)){
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"校验的数据不存在");
+        }
+        BizQuestionGroupPO bizQuestionGroupPO = bizQuestionGroupRepository.selectOne(new LambdaQueryWrapper<BizQuestionGroupPO>()
+                .eq(BizQuestionGroupPO::getMd5, bizQuestionGroupSquarePO.getMd5()));
+        return ObjectUtil.isNotNull(bizQuestionGroupPO);
+    }
+
+    /**
+     * @param id
+     * @description: 拉取问卷组到自己医院
+     * @author wangzl
+     * @date 2025/7/31
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean pullQuestionGroup(String id) {
+        String currentUserId = LoginUserStrategy.tr.getCurrentUserId();
+        BizQuestionGroupSquarePO bizQuestionGroupSquarePO = baseRepository.selectById(id);
+        if(ObjectUtil.isNull(bizQuestionGroupSquarePO)){
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"拉取问卷不存在");
+        }
+        List<BizQuestionSquarePO> bizQuestionSquarePOS = bizQuestionSquareRepository.selectList(new LambdaQueryWrapper<BizQuestionSquarePO>()
+                .in(BizQuestionSquarePO::getGroupId, bizQuestionGroupSquarePO.getId()));
+        String tenantId = TenantContextHolder.getTenantId();
+        BizQuestionGroupPO bizQuestionGroupPO = bizQuestionGroupRepository.selectOne(new LambdaQueryWrapper<BizQuestionGroupPO>()
+                .eq(BizQuestionGroupPO::getMd5, bizQuestionGroupSquarePO.getMd5())
+                .eq(BizQuestionGroupPO::getTenantId, tenantId));
+        BizQuestionGroupPO newBizQuestionGroupPO = BizQuestionGroupMapper.INSTANCE.convertQuestionGroupPO(bizQuestionGroupSquarePO);
+        if(ObjectUtil.isNotNull(bizQuestionGroupPO)){
+             //相同内容并且是自己医院问卷对问卷信息做更新
+            newBizQuestionGroupPO.setId(bizQuestionGroupPO.getId());
+            newBizQuestionGroupPO.setUpdateBy(currentUserId);
+            newBizQuestionGroupPO.setUpdateTime(new Date());
+            bizQuestionGroupRepository.updateById(newBizQuestionGroupPO);
+            //每个问卷题目太多意义
+            // 对应太麻烦,所以先删除再添加
+            bizQuestionServiceimpl.remove(new LambdaQueryWrapper<BizQuestionPO>()
+                    .in(BizQuestionPO::getGroupId,bizQuestionGroupPO.getId()));
+            List<BizQuestionPO> bizQuestionPOS = bizQuestionSquarePOS.stream().map(bizQuestionSquarePO -> {
+                BizQuestionPO bizQuestionPO = BizQuestionMapper.INSTANCE.convertQuestionPO(bizQuestionSquarePO);
+                bizQuestionPO.setGroupId(bizQuestionGroupPO.getId());
+                return bizQuestionPO;
+            }).collect(Collectors.toList());
+            bizQuestionServiceimpl.saveOrUpdateBatch(bizQuestionPOS);
+        }else {
+            newBizQuestionGroupPO.setSquareId(bizQuestionGroupSquarePO.getId());
+            bizQuestionGroupRepository.insert(newBizQuestionGroupPO);
+            List<BizQuestionPO> bizQuestionPOS = bizQuestionSquarePOS.stream().map(bizQuestionSquarePO -> {
+                BizQuestionPO bizQuestionPO = BizQuestionMapper.INSTANCE.convertQuestionPO(bizQuestionSquarePO);
+                bizQuestionPO.setGroupId(newBizQuestionGroupPO.getId());
+                return bizQuestionPO;
+            }).collect(Collectors.toList());
+            bizQuestionServiceimpl.saveOrUpdateBatch(bizQuestionPOS);
+        }
+        //增加引用次数
+        return baseRepository.update(null , new LambdaUpdateWrapper<BizQuestionGroupSquarePO>()
+                .set(BizQuestionGroupSquarePO::getCitationCount,bizQuestionGroupSquarePO.getCitationCount()+1)
+                .eq(BizQuestionGroupSquarePO::getId,bizQuestionGroupSquarePO.getId()))!=0;
+    }
 }

+ 12 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizQuestionServiceImpl.java

@@ -52,7 +52,18 @@ public class BizQuestionServiceImpl extends ServiceImpl<BizQuestionRepository, B
         return this.saveBatch(BizQuestionMapper.INSTANCE.convertPOList(source));
     }
 
-
+    /**
+     * @param groupId
+     * @description: 根据问卷组ID查询问卷详细信息
+     * @author wangzl
+     * @date 2025/7/31
+     */
+    @Override
+    public List<BizQuestionDTO> selectQuestionByGroupId(String groupId) {
+        return BizQuestionMapper.INSTANCE.convertDtoList(baseRepository.selectList(new LambdaQueryWrapper<BizQuestionPO>()
+                .eq(BizQuestionPO::getGroupId, groupId)
+                .orderByAsc(BizQuestionPO::getSort)));
+    }
 
     @Override
     public List<BizWxDeptQuestionVO> selectBizQuestionByGroupId(String groupId) {

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

@@ -1,6 +1,7 @@
 package cn.tr.module.smart.web.controller;
 
 import cn.dev33.satoken.annotation.SaCheckLogin;
+import cn.tr.module.smart.common.dto.BizQuestionGroupDTO;
 import cn.tr.module.sys.oauth2.LoginTypeConstant;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import cn.dev33.satoken.annotation.SaCheckPermission;
@@ -56,4 +57,12 @@ public class BizQuestionController extends BaseController{
         return CommonResult.success(bizQuestionService.updateBizQuestionById(source));
     }
 
+    @ApiOperationSupport(author = "wangzl",order = 3)
+    @ApiOperation(value = "根据问卷组ID查询问卷详细信息",notes = "权限: common:question:query")
+    @GetMapping("/detail/{groupId}")
+    @SaCheckPermission("common:question:query")
+    public CommonResult<List<BizQuestionDTO>> findById(@PathVariable("groupId") String groupId){
+        return CommonResult.success(bizQuestionService.selectQuestionByGroupId(groupId));
+    }
+
 }

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

@@ -86,4 +86,13 @@ public class BizQuestionGroupController extends BaseController{
     public CommonResult<Boolean> pushQuestion(@PathVariable String id) {
         return CommonResult.success(bizQuestionGroupService.pushQuestion(id));
     }
+
+    @ApiOperationSupport(author = "lf",order = 2)
+    @ApiOperation(value = "根据id查询问卷组",notes = "权限: common:questionGroup:query")
+    @GetMapping("/detail/{id}")
+    @SaCheckPermission("common:questionGroup:query")
+    public CommonResult<BizQuestionGroupDTO> findById(@PathVariable("id") String id){
+        return CommonResult.success(bizQuestionGroupService.selectQuestionGroupById(id));
+    }
+
 }

+ 18 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizQuestionGroupSquareController.java

@@ -80,4 +80,22 @@ public class BizQuestionGroupSquareController extends BaseController{
     public CommonResult<Integer> delete(@RequestBody Collection<String> ids) {
         return CommonResult.success(bizQuestionGroupSquareService.removeBizQuestionGroupSquareByIds(ids));
     }
+
+    @ApiOperationSupport(author = "wangzl",order = 6)
+    @ApiOperation(value="校验问卷组是否存在",notes = "权限: common:questionGroupSquare:check")
+    @GetMapping("/check/{id}")
+    @OperateLog
+    @SaCheckPermission("common:questionGroupSquare:check")
+    public CommonResult<Boolean> check(@PathVariable String id) {
+        return CommonResult.success(bizQuestionGroupSquareService.checkContent(id));
+    }
+
+    @ApiOperationSupport(author = "wangzl",order = 7)
+    @ApiOperation(value="拉取问卷组到自己医院",notes = "权限: common:questionGroupSquare:pull")
+    @GetMapping("/pull/{id}")
+    @OperateLog
+    @SaCheckPermission("common:questionGroupSquare:pull")
+    public CommonResult<Boolean> pullQuestionGroup(@PathVariable String id) {
+        return CommonResult.success(bizQuestionGroupSquareService.pullQuestionGroup(id));
+    }
 }