diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/WordUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/WordUtil.java index af78611..25d393d 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/WordUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/WordUtil.java @@ -7,8 +7,14 @@ import com.deepoove.poi.data.*; import com.deepoove.poi.data.style.ParagraphStyle; import com.deepoove.poi.data.style.Style; import com.deepoove.poi.util.PoitlIOUtils; -import org.apache.poi.xwpf.usermodel.ParagraphAlignment; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.wp.usermodel.Paragraph; +import org.apache.poi.xwpf.usermodel.*; +import javax.print.Doc; import javax.servlet.http.HttpServletResponse; import java.io.BufferedOutputStream; import java.io.FileOutputStream; @@ -93,7 +99,7 @@ public class WordUtil { style.setFontSize(12.0); ParagraphStyle paragraphStyle = ParagraphStyle.builder() .withAlign(ParagraphAlignment.CENTER) - // .withBackgroundColor(headerBackgroundColor) + // .withBackgroundColor(headerBackgroundColor) .withDefaultTextStyle(style) .build(); paragraphRenderData.addText(headerList.get(i)); @@ -139,18 +145,62 @@ public class WordUtil { public static PictureRenderData rebuildImageContent(Integer with, Integer height, String imageUrl, String relatedPath, Byte[] imageBytes) { PictureRenderData pictureRenderData = null; if (!StringUtils.isBlank(imageUrl)) { - // pictureRenderData = Pictures.of(imageUrl).size(with, height).create(); + // pictureRenderData = Pictures.of(imageUrl).size(with, height).create(); //Pictures.PictureBuilder pictureBuilder = Pictures.of("https://res.wx.qq.com/a/wx_fed/weixin_portal/res/static/img/1EtCRvm.png"); - }else if (!StringUtils.isBlank(relatedPath)) { - pictureRenderData = Pictures.ofLocal(relatedPath).size(with,height).create(); + } else if (!StringUtils.isBlank(relatedPath)) { + pictureRenderData = Pictures.ofLocal(relatedPath).size(with, height).create(); // Pictures.PictureBuilder pictureBuilder = Pictures.of("https://res.wx.qq.com/a/wx_fed/weixin_portal/res/static/img/1EtCRvm.png"); } return pictureRenderData; } + public static String getResultFilePath(Map datas, Configure config, String modalFilePath, String resultFilePath) throws IOException { //获取word模板和填充数据 - XWPFTemplate template = XWPFTemplate.compile(modalFilePath,config).render(datas); + XWPFTemplate template = XWPFTemplate.compile(modalFilePath, config).render(datas); template.writeAndClose(new FileOutputStream(resultFilePath)); return resultFilePath; } + + public static void changeText(XWPFDocument document) { + //获取文字段落集合 + List paragraphs = document.getParagraphs(); + //所有类型集合(文字段落、表格、图片等) + List listBe = document.getBodyElements(); + List runList = new ArrayList<>(); + int n = 0; + + for (int i = 0; i < listBe.size(); i++) { + + //BodyElementType.PARAGRAPH : 枚举中的文字段落 + //文字为空时,先添加到list中; + //注意picture类型也在PARAGRAPH中,需要校验embeddedPictures的长度是否为0 + //为0表示空行,大于0表示有图片,可能还有其他类型,暂时没遇到,各位自行斟酌 + if (paragraphs.size() > n && !paragraphs.get(n).getRuns().isEmpty()) { + if (StringUtils.isEmpty(paragraphs.get(n).getRuns().get(0).text()) + && paragraphs.get(n).getRuns().get(0).getEmbeddedPictures().size() == 0) { + + runList.add(i); + + } + } + n++; + + //非文字段落n-1 + if (listBe.get(i).getElementType() != BodyElementType.PARAGRAPH) { + n--; + } + + } + + //遍历list删除 + if (!runList.isEmpty()) { + for (int i = runList.size() - 1; i >= 0; i--) { + int index = runList.get(i); + if (index >= 0 && index < document.getBodyElements().size()) { + document.removeBodyElement(index); + } + } + } + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/CaseAttachMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/CaseAttachMapper.java index c455c8a..5c3fe62 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/CaseAttachMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/CaseAttachMapper.java @@ -2,15 +2,16 @@ package com.ruoyi.wisdomarbitrate.mapper; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; import com.ruoyi.wisdomarbitrate.domain.CaseAttach; -import com.ruoyi.wisdomarbitrate.domain.SealSignRecord; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +@Mapper public interface CaseAttachMapper { int save(CaseAttach caseAttach); - List queryAnnexPathByCaseId(Long id); + List queryAnnexPathByCaseId(Long id); List queryCaseAttachList(CaseApplication caseApplication); @@ -20,4 +21,6 @@ public interface CaseAttachMapper { int updateCaseAttachBycaseid(CaseAttach caseAttach); int deleteByFileIds(@Param("ids") List fileIds); + + List getCaseAttachByCaseIdAndType(CaseAttach caseAttach); } 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 2adbd81..3651e17 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 @@ -17,6 +17,9 @@ import com.ruoyi.wisdomarbitrate.service.IAdjudicationService; import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService; import com.ruoyi.wisdomarbitrate.service.ICaseLogRecordService; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.MailSendException; import org.springframework.mail.javamail.JavaMailSender; @@ -57,7 +60,6 @@ public class AdjudicationServiceImpl implements IAdjudicationService { private ICaseLogRecordService caseLogRecordService; @Autowired private RedisCache redisCache; - @Autowired private SendMailRecordMapper sendMailRecordMapper; @@ -160,7 +162,7 @@ public class AdjudicationServiceImpl implements IAdjudicationService { datas.put("arbitratorName", arbitratorName); Integer arbitratMethod = caseApplication1.getArbitratMethod(); Date hearDate = caseApplication1.getHearDate(); - if (hearDate!=null){ + if (hearDate != null) { String hearDateStr = sdf.format(hearDate); //线上开庭时 if (arbitratMethod == 1) { @@ -264,10 +266,10 @@ public class AdjudicationServiceImpl implements IAdjudicationService { datas.put("year", year); String month = String.format("%02d", now.getMonthValue()); String day = String.format("%02d", now.getDayOfMonth()); - String modalFilePath = "/data/arbitrate-document/template/新裁决书模板.docx"; - //String modalFilePath = "D:/develop/新裁决书模板.docx"; - String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; - //String saveFolderPath = "D:/data/" + year + "/" + month + "/" + day; + //String modalFilePath = "/data/arbitrate-document/template/新裁决书模板.docx"; + String modalFilePath = "D:/develop/新裁决书模板.docx"; + //String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; + String saveFolderPath = "D:/data/" + year + "/" + month + "/" + day; String fileName = UUID.randomUUID().toString().replace("-", "") + ".docx"; String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; String resultFilePath = saveFolderPath + "/" + fileName; @@ -280,24 +282,34 @@ public class AdjudicationServiceImpl implements IAdjudicationService { Path destinationPath = new File(resultFilePath).toPath(); Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING); String docFilePath = WordUtil.getDocFilePath(datas, modalFilePath, resultFilePath); + File file = new File(docFilePath); + if (file.exists()) { + InputStream in = new FileInputStream(file); + XWPFDocument xwpfDocument = new XWPFDocument(in); + WordUtil.changeText(xwpfDocument); + } String savePath = docFilePath.substring(0, docFilePath.indexOf("/upload/") + 8); - //修改案件状态 - caseApplication1.setCaseStatus(CaseApplicationConstants.VERPRIF_ARBITRATION); - caseApplicationMapper.submitCaseApplication(caseApplication1); - //将裁决书保存到附件表里 CaseAttach caseAttach = CaseAttach.builder() .caseAppliId(id) .annexName(saveName) .annexPath(savePath) .annexType(3) .build(); - int i = caseAttachMapper.save(caseAttach); - if (i > 0) { - if (arbitrateRecord1 != null) { - Integer annexId = caseAttach.getAnnexId(); - //将附件id保存到仲裁记录表里面 - arbitrateRecord1.setAnnexId(annexId); - arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord1); + //保存到附件表里,先判断之前有没有,有的话更新,没有的话新增 + List caseAttachList = caseAttachMapper.getCaseAttachByCaseIdAndType(caseAttach); + if (caseAttachList != null ) { + //之前已经生成过了,更新 + caseAttachMapper.updateCaseAttachBycaseid(caseAttach); + }else { + //之前没生成过,新增 + int i = caseAttachMapper.save(caseAttach); + if (i > 0) { + if (arbitrateRecord1 != null) { + Integer annexId = caseAttach.getAnnexId(); + //将附件id保存到仲裁记录表里面 + arbitrateRecord1.setAnnexId(annexId); + arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord1); + } } } 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 ebbbe1c..a2991ea 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 @@ -2073,7 +2073,6 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { caseApplication.setFilearbitraUrl(filearbitraUrl); } } - return caseApplication; } 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 399c242..a95c3ea 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 @@ -3,21 +3,27 @@ package com.ruoyi.wisdomarbitrate.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.ruoyi.common.constant.CaseApplicationConstants; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.WordUtil; import com.ruoyi.wisdomarbitrate.domain.*; import com.ruoyi.wisdomarbitrate.mapper.*; +import com.ruoyi.wisdomarbitrate.service.IAdjudicationService; import com.ruoyi.wisdomarbitrate.utils.CaseLogUtils; import com.ruoyi.common.utils.SmsUtils; import com.ruoyi.wisdomarbitrate.service.ICaseArbitrateService; +import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.ZoneId; import java.util.*; @@ -40,6 +46,10 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService { private CaseAttachMapper caseAttachMapper; @Autowired private SmsRecordMapper smsRecordMapper; + @Autowired + private IAdjudicationService adjudicationService; + @Autowired + private RedisCache redisCache; @Override @Transactional @@ -155,7 +165,6 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService { } else { //提交仲裁结果 int i = arbitrateRecordMapper.insertArbitrateRecord(arbitrateRecord); - if (i > 0) { //案件日志表里添加数据 CaseLogRecord caseLogRecord = new CaseLogRecord(); @@ -167,16 +176,50 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService { caseLogRecordMapper.insertCaseLogRecord(caseLogRecord); // 新增日志 CaseLogUtils.insertCaseLog(caseApplication.getId(), CaseApplicationConstants.GENERATED_ARBITRATION, ""); - } } - //生成庭审笔录 + + //根据仲裁方式决定生成裁决书还是庭审笔录 + Integer arbitratMethod = caseApplication1.getArbitratMethod(); + if (arbitratMethod == 1) { + //开庭审理,需要生成裁决书和庭审笔录 + Boolean aBoolean = generateTrialTranscripts(arbitrateRecord); + Boolean aBoolean1 = generateAward(arbitrateRecord); + if (aBoolean && aBoolean1) { + //修改案件状态 + caseApplication1.setCaseStatus(CaseApplicationConstants.VERPRIF_ARBITRATION); + int i = caseApplicationMapper.submitCaseApplication(caseApplication1); + if (i > 0) { + return AjaxResult.success("审理成功"); + } + } + } else if (arbitratMethod == 2) { + //书面审理,只生成裁决书 + Boolean aBoolean = generateAward(arbitrateRecord); + if (aBoolean) { + //修改案件状态 + caseApplication1.setCaseStatus(CaseApplicationConstants.VERPRIF_ARBITRATION); + int i = caseApplicationMapper.submitCaseApplication(caseApplication1); + if (i > 0) { + return AjaxResult.success("审理成功"); + } + } + } else { + return AjaxResult.error("请确认仲裁方式"); + } + return null; + } + + + //生成庭审笔录 + private Boolean generateTrialTranscripts(ArbitrateRecord arbitrateRecord) { try { Map datas = new HashMap<>(); - Long id = caseApplication.getId(); - - + Long id = arbitrateRecord.getCaseAppliId(); + CaseApplication caseApplication = new CaseApplication(); + caseApplication.setId(id); + CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); //获取案件关联人信息 CaseAffiliate caseAffiliate = new CaseAffiliate(); caseAffiliate.setCaseAppliId(id); @@ -200,10 +243,10 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService { } } } - String arbitratorName = caseApplication.getArbitratorName(); - datas.put("caseName", caseApplication.getCaseName()); + String arbitratorName = caseApplication1.getArbitratorName(); + datas.put("caseName", caseApplication1.getCaseName()); datas.put("arbitratorName", arbitratorName); - Date hearDate = caseApplication.getHearDate(); + Date hearDate = caseApplication1.getHearDate(); if (hearDate != null) { LocalDate localDate = hearDate.toInstant() .atZone(ZoneId.systemDefault()) @@ -216,7 +259,7 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService { datas.put("hearMonths", null); datas.put("hearDay", null); } - datas.put("appArbitrationClaims", caseApplication.getArbitratClaims()); + datas.put("appArbitrationClaims", caseApplication1.getArbitratClaims()); datas.put("evidenDetermi", arbitrateRecord.getEvidenDetermi()); datas.put("factDetermi", arbitrateRecord.getFactDetermi()); datas.put("caseSketch", arbitrateRecord.getCaseSketch()); @@ -231,9 +274,9 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService { datas.put("months", month); datas.put("day", day); String modalFilePath = "/data/arbitrate-document/template/仲裁裁决书模板.docx"; -// String modalFilePath = "D:/develop/仲裁裁决书模板 (2).docx"; + //String modalFilePath = "D:/develop/仲裁裁决书模板 (2).docx"; String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; -// String saveFolderPath = "D:/data/" + now.getYear() + "/" + now.getMonthValue() + "/" + now.getDayOfMonth(); + //String saveFolderPath = "D:/data/" + now.getYear() + "/" + now.getMonthValue() + "/" + now.getDayOfMonth(); String fileName = UUID.randomUUID().toString().replace("-", "") + ".docx"; String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; String resultFilePath = saveFolderPath + "/" + fileName; @@ -247,34 +290,321 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService { Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING); String docFilePath = WordUtil.getDocFilePath(datas, modalFilePath, resultFilePath); String savePath = docFilePath.substring(0, docFilePath.indexOf("/upload/") + 8); + CaseAttach caseAttach = CaseAttach.builder() + .caseAppliId(id) + .annexName(saveName) + .annexPath(savePath) + .annexType(7) + .build(); + //保存到附件表里,先判断之前有没有,有的话更新,没有的话新增 + CaseAttach caseAttach1 = new CaseAttach(); + caseAttach1.setAnnexType(7); + caseAttach1.setCaseAppliId(id); + List caseAttachList = caseAttachMapper.getCaseAttachByCaseIdAndType(caseAttach1); + if (caseAttachList != null && caseAttachList.size() > 0) { + //之前已经生成过了,更新 + caseAttachMapper.updateCaseAttachBycaseid(caseAttach); + } else { + //之前没生成过,新增 + int i = caseAttachMapper.save(caseAttach); + ArbitrateRecord arbitrateRecord1 = arbitrateRecordMapper.selectArbitrateRecord(arbitrateRecord); + if (i > 0) { + if (arbitrateRecord1 != null) { + Integer annexId = caseAttach.getAnnexId(); + //将附件id保存到仲裁记录表里面 + arbitrateRecord1.setAnnexId(annexId); + arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord1); + } + } + } + return Boolean.TRUE; - //修改案件状态 - caseApplication1.setCaseStatus(CaseApplicationConstants.VERPRIF_ARBITRATION); - caseApplicationMapper.submitCaseApplication(caseApplication1); + } catch (IOException e) { + e.printStackTrace(); + return Boolean.FALSE; + } + } - //将裁决书保存到附件表里 + //生成仲裁文书 + private Boolean generateAward(ArbitrateRecord arbitrateRecord) { + try { + Map datas = new HashMap<>(); + Long id = arbitrateRecord.getCaseAppliId(); + if (id == null) { + return null; + } + //获取案件详细信息 + CaseApplication caseApplication = new CaseApplication(); + caseApplication.setId(id); + CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); + //生成编码 + String equipmentNo = getNewEquipmentNo(); + datas.put("num", equipmentNo); + //获取仲裁记录表里的相关信息 + ArbitrateRecord arbitrateRecord1 = arbitrateRecordMapper.selectArbitrateRecord(arbitrateRecord); + //获取案件关联人信息 + CaseAffiliate caseAffiliate = new CaseAffiliate(); + caseAffiliate.setCaseAppliId(id); + List caseAffiliates = caseAffiliateMapper.selectCaseAffiliate(caseAffiliate); + List nameAgentList = new ArrayList<>(); + if (caseAffiliates != null && caseAffiliates.size() > 0) { + for (CaseAffiliate affiliate : caseAffiliates) { + //获取身份类型 + int identityType = affiliate.getIdentityType(); + if (identityType == 1) { //申请人 + datas.put("appName", affiliate.getName()); + datas.put("appAddress", affiliate.getResidenAffili()); + datas.put("appContactAddress", affiliate.getContactAddress()); + datas.put("appLegalPerson", affiliate.getCompLegalPerson()); + datas.put("appLegalPersonTitle", affiliate.getCompLegalperPost()); + datas.put("appAgentName", affiliate.getNameAgent()); + datas.put("appAgentTitle", affiliate.getAppliAgentTitle()); + nameAgentList.add(affiliate.getNameAgent()); + } else if (identityType == 2) { //被申请人 + datas.put("resName", affiliate.getName()); + datas.put("resAddress", affiliate.getResidenAffili()); + datas.put("resSex", affiliate.getResponSex()); + Date responBirth = affiliate.getResponBirth(); + if (responBirth != null) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String responBirthStr = sdf.format(responBirth); + datas.put("resDateOfBirth", responBirthStr); + + } + + datas.put("resContactAddress", affiliate.getContactAddress()); + nameAgentList.add(affiliate.getNameAgent()); + } + } + } + Date createTime = caseApplication1.getCreateTime(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 将日期格式化为字符串 + String createTimeStr = sdf.format(createTime); + datas.put("submissionDate", createTimeStr); + Date registerDate = caseApplication1.getRegisterDate(); + String registerDateStr = sdf.format(registerDate); + datas.put("acceptDate", registerDateStr); + //反请求 + Integer adjudicaCounter = caseApplication1.getAdjudicaCounter(); + String counterclaim = "在《2022年版仲裁规则》第十八条第(一)项规定的期限内,被申请人向秘书处提交了" + + "《仲裁反请求申请书》及证据材料。仲裁委依据《2022年版仲裁规则》第十八条的规定受理了该仲裁反请求案申请。" + + "仲裁反请求案件受理后,秘书处向被申请人发送了仲裁反请求通知书及附件,向申请人发送了仲裁反请求通知书及附件、仲裁反请求申请书及附件。"; + if (adjudicaCounter == null) { + datas.put("counterclaim", null); + } else if (adjudicaCounter == 1) { + datas.put("counterclaim", counterclaim); + } else { + datas.put("counterclaim", null); + } + //财产保全 + Integer properPreser = caseApplication1.getProperPreser(); + String preservation = "本案受理后,申请人向仲裁委提交了财产保全申请,仲裁委根据《中华人民共和国仲裁法》" + + "第二十八条之规定,将该申请提交至法院。"; + if (properPreser == null) { + datas.put("preservation", null); + } else if (properPreser == 1) { + datas.put("preservation", preservation); + } else { + datas.put("preservation", null); + } + //管辖权异议 + Integer objectiJuris = caseApplication1.getObjectiJuris(); + String jurisdictionalObjection = "本案受理后,被申请人向仲裁委提交了《XX管辖异议申请书》,认为XXXXXX" + + ",仲裁委经审理,当庭驳回了被申请人的管辖异议申请,并告知被申请人具体的事实和理由将在裁决书中一并列明。"; + if (objectiJuris == null) { + datas.put("jurisdictionalObjection", null); + } else if (objectiJuris == 1) { + datas.put("jurisdictionalObjection", jurisdictionalObjection); + } else { + datas.put("jurisdictionalObjection", null); + } + String arbitratorName = caseApplication1.getArbitratorName(); + datas.put("arbitratorName", arbitratorName); + Integer arbitratMethod = caseApplication1.getArbitratMethod(); + Date hearDate = caseApplication1.getHearDate(); + if (hearDate != null) { + String hearDateStr = sdf.format(hearDate); + //线上开庭时 + if (arbitratMethod == 1) { + String onLine1 = "仲裁庭审阅了申请人提交的仲裁申请书、证据材料后,于"; + String onLine2 = "通过仲裁委智慧仲裁平台开庭审理了本案。"; + datas.put("onLine1", onLine1); + datas.put("hearDate", hearDateStr); + datas.put("onLine2", onLine2); + } else { + //书面仲裁时 + String written1 = "仲裁庭审阅了申请人提交的仲裁申请书、证据材料后,于"; + String written2 = "在仲裁委所在地开庭审理了本案。"; + datas.put("written1", written1); + datas.put("hearDate1", hearDateStr); + datas.put("written2", written2); + } + } + Integer isAbsence = caseApplication1.getIsAbsence(); + if (isAbsence == null) { + datas.put("absent1", null); + datas.put("absent2", null); + datas.put("absent3", null); + datas.put("absent4", null); + datas.put("absent5", null); + datas.put("attend1", null); + datas.put("attend2", null); + datas.put("attend3", null); + datas.put("attend4", null); + datas.put("attend5", null); + datas.put("attend6", null); + datas.put("attend7", null); + datas.put("appAgentName1", null); + datas.put("appAgentName2", null); + datas.put("resAgentName", null); + } else if (isAbsence == 1) { + //缺席审理 + String absent1 = "申请人的特别授权委托代理人"; + String absent2 = "出席了庭审。被申请人经依法送达开庭通知,无正当理由未出席庭审,故仲裁庭依据" + + "《2022年版仲裁规则》第四十条第(二)项的规定,对本案进行了缺席审理。"; + String absent3 = "庭审中,申请人陈述了仲裁请求事项及事实与理由,出示了证据材料并进行了说明," + + "发表了意见,回答了仲裁庭的提问,并作了最后陈述。因被申请人缺席庭审,故仲裁庭无法组织调解。"; + String absent4 = "(二/三)当事人提供的证据材料\n" + + "申请人为证明其主张的事实和理由,向仲裁庭提交了如下证据材料:"; + String absent5 = "综上,仲裁庭依据《上海仲裁委员会仲裁规则》(2022年7月1日起施行的版本)" + + "第四十条第(二)项、第五十一条的规定,缺席裁决如下:"; + datas.put("absent1", absent1); + datas.put("absent2", absent2); + datas.put("absent3", absent3); + datas.put("absent4", absent4); + datas.put("absent5", absent5); + datas.put("appAgentName1", nameAgentList.get(0)); + } else { + //出席审理 + String attend1 = "申请人的特别授权委托代理人"; + String attend2 = "和被申请人本人/的特别授权委托代理人"; + String attend3 = "出席了庭审。"; + String attend4 = "庭审中,申请人陈述了仲裁请求事项及所依据的事实与理由,被申请人进行了答辩;" + + "双方当事人均出示了证据材料并对对方的证据材料进行了质证;申请人出示了证据材料," + + "被申请人对对方的证据材料进行了质证;双方当事人均回答了仲裁庭的提问,进行了辩论," + + "并分别作了最后陈述。双方当事人在仲裁庭的主持下进行了调解,但未能达成调解协议。"; + String attend5 = "(二)被申请人的答辩意见"; + String attend6 = "(二/三)当事人提供的证据材料及对方的质证意见\n" + + "申请人为证明其主张的事实和理由,向仲裁庭提交了如下证据材料:"; + String attend7 = "被申请人对上述材料的质证意见为:"; + datas.put("attend1", attend1); + datas.put("attend2", attend2); + datas.put("attend3", attend3); + datas.put("attend4", attend4); + datas.put("attend5", attend5); + datas.put("attend6", attend6); + datas.put("attend7", attend7); + datas.put("responCrossOpin", caseApplication1.getResponCrossOpin()); + datas.put("appAgentName2", nameAgentList.get(0)); + datas.put("resAgentName", nameAgentList.get(1)); + if (arbitratMethod == 1) { + //被申出席+开庭 + String attend8 = "综上,仲裁庭依据《上海仲裁委员会仲裁规则》(2022年7月1日起施行的版本)" + + "第五十一条的规定,裁决如下:"; + datas.put("attend8", attend8); + } else { + //被申出席+书面 + String attend9 = "综上,仲裁庭依据《上海仲裁委员会仲裁规则》(2022年7月1日起施行的版本)" + + "第五十一条、第五十八条的规定,裁决如下:"; + datas.put("attend9", attend9); + } + } + datas.put("claims", caseApplication1.getArbitratClaims()); + datas.put("request", caseApplication1.getRequestRule()); + //申请人证据材料 + datas.put("appEvidenceMaterial", null); + //被申请人证据材料 + datas.put("resEvidenceMaterial", null); + datas.put("applicaCrossOpin", caseApplication1.getApplicaCrossOpin()); + if (arbitrateRecord1 != null) { + datas.put("factDetermi", arbitrateRecord1.getFactDetermi()); + datas.put("arbitrateThink", arbitrateRecord1.getArbitrateThink()); + datas.put("rulingFollows", arbitrateRecord1.getRulingFollows()); + } + LocalDate now = LocalDate.now(); + String year = Integer.toString(now.getYear()); + datas.put("year", year); + String month = String.format("%02d", now.getMonthValue()); + String day = String.format("%02d", now.getDayOfMonth()); + String modalFilePath = "/data/arbitrate-document/template/新裁决书模板.docx"; + //String modalFilePath = "D:/develop/新裁决书模板.docx"; + String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; + //String saveFolderPath = "D:/data/" + year + "/" + month + "/" + day; + String fileName = UUID.randomUUID().toString().replace("-", "") + ".docx"; + String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; + String resultFilePath = saveFolderPath + "/" + fileName; + // 创建日期目录 + File saveFolder = new File(saveFolderPath); + if (!saveFolder.exists()) { + saveFolder.mkdirs(); + } + Path sourcePath = new File(modalFilePath).toPath(); + Path destinationPath = new File(resultFilePath).toPath(); + Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING); + String docFilePath = WordUtil.getDocFilePath(datas, modalFilePath, resultFilePath); + File file = new File(docFilePath); + if (file.exists()) { + InputStream in = new FileInputStream(file); + XWPFDocument xwpfDocument = new XWPFDocument(in); + WordUtil.changeText(xwpfDocument); + } + String savePath = docFilePath.substring(0, docFilePath.indexOf("/upload/") + 8); CaseAttach caseAttach = CaseAttach.builder() .caseAppliId(id) .annexName(saveName) .annexPath(savePath) .annexType(3) .build(); - int i = caseAttachMapper.save(caseAttach); - if (i > 0) { - if (arbitrateRecord1 != null) { - Integer annexId = caseAttach.getAnnexId(); - //将附件id保存到仲裁记录表里面 - arbitrateRecord1.setAnnexId(annexId); - arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord1); + //保存到附件表里,先判断之前有没有,有的话更新,没有的话新增 + CaseAttach caseAttach1 = new CaseAttach(); + caseAttach1.setAnnexType(3); + caseAttach1.setCaseAppliId(id); + List caseAttachList = caseAttachMapper.getCaseAttachByCaseIdAndType(caseAttach1); + if (caseAttachList != null && caseAttachList.size() > 0) { + //之前已经生成过了,更新 + caseAttachMapper.updateCaseAttachBycaseid(caseAttach); + } else { + //之前没生成过,新增 + int i = caseAttachMapper.save(caseAttach); + if (i > 0) { + if (arbitrateRecord1 != null) { + Integer annexId = caseAttach.getAnnexId(); + //将附件id保存到仲裁记录表里面 + arbitrateRecord1.setAnnexId(annexId); + arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord1); + } } } - return AjaxResult.success("裁决书已生成"); - + return Boolean.TRUE; } catch (IOException e) { - e.printStackTrace(); - return AjaxResult.error("裁决书生成异常"); + return Boolean.FALSE; } + } - + public String getNewEquipmentNo() { + Object awardNum = redisCache.getCacheObject("awardNum"); + if (awardNum == null) { + redisCache.setCacheObject("awardNum", "00001"); + String s = redisCache.getCacheObject("awardNum").toString(); + // 字符串数字解析为整数 + int no = Integer.parseInt(s); + // 最新设备编号自增1 + int newEquipment = ++no; + // 将整数格式化为5位数字 + s = String.format("%05d", newEquipment); + redisCache.setCacheObject("awardNum", s); + return s; + } else { + String s = awardNum.toString(); + // 字符串数字解析为整数 + int no = Integer.parseInt(s); + // 最新设备编号自增1 + int newEquipment = ++no; + // 将整数格式化为5位数字 + s = String.format("%05d", newEquipment); + redisCache.setCacheObject("awardNum", s); + return s; + } } } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/MyTest.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/MyTest.java new file mode 100644 index 0000000..586b79b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/MyTest.java @@ -0,0 +1,37 @@ +package com.ruoyi.wisdomarbitrate.utils; + +import java.io.BufferedInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; + +public class MyTest { + public static void download(String fileUrl, String saveFilePath) throws IOException { + URL url = new URL(fileUrl); + InputStream inputStream = url.openStream(); + BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); + FileOutputStream fileOutputStream = new FileOutputStream(saveFilePath); + + byte[] buffer = new byte[1024]; + int bytesRead = 0; + while ((bytesRead = bufferedInputStream.read(buffer, 0, buffer.length)) != -1) { + fileOutputStream.write(buffer, 0, bytesRead); + } + + fileOutputStream.close(); + bufferedInputStream.close(); + inputStream.close(); + } + + public static void main(String[] args) { + String fileUrl = "https://esignoss.esign.cn/1111563786/0e16cc53-fe2e-403b-b901-587778a8ea92/3ed8f1b0bd2640e895fcfbaffdec0a1e.pdf?Expires=1698742492&OSSAccessKeyId=LTAI4G23YViiKnxTC28ygQzF&Signature=K%2Bb5k7DqNmaxeu%2Fct5qis4qor7s%3D"; + String saveFilePath = "D:\\home\\example.pdf"; + try { + download(fileUrl, saveFilePath); + System.out.println("File downloaded successfully."); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml index d68b234..82ce660 100644 --- a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml @@ -31,6 +31,19 @@ where case_appli_id =#{id} + +