修改了放心签的验证逻辑

This commit is contained in:
wucongxing8150 2025-07-02 13:21:31 +08:00
parent 3eb7af1fff
commit d57329cf1c
6 changed files with 124 additions and 100 deletions

View File

@ -12,14 +12,8 @@ import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
import net.lab1024.sa.admin.extend.fangxinqian.auth.GetAuthorizeResponse;
import net.lab1024.sa.admin.extend.fangxinqian.task.GetTaskLinkResponse;
import net.lab1024.sa.admin.module.app.expert.admin.*;
import net.lab1024.sa.admin.module.app.expert.dao.ExpertDao;
import net.lab1024.sa.admin.module.app.expert.dao.FxqExpertTaskDao;
import net.lab1024.sa.admin.module.app.expert.dao.FxqTemplateDao;
import net.lab1024.sa.admin.module.app.expert.dao.FxqUserDao;
import net.lab1024.sa.admin.module.app.expert.domain.entity.FxqCompanyEntity;
import net.lab1024.sa.admin.module.app.expert.domain.entity.FxqExpertTaskEntity;
import net.lab1024.sa.admin.module.app.expert.domain.entity.FxqTemplateEntity;
import net.lab1024.sa.admin.module.app.expert.domain.entity.FxqUserEntity;
import net.lab1024.sa.admin.module.app.expert.dao.*;
import net.lab1024.sa.admin.module.app.expert.domain.entity.*;
import net.lab1024.sa.admin.module.app.expert.domain.vo.AddFxqVo;
import net.lab1024.sa.admin.module.app.expert.domain.vo.GetExpertSignVo;
import net.lab1024.sa.admin.module.app.expert.service.ExpertFxqService;
@ -83,6 +77,8 @@ public class ExpertFxqController {
@Resource
private ExpertDao expertDao;
@Resource
private FxqSignDao fxqSignDao;
/**
* 获取专家协议签署详情
@ -96,17 +92,33 @@ public class ExpertFxqController {
}
GetExpertSignVo g = new GetExpertSignVo();
g.setTaskStatus(1);
// 签署任务详情查询
FxqExpertTaskEntity fxqExpertTask = expertFxqService.getTaskDetail(expertId);
if (fxqExpertTask == null) {
g.setTaskStatus(2);
// 获取专家协议签署详情
LambdaQueryWrapper<FxqSignEntity> signQueryWrapper = new LambdaQueryWrapper<>();
signQueryWrapper.eq(FxqSignEntity::getExpertId,expertId);
FxqSignEntity fxqSign = fxqSignDao.selectOne(signQueryWrapper);
if (fxqSign == null) {
return ResponseDTO.app_ok(g);
}
if (!Objects.equals(fxqExpertTask.getTaskStatus(), "20")) {
g.setTaskStatus(2);
// 已签署
if (fxqSign.getSignStatus() == 1) {
g.setTaskStatus(1);
g.setTaskFileUrl(fxqSign.getSignLink());
return ResponseDTO.app_ok(g);
}
// 签署任务详情查询
FxqExpertTaskEntity fxqExpertTask = expertFxqService.getTaskDetail(fxqSign.getTaskId());
if (fxqExpertTask == null) {
return ResponseDTO.app_ok(g);
}
// 已签署
if (Objects.equals(fxqExpertTask.getTaskStatus(), "20")) {
g.setTaskStatus(1);
g.setTaskFileUrl(fxqExpertTask.getTaskLink());
return ResponseDTO.app_ok(g);
}
@ -130,6 +142,14 @@ public class ExpertFxqController {
return ResponseDTO.userErrorParam("操作失败");
}
// 获取企业实名认证数据-个人
LambdaQueryWrapper<FxqSignEntity> signQueryWrapper = new LambdaQueryWrapper<>();
signQueryWrapper.eq(FxqSignEntity::getExpertId,expertId);
FxqSignEntity fxqSign = fxqSignDao.selectOne(signQueryWrapper);
if (fxqSign != null && fxqSign.getSignStatus() == 1) {
return ResponseDTO.userErrorParam("您已签订协议,无需再次签订");
}
// 获取企业放心签实名认证数据
FxqCompanyEntity company = expertFxqService.getCompany();
@ -138,20 +158,11 @@ public class ExpertFxqController {
// 签署任务详情查询
FxqExpertTaskEntity fxqExpertTask = expertFxqService.getTaskDetail(expertId);
if (fxqExpertTask != null) {
// 已创建了签署任务
if (Objects.equals(fxqExpertTask.getTaskStatus(), "20")) {
// 已签署
return ResponseDTO.userErrorParam("您已签订协议,无需再次签订");
}
if (Objects.equals(fxqExpertTask.getTaskStatus(), "0") || Objects.equals(fxqExpertTask.getTaskStatus(), "10")) {
AddFxqVo g = new AddFxqVo();
g.setTaskStatus(2);
g.setLinkUrl(fxqExpertTask.getTaskLink());
return ResponseDTO.app_ok(g);
}
}
// 获取签署的模版数据
FxqTemplateEntity fxqTemplate = expertFxqService.getTemplate(company.getId());

View File

@ -4,10 +4,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.lab1024.sa.admin.module.app.expert.domain.entity.FxqCompanyEntity;
import net.lab1024.sa.admin.module.app.expert.domain.entity.FxqSignEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Component;
@Mapper
@Component
public interface FxqSignDao extends BaseMapper<FxqSignEntity> {
@Update("UPDATE t_caseplatform_fxq_sign " +
"SET sign_status = #{signStatus}, update_time = NOW() " +
"WHERE expert_id = #{expertId} AND task_id = #{taskId}")
int updateSignStatus(@Param("expertId") Long expertId,
@Param("taskId") Long taskId,
@Param("signStatus") Integer signStatus);
}

View File

@ -38,6 +38,12 @@ public class FxqSignEntity {
@TableField("sign_status")
private Integer signStatus;
/**
* 协议地址
*/
@TableField("sign_link")
private String signLink;
/**
* 创建时间
*/

View File

@ -385,6 +385,17 @@ public class ExpertFxqService {
throw new BusinessException("操作失败");
}
// 添加数据库-签署
FxqSignEntity fxqSignData = new FxqSignEntity();
fxqSignData.setExpertId(fxqUser.getExpertId());
fxqSignData.setTaskId(fxqExpertTaskData.getId());
fxqSignData.setSignStatus(2);
fxqSignData.setCreateTime(LocalDateTime.now());
res = fxqSignDao.insert(fxqSignData);
if (res <= 0){
throw new BusinessException("操作失败");
}
if (Objects.equals(templateTask.getData().getTaskNo(), "")){
throw new BusinessException("操作失败");
}
@ -401,7 +412,22 @@ public class ExpertFxqService {
/**
* 签署任务详情查询
*/
public FxqExpertTaskEntity getTaskDetail(Long expertId){
public FxqExpertTaskEntity getTaskDetail(Long taskId){
// 获取签署任务
// LambdaQueryWrapper<FxqExpertTaskEntity> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(FxqExpertTaskEntity::getExpertId, expertId);
// queryWrapper.in(FxqExpertTaskEntity::getTaskStatus, "0","10","20");
FxqExpertTaskEntity fxqExpertTask = fxqExpertTaskDao.selectById(taskId);
if (fxqExpertTask == null){
// 未签署
return null;
}
// 已完成
if (Objects.equals(fxqExpertTask.getTaskStatus(), "20")) {
return fxqExpertTask;
}
// 获取企业实名认证数据-公司
LambdaQueryWrapper<FxqCompanyEntity> companyQueryWrapper = new LambdaQueryWrapper<>();
companyQueryWrapper.eq(FxqCompanyEntity::getUid, "bjyykxjsfzxh");
@ -410,21 +436,6 @@ public class ExpertFxqService {
throw new BusinessException("操作失败");
}
// 获取签署任务
LambdaQueryWrapper<FxqExpertTaskEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(FxqExpertTaskEntity::getExpertId, expertId);
queryWrapper.in(FxqExpertTaskEntity::getTaskStatus, "0","10","20");
FxqExpertTaskEntity fxqExpertTask = fxqExpertTaskDao.selectOne(queryWrapper);
if (fxqExpertTask != null) {
// 已完成
if (Objects.equals(fxqExpertTask.getTaskStatus(), "20")) {
return fxqExpertTask;
}
}else{
// 未签署
return null;
}
GetTaskDetailResponse taskLink = fxqTask.getTaskDetail(fxqExpertTask.getTaskNo(),companyFxqCompany.getUnionId());
if (taskLink.getData() == null) {
throw new BusinessException("操作失败");
@ -441,63 +452,19 @@ public class ExpertFxqService {
// 修改状态-签署任务
fxqExpertTask.setTaskStatus(String.valueOf(taskLink.getData().getTaskStatus()));
if (taskLink.getData().getTaskStatus() == 20){
fxqExpertTask.setSignStatus(1);
}
fxqExpertTaskDao.updateById(fxqExpertTask);
// 修改专家签署任务表
if (taskLink.getData().getTaskStatus() == 20){
int rows = fxqSignDao.updateSignStatus(fxqExpertTask.getExpertId(), taskId,2);
if (rows == 0) {
throw new BusinessException("更新失败,未找到符合条件的记录");
}
}
return fxqExpertTask;
}
/**
* 获取专家协议签署详情
*/
@Transactional
public boolean getExpertSign(Long expertId){
try {
// 获取签署任务数据
LambdaQueryWrapper<FxqExpertTaskEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(FxqExpertTaskEntity::getExpertId, expertId);
queryWrapper.in(FxqExpertTaskEntity::getTaskStatus, "0","10","20");
FxqExpertTaskEntity fxqExpertTask = fxqExpertTaskDao.selectOne(queryWrapper);
if (fxqExpertTask == null) {
return false;
}
if (Objects.equals(fxqExpertTask.getTaskStatus(), "20")){
return true;
}
// 获取个人实名认证数据
LambdaQueryWrapper<FxqUserEntity> personalQueryWrapper = new LambdaQueryWrapper<>();
personalQueryWrapper.eq(FxqUserEntity::getExpertId, expertId);
FxqUserEntity fxqUser = fxqUserDao.selectOne(personalQueryWrapper);
if (fxqUser == null) {
return false;
}
// 获取签署链接
GetTaskLinkResponse.taskDetailsData fxqLink = getTaskLink(fxqExpertTask.getTaskNo(),fxqUser.getUnionId());
if (fxqLink == null) {
throw new BusinessException("操作失败");
}
// 已签署
if (Objects.equals(fxqLink.getSignStatus(), "2")){
// 修改签署任务
fxqExpertTask.setTaskStatus("20");
fxqExpertTaskDao.updateById(fxqExpertTask);
return true;
}
return false;
} catch (Exception e) {
throw new BusinessException(e.getMessage());
}
}
/**
* 获取静默签署的授权
*/
@ -513,5 +480,4 @@ public class ExpertFxqService {
return result.getData();
}
}

View File

@ -6,6 +6,8 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.lab1024.sa.admin.module.app.expert.admin.ExpertSignVO;
import net.lab1024.sa.admin.module.app.expert.dao.FxqSignDao;
import net.lab1024.sa.admin.module.app.expert.domain.entity.FxqSignEntity;
import net.lab1024.sa.admin.module.app.expert.service.ExpertFxqService;
import net.lab1024.sa.admin.module.app.expert.service.ExpertSignService;
import net.lab1024.sa.admin.module.app.medicalrecord.dao.*;
@ -66,6 +68,9 @@ public class MedicalRecordService {
@Autowired
private ExpertSignService expertSignService;
@Resource
private FxqSignDao fxqSignDao;
public PageResult<MedicalRecordListVO> getList(MedicalRecordQueryForm queryForm){
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
Long expertId = SmartRequestUtil.getRequestUserId();
@ -95,9 +100,15 @@ public class MedicalRecordService {
Long expertId = SmartRequestUtil.getRequestUserId();
// 验证签名状态
boolean isSign = expertFxqService.getExpertSign(expertId);
if (!isSign){
// 获取专家协议签署详情
LambdaQueryWrapper<FxqSignEntity> signQueryWrapper = new LambdaQueryWrapper<>();
signQueryWrapper.eq(FxqSignEntity::getExpertId,expertId);
FxqSignEntity fxqSign = fxqSignDao.selectOne(signQueryWrapper);
if (fxqSign == null) {
return ResponseDTO.userErrorParam("请先签署项目协议!");
}
if (fxqSign.getSignStatus() == 2) {
return ResponseDTO.userErrorParam("请先签署项目协议!");
}
@ -254,6 +265,18 @@ public class MedicalRecordService {
return ResponseDTO.error(NO_PERMISSION_EDIT);
}
// 获取专家协议签署详情
LambdaQueryWrapper<FxqSignEntity> signQueryWrapper = new LambdaQueryWrapper<>();
signQueryWrapper.eq(FxqSignEntity::getExpertId,expertId);
FxqSignEntity fxqSign = fxqSignDao.selectOne(signQueryWrapper);
if (fxqSign == null) {
return ResponseDTO.userErrorParam("请先签署项目协议!");
}
if (fxqSign.getSignStatus() == 2) {
return ResponseDTO.userErrorParam("请先签署项目协议!");
}
/*************************前置 检查*****************************/
ResponseDTO check = check(updateForm, expertId);

View File

@ -50,6 +50,9 @@ public class CaseplatformCaseVO {
@ApiModelPropertyEnum(value = CaseStatusEnum.class, desc = "0待审核 1审核通过 2审核不通过")
private Integer status;
@ApiModelProperty(value = "审核通过时间")
private LocalDateTime examineTime;
@ApiModelProperty(value = "专家所在城市医院")
private String expertHospitalName;
@ -65,4 +68,12 @@ public class CaseplatformCaseVO {
@ApiModelProperty(value = "修改时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "签署状态1:已签署 2:未签署)")
private String signStatus;
@ApiModelProperty(value = "协议地址")
private String taskLink;
@ApiModelProperty(value = "签署完成时间")
private LocalDateTime signTime;
}