Jelajahi Sumber

患者信息阅读业务,后台审核,医生诊断修改

wjj 4 hari lalu
induk
melakukan
93e4c8cb16

+ 104 - 0
fs-admin/src/main/java/com/fs/patient/controller/FsPatientBaseInfoController.java

@@ -0,0 +1,104 @@
+package com.fs.patient.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.enums.BusinessType;
+import com.fs.patient.domain.FsPatientBaseInfo;
+import com.fs.patient.service.IFsPatientBaseInfoService;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.common.core.page.TableDataInfo;
+
+/**
+ * 患者基本信息Controller
+ * 
+ * @author fs
+ * @date 2026-04-19
+ */
+@RestController
+@RequestMapping("/patient/info")
+public class FsPatientBaseInfoController extends BaseController
+{
+    @Autowired
+    private IFsPatientBaseInfoService fsPatientBaseInfoService;
+
+    /**
+     * 查询患者基本信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('patient:info:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(FsPatientBaseInfo fsPatientBaseInfo)
+    {
+        startPage();
+        List<FsPatientBaseInfo> list = fsPatientBaseInfoService.selectFsPatientBaseInfoList(fsPatientBaseInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出患者基本信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('patient:info:export')")
+    @Log(title = "患者基本信息", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(FsPatientBaseInfo fsPatientBaseInfo)
+    {
+        List<FsPatientBaseInfo> list = fsPatientBaseInfoService.selectFsPatientBaseInfoList(fsPatientBaseInfo);
+        ExcelUtil<FsPatientBaseInfo> util = new ExcelUtil<FsPatientBaseInfo>(FsPatientBaseInfo.class);
+        return util.exportExcel(list, "患者基本信息数据");
+    }
+
+    /**
+     * 获取患者基本信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('patient:info:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(fsPatientBaseInfoService.selectFsPatientBaseInfoById(id));
+    }
+
+    /**
+     * 新增患者基本信息
+     */
+    @PreAuthorize("@ss.hasPermi('patient:info:add')")
+    @Log(title = "患者基本信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FsPatientBaseInfo fsPatientBaseInfo)
+    {
+        return toAjax(fsPatientBaseInfoService.insertFsPatientBaseInfo(fsPatientBaseInfo));
+    }
+
+    /**
+     * 修改患者基本信息
+     */
+    @PreAuthorize("@ss.hasPermi('patient:info:edit')")
+    @Log(title = "患者基本信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsPatientBaseInfo fsPatientBaseInfo)
+    {
+        return toAjax(fsPatientBaseInfoService.updateFsPatientBaseInfo(fsPatientBaseInfo));
+    }
+
+    /**
+     * 删除患者基本信息
+     */
+    @PreAuthorize("@ss.hasPermi('patient:info:remove')")
+    @Log(title = "患者基本信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(fsPatientBaseInfoService.deleteFsPatientBaseInfoByIds(ids));
+    }
+
+    /**
+     * 审核
+     */
+    @PostMapping("/check")
+    public AjaxResult check(@RequestBody FsPatientBaseInfo param) {
+        return AjaxResult.success(fsPatientBaseInfoService.check(param));
+    }
+}

+ 10 - 1
fs-service/src/main/java/com/fs/his/domain/FsProjectRedDetail.java

@@ -41,7 +41,7 @@ public class FsProjectRedDetail{
     @Excel(name = "渠道来源")
     private String source;
 
-    /** 创建时间 */
+     /** 创建时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
@@ -49,4 +49,13 @@ public class FsProjectRedDetail{
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "发送时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date sendTime;
+
+    /**
+     * 状态 0:未点 1:已点
+     */
+    private Integer status;
 }

+ 1 - 0
fs-service/src/main/java/com/fs/his/enums/FsStoreOrderLogEnum.java

@@ -36,6 +36,7 @@ public enum FsStoreOrderLogEnum {
     PLATFORM_REVIEW_CANCEL("PLATFORM_REVIEW_CANCEL","平台已取消售后"),
     CUSTOMER_SERVICE_STOP("CUSTOMER_SERVICE_STOP","销售取消信息采集退款"),
     DOCTOR_STOP("DOCTOR_STOP","医生拒方退款"),
+    SALES_RESET_COLLECTION("SALES_RESET_COLLECTION","销售重置CID信息采集"),
 
     SET_PUSH_MOBILE("SET_PUSH_MOBILE","设置推送手机号"),
     SET_PUSH_ACCOUNT("SET_PUSH_ACCOUNT","数据分拣"),

+ 2 - 0
fs-service/src/main/java/com/fs/his/param/FsPatientBaseInfoListDParam.java

@@ -12,4 +12,6 @@ public class FsPatientBaseInfoListDParam extends BaseParam{
 
     private String name;
 
+    private Integer checkStatus;
+
 }

+ 3 - 0
fs-service/src/main/java/com/fs/his/param/ProjectRedParam.java

@@ -15,4 +15,7 @@ public class ProjectRedParam {
 
     //销售id
     private Long companyUserId;
+
+    //未绑定用户的缓存键
+    private String baseInfoKey;
 }

+ 89 - 42
fs-service/src/main/java/com/fs/his/service/impl/FsProjectRedDetailServiceImpl.java

@@ -8,12 +8,13 @@ import com.fs.common.core.redis.RedisCache;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.his.param.ProjectRedParam;
-import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.his.mapper.FsProjectRedDetailMapper;
 import com.fs.his.domain.FsProjectRedDetail;
 import com.fs.his.service.IFsProjectRedDetailService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 理疗浏览记录Service业务层处理
@@ -21,7 +22,6 @@ import com.fs.his.service.IFsProjectRedDetailService;
  * @author fs
  * @date 2026-04-24
  */
-@Slf4j
 @Service
 public class FsProjectRedDetailServiceImpl extends ServiceImpl<FsProjectRedDetailMapper, FsProjectRedDetail> implements IFsProjectRedDetailService {
 
@@ -31,106 +31,153 @@ public class FsProjectRedDetailServiceImpl extends ServiceImpl<FsProjectRedDetai
 
     @Autowired
     private RedisCache redisCache;
-
-    //理疗记录Key前缀
-    private static final String PROJECT_REDIS_KEY = "project:red:";
-
     /**
      * 查询理疗浏览记录
-     *
+     * 
      * @param id 理疗浏览记录主键
      * @return 理疗浏览记录
      */
     @Override
-    public FsProjectRedDetail selectFsProjectRedDetailById(Long id) {
+    public FsProjectRedDetail selectFsProjectRedDetailById(Long id)
+    {
         return baseMapper.selectFsProjectRedDetailById(id);
     }
 
     /**
      * 查询理疗浏览记录列表
-     *
+     * 
      * @param fsProjectRedDetail 理疗浏览记录
      * @return 理疗浏览记录
      */
     @Override
-    public List<FsProjectRedDetail> selectFsProjectRedDetailList(FsProjectRedDetail fsProjectRedDetail) {
+    public List<FsProjectRedDetail> selectFsProjectRedDetailList(FsProjectRedDetail fsProjectRedDetail)
+    {
         return baseMapper.selectFsProjectRedDetailList(fsProjectRedDetail);
     }
 
     /**
      * 新增理疗浏览记录
-     *
+     * 
      * @param fsProjectRedDetail 理疗浏览记录
      * @return 结果
      */
     @Override
-    public int insertFsProjectRedDetail(FsProjectRedDetail fsProjectRedDetail) {
+    public int insertFsProjectRedDetail(FsProjectRedDetail fsProjectRedDetail)
+    {
         fsProjectRedDetail.setCreateTime(DateUtils.getNowDate());
         return baseMapper.insertFsProjectRedDetail(fsProjectRedDetail);
     }
 
     /**
      * 修改理疗浏览记录
-     *
+     * 
      * @param fsProjectRedDetail 理疗浏览记录
      * @return 结果
      */
     @Override
-    public int updateFsProjectRedDetail(FsProjectRedDetail fsProjectRedDetail) {
+    public int updateFsProjectRedDetail(FsProjectRedDetail fsProjectRedDetail)
+    {
         fsProjectRedDetail.setUpdateTime(DateUtils.getNowDate());
         return baseMapper.updateFsProjectRedDetail(fsProjectRedDetail);
     }
 
     /**
      * 批量删除理疗浏览记录
-     *
+     * 
      * @param ids 需要删除的理疗浏览记录主键
      * @return 结果
      */
     @Override
-    public int deleteFsProjectRedDetailByIds(Long[] ids) {
+    public int deleteFsProjectRedDetailByIds(Long[] ids)
+    {
         return baseMapper.deleteFsProjectRedDetailByIds(ids);
     }
 
     /**
      * 删除理疗浏览记录信息
-     *
+     * 
      * @param id 理疗浏览记录主键
      * @return 结果
      */
     @Override
-    public int deleteFsProjectRedDetailById(Long id) {
+    public int deleteFsProjectRedDetailById(Long id)
+    {
         return baseMapper.deleteFsProjectRedDetailById(id);
     }
 
-    @Override
-    public R userRedProject(ProjectRedParam param) {
-        if (param.getProjectId() == null && param.getUserId() == null && param.getCompanyUserId() == null) {
-            return R.error("参数错误");
-        }
-        FsProjectRedDetail detail = fsProjectRedDetailMapper.selectFsProjectRedDetailDataByCompanyUserIdAndProjectId(param);
-        if (detail == null) {
-            detail = new FsProjectRedDetail();
-            detail.setProjectId(param.getProjectId());
-            detail.setUserId(param.getUserId());
-            detail.setCompanyUserId(param.getCompanyUserId());
-            detail.setCreateTime(new Date());
-            detail.setSource("小程序");
-            detail.setReadDuration(param.getReadDuration());
-            int i = fsProjectRedDetailMapper.insertFsProjectRedDetail(detail);
-            if (i > 0) {
-                return R.ok();
+//    @Override
+//    public R userRedProject(ProjectRedParam param) {
+//        if (param.getProjectId() == null && param.getUserId() == null && param.getCompanyUserId() == null) {
+//            return R.error("参数错误");
+//        }
+//        FsProjectRedDetail detail = fsProjectRedDetailMapper.selectFsProjectRedDetailDataByCompanyUserIdAndProjectId(param);
+//        if (detail == null) {
+//            detail = new FsProjectRedDetail();
+//            detail.setProjectId(param.getProjectId());
+//            detail.setUserId(param.getUserId());
+//            detail.setCompanyUserId(param.getCompanyUserId());
+//            detail.setCreateTime(new Date());
+//            detail.setSource("小程序");
+//            detail.setReadDuration(param.getReadDuration());
+//            int i = fsProjectRedDetailMapper.insertFsProjectRedDetail(detail);
+//            if (i > 0) {
+//                return R.ok();
+//            }
+//        } else {
+//            FsProjectRedDetail map = new FsProjectRedDetail();
+//            map.setId(detail.getId());
+//            map.setReadDuration(detail.getReadDuration() + param.getReadDuration());
+//            map.setUpdateTime(new Date());
+//            int i = fsProjectRedDetailMapper.updateFsProjectRedDetail(map);
+//            if (i > 0) {
+//                return R.ok();
+//            }
+//        }
+//        return R.error();
+//    }
+@Override
+@Transactional
+public R userRedProject(ProjectRedParam param) {
+    if (param.getProjectId() == null && param.getUserId() == null && param.getCompanyUserId() == null) {
+        return R.error("参数错误");
+    }
+    FsProjectRedDetail detail = fsProjectRedDetailMapper.selectFsProjectRedDetailDataByCompanyUserIdAndProjectId(param);
+    if (detail == null) {
+        if (!StringUtils.isEmpty(param.getBaseInfoKey())) {
+            FsProjectRedDetail redDetail = redisCache.getCacheObject(param.getBaseInfoKey());
+            //存在销售扫码消耗了缓存数据 重新生成用户的阅读记录
+            if (redDetail == null) {
+                redDetail = new FsProjectRedDetail();
+                redDetail.setProjectId(param.getProjectId());
+                redDetail.setUserId(param.getUserId());
+                redDetail.setCompanyUserId(param.getCompanyUserId());
+                redDetail.setCreateTime(DateUtils.getNowDate());
+                redDetail.setUpdateTime(DateUtils.getNowDate());
             }
-        } else {
-            FsProjectRedDetail map = new FsProjectRedDetail();
-            map.setId(detail.getId());
-            map.setReadDuration(detail.getReadDuration() + param.getReadDuration());
-            map.setUpdateTime(new Date());
-            int i = fsProjectRedDetailMapper.updateFsProjectRedDetail(map);
+            redDetail.setUserId(param.getUserId());
+            redDetail.setReadDuration(param.getReadDuration());
+            redDetail.setStatus(1);
+            redDetail.setUpdateTime(DateUtils.getNowDate());
+            int i = fsProjectRedDetailMapper.insertFsProjectRedDetail(redDetail);
             if (i > 0) {
+                //删除缓存
+                redisCache.deleteObject(param.getBaseInfoKey());
                 return R.ok();
             }
+        } else {
+            return R.error("联系客服重新分享");
+        }
+    } else {
+        FsProjectRedDetail map = new FsProjectRedDetail();
+        map.setId(detail.getId());
+        map.setReadDuration(detail.getReadDuration() + param.getReadDuration());
+        map.setUpdateTime(new Date());
+        map.setStatus(1);
+        int i = fsProjectRedDetailMapper.updateFsProjectRedDetail(map);
+        if (i > 0) {
+            return R.ok();
         }
-        return R.error();
     }
+    return R.error();
+}
 }

+ 17 - 0
fs-service/src/main/java/com/fs/his/vo/FsPatientBaseInfoListDVO.java

@@ -1,5 +1,6 @@
 package com.fs.his.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.util.Date;
@@ -48,4 +49,20 @@ public class FsPatientBaseInfoListDVO {
 
     //医生诊断时间
     private Date diagnosisTime;
+
+    /**
+     * 审核状态 0-待审核 1-通过 2-未通过
+     */
+    private Integer checkStatus;
+
+    /**
+     * 审核驳回原因
+     */
+    private String reason;
+
+    /**
+     * 审核时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date checkTime;
 }

+ 20 - 1
fs-service/src/main/java/com/fs/patient/domain/FsPatientBaseInfo.java

@@ -2,6 +2,7 @@ package com.fs.patient.domain;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fs.common.annotation.Excel;
 import lombok.Data;
 import com.fs.common.core.domain.BaseEntity;
@@ -71,9 +72,27 @@ public class FsPatientBaseInfo extends BaseEntity{
      */
     private Long companyUserId;
 
-    //医生诊断时间
+    /**
+     * 医生诊断时间
+     */
     private Date diagnosisTime;
 
+    /**
+     * 审核状态 0-待审核 1-通过 2-未通过
+     */
+    private Integer checkStatus;
+
+    /**
+     * 审核驳回原因
+     */
+    private String reason;
+
+    /**
+     * 审核时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date checkTime;
+
     @TableField(exist = false)
     private String doctorName;
 

+ 3 - 0
fs-service/src/main/java/com/fs/patient/service/IFsPatientBaseInfoService.java

@@ -88,4 +88,7 @@ public interface IFsPatientBaseInfoService extends IService<FsPatientBaseInfo>{
 
     //销售驳回诊断
     int reject(FsPatientBaseInfo param);
+
+    //总后台审核
+    int check(FsPatientBaseInfo param);
 }

+ 106 - 10
fs-service/src/main/java/com/fs/patient/service/impl/FsPatientBaseInfoServiceImpl.java

@@ -4,29 +4,31 @@ import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
+import java.util.concurrent.TimeUnit;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.hutool.core.util.IdUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.redis.RedisCache;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.core.config.WxMaConfiguration;
-import com.fs.course.domain.FsCourseRedPacketLog;
-import com.fs.his.domain.FsDoctor;
-import com.fs.his.domain.FsProject;
-import com.fs.his.domain.FsUser;
-import com.fs.his.domain.FsUserWx;
+import com.fs.his.domain.*;
+import com.fs.his.mapper.FsProjectRedDetailMapper;
 import com.fs.his.mapper.FsUserMapper;
 import com.fs.his.param.FsPatientBaseInfoListDParam;
+import com.fs.his.param.ProjectRedParam;
 import com.fs.his.param.WxSendRedPacketParam;
 import com.fs.his.service.IFsDoctorService;
 import com.fs.his.service.IFsProjectService;
 import com.fs.his.service.IFsStorePaymentService;
 import com.fs.his.service.IFsUserWxService;
+import com.fs.his.utils.PhoneUtil;
 import com.fs.his.vo.FsPatientBaseInfoListDVO;
 import com.fs.patient.domain.FsProjectRedPacketRecord;
 import com.fs.patient.mapper.FsProjectRedPacketRecordMapper;
@@ -46,6 +48,7 @@ import org.springframework.stereotype.Service;
 import com.fs.patient.mapper.FsPatientBaseInfoMapper;
 import com.fs.patient.domain.FsPatientBaseInfo;
 import com.fs.patient.service.IFsPatientBaseInfoService;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
 /**
@@ -58,6 +61,11 @@ import org.springframework.util.ObjectUtils;
 @Service
 public class FsPatientBaseInfoServiceImpl extends ServiceImpl<FsPatientBaseInfoMapper, FsPatientBaseInfo> implements IFsPatientBaseInfoService {
 
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private FsProjectRedDetailMapper projectRedDetailMapper;
     @Autowired
     private CompanyUserMapper companyUserMapper;
 
@@ -172,12 +180,86 @@ public class FsPatientBaseInfoServiceImpl extends ServiceImpl<FsPatientBaseInfoM
         return baseMapper.deleteFsPatientBaseInfoById(id);
     }
 
+//    @Override
+//    public R getWxaCodePatientBaseInfoUnLimit(Long patientId,String appId) {
+//        log.info("生成用患者信息二维码,请求参数:{},{}",patientId,appId);
+//
+//        final WxMaService wxMaService = WxMaConfiguration.getMaService(appId);
+//        String scene="patientId="+ patientId ;
+//        byte[] file;
+//        try {
+//            file = wxMaService.getQrcodeService().createWxaCodeUnlimitBytes(
+//                    scene,
+//                    "pages_user/healthRegimen",
+//                    true,
+//                    "release",//release trial
+//                    430,
+//                    true,
+//                    null,
+//                    false);
+//
+//            // 上传图片到存储桶
+//            String suffix = ".png";
+//            CloudStorageService storage = OSSFactory.build();
+//            String url;
+//            try {
+//                url = storage.uploadSuffix(file, suffix);
+//            }  catch (Exception e) {
+//                // 记录错误日志
+//                log.error("生成图片失败:{}",e.getMessage(),e);
+//                return R.error("生成图片失败");
+//            }
+//            // 返回成功信息
+//            return R.ok().put("url",url);
+//
+//        } catch (WxErrorException e) {
+//            log.error(e.getMessage(), e);
+//            return R.error("微信接口调用失败: " + e.getMessage());
+//        }
+//    }
+
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public R getWxaCodePatientBaseInfoUnLimit(Long patientId,String appId) {
         log.info("生成用患者信息二维码,请求参数:{},{}",patientId,appId);
+        String baseInfoKey = null;
+        FsPatientBaseInfo baseInfo = fsPatientBaseInfoMapper.selectFsPatientBaseInfoById(patientId);
+        if (baseInfo == null) {
+            return R.error("未找到患者基础信息");
+        }
+
+        if (baseInfo.getUserId() == null) {
+            baseInfoKey = IdUtil.getSnowflake(0,0).nextIdStr();
+            FsProjectRedDetail detail = new FsProjectRedDetail();
+            detail.setProjectId(baseInfo.getProjectId());
+            detail.setCompanyUserId(baseInfo.getCompanyUserId());
+            detail.setCreateTime(new Date());
+            detail.setSendTime(new Date());
+            detail.setSource("小程序");
+            detail.setStatus(0);
+            //存入缓存
+            redisCache.setCacheObject(baseInfoKey,detail,24, TimeUnit.HOURS);
+        } else {
+            ProjectRedParam param = new ProjectRedParam();
+            param.setProjectId(baseInfo.getProjectId());
+            param.setCompanyUserId(baseInfo.getCompanyUserId());
+            param.setUserId(baseInfo.getUserId());
+            FsProjectRedDetail detail = projectRedDetailMapper.selectFsProjectRedDetailDataByCompanyUserIdAndProjectId(param);
+            if (detail == null) {
+                detail = new FsProjectRedDetail();
+                detail.setProjectId(baseInfo.getProjectId());
+                detail.setCompanyUserId(baseInfo.getCompanyUserId());
+                detail.setUserId(baseInfo.getUserId());
+                detail.setSendTime(new Date());
+                detail.setCreateTime(new Date());
+                detail.setSource("小程序");
+                detail.setStatus(0);
+                projectRedDetailMapper.insertFsProjectRedDetail(detail);
+            }
+        }
 
         final WxMaService wxMaService = WxMaConfiguration.getMaService(appId);
-        String scene="patientId="+ patientId ;
+        String scene=patientId + "&" +baseInfoKey;
         byte[] file;
         try {
             file = wxMaService.getQrcodeService().createWxaCodeUnlimitBytes(
@@ -310,10 +392,6 @@ public class FsPatientBaseInfoServiceImpl extends ServiceImpl<FsPatientBaseInfoM
         if (info == null) {
             return R.error("患者信息错误,诊断失败");
         }
-        if (info.getDoctorStatus() == 1) {
-            return R.error("患者信息已诊断");
-        }
-
         FsPatientBaseInfo map = new FsPatientBaseInfo();
         map.setId(info.getId());
         map.setDoctorStatus(1);
@@ -323,6 +401,7 @@ public class FsPatientBaseInfoServiceImpl extends ServiceImpl<FsPatientBaseInfoM
         map.setDiagnosisTime(new Date());
         map.setDiagnosisResult(param.getDiagnosisResult());
         map.setTreatmentTarget(param.getTreatmentTarget());
+        map.setCheckStatus(0);
         int i = fsPatientBaseInfoMapper.updateFsPatientBaseInfo(map);
         if (i > 0) {
             return R.ok();
@@ -387,6 +466,23 @@ public class FsPatientBaseInfoServiceImpl extends ServiceImpl<FsPatientBaseInfoM
         return fsPatientBaseInfoMapper.updateFsPatientBaseInfo(map);
     }
 
+    @Override
+    public int check(FsPatientBaseInfo param) {
+        if (param.getId() == null || param.getId() <= 0) {
+            throw new CustomException("参数错误");
+        }
+        FsPatientBaseInfo fsPatientBaseInfo = fsPatientBaseInfoMapper.selectFsPatientBaseInfoById(param.getId());
+        if (fsPatientBaseInfo == null) {
+            throw new CustomException("未找到患者基础信息");
+        }
+        FsPatientBaseInfo map = new FsPatientBaseInfo();
+        map.setId(param.getId());
+        map.setCheckStatus(param.getCheckStatus());
+        map.setCheckTime(new Date());
+        map.setReason(param.getReason());
+        return fsPatientBaseInfoMapper.updateFsPatientBaseInfo(map);
+    }
+
 
     private R sendProjectRedPacket(FsProjectSendRewardUParam param,FsUser user,CompanyUser companyUser){
         //默认0.1红包数据

+ 9 - 1
fs-service/src/main/resources/mapper/his/FsProjectRedDetailMapper.xml

@@ -13,10 +13,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="createTime"    column="create_time"    />
         <result property="source"    column="source"    />
         <result property="updateTime"    column="update_time"    />
+        <result property="sendTime"    column="send_time"    />
+        <result property="status"    column="status"    />
     </resultMap>
 
     <sql id="selectFsProjectRedDetailVo">
-        select id, user_id, company_user_id, project_id, read_duration, create_time, source, update_time from fs_project_red_detail
+        select id, user_id, company_user_id, project_id, read_duration, create_time, source, update_time,send_time,status from fs_project_red_detail
     </sql>
 
     <select id="selectFsProjectRedDetailList" parameterType="FsProjectRedDetail" resultMap="FsProjectRedDetailResult">
@@ -45,6 +47,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time,</if>
             <if test="source != null">source,</if>
             <if test="updateTime != null">update_time,</if>
+            <if test="sendTime != null">send_time,</if>
+            <if test="status != null">status,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="userId != null">#{userId},</if>
@@ -54,6 +58,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">#{createTime},</if>
             <if test="source != null">#{source},</if>
             <if test="updateTime != null">#{updateTime},</if>
+            <if test="sendTime != null">#{sendTime},</if>
+            <if test="status != null">#{status},</if>
          </trim>
     </insert>
 
@@ -67,6 +73,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="source != null">source = #{source},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="sendTime != null">send_time = #{sendTime},</if>
+            <if test="status != null">status = #{status},</if>
         </trim>
         where id = #{id}
     </update>

+ 18 - 1
fs-service/src/main/resources/mapper/patient/FsPatientBaseInfoMapper.xml

@@ -21,10 +21,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="doctorStatus"    column="doctor_status"    />
         <result property="companyUserId"    column="company_user_id"    />
         <result property="diagnosisTime"    column="diagnosis_time"    />
+        <result property="reason"    column="reason"    />
+        <result property="checkStatus"    column="check_status"    />
+        <result property="checkTime"    column="check_time"    />
     </resultMap>
 
     <sql id="selectFsPatientBaseInfoVo">
-        select id, name, sex, age, base_info, diagnosis_result, treatment_target, doctor_id, project_id, create_time, update_time, user_id, status, doctor_status,company_user_id,diagnosis_time from fs_patient_base_info
+        select id, name, sex, age, base_info, diagnosis_result, treatment_target, doctor_id, project_id, create_time
+             , update_time, user_id, status, doctor_status,company_user_id,diagnosis_time,reason,
+            check_status,check_time
+        from fs_patient_base_info
     </sql>
 
     <select id="selectFsPatientBaseInfoList" parameterType="FsPatientBaseInfo" resultMap="FsPatientBaseInfoResult">
@@ -41,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="projectId != null "> and project_id = #{projectId}</if>
             <if test="userId != null "> and user_id = #{userId}</if>
             <if test="status != null "> and status = #{status}</if>
+            <if test="checkStatus != null "> and check_status = #{checkStatus}</if>
             <if test="doctorStatus != null "> and doctor_status = #{doctorStatus}</if>
             <if test="companyUserId != null "> and company_user_id = #{companyUserId}</if>
         </where>
@@ -70,6 +77,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="doctorStatus != null">doctor_status,</if>
             <if test="companyUserId != null">company_user_id,</if>
             <if test="diagnosisTime != null">diagnosis_time,</if>
+            <if test="reason != null">reason,</if>
+            <if test="checkStatus != null">check_status,</if>
+            <if test="checkTime != null">check_time,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="name != null">#{name},</if>
@@ -87,6 +97,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="doctorStatus != null">#{doctorStatus},</if>
             <if test="companyUserId != null">#{companyUserId},</if>
             <if test="diagnosisTime != null">#{diagnosisTime},</if>
+            <if test="reason != null">#{reason},</if>
+            <if test="checkStatus != null">#{checkStatus},</if>
+            <if test="checkTime != null">#{checkTime},</if>
          </trim>
     </insert>
 
@@ -108,6 +121,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="doctorStatus != null">doctor_status = #{doctorStatus},</if>
             <if test="companyUserId != null">company_user_id = #{companyUserId},</if>
             <if test="diagnosisTime != null">diagnosis_time = #{diagnosisTime},</if>
+            <if test="reason != null">reason = #{reason},</if>
+            <if test="checkStatus != null">check_status = #{checkStatus},</if>
+            <if test="checkTime != null">check_time = #{checkTime},</if>
         </trim>
         where id = #{id}
     </update>
@@ -130,6 +146,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="doctorId != null "> and doctor_id = #{doctorId}</if>
             <if test="projectId != null "> and project_id = #{projectId}</if>
             <if test="doctorStatus != null "> and doctor_status = #{doctorStatus}</if>
+            <if test="checkStatus != null "> and check_status = #{checkStatus}</if>
         </where>
         ORDER BY doctor_status ASC
     </select>