浏览代码

Merge remote-tracking branch 'origin/master' into bjcz_his_scrm

yjwang 4 天之前
父节点
当前提交
c2360dfba9
共有 37 个文件被更改,包括 774 次插入73 次删除
  1. 24 1
      fs-company/src/main/java/com/fs/company/controller/company/CompanyUserController.java
  2. 36 0
      fs-doctor-app/src/main/java/com/fs/app/controller/DiagnosisController.java
  3. 1 0
      fs-ipad-task/src/main/java/com/fs/app/service/IpadSendServer.java
  4. 1 1
      fs-ipad-task/src/main/java/com/fs/app/task/SendMsg.java
  5. 52 16
      fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java
  6. 5 0
      fs-service/src/main/java/com/fs/company/domain/Company.java
  7. 1 0
      fs-service/src/main/java/com/fs/company/mapper/CompanyMapper.java
  8. 13 0
      fs-service/src/main/java/com/fs/course/param/FsFirstDiagnosisListUParam.java
  9. 11 0
      fs-service/src/main/java/com/fs/course/param/FsInquiryPatientInfoUParam.java
  10. 11 2
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseWatchLogServiceImpl.java
  11. 7 0
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  12. 74 0
      fs-service/src/main/java/com/fs/course/vo/FsFirstDiagnosisListUVO.java
  13. 111 0
      fs-service/src/main/java/com/fs/course/vo/FsInquiryPatientInfoListUVO.java
  14. 6 0
      fs-service/src/main/java/com/fs/his/domain/FsFirstDiagnosis.java
  15. 32 0
      fs-service/src/main/java/com/fs/his/mapper/FsFirstDiagnosisMapper.java
  16. 23 0
      fs-service/src/main/java/com/fs/his/mapper/FsInquiryPatientInfoMapper.java
  17. 17 0
      fs-service/src/main/java/com/fs/his/param/FsDiagnosisFillDParam.java
  18. 13 0
      fs-service/src/main/java/com/fs/his/param/FsDiagnosisListDParam.java
  19. 21 5
      fs-service/src/main/java/com/fs/his/service/IFsFirstDiagnosisService.java
  20. 8 0
      fs-service/src/main/java/com/fs/his/service/IFsInquiryPatientInfoService.java
  21. 49 1
      fs-service/src/main/java/com/fs/his/service/impl/FsFirstDiagnosisServiceImpl.java
  22. 15 0
      fs-service/src/main/java/com/fs/his/service/impl/FsInquiryPatientInfoServiceImpl.java
  23. 18 27
      fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java
  24. 33 0
      fs-service/src/main/java/com/fs/his/vo/FsDiagnosisListDVO.java
  25. 1 1
      fs-service/src/main/java/com/fs/qw/vo/QwSopTempSetting.java
  26. 1 1
      fs-service/src/main/java/com/fs/sop/mapper/QwSopLogsMapper.java
  27. 58 5
      fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java
  28. 3 0
      fs-service/src/main/resources/application-config-druid-jnmy.yml
  29. 4 0
      fs-service/src/main/resources/application-config-druid-sxjz.yml
  30. 1 0
      fs-service/src/main/resources/application-druid-jnmy-test.yml
  31. 5 5
      fs-service/src/main/resources/application-druid-jzzx.yml
  32. 5 5
      fs-service/src/main/resources/application-druid-kyt.yml
  33. 6 1
      fs-service/src/main/resources/mapper/company/CompanyMapper.xml
  34. 13 1
      fs-service/src/main/resources/mapper/his/FsFirstDiagnosisMapper.xml
  35. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java
  36. 47 0
      fs-user-app/src/main/java/com/fs/app/controller/DiagnosisController.java
  37. 47 0
      fs-user-app/src/main/java/com/fs/app/controller/InquiryPatientInfoController.java

+ 24 - 1
fs-company/src/main/java/com/fs/company/controller/company/CompanyUserController.java

@@ -8,6 +8,7 @@ import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.core.redis.RedisCache;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.PatternUtils;
 import com.fs.common.utils.ServletUtils;
@@ -70,6 +71,8 @@ public class CompanyUserController extends BaseController
     private ICompanyUserDelayTimeService companyUserDelayTimeService;
     @Autowired
     private ISysConfigService configService;
+    @Autowired
+    private RedisCache redisCache;
     /**
      * 获取用户列表
      */
@@ -259,9 +262,29 @@ public class CompanyUserController extends BaseController
         if (!PatternUtils.checkPassword(user.getPassword())) {
             return AjaxResult.error("密码格式不正确,需包含字母、数字和特殊字符,长度为 8-20 位");
         }
-        return toAjax(companyUserService.resetUserPwdByUserId(user.getUserId(), SecurityUtils.encryptPassword(user.getPassword())));
+
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+
+        String newPassword = SecurityUtils.encryptPassword(user.getPassword());
+        int i = companyUserService.resetUserPwdByUserId(user.getUserId(), newPassword);
+
+        if (i > 0) {
+            // 更新缓存用户密码
+            loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword));
+            tokenService.setLoginUser(loginUser);
+            cleanFirstLogin(loginUser);
+        }
+
+        return toAjax(i);
     }
 
+    /**
+     * 去除首次登录的标志
+     * @param loginUser
+     */
+    private void cleanFirstLogin(LoginUser loginUser) {
+        redisCache.deleteObject("newCompanyUser:" + loginUser.getUser().getCompanyId() + ":" + loginUser.getUser().getUserName());
+    }
     /**
      * 状态修改
      */

+ 36 - 0
fs-doctor-app/src/main/java/com/fs/app/controller/DiagnosisController.java

@@ -0,0 +1,36 @@
+package com.fs.app.controller;
+
+import com.fs.common.core.domain.R;
+import com.fs.his.param.FsDiagnosisFillDParam;
+import com.fs.his.param.FsDiagnosisListDParam;
+import com.fs.his.service.IFsFirstDiagnosisService;
+import com.fs.his.vo.FsDiagnosisListDVO;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/app/diagnosis")
+public class DiagnosisController extends AppBaseController{
+
+    @Autowired
+    private IFsFirstDiagnosisService diagnosisService;
+
+    @GetMapping("/getDiagnosisList")
+    public R getDiagnosisList(FsDiagnosisListDParam param){
+        param.setDoctorId(Long.parseLong(getDoctorId()));
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        List<FsDiagnosisListDVO> diagnosisList = diagnosisService.getDiagnosisList(param);
+        PageInfo<FsDiagnosisListDVO> pageInfo = new PageInfo<>(diagnosisList);
+        return R.ok().put("data", pageInfo);
+    }
+
+    @PutMapping("/fill")
+    public R fill(@RequestBody FsDiagnosisFillDParam param){
+        param.setDoctorId(Long.parseLong(getDoctorId()));
+        return diagnosisService.fill(param);
+    }
+}

+ 1 - 0
fs-ipad-task/src/main/java/com/fs/app/service/IpadSendServer.java

@@ -336,6 +336,7 @@ public class IpadSendServer {
                     sendLink(vo, content);
                     break;
                 case "4":
+                case "10":
                     sendMiniProgram(vo, content, miniMap);
                     break;
                 case "5":

+ 1 - 1
fs-ipad-task/src/main/java/com/fs/app/task/SendMsg.java

@@ -90,7 +90,7 @@ public class SendMsg {
     }
 
     private Map<String, FsCoursePlaySourceConfig> getMiniMap() {
-        List<FsCoursePlaySourceConfig> list = fsCoursePlaySourceConfigService.list(new QueryWrapper<FsCoursePlaySourceConfig>().eq("type", 1).eq("is_del", 0));
+        List<FsCoursePlaySourceConfig> list = fsCoursePlaySourceConfigService.list(new QueryWrapper<FsCoursePlaySourceConfig>().ne("type", 2).eq("is_del", 0));
 //        SysConfig maConfig = sysConfigMapper.selectConfigByConfigKey("courseMa.config");
 //        List<CourseMaConfig> courseMaConfigs = JSON.parseArray(maConfig.getConfigValue(), CourseMaConfig.class);
         return PubFun.listToMapByGroupObject(list, FsCoursePlaySourceConfig::getAppid);

+ 52 - 16
fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java

@@ -8,8 +8,10 @@ import com.fs.common.core.domain.R;
 import com.fs.common.exception.base.BaseException;
 import com.fs.common.utils.PubFun;
 import com.fs.common.utils.StringUtils;
+import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyMiniapp;
 import com.fs.company.domain.CompanyUser;
+import com.fs.company.mapper.CompanyMapper;
 import com.fs.company.service.ICompanyMiniappService;
 import com.fs.company.service.ICompanyUserService;
 import com.fs.config.cloud.CloudHostProper;
@@ -168,6 +170,8 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
     @Autowired
     private IQwCompanyService iQwCompanyService;
 
+    @Autowired
+    private CompanyMapper companyMapper;
 
     @PostConstruct
     public void init() {
@@ -315,6 +319,9 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 
         Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap = miniList.stream().collect(Collectors.groupingBy(CompanyMiniapp::getCompanyId, Collectors.groupingBy(CompanyMiniapp::getType)));
 
+
+        List<Company> companies = companyMapper.selectCompanyAllList();
+
         log.info("共分组 {} 个 SOP ID 进行处理。", sopLogsGroupedById.size());
 
         CountDownLatch sopGroupLatch = new CountDownLatch(sopLogsGroupedById.size());
@@ -322,7 +329,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         for (Map.Entry<String, List<SopUserLogsVo>> entry : sopLogsGroupedById.entrySet()) {
             String sopId = entry.getKey();
             List<SopUserLogsVo> userLogsVos = entry.getValue();
-            processSopGroupAsync(sopId, userLogsVos, sopGroupLatch,currentTime, groupChatMap,config,miniMap);
+            processSopGroupAsync(sopId, userLogsVos, sopGroupLatch,currentTime, groupChatMap,config,miniMap,companies);
         }
 
         // 等待所有 SOP 分组处理完成
@@ -343,9 +350,10 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
             backoff = @Backoff(delay = 2000)
     )
     public void processSopGroupAsync(String sopId, List<SopUserLogsVo> userLogsVos, CountDownLatch latch ,LocalDateTime currentTime,
-                                     Map<String, QwGroupChat> groupChatMap,CourseConfig config,Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap) {
+                                     Map<String, QwGroupChat> groupChatMap,CourseConfig config,Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap,
+                                     List<Company> companies) {
         try {
-            processSopGroup(sopId, userLogsVos,currentTime, groupChatMap, config,miniMap);
+            processSopGroup(sopId, userLogsVos,currentTime, groupChatMap, config,miniMap,companies);
         } catch (Exception e) {
             log.error("处理 SOP ID {} 时发生异常: {}", sopId, e.getMessage(), e);
         } finally {
@@ -355,7 +363,8 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 
 
     private void processSopGroup(String sopId, List<SopUserLogsVo> userLogsVos,LocalDateTime currentTime, Map<String,
-            QwGroupChat> groupChatMap,CourseConfig config,Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap) throws Exception {
+            QwGroupChat> groupChatMap,CourseConfig config,Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap,
+                                 List<Company> companies) throws Exception {
         QwSopRuleTimeVO ruleTimeVO = sopMapper.selectQwSopByClickHouseId(sopId);
 
         if (ruleTimeVO == null) {
@@ -397,7 +406,8 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 
         CountDownLatch userLogsLatch = new CountDownLatch(userLogsVos.size());
         for (SopUserLogsVo logVo : userLogsVos) {
-            processUserLogAsync(logVo, ruleTimeVO, rulesList, userLogsLatch, currentTime, groupChatMap,qwCompany.getMiniAppId(), config,miniMap);
+            processUserLogAsync(logVo, ruleTimeVO, rulesList, userLogsLatch, currentTime, groupChatMap,qwCompany.getMiniAppId(),
+                    config,miniMap,companies);
         }
 
         // 等待所有用户日志处理完成
@@ -418,9 +428,10 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
     )
     public void processUserLogAsync(SopUserLogsVo logVo, QwSopRuleTimeVO ruleTimeVO, List<QwSopTempRules> tempSettings,
                                     CountDownLatch latch, LocalDateTime currentTime, Map<String, QwGroupChat> groupChatMap,
-                                    String miniAppId,CourseConfig config,Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap) {
+                                    String miniAppId,CourseConfig config,Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap,
+                                    List<Company> companies) {
         try {
-            processUserLog(logVo, ruleTimeVO, tempSettings,currentTime, groupChatMap, miniAppId, config,miniMap);
+            processUserLog(logVo, ruleTimeVO, tempSettings,currentTime, groupChatMap, miniAppId, config,miniMap,companies);
         } catch (Exception e) {
             log.error("处理用户日志 {} 时发生异常: {}", logVo.getId(), e.getMessage(), e);
         } finally {
@@ -431,7 +442,8 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 
     private void processUserLog(SopUserLogsVo logVo, QwSopRuleTimeVO ruleTimeVO, List<QwSopTempRules> tempSettings,
                                 LocalDateTime currentTime, Map<String, QwGroupChat> groupChatMap,String miniAppId,
-                                CourseConfig config,Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap) {
+                                CourseConfig config,Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap,
+                                List<Company> companies) {
         try {
 
             LocalDate startDate = LocalDate.parse(logVo.getStartTime(), DATE_FORMATTER);
@@ -599,7 +611,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 
                         insertSopUserLogs(sopUserLogsInfos, logVo, sendTime, ruleTimeVO, content, qwUserId,
                                 companyUserId, companyId, qwUserByRedis.getWelcomeText(),qwUserByRedis.getQwUserName(),
-                                groupChatMap, miniAppId,config,miniMap, sendMsgType);
+                                groupChatMap, miniAppId,config,miniMap, sendMsgType,companies);
 
                     }
                 } catch (Exception e) {
@@ -643,7 +655,8 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                                    QwSopRuleTimeVO ruleTimeVO, QwSopTempSetting.Content content,
                                    String qwUserId,String companyUserId,String companyId,String welcomeText,String qwUserName,
                                    Map<String, QwGroupChat> groupChatMap,String miniAppId,CourseConfig config,
-                                   Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap, Integer sendMsgType) {
+                                   Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap, Integer sendMsgType,
+                                   List<Company> companies) {
         String formattedSendTime = sendTime.toInstant()
                 .atZone(ZoneId.systemDefault())
                 .format(DATE_TIME_FORMATTER);
@@ -670,7 +683,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                 QwSopLogs sopLogs = createBaseLog(formattedSendTime, logVo, ruleTimeVO, groupChat.getChatId(), groupChat.getName(), null, isOfficial, null);
                 handleLogBasedOnType(sopLogs, content, logVo, sendTime, courseId, videoId,
                         type, qwUserId, companyUserId, companyId, groupChat.getChatId(), welcomeText, qwUserName,
-                        null, true, miniAppId, groupChat,config, miniMap, null, sendMsgType);
+                        null, true, miniAppId, groupChat,config, miniMap, null, sendMsgType,companies);
             } else {
                 if(groupChat.getChatUserList() != null && !groupChat.getChatUserList().isEmpty()){
                     groupChat.getChatUserList().forEach(user -> {
@@ -679,7 +692,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                         QwSopLogs sopLogs = createBaseLog(formattedSendTime, logVo, ruleTimeVO, user.getUserId(), user.getName(), null, isOfficial, null);
                         handleLogBasedOnType(sopLogs, content, logVo, sendTime, courseId, videoId,
                                 type, qwUserId, companyUserId, companyId, user.getId().toString(), welcomeText, qwUserName,
-                                null, false, miniAppId, groupChat,config, miniMap, null, sendMsgType);
+                                null, false, miniAppId, groupChat,config, miniMap, null, sendMsgType,companies);
                     });
                 }
             }
@@ -694,7 +707,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                     QwSopLogs sopLogs = createBaseLog(formattedSendTime, logVo, ruleTimeVO, contactId.getExternalContactId(), externalUserName, fsUserId, isOfficial, contactId.getExternalId());
                     handleLogBasedOnType(sopLogs, content, logVo, sendTime, courseId, videoId,
                             type, qwUserId, companyUserId, companyId, externalId, welcomeText, qwUserName, fsUserId, false, miniAppId,
-                            null,config, miniMap, grade, sendMsgType);
+                            null,config, miniMap, grade, sendMsgType,companies);
                 } catch (Exception e) {
                     log.error("处理 externalContactId {} 时发生异常: {}", contactId, e.getMessage(), e);
                 }
@@ -803,7 +816,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                                       String qwUserName, Long fsUserId, boolean isGroupChat, String miniAppId,
                                       QwGroupChat groupChat,CourseConfig config,
                                       Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap,
-                                      Integer grade, Integer sendMsgType  ) {
+                                      Integer grade, Integer sendMsgType ,List<Company> companies ) {
         switch (type) {
             case 1:
                 handleNormalMessage(sopLogs, content,companyUserId);
@@ -811,7 +824,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
             case 2:
                 handleCourseMessage(sopLogs, content, logVo, sendTime, courseId, videoId,
                         qwUserId, companyUserId, companyId, externalId, welcomeText,qwUserName, fsUserId,
-                        isGroupChat, miniAppId, groupChat,config,miniMap, grade, sendMsgType);
+                        isGroupChat, miniAppId, groupChat,config,miniMap, grade, sendMsgType,companies);
                 break;
             case 3:
                 handleOrderMessage(sopLogs, content);
@@ -844,7 +857,8 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                                      SopUserLogsVo logVo, Date sendTime, Long courseId, Long videoId, String qwUserId, String companyUserId,
                                      String companyId, String externalId, String welcomeText, String qwUserName,
                                      Long fsUserId, boolean isGroupChat, String miniAppId, QwGroupChat groupChat,CourseConfig config,Map<Long,
-                                     Map<Integer, List<CompanyMiniapp>>> miniMap,Integer grade, Integer sendMsgType) {
+                                     Map<Integer, List<CompanyMiniapp>>> miniMap,Integer grade, Integer sendMsgType,
+                                     List<Company> companies) {
         // 深拷贝 Content 对象,避免使用 JSON
         QwSopTempSetting.Content clonedContent = deepCopyContent(content);
         if (clonedContent == null) {
@@ -970,6 +984,28 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                     setting.setLinkUrl(linkByApp.getSortLink().replaceAll("^[\\s\\u2005]+", ""));
                     setting.setAppLinkUrl(linkByApp.getAppMsgLink().replaceAll("^[\\s\\u2005]+", ""));
 
+                    break;
+                //自定义小程序
+                case "10":
+                    addWatchLogIfNeeded(sopLogs, videoId, courseId, sendTime, qwUserId, companyUserId, companyId, externalId,logVo);
+
+                    Optional<Company> matchedCompany = companies.stream()
+                            .filter(company -> String.valueOf(company.getCompanyId()).equals(companyId))
+                            .findFirst();
+                    if (matchedCompany.isPresent()) {
+                        Company company = matchedCompany.get();
+
+                        String customMiniAppId = company.getCustomMiniAppId();
+
+                        if (customMiniAppId != null && !customMiniAppId.trim().isEmpty()) {
+                            setting.setMiniprogramAppid(customMiniAppId);
+                        } else {
+                            setting.setMiniprogramAppid("该公司未配置自定义小程序:"+companyId);
+                        }
+                    } else {
+                        setting.setMiniprogramAppid("未找到匹配的公司的自定义小程序:"+companyId);
+                    }
+
                     break;
                 default:
                     break;

+ 5 - 0
fs-service/src/main/java/com/fs/company/domain/Company.java

@@ -110,6 +110,11 @@ public class Company extends BaseEntity
      * 点播配置-小程序appId
      */
     private String courseMiniAppId;
+    /**
+    * 自定义小程序
+    */
+    private String customMiniAppId;
+
     /** 会员是否默认黑名单,1-是;0-否(用于销售分享成为会员的操作) */
     private Integer fsUserIsDefaultBlack;
     private Integer repeat;

+ 1 - 0
fs-service/src/main/java/com/fs/company/mapper/CompanyMapper.java

@@ -189,4 +189,5 @@ public interface CompanyMapper
 
     List<Company> selectCompanyByIds2(@Param("companyIds") Set<Long> companyIds);
 
+
 }

+ 13 - 0
fs-service/src/main/java/com/fs/course/param/FsFirstDiagnosisListUParam.java

@@ -0,0 +1,13 @@
+package com.fs.course.param;
+
+import com.fs.his.param.BaseParam;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class FsFirstDiagnosisListUParam extends BaseParam {
+    private Long userId;
+
+    private Integer doctorStatus;
+}

+ 11 - 0
fs-service/src/main/java/com/fs/course/param/FsInquiryPatientInfoUParam.java

@@ -0,0 +1,11 @@
+package com.fs.course.param;
+
+import com.fs.his.param.BaseParam;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class FsInquiryPatientInfoUParam extends BaseParam {
+    private Long userId;
+}

+ 11 - 2
fs-service/src/main/java/com/fs/course/service/impl/FsCourseWatchLogServiceImpl.java

@@ -414,7 +414,7 @@ public class FsCourseWatchLogServiceImpl extends ServiceImpl<FsCourseWatchLogMap
             log.error("key中id为S:{}", videoDuration);
         }
 
-        
+
         if (videoDuration==null){
             FsUserCourseVideo video = courseVideoMapper.selectFsUserCourseVideoByVideoId(videoId);
             videoDuration=video.getDuration();
@@ -957,7 +957,16 @@ public class FsCourseWatchLogServiceImpl extends ServiceImpl<FsCourseWatchLogMap
     public Long getVideoDuration(Long videoId){
         //将视频时长也存到redis
         String videoRedisKey = "h5user:video:duration:" + videoId;
-        Long videoDuration = redisCache.getCacheObject(videoRedisKey);
+        Long videoDuration=0L;
+        try {
+            videoDuration = redisCache.getCacheObject(videoRedisKey);
+        }catch (Exception e){
+            String string = redisCache.getCacheObject(videoRedisKey);
+            videoDuration=Long.parseLong(string);
+            log.error("key中id为S:{}", videoDuration);
+        }
+
+
         if (videoDuration==null){
             FsUserCourseVideo video = courseVideoMapper.selectFsUserCourseVideoByVideoId(videoId);
             videoDuration=video.getDuration();

+ 7 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -2519,6 +2519,13 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             List<FsCourseQuestionBank> fsCourseQuestionBanks = courseQuestionBankMapper.selectFsCourseQuestionBankByIdVO(courseVideo.getQuestionBankId().split(","));
             fsUserCourseVideoQVO.setQuestionBankList(fsCourseQuestionBanks);
         }
+
+        //返回课程关联的拍商品
+        if(courseVideo.getIsProduct() != null && courseVideo.getIsProduct() == 1 && courseVideo.getProductId() != null){
+            FsCourseProduct courseProduct = courseProductMapper.selectFsCourseProductById(courseVideo.getProductId());
+            List<FsCourseProduct> courseProducts = Arrays.asList(courseProduct);
+            fsUserCourseVideoQVO.setCourseProducts(courseProducts);
+        }
         return fsUserCourseVideoQVO;
     }
 

+ 74 - 0
fs-service/src/main/java/com/fs/course/vo/FsFirstDiagnosisListUVO.java

@@ -0,0 +1,74 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsFirstDiagnosisListUVO {
+    /** 主键 */
+    private Long id;
+    /** 患者姓名 */
+    @Excel(name = "患者姓名")
+    private String patientName;
+
+    /** 年龄 */
+    @Excel(name = "年龄")
+    private String age;
+
+    /** 0-未知 1-男性 2-女性 */
+    @Excel(name = "0-未知 1-男性 2-女性")
+    private Long gender;
+
+    /** 电话 */
+    @Excel(name = "电话")
+    private String phone;
+
+    /** 身体状况 */
+    @Excel(name = "身体状况")
+    private String physicalCondition;
+
+    /** 日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date dateTime;
+
+    /** 出版诊断 */
+    @Excel(name = "出版诊断")
+    private String firstDiagnosis;
+
+    /** 医生id */
+    @Excel(name = "医生id")
+    private Long doctorId;
+
+    /** 医生名称 */
+    @Excel(name = "医生名称")
+    private String doctorName;
+
+    /** 职称 */
+    @Excel(name = "职称")
+    private String doctorDep;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 医生证号 */
+    @Excel(name = "医生证号")
+    private String doctorCertificate;
+
+    /** 医生是否填写:0-未填写 1-已填写 */
+    private Integer doctorStatus;
+
+    /** 用户是否答复:0-未答复 1-已答复 */
+    private Integer userStatus;
+
+    private Long qwUserId;
+
+    /**
+     * 销售名称
+     */
+    private String qwUserName;
+}

+ 111 - 0
fs-service/src/main/java/com/fs/course/vo/FsInquiryPatientInfoListUVO.java

@@ -0,0 +1,111 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsInquiryPatientInfoListUVO {
+
+    private Long id;
+
+    private String patientName;
+
+    /** 出生年月 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "出生年月", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date birthday;
+
+    /** 性别 */
+    @Excel(name = "性别")
+    private Integer sex;
+
+
+
+    /** 手机号 */
+    @Excel(name = "手机号")
+    private String mobile;
+
+    private String companyUserName;
+
+    /**
+     * 患者id
+     */
+    private Long patientId;
+
+    /**
+     * 销售id
+     */
+    private Long companyUserId;
+    /**
+     * 患者会员id
+     */
+    private Long userId;
+    /**
+     * 问诊订单id
+     */
+    private Long inquiryOrderId;
+    /**
+     * 课程id
+     */
+    private Long courseId;
+
+    /**
+     * 就诊状态 1-初诊 2-复诊
+     */
+    private Integer diagnosisStatus;
+
+    /**
+     * 客户标签
+     */
+    private String tag;
+
+    /**
+     * 课程/档期
+     */
+    private String courseName;
+
+    /**
+     * 患者病情主诉
+     */
+    private String patientCondition;
+
+    /**
+     * 部门负责人
+     */
+    private String deptManager;
+
+    /**
+     * 医生建议及处置
+     */
+    private String doctorAdviceJson;
+
+    /**
+     * 禁忌
+     */
+    private String taboo;
+    /**
+     * 客户需求
+     */
+    private String customerRequire;
+
+    /**
+     * 职业医生
+     */
+    private String professionalDoctor;
+
+    /**
+     * 助理医生
+     */
+    private String assistantDoctor;
+
+    /**
+     * 预约时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date subTime;
+
+    private Long subDoctorId;
+}

+ 6 - 0
fs-service/src/main/java/com/fs/his/domain/FsFirstDiagnosis.java

@@ -70,5 +70,11 @@ public class FsFirstDiagnosis extends BaseEntity{
     @Excel(name = "医生证号")
     private String doctorCertificate;
 
+    /** 医生是否填写:0-未填写 1-已填写 */
+    private Integer doctorStatus;
 
+    /** 用户是否答复:0-未答复 1-已答复 */
+    private Integer userStatus;
+
+    private Long qwUserId;
 }

+ 32 - 0
fs-service/src/main/java/com/fs/his/mapper/FsFirstDiagnosisMapper.java

@@ -2,7 +2,13 @@ package com.fs.his.mapper;
 
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.course.param.FsFirstDiagnosisListUParam;
+import com.fs.course.vo.FsFirstDiagnosisListUVO;
 import com.fs.his.domain.FsFirstDiagnosis;
+import com.fs.his.param.FsDiagnosisListDParam;
+import com.fs.his.vo.FsDiagnosisListDVO;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 /**
  * 初诊单Mapper接口
@@ -65,4 +71,30 @@ public interface FsFirstDiagnosisMapper extends BaseMapper<FsFirstDiagnosis>{
      * @return 初诊单数据
      */
     FsFirstDiagnosis getByUserId(Long userId);
+
+    @Select({"<script> " +
+            "SELECT id,doctor_id,patient_name,gender,age,phone,date_time,physical_condition,doctor_status,user_status FROM fs_first_diagnosis " +
+            "WHERE 1 = 1" +
+            "<if test='maps.type == 0' > and  doctor_status = 0 and doctor_id is null</if>" +
+            "<if test='maps.type == 1' > and  doctor_id = #{maps.doctorId}</if>" +
+            "ORDER BY create_time desc" +
+            "</script>"})
+    List<FsDiagnosisListDVO> selectFsDiagnosisListDVO(@Param("maps") FsDiagnosisListDParam param);
+
+    @Select({"<script>" +
+            "SELECT fd.*,u.qw_user_name FROM fs_first_diagnosis fd" +
+            "LEFT JOIN qw_user u ON u.id = fd.qw_user_id" +
+            "WHERE 1=1" +
+            "<if test='param.doctorStatus != null'> AND fd.doctor_status = #{param.doctorStatus}</if>" +
+            "<if test='param.userId != null'> AND fd.user_id = #{param.userId}</if>" +
+            "ORDER BY fd.create_time des" +
+            "</script>"})
+    List<FsFirstDiagnosisListUVO> selectFsFirstDiagnosisListUVO(@Param("param") FsFirstDiagnosisListUParam param);
+
+    @Select({"<script>" +
+            "SELECT fd.*,u.qw_user_name FROM fs_first_diagnosis fd" +
+            "LEFT JOIN qw_user u ON u.id = fd.qw_user_id" +
+            "WHERE fd.id = #{id}" +
+            "</script>"})
+    FsFirstDiagnosisListUVO getInfo(Long id);
 }

+ 23 - 0
fs-service/src/main/java/com/fs/his/mapper/FsInquiryPatientInfoMapper.java

@@ -1,9 +1,14 @@
 package com.fs.his.mapper;
 
+import com.fs.course.param.FsInquiryPatientInfoUParam;
+import com.fs.course.vo.FsInquiryPatientInfoListUVO;
 import com.fs.his.domain.FsInquiryPatientInfo;
 import com.fs.his.vo.FsInquiryPatientVO;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
+import java.util.List;
+
 public interface FsInquiryPatientInfoMapper {
 
     int insertFsInquiryPatientInfo(FsInquiryPatientInfo fsInquiryPatientInfo);
@@ -13,4 +18,22 @@ public interface FsInquiryPatientInfoMapper {
     FsInquiryPatientInfo selectFsInquiryPatientInfoInquiryOrderId(Long inquiryOrderId);
 
     FsInquiryPatientVO selectUserAndCompanyUserByInquiryOrderId(Long inquiryOrderId);
+
+    @Select({"<script>" +
+            "SELECT pi.*,p.patient_name,p.birthday,p.sex, u.nick_name companyUserName FROM fs_inquiry_patient_info pi" +
+            "LEFT JOIN fs_patient p ON p.patient_id  = pi.patient_id" +
+            "LEFT JOIN company_user u ON u.user_id = pi.company_user_id" +
+            "WHERE 1=1" +
+            "<if test='param.userId != null'> AND pi.user_id = #{param.userId}</if>" +
+            "ORDER BY pi.create_time des" +
+            "</script>"})
+    List<FsInquiryPatientInfoListUVO> selectFsInquiryPatientInfoListUVO(@Param("param") FsInquiryPatientInfoUParam param);
+
+    @Select({"<script>" +
+            "SELECT pi.*,p.patient_name,p.birthday,p.sex, u.nick_name companyUserName FROM fs_inquiry_patient_info pi" +
+            "LEFT JOIN fs_patient p ON p.patient_id  = pi.patient_id" +
+            "LEFT JOIN company_user u ON u.user_id = pi.company_user_id" +
+            "WHERE pi.id = #{id}" +
+            "</script>"})
+    FsInquiryPatientInfoListUVO getInfo(Long id);
 }

+ 17 - 0
fs-service/src/main/java/com/fs/his/param/FsDiagnosisFillDParam.java

@@ -0,0 +1,17 @@
+package com.fs.his.param;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsDiagnosisFillDParam {
+    private Long id;
+    private String firstDiagnosis;
+    private String physicalCondition;
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date dateTime;
+    private Long doctorId;
+
+}

+ 13 - 0
fs-service/src/main/java/com/fs/his/param/FsDiagnosisListDParam.java

@@ -0,0 +1,13 @@
+package com.fs.his.param;
+
+import lombok.Data;
+
+@Data
+public class FsDiagnosisListDParam extends BaseParam{
+    Long doctorId;
+
+    /**
+     * 0-全部 1-我的
+     */
+    private Integer type;
+}

+ 21 - 5
fs-service/src/main/java/com/fs/his/service/IFsFirstDiagnosisService.java

@@ -2,7 +2,14 @@ package com.fs.his.service;
 
 import java.util.List;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.common.core.domain.R;
+import com.fs.course.param.FsFirstDiagnosisListUParam;
+import com.fs.course.vo.FsFirstDiagnosisListUVO;
 import com.fs.his.domain.FsFirstDiagnosis;
+import com.fs.his.param.FsDiagnosisFillDParam;
+import com.fs.his.param.FsDiagnosisListDParam;
+import com.fs.his.vo.FsDiagnosisListDVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 初诊单Service接口
@@ -59,10 +66,19 @@ public interface IFsFirstDiagnosisService extends IService<FsFirstDiagnosis>{
      */
     int deleteFsFirstDiagnosisById(Long id);
 
-/**
- * 根据用户ID获取首次诊断信息
- * @param userId 用户ID
- * @return 返回对应的首次诊断信息对象,如果不存在则可能返回null
- */
+    /**
+     * 根据用户ID获取首次诊断信息
+     * @param userId 用户ID
+     * @return 返回对应的首次诊断信息对象,如果不存在则可能返回null
+     */
     FsFirstDiagnosis getByUserId(Long userId);
+
+
+    List<FsDiagnosisListDVO> getDiagnosisList(FsDiagnosisListDParam param);
+
+    R fill(FsDiagnosisFillDParam param);
+
+    List<FsFirstDiagnosisListUVO> selectFsFirstDiagnosisListUVO(FsFirstDiagnosisListUParam param);
+
+    FsFirstDiagnosisListUVO getInfo(Long id);
 }

+ 8 - 0
fs-service/src/main/java/com/fs/his/service/IFsInquiryPatientInfoService.java

@@ -1,8 +1,13 @@
 package com.fs.his.service;
 
+import com.fs.course.param.FsInquiryPatientInfoUParam;
+import com.fs.course.vo.FsInquiryPatientInfoListUVO;
 import com.fs.his.domain.FsInquiryPatientInfo;
 import com.fs.his.param.FsInquiryPatientParam;
 import com.fs.his.vo.FsInquiryPatientVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 问诊患者信息Service接口
@@ -16,4 +21,7 @@ public interface IFsInquiryPatientInfoService {
 
     FsInquiryPatientVO selectFsInquiryPatientInfo(Long inquiryOrderId);
 
+    List<FsInquiryPatientInfoListUVO> selectFsInquiryPatientInfoListUVO(FsInquiryPatientInfoUParam param);
+
+    FsInquiryPatientInfoListUVO getInfo(Long id);
 }

+ 49 - 1
fs-service/src/main/java/com/fs/his/service/impl/FsFirstDiagnosisServiceImpl.java

@@ -1,8 +1,18 @@
 package com.fs.his.service.impl;
 
+import java.util.Collections;
 import java.util.List;
+
+import com.fs.common.core.domain.R;
+import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.course.param.FsFirstDiagnosisListUParam;
+import com.fs.course.vo.FsFirstDiagnosisListUVO;
+import com.fs.his.param.FsDiagnosisFillDParam;
+import com.fs.his.param.FsDiagnosisListDParam;
+import com.fs.his.vo.FsDiagnosisListDVO;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.his.mapper.FsFirstDiagnosisMapper;
@@ -18,6 +28,10 @@ import com.fs.his.service.IFsFirstDiagnosisService;
 @Service
 public class FsFirstDiagnosisServiceImpl extends ServiceImpl<FsFirstDiagnosisMapper, FsFirstDiagnosis> implements IFsFirstDiagnosisService {
 
+
+    @Autowired
+    private FsFirstDiagnosisMapper diagnosisMapper;
+
     /**
      * 查询初诊单
      * 
@@ -94,6 +108,40 @@ public class FsFirstDiagnosisServiceImpl extends ServiceImpl<FsFirstDiagnosisMap
 
     @Override
     public FsFirstDiagnosis getByUserId(Long userId) {
-        return baseMapper.getByUserId(userId);
+        FsFirstDiagnosis firstDiagnosis = baseMapper.getByUserId(userId);
+        if (firstDiagnosis == null) {
+            firstDiagnosis = new FsFirstDiagnosis();
+        }
+        return firstDiagnosis;
+    }
+
+    @Override
+    public List<FsDiagnosisListDVO> getDiagnosisList(FsDiagnosisListDParam param) {
+        return diagnosisMapper.selectFsDiagnosisListDVO(param);
+    }
+
+    @Override
+    public List<FsFirstDiagnosisListUVO> selectFsFirstDiagnosisListUVO(FsFirstDiagnosisListUParam param) {
+        return diagnosisMapper.selectFsFirstDiagnosisListUVO(param);
+    }
+
+    @Override
+    public FsFirstDiagnosisListUVO getInfo(Long id) {
+        return diagnosisMapper.getInfo(id);
+    }
+
+    @Override
+    public R fill(FsDiagnosisFillDParam param) {
+        if (param.getId() == null) {
+            throw new CustomException("初诊单id不能为空");
+        }
+        FsFirstDiagnosis diagnosis = new FsFirstDiagnosis();
+        BeanUtils.copyProperties(param, diagnosis);
+        diagnosis.setDoctorStatus(1);
+        int i = diagnosisMapper.updateFsFirstDiagnosis(diagnosis);
+        if (i > 0) {
+            return R.ok();
+        }
+        return R.error();
     }
 }

+ 15 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsInquiryPatientInfoServiceImpl.java

@@ -4,6 +4,8 @@ import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.fs.common.BeanCopyUtils;
 import com.fs.common.exception.CustomException;
+import com.fs.course.param.FsInquiryPatientInfoUParam;
+import com.fs.course.vo.FsInquiryPatientInfoListUVO;
 import com.fs.his.domain.FsInquiryPatientInfo;
 import com.fs.his.mapper.FsInquiryOrderMapper;
 import com.fs.his.mapper.FsInquiryPatientInfoMapper;
@@ -17,6 +19,9 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
+import java.util.List;
+
 /**
  * 问诊患者信息Service业务层处理
  */
@@ -58,4 +63,14 @@ public class FsInquiryPatientInfoServiceImpl implements IFsInquiryPatientInfoSer
         }
         return inquiryPatientVO;
     }
+
+    @Override
+    public List<FsInquiryPatientInfoListUVO> selectFsInquiryPatientInfoListUVO(FsInquiryPatientInfoUParam param) {
+        return fsInquiryPatientInfoMapper.selectFsInquiryPatientInfoListUVO(param);
+    }
+
+    @Override
+    public FsInquiryPatientInfoListUVO getInfo(Long id) {
+        return fsInquiryPatientInfoMapper.getInfo(id);
+    }
 }

+ 18 - 27
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java

@@ -1406,14 +1406,14 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
     @Transactional(rollbackFor = Throwable.class, propagation = Propagation.REQUIRED)
     public R payConfirm(String orderCode, String payCode, String tradeNo, String payType, Integer type) {
         try {
-            FsStoreOrderScrm order = null;
+            FsStoreOrder order = null;
             if (type.equals(1)) {
 
-                FsStorePaymentScrm storePayment = fsStorePaymentScrmMapper.selectFsStorePaymentByPaymentCode(payCode);
+                FsStorePayment storePayment = fsStorePaymentMapper.selectFsStorePaymentByPaymentCode(payCode);
                 if (storePayment != null) {
                     if (storePayment.getStatus().equals(0)) {
                         log.info(payCode + "待支付");
-                        FsStorePaymentScrm paymentMap = new FsStorePaymentScrm();
+                        FsStorePayment paymentMap = new FsStorePayment();
                         paymentMap.setPaymentId(storePayment.getPaymentId());
                         paymentMap.setStatus(1);
                         paymentMap.setPayTime(new Date());
@@ -1430,42 +1430,33 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                             paymentMap.setBankSerialNo(orderResult.getBankOrderId());
                             paymentMap.setBankTransactionId(orderResult.getBankTrxId());
                         }
-                        fsStorePaymentScrmMapper.updateFsStorePayment(paymentMap);
+                        fsStorePaymentMapper.updateFsStorePayment(paymentMap);
                         log.info(payCode + "已支付");
-                        order = fsStoreOrderScrmMapper.selectFsStoreOrderById(Long.parseLong(storePayment.getBusinessOrderId()));
+                        order = fsStoreOrderMapper.selectFsStoreOrderByOrderId(Long.parseLong(storePayment.getBusinessId()));
                     }
                 } else {
                     log.info(payCode + "支付单号不存在");
                     return R.error("支付单号不存在");
                 }
             } else if (type.equals(2)) {
-                order = fsStoreOrderScrmMapper.selectFsStoreOrderByOrderCode(orderCode);
+                order = fsStoreOrderMapper.selectFsStoreOrderByOrderCode(orderCode);
             }
-//            if (order != null && !order.getStatus().equals(FsStoreOrderStatusEnum.STATUS_1.getValue())) {
-//                log.info(payCode + "订单号不为待支付回退");
-//                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//                return R.error();
-//            }
-
-            //orderScrm迁移的表待支付状态码为:0
-            if (order != null && !order.getStatus().equals(0)) {//判断订单状态是否待支付
+            if (order != null && !order.getStatus().equals(FsStoreOrderStatusEnum.STATUS_1.getValue())) {
                 log.info(payCode + "订单号不为待支付回退");
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return R.error();
             }
-
-            if (order != null && !order.getPaid().equals(0)) {
+            if (order != null && !order.getIsPay().equals(0)) {
                 log.info(payCode + "订单号支付不为待支付回退");
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return R.error();
             }
-            fsStoreOrderLogsService.create(order.getId(), FsStoreOrderLogEnum.PAY_ORDER_SUCCESS.getValue(),
+            fsStoreOrderLogsService.create(order.getOrderId(), FsStoreOrderLogEnum.PAY_ORDER_SUCCESS.getValue(),
                     FsStoreOrderLogEnum.PAY_ORDER_SUCCESS.getDesc());
-            FsStoreOrderScrm storeOrder = new FsStoreOrderScrm();
-            storeOrder.setId(order.getId());
-            storeOrder.setPaid(1);
-//            storeOrder.setStatus(2);
-            storeOrder.setStatus(1);//代发货
+            FsStoreOrder storeOrder = new FsStoreOrder();
+            storeOrder.setOrderId(order.getOrderId());
+            storeOrder.setIsPay(1);
+            storeOrder.setStatus(2);
             storeOrder.setPrescribePrice(order.getTotalPrice());
             SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey("his.store");
             Map<String, Object> config = (Map<String, Object>) JSON.parse(sysConfig.getConfigValue());
@@ -1478,20 +1469,20 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
             } else {
                 storeOrder.setFollowDoctorId(iFsDoctorService.selectFollowDoctorDoctorByPackage());
             }
-            if (order.getCycle() != null && order.getCycle() >= followRate) {
+            if (order.getCycle() >= followRate) {
                 Calendar calendar = Calendar.getInstance();
                 calendar.setTime(new Date());
                 calendar.add(Calendar.DAY_OF_MONTH, followRate);
                 storeOrder.setFollowTime(calendar.getTime());
             }
             storeOrder.setPayTime(new Date());
-            fsStoreOrderScrmMapper.updateFsStoreOrder(storeOrder);
+            fsStoreOrderMapper.updateFsStoreOrder(storeOrder);
             //更新优惠券状态
-            if (order.getCouponId() != null && order.getCouponId() > 0) {
-                FsUserCoupon userCoupon = userCouponService.selectFsUserCouponById(order.getCouponId());
+            if (order.getUserCouponId() != null && order.getUserCouponId() > 0) {
+                FsUserCoupon userCoupon = userCouponService.selectFsUserCouponById(order.getUserCouponId());
                 if (userCoupon != null && userCoupon.getStatus().equals(0)) {
                     userCoupon.setUseTime(new Date());
-                    userCoupon.setBusinessId(order.getId());
+                    userCoupon.setBusinessId(order.getOrderId());
                     userCoupon.setBusinessType(2);
                     userCoupon.setStatus(1);
                     userCouponService.updateFsUserCoupon(userCoupon);

+ 33 - 0
fs-service/src/main/java/com/fs/his/vo/FsDiagnosisListDVO.java

@@ -0,0 +1,33 @@
+package com.fs.his.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsDiagnosisListDVO {
+
+    private Long id;
+
+    private Long doctorId;
+
+    private String patientName;
+
+    private Integer gender;
+
+    private String phone;
+
+    private String firstDiagnosis;
+
+    private String age;
+
+    private String physicalCondition;
+
+    /** 日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date dateTime;
+
+    private Integer doctorStatus;
+    private Integer userStatus;
+}

+ 1 - 1
fs-service/src/main/java/com/fs/qw/vo/QwSopTempSetting.java

@@ -81,7 +81,7 @@ public class QwSopTempSetting implements Serializable{
              * 客户的id(用于发送)
              */
             private String externalUserId;
-            //文本-图片-链接-小程序-文件-视频-语音-视频号-app
+            //文本-图片-链接-小程序-文件-视频-语音-视频号-app-自定义小程序
             private String contentType;
             //文本
             private String value;

+ 1 - 1
fs-service/src/main/java/com/fs/sop/mapper/QwSopLogsMapper.java

@@ -321,7 +321,7 @@ public interface QwSopLogsMapper extends BaseMapper<QwSopLogs> {
     @DataSource(DataSourceType.SOP)
     List<QwSopLogs> selectIpadByCorpId(@Param("corpId") String corpId, @Param("now") LocalDateTime now);
 
-    @DataSource(DataSourceType.SopREAD)
+    @DataSource(DataSourceType.SOP)
     List<QwSopLogs> selectByQwUserId(@Param("id") Long id);
 
     @Select("select * from qw_sop_logs where send_type=8 and send_status=3 and  create_time <= DATE_SUB(NOW(), INTERVAL 2 HOUR) ")

+ 58 - 5
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java

@@ -9,7 +9,9 @@ import com.fs.common.exception.base.BaseException;
 import com.fs.common.utils.PubFun;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.date.DateUtil;
+import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyMiniapp;
+import com.fs.company.mapper.CompanyMapper;
 import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.company.service.ICompanyMiniappService;
 import com.fs.config.cloud.CloudHostProper;
@@ -162,6 +164,10 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
     @Autowired
     private CloudHostProper cloudHostProper;
 
+    @Autowired
+    private CompanyMapper companyMapper;
+
+
     @Override
     public void save(SopUserLogsInfo sopUserLogsInfo) {
         sopUserLogsInfoMapper.insertSopUserLogsInfo(sopUserLogsInfo);
@@ -751,10 +757,11 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                 return R.error().put("msg","企业微信用户不存在未绑定销售公司-请绑定后重试:"+qwUser.getQwUserName()+"|"+qwUser.getQwUserId());
             }
 
+            Company company = companyMapper.selectCompanyById(qwUser.getCompanyId());
+
             String companyUserId = String.valueOf(qwUser.getCompanyUserId()).trim();
             String companyId = String.valueOf(qwUser.getCompanyId()).trim();
 
-
             //域名
 //            String domainName = companyUserMapper.selectDomainByUserId(Long.parseLong(companyUserId));
 //            if (StringUtils.isEmpty(domainName)){
@@ -892,6 +899,23 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                             st.setLinkUrl(linkByApp.getSortLink().replaceAll("^[\\s\\u2005]+", ""));
                             st.setAppLinkUrl(linkByApp.getAppMsgLink().replaceAll("^[\\s\\u2005]+", ""));
 
+                            break;
+                        //自定义小程序
+                        case "10":
+                            addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), qwUserId, companyUserId, companyId, item.getExternalId(),item.getStartTime(),createTime );
+                            if (company!=null){
+
+                                String customMiniAppId = company.getCustomMiniAppId();
+
+                                if (customMiniAppId != null && !customMiniAppId.trim().isEmpty()) {
+                                    st.setMiniprogramAppid(customMiniAppId);
+                                } else {
+                                    st.setMiniprogramAppid("该公司未配置自定义小程序:"+companyId);
+                                }
+                            }else {
+                                st.setMiniprogramAppid("未找到匹配的公司的自定义小程序:"+companyId);
+                            }
+
                             break;
                         default:
                             break;
@@ -997,6 +1021,9 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
         List<CompanyMiniapp> miniList = companyMiniappService.list(new QueryWrapper<CompanyMiniapp>().orderByAsc("sort_num"));
         Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap = miniList.stream().collect(Collectors.groupingBy(CompanyMiniapp::getCompanyId, Collectors.groupingBy(CompanyMiniapp::getType)));
 
+
+        List<Company> companies = companyMapper.selectCompanyAllList();
+
         //排序
         int sort = 0;
         //发送类型
@@ -1038,7 +1065,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
 
                 if (qwUser.getCompanyUserId()!=null && qwUser.getCompanyId()!=null){
                     List<QwSopLogs> sopLogsList = processInsertSopUserLogsInfo(logs, qwUser, param, words, config, qwCompany, finalSort,
-                            finalSendType,miniMap );
+                            finalSendType,miniMap,companies);
 
                     //批量插入 发送记录
                     if (!sopLogsList.isEmpty()) {
@@ -1061,7 +1088,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
     private List<QwSopLogs> processInsertSopUserLogsInfo(List<SopUserLogsInfo> sopUserLogsInfos,QwUser qwUser,
                                                          SendUserLogsInfoMsgParam param,List<FastGptChatReplaceWords> words,
                                                          CourseConfig config,QwCompany qwCompany,int finalSort,int finalSendType,
-                                                         Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap){
+                                                         Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap,List<Company> companies ){
 
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
@@ -1116,7 +1143,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
             switch (finalSendType){
                 case 5:
                     List<QwSopCourseFinishTempSetting.Setting> list = processSetting(item,qwUser, param, words, config, qwCompany,companyUserId,companyId,
-                            contact,dataTime, finalDomainName,miniMap);
+                            contact,dataTime, finalDomainName,miniMap,companies);
                     setting.setSetting(list);
                     break;
                 case 9:
@@ -1179,7 +1206,8 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                                                                       SendUserLogsInfoMsgParam param,List<FastGptChatReplaceWords> words,
                                                                       CourseConfig config,QwCompany qwCompany,String companyUserId, String companyId,
                                                                       QwExternalContact contact,Date dataTime,String domainName,
-                                                                      Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap){
+                                                                      Map<Long, Map<Integer, List<CompanyMiniapp>>> miniMap,
+                                                                      List<Company> companies ){
         List<QwSopCourseFinishTempSetting.Setting> list = JSONArray.parseArray(param.getSetting(),QwSopCourseFinishTempSetting.Setting.class);
 
         for (QwSopCourseFinishTempSetting.Setting st : list) {
@@ -1273,6 +1301,31 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
 
                     st.setMiniprogramPage(linkByMiniApp);
                     break;
+
+                //自定义小程序
+                case "10":
+
+                    addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), String.valueOf(qwUser.getId()), companyUserId, companyId,
+                            item.getExternalId(),item.getStartTime(),dataTime );
+
+                    Optional<Company> matchedCompany = companies.stream()
+                            .filter(company -> String.valueOf(company.getCompanyId()).equals(companyId))
+                            .findFirst();
+                    if (matchedCompany.isPresent()) {
+                        Company company = matchedCompany.get();
+
+                        String customMiniAppId = company.getCustomMiniAppId();
+
+                        if (customMiniAppId != null && !customMiniAppId.trim().isEmpty()) {
+                            st.setMiniprogramAppid(customMiniAppId);
+                        } else {
+                            st.setMiniprogramAppid("该公司未配置自定义小程序:"+companyId);
+                        }
+                    } else {
+                        st.setMiniprogramAppid("未找到匹配的公司的自定义小程序:"+companyId);
+                    }
+
+                    break;
                 default:
                     break;
 

+ 3 - 0
fs-service/src/main/resources/application-config-druid-jnmy.yml

@@ -41,6 +41,9 @@ wx:
         secret: 1fac75465a61f9259a0fe19795d9e80d # 公众号的appsecret
         token: PPKOdAlCoMO # 接口配置里的Token值
         aesKey: Eswa6VjwtVMCcw03qZy6fWllgrv5aytIA1SZPEU0kU2 # 接口配置里的EncodingAESKey值
+  open:
+    appId: wxda2eb168e5b09e56
+    secret: dde09b45d0f6d5b0925965b964b6ab48
 aifabu:  #爱链接
   appKey: 7b471be905ab17e00f3b858c6710dd117601d008
 watch:

+ 4 - 0
fs-service/src/main/resources/application-config-druid-sxjz.yml

@@ -46,6 +46,10 @@ wx:
         secret: 5da9ae6d354c130dc81cde1a6d097480 # 公众号的appsecret
         token: PPKOdAlCoMO # 接口配置里的Token值
         aesKey: Eswa6VjwtVcw03qZy6Wllgrv5aytIA1SZPEU0kU2 # 接口配置里的EncodingAESKey值
+  # 开放平台app微信授权配置
+  open:
+    app-id: wx9746858bdb5e0643
+    secret: 32dfaa2b2dcad9229935ff089c65d372
 aifabu:  #爱链接
   appKey: 7b471be905ab17ef358c610dd117601d008
 watch:

+ 1 - 0
fs-service/src/main/resources/application-druid-jnmy-test.yml

@@ -151,3 +151,4 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
+isNewWxMerchant: true

+ 5 - 5
fs-service/src/main/resources/application-druid-jzzx.yml

@@ -21,7 +21,7 @@ spring:
                 # 连接池中的最大空闲连接
                 max-idle: 8
                 # 连接池的最大数据库连接数
-                max-active: 8
+                max-active: 100
                 # #连接池最大阻塞等待时间(使用负值表示没有限制)
                 max-wait: -1ms
     datasource:
@@ -56,7 +56,7 @@ spring:
                 # 最小连接池数量
                 minIdle: 10
                 # 最大连接池数量
-                maxActive: 20
+                maxActive: 200
                 # 配置获取连接等待超时的时间
                 maxWait: 60000
                 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
@@ -73,7 +73,7 @@ spring:
                 webStatFilter:
                     enabled: true
                 statViewServlet:
-                    enabled: true
+                    enabled: false
                     # 设置白名单,不填则允许所有访问
                     allow:
                     url-pattern: /druid/*
@@ -108,7 +108,7 @@ spring:
                 # 最小连接池数量
                 minIdle: 10
                 # 最大连接池数量
-                maxActive: 20
+                maxActive: 200
                 # 配置获取连接等待超时的时间
                 maxWait: 60000
                 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
@@ -125,7 +125,7 @@ spring:
                 webStatFilter:
                     enabled: true
                 statViewServlet:
-                    enabled: true
+                    enabled: false
                     # 设置白名单,不填则允许所有访问
                     allow:
                     url-pattern: /druid/*

+ 5 - 5
fs-service/src/main/resources/application-druid-kyt.yml

@@ -22,7 +22,7 @@ spring:
         # 连接池中的最大空闲连接
         max-idle: 8
         # 连接池的最大数据库连接数
-        max-active: 8
+        max-active: 100
         # #连接池最大阻塞等待时间(使用负值表示没有限制)
         max-wait: -1ms
     database: 0
@@ -49,7 +49,7 @@ spring:
         # 最小连接池数量
         minIdle: 10
         # 最大连接池数量
-        maxActive: 20
+        maxActive: 200
         # 配置获取连接等待超时的时间
         maxWait: 60000
         # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
@@ -66,7 +66,7 @@ spring:
         webStatFilter:
           enabled: true
         statViewServlet:
-          enabled: true
+          enabled: false
           # 设置白名单,不填则允许所有访问
           allow:
           url-pattern: /druid/*
@@ -98,7 +98,7 @@ spring:
         # 最小连接池数量
         minIdle: 10
         # 最大连接池数量
-        maxActive: 20
+        maxActive: 200
         # 配置获取连接等待超时的时间
         maxWait: 60000
         # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
@@ -115,7 +115,7 @@ spring:
         webStatFilter:
           enabled: true
         statViewServlet:
-          enabled: true
+          enabled: false
           # 设置白名单,不填则允许所有访问
           allow:
           url-pattern: /druid/*

+ 6 - 1
fs-service/src/main/resources/mapper/company/CompanyMapper.xml

@@ -35,6 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="packageCateIds"    column="package_cate_ids"    />
         <result property="courseMaAppId"    column="course_ma_app_id"    />
         <result property="courseMiniAppId"    column="course_mini_app_id"    />
+        <result property="customMiniAppId"    column="custom_mini_app_id"    />
         <result property="repeat"    column="repeat"    />
         <result property="sendIfType"    column="send_if_type"    />
         <result property="ifNum"    column="if_num"    />
@@ -59,6 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="packageCateIds != null "> and package_cate_ids = #{packageCateIds}</if>
             <if test="courseMaAppId != null "> and course_ma_app_id = #{courseMaAppId}</if>
             <if test="courseMiniAppId != null "> and course_mini_app_id = #{courseMiniAppId}</if>
+            <if test="customMiniAppId != null "> and custom_mini_app_id = #{customMiniAppId}</if>
         </where>
     </select>
 
@@ -73,7 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          </foreach>
     </select>
     <select id="selectCompanyAllList" resultType="com.fs.company.domain.Company">
-        select company_id,company_name from company where is_del=0
+        select company_id,company_name,custom_mini_app_id from company where is_del=0
     </select>
     <select id="selectDoctorIdsByCompanyId" resultType="java.lang.String">
         select doctor_ids from company where company_id = #{companyId}
@@ -109,6 +111,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="packageCateIds != null">package_cate_ids,</if>
             <if test="courseMaAppId != null">course_ma_app_id,</if>
             <if test="courseMiniAppId != null">course_mini_app_id,</if>
+            <if test="customMiniAppId != null">custom_mini_app_id,</if>
             <if test="repeat != null">`repeat`,</if>
             <if test="sendIfType != null">send_if_type,</if>
             <if test="ifNum != null">if_num,</if>
@@ -142,6 +145,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="packageCateIds != null">#{packageCateIds},</if>
             <if test="courseMaAppId != null">#{courseMaAppId},</if>
             <if test="courseMiniAppId != null">#{courseMiniAppId},</if>
+            <if test="customMiniAppId != null">#{customMiniAppId},</if>
             <if test="repeat != null">#{repeat},</if>
             <if test="sendIfType != null">#{sendIfType},</if>
             <if test="ifNum != null">#{ifNum},</if>
@@ -180,6 +184,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="packageCateIds != null">package_cate_ids = #{packageCateIds},</if>
             <if test="courseMaAppId != null">course_ma_app_id = #{courseMaAppId},</if>
             <if test="courseMiniAppId != null">course_mini_app_id = #{courseMiniAppId},</if>
+            <if test="customMiniAppId != null">custom_mini_app_id = #{customMiniAppId},</if>
             <if test="fsUserIsDefaultBlack != null ">fs_user_is_default_black = #{fsUserIsDefaultBlack},</if>
             <if test="repeat != null">`repeat` = #{repeat},</if>
             <if test="sendIfType != null">send_if_type = #{sendIfType},</if>

+ 13 - 1
fs-service/src/main/resources/mapper/his/FsFirstDiagnosisMapper.xml

@@ -20,10 +20,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="update_time"    />
         <result property="userId"    column="user_id"    />
         <result property="doctorCertificate"    column="doctor_certificate"    />
+        <result property="doctorStatus"    column="doctor_status"    />
+        <result property="userStatus"    column="user_status"    />
+        <result property="qwUserId"    column="qw_user_id"    />
     </resultMap>
 
     <sql id="selectFsFirstDiagnosisVo">
-        select id, patient_name, age, gender, phone, physical_condition, date_time, first_diagnosis, doctor_id, doctor_name, doctor_dep, create_time, update_time, user_id, doctor_certificate from fs_first_diagnosis
+        select id, patient_name, age, gender, phone, physical_condition, date_time, first_diagnosis, doctor_id, doctor_name, doctor_dep, create_time, update_time, user_id, doctor_certificate,qw_user_id,doctor_status,user_status from fs_first_diagnosis
     </sql>
 
     <select id="selectFsFirstDiagnosisList" parameterType="FsFirstDiagnosis" resultMap="FsFirstDiagnosisResult">
@@ -67,6 +70,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateTime != null">update_time,</if>
             <if test="userId != null">user_id,</if>
             <if test="doctorCertificate != null">doctor_certificate,</if>
+            <if test="qwUserId != null">qw_user_id,</if>
+            <if test="doctorStatus != null">doctor_status,</if>
+            <if test="userStatus != null">user_status,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -84,6 +90,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateTime != null">#{updateTime},</if>
             <if test="userId != null">#{userId},</if>
             <if test="doctorCertificate != null">#{doctorCertificate},</if>
+            <if test="qwUserId != null">#{qwUserId},</if>
+            <if test="doctorStatus != null">#{doctorStatus},</if>
+            <if test="userStatus != null">#{userStatus},</if>
          </trim>
     </insert>
 
@@ -104,6 +113,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="userId != null">user_id = #{userId},</if>
             <if test="doctorCertificate != null">doctor_certificate = #{doctorCertificate},</if>
+            <if test="qwUserId != null">qw_user_id = #{qwUserId},</if>
+            <if test="doctorStatus != null">doctor_status = #{doctorStatus},</if>
+            <if test="userStatus != null">user_status = #{userStatus},</if>
         </trim>
         where id = #{id}
     </update>

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -150,7 +150,7 @@ public class AppLoginController extends AppBaseController{
             if (StringUtils.isBlank(param.getCode())) {
                 return R.error("code不存在");
             }
-            logger.info("zyp app微信登录,param:{}", param);
+            logger.info("zyp app微信登录,param:{},输出appid,{},secret:{}", param, openProperties.getAppId(), openProperties.getSecret());
             Map result = WxUtil.getAccessToken(param.getCode(), openProperties.getAppId(), openProperties.getSecret());
             String accessToken = result.get("access_token").toString();
             String unionid = result.get("unionid").toString();

+ 47 - 0
fs-user-app/src/main/java/com/fs/app/controller/DiagnosisController.java

@@ -0,0 +1,47 @@
+package com.fs.app.controller;
+
+import com.fs.app.annotation.Login;
+import com.fs.common.core.domain.R;
+import com.fs.course.param.FsFirstDiagnosisListUParam;
+import com.fs.course.vo.FsFirstDiagnosisListUVO;
+import com.fs.his.service.IFsFirstDiagnosisService;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api("初诊单接口")
+@RestController
+@RequestMapping(value="/app/diagnosis")
+public class DiagnosisController extends AppBaseController{
+
+    @Autowired
+    private IFsFirstDiagnosisService diagnosisService;
+
+
+    @Login
+    @ApiOperation("初诊单列表")
+    @GetMapping("/getList")
+    public R getList(FsFirstDiagnosisListUParam param) {
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        param.setUserId(Long.parseLong(getUserId()));
+        List<FsFirstDiagnosisListUVO> fsFirstDiagnosisListUVOS = diagnosisService.selectFsFirstDiagnosisListUVO(param);
+        PageInfo<FsFirstDiagnosisListUVO> pageInfo = new PageInfo<>(fsFirstDiagnosisListUVOS);
+        return R.ok().put("data",pageInfo);
+    }
+
+
+    @ApiOperation("初诊单详情")
+    @GetMapping("/getInfo")
+    public R getInfo(@RequestParam("id") Long id) {
+        FsFirstDiagnosisListUVO info = diagnosisService.getInfo(id);
+        return R.ok().put("data",info);
+    }
+}

+ 47 - 0
fs-user-app/src/main/java/com/fs/app/controller/InquiryPatientInfoController.java

@@ -0,0 +1,47 @@
+package com.fs.app.controller;
+
+import com.fs.app.annotation.Login;
+import com.fs.common.core.domain.R;
+import com.fs.course.param.FsInquiryPatientInfoUParam;
+import com.fs.course.vo.FsInquiryPatientInfoListUVO;
+import com.fs.his.service.IFsInquiryPatientInfoService;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api("患者问诊单接口")
+@RestController
+@RequestMapping(value="/app/inquiryPatient")
+public class InquiryPatientInfoController extends AppBaseController{
+
+    @Autowired
+    private IFsInquiryPatientInfoService patientInfoService;
+
+
+    @Login
+    @ApiOperation("患者问诊单列表")
+    @GetMapping("/getList")
+    public R getList(FsInquiryPatientInfoUParam param) {
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        param.setUserId(Long.parseLong(getUserId()));
+        List<FsInquiryPatientInfoListUVO> fsInquiryPatientInfoListUVOS = patientInfoService.selectFsInquiryPatientInfoListUVO(param);
+        PageInfo<FsInquiryPatientInfoListUVO> pageInfo = new PageInfo<>(fsInquiryPatientInfoListUVOS);
+        return R.ok().put("data",pageInfo);
+    }
+
+
+    @ApiOperation("问诊单详情")
+    @GetMapping("/getInfo")
+    public R getInfo(@RequestParam("id") Long id) {
+        FsInquiryPatientInfoListUVO info = patientInfoService.getInfo(id);
+        return R.ok().put("data",info);
+    }
+}