diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index cec5006..af3c92e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -4,14 +4,15 @@ import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; 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.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -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.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.Constants; @@ -36,6 +37,8 @@ public class CommonController private ServerConfig serverConfig; private static final String FILE_DELIMETER = ","; + @Autowired + CaseAttachMapper caseAttachMapper; /** * 通用下载请求 @@ -160,4 +163,22 @@ public class CommonController 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 annexTypeList){ + if(caseAppliId==null){ + return AjaxResult.error("案件id不能为空"); + } + CaseApplication msCaseApplicationVO = new CaseApplication(); + msCaseApplicationVO.setId(caseAppliId); + msCaseApplicationVO.setAnnexTypeList(annexTypeList); + List caseAttachList = caseAttachMapper.queryCaseAttachList(msCaseApplicationVO); + return AjaxResult.success(caseAttachList); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java index 03b6b65..f519d6d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java @@ -139,4 +139,13 @@ public class SysMenuController extends BaseController } return toAjax(menuService.deleteMenuById(menuId)); } + /** + * 根据用户查询菜单权限字符 + */ + @GetMapping("/getMenuPermsByUser") + public AjaxResult getMenuPermsByUser() + { + + return menuService.getMenuPermsByUser(); + } } \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseApplicationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseApplicationController.java index 19c7d73..2ea1a73 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseApplicationController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseApplicationController.java @@ -152,7 +152,7 @@ public class CaseApplicationController extends BaseController { } /** - * 查询立案信息 + * 查询立案详情 */ // @PreAuthorize("@ss.hasPermi('caseManagement:list:detail')") @PostMapping("/selectCaseApplication") @@ -161,6 +161,18 @@ public class CaseApplicationController extends BaseController { CaseApplication caseApplicationselect = caseApplicationService.selectCaseApplication(caseApplication); 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 @@ -460,9 +472,12 @@ public class CaseApplicationController extends BaseController { * @param arbitrateRecord * @return */ - @PostMapping("/creatTrialRecordnew") + @PostMapping("/confirmMeetingResult") // @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); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/VideoController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/VideoController.java index db1f865..c02c52a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/VideoController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/VideoController.java @@ -2,13 +2,23 @@ package com.ruoyi.web.controller.wisdomarbitrate; import cn.hutool.core.util.StrUtil; 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.config.RuoYiConfig; import com.ruoyi.common.core.controller.BaseController; 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.vo.ReservedConferenceVO; import com.ruoyi.wisdomarbitrate.domain.vo.SendRoomNoMessageVO; 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.WeChatUserService; import com.tencentcloudapi.common.Credential; @@ -25,6 +35,9 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.io.IOException; +import java.util.Objects; + +import static com.google.common.io.Files.getFileExtension; /** * @author wangqiong @@ -36,7 +49,12 @@ import java.io.IOException; public class VideoController extends BaseController { @Autowired private VideoService videoService; - + @Autowired + private ServerConfig serverConfig; + @Autowired + private CaseAttachMapper caseAttachMapper; + @Autowired + private ICaseApplicationService caseApplicationService; /** * 从腾讯云下载文件到本地 * @param @@ -144,6 +162,117 @@ public class VideoController extends BaseController { 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(); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java index 7d60696..6c33221 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java @@ -2,6 +2,8 @@ package com.ruoyi.system.service; import java.util.List; import java.util.Set; + +import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.system.domain.vo.RouterVo; @@ -141,4 +143,9 @@ public interface ISysMenuService * @return 结果 */ public boolean checkMenuNameUnique(SysMenu menu); + /** + * 根据用户查询菜单权限字符 + * @return + */ + AjaxResult getMenuPermsByUser(); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java index 225c280..e0c565e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java @@ -8,6 +8,8 @@ import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; + +import com.ruoyi.common.core.domain.AjaxResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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, "." }, new String[] { "", "", "", "/" }); } + @Override + public AjaxResult getMenuPermsByUser() { + AjaxResult result = AjaxResult.success(); + List perms = menuMapper.selectMenuPermsByUserId(SecurityUtils.getUserId()); + result.put("perms",perms); + return result; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/ArbitrateRecord.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/ArbitrateRecord.java index 64f7ef0..a86b846 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/ArbitrateRecord.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/ArbitrateRecord.java @@ -62,7 +62,7 @@ public class ArbitrateRecord extends BaseEntity { */ private String caseCheckReject; /** - * 仲裁员确认裁决书驳回 + * 裁决书驳回原因 */ private String arbitrateReject; /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseApplication.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseApplication.java index 8e27c69..7f1cf71 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseApplication.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseApplication.java @@ -433,7 +433,11 @@ public class CaseApplication extends BaseEntity { // 缴费确认驳回原因 private String payRejectReason; /** - * 仲裁员确认裁决书驳回 + * 仲裁员确认裁决书驳回原因 */ private String arbitrateReject; + /** + * deptorReject:部门长驳回原因 + */ + private String deptorReject; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseAttach.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseAttach.java index 1be717c..31c502f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseAttach.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseAttach.java @@ -23,6 +23,10 @@ public class CaseAttach { * 案件记录id */ private Long caseAppliLogId; + /** + * onlyOffice附件id + */ + private String onlyOfficeFileId; /** * 附件名称 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseApplicationService.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseApplicationService.java index 9194c3d..2276ed7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseApplicationService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseApplicationService.java @@ -1,5 +1,6 @@ package com.ruoyi.wisdomarbitrate.service; +import com.alibaba.fastjson.JSONArray; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.exception.EsignDemoException; import com.ruoyi.wisdomarbitrate.domain.*; @@ -155,4 +156,9 @@ public interface ICaseApplicationService { AjaxResult arbitratorCheckArbitrateRecordBatch(CaseApplication caseApplication); AjaxResult checkArbitrateRecordBatch(CaseApplication caseApplication); + /** + * 附件上传到onlyoffice服务器 + * @param annexPath + */ + JSONArray uploadOnlyOffice(String annexPath, Long id); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/VideoService.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/VideoService.java index c1c8c71..1f287a1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/VideoService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/VideoService.java @@ -55,4 +55,5 @@ public interface VideoService { * @return */ AjaxResult attachListByCaseId(Long caseAppliId, Integer annexType); + AjaxResult selectRoleMenuByCaseId(Long caseId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/AdjudicationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/AdjudicationServiceImpl.java index a5aff97..b43e75b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/AdjudicationServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/AdjudicationServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.wisdomarbitrate.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.deepoove.poi.data.PictureRenderData; 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.XWPFParagraph; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.MailSendException; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; @@ -59,6 +61,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; 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.wisdomarbitrate.utils.CaseLogUtils.insertCaseLog; @@ -66,7 +69,8 @@ import static com.ruoyi.wisdomarbitrate.utils.CaseLogUtils.insertCaseLog; @Slf4j public class AdjudicationServiceImpl implements IAdjudicationService { private final String apiUrl = "http://api.cainiaoapi.com/api/exp/v1/index"; - + @Value("${onlyOfficeConfig.url}") + private String onlyOfficeUrl; @Autowired private CaseApplicationMapper caseApplicationMapper; @Autowired @@ -252,10 +256,37 @@ public class AdjudicationServiceImpl implements IAdjudicationService { // String saveName = "D:/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day + "/" + fileName; // 将word中的标签替换掉,生成新的word 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); - // 保存裁决书附件 - saveArbitorFile(id, saveName, savePath, caseApplicationById, arbitrateRecordSelect,CaseApplicationConstants.VERPRIF_ARBITRATION); + for (Object obj : jsonArray) { + JSONObject jsonObject = (JSONObject) obj; + 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("裁决书已生成"); } catch (IOException e) { @@ -564,15 +595,11 @@ public class AdjudicationServiceImpl implements IAdjudicationService { /** * 保存裁决书附件 * - * @param id 案件id - * @param saveName 保存的文件名 - * @param savePath 保存路径 * @param caseApplicationById 案件基本信息 * @param arbitrateRecordSelect 出裁决书生成记录 * @param caseStatus 案件状态,不为空则更新案件状态 */ - private void saveArbitorFile(Long id, String saveName, String savePath, CaseApplication caseApplicationById, ArbitrateRecord arbitrateRecordSelect,Integer caseStatus) { - CaseAttach caseAttach = CaseAttach.builder().caseAppliId(id).annexName(saveName).annexPath(savePath).annexType(3).build(); + private void saveArbitorFile( CaseAttach caseAttach, CaseApplication caseApplicationById, ArbitrateRecord arbitrateRecordSelect,Integer caseStatus) { //保存到附件表里,先判断之前有没有,有的话更新,没有的话新增 List caseAttachList = caseAttachMapper.getCaseAttachByCaseIdAndType(caseAttach); if (caseAttachList != null && caseAttachList.size() > 0) { @@ -1903,10 +1930,37 @@ public class AdjudicationServiceImpl implements IAdjudicationService { } catch (IOException e) { 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); - // 保存裁决书附件 - saveArbitorFile(req.getId(), saveName, savePath, caseApplicationById, arbitrateRecordSelect,null); + for (Object obj : jsonArray) { + JSONObject jsonObject = (JSONObject) obj; + 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(); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseApplicationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseApplicationServiceImpl.java index 37ebea5..60eba70 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseApplicationServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseApplicationServiceImpl.java @@ -4,6 +4,7 @@ package com.ruoyi.wisdomarbitrate.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; @@ -78,6 +79,8 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { // 腾讯云即时通信密钥 @Value("${imConfig.sdkSecretKey}") private String sdkSecretKey; + @Value("${onlyOfficeConfig.url}") + private String onlyOfficeUrl; @Autowired private CaseApplicationMapper caseApplicationMapper; @@ -637,8 +640,8 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { allCaseNode.add(getLastNodeRecord(null, "核验裁决书", 11, "法律顾问将核验裁决书","下一节点角色:仲裁员")); allCaseNode.add(getLastNodeRecord(null, "仲裁员审核裁决书", 18, "仲裁员将审核裁决书","下一节点角色:部门长")); allCaseNode.add(getLastNodeRecord(null, "部门长审核裁决书", 12, "部门长将审核裁决书","下一节点角色:仲裁员")); - allCaseNode.add(getLastNodeRecord(null, "裁决书签名", 13, "仲裁员将进行裁决书签名","下一节点角色:部门长")); - allCaseNode.add(getLastNodeRecord(null, "裁决书用印", 14, "部门长将进行裁决书用印","下一节点角色:法律顾问")); + allCaseNode.add(getLastNodeRecord(null, "裁决书签名", 13, "仲裁员将进行裁决书签名","下一节点角色:法律顾问")); + allCaseNode.add(getLastNodeRecord(null, "裁决书用印", 14, "法律顾问将进行裁决书用印","下一节点角色:法律顾问")); allCaseNode.add(getLastNodeRecord(null, "裁决书送达", 15, "法律顾问将送达裁决书","下一节点角色:法律顾问")); allCaseNode.add(getLastNodeRecord(null, "案件归档", 16, "法律顾问将进行案件归档","")); allCaseNode.add(getLastNodeRecord(null, "案件已归档", 17, "","")); @@ -1834,6 +1837,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { caseApplicationselect.setPayRejectReason(arbitrateRecordselect.getPayRejectReason()); // 仲裁员审核驳回原因 caseApplicationselect.setArbitrateReject(arbitrateRecordselect.getArbitrateReject()); + caseApplicationselect.setDeptorReject(arbitrateRecordselect.getDeptorReject()); } } @@ -2241,7 +2245,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { caseApplication.setCaseStatus(CaseApplicationConstants.HEAD_CHECK_ARBITRATION); String notes=""; if(caseApplication.getArbitrateRecord()!=null&&StrUtil.isNotEmpty(caseApplication.getArbitrateRecord().getDeptorReject())){ - notes="部门长驳回裁决书,驳回原因:"+caseApplication.getArbitrateRecord().getDeptorReject(); + notes="驳回裁决书,驳回原因:"+caseApplication.getArbitrateRecord().getDeptorReject(); } // 新增日志 insertCaseLog(caseApplication.getId(),currentStatus , notes); @@ -3138,7 +3142,35 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { 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 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 @Transactional public AjaxResult checkArbitrateRecordBatch(CaseApplication caseApplication) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseLogRecordServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseLogRecordServiceImpl.java index a4d0544..2c09206 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseLogRecordServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseLogRecordServiceImpl.java @@ -36,7 +36,11 @@ public class CaseLogRecordServiceImpl implements ICaseLogRecordService { 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())){ contentBuilder.append(record.getContent()); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/MsSignSealServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/MsSignSealServiceImpl.java index 73a3e00..28e2199 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/MsSignSealServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/MsSignSealServiceImpl.java @@ -105,9 +105,6 @@ public class MsSignSealServiceImpl implements MsSignSealService { } else if (StringUtils.isNotEmpty(accountMobile) && accountMobile.equals(orgnNamePsnAcc)) { - //用印 - sealSignRecordsel.setSealStatus(1); - sealSignRecordMapper.updataSealSignRecord(sealSignRecordsel); CaseLogRecord operLog = new CaseLogRecord(); operLog.setCreateNickName(orgnNamePsnName); @@ -130,9 +127,9 @@ public class MsSignSealServiceImpl implements MsSignSealService { String fileDownloadUrl = fileObject.get("downloadUrl").toString(); ///修改"签署用印记录表"的状态为完成 sealSignRecordsel.setSignFlowStatus(3); + sealSignRecordsel.setSealStatus(1); sealSignRecordsel.setFileDownloadUrl(fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1)); sealSignRecordMapper.updataSealSignRecord(sealSignRecordsel); - String filearbitraUrl = fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1); application.setFilearbitraUrl(filearbitraUrl); caseApplicationMapper.submitCaseApplication(application); diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/VideoServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/VideoServiceImpl.java index a23c1a9..6f73494 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/VideoServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/VideoServiceImpl.java @@ -23,15 +23,13 @@ import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.mapper.SysRoleMapper; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.mapper.SysUserRoleMapper; +import com.ruoyi.wisdomarbitrate.domain.CaseAffiliate; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; import com.ruoyi.wisdomarbitrate.domain.CaseAttach; import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication; import com.ruoyi.wisdomarbitrate.domain.vo.ReservedConferenceVO; import com.ruoyi.wisdomarbitrate.domain.vo.WeChatUserVO; -import com.ruoyi.wisdomarbitrate.mapper.CaseApplicationMapper; -import com.ruoyi.wisdomarbitrate.mapper.CaseAttachMapper; -import com.ruoyi.wisdomarbitrate.mapper.IdentityAuthenticationMapper; -import com.ruoyi.wisdomarbitrate.mapper.WeChatUserMapper; +import com.ruoyi.wisdomarbitrate.mapper.*; import com.ruoyi.wisdomarbitrate.service.VideoService; import com.ruoyi.wisdomarbitrate.service.WeChatUserService; import com.tencentcloudapi.common.Credential; @@ -63,6 +61,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; 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.utils.file.FileUploadUtils.getAbsoluteFile; import static com.ruoyi.common.utils.file.FileUploadUtils.getPathFileName; @@ -90,10 +89,13 @@ public class VideoServiceImpl implements VideoService { @Autowired private CaseApplicationMapper caseApplicationMapper; @Autowired + private CaseAffiliateMapper affiliateMapper; + @Autowired private CaseAttachMapper caseAttachMapper; @Autowired private SysRoleMapper roleMapper; - + @Autowired + private SysUserMapper userMapper; /** * 功能:第三方回调sign校验 * 参数: @@ -489,6 +491,55 @@ public class VideoServiceImpl implements VideoService { return ""; } + + /** + * 根据案件查找是否申请人和被申请人 + * @param caseId + * @return + */ + @Override + public AjaxResult selectRoleMenuByCaseId(Long caseId) { + AjaxResult result = success(); + CaseAffiliate caseAffiliate = new CaseAffiliate(); + caseAffiliate.setCaseAppliId(caseId); + // 根据案件id查询相关人员 + List 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 body 入参 diff --git a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml index 6762007..fcd6d98 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -108,7 +108,7 @@ 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_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!='' diff --git a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml index a5ec19d..dcc7cc4 100644 --- a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml @@ -13,18 +13,19 @@ + - INSERT INTO case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,is_batch_upload) - VALUES (#{caseAppliId}, #{annexName}, #{annexPath},#{annexType},#{note},#{userId},#{userName},#{sealStatus},#{isBatchUpload}) + 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},#{onlyOfficeFileId}) - 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 - (#{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}) @@ -44,13 +45,13 @@ - select annex_id,case_appli_id,annex_name,annex_path,annex_type,note,use_id,use_account + select * from case_attach diff --git a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/SealSignRecordMapper.xml b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/SealSignRecordMapper.xml index f16f349..47b3375 100644 --- a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/SealSignRecordMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/SealSignRecordMapper.xml @@ -19,14 +19,25 @@ + + + + + + + + + + + @@ -103,9 +114,9 @@ update seal_sign_record sign_flow_status = #{signFlowStatus}, - file_download_url = #{fileDownloadUrl} - sign_status_arbitor = #{signStatusArbitor} - seal_status = #{sealStatus} + file_download_url = #{fileDownloadUrl}, + sign_status_arbitor = #{signStatusArbitor}, + seal_status = #{sealStatus}, where id = #{id}