diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java index 32eb6f1..775f772 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java @@ -3,6 +3,7 @@ package com.ruoyi; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.scheduling.annotation.EnableScheduling; /** * 启动程序 @@ -10,6 +11,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; * @author ruoyi */ @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) +@EnableScheduling public class RuoYiApplication { public static void main(String[] args) 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 5363a95..a973250 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 @@ -6,7 +6,10 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.exception.EsignDemoException; +import com.ruoyi.common.utils.WxAppletNotifyUtils; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; +import com.ruoyi.wisdomarbitrate.domain.SealSignRecord; import com.ruoyi.wisdomarbitrate.domain.vo.SendRoomNoMessageVO; import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService; import org.springframework.beans.factory.annotation.Autowired; @@ -95,6 +98,26 @@ public class CaseApplicationController extends BaseController { return success(caseApplicationselect); } + /** + * 查询签名链接 + */ + @PreAuthorize("@ss.hasPermi('caseManagement:list:selectSignUrl')") + @PostMapping("/selectSignUrl") + public AjaxResult selectSignUrl(@Validated @RequestBody CaseApplication caseApplication) throws EsignDemoException { + SealSignRecord sealSignRecordselect = caseApplicationService.selectSignUrl(caseApplication); + return success(sealSignRecordselect); + } + + /** + * 查询用印链接 + */ + @PreAuthorize("@ss.hasPermi('caseManagement:list:selectSealUrl')") + @PostMapping("/selectSealUrl") + public AjaxResult selectSealUrl(@Validated @RequestBody CaseApplication caseApplication) throws EsignDemoException { + SealSignRecord sealUrlRecordselect = caseApplicationService.selectSealUrl(caseApplication); + return success(sealUrlRecordselect); + } + /** * 立案申请导入模板下载 */ @@ -210,5 +233,14 @@ public class CaseApplicationController extends BaseController { String result = caseApplicationService.sendRoomNoMessage(messageVO); return success(result); } + /** + * 获取UrlScheme + */ + @Anonymous + @GetMapping("/getUrlScheme") + public AjaxResult getUrlScheme() { + String schemeUrl = WxAppletNotifyUtils.jumpAppletSchemeUrl(); + return success(schemeUrl); + } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/WxAppletNotifyUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/WxAppletNotifyUtils.java new file mode 100644 index 0000000..d8b07fc --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/WxAppletNotifyUtils.java @@ -0,0 +1,72 @@ +package com.ruoyi.common.utils; + +/** + * @author wangqiong + * @description + * @date 2023-10-13 10:16 + */ +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + + +/** + * @Author: Tenk + */ +@RequiredArgsConstructor +@Component +public class WxAppletNotifyUtils { + + /** + * scheme 跳转微信小程序,需中转H5 + + */ + public static String jumpAppletSchemeUrl(){ + + String token= getAccessToken(); + + //接口地址 + String url = "https://api.weixin.qq.com/wxa/generatescheme?access_token="+token; + JSONObject body = JSONUtil.createObj(); + JSONObject jumpWxa = JSONUtil.createObj(); + jumpWxa.putOpt("path","pages/login"); + jumpWxa.putOpt("query",""); + jumpWxa.putOpt("env_version","release"); + body.putOpt("jump_wxa",jumpWxa); + //链接过期类型:0时间戳 1间隔天数 + body.putOpt("expire_type",1); + body.putOpt("is_expire",true); + //指定失效天数,最多30 + body.putOpt("expire_interval",30); + String post = HttpUtil.post(url,body.toJSONString(2)); + JSONObject result = JSONUtil.parseObj(post); + if(result!=null && result.containsKey("openlink")){ + return result.getStr("openlink"); + } + return null; + } + + + //凭证调用 + public static String getAccessToken(){ + String token; + //小程序APPID + String appid="wx91cb8459dca561b4";//自行获取 + //小程序secret + String secret="190aaa3bda96a65d25318fbb0e133fc6";//自己去公众号后台获取 + String httpUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential"; + + httpUrl= httpUrl+"&appid="+appid+"&secret="+secret; + //get请求 + String result = HttpUtil.get(httpUrl); + //解析结果 + JSONObject jsonObject = JSONUtil.parseObj(result); + //get AccessToken + token=jsonObject.get("access_token",String.class,false); + return token; + } + +} \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/SealSignRecord.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/SealSignRecord.java similarity index 87% rename from ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/SealSignRecord.java rename to ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/SealSignRecord.java index 27a67d6..7365e10 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/SealSignRecord.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/SealSignRecord.java @@ -1,4 +1,4 @@ -package com.ruoyi.common.utils.bean; +package com.ruoyi.wisdomarbitrate.domain; import com.ruoyi.common.core.domain.BaseEntity; @@ -23,6 +23,17 @@ public class SealSignRecord extends BaseEntity { private String orgnizeNamePsnAccount; /** 机构经办人名称 */ private String orgnizeNamepsnName; + + String fileDownloadUrl; + + public String getFileDownloadUrl() { + return fileDownloadUrl; + } + + public void setFileDownloadUrl(String fileDownloadUrl) { + this.fileDownloadUrl = fileDownloadUrl; + } + /** 流程状态 */ private Integer signFlowStatus; /** 签名状态 */ @@ -30,6 +41,38 @@ public class SealSignRecord extends BaseEntity { /** 用印状态 */ private Integer orgsignStatus; + /** 签名链接 */ + private String signUrl; + + public String getSignUrl() { + return signUrl; + } + + public void setSignUrl(String signUrl) { + this.signUrl = signUrl; + } + + public String getSealUrl() { + return sealUrl; + } + + public void setSealUrl(String sealUrl) { + this.sealUrl = sealUrl; + } + + /** 用印链接 */ + private String sealUrl; + + private Long caseAppliId; + + public Long getCaseAppliId() { + return caseAppliId; + } + + public void setCaseAppliId(Long caseAppliId) { + this.caseAppliId = caseAppliId; + } + public Integer getPsnsignStatus() { return psnsignStatus; } @@ -178,16 +221,7 @@ public class SealSignRecord extends BaseEntity { private double positionXorg; /** 印章位置y坐标 */ private double positionYorg; - /** 案件申请id */ - private Long caseAppliId; - public Long getCaseAppliId() { - return caseAppliId; - } - - public void setCaseAppliId(Long caseAppliId) { - this.caseAppliId = caseAppliId; - } public Long getId() { return id; diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/SealSignRecordMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/SealSignRecordMapper.java index 3683ba4..84bfc9c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/SealSignRecordMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/SealSignRecordMapper.java @@ -1,10 +1,18 @@ package com.ruoyi.wisdomarbitrate.mapper; -import com.ruoyi.common.utils.bean.SealSignRecord; -import com.ruoyi.wisdomarbitrate.domain.CaseLogRecord; -import org.apache.ibatis.annotations.Mapper; -@Mapper + +import com.ruoyi.wisdomarbitrate.domain.SealSignRecord; + +import java.util.List; + public interface SealSignRecordMapper { - int insertSealSignRecord(SealSignRecord SealSignRecord); + List selectSealSignRecord(SealSignRecord sealSignRecord); + + List selectSealSignRecordbyStat(SealSignRecord sealSignRecord); + + int updataSealSignRecord(SealSignRecord sealSignRecord); + + + void insertSealSignRecord(SealSignRecord sealSignRecord); } 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 2bcd9a5..0a733e8 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,6 +1,8 @@ package com.ruoyi.wisdomarbitrate.service; +import com.ruoyi.common.exception.EsignDemoException; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; +import com.ruoyi.wisdomarbitrate.domain.SealSignRecord; import com.ruoyi.wisdomarbitrate.domain.vo.SendRoomNoMessageVO; import java.util.List; @@ -40,4 +42,8 @@ public interface ICaseApplicationService { CaseApplication selectCaseApplicationConfirm(CaseApplication caseApplication); String sendRoomNoMessage(SendRoomNoMessageVO messageVO); + + SealSignRecord selectSignUrl(CaseApplication caseApplication) throws EsignDemoException; + + SealSignRecord selectSealUrl(CaseApplication caseApplication) throws EsignDemoException; } 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 04b87a1..9967dc3 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 @@ -188,9 +188,12 @@ public class AdjudicationServiceImpl implements IAdjudicationService { if (caseAttach.getAnnexType() == 3) { String annexPath = caseAttach.getAnnexPath(); //File file = new File("/home/ruoyi/" + annexPath); - String path = "/home/ruoyi/" + annexPath; - File file = new File(path); - System.out.println("文件是:" + file); + String path = "/home/ruoyi" + annexPath; + System.out.println("原文件路径是:" + path); + String newpath = path.replace("/", "\\"); + System.out.println("新文件路径是:" + newpath); + File file = new File(newpath); + System.out.println("新文件是:" + file); fileList.add(file); } } @@ -424,21 +427,21 @@ public class AdjudicationServiceImpl implements IAdjudicationService { return AjaxResult.success(archivesDetailVO); } - /*public static void main(String[] args) { + public static void main(String[] args) { try { - List fileList = new ArrayList<>(); - fileList.add(new File("D:\\home\\ruoyi\\uploadPath\\upload\\2023\\10\\7\\b442880179844a848f1f8b08c29e3d0c.docx")); - File file = fileList.get(0); +// List fileList = new ArrayList<>(); +// fileList.add(new File("D:\\home\\ruoyi\\uploadPath\\upload\\2023\\10\\7\\b442880179844a848f1f8b08c29e3d0c.docx")); + // File file = fileList.get(0);//System.out.println("这是文件"+file); //电子邮件送达 - EmailOutUtil emailOutUtil = new EmailOutUtil(); - JavaMailSender javaMailSender = emailOutUtil.rebuildMailSender(); - if (javaMailSender != null) { - emailOutUtil.sendMessageCarryFile("1154956315@qq.com", "案件裁决书", "您的裁决书已送达,详情请查阅附件", file - , "hjbjava@163.com", javaMailSender); - } +// EmailOutUtil emailOutUtil = new EmailOutUtil(); +// JavaMailSender javaMailSender = emailOutUtil.rebuildMailSender(); +// if (javaMailSender != null) { +// emailOutUtil.sendMessageCarryFile("1154956315@qq.com", "案件裁决书", "您的裁决书已送达,详情请查阅附件", file +// , "hjbjava@163.com", javaMailSender); +// } } catch (MailSendException e) { e.printStackTrace(); } - }*/ + } } \ No newline at end of file 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 f34ac02..44204d2 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 @@ -716,121 +716,120 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord); Integer agreeOrNotCheck = caseApplication.getAgreeOrNotCheck(); if(agreeOrNotCheck.intValue()==1){//同意审核 - //TODO 取消一下注释 -// try { -// //获取当前案件的裁决书 -// CaseApplication caseApplication2 = caseApplicationService.selectCaseApplication(caseApplication); -// List caseAttachList = caseApplication2.getCaseAttachList(); -// if (caseAttachList != null && caseAttachList.size() > 0) { -// for (CaseAttach caseAttach : caseAttachList) { -// if (caseAttach.getAnnexType() == 3) { -// String annexPath = caseAttach.getAnnexPath(); -// String path = "/home/ruoyi/" + annexPath; -//// String path ="D:\\home\\仲裁裁决书模板.docx"; -// //获取文件上传地址 -// EsignHttpResponse response = SaaSAPIFileUtils.getUploadUrl(path); -// String body = response.getBody(); -// if (body != null){ -// JSONObject jsonObject = JSONObject.parseObject(body); -// String fileId = jsonObject.getJSONObject("data").getString("fileId"); -// String fileUploadUrl = jsonObject.getJSONObject("data").getString("fileUploadUrl"); -// //上传文件流 -// EsignHttpResponse response1 = SaaSAPIFileUtils.uploadFile(fileUploadUrl, path); -// JSONObject jsonObject1 = JSONObject.parseObject(response1.getBody()); -// if (jsonObject1.getIntValue("errCode")==0){ -// //查看文件上传状态 -// Thread.sleep(5000); -// EsignHttpResponse response2 = SaaSAPIFileUtils.getFileStatus(fileId); -// JSONObject jsonObject2 = JSONObject.parseObject(response2.getBody()); -// JSONObject data = jsonObject2.getJSONObject("data"); -// int fileStatus =data.getIntValue("fileStatus"); -// if (fileStatus == 2 || fileStatus == 5){ -// String fileName = data.getString("fileName"); -// //上传成功,获取文件签名印章位置 -// SealSignRecord sealSignRecord = new SealSignRecord(); -// sealSignRecord.setFileid(fileId); -// EsignHttpResponse positions = SignAward.getPositions(sealSignRecord); -// Gson gson = new Gson(); -// JsonObject positionsJsonObject = gson.fromJson(positions.getBody(), JsonObject.class); -// JsonObject positionsData = positionsJsonObject.getAsJsonObject("data"); -// String keywordPositions = positionsData.get("keywordPositions").getAsString(); -// //发起签署 -// sealSignRecord.setFilename(fileName); -// String arbitratorId = caseApplication2.getArbitratorId(); -// if (arbitratorId!=null){ -// SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(arbitratorId)); -// if (sysUser == null){ -// return rows; -// } -// sealSignRecord.setPensonAccount(sysUser.getPhonenumber()); -// sealSignRecord.setPensonName(sysUser.getNickName()); -// } -// sealSignRecord.setOrgnizeName("西安云美电子科技有限公司"); -// sealSignRecord.setOrgnizeNamePsnAccount("秦桃则"); -// sealSignRecord.setOrgnizeName("西安云美电子科技有限公司"); -// sealSignRecord.setOrgnizeNamePsnAccount("17691338406"); -// sealSignRecord.setOrgnizeNamepsnName("韩超勃"); -// //解析文件签名印章位置 -// JSONArray jsonArray = JSONArray.parseArray(keywordPositions); -// for (int i = 0; i < jsonArray.size(); i++) { -// JSONObject jsonObject3 = jsonArray.getJSONObject(i); -// String keyword = jsonObject3.getString("keyword"); -// if (keyword.equals("仲裁员")){ -// //签名 -// JSONArray positionsArray = jsonObject3.getJSONArray("positions"); -// // 遍历 positionsArray 中的每个元素 -// for (int j = 0; j < positionsArray.size(); j++){ -// JSONObject positionObj = positionsArray.getJSONObject(j); -// int pageNum = positionObj.getIntValue("pageNum"); -// sealSignRecord.setPositionPagepsn(String.valueOf(pageNum)); -// JSONArray coordinatesArray = positionObj.getJSONArray("coordinates"); -// JSONObject coordinateObj = coordinatesArray.getJSONObject(0); -// double positionX = coordinateObj.getDoubleValue("positionX"); -// double positionY = coordinateObj.getDoubleValue("positionY"); -// sealSignRecord.setPositionXpsn(positionX); -// sealSignRecord.setPositionYpsn(positionY); -// } -// }else { -// //用印 -// JSONArray positionsArray = jsonObject3.getJSONArray("positions"); -// // 遍历 positionsArray 中的每个元素 -// for (int j = 0; j < positionsArray.size(); j++) { -// JSONObject positionObj = positionsArray.getJSONObject(j); -// int pageNum = positionObj.getIntValue("pageNum"); -// sealSignRecord.setPositionPageorg(String.valueOf(pageNum)); -// JSONArray coordinatesArray = positionObj.getJSONArray("coordinates"); -// JSONObject coordinateObj = coordinatesArray.getJSONObject(0); -// double positionX = coordinateObj.getDoubleValue("positionX"); -// double positionY = coordinateObj.getDoubleValue("positionY"); -// sealSignRecord.setPositionXorg(positionX); -// sealSignRecord.setPositionYorg(positionY); -// } -// } -// } -// EsignHttpResponse response3 = SignAward.createByFile(sealSignRecord); -// JSONObject jsonObject3 = JSONObject.parseObject(response3.getBody()); -// if (jsonObject1.getIntValue("code")==0){ -// //获取签署流程ID -// JSONObject data1 = jsonObject3.getJSONObject("data"); -// String signFlowId = data1.getString("signFlowId"); -// //保存案件id,文件id,文件名称.流程id到签署用印记录表里 -// sealSignRecord.setCaseAppliId(caseApplication.getId()); -// sealSignRecord.setSignFlowid(signFlowId); -// sealSignRecord.setSignFlowStatus(1);//待签名 -// sealSignRecordMapper.insertSealSignRecord(sealSignRecord); -// } -// } -// } -// } -// break; -// } -// } -// } -// } catch (EsignDemoException e) { -// e.printStackTrace(); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } + try { + //获取当前案件的裁决书 + CaseApplication caseApplication2 = caseApplicationService.selectCaseApplication(caseApplication); + List caseAttachList = caseApplication2.getCaseAttachList(); + if (caseAttachList != null && caseAttachList.size() > 0) { + for (CaseAttach caseAttach : caseAttachList) { + if (caseAttach.getAnnexType() == 3) { + String annexPath = caseAttach.getAnnexPath(); + String path = "/home/ruoyi/" + annexPath; +// String path ="D:\\home\\仲裁裁决书模板.docx"; + //获取文件上传地址 + EsignHttpResponse response = SaaSAPIFileUtils.getUploadUrl(path); + String body = response.getBody(); + if (body != null){ + JSONObject jsonObject = JSONObject.parseObject(body); + String fileId = jsonObject.getJSONObject("data").getString("fileId"); + String fileUploadUrl = jsonObject.getJSONObject("data").getString("fileUploadUrl"); + //上传文件流 + EsignHttpResponse response1 = SaaSAPIFileUtils.uploadFile(fileUploadUrl, path); + JSONObject jsonObject1 = JSONObject.parseObject(response1.getBody()); + if (jsonObject1.getIntValue("errCode")==0){ + //查看文件上传状态 + Thread.sleep(5000); + EsignHttpResponse response2 = SaaSAPIFileUtils.getFileStatus(fileId); + JSONObject jsonObject2 = JSONObject.parseObject(response2.getBody()); + JSONObject data = jsonObject2.getJSONObject("data"); + int fileStatus =data.getIntValue("fileStatus"); + if (fileStatus == 2 || fileStatus == 5){ + String fileName = data.getString("fileName"); + //上传成功,获取文件签名印章位置 + SealSignRecord sealSignRecord = new SealSignRecord(); + sealSignRecord.setFileid(fileId); + EsignHttpResponse positions = SignAward.getPositions(sealSignRecord); + Gson gson = new Gson(); + JsonObject positionsJsonObject = gson.fromJson(positions.getBody(), JsonObject.class); + JsonObject positionsData = positionsJsonObject.getAsJsonObject("data"); + String keywordPositions = positionsData.get("keywordPositions").getAsString(); + //发起签署 + sealSignRecord.setFilename(fileName); + String arbitratorId = caseApplication2.getArbitratorId(); + if (arbitratorId!=null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(arbitratorId)); + if (sysUser == null){ + return rows; + } + sealSignRecord.setPensonAccount(sysUser.getPhonenumber()); + sealSignRecord.setPensonName(sysUser.getNickName()); + } + sealSignRecord.setOrgnizeName("西安云美电子科技有限公司"); + sealSignRecord.setOrgnizeNamePsnAccount("秦桃则"); + sealSignRecord.setOrgnizeName("西安云美电子科技有限公司"); + sealSignRecord.setOrgnizeNamePsnAccount("17691338406"); + sealSignRecord.setOrgnizeNamepsnName("韩超勃"); + //解析文件签名印章位置 + JSONArray jsonArray = JSONArray.parseArray(keywordPositions); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject3 = jsonArray.getJSONObject(i); + String keyword = jsonObject3.getString("keyword"); + if (keyword.equals("仲裁员")){ + //签名 + JSONArray positionsArray = jsonObject3.getJSONArray("positions"); + // 遍历 positionsArray 中的每个元素 + for (int j = 0; j < positionsArray.size(); j++){ + JSONObject positionObj = positionsArray.getJSONObject(j); + int pageNum = positionObj.getIntValue("pageNum"); + sealSignRecord.setPositionPagepsn(String.valueOf(pageNum)); + JSONArray coordinatesArray = positionObj.getJSONArray("coordinates"); + JSONObject coordinateObj = coordinatesArray.getJSONObject(0); + double positionX = coordinateObj.getDoubleValue("positionX"); + double positionY = coordinateObj.getDoubleValue("positionY"); + sealSignRecord.setPositionXpsn(positionX); + sealSignRecord.setPositionYpsn(positionY); + } + }else { + //用印 + JSONArray positionsArray = jsonObject3.getJSONArray("positions"); + // 遍历 positionsArray 中的每个元素 + for (int j = 0; j < positionsArray.size(); j++) { + JSONObject positionObj = positionsArray.getJSONObject(j); + int pageNum = positionObj.getIntValue("pageNum"); + sealSignRecord.setPositionPageorg(String.valueOf(pageNum)); + JSONArray coordinatesArray = positionObj.getJSONArray("coordinates"); + JSONObject coordinateObj = coordinatesArray.getJSONObject(0); + double positionX = coordinateObj.getDoubleValue("positionX"); + double positionY = coordinateObj.getDoubleValue("positionY"); + sealSignRecord.setPositionXorg(positionX); + sealSignRecord.setPositionYorg(positionY); + } + } + } + EsignHttpResponse response3 = SignAward.createByFile(sealSignRecord); + JSONObject jsonObject3 = JSONObject.parseObject(response3.getBody()); + if (jsonObject1.getIntValue("code")==0){ + //获取签署流程ID + JSONObject data1 = jsonObject3.getJSONObject("data"); + String signFlowId = data1.getString("signFlowId"); + //保存案件id,文件id,文件名称.流程id到签署用印记录表里 + sealSignRecord.setCaseAppliId(caseApplication.getId()); + sealSignRecord.setSignFlowid(signFlowId); + sealSignRecord.setSignFlowStatus(1);//待签名 + sealSignRecordMapper.insertSealSignRecord(sealSignRecord); + } + } + } + } + break; + } + } + } + } catch (EsignDemoException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } caseApplication.setCaseStatus(CaseApplicationConstants.SIGN_ARBITRATION); // 新增日志 CaseLogUtils.insertCaseLog(caseApplication.getId(),CaseApplicationConstants.SIGN_ARBITRATION,""); diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/FixSelectFlowDetailUtils.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/FixSelectFlowDetailUtils.java index 37c64d0..e061f5c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/FixSelectFlowDetailUtils.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/FixSelectFlowDetailUtils.java @@ -6,65 +6,108 @@ import com.google.gson.JsonObject; import com.ruoyi.common.constant.CaseApplicationConstants; import com.ruoyi.common.core.domain.entity.EsignHttpResponse; import com.ruoyi.common.exception.EsignDemoException; -import com.ruoyi.common.utils.SignAward; -import com.ruoyi.common.utils.bean.SealSignRecord; +import com.ruoyi.common.utils.file.SaaSAPIFileUtils; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; +import com.ruoyi.wisdomarbitrate.domain.SealSignRecord; import com.ruoyi.wisdomarbitrate.mapper.CaseApplicationMapper; +import com.ruoyi.wisdomarbitrate.mapper.SealSignRecordMapper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import java.util.List; + +@Component public class FixSelectFlowDetailUtils { @Autowired private CaseApplicationMapper caseApplicationMapper; + @Autowired + private SealSignRecordMapper sealSignRecordMapper; - + @Scheduled(cron = "0/3 * * * * ?") public void fixExecuteSelectFlowDetailUtils() throws EsignDemoException { - Gson gson = new Gson(); + SealSignRecord sealSignRecordselect = new SealSignRecord(); +// sealSignRecordselect.setSignFlowStatus(1); + List sealSignRecords = sealSignRecordMapper.selectSealSignRecordbyStat(sealSignRecordselect); + if(sealSignRecords!=null&&sealSignRecords.size()>0){ + for (int i = 0; i < sealSignRecords.size(); i++) { + SealSignRecord sealSignRecord = sealSignRecords.get(i); + EsignHttpResponse signFlowDetail = SignAward.signFlowDetail(sealSignRecord); + JsonObject signFlowDetailJsonObject = gson.fromJson(signFlowDetail.getBody(),JsonObject.class); + JsonObject flowDetailData = signFlowDetailJsonObject.getAsJsonObject("data"); + JsonArray signersArray = flowDetailData.get("signers").getAsJsonArray(); + Integer psnsignStatus = null; + Integer orgsignStatus = null; + for (int j = 0; j < signersArray.size(); j++) { + JsonObject signerObject = (JsonObject)signersArray.get(j); + if(!(signerObject.get("psnSigner").toString()).equals("null")){ + JsonObject psnSignerData = signerObject.getAsJsonObject("psnSigner"); + if(psnSignerData!=null){ + psnsignStatus = signerObject.get("signStatus").getAsInt(); + } + } + if(!(signerObject.get("orgSigner").toString()).equals("null")){ + JsonObject orgSignerData = signerObject.getAsJsonObject("orgSigner"); + if(orgSignerData!=null){ + orgsignStatus = signerObject.get("signStatus").getAsInt(); + } + } - SealSignRecord sealSignRecord = new SealSignRecord(); - sealSignRecord.setSignFlowid("41e6732b48c54c63a91b2379c352212d"); - EsignHttpResponse signFlowDetail = SignAward.signFlowDetail(sealSignRecord); - JsonObject signFlowDetailJsonObject = gson.fromJson(signFlowDetail.getBody(),JsonObject.class); - JsonObject flowDetailData = signFlowDetailJsonObject.getAsJsonObject("data"); - JsonArray signersArray = flowDetailData.get("signers").getAsJsonArray(); - for (int i = 0; i < signersArray.size(); i++) { - JsonObject signerObject = (JsonObject)signersArray.get(i); - Integer psnsignStatus ; - Integer orgsignStatus ; - if(!(signerObject.get("psnSigner").toString()).equals("null")){ - JsonObject psnSignerData = signerObject.getAsJsonObject("psnSigner"); - if(psnSignerData!=null){ - psnsignStatus = signerObject.get("signStatus").getAsInt(); - sealSignRecord.setPsnsignStatus(psnsignStatus); + } + if((psnsignStatus.intValue()==2)&&(orgsignStatus.intValue()==1)){ + //更新立案申请状态为待用印 + CaseApplication caseApplication = new CaseApplication(); + caseApplication.setId(sealSignRecord.getCaseAppliId()); - if(psnsignStatus.intValue()==2){ - //更新立案申请状态为待用印 - CaseApplication caseApplication = new CaseApplication(); + CaseApplication caseApplicationselect = caseApplicationMapper.selectCaseApplication(caseApplication); + if(caseApplicationselect.getCaseStatus().intValue()==CaseApplicationConstants.SIGN_ARBITRATION){ caseApplication.setCaseStatus(CaseApplicationConstants.ARBITRATED_SEAL); caseApplicationMapper.submitCaseApplication(caseApplication); - - + //修改"签署用印记录表"的状态为待用印 + sealSignRecord.setSignFlowStatus(2); + sealSignRecordMapper.updataSealSignRecord(sealSignRecord); } - - } - } - if(!(signerObject.get("orgSigner").toString()).equals("null")){ - JsonObject orgSignerData = signerObject.getAsJsonObject("orgSigner"); - if(orgSignerData!=null){ - orgsignStatus = signerObject.get("signStatus").getAsInt(); - sealSignRecord.setOrgsignStatus(orgsignStatus); } + if((psnsignStatus.intValue()==2)&&(orgsignStatus.intValue()==2)){ + //更新立案申请状态为待送达 + CaseApplication caseApplication = new CaseApplication(); + caseApplication.setId(sealSignRecord.getCaseAppliId()); + CaseApplication caseApplicationselect = caseApplicationMapper.selectCaseApplication(caseApplication); + if(caseApplicationselect.getCaseStatus().intValue()==CaseApplicationConstants.ARBITRATED_SEAL){ + caseApplication.setCaseStatus(CaseApplicationConstants.ARBITRATION_DELIVERY); + caseApplicationMapper.submitCaseApplication(caseApplication); + + //下载审核完成的裁决书, + String signFlowId = sealSignRecord.getSignFlowid(); + EsignHttpResponse fileDownload = SaaSAPIFileUtils.fileDownloadUrl(signFlowId); + JsonObject fileDownloadJsonObject = gson.fromJson(fileDownload.getBody(),JsonObject.class); + JsonObject fileDownloadData = fileDownloadJsonObject.getAsJsonObject("data"); + JsonArray filesArray = fileDownloadData.get("files").getAsJsonArray(); + if(filesArray!=null&&filesArray.size()>0){ + JsonObject fileObject = (JsonObject)filesArray.get(0); + String fileDownloadUrl = fileObject.get("downloadUrl").toString(); + //修改"签署用印记录表"的状态为签署完成 + sealSignRecord.setSignFlowStatus(3); + sealSignRecord.setFileDownloadUrl(fileDownloadUrl); + sealSignRecordMapper.updataSealSignRecord(sealSignRecord); + + } + } + } } } + + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SignAward.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/SignAward.java similarity index 85% rename from ruoyi-common/src/main/java/com/ruoyi/common/utils/SignAward.java rename to ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/SignAward.java index 0d1b51b..ab82797 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SignAward.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/SignAward.java @@ -1,4 +1,4 @@ -package com.ruoyi.common.utils; +package com.ruoyi.wisdomarbitrate.utils; import com.google.gson.Gson; import com.google.gson.JsonArray; @@ -6,9 +6,10 @@ import com.google.gson.JsonObject; import com.ruoyi.common.core.domain.entity.EsignHttpResponse; import com.ruoyi.common.enums.EsignRequestType; import com.ruoyi.common.exception.EsignDemoException; -import com.ruoyi.common.utils.bean.SealSignRecord; +import com.ruoyi.common.utils.EsignApplicaConfig; +import com.ruoyi.common.utils.EsignHttpHelper; +import com.ruoyi.wisdomarbitrate.domain.SealSignRecord; -import java.util.HashMap; import java.util.Map; public class SignAward { @@ -26,28 +27,6 @@ public class SignAward { SealSignRecord sealSignRecord = new SealSignRecord(); - sealSignRecord.setFileid("a808f1f39a744357a2f018e4ab34c55d"); - sealSignRecord.setFilename("23893bfd3f2249ffa5c82850c11c482e.pdf"); - sealSignRecord.setSignFlowid("41e6732b48c54c63a91b2379c352212d"); - - - sealSignRecord.setPensonAccount("18209231185"); - sealSignRecord.setPensonName("秦桃则"); - sealSignRecord.setOrgnizeName("西安云美电子科技有限公司"); - sealSignRecord.setOrgnizeNamePsnAccount("17691338406"); - sealSignRecord.setOrgnizeNamepsnName("韩超勃"); - sealSignRecord.setPositionPagepsn("2"); - - sealSignRecord.setPositionXpsn(279+20); - sealSignRecord.setPositionYpsn(216.336-20); - - sealSignRecord.setPositionPageorg("2"); - - sealSignRecord.setPositionXorg(342+30); - sealSignRecord.setPositionYorg(185.136); - - - /* 发起签署*/ // EsignHttpResponse createByFile = createByFile(sealSignRecord); @@ -106,8 +85,8 @@ public class SignAward { } } - } + System.out.println(signFlowDetailJsonObject); @@ -158,15 +137,10 @@ public class SignAward { double positionXorg = sealSignRecord.getPositionXorg(); double positionYorg = sealSignRecord.getPositionYorg(); - String jsonParm = "{\n" + " \"docs\": [\n" + " {\n" + - -// " \"fileId\": \"5bd34a81e8084acaab3287c019e82fe8\",\n" + " \"fileId\": \"" + fileId + "\",\n" + - -// " \"fileName\": \"477470a7741b4536a200c792b6ddf966.pdf\"\n" + " \"fileName\": \"" + fileName + "\"\n" + " }\n" + @@ -193,24 +167,16 @@ public class SignAward { " {\n" + " \"psnSignerInfo\": {\n" + - -// " \"psnAccount\": \"18209231185\",\n" + " \"psnAccount\": \"" + psnAccount + "\",\n" + " \"psnInfo\": {\n" + - -// " \"psnName\": \"秦桃则\"\n" + " \"psnName\": \"" + psnName + "\"\n" + " }\n" + - " },\n" + - - " \"signFields\": [\n" + " {\n" + -// " \"fileId\": \"5bd34a81e8084acaab3287c019e82fe8\",\n" + " \"fileId\": \"" + fileId + "\",\n" + " \"normalSignFieldConfig\": {\n" + @@ -218,16 +184,9 @@ public class SignAward { " \"freeMode\": false,\n" + " \"movableSignField\": false,\n" + " \"signFieldPosition\": {\n" + - -// " \"positionPage\": \"2\",\n" + " \"positionPage\": \"" + positionPagepsn + "\",\n" + - -// " \"positionX\": 310.0,\n" + " \"positionX\": " + positionXpsn + ",\n" + - -// " \"positionY\": 247.536\n" + " \"positionY\": " + positionYpsn + "\n" + - " },\n" + " \"signFieldStyle\": 1\n" + " },\n" + @@ -240,19 +199,12 @@ public class SignAward { " {\n" + " \"orgSignerInfo\": {\n" + - -// " \"orgName\": \"西安云美电子科技有限公司\",\n" + " \"orgName\": \"" + orgName + "\",\n" + - " \"transactorInfo\": {\n" + - - -// " \"psnAccount\": \"17691338406\",\n" + " \"psnAccount\": \"" + orgNamePsnAccount + "\",\n" + " \"psnInfo\": {\n" + -// " \"psnName\": \"韩超勃\"\n" + " \"psnName\": \"" + orgNamepsnName + "\"\n" + " }\n" + @@ -261,8 +213,6 @@ public class SignAward { " \"signFields\": [\n" + " {\n" + - -// " \"fileId\": \"5bd34a81e8084acaab3287c019e82fe8\",\n" + " \"fileId\": \"" + fileId + "\",\n" + " \"normalSignFieldConfig\": {\n" + @@ -271,13 +221,8 @@ public class SignAward { " \"signFieldPosition\": {\n" + -// " \"positionPage\": \"2\",\n" + " \"positionPage\": \"" + positionPageorg + "\",\n" + - -// " \"positionX\": 340.0,\n" + " \"positionX\": " + positionXorg + ",\n" + - -// " \"positionY\": 340.736\n" + " \"positionY\": " + positionYorg + "\n" + " },\n" + " \"signFieldStyle\": 1\n" + @@ -312,7 +257,6 @@ public class SignAward { String apiaddr = "/v3/sign-flow/" + signFlowId + "/sign-url"; String jsonParm = "{\n" + " \"operator\": {\n" + -// " \"psnAccount\":\"18209231185\"\n" + " \"psnAccount\": \"" + psnAccount + "\"\n" + " }\n" + "}"; @@ -337,15 +281,11 @@ public class SignAward { String orgName = sealSignRecord.getOrgnizeName(); String jsonParm = "{\n" + -// " \"needLogin\": true,\n" + " \"operator\": {\n" + -// " \"psnAccount\":\"17691338406\"\n" + " \"psnAccount\": \"" + psnAccount + "\"\n" + " },\n" + " \"organization\": {\n" + - -// " \"orgName\": \"西安云美电子科技有限公司\"\n" + " \"orgName\": \"" + orgName + "\"\n" + " }\n" + diff --git a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/SealSignRecordMapper.xml b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/SealSignRecordMapper.xml index bb0690e..ae9b8bc 100644 --- a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/SealSignRecordMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/SealSignRecordMapper.xml @@ -3,9 +3,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + INSERT INTO seal_sign_record (file_id, file_name, sign_flow_id , penson_account - ,penson_name,orgnize_name,org_name_psn_acc,org_name_psn_name,position_page_psn + ,penson_name,orgnize_name,orgn_name_psn_acc,orgn_name_psn_name,position_pagepsn ,position_xpsn,position_ypsn,position_pageorg,position_xorg,position_yorg,case_appli_id ,sign_flow_status) VALUES (#{fileid}, #{filename}, #{signFlowid},#{pensonAccount},#{pensonName},#{orgnizeName} @@ -13,4 +14,47 @@ ,#{positionPageorg},#{positionXorg},#{positionYorg},#{caseAppliId},#{signFlowStatus}) + + + + + + + + + + + + + + + + + + + + update seal_sign_record + + sign_flow_status = #{signFlowStatus}, + file_download_url = #{fileDownloadUrl} + + where id = #{id} + + + \ No newline at end of file