diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/ColumnValueLogMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/ColumnValueLogMapper.java index a9c268f..27d848f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/ColumnValueLogMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/ColumnValueLogMapper.java @@ -20,10 +20,10 @@ public interface ColumnValueLogMapper { /** * 根据案件id查询字段及值 - * @param caseId + * @param caseAppliLogId * @return */ - List listBycaseAppliLogId(@Param("caseId") Long caseId); + List listBycaseAppliLogId(@Param("caseAppliLogId") Long caseAppliLogId); List queryColumnValueList(ColumnValue columnValue); } 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 a338270..bbe7f59 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 @@ -9,6 +9,7 @@ import com.ruoyi.common.constant.CaseApplicationConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.*; import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.wisdomarbitrate.domain.vo.BookSendVO; @@ -157,6 +158,10 @@ public class AdjudicationServiceImpl implements IAdjudicationService { return AjaxResult.error("请先指定裁决书模板"); } templatePath = templateManages.get(0).getTemOrigPath(); + // todo 部署放开 + if(templatePath!=null){ + templatePath="/home/ruoyi/" +templatePath; + } templateName = templateManages.get(0).getFileName(); // 查询案件相关表信息 CaseAffiliate caseAffiliate = new CaseAffiliate(); @@ -228,12 +233,12 @@ public class AdjudicationServiceImpl implements IAdjudicationService { // todo // String modalFilePath = "/data/arbitrate-document/template/新裁决书模板.docx"; // todo -// String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; - String saveFolderPath = "D:/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; + String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; +// String saveFolderPath = "D:/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; String fileName = UUID.randomUUID().toString().replace("-", "") + ".docx"; // todo -// String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; - String saveName = "D:/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day + "/" + fileName; + String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; +// String saveName = "D:/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day + "/" + fileName; // 将word中的标签替换掉,生成新的word String docFilePath = wordChangeText(templatePath,datas,saveFolderPath,fileName); @@ -1277,23 +1282,34 @@ public class AdjudicationServiceImpl implements IAdjudicationService { public List getBookmarkByDocx(String path){ XWPFDocument xwpfDocument = null; try { + log.error("path===="+path); FileInputStream fileInputStream = new FileInputStream(path); + log.error("fileInputStream===="); xwpfDocument = new XWPFDocument(fileInputStream); + log.error("xwpfDocument===="+xwpfDocument); } catch (IOException e) { e.printStackTrace(); } + if(xwpfDocument==null){ + return new ArrayList<>(); + } List paragraphs = xwpfDocument.getParagraphs(); + if(CollectionUtil.isEmpty( xwpfDocument.getParagraphs())){ + return new ArrayList<>(); + } String regex = "\\{\\{.*?\\}\\}"; // 定义占位符的正则表达式 Pattern pattern = Pattern.compile(regex); List bookmarkList=new ArrayList<>(); for (XWPFParagraph paragraph : paragraphs) { String text = paragraph.getText(); - Matcher matcher = pattern.matcher(text); + if(StrUtil.isNotEmpty(text)) { + Matcher matcher = pattern.matcher(text); - while (matcher.find()) { - String placeholder = matcher.group(); - String keyword = placeholder.substring(2, placeholder.length() - 2); - bookmarkList.add(keyword); + while (matcher.find()) { + String placeholder = matcher.group(); + String keyword = placeholder.substring(2, placeholder.length() - 2); + bookmarkList.add(keyword); + } } } return bookmarkList; 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 e82014e..b6c20cc 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 @@ -1447,9 +1447,12 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { String annexName = caseAttach.getAnnexName(); String prefix = "/profile"; int startIndex = annexName.indexOf(prefix); + if(startIndex!=-1) { startIndex += prefix.length(); - String annexPath = "/uploadPath" + annexName.substring(startIndex); - caseAttach.setAnnexPath(annexPath); + + String annexPath = "/uploadPath" + annexName.substring(startIndex); + caseAttach.setAnnexPath(annexPath); + } int startIndexnew = annexName.lastIndexOf("/"); if (startIndexnew != -1) { String annexNamenew = annexName.substring(startIndexnew + 1); @@ -2307,8 +2310,12 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { Date startDate = messageVO.getScheduleStartTime(); Date endDate = messageVO.getScheduleEndTime(); SimpleDateFormat sdf = new SimpleDateFormat(format); - startFormat = sdf.format(startDate); - endFormat = sdf.format(endDate); + if(startDate!=null) { + startFormat = sdf.format(startDate); + } + if(endDate!=null) { + endFormat = sdf.format(endDate); + } // 预约会议短信模板 request.setTemplateId("1983711"); @@ -3093,7 +3100,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { CaseApplication caseApplication = new CaseApplication(); caseApplication.setTemplateId(templateId); //默认案件标的 todo 案件标的是什么,默认写死 - caseApplication.setCaseSubjectAmount(new BigDecimal(10000)); + caseApplication.setCaseSubjectAmount(new BigDecimal(100000)); // todo 从抓取规则表取字段和字典表取基本字段,字典表的字段名塞到基本表,is_default=1自定义字段塞到columnValue // 抓取规则,0-内置字段,1-自定义字段 Map> fatchRuleMap = fatchRuleList.stream().collect(Collectors.groupingBy(FatchRule::getIsDefault)); @@ -3105,7 +3112,8 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { ColumnValue columnValue = new ColumnValue(); columnValue.setColumn(columnRule.getColumn()); columnValue.setName(columnRule.getColumnName()); - columnValue.setValue(fatchMap.get(columnRule.getColumnName())); columnValue.setIsDefault(columnRule.getIsDefault()); + columnValue.setValue(fatchMap.get(columnRule.getColumnName())); + columnValue.setIsDefault(1); columnValueList.add(columnValue); }); } @@ -3139,12 +3147,17 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { if (null != caseApplication.getId()) { List caseAttachs = new ArrayList<>(); for (Map.Entry entry : andConvertPDF.entrySet()) { - String pdfUrl = entry.getValue(); - File file1 = new File(pdfUrl); - CaseAttach caseAttach = new CaseAttach(); + String fileUrl = entry.getValue(); + // 上传 + String filePath = RuoYiConfig.getUploadPath(); + + CaseAttach caseAttach = new CaseAttach(); caseAttach.setCaseAppliId(caseApplication.getId()); - caseAttach.setAnnexPath(file1.getPath()); - caseAttach.setAnnexName(file1.getName()); + caseAttach.setAnnexPath(filePath); + if(StrUtil.isNotEmpty(fileUrl)) { + String fileName = fileUrl.replace(filePath, "/profile/upload"); + caseAttach.setAnnexName(fileName); + } // 申请人提供的证据材料 caseAttach.setAnnexType(2); caseAttachs.add(caseAttach); diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseArbitrateServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseArbitrateServiceImpl.java index c146586..88f55e0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseArbitrateServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseArbitrateServiceImpl.java @@ -186,14 +186,14 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService { CaseLogUtils.insertCaseLog(caseApplication.getId(), CaseApplicationConstants.GENERATED_ARBITRATION, ""); } } - Boolean aBoolean1 = generateAward(caseId); - if (aBoolean1) { + // 生成裁决书 + CaseApplication application = new CaseApplication(); + application.setId(caseId); + adjudicationService.createDocument(application); //修改案件状态 caseApplication1.setCaseStatus(CaseApplicationConstants.VERPRIF_ARBITRATION); int i = caseApplicationMapper.submitCaseApplication(caseApplication1); - }else { - return AjaxResult.error("裁决书生成失败"); - } + } return AjaxResult.success("审理成功"); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/OCRUtils.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/OCRUtils.java index afdaa34..f6d6254 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/OCRUtils.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/OCRUtils.java @@ -222,17 +222,18 @@ public class OCRUtils { for (FatchRule fatchRule : fatchRules) { // 从后往前抓取 if (fatchRule.getFatchOrder() != null && fatchRule.getFatchOrder() == 1) { -// String reverseText = StrUtil.reverse(ocrText); -// if (StrUtil.isEmpty(fatchRule.getStartContent()) && StrUtil.isEmpty(fatchRule.getEndContent())) { -// fatchMap.put(fatchRule.getColumnName(), trimStr(text)); -// } else if(StrUtil.isEmpty(fatchRule.getStartContent())&&StrUtil.isNotEmpty(fatchRule.getEndContent())){ -// // 开始字段为空,结束字段不为空 -// String endReverseText = StrUtil.reverse(fatchRule.getEndContent()); -// int endContIndex = StrUtil.ordinalIndexOf(reverseText, endReverseText, fatchRule.getEndContentRepeatOrder()); -// if (endContIndex != -1) { -// String substring = text.substring(0, endContIndex); -// fatchMap.put(fatchRule.getColumnName(), trimStr(StrUtil.reverse(substring))); -// } + String reverseText = StrUtil.reverse(ocrText); + if (StrUtil.isEmpty(fatchRule.getStartContent()) && StrUtil.isEmpty(fatchRule.getEndContent())) { + fatchMap.put(fatchRule.getColumnName(), trimStr(text)); + } else if(StrUtil.isEmpty(fatchRule.getStartContent())&&StrUtil.isNotEmpty(fatchRule.getEndContent())) { + // 开始字段为空,结束字段不为空 + String endReverseText = StrUtil.reverse(fatchRule.getEndContent()); + int endContIndex = StrUtil.ordinalIndexOf(reverseText, endReverseText, fatchRule.getEndContentRepeatOrder()); + if (endContIndex != -1) { + String substring = text.substring(0, endContIndex); + fatchMap.put(fatchRule.getColumnName(), trimStr(StrUtil.reverse(substring))); + } + } // // // }else if(StrUtil.isNotEmpty(fatchRule.getStartContent())&&StrUtil.isEmpty(fatchRule.getEndContent())){ @@ -277,7 +278,7 @@ public class OCRUtils { } else { // 开始不为空结束不为空 int endContIndex = StrUtil.ordinalIndexOf(text, fatchRule.getEndContent(), fatchRule.getEndContentRepeatOrder()); - if (endContIndex != -1 && (startContIndex + fatchRule.getStartContent().length()) <= text.length()) { + if (endContIndex != -1 && (startContIndex + fatchRule.getStartContent().length()) <= text.length()&&(startContIndex + fatchRule.getStartContent().length())<=endContIndex ) { String substring = text.substring(startContIndex + fatchRule.getStartContent().length(), endContIndex); // 去除\n fatchMap.put(fatchRule.getColumnName(), trimStr(substring)); @@ -317,4 +318,71 @@ public class OCRUtils { } + public static void main(String[] args) { + String text="和 解 协 议\n" + + "\n" + + "\n" + + "甲方:上海维信荟智金融科技有限公司\n" + + "地址:上海市虹口区乍浦路89号办公楼1幢2801室\n" + + "电子邮箱【shaoyijie01@vcredit.com】\n" + + "\n" + + "乙方:【马旭】\n" + + "地址:【重庆市城口县蓼子乡长元路109号】\n" + + "手机号:【13585580076】\n" + + "身份证号:【500229198908244338】\n" + + "电子邮箱:【feiwen@vcredit.com】\n" + + "\n" + + "鉴于:\n" + + "乙方于【2023】年【3】月【1】日至【2023】年【4】月【26】日通过甲方旗下平台申请总计【2】笔贷款,本金合计【18000】元。乙方已于2023年4月31日结清上述2笔贷款。2023年10月6日,乙方称其对上述2笔贷款的担保合同、担保咨询服务合同(个人贷款委托担保合同:DD181b16j22010315099-1、担保服务合同:DD18qe30023020066644-1、担保咨询服务合同:DD18qe30023020066644-7)中约定的担保费、担保服务费不知情,向甲方要求退还上述担保费、担保服务费。甲方认为甲乙双方之间的上述合同真实有效,其中明确约定了上述担保费、担保服务费。双方因此产生纠纷。现甲方出于业务考虑,同意乙方履行保密义务的前提下,甲方给予特殊和解方案;乙方确认其充分知晓并理解本《和解协议》(下称“本协议”)中全部条款的实质含义及其相应的法律后果,并基于此种理解,履行相应义务,签署本协议。本协议于签署当日生效,对甲、乙双方具有同等法律拘束力。\n" + + "\n" + + "一、仲裁条款\n" + + "1、为了确保本协议的充分履行,甲乙双方达成一致:将本协议共同提交上海仲裁委员会予以立案确认其效力并作出裁决。由甲方作为仲裁案件申请人,乙方作为仲裁案件的被申请人。双方同意由甲方承担全部仲裁费。仲裁费以上海仲裁委员会实际出具的缴费通知书为准。双方均同意,上海仲裁委员会受理案件后,可通过电话或邮件的方式告知双方案件已受理的情况,无需再发送其他纸质书面的材料。(包括但不限于仲裁通知书、规则、名册、其他程序性文件以及本案仲裁申请书、证据材料等)。本案仲裁申请书、证据材料双方已经于提起仲裁前确认收到。\n" + + "\n" + + "双方同意本案适用快速程序,确认委托上海仲裁委员会主任指定一名仲裁员成立仲裁庭进行书面审理,并依法根据本协议作出裁决书,事实与理由从简。双方均同意放弃相应的答辩、举证等期限权利。双方同意由仲裁庭决定以其认为合适的方式,从简、从速处理本案。\n" + + "\n" + + "双方同意上海仲裁委员会通过电子送达方式向双方送达包括裁决书在内的各类仲裁法律文书,裁决书及各类仲裁法律文书发送至双方当事人所确认之电子邮箱的日期即为送达日期。双方确认本协议首部所载电子邮箱、联系地址和联系电话均为有效的送达信息。\n" + + "\n" + + "二、甲方郑重承诺\n" + + "1、甲方是独立线上消费金融服务提供商,合作方均为持牌金融机构。旗下各平台所经营的所有产品均合法合规,不存在任何违法、违规经营情形。\n" + + "2、甲方出于业务考虑,在乙方履行保密义务的前提下,给予乙方以下方案:【甲方于签署本协议之日起5日内给予乙方1000元补偿金】。\n" + + "\n" + + "三、乙方郑重承诺\n" + + "1、乙方接受甲方在本协议第二条项下所给予的和解方案,并在【3】个工作日内撤销对甲方及在甲方平台办理贷款涉及的所有资金方、担保方和其他相关方(上述公司的关联公司)的一切投诉,再无其他任何异议或主张,包括但不限于诉讼、信访、投诉、媒体平台举报等任何不利于甲方、资金方、担保方和其他相关方的言行或举动等。\n" + + "2、乙方承诺对本协议承担无限期保密义务,任何情况下不得将本协议内容泄露给任意第三方。\n" + + "3、若乙方违反上述任一承诺,则构成根本违约,应当退还甲方给予的全部补偿金,并承担违约责任。\n" + + "\n" + + "四、违约责任\n" + + "如果乙方违反本协议第三条项下任一承诺内容,则应当退还甲方给予的全部补偿金【1000】元,并向甲方一次性支付违约金【1000】元,上述金额共计【2000】元。同时,乙方应立即纠正违约行为并采取一切必要手段消除/挽回/弥补甲方因此遭受的损失或影响。\n" + + "\n" + + "\n" + + "\n" + + "甲方(盖章): 乙方(签字):\n" + + "\n" + + "日期:2023年11月3日 日期:\n" + + "\n"; + String[] split = text.split("日期:"); + int order=1; + String s1 = spiltRtoL(text); + String substring = s1.substring(0, StrUtil.ordinalIndexOf(s1, StrUtil.reverse("日期:"), 2) + "日期:".length()); + + if(split.length>0){ + String s = split[split.length - order]; + } + + } + public static String spiltRtoL(String s) { + + StringBuffer sb = new StringBuffer(); + int length = s.length(); + char[] c = new char[length]; + for (int i = 0; i < length; i++) { + c[i] = s.charAt(i); + } + for (int i = length - 1; i >= 0; i--) { + sb.append(c[i]); + } + + return sb.toString(); + } + } diff --git a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/ColumnValueLogMapper.xml b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/ColumnValueLogMapper.xml index c9aa630..661195d 100644 --- a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/ColumnValueLogMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/ColumnValueLogMapper.xml @@ -11,11 +11,11 @@ - INSERT INTO column_value_log ( `COLUMN`, `NAME`, `VALUE`, case_appli_log_id ) + INSERT INTO column_value_log ( `COLUMN`, `NAME`, `VALUE`, case_appli_log_id,is_default ) values - (#{item.column},#{item.name},#{item.value},#{item.caseAppliLogId}) + (#{item.column},#{item.name},#{item.value},#{item.caseAppliLogId},#{item.isDefault})