This commit is contained in:
wucongxing8150 2025-07-01 08:55:10 +08:00
parent b2e9b7fff5
commit fd7f4259ce
4 changed files with 129 additions and 66 deletions

View File

@ -2,6 +2,7 @@ package net.lab1024.sa.admin.extend.fangxinqian.task;
import lombok.Data;
import org.apache.poi.ss.formula.functions.T;
import java.util.List;
@ -49,6 +50,19 @@ public class GetTaskDetailResponse {
*/
@Data
public static class contractsData {
/**
* 签署任务编号
*/
private String contractNo;
/**
* 签署文件预览地址
*/
private String contractUrl;
/**
* 签署人信息
*/
private List<T> signers;
}
}

View File

@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
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;
@ -78,6 +79,10 @@ public class ExpertFxqController {
@Resource
private FxqTemplateDao fxqTemplateDao;
@Resource
private ExpertDao expertDao;
/**
* 获取专家协议签署详情
*/
@ -90,13 +95,18 @@ public class ExpertFxqController {
}
GetExpertSignVo g = new GetExpertSignVo();
g.setTaskStatus(1);
// 获取专家协议签署状态
boolean res = expertFxqService.getExpertSign(expertId);
if (!res){
// 签署任务详情查询
FxqExpertTaskEntity fxqExpertTask = expertFxqService.getTaskDetail(expertId);
if (fxqExpertTask == null) {
g.setTaskStatus(2);
}else {
g.setTaskStatus(1);
return ResponseDTO.app_ok(g);
}
if (!Objects.equals(fxqExpertTask.getTaskStatus(), "20")) {
g.setTaskStatus(2);
return ResponseDTO.app_ok(g);
}
return ResponseDTO.app_ok(g);
@ -113,18 +123,40 @@ public class ExpertFxqController {
return ResponseDTO.error(LOGIN_STATE_INVALID);
}
// 获取专家数据
ExpertEntity expert = expertDao.getExpert(expertId);
if (expert == null) {
return ResponseDTO.userErrorParam("操作失败");
}
// 获取企业放心签实名认证数据
FxqCompanyEntity company = expertFxqService.getCompany();
// 获取个人放心签实名认证数据
FxqUserEntity fxqUser = expertFxqService.getPersonal(expertId);
// 签署任务详情查询
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());
// 模版签署任务创建
AddFxqVo fxqExpertTask = expertFxqService.addTemplateTask(company,fxqUser,fxqTemplate);
AddFxqVo g = expertFxqService.addTemplateTask(company,fxqUser,fxqTemplate,expert);
return ResponseDTO.app_ok(fxqExpertTask);
return ResponseDTO.app_ok(g);
}
}

View File

@ -49,12 +49,12 @@ public class FxqExpertTaskEntity {
* 20已完成
*/
@TableField("task_status")
private Integer taskStatus;
private String taskStatus;
/**
* 签署完成时间
*/
@TableField("signTime")
@TableField("sign_time")
private LocalDateTime signTime;
/**

View File

@ -288,32 +288,8 @@ public class ExpertFxqService {
* 模版签署任务创建
*/
@Transactional
public AddFxqVo addTemplateTask(FxqCompanyEntity company, FxqUserEntity fxqUser, FxqTemplateEntity fxqTemplate){
public AddFxqVo addTemplateTask(FxqCompanyEntity company, FxqUserEntity fxqUser, FxqTemplateEntity fxqTemplate,ExpertEntity expert){
try {
AddFxqVo g = new AddFxqVo();
// 签署编号
String taskNo = "";
LambdaQueryWrapper<FxqExpertTaskEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(FxqExpertTaskEntity::getExpertId, fxqUser.getExpertId());
queryWrapper.in(FxqExpertTaskEntity::getTaskStatus, 0,10,20);
FxqExpertTaskEntity fxqExpertTask = fxqExpertTaskDao.selectOne(queryWrapper);
if (fxqExpertTask != null) {
// 已完成
if (fxqExpertTask.getTaskStatus() == 20) {
g.setTaskStatus(1);
g.setLinkUrl(fxqExpertTask.getTaskLink());
return g;
}
// 10待签署 0发起签署
if (fxqExpertTask.getTaskStatus() == 10 || fxqExpertTask.getTaskStatus() == 0){
g.setTaskStatus(2);
g.setLinkUrl(fxqExpertTask.getTaskLink());
return g;
}
}
// 需创建模版任务
AddTemplateTaskRequest r = new AddTemplateTaskRequest();
r.setUnionId(company.getUnionId());
@ -336,10 +312,25 @@ public class ExpertFxqService {
// 初始化 components 列表
List<AddTemplateTaskRequest.componentsData> componentsList = new ArrayList<>();
AddTemplateTaskRequest.componentsData components = new AddTemplateTaskRequest.componentsData();
components.setFileKey("doctorName");
components.setFileValue(fxqUser.getName());
componentsList.add(components);
// 乙方姓名
AddTemplateTaskRequest.componentsData name = new AddTemplateTaskRequest.componentsData();
name.setFileKey("name");
name.setFileValue(fxqUser.getName());
componentsList.add(name);
// 乙方工作单位
AddTemplateTaskRequest.componentsData work = new AddTemplateTaskRequest.componentsData();
work.setFileKey("work");
work.setFileValue(expert.getHospitalName());
componentsList.add(work);
// 乙方联系电话
AddTemplateTaskRequest.componentsData mobile = new AddTemplateTaskRequest.componentsData();
mobile.setFileKey("mobile");
mobile.setFileValue(expert.getMobile());
componentsList.add(mobile);
r.setComponents(componentsList);
AddTemplateTaskResponse templateTask = fxqTask.addTemplateTask(r);
@ -351,42 +342,37 @@ public class ExpertFxqService {
throw new BusinessException("操作失败");
}
// 获取签署链接
GetTaskLinkResponse.taskDetailsData fxqLink = getTaskLink(templateTask.getData().getTaskNo(),fxqUser.getUnionId());
if (fxqLink == null) {
throw new BusinessException("操作失败");
}
if (!Objects.equals(fxqLink.getSignStatus(), "1")) {
throw new BusinessException("签署状态错误");
}
// 添加数据库
FxqExpertTaskEntity fxqExpertTaskData = new FxqExpertTaskEntity();
fxqExpertTaskData.setExpertId(fxqUser.getExpertId());
fxqExpertTaskData.setTaskNo(templateTask.getData().getTaskNo());
fxqExpertTaskData.setTemplateId(fxqTemplate.getId());
fxqExpertTaskData.setTaskStatus(10);
fxqExpertTaskData.setTaskStatus("10");
fxqExpertTaskData.setTaskLink(fxqLink.getSignH5Url());
fxqExpertTaskData.setCreateTime(LocalDateTime.now());
int res = fxqExpertTaskDao.insert(fxqExpertTaskData);
if (res <= 0){
throw new BusinessException("操作失败");
}
taskNo = templateTask.getData().getTaskNo();
if (Objects.equals(taskNo, "")){
if (Objects.equals(templateTask.getData().getTaskNo(), "")){
throw new BusinessException("操作失败");
}
// 获取签署链接
GetTaskLinkResponse.taskDetailsData fxqLink = getTaskLink(taskNo,fxqUser.getUnionId());
if (fxqLink == null) {
throw new BusinessException("操作失败");
}
// 已签署
if (Objects.equals(fxqLink.getSignStatus(), "2")){
g.setTaskStatus(1);
return g;
} else if (Objects.equals(fxqLink.getSignStatus(), "1")) {
// 可签署
g.setTaskStatus(1);
g.setLinkUrl(fxqLink.getSignH5Url());
return g;
} else{
throw new BusinessException("签署状态错误");
}
AddFxqVo g = new AddFxqVo();
g.setTaskStatus(2);
g.setLinkUrl(fxqLink.getSignH5Url());
return g;
} catch (Exception e) {
throw new BusinessException(e.getMessage());
}
@ -395,8 +381,31 @@ public class ExpertFxqService {
/**
* 签署任务详情查询
*/
public FxqExpertTaskEntity getTaskDetail(String taskNo, String unionId,FxqExpertTaskEntity fxqExpertTask){
GetTaskDetailResponse taskLink = fxqTask.getTaskDetail(taskNo,unionId);
public FxqExpertTaskEntity getTaskDetail(Long expertId){
// 获取企业实名认证数据-公司
LambdaQueryWrapper<FxqCompanyEntity> companyQueryWrapper = new LambdaQueryWrapper<>();
companyQueryWrapper.eq(FxqCompanyEntity::getUid, "bjyykxjsfzxh");
FxqCompanyEntity companyFxqCompany = fxqCompanyDao.selectOne(companyQueryWrapper);
if (companyFxqCompany == null) {
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("操作失败");
}
@ -411,7 +420,15 @@ public class ExpertFxqService {
}
// 修改状态
fxqExpertTask.setTaskStatus(taskLink.getData().getTaskStatus());
fxqExpertTask.setTaskStatus(String.valueOf(taskLink.getData().getTaskStatus()));
for (GetTaskDetailResponse.contractsData contract : taskLink.getData().getContracts() ){
// 修改文件地址
if (!Objects.equals(contract.getContractUrl(), fxqExpertTask.getTaskLink())){
fxqExpertTask.setTaskLink(contract.getContractUrl());
}
break;
}
fxqExpertTaskDao.updateById(fxqExpertTask);
return fxqExpertTask;
@ -426,13 +443,13 @@ public class ExpertFxqService {
// 获取签署任务数据
LambdaQueryWrapper<FxqExpertTaskEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(FxqExpertTaskEntity::getExpertId, expertId);
queryWrapper.in(FxqExpertTaskEntity::getTaskStatus, 0,10,20);
queryWrapper.in(FxqExpertTaskEntity::getTaskStatus, "0","10","20");
FxqExpertTaskEntity fxqExpertTask = fxqExpertTaskDao.selectOne(queryWrapper);
if (fxqExpertTask == null) {
return false;
}
if (fxqExpertTask.getTaskStatus() == 20){
if (Objects.equals(fxqExpertTask.getTaskStatus(), "20")){
return true;
}
@ -453,7 +470,7 @@ public class ExpertFxqService {
// 已签署
if (Objects.equals(fxqLink.getSignStatus(), "2")){
// 修改签署任务
fxqExpertTask.setTaskStatus(20);
fxqExpertTask.setTaskStatus("20");
fxqExpertTaskDao.updateById(fxqExpertTask);
return true;