10.31开发

This commit is contained in:
hejinbo
2023-10-31 19:15:46 +08:00
parent 580901e91c
commit 2238224e83
7 changed files with 495 additions and 58 deletions
@@ -7,8 +7,14 @@ import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.ParagraphStyle; import com.deepoove.poi.data.style.ParagraphStyle;
import com.deepoove.poi.data.style.Style; import com.deepoove.poi.data.style.Style;
import com.deepoove.poi.util.PoitlIOUtils; 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 javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@@ -141,16 +147,60 @@ public class WordUtil {
if (!StringUtils.isBlank(imageUrl)) { 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"); //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)) { } else if (!StringUtils.isBlank(relatedPath)) {
pictureRenderData = Pictures.ofLocal(relatedPath).size(with,height).create(); 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"); // Pictures.PictureBuilder pictureBuilder = Pictures.of("https://res.wx.qq.com/a/wx_fed/weixin_portal/res/static/img/1EtCRvm.png");
} }
return pictureRenderData; return pictureRenderData;
} }
public static String getResultFilePath(Map<String, Object> datas, Configure config, String modalFilePath, String resultFilePath) throws IOException { public static String getResultFilePath(Map<String, Object> datas, Configure config, String modalFilePath, String resultFilePath) throws IOException {
//获取word模板和填充数据 //获取word模板和填充数据
XWPFTemplate template = XWPFTemplate.compile(modalFilePath,config).render(datas); XWPFTemplate template = XWPFTemplate.compile(modalFilePath, config).render(datas);
template.writeAndClose(new FileOutputStream(resultFilePath)); template.writeAndClose(new FileOutputStream(resultFilePath));
return resultFilePath; return resultFilePath;
} }
public static void changeText(XWPFDocument document) {
//获取文字段落集合
List<XWPFParagraph> paragraphs = document.getParagraphs();
//所有类型集合(文字段落、表格、图片等)
List<IBodyElement> listBe = document.getBodyElements();
List<Integer> 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);
}
}
}
}
} }
@@ -2,11 +2,12 @@ package com.ruoyi.wisdomarbitrate.mapper;
import com.ruoyi.wisdomarbitrate.domain.CaseApplication; import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
import com.ruoyi.wisdomarbitrate.domain.CaseAttach; import com.ruoyi.wisdomarbitrate.domain.CaseAttach;
import com.ruoyi.wisdomarbitrate.domain.SealSignRecord; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@Mapper
public interface CaseAttachMapper { public interface CaseAttachMapper {
int save(CaseAttach caseAttach); int save(CaseAttach caseAttach);
@@ -20,4 +21,6 @@ public interface CaseAttachMapper {
int updateCaseAttachBycaseid(CaseAttach caseAttach); int updateCaseAttachBycaseid(CaseAttach caseAttach);
int deleteByFileIds(@Param("ids") List<Integer> fileIds); int deleteByFileIds(@Param("ids") List<Integer> fileIds);
List<CaseAttach> getCaseAttachByCaseIdAndType(CaseAttach caseAttach);
} }
@@ -17,6 +17,9 @@ import com.ruoyi.wisdomarbitrate.service.IAdjudicationService;
import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService; import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService;
import com.ruoyi.wisdomarbitrate.service.ICaseLogRecordService; import com.ruoyi.wisdomarbitrate.service.ICaseLogRecordService;
import lombok.extern.slf4j.Slf4j; 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.beans.factory.annotation.Autowired;
import org.springframework.mail.MailSendException; import org.springframework.mail.MailSendException;
import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSender;
@@ -57,7 +60,6 @@ public class AdjudicationServiceImpl implements IAdjudicationService {
private ICaseLogRecordService caseLogRecordService; private ICaseLogRecordService caseLogRecordService;
@Autowired @Autowired
private RedisCache redisCache; private RedisCache redisCache;
@Autowired @Autowired
private SendMailRecordMapper sendMailRecordMapper; private SendMailRecordMapper sendMailRecordMapper;
@@ -160,7 +162,7 @@ public class AdjudicationServiceImpl implements IAdjudicationService {
datas.put("arbitratorName", arbitratorName); datas.put("arbitratorName", arbitratorName);
Integer arbitratMethod = caseApplication1.getArbitratMethod(); Integer arbitratMethod = caseApplication1.getArbitratMethod();
Date hearDate = caseApplication1.getHearDate(); Date hearDate = caseApplication1.getHearDate();
if (hearDate!=null){ if (hearDate != null) {
String hearDateStr = sdf.format(hearDate); String hearDateStr = sdf.format(hearDate);
//线上开庭时 //线上开庭时
if (arbitratMethod == 1) { if (arbitratMethod == 1) {
@@ -264,10 +266,10 @@ public class AdjudicationServiceImpl implements IAdjudicationService {
datas.put("year", year); datas.put("year", year);
String month = String.format("%02d", now.getMonthValue()); String month = String.format("%02d", now.getMonthValue());
String day = String.format("%02d", now.getDayOfMonth()); String day = String.format("%02d", now.getDayOfMonth());
String modalFilePath = "/data/arbitrate-document/template/新裁决书模板.docx"; //String modalFilePath = "/data/arbitrate-document/template/新裁决书模板.docx";
//String modalFilePath = "D:/develop/新裁决书模板.docx"; String modalFilePath = "D:/develop/新裁决书模板.docx";
String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; //String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day;
//String saveFolderPath = "D:/data/" + year + "/" + month + "/" + day; String saveFolderPath = "D:/data/" + year + "/" + month + "/" + day;
String fileName = UUID.randomUUID().toString().replace("-", "") + ".docx"; String fileName = UUID.randomUUID().toString().replace("-", "") + ".docx";
String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
String resultFilePath = saveFolderPath + "/" + fileName; String resultFilePath = saveFolderPath + "/" + fileName;
@@ -280,17 +282,26 @@ public class AdjudicationServiceImpl implements IAdjudicationService {
Path destinationPath = new File(resultFilePath).toPath(); Path destinationPath = new File(resultFilePath).toPath();
Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING); Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);
String docFilePath = WordUtil.getDocFilePath(datas, modalFilePath, resultFilePath); 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); String savePath = docFilePath.substring(0, docFilePath.indexOf("/upload/") + 8);
//修改案件状态
caseApplication1.setCaseStatus(CaseApplicationConstants.VERPRIF_ARBITRATION);
caseApplicationMapper.submitCaseApplication(caseApplication1);
//将裁决书保存到附件表里
CaseAttach caseAttach = CaseAttach.builder() CaseAttach caseAttach = CaseAttach.builder()
.caseAppliId(id) .caseAppliId(id)
.annexName(saveName) .annexName(saveName)
.annexPath(savePath) .annexPath(savePath)
.annexType(3) .annexType(3)
.build(); .build();
//保存到附件表里,先判断之前有没有,有的话更新,没有的话新增
List<CaseAttach> caseAttachList = caseAttachMapper.getCaseAttachByCaseIdAndType(caseAttach);
if (caseAttachList != null ) {
//之前已经生成过了,更新
caseAttachMapper.updateCaseAttachBycaseid(caseAttach);
}else {
//之前没生成过,新增
int i = caseAttachMapper.save(caseAttach); int i = caseAttachMapper.save(caseAttach);
if (i > 0) { if (i > 0) {
if (arbitrateRecord1 != null) { if (arbitrateRecord1 != null) {
@@ -300,6 +311,7 @@ public class AdjudicationServiceImpl implements IAdjudicationService {
arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord1); arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord1);
} }
} }
}
return AjaxResult.success("裁决书已生成"); return AjaxResult.success("裁决书已生成");
} catch (IOException e) { } catch (IOException e) {
return AjaxResult.error(e + "请检查文件路径是否有误"); return AjaxResult.error(e + "请检查文件路径是否有误");
@@ -2037,7 +2037,6 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
caseApplication.setFilearbitraUrl(filearbitraUrl); caseApplication.setFilearbitraUrl(filearbitraUrl);
} }
} }
return caseApplication; return caseApplication;
} }
@@ -3,21 +3,27 @@ package com.ruoyi.wisdomarbitrate.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.ruoyi.common.constant.CaseApplicationConstants; import com.ruoyi.common.constant.CaseApplicationConstants;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.WordUtil; import com.ruoyi.common.utils.WordUtil;
import com.ruoyi.wisdomarbitrate.domain.*; import com.ruoyi.wisdomarbitrate.domain.*;
import com.ruoyi.wisdomarbitrate.mapper.*; import com.ruoyi.wisdomarbitrate.mapper.*;
import com.ruoyi.wisdomarbitrate.service.IAdjudicationService;
import com.ruoyi.wisdomarbitrate.utils.CaseLogUtils; import com.ruoyi.wisdomarbitrate.utils.CaseLogUtils;
import com.ruoyi.common.utils.SmsUtils; import com.ruoyi.common.utils.SmsUtils;
import com.ruoyi.wisdomarbitrate.service.ICaseArbitrateService; import com.ruoyi.wisdomarbitrate.service.ICaseArbitrateService;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.StandardCopyOption; import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.*; import java.util.*;
@@ -40,7 +46,10 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
private CaseAttachMapper caseAttachMapper; private CaseAttachMapper caseAttachMapper;
@Autowired @Autowired
private SmsRecordMapper smsRecordMapper; private SmsRecordMapper smsRecordMapper;
@Autowired
private IAdjudicationService adjudicationService;
@Autowired
private RedisCache redisCache;
@Override @Override
@Transactional @Transactional
public AjaxResult examineArbitrateMethod(CaseApplication caseApplication, Integer opinion) { public AjaxResult examineArbitrateMethod(CaseApplication caseApplication, Integer opinion) {
@@ -155,7 +164,6 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
} else { } else {
//提交仲裁结果 //提交仲裁结果
int i = arbitrateRecordMapper.insertArbitrateRecord(arbitrateRecord); int i = arbitrateRecordMapper.insertArbitrateRecord(arbitrateRecord);
if (i > 0) { if (i > 0) {
//案件日志表里添加数据 //案件日志表里添加数据
CaseLogRecord caseLogRecord = new CaseLogRecord(); CaseLogRecord caseLogRecord = new CaseLogRecord();
@@ -167,16 +175,50 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
caseLogRecordMapper.insertCaseLogRecord(caseLogRecord); caseLogRecordMapper.insertCaseLogRecord(caseLogRecord);
// 新增日志 // 新增日志
CaseLogUtils.insertCaseLog(caseApplication.getId(), CaseApplicationConstants.GENERATED_ARBITRATION, ""); 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 { try {
Map<String, Object> datas = new HashMap<>(); Map<String, Object> 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 caseAffiliate = new CaseAffiliate();
caseAffiliate.setCaseAppliId(id); caseAffiliate.setCaseAppliId(id);
@@ -200,10 +242,10 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
} }
} }
} }
String arbitratorName = caseApplication.getArbitratorName(); String arbitratorName = caseApplication1.getArbitratorName();
datas.put("caseName", caseApplication.getCaseName()); datas.put("caseName", caseApplication1.getCaseName());
datas.put("arbitratorName", arbitratorName); datas.put("arbitratorName", arbitratorName);
Date hearDate = caseApplication.getHearDate(); Date hearDate = caseApplication1.getHearDate();
if (hearDate != null) { if (hearDate != null) {
LocalDate localDate = hearDate.toInstant() LocalDate localDate = hearDate.toInstant()
.atZone(ZoneId.systemDefault()) .atZone(ZoneId.systemDefault())
@@ -216,7 +258,7 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
datas.put("hearMonths", null); datas.put("hearMonths", null);
datas.put("hearDay", null); datas.put("hearDay", null);
} }
datas.put("appArbitrationClaims", caseApplication.getArbitratClaims()); datas.put("appArbitrationClaims", caseApplication1.getArbitratClaims());
datas.put("evidenDetermi", arbitrateRecord.getEvidenDetermi()); datas.put("evidenDetermi", arbitrateRecord.getEvidenDetermi());
datas.put("factDetermi", arbitrateRecord.getFactDetermi()); datas.put("factDetermi", arbitrateRecord.getFactDetermi());
datas.put("caseSketch", arbitrateRecord.getCaseSketch()); datas.put("caseSketch", arbitrateRecord.getCaseSketch());
@@ -230,10 +272,10 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
datas.put("year", year); datas.put("year", year);
datas.put("months", month); datas.put("months", month);
datas.put("day", day); datas.put("day", day);
String modalFilePath = "/data/arbitrate-document/template/仲裁裁决书模板.docx"; // 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 = "/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 fileName = UUID.randomUUID().toString().replace("-", "") + ".docx";
String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
String resultFilePath = saveFolderPath + "/" + fileName; String resultFilePath = saveFolderPath + "/" + fileName;
@@ -247,18 +289,277 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING); Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);
String docFilePath = WordUtil.getDocFilePath(datas, modalFilePath, resultFilePath); String docFilePath = WordUtil.getDocFilePath(datas, modalFilePath, resultFilePath);
String savePath = docFilePath.substring(0, docFilePath.indexOf("/upload/") + 8); String savePath = docFilePath.substring(0, docFilePath.indexOf("/upload/") + 8);
CaseAttach caseAttach = CaseAttach.builder()
.caseAppliId(id)
.annexName(saveName)
.annexPath(savePath)
.annexType(7)
.build();
//保存到附件表里,先判断之前有没有,有的话更新,没有的话新增
Long caseAppliId = id;
Integer annexType = 7;
List<CaseAttach> caseAttach1 = caseAttachMapper.getCaseAttachByCaseIdAndType(caseAttach);
if (caseAttach1 != null ) {
//之前已经生成过了,更新
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;
//修改案件状态 } catch (IOException e) {
caseApplication1.setCaseStatus(CaseApplicationConstants.VERPRIF_ARBITRATION); e.printStackTrace();
caseApplicationMapper.submitCaseApplication(caseApplication1); return Boolean.FALSE;
}
}
//生成仲裁文书
private Boolean generateAward(ArbitrateRecord arbitrateRecord){
try {
Map<String, Object> datas = new HashMap<>();
Long id = arbitrateRecord.getId();
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<CaseAffiliate> caseAffiliates = caseAffiliateMapper.selectCaseAffiliate(caseAffiliate);
List<String> 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() CaseAttach caseAttach = CaseAttach.builder()
.caseAppliId(id) .caseAppliId(id)
.annexName(saveName) .annexName(saveName)
.annexPath(savePath) .annexPath(savePath)
.annexType(3) .annexType(3)
.build(); .build();
//保存到附件表里,先判断之前有没有,有的话更新,没有的话新增
List<CaseAttach> caseAttachList = caseAttachMapper.getCaseAttachByCaseIdAndType(caseAttach);
if (caseAttachList != null ) {
//之前已经生成过了,更新
caseAttachMapper.updateCaseAttachBycaseid(caseAttach);
}else {
//之前没生成过,新增
int i = caseAttachMapper.save(caseAttach); int i = caseAttachMapper.save(caseAttach);
if (i > 0) { if (i > 0) {
if (arbitrateRecord1 != null) { if (arbitrateRecord1 != null) {
@@ -268,13 +569,35 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord1); arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord1);
} }
} }
return AjaxResult.success("裁决书已生成");
} catch (IOException e) {
e.printStackTrace();
return AjaxResult.error("裁决书生成异常");
} }
return Boolean.TRUE;
} catch (IOException e) {
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;
}
} }
} }
@@ -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();
}
}
}
@@ -31,6 +31,19 @@
where case_appli_id =#{id} where case_appli_id =#{id}
</select> </select>
<select id="getCaseAttachByCaseIdAndType" resultType="com.ruoyi.wisdomarbitrate.domain.CaseAttach" resultMap="CaseAttachResult">
select annex_id,case_appli_id,annex_name,annex_path,annex_type,note,use_id,use_account
from case_attach
<where>
<if test="caseAppliId != null ">
AND case_appli_id = #{caseAppliId}
</if>
<if test="annexType != null ">
AND annex_type = #{annexType}
</if>
</where>
</select>
<select id="queryCaseAttachList" resultMap="CaseAttachResult"> <select id="queryCaseAttachList" resultMap="CaseAttachResult">
select annex_id,case_appli_id,annex_name,annex_path,annex_type,note,use_id,use_account select annex_id,case_appli_id,annex_name,annex_path,annex_type,note,use_id,use_account
from case_attach from case_attach