修改了放心签的验证逻辑

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.auth.GetAuthorizeResponse;
import net.lab1024.sa.admin.extend.fangxinqian.task.GetTaskLinkResponse; 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.admin.*;
import net.lab1024.sa.admin.module.app.expert.dao.ExpertDao; import net.lab1024.sa.admin.module.app.expert.dao.*;
import net.lab1024.sa.admin.module.app.expert.dao.FxqExpertTaskDao; import net.lab1024.sa.admin.module.app.expert.domain.entity.*;
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.domain.vo.AddFxqVo; 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.domain.vo.GetExpertSignVo;
import net.lab1024.sa.admin.module.app.expert.service.ExpertFxqService; import net.lab1024.sa.admin.module.app.expert.service.ExpertFxqService;
@ -83,6 +77,8 @@ public class ExpertFxqController {
@Resource @Resource
private ExpertDao expertDao; private ExpertDao expertDao;
@Resource
private FxqSignDao fxqSignDao;
/** /**
* 获取专家协议签署详情 * 获取专家协议签署详情
@ -96,17 +92,33 @@ public class ExpertFxqController {
} }
GetExpertSignVo g = new GetExpertSignVo(); GetExpertSignVo g = new GetExpertSignVo();
g.setTaskStatus(1); g.setTaskStatus(2);
// 签署任务详情查询 // 获取专家协议签署详情
FxqExpertTaskEntity fxqExpertTask = expertFxqService.getTaskDetail(expertId); LambdaQueryWrapper<FxqSignEntity> signQueryWrapper = new LambdaQueryWrapper<>();
if (fxqExpertTask == null) { signQueryWrapper.eq(FxqSignEntity::getExpertId,expertId);
g.setTaskStatus(2); FxqSignEntity fxqSign = fxqSignDao.selectOne(signQueryWrapper);
return ResponseDTO.app_ok(g); 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); return ResponseDTO.app_ok(g);
} }
@ -130,6 +142,14 @@ public class ExpertFxqController {
return ResponseDTO.userErrorParam("操作失败"); 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(); FxqCompanyEntity company = expertFxqService.getCompany();
@ -138,18 +158,9 @@ public class ExpertFxqController {
// 签署任务详情查询 // 签署任务详情查询
FxqExpertTaskEntity fxqExpertTask = expertFxqService.getTaskDetail(expertId); FxqExpertTaskEntity fxqExpertTask = expertFxqService.getTaskDetail(expertId);
if (fxqExpertTask != null) { if (Objects.equals(fxqExpertTask.getTaskStatus(), "20")) {
// 已创建了签署任务 // 已签署
if (Objects.equals(fxqExpertTask.getTaskStatus(), "20")) { return ResponseDTO.userErrorParam("您已签订协议,无需再次签订");
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);
}
} }
// 获取签署的模版数据 // 获取签署的模版数据

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.FxqCompanyEntity;
import net.lab1024.sa.admin.module.app.expert.domain.entity.FxqSignEntity; import net.lab1024.sa.admin.module.app.expert.domain.entity.FxqSignEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Mapper @Mapper
@Component @Component
public interface FxqSignDao extends BaseMapper<FxqSignEntity> { 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") @TableField("sign_status")
private Integer signStatus; private Integer signStatus;
/**
* 协议地址
*/
@TableField("sign_link")
private String signLink;
/** /**
* 创建时间 * 创建时间
*/ */

View File

@ -385,6 +385,17 @@ public class ExpertFxqService {
throw new BusinessException("操作失败"); 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(), "")){ if (Objects.equals(templateTask.getData().getTaskNo(), "")){
throw new BusinessException("操作失败"); 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<>(); LambdaQueryWrapper<FxqCompanyEntity> companyQueryWrapper = new LambdaQueryWrapper<>();
companyQueryWrapper.eq(FxqCompanyEntity::getUid, "bjyykxjsfzxh"); companyQueryWrapper.eq(FxqCompanyEntity::getUid, "bjyykxjsfzxh");
@ -410,21 +436,6 @@ public class ExpertFxqService {
throw new BusinessException("操作失败"); 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()); GetTaskDetailResponse taskLink = fxqTask.getTaskDetail(fxqExpertTask.getTaskNo(),companyFxqCompany.getUnionId());
if (taskLink.getData() == null) { if (taskLink.getData() == null) {
throw new BusinessException("操作失败"); throw new BusinessException("操作失败");
@ -441,61 +452,17 @@ public class ExpertFxqService {
// 修改状态-签署任务 // 修改状态-签署任务
fxqExpertTask.setTaskStatus(String.valueOf(taskLink.getData().getTaskStatus())); fxqExpertTask.setTaskStatus(String.valueOf(taskLink.getData().getTaskStatus()));
if (taskLink.getData().getTaskStatus() == 20){
fxqExpertTask.setSignStatus(1);
}
fxqExpertTaskDao.updateById(fxqExpertTask); fxqExpertTaskDao.updateById(fxqExpertTask);
return fxqExpertTask; // 修改专家签署任务表
} if (taskLink.getData().getTaskStatus() == 20){
int rows = fxqSignDao.updateSignStatus(fxqExpertTask.getExpertId(), taskId,2);
/** if (rows == 0) {
* 获取专家协议签署详情 throw new BusinessException("更新失败,未找到符合条件的记录");
*/
@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());
} }
return fxqExpertTask;
} }
/** /**
@ -513,5 +480,4 @@ public class ExpertFxqService {
return result.getData(); 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.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.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.ExpertFxqService;
import net.lab1024.sa.admin.module.app.expert.service.ExpertSignService; import net.lab1024.sa.admin.module.app.expert.service.ExpertSignService;
import net.lab1024.sa.admin.module.app.medicalrecord.dao.*; import net.lab1024.sa.admin.module.app.medicalrecord.dao.*;
@ -66,6 +68,9 @@ public class MedicalRecordService {
@Autowired @Autowired
private ExpertSignService expertSignService; private ExpertSignService expertSignService;
@Resource
private FxqSignDao fxqSignDao;
public PageResult<MedicalRecordListVO> getList(MedicalRecordQueryForm queryForm){ public PageResult<MedicalRecordListVO> getList(MedicalRecordQueryForm queryForm){
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm); Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
Long expertId = SmartRequestUtil.getRequestUserId(); Long expertId = SmartRequestUtil.getRequestUserId();
@ -95,9 +100,15 @@ public class MedicalRecordService {
Long expertId = SmartRequestUtil.getRequestUserId(); Long expertId = SmartRequestUtil.getRequestUserId();
// 验证签名状态 // 获取专家协议签署详情
boolean isSign = expertFxqService.getExpertSign(expertId); LambdaQueryWrapper<FxqSignEntity> signQueryWrapper = new LambdaQueryWrapper<>();
if (!isSign){ signQueryWrapper.eq(FxqSignEntity::getExpertId,expertId);
FxqSignEntity fxqSign = fxqSignDao.selectOne(signQueryWrapper);
if (fxqSign == null) {
return ResponseDTO.userErrorParam("请先签署项目协议!");
}
if (fxqSign.getSignStatus() == 2) {
return ResponseDTO.userErrorParam("请先签署项目协议!"); return ResponseDTO.userErrorParam("请先签署项目协议!");
} }
@ -254,6 +265,18 @@ public class MedicalRecordService {
return ResponseDTO.error(NO_PERMISSION_EDIT); 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); ResponseDTO check = check(updateForm, expertId);

View File

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