上传下载调解书

This commit is contained in:
18792927508
2024-04-22 16:08:05 +08:00
parent e2c5fbf77d
commit 809e457480
14 changed files with 153 additions and 34 deletions
@@ -82,4 +82,9 @@ public class MsCaseAttach {
*/
@Column(name = "other_sys_file_id")
private String otherSysFileId;
/**
* 附件后缀
*/
@Column(name = "suffix")
private String suffix;
}
@@ -95,5 +95,9 @@ public class MsCaseApplicationVO extends MsCaseApplication {
* 是否财务,部门长,秘书,0-否,1-是
*/
private Integer otherFlag;
/**
* 调解书上传下载按钮权限,调解员,顾问在调节之后,送达之前显示,0-否,1-是
*/
private Integer mediationFileFlag=0;
}
@@ -47,6 +47,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.google.common.io.Files.getFileExtension;
import static com.ruoyi.common.utils.SecurityUtils.getUsername;
@Service
@@ -256,6 +257,7 @@ public class DeptIdentifyServiceImpl implements IDeptIdentifyService {
caseAttach.setAnnexType(AnnexTypeEnum.SEAL_PICTURE.getCode()); //10代表印章图片
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
caseAttach.setSuffix(getFileExtension(savePath));
int i1 = msCaseAttachMapper.save(caseAttach);
if (i1 > 0) {
//将附件id保存到公章管理表里
@@ -668,11 +670,5 @@ public class DeptIdentifyServiceImpl implements IDeptIdentifyService {
return ajax;
}
private String getFileExtension(String fileName) {
int lastDotIndex = fileName.lastIndexOf(".");
if (lastDotIndex > 0 && lastDotIndex < fileName.length() - 1) {
return fileName.substring(lastDotIndex + 1);
}
return "";
}
}
@@ -19,10 +19,10 @@ public interface IdentityAuthenticationService {
/**
* 获取Eidtoken
*
* isPC 是否PC端
* @return
*/
JSONObject selectIdentityAuthenticaEIDtoken();
JSONObject selectIdentityAuthenticaEIDtoken(boolean isPC);
/**
* 小程序人脸核身后查询身份认证结果
@@ -31,4 +31,10 @@ public interface IdentityAuthenticationService {
* @return
*/
AjaxResult selectIdentityAuthenticaRespon(IdentityAuthentication ientityAuthentication);
/**
* H5轮询获取EIDtoken状态
* @return
*/
JSONObject selectPCEIDtokenStatus(String eidToken);
}
@@ -8,6 +8,7 @@ import cn.hutool.crypto.symmetric.SymmetricCrypto;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.wisdomarbitrate.domain.dto.miniprogress.IdentityAuthentication;
import com.ruoyi.wisdomarbitrate.mapper.miniprogress.IdentityAuthenticationMapper;
@@ -39,6 +40,8 @@ public class IdentityAuthenticationServiceImpl implements IdentityAuthentication
private String credentialSecretKey;
@Value("${identityAuthentication.merchantId}")
private String merchantId;
@Value("${identityAuthentication.pcMerchantId}")
private String pcMerchantId;
@Value("${identityAuthentication.privateKeyHexDecodeinfo}")
private String privateKeyHexDecodeinfo;
@@ -87,7 +90,7 @@ public class IdentityAuthenticationServiceImpl implements IdentityAuthentication
* @return
*/
@Override
public JSONObject selectIdentityAuthenticaEIDtoken() {
public JSONObject selectIdentityAuthenticaEIDtoken(boolean isPC) {
JSONObject objJSON = new JSONObject();
objJSON.put("EidToken", "");
try {
@@ -102,7 +105,11 @@ public class IdentityAuthenticationServiceImpl implements IdentityAuthentication
FaceidClient client = new FaceidClient(cred, "", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
GetEidTokenRequest req = new GetEidTokenRequest();
req.setMerchantId(merchantId);
if(true){
req.setMerchantId(merchantId);
}else {
req.setMerchantId(pcMerchantId);
}
// 返回的resp是一个GetEidTokenResponse的实例,与请求对象对应
GetEidTokenResponse resp = client.GetEidToken(req);
// 输出json格式的字符串回包
@@ -138,7 +145,7 @@ public class IdentityAuthenticationServiceImpl implements IdentityAuthentication
}
/**
* 小程序人脸核身后查询身份认证结果
* 人脸核身后查询身份认证结果
*
* @param ientityAuthentication
* @return
@@ -224,7 +231,32 @@ public class IdentityAuthenticationServiceImpl implements IdentityAuthentication
return AjaxResult.success();
}
@Override
public JSONObject selectPCEIDtokenStatus(String eidToken) {
JSONObject objJSON = null;
try {
Credential cred = new Credential(credentialSecretId, credentialSecretKey);
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("faceid.tencentcloudapi.com");
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 实例化要请求产品的client对象,clientProfile是可选的
FaceidClient client = new FaceidClient(cred, "", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
GetEidResultRequest req = new GetEidResultRequest();
req.setEidToken(eidToken);
// 返回的resp是一个GetEidResultResponse的实例,与请求对象对应
GetEidResultResponse resp = client.GetEidResult(req);
// 输出json格式的字符串回包,Status String 枚举:init:token未验证 doing: 验证中 finished: 验证完成 timeout: token已超时
String s = GetEidResultResponse.toJsonString(resp);
objJSON = JSON.parseObject(s);
} catch (TencentCloudSDKException e) {
throw new ServiceException("获取E证通Token状态失败");
}
return objJSON;
}
}
@@ -79,6 +79,7 @@ import java.util.concurrent.ExecutorService;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.google.common.io.Files.getFileExtension;
import static com.ruoyi.common.utils.BookMarkUtil.getBookmarkByDocx;
import static com.ruoyi.common.utils.PageUtils.startPage;
import static com.ruoyi.common.utils.SecurityUtils.getUsername;
@@ -193,8 +194,13 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
*/
@Override
public List<MsCaseApplicationVO> list(MsCaseApplicationReq req) {
// 是否调解员
boolean isMediatorRole=false;
// 查询所有流程
Example allFlowExample = new Example(MsCaseFlow.class);
allFlowExample.setOrderByClause("sort asc");
List<MsCaseFlow> allCaseFlows = caseFlowMapper.selectByExample(allFlowExample);
if (CollectionUtil.isEmpty(allCaseFlows)) {
throw new ServiceException("未配置案件流程");
}
// 根据用户查询角色
LoginUser loginUser = SecurityUtils.getLoginUser();
// 根据id查询用户
@@ -205,7 +211,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
startPage();
List<MsCaseApplicationVO> list = msCaseApplicationMapper.list(req, null,null);
// 设置申请人被申请人及签名按钮限
setAfflicate(isMediatorRole,list,loginUser.getUserId(),roles);
setAfflicate(new HashMap<>(),list,loginUser.getUserId(),roles);
return list;
}
if(CollectionUtil.isEmpty(roles) ){
@@ -227,6 +233,9 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
throw new ServiceException("该角色为绑定案件流程");
}
List<Integer> caseFlowIds = caseFlows.stream().map(MsCaseFlow::getId).collect(Collectors.toList());
// 流程名称分组
Map<String, Integer> flowNameMap = allCaseFlows.stream().collect(Collectors.toMap(MsCaseFlow::getCaseStatusName, MsCaseFlow::getSort, (k1, k2) -> k2));
// 是否查询所有
boolean isSelectAll = false;
@@ -240,7 +249,6 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
roleIds=null;
}
if(StrUtil.equals(role.getRoleName(),"调解员")) {
isMediatorRole=true;
req.setMediatorId(String.valueOf(sysUser.getUserId()));
}
}
@@ -257,25 +265,26 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
// 查询案件列表
List<MsCaseApplicationVO> list = msCaseApplicationMapper.list(req, caseFlowIds,roleIds);
// 设置申请人被申请人及签名按钮限
setAfflicate(isMediatorRole,list,loginUser.getUserId(),roles);
setAfflicate(flowNameMap,list,loginUser.getUserId(),roles);
return list;
}
/**
* 设置申请人被申请人及签名按钮限
* @param isMediatorRole 是否调解员
* @param
* @param list
* @param loginUserId 当前登录用户id
*/
private void setAfflicate(boolean isMediatorRole,List<MsCaseApplicationVO> list,Long loginUserId, List<SysRole> roles ) {
private void setAfflicate( Map<String, Integer> flowNameMap,List<MsCaseApplicationVO> list,Long loginUserId, List<SysRole> roles ) {
if(CollectionUtil.isEmpty(list)){
return;
}
isMediatorRole=false;
// 是否调解员
boolean isMediatorRole=false;
// 查询申请人和被申请人
List<Long> caseIds = list.stream().map(MsCaseApplicationVO::getId).collect(Collectors.toList());
Integer mediatorSort = flowNameMap.get("待调解");
Integer sendSort = flowNameMap.get("待送达");
List<MsCaseAffiliate> affiliateList = msCaseAffiliateMapper.selectUserRoleByCaseIds(caseIds);
// 根据案件id分组
Map<Long, List<MsCaseAffiliate>> affiliateMap=null;
@@ -362,6 +371,13 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
}else {
vo.setSignButtonFlag(0);
}
// 调解员,并且在待调节后,送达前,显示
if(mediatorSort!=null && sendSort!=null && isMediatorRole
&& null!=flowNameMap.get(vo.getCaseStatusName())
&& flowNameMap.get(vo.getCaseStatusName())>mediatorSort
&& flowNameMap.get(vo.getCaseStatusName())<=sendSort){
vo.setMediationFileFlag(1);
}
for (SysRole role : roles) {
if(StrUtil.isNotEmpty(role.getRoleName())){
if(StrUtil.contains(role.getRoleName(),"财务")
@@ -371,6 +387,10 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
){
vo.setOtherFlag(1);
}
if(role.getRoleName().equals("法律顾问")){
// 顾问可以上传下载调解书
vo.setMediationFileFlag(1);
}
}
}
@@ -413,6 +433,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
if (CollectionUtil.isEmpty(allCaseFlows)) {
throw new ServiceException("未配置案件流程");
}
List<MsCaseFlow> caseFlows = allCaseFlows;
MsCaseApplicationReq req = new MsCaseApplicationReq();
if (StrUtil.equals(SecurityUtils.getUsername(), "admin")) {
@@ -690,6 +711,9 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
if (CollectionUtil.isNotEmpty(caseAttachList)) {
for (MsCaseAttach caseAttach : caseAttachList) {
caseAttach.setCaseAppliId(caseApplication.getId());
if(StrUtil.isNotEmpty(caseAttach.getAnnexPath())){
caseAttach.setSuffix(getFileExtension(caseAttach.getAnnexPath()));
}
}
if(!caseApplication.isImportFlag()) {
// 修改案件附件
@@ -1522,6 +1546,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
.annexType(annexType)
.useId(SecurityUtils.getUserId())
.useAccount(SecurityUtils.getUsername())
.suffix(getFileExtension(path))
.build();
int count = msCaseAttachMapper.save(caseAttach);
if (count > 0 ) {
@@ -2399,7 +2424,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
@Override
public AjaxResult saveOnlyOfficeFile(MsCaseAttach caseAttach) {
if(StrUtil.isEmpty(caseAttach.getAnnexName())) {
caseAttach.setAnnexName("调解书");
caseAttach.setAnnexName("调解书.docx");
}
if(StrUtil.isNotEmpty(caseAttach.getAnnexPath())) {
String replace = caseAttach.getAnnexPath().replace("/home/ruoyi/uploadPath", "/profile");
@@ -2408,6 +2433,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
caseAttach.setAnnexType(AnnexTypeEnum.MEDIATE_BOOK.getCode());
caseAttach.setUseId(getUserInfo().getUserId());
caseAttach.setUseAccount(getUserInfo().getUserName());
caseAttach.setSuffix(getFileExtension(caseAttach.getAnnexPath()));
// 先删除之前的在新增
msCaseAttachMapper.deleteCaseAttachByCasedIdAndType(caseAttach.getCaseAppliId(), caseAttach.getAnnexType());
msCaseAttachMapper.save(caseAttach);
@@ -2415,6 +2441,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
return AjaxResult.success();
}
/**
* 查询预约信息
* @param id
@@ -3434,6 +3461,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
}
}
caseAttach.setSuffix(getFileExtension(caseAttach.getAnnexPath()));
//保存到附件表里,先删除之前的在保存
msCaseAttachMapper.deleteCaseAttachByCasedIdAndType(caseAttach.getCaseAppliId(), annexType);
@@ -3471,6 +3499,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
caseAttach.setOtherSysFileId(caseFileInfo.getFileId());
}
}
caseAttach.setSuffix(getFileExtension(caseAttach.getAnnexPath()));
msCaseAttachMapper.save(caseAttach);
}
@@ -3479,6 +3508,8 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
}
/**
* 调解书上传到onlyoffice服务器
* @param annexPath
@@ -76,6 +76,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
import static com.google.common.io.Files.getFileExtension;
import static com.ruoyi.common.core.domain.AjaxResult.success;
@Slf4j
@Service
@@ -1144,6 +1145,7 @@ public class MsSignSealServiceImpl implements MsSignSealService {
caseAttach.setAnnexType(AnnexTypeEnum.MEDIATE_BOOK.getCode());
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
caseAttach.setSuffix(getFileExtension(caseAttach.getAnnexPath()));
log.info("调解书保存======="+downLoadFile);
caseAttachMapper.save(caseAttach);
// 对接北明,调用上传附件接口
@@ -1225,6 +1227,7 @@ public class MsSignSealServiceImpl implements MsSignSealService {
caseAttach.setAnnexType(AnnexTypeEnum.SEAL_PICTURE.getCode()); //10代表印章图片
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
caseAttach.setSuffix(getFileExtension(caseAttach.getAnnexPath()));
int i1 = caseAttachMapper.save(caseAttach);
if (i1 > 0) {
//将附件id保存到公章管理表里
@@ -59,6 +59,7 @@ import java.nio.file.Paths;
import java.util.*;
import java.util.stream.Collectors;
import static com.google.common.io.Files.getFileExtension;
import static com.ruoyi.common.core.domain.AjaxResult.error;
import static com.ruoyi.common.core.domain.AjaxResult.success;
import static com.ruoyi.common.utils.file.FileUploadUtils.getAbsoluteFile;
@@ -554,6 +555,7 @@ public class VideoConferenceServiceImpl implements VideoConferenceService {
caseAttach.setOtherSysFileId(caseFileInfo.getFileId());
}
}
caseAttach.setSuffix(getFileExtension(caseAttach.getAnnexPath()));
caseAttachMapper.save(caseAttach);
return AjaxResult.success();
}else {
@@ -607,6 +609,7 @@ public class VideoConferenceServiceImpl implements VideoConferenceService {
caseAttach.setOtherSysFileId(caseFileInfo.getFileId());
}
}
caseAttach.setSuffix(getFileExtension(caseAttach.getAnnexPath()));
caseAttachMapper.save(caseAttach);
return annexName;
@@ -36,6 +36,8 @@ import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import static com.google.common.io.Files.getFileExtension;
@Component
public class FixSelectFlowDetailUtils {
@Autowired
@@ -121,6 +123,7 @@ public class FixSelectFlowDetailUtils {
caseAttach.setAnnexType(AnnexTypeEnum.SEAL_PICTURE.getCode()); //10代表印章图片
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
caseAttach.setSuffix(getFileExtension(caseAttach.getAnnexPath()));
int i1 = caseAttachMapper.save(caseAttach);
if (i1 > 0) {
//将印章信息保存到公章管理表里
@@ -217,6 +220,7 @@ public class FixSelectFlowDetailUtils {
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
int i1 = caseAttachMapper.save(caseAttach);
caseAttach.setSuffix(getFileExtension(caseAttach.getAnnexPath()));
if (i1 > 0) {
//将附件id保存到公章管理表里
Long annexId1 = caseAttach.getAnnexId();
@@ -15,18 +15,19 @@
<result property="useAccount" column="use_account" />
<result property="onlyOfficeFileId" column="only_office_file_id" />
<result property="otherSysFileId" column="other_sys_file_id" />
<result property="suffix" column="suffix" />
</resultMap>
<insert id="save" useGeneratedKeys="true" keyProperty="annexId">
INSERT INTO ms_case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,only_office_file_id)
VALUES (#{caseAppliId}, #{annexName}, #{annexPath},#{annexType},#{note},#{useId},#{useAccount},#{sealStatus},#{onlyOfficeFileId})
INSERT INTO ms_case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,only_office_file_id,suffix)
VALUES (#{caseAppliId}, #{annexName}, #{annexPath},#{annexType},#{note},#{useId},#{useAccount},#{sealStatus},#{onlyOfficeFileId},#{suffix})
</insert>
<insert id="batchSave" useGeneratedKeys="true" keyProperty="annexId">
INSERT INTO ms_case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,only_office_file_id)
INSERT INTO ms_case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,only_office_file_id,suffix)
VALUES
<foreach item="item" index="index" collection="list" separator=",">
(#{item.caseAppliId}, #{item.annexName}, #{item.annexPath},#{item.annexType},#{item.note},#{item.useId},#{item.useAccount},#{item.sealStatus},#{item.onlyOfficeFileId})
(#{item.caseAppliId}, #{item.annexName}, #{item.annexPath},#{item.annexType},#{item.note},#{item.useId},#{item.useAccount},#{item.sealStatus},#{item.onlyOfficeFileId},#{item.suffix})
</foreach>
</insert>
<delete id="deleteByFileIds">