Merge branch 'wq' of SH-Arbitrate/Arbitrate-Backend into dev

This commit was merged in pull request #354.
This commit is contained in:
2024-05-11 15:22:28 +08:00
committed by Gitea
21 changed files with 406 additions and 48 deletions
@@ -4,14 +4,15 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
import com.ruoyi.wisdomarbitrate.domain.CaseAttach;
import com.ruoyi.wisdomarbitrate.mapper.CaseAttachMapper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
@@ -36,6 +37,8 @@ public class CommonController
private ServerConfig serverConfig; private ServerConfig serverConfig;
private static final String FILE_DELIMETER = ","; private static final String FILE_DELIMETER = ",";
@Autowired
CaseAttachMapper caseAttachMapper;
/** /**
* 通用下载请求 * 通用下载请求
@@ -160,4 +163,22 @@ public class CommonController
log.error("下载文件失败", e); log.error("下载文件失败", e);
} }
} }
/**
* 根据案件id获取附件
* @param caseAppliId
* @param annexTypeList
* @param
* @return
*/
@GetMapping("/fileList")
public AjaxResult fileList(@RequestParam("caseAppliId")Long caseAppliId, @RequestParam(value = "annexTypeList",required = false) List<Integer> annexTypeList){
if(caseAppliId==null){
return AjaxResult.error("案件id不能为空");
}
CaseApplication msCaseApplicationVO = new CaseApplication();
msCaseApplicationVO.setId(caseAppliId);
msCaseApplicationVO.setAnnexTypeList(annexTypeList);
List<CaseAttach> caseAttachList = caseAttachMapper.queryCaseAttachList(msCaseApplicationVO);
return AjaxResult.success(caseAttachList);
}
} }
@@ -139,4 +139,13 @@ public class SysMenuController extends BaseController
} }
return toAjax(menuService.deleteMenuById(menuId)); return toAjax(menuService.deleteMenuById(menuId));
} }
/**
* 根据用户查询菜单权限字符
*/
@GetMapping("/getMenuPermsByUser")
public AjaxResult getMenuPermsByUser()
{
return menuService.getMenuPermsByUser();
}
} }
@@ -152,7 +152,7 @@ public class CaseApplicationController extends BaseController {
} }
/** /**
* 查询立案信息 * 查询立案详情
*/ */
// @PreAuthorize("@ss.hasPermi('caseManagement:list:detail')") // @PreAuthorize("@ss.hasPermi('caseManagement:list:detail')")
@PostMapping("/selectCaseApplication") @PostMapping("/selectCaseApplication")
@@ -161,6 +161,18 @@ public class CaseApplicationController extends BaseController {
CaseApplication caseApplicationselect = caseApplicationService.selectCaseApplication(caseApplication); CaseApplication caseApplicationselect = caseApplicationService.selectCaseApplication(caseApplication);
return success(caseApplicationselect); return success(caseApplicationselect);
} }
/**
* 视频会议中查询立案详情
*/
// @PreAuthorize("@ss.hasPermi('caseManagement:list:detail')")
@GetMapping("/selectById")
public AjaxResult selectById(@RequestParam(required = false) Long id ,@RequestParam(required = false) String caseNum) {
CaseApplication caseApplication = new CaseApplication();
caseApplication.setId(id);
caseApplication.setCaseNum(caseNum);
CaseApplication caseApplicationselect = caseApplicationService.selectCaseApplication(caseApplication);
return success(caseApplicationselect);
}
/** /**
* 查询已签署裁决书URL * 查询已签署裁决书URL
@@ -460,9 +472,12 @@ public class CaseApplicationController extends BaseController {
* @param arbitrateRecord * @param arbitrateRecord
* @return * @return
*/ */
@PostMapping("/creatTrialRecordnew") @PostMapping("/confirmMeetingResult")
// @PreAuthorize("@ss.hasPermi('caseManagement:list:creatTrialRecord')") // @PreAuthorize("@ss.hasPermi('caseManagement:list:creatTrialRecord')")
public AjaxResult creatTrialRecordnew(@Validated @RequestBody ArbitrateRecord arbitrateRecord){ public AjaxResult creatTrialRecordnew( @RequestBody ArbitrateRecord arbitrateRecord){
if(arbitrateRecord.getCaseAppliId()==null || arbitrateRecord.getAppliIsAbsen()==null || arbitrateRecord.getIsAbsence()==null){
return error("参数校验失败");
}
return caseApplicationService.creatTrialRecordnew(arbitrateRecord); return caseApplicationService.creatTrialRecordnew(arbitrateRecord);
} }
@@ -2,13 +2,23 @@ package com.ruoyi.web.controller.wisdomarbitrate;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.framework.config.ServerConfig;
import com.ruoyi.wisdomarbitrate.domain.CaseAttach;
import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication; import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication;
import com.ruoyi.wisdomarbitrate.domain.vo.ReservedConferenceVO; import com.ruoyi.wisdomarbitrate.domain.vo.ReservedConferenceVO;
import com.ruoyi.wisdomarbitrate.domain.vo.SendRoomNoMessageVO; import com.ruoyi.wisdomarbitrate.domain.vo.SendRoomNoMessageVO;
import com.ruoyi.wisdomarbitrate.domain.vo.WeChatUserVO; import com.ruoyi.wisdomarbitrate.domain.vo.WeChatUserVO;
import com.ruoyi.wisdomarbitrate.mapper.CaseAttachMapper;
import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService;
import com.ruoyi.wisdomarbitrate.service.VideoService; import com.ruoyi.wisdomarbitrate.service.VideoService;
import com.ruoyi.wisdomarbitrate.service.WeChatUserService; import com.ruoyi.wisdomarbitrate.service.WeChatUserService;
import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.Credential;
@@ -25,6 +35,9 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.util.Objects;
import static com.google.common.io.Files.getFileExtension;
/** /**
* @author wangqiong * @author wangqiong
@@ -36,7 +49,12 @@ import java.io.IOException;
public class VideoController extends BaseController { public class VideoController extends BaseController {
@Autowired @Autowired
private VideoService videoService; private VideoService videoService;
@Autowired
private ServerConfig serverConfig;
@Autowired
private CaseAttachMapper caseAttachMapper;
@Autowired
private ICaseApplicationService caseApplicationService;
/** /**
* 从腾讯云下载文件到本地 * 从腾讯云下载文件到本地
* @param * @param
@@ -144,6 +162,117 @@ public class VideoController extends BaseController {
return videoService.attachListByCaseId(caseAppliId,annexType); return videoService.attachListByCaseId(caseAppliId,annexType);
} }
/**
* 根据案件id查询申请人/被申请人会议上传附件按钮权限
* @param caseId
* @return
*/
@Anonymous
@GetMapping("selectRoleMenuByCaseId")
public AjaxResult selectRoleMenuByCaseId( @RequestParam(value = "caseId",required = true) Long caseId) {
return videoService.selectRoleMenuByCaseId(caseId);
}
/**
* 通用上传请求(单个)
* param officeFlag: 是否上传到onlyoffice,0-否,1-是
* param isMediaBook: 是否上仲裁书,1-是,其余为否
*/
@PostMapping("/upload")
public AjaxResult uploadFile(@RequestParam("file") MultipartFile file, @RequestParam(value = "isMediaBook",required = false) Integer isMediaBook, @RequestParam("annexType") Integer annexType, @RequestParam(value = "officeFlag", required = false) Integer officeFlag,@RequestParam(value = "caseId",required = false) Long caseId) throws Exception
{
try
{
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
String suffix = getFileExtension(fileName);
if(StrUtil.isNotEmpty(suffix)&& suffix.contains("doc")){
// 上传到onlyoffice
officeFlag=1;
}
String url = serverConfig.getUrl() + fileName;
if(officeFlag != null && officeFlag == 1){
// officeFlag,fileName为annexPath
JSONArray jsonArray = caseApplicationService.uploadOnlyOffice(fileName,caseId);
if(jsonArray!=null && jsonArray.size() > 0) {
// 先删除之前的裁决书附件
if(Objects.equals(annexType,3) && caseId!=null) {
caseAttachMapper.deleteCaseAttachByCasedIdAndType(caseId, annexType);
}
CaseAttach caseAttach=null;
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
caseAttach = CaseAttach.builder()
.caseAppliId(caseId)
.annexName(jsonObject.get("fileName")!=null?jsonObject.getString("fileName"):"")
.annexType(annexType)
.onlyOfficeFileId(jsonObject.getString("fileId"))
.build();
if(jsonObject.get("filePath")!=null){
String officePath = jsonObject.getString("filePath");
String replace = officePath.replace("/home/ruoyi/uploadPath/", "/profile/");
caseAttach.setAnnexPath(replace);
}
caseAttachMapper.save(caseAttach);
}
if(caseAttach==null){
return AjaxResult.error("上传失败");
}
AjaxResult ajax = AjaxResult.success();
ajax.put("annexId", caseAttach.getAnnexId());
ajax.put("annexType", annexType);
// ajax.put("url", url);
ajax.put("fileName", fileName);
ajax.put("newFileName", FileUtils.getName(fileName));
ajax.put("originalFilename", file.getOriginalFilename());
return ajax;
}else {
return AjaxResult.error("上传失败");
}
}else {
// 如果是调解书并且是pdf,则删除之前的在新增
// if(isMediaBook != null && isMediaBook == 1 ){
// if(StrUtil.isNotEmpty(suffix)&&!suffix.equals("pdf")){
// return AjaxResult.error("请上传pdf格式文件");
// }
// annexType=AnnexTypeEnum.MEDIATE_BOOK_PDF.getCode();
// // 先删除之前的附件
// if(caseId!=null) {
// msCaseAttachMapper.deleteCaseAttachByCasedIdAndType(caseId, annexType);
// }
// }
Long annexId = saveCaseAttach(annexType, fileName, file.getOriginalFilename(), caseId);
AjaxResult ajax = AjaxResult.success();
ajax.put("annexId", annexId);
ajax.put("annexType", annexType);
ajax.put("url", url);
ajax.put("fileName", fileName);
ajax.put("newFileName", FileUtils.getName(fileName));
ajax.put("originalFilename", file.getOriginalFilename());
return ajax;
}
}
catch (Exception e)
{
return AjaxResult.error(e.getMessage());
}
}
private Long saveCaseAttach(Integer annexType, String path, String originalFilename,Long caseId) {
CaseAttach caseAttach = CaseAttach.builder()
.annexName(originalFilename)
.caseAppliId(caseId)
.annexPath(path)
.annexType(annexType)
.userId(SecurityUtils.getUserId())
.userName(SecurityUtils.getUsername())
.build();
caseAttachMapper.save(caseAttach);
return caseAttach.getAnnexId();
}
} }
@@ -2,6 +2,8 @@ package com.ruoyi.system.service;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.common.core.domain.entity.SysMenu;
import com.ruoyi.system.domain.vo.RouterVo; import com.ruoyi.system.domain.vo.RouterVo;
@@ -141,4 +143,9 @@ public interface ISysMenuService
* @return 结果 * @return 结果
*/ */
public boolean checkMenuNameUnique(SysMenu menu); public boolean checkMenuNameUnique(SysMenu menu);
/**
* 根据用户查询菜单权限字符
* @return
*/
AjaxResult getMenuPermsByUser();
} }
@@ -8,6 +8,8 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
@@ -528,4 +530,11 @@ public class SysMenuServiceImpl implements ISysMenuService
return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, "." }, return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, "." },
new String[] { "", "", "", "/" }); new String[] { "", "", "", "/" });
} }
@Override
public AjaxResult getMenuPermsByUser() {
AjaxResult result = AjaxResult.success();
List<String> perms = menuMapper.selectMenuPermsByUserId(SecurityUtils.getUserId());
result.put("perms",perms);
return result;
}
} }
@@ -62,7 +62,7 @@ public class ArbitrateRecord extends BaseEntity {
*/ */
private String caseCheckReject; private String caseCheckReject;
/** /**
* 仲裁员确认裁决书驳回 * 裁决书驳回原因
*/ */
private String arbitrateReject; private String arbitrateReject;
/** /**
@@ -433,7 +433,11 @@ public class CaseApplication extends BaseEntity {
// 缴费确认驳回原因 // 缴费确认驳回原因
private String payRejectReason; private String payRejectReason;
/** /**
* 仲裁员确认裁决书驳回 * 仲裁员确认裁决书驳回原因
*/ */
private String arbitrateReject; private String arbitrateReject;
/**
* deptorReject:部门长驳回原因
*/
private String deptorReject;
} }
@@ -23,6 +23,10 @@ public class CaseAttach {
* 案件记录id * 案件记录id
*/ */
private Long caseAppliLogId; private Long caseAppliLogId;
/**
* onlyOffice附件id
*/
private String onlyOfficeFileId;
/** /**
* 附件名称 * 附件名称
*/ */
@@ -1,5 +1,6 @@
package com.ruoyi.wisdomarbitrate.service; package com.ruoyi.wisdomarbitrate.service;
import com.alibaba.fastjson.JSONArray;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.EsignDemoException; import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.wisdomarbitrate.domain.*; import com.ruoyi.wisdomarbitrate.domain.*;
@@ -155,4 +156,9 @@ public interface ICaseApplicationService {
AjaxResult arbitratorCheckArbitrateRecordBatch(CaseApplication caseApplication); AjaxResult arbitratorCheckArbitrateRecordBatch(CaseApplication caseApplication);
AjaxResult checkArbitrateRecordBatch(CaseApplication caseApplication); AjaxResult checkArbitrateRecordBatch(CaseApplication caseApplication);
/**
* 附件上传到onlyoffice服务器
* @param annexPath
*/
JSONArray uploadOnlyOffice(String annexPath, Long id);
} }
@@ -55,4 +55,5 @@ public interface VideoService {
* @return * @return
*/ */
AjaxResult attachListByCaseId(Long caseAppliId, Integer annexType); AjaxResult attachListByCaseId(Long caseAppliId, Integer annexType);
AjaxResult selectRoleMenuByCaseId(Long caseId);
} }
@@ -3,6 +3,7 @@ package com.ruoyi.wisdomarbitrate.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.deepoove.poi.data.PictureRenderData; import com.deepoove.poi.data.PictureRenderData;
import com.google.gson.Gson; import com.google.gson.Gson;
@@ -39,6 +40,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailSendException; import org.springframework.mail.MailSendException;
import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -59,6 +61,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.google.common.io.Files.getFileExtension;
import static com.ruoyi.common.utils.SecurityUtils.getUsername; import static com.ruoyi.common.utils.SecurityUtils.getUsername;
import static com.ruoyi.wisdomarbitrate.utils.CaseLogUtils.insertCaseLog; import static com.ruoyi.wisdomarbitrate.utils.CaseLogUtils.insertCaseLog;
@@ -66,7 +69,8 @@ import static com.ruoyi.wisdomarbitrate.utils.CaseLogUtils.insertCaseLog;
@Slf4j @Slf4j
public class AdjudicationServiceImpl implements IAdjudicationService { public class AdjudicationServiceImpl implements IAdjudicationService {
private final String apiUrl = "http://api.cainiaoapi.com/api/exp/v1/index"; private final String apiUrl = "http://api.cainiaoapi.com/api/exp/v1/index";
@Value("${onlyOfficeConfig.url}")
private String onlyOfficeUrl;
@Autowired @Autowired
private CaseApplicationMapper caseApplicationMapper; private CaseApplicationMapper caseApplicationMapper;
@Autowired @Autowired
@@ -252,10 +256,37 @@ public class AdjudicationServiceImpl implements IAdjudicationService {
// String saveName = "D:/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day + "/" + fileName; // String saveName = "D:/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day + "/" + fileName;
// 将word中的标签替换掉,生成新的word // 将word中的标签替换掉,生成新的word
String docFilePath = wordChangeText(templatePath, datas, saveFolderPath, fileName); String docFilePath = wordChangeText(templatePath, datas, saveFolderPath, fileName);
String annexPath=saveName.replace("/profile/upload/","/home/ruoyi/uploadPath/upload/");
// 上传到onlyoffice
JSONArray jsonArray = caseApplicationService.uploadOnlyOffice(annexPath,caseApplicationReq.getId());
CaseAttach caseAttach=null;
if(jsonArray!=null && jsonArray.size() > 0){
String savePath = docFilePath.substring(0, docFilePath.indexOf("/upload/") + 8); for (Object obj : jsonArray) {
// 保存裁决书附件 JSONObject jsonObject = (JSONObject) obj;
saveArbitorFile(id, saveName, savePath, caseApplicationById, arbitrateRecordSelect,CaseApplicationConstants.VERPRIF_ARBITRATION); caseAttach= CaseAttach.builder()
.caseAppliId(caseApplicationReq.getId())
.annexName(jsonObject.getString("fileName"))
.annexPath("/home/ruoyi/uploadPath/onlyoffice/")
.annexType(3)
.onlyOfficeFileId(jsonObject.getString("fileId"))
.build();
if(jsonObject.get("filePath")!=null){
String officePath = jsonObject.getString("filePath");
String replace = officePath.replace("/home/ruoyi/uploadPath/", "/profile/");
caseAttach.setAnnexName(replace);
}
}
}
if(caseAttach!=null) {
// 保存裁决书附件
saveArbitorFile(caseAttach, caseApplicationById, arbitrateRecordSelect, CaseApplicationConstants.VERPRIF_ARBITRATION);
}else {
return AjaxResult.error("上传onlyoffice服务器失败");
}
return AjaxResult.success("裁决书已生成"); return AjaxResult.success("裁决书已生成");
} catch (IOException e) { } catch (IOException e) {
@@ -564,15 +595,11 @@ public class AdjudicationServiceImpl implements IAdjudicationService {
/** /**
* 保存裁决书附件 * 保存裁决书附件
* *
* @param id 案件id
* @param saveName 保存的文件名
* @param savePath 保存路径
* @param caseApplicationById 案件基本信息 * @param caseApplicationById 案件基本信息
* @param arbitrateRecordSelect 出裁决书生成记录 * @param arbitrateRecordSelect 出裁决书生成记录
* @param caseStatus 案件状态,不为空则更新案件状态 * @param caseStatus 案件状态,不为空则更新案件状态
*/ */
private void saveArbitorFile(Long id, String saveName, String savePath, CaseApplication caseApplicationById, ArbitrateRecord arbitrateRecordSelect,Integer caseStatus) { private void saveArbitorFile( CaseAttach caseAttach, CaseApplication caseApplicationById, ArbitrateRecord arbitrateRecordSelect,Integer caseStatus) {
CaseAttach caseAttach = CaseAttach.builder().caseAppliId(id).annexName(saveName).annexPath(savePath).annexType(3).build();
//保存到附件表里,先判断之前有没有,有的话更新,没有的话新增 //保存到附件表里,先判断之前有没有,有的话更新,没有的话新增
List<CaseAttach> caseAttachList = caseAttachMapper.getCaseAttachByCaseIdAndType(caseAttach); List<CaseAttach> caseAttachList = caseAttachMapper.getCaseAttachByCaseIdAndType(caseAttach);
if (caseAttachList != null && caseAttachList.size() > 0) { if (caseAttachList != null && caseAttachList.size() > 0) {
@@ -1903,10 +1930,37 @@ public class AdjudicationServiceImpl implements IAdjudicationService {
} catch (IOException e) { } catch (IOException e) {
throw new ServiceException("生成裁决书失败"); throw new ServiceException("生成裁决书失败");
} }
String annexPath=saveName.replace("/profile/upload/","/home/ruoyi/uploadPath/upload/");
// 上传到onlyoffice
JSONArray jsonArray = caseApplicationService.uploadOnlyOffice(annexPath,req.getId());
CaseAttach caseAttach=null;
if(jsonArray!=null && jsonArray.size() > 0){
String savePath = docFilePath.substring(0, docFilePath.indexOf("/upload/") + 8); for (Object obj : jsonArray) {
// 保存裁决书附件 JSONObject jsonObject = (JSONObject) obj;
saveArbitorFile(req.getId(), saveName, savePath, caseApplicationById, arbitrateRecordSelect,null); caseAttach= CaseAttach.builder()
.caseAppliId(req.getId())
.annexName(jsonObject.getString("fileName"))
.annexPath("/home/ruoyi/uploadPath/onlyoffice/")
.annexType(3)
.onlyOfficeFileId(jsonObject.getString("fileId"))
.build();
if(jsonObject.get("filePath")!=null){
String officePath = jsonObject.getString("filePath");
String replace = officePath.replace("/home/ruoyi/uploadPath/", "/profile/");
caseAttach.setAnnexName(replace);
}
}
}
if(caseAttach!=null) {
// 保存裁决书附件
saveArbitorFile(caseAttach, caseApplicationById, arbitrateRecordSelect, null);
}else {
return AjaxResult.error("上传onlyoffice服务器失败");
}
return AjaxResult.success(); return AjaxResult.success();
} }
@@ -4,6 +4,7 @@ package com.ruoyi.wisdomarbitrate.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson; import com.google.gson.Gson;
@@ -78,6 +79,8 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
// 腾讯云即时通信密钥 // 腾讯云即时通信密钥
@Value("${imConfig.sdkSecretKey}") @Value("${imConfig.sdkSecretKey}")
private String sdkSecretKey; private String sdkSecretKey;
@Value("${onlyOfficeConfig.url}")
private String onlyOfficeUrl;
@Autowired @Autowired
private CaseApplicationMapper caseApplicationMapper; private CaseApplicationMapper caseApplicationMapper;
@@ -637,8 +640,8 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
allCaseNode.add(getLastNodeRecord(null, "核验裁决书", 11, "法律顾问将核验裁决书","下一节点角色:仲裁员")); allCaseNode.add(getLastNodeRecord(null, "核验裁决书", 11, "法律顾问将核验裁决书","下一节点角色:仲裁员"));
allCaseNode.add(getLastNodeRecord(null, "仲裁员审核裁决书", 18, "仲裁员将审核裁决书","下一节点角色:部门长")); allCaseNode.add(getLastNodeRecord(null, "仲裁员审核裁决书", 18, "仲裁员将审核裁决书","下一节点角色:部门长"));
allCaseNode.add(getLastNodeRecord(null, "部门长审核裁决书", 12, "部门长将审核裁决书","下一节点角色:仲裁员")); allCaseNode.add(getLastNodeRecord(null, "部门长审核裁决书", 12, "部门长将审核裁决书","下一节点角色:仲裁员"));
allCaseNode.add(getLastNodeRecord(null, "裁决书签名", 13, "仲裁员将进行裁决书签名","下一节点角色:部门长")); allCaseNode.add(getLastNodeRecord(null, "裁决书签名", 13, "仲裁员将进行裁决书签名","下一节点角色:法律顾问"));
allCaseNode.add(getLastNodeRecord(null, "裁决书用印", 14, "部门长将进行裁决书用印","下一节点角色:法律顾问")); allCaseNode.add(getLastNodeRecord(null, "裁决书用印", 14, "法律顾问将进行裁决书用印","下一节点角色:法律顾问"));
allCaseNode.add(getLastNodeRecord(null, "裁决书送达", 15, "法律顾问将送达裁决书","下一节点角色:法律顾问")); allCaseNode.add(getLastNodeRecord(null, "裁决书送达", 15, "法律顾问将送达裁决书","下一节点角色:法律顾问"));
allCaseNode.add(getLastNodeRecord(null, "案件归档", 16, "法律顾问将进行案件归档","")); allCaseNode.add(getLastNodeRecord(null, "案件归档", 16, "法律顾问将进行案件归档",""));
allCaseNode.add(getLastNodeRecord(null, "案件已归档", 17, "","")); allCaseNode.add(getLastNodeRecord(null, "案件已归档", 17, "",""));
@@ -1834,6 +1837,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
caseApplicationselect.setPayRejectReason(arbitrateRecordselect.getPayRejectReason()); caseApplicationselect.setPayRejectReason(arbitrateRecordselect.getPayRejectReason());
// 仲裁员审核驳回原因 // 仲裁员审核驳回原因
caseApplicationselect.setArbitrateReject(arbitrateRecordselect.getArbitrateReject()); caseApplicationselect.setArbitrateReject(arbitrateRecordselect.getArbitrateReject());
caseApplicationselect.setDeptorReject(arbitrateRecordselect.getDeptorReject());
} }
} }
@@ -2241,7 +2245,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
caseApplication.setCaseStatus(CaseApplicationConstants.HEAD_CHECK_ARBITRATION); caseApplication.setCaseStatus(CaseApplicationConstants.HEAD_CHECK_ARBITRATION);
String notes=""; String notes="";
if(caseApplication.getArbitrateRecord()!=null&&StrUtil.isNotEmpty(caseApplication.getArbitrateRecord().getDeptorReject())){ if(caseApplication.getArbitrateRecord()!=null&&StrUtil.isNotEmpty(caseApplication.getArbitrateRecord().getDeptorReject())){
notes="部门长驳回裁决书,驳回原因:"+caseApplication.getArbitrateRecord().getDeptorReject(); notes="驳回裁决书,驳回原因:"+caseApplication.getArbitrateRecord().getDeptorReject();
} }
// 新增日志 // 新增日志
insertCaseLog(caseApplication.getId(),currentStatus , notes); insertCaseLog(caseApplication.getId(),currentStatus , notes);
@@ -3138,7 +3142,35 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
return success(rows); return success(rows);
} }
/**
* 附件上传到onlyoffice服务器
* @param annexPath
*/
@Override
@Transactional
public JSONArray uploadOnlyOffice(String annexPath,Long caseId) {
annexPath=annexPath.replace("/profile/","/home/ruoyi/uploadPath/");
File file = new File(annexPath);
if (file.exists()) {
// 调用onlyoffice
try {
Map<String, Object> params = new HashMap<>();
params.put("file", file);
String postResult = HttpUtil.post(onlyOfficeUrl+ "/"+String.valueOf(caseId), params);
if(StrUtil.isNotEmpty(postResult)){
// 转为jsonArray
JSONArray jsonArray = JSONArray.parseArray(postResult);
return jsonArray;
}
} catch (Exception e) {
throw new ServiceException("上传OnlyOffice服务器失败");
}
}else {
throw new ServiceException("文件不存在");
}
return null;
}
@Override @Override
@Transactional @Transactional
public AjaxResult checkArbitrateRecordBatch(CaseApplication caseApplication) { public AjaxResult checkArbitrateRecordBatch(CaseApplication caseApplication) {
@@ -36,7 +36,11 @@ public class CaseLogRecordServiceImpl implements ICaseLogRecordService {
caseNodeTime= DateUtil.format(record.getCaseNodeTime(), DatePattern.NORM_DATETIME_FORMATTER); caseNodeTime= DateUtil.format(record.getCaseNodeTime(), DatePattern.NORM_DATETIME_FORMATTER);
} }
contentBuilder.append(Optional.ofNullable(record.getCreateNickName()).orElse("")).append("(").append(record.getCreateBy()).append(")").append("于").append(caseNodeTime); contentBuilder.append(Optional.ofNullable(record.getCreateNickName()).orElse(""));
if(StrUtil.isNotEmpty(record.getCreateBy())) {
contentBuilder.append("(").append(record.getCreateBy()).append(")");
}
contentBuilder.append("于").append(caseNodeTime);
if(StrUtil.isNotEmpty(record.getContent())){ if(StrUtil.isNotEmpty(record.getContent())){
contentBuilder.append(record.getContent()); contentBuilder.append(record.getContent());
} }
@@ -105,9 +105,6 @@ public class MsSignSealServiceImpl implements MsSignSealService {
} else if (StringUtils.isNotEmpty(accountMobile) && accountMobile.equals(orgnNamePsnAcc)) { } else if (StringUtils.isNotEmpty(accountMobile) && accountMobile.equals(orgnNamePsnAcc)) {
//用印
sealSignRecordsel.setSealStatus(1);
sealSignRecordMapper.updataSealSignRecord(sealSignRecordsel); sealSignRecordMapper.updataSealSignRecord(sealSignRecordsel);
CaseLogRecord operLog = new CaseLogRecord(); CaseLogRecord operLog = new CaseLogRecord();
operLog.setCreateNickName(orgnNamePsnName); operLog.setCreateNickName(orgnNamePsnName);
@@ -130,9 +127,9 @@ public class MsSignSealServiceImpl implements MsSignSealService {
String fileDownloadUrl = fileObject.get("downloadUrl").toString(); String fileDownloadUrl = fileObject.get("downloadUrl").toString();
///修改"签署用印记录表"的状态为完成 ///修改"签署用印记录表"的状态为完成
sealSignRecordsel.setSignFlowStatus(3); sealSignRecordsel.setSignFlowStatus(3);
sealSignRecordsel.setSealStatus(1);
sealSignRecordsel.setFileDownloadUrl(fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1)); sealSignRecordsel.setFileDownloadUrl(fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1));
sealSignRecordMapper.updataSealSignRecord(sealSignRecordsel); sealSignRecordMapper.updataSealSignRecord(sealSignRecordsel);
String filearbitraUrl = fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1); String filearbitraUrl = fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1);
application.setFilearbitraUrl(filearbitraUrl); application.setFilearbitraUrl(filearbitraUrl);
caseApplicationMapper.submitCaseApplication(application); caseApplicationMapper.submitCaseApplication(application);
@@ -23,15 +23,13 @@ import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.mapper.SysRoleMapper; import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper; import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.wisdomarbitrate.domain.CaseAffiliate;
import com.ruoyi.wisdomarbitrate.domain.CaseApplication; import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
import com.ruoyi.wisdomarbitrate.domain.CaseAttach; import com.ruoyi.wisdomarbitrate.domain.CaseAttach;
import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication; import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication;
import com.ruoyi.wisdomarbitrate.domain.vo.ReservedConferenceVO; import com.ruoyi.wisdomarbitrate.domain.vo.ReservedConferenceVO;
import com.ruoyi.wisdomarbitrate.domain.vo.WeChatUserVO; import com.ruoyi.wisdomarbitrate.domain.vo.WeChatUserVO;
import com.ruoyi.wisdomarbitrate.mapper.CaseApplicationMapper; import com.ruoyi.wisdomarbitrate.mapper.*;
import com.ruoyi.wisdomarbitrate.mapper.CaseAttachMapper;
import com.ruoyi.wisdomarbitrate.mapper.IdentityAuthenticationMapper;
import com.ruoyi.wisdomarbitrate.mapper.WeChatUserMapper;
import com.ruoyi.wisdomarbitrate.service.VideoService; import com.ruoyi.wisdomarbitrate.service.VideoService;
import com.ruoyi.wisdomarbitrate.service.WeChatUserService; import com.ruoyi.wisdomarbitrate.service.WeChatUserService;
import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.Credential;
@@ -63,6 +61,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static com.ruoyi.common.core.domain.AjaxResult.error;
import static com.ruoyi.common.core.domain.AjaxResult.success; import static com.ruoyi.common.core.domain.AjaxResult.success;
import static com.ruoyi.common.utils.file.FileUploadUtils.getAbsoluteFile; import static com.ruoyi.common.utils.file.FileUploadUtils.getAbsoluteFile;
import static com.ruoyi.common.utils.file.FileUploadUtils.getPathFileName; import static com.ruoyi.common.utils.file.FileUploadUtils.getPathFileName;
@@ -90,10 +89,13 @@ public class VideoServiceImpl implements VideoService {
@Autowired @Autowired
private CaseApplicationMapper caseApplicationMapper; private CaseApplicationMapper caseApplicationMapper;
@Autowired @Autowired
private CaseAffiliateMapper affiliateMapper;
@Autowired
private CaseAttachMapper caseAttachMapper; private CaseAttachMapper caseAttachMapper;
@Autowired @Autowired
private SysRoleMapper roleMapper; private SysRoleMapper roleMapper;
@Autowired
private SysUserMapper userMapper;
/** /**
* 功能:第三方回调sign校验 * 功能:第三方回调sign校验
* 参数: * 参数:
@@ -489,6 +491,55 @@ public class VideoServiceImpl implements VideoService {
return ""; return "";
} }
/**
* 根据案件查找是否申请人和被申请人
* @param caseId
* @return
*/
@Override
public AjaxResult selectRoleMenuByCaseId(Long caseId) {
AjaxResult result = success();
CaseAffiliate caseAffiliate = new CaseAffiliate();
caseAffiliate.setCaseAppliId(caseId);
// 根据案件id查询相关人员
List<CaseAffiliate> msCaseAffiliates = affiliateMapper.selectCaseAffiliate(caseAffiliate);
if (CollectionUtil.isEmpty(msCaseAffiliates)) {
return error("未找到案件相关人员");
}
Long userId = SecurityUtils.getUserId();
if (userId == null) {
return error("未找到当前登录用户");
}
SysUser sysUser = userMapper.selectUserById(userId);
if (sysUser == null) {
return error("未找到当前登录用户");
}
for (CaseAffiliate affiliate : msCaseAffiliates) {
if (StrUtil.isEmpty(sysUser.getPhonenumber())) {
continue;
}
// 申请人,根据电话判断用户在该案件是否为申请人
if (StrUtil.isNotEmpty(affiliate.getContactTelphoneAgent()) && sysUser.getPhonenumber().equals(affiliate.getContactTelphoneAgent())) {
if (affiliate.getIdentityType() == 1) {
result.put("appFlag", "1");
} else if (affiliate.getIdentityType() == 2) {
// 申请人代理人
result.put("resFlag", "1");
}
} else if (StrUtil.isNotEmpty(affiliate.getContactTelphone()) && sysUser.getPhonenumber().equals(affiliate.getContactTelphone())) {
if (affiliate.getIdentityType() == 1) {
// 在该案件中为申请人或者申请代理人
result.put("appFlag", "1");
} else if (affiliate.getIdentityType() == 2) {
// 在该案件中为被申请人或者被申请代理人
result.put("resFlag", "1");
}
}
}
return result;
}
/** /**
* @param key 回调秘钥 * @param key 回调秘钥
* @param body 入参 * @param body 入参
@@ -108,7 +108,7 @@
left join sys_role_menu rm on m.menu_id = rm.menu_id left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role r on r.role_id = ur.role_id left join sys_role r on r.role_id = ur.role_id
where m.status = '0' and r.status = '0' and ur.user_id = #{userId} where m.status = '0' and r.status = '0' and ur.user_id = #{userId} and m.perms is not null and m.perms!=''
</select> </select>
<select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String"> <select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String">
@@ -85,8 +85,8 @@
<if test="respondentOpinion != null and respondentOpinion != ''">respondent_opinion = #{respondentOpinion},</if> <if test="respondentOpinion != null and respondentOpinion != ''">respondent_opinion = #{respondentOpinion},</if>
<if test="applicantOpinion != null and applicantOpinion != ''">applicant_opinion = #{applicantOpinion},</if> <if test="applicantOpinion != null and applicantOpinion != ''">applicant_opinion = #{applicantOpinion},</if>
<if test="caseCheckReject != null and caseCheckReject != ''">case_check_reject = #{caseCheckReject},</if> <if test="caseCheckReject != null and caseCheckReject != ''">case_check_reject = #{caseCheckReject},</if>
<if test="arbitrateReject != null and arbitrateReject != ''">arbitrate_reject = #{arbitrateReject},</if> arbitrate_reject = #{arbitrateReject},
<if test="deptorReject != null and deptorReject != ''">deptor_reject = #{deptorReject},</if> deptor_reject = #{deptorReject},
<if test="payRejectReason != null and payRejectReason != ''">pay_reject_reason = #{payRejectReason},</if> <if test="payRejectReason != null and payRejectReason != ''">pay_reject_reason = #{payRejectReason},</if>
update_time = sysdate() update_time = sysdate()
</set> </set>
@@ -1121,6 +1121,9 @@
<if test="id != null "> <if test="id != null ">
AND c.id = #{id} AND c.id = #{id}
</if> </if>
<if test="caseNum != null and caseNum!='' ">
AND c.case_num = #{caseNum}
</if>
</where> </where>
order by c.create_time desc limit 1 order by c.create_time desc limit 1
</select> </select>
@@ -13,18 +13,19 @@
<result property="userId" column="use_id" /> <result property="userId" column="use_id" />
<result property="userName" column="use_account" /> <result property="userName" column="use_account" />
<result property="sealStatus" column="seal_status" /> <result property="sealStatus" column="seal_status" />
<result property="onlyOfficeFileId" column="only_office_file_id" />
</resultMap> </resultMap>
<insert id="save" useGeneratedKeys="true" keyProperty="annexId"> <insert id="save" useGeneratedKeys="true" keyProperty="annexId">
INSERT INTO case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,is_batch_upload) INSERT INTO case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,is_batch_upload,only_office_file_id)
VALUES (#{caseAppliId}, #{annexName}, #{annexPath},#{annexType},#{note},#{userId},#{userName},#{sealStatus},#{isBatchUpload}) VALUES (#{caseAppliId}, #{annexName}, #{annexPath},#{annexType},#{note},#{userId},#{userName},#{sealStatus},#{isBatchUpload},#{onlyOfficeFileId})
</insert> </insert>
<insert id="batchSave" useGeneratedKeys="true" keyProperty="annexId"> <insert id="batchSave" useGeneratedKeys="true" keyProperty="annexId">
INSERT INTO case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,is_batch_upload) INSERT INTO case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,is_batch_upload,only_office_file_id)
VALUES VALUES
<foreach item="item" index="index" collection="list" separator=","> <foreach item="item" index="index" collection="list" separator=",">
(#{item.caseAppliId}, #{item.annexName}, #{item.annexPath},#{item.annexType},#{item.note},#{item.userId},#{item.userName},#{item.sealStatus},#{item.isBatchUpload}) (#{item.caseAppliId}, #{item.annexName}, #{item.annexPath},#{item.annexType},#{item.note},#{item.userId},#{item.userName},#{item.sealStatus},#{item.isBatchUpload},#{item.onlyOfficeFileId})
</foreach> </foreach>
</insert> </insert>
<delete id="deleteByFileIds"> <delete id="deleteByFileIds">
@@ -44,13 +45,13 @@
</delete> </delete>
<select id="queryAnnexPathByCaseId" resultType="com.ruoyi.wisdomarbitrate.domain.CaseAttach" resultMap="CaseAttachResult"> <select id="queryAnnexPathByCaseId" resultType="com.ruoyi.wisdomarbitrate.domain.CaseAttach" resultMap="CaseAttachResult">
select annex_id,case_appli_id,annex_name,annex_path,annex_type,note,use_id,use_account select *
from case_attach from case_attach
where case_appli_id =#{id} where case_appli_id =#{id}
</select> </select>
<select id="getCaseAttachByCaseIdAndType" resultType="com.ruoyi.wisdomarbitrate.domain.CaseAttach" resultMap="CaseAttachResult"> <select id="getCaseAttachByCaseIdAndType" resultType="com.ruoyi.wisdomarbitrate.domain.CaseAttach" resultMap="CaseAttachResult">
select annex_id,case_appli_id,annex_name,annex_path,annex_type,note,use_id,use_account select *
from case_attach from case_attach
<where> <where>
<if test="caseAppliId != null "> <if test="caseAppliId != null ">
@@ -69,7 +70,7 @@
</delete> </delete>
<select id="queryCaseAttachList" resultMap="CaseAttachResult"> <select id="queryCaseAttachList" resultMap="CaseAttachResult">
select annex_id,case_appli_id,annex_name,annex_path,annex_type,note,use_id,use_account select *
from case_attach from case_attach
<where> <where>
<if test="id != null "> <if test="id != null ">
@@ -19,14 +19,25 @@
<id property="id" column="id" /> <id property="id" column="id" />
<result property="caseAppliId" column="case_appli_id" /> <result property="caseAppliId" column="case_appli_id" />
<result property="fileid" column="file_id" /> <result property="fileid" column="file_id" />
<result property="filename" column="file_name" />
<result property="filename" column="file_name" />
<result property="signFlowid" column="sign_flow_id" /> <result property="signFlowid" column="sign_flow_id" />
<result property="signFlowStatus" column="sign_flow_status" /> <result property="signFlowStatus" column="sign_flow_status" />
<result property="pensonAccount" column="penson_account" /> <result property="pensonAccount" column="penson_account" />
<result property="pensonName" column="penson_name" />
<result property="orgnizeName" column="orgnize_name" /> <result property="orgnizeName" column="orgnize_name" />
<result property="orgnizeNamePsnAccount" column="orgn_name_psn_acc" /> <result property="orgnizeNamePsnAccount" column="orgn_name_psn_acc" />
<result property="orgnizeNamepsnName" column="orgn_name_psn_name" />
<result property="signStatusArbitor" column="sign_status_arbitor" /> <result property="signStatusArbitor" column="sign_status_arbitor" />
<result property="sealStatus" column="seal_status" /> <result property="sealStatus" column="seal_status" />
<result property="positionPagepsn" column="position_pagepsn" />
<result property="positionXpsn" column="position_xpsn" />
<result property="positionYpsn" column="position_ypsn" />
<result property="positionPageorg" column="position_pageorg" />
<result property="positionXorg" column="position_xorg" />
<result property="positionYorg" column="position_yorg" />
<result property="fileDownloadUrl" column="file_download_url" />
</resultMap> </resultMap>
@@ -103,9 +114,9 @@
update seal_sign_record update seal_sign_record
<set> <set>
<if test="signFlowStatus != null">sign_flow_status = #{signFlowStatus},</if> <if test="signFlowStatus != null">sign_flow_status = #{signFlowStatus},</if>
<if test="fileDownloadUrl != null and fileDownloadUrl != ''">file_download_url = #{fileDownloadUrl}</if> <if test="fileDownloadUrl != null and fileDownloadUrl != ''">file_download_url = #{fileDownloadUrl},</if>
<if test="signStatusArbitor != null ">sign_status_arbitor = #{signStatusArbitor}</if> <if test="signStatusArbitor != null ">sign_status_arbitor = #{signStatusArbitor},</if>
<if test="sealStatus != null ">seal_status = #{sealStatus}</if> <if test="sealStatus != null ">seal_status = #{sealStatus},</if>
</set> </set>
where id = #{id} where id = #{id}
</update> </update>