From fd7f4259ce66b83579f1e06bed5831fa005e5ba4 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 1 Jul 2025 08:55:10 +0800 Subject: [PATCH] 1111 --- .../task/GetTaskDetailResponse.java | 14 ++ .../controller/ExpertFxqController.java | 46 +++++- .../domain/entity/FxqExpertTaskEntity.java | 4 +- .../app/expert/service/ExpertFxqService.java | 131 ++++++++++-------- 4 files changed, 129 insertions(+), 66 deletions(-) diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/task/GetTaskDetailResponse.java b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/task/GetTaskDetailResponse.java index 5aa6ebb..6a82131 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/task/GetTaskDetailResponse.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/task/GetTaskDetailResponse.java @@ -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 signers; } } diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/controller/ExpertFxqController.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/controller/ExpertFxqController.java index eb4e6ba..04e5f7d 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/controller/ExpertFxqController.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/controller/ExpertFxqController.java @@ -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); } } diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/entity/FxqExpertTaskEntity.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/entity/FxqExpertTaskEntity.java index f1f5758..82caf7a 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/entity/FxqExpertTaskEntity.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/entity/FxqExpertTaskEntity.java @@ -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; /** diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/service/ExpertFxqService.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/service/ExpertFxqService.java index 69f1d8d..99d98c7 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/service/ExpertFxqService.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/service/ExpertFxqService.java @@ -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 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 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 companyQueryWrapper = new LambdaQueryWrapper<>(); + companyQueryWrapper.eq(FxqCompanyEntity::getUid, "bjyykxjsfzxh"); + FxqCompanyEntity companyFxqCompany = fxqCompanyDao.selectOne(companyQueryWrapper); + if (companyFxqCompany == null) { + throw new BusinessException("操作失败"); + } + + // 获取签署任务 + LambdaQueryWrapper 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 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;