diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/AdjudicationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/AdjudicationController.java new file mode 100644 index 0000000..9d2ce64 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/AdjudicationController.java @@ -0,0 +1,23 @@ +package com.ruoyi.web.controller.wisdomarbitrate; + +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.wisdomarbitrate.domain.CaseApplication; +import com.ruoyi.wisdomarbitrate.service.IAdjudicationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/adjudication") +public class AdjudicationController extends BaseController { + @Autowired + private IAdjudicationService adjudicationService; + @PostMapping("/document") + public AjaxResult createDocument(@Validated @RequestBody CaseApplication caseApplication){ + return adjudicationService.createDocument(caseApplication); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseArbitrateController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseArbitrateController.java index 069c72e..b44cead 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseArbitrateController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseArbitrateController.java @@ -2,6 +2,7 @@ package com.ruoyi.web.controller.wisdomarbitrate; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.wisdomarbitrate.domain.ArbitrateRecord; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; import com.ruoyi.wisdomarbitrate.service.ICaseArbitrateService; import org.springframework.beans.factory.annotation.Autowired; @@ -15,27 +16,24 @@ public class CaseArbitrateController extends BaseController { private ICaseArbitrateService caseArbitrateService; /** - * 确定仲裁方式 + * 审核仲裁方式 * @param caseApplication - * @param arbitratMethod + * @param opinion 1同意,0拒绝 * @return */ @PutMapping("/method") - public AjaxResult chooseArbitrateMethod(@Validated @RequestBody CaseApplication caseApplication - ,Integer arbitratMethod){ - return caseArbitrateService.chooseArbitrateMethod(caseApplication,arbitratMethod); + public AjaxResult examineArbitrateMethod(@Validated @RequestBody CaseApplication caseApplication + ,Integer opinion){ + return caseArbitrateService.examineArbitrateMethod(caseApplication,opinion); } /** * 书面审理 - * @param caseApplication - * @param accidentDescription - * @param arbitrationResult + * @param arbitrateRecord * @return */ @PostMapping("/writtenHear") - public AjaxResult writtenHear(@Validated @RequestBody CaseApplication caseApplication - ,String accidentDescription , String arbitrationResult){ - return caseArbitrateService.writtenHear(caseApplication,accidentDescription,arbitrationResult); + public AjaxResult writtenHear(@Validated @RequestBody ArbitrateRecord arbitrateRecord){ + return caseArbitrateService.writtenHear(arbitrateRecord); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseEvidenceController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseEvidenceController.java index 037456b..536228c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseEvidenceController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseEvidenceController.java @@ -4,6 +4,7 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; +import com.ruoyi.wisdomarbitrate.domain.dto.CaseEvidenceDTO; import com.ruoyi.wisdomarbitrate.domain.vo.CaseEvidenceVO; import com.ruoyi.wisdomarbitrate.service.ICaseEvidenceService; import org.springframework.beans.factory.annotation.Autowired; @@ -78,4 +79,14 @@ public class CaseEvidenceController extends BaseController { public AjaxResult evidenceConfirmation(@Validated @RequestBody CaseApplication caseApplication){ return caseEvidenceService.evidenceConfirmation(caseApplication); } + + /** + * 案件质证 + * @param caseEvidenceDTO + * @return + */ + @PostMapping("/crossexami") + public AjaxResult caseCrossexamination(@Validated @RequestBody CaseEvidenceDTO caseEvidenceDTO){ + return caseEvidenceService.caseCrossexamination(caseEvidenceDTO); + } } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index e11b3d0..06fa6f1 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -143,8 +143,8 @@ elegent: alipay: appId: 2021003141676135 callback: - domain: http://121.40.189.20:9000/ - watch: false + domain: http://121.40.189.20:9001/ + watch: true cycle: 10 identityAuthentication: credentialSecretId: 123 diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 35fdb8c..5307193 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -145,6 +145,12 @@ 3.1.701 + + + com.deepoove + poi-tl + 1.9.1 + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtils.java index cfc9e84..f7d7e62 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtils.java @@ -74,12 +74,4 @@ public class SmsUtils { private String[] templateParamSet; } - - public static void main(String[] args) { - SendSmsRequest sendSmsRequest = new SendSmsRequest(); - sendSmsRequest.setPhone("18792613219"); - sendSmsRequest.setTemplateId("1928003"); - sendSmsRequest.setTemplateParamSet(new String[]{"xxx","仲裁","编号"}); - SmsUtils.sendSms(sendSmsRequest); - } } 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 new file mode 100644 index 0000000..cef0386 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/WordUtil.java @@ -0,0 +1,157 @@ +package com.ruoyi.common.utils; + + +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +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 javax.servlet.http.HttpServletResponse; +import java.io.BufferedOutputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Author: ymbgy + * @Date: 2022-09-21 13:26 + */ +public class WordUtil { + + private CellRenderData cell; + + /** + * 查询生成的word文件流 + * + * @param response + * @param datas + * @param modalFilePath + * @param resultFilePath + * @throws IOException + */ + public static void getDocStreamFile(HttpServletResponse response, Map datas, String modalFilePath, String resultFilePath, String fileName) throws IOException { + //获取word模板和填充数据 + XWPFTemplate template = XWPFTemplate.compile(modalFilePath).render(datas); + //设置返回类型及文件名 + response.setContentType("application/octet-stream"); + response.setHeader("Content-disposition", "attachment;filename=\"" + fileName + "\""); + //获取返回输出流 + OutputStream out = response.getOutputStream(); + BufferedOutputStream bos = new BufferedOutputStream(out); + template.write(bos); + bos.flush(); + out.flush(); + PoitlIOUtils.closeQuietlyMulti(template, bos, out); + } + + /** + * 查询生成的word文件路径 + * + * @param datas + * @param modalFilePath + * @param resultFilePath + * @return + * @throws IOException + */ + public static String getDocFilePath(Map datas, String modalFilePath, String resultFilePath) throws IOException { + //获取word模板和填充数据 + XWPFTemplate template = XWPFTemplate.compile(modalFilePath).render(datas); + template.writeAndClose(new FileOutputStream(resultFilePath)); + return resultFilePath; + } + + /** + * 构造绘制表格的方法 + */ + public static TableRenderData rebuildWordTableData(List headerList, String headerBackgroundColor, String textColor, List> tableContentList) { + RowRenderData header = rebuildWordTableHead(headerList, headerBackgroundColor, textColor); + List content = rebuildWordTableContent(tableContentList); + TableRenderData tableRenderData = Tables.create().addRow(header); + for (int i = 0; content != null && i < content.size(); i++) { + tableRenderData.addRow(content.get(i)); + } + return tableRenderData; + } + + /** + * 构造表格表头 + * + * @return + */ + public static RowRenderData rebuildWordTableHead(List headerList, String headerBackgroundColor, String textColor) { + RowRenderData header = new RowRenderData(); + for (int i = 0; headerList != null && i < headerList.size(); i++) { + CellRenderData cellRenderData = new CellRenderData(); + ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); + Style style = new Style(); + style.setColor(textColor); + style.setFontSize(12.0); + ParagraphStyle paragraphStyle = ParagraphStyle.builder() + .withAlign(ParagraphAlignment.CENTER) + // .withBackgroundColor(headerBackgroundColor) + .withDefaultTextStyle(style) + .build(); + paragraphRenderData.addText(headerList.get(i)); + paragraphRenderData.setParagraphStyle(paragraphStyle); + cellRenderData.addParagraph(paragraphRenderData); + header.addCell(cellRenderData); + } + return header; + } + + /** + * 构造表格内容 + * + * @return + */ + public static List rebuildWordTableContent(List> tableContentList) { + List rowContentList = new ArrayList<>(); + for (int i = 0; tableContentList != null && i < tableContentList.size(); i++) { + List rowdataList = tableContentList.get(i); + RowRenderData rowcontent = new RowRenderData(); + for (int j = 0; rowdataList != null && j < rowdataList.size(); j++) { + CellRenderData cellRenderData = new CellRenderData(); + ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); + Style style = new Style(); + style.setFontSize(12.0); + ParagraphStyle paragraphStyle = ParagraphStyle.builder() + .withAlign(ParagraphAlignment.CENTER) + .withDefaultTextStyle(style) + .build(); + paragraphRenderData.addText(rowdataList.get(j)); + paragraphRenderData.setParagraphStyle(paragraphStyle); + cellRenderData.addParagraph(paragraphRenderData); + rowcontent.addCell(cellRenderData); + } + rowContentList.add(rowcontent); + } + return rowContentList; + } + + /** + * 构建图片内容 + */ + 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(); + //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(); +// 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); + template.writeAndClose(new FileOutputStream(resultFilePath)); + return resultFilePath; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/Adjudication.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/Adjudication.java new file mode 100644 index 0000000..75eb96e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/Adjudication.java @@ -0,0 +1,188 @@ +package com.ruoyi.wisdomarbitrate.domain; + +import lombok.Data; + +@Data +public class Adjudication { + /** + * 申请人姓名 + */ + private String appName; + /** + * 申请人性别 + */ + private String appSex; + /** + * 申请人身份证号码 + */ + private String appIDNo; + /** + * 申请人住所 + */ + private String appAddress; + + /** + * 申请人代理人姓名 + */ + private String appAgentName; + /** + * 申请人代理人身份证 + */ + private String appAgentIDNo; + /** + * 被申请人姓名 + */ + private String resName; + /** + * 被申请人性别 + */ + private String resSex; + /** + * 被申请人身份证号码 + */ + private String resIDNo; + /** + * 被申请人住所 + */ + private String resAddress; + + /** + * 被申请人代理人姓名 + */ + private String resAgentName; + /** + * 被申请人代理人身份证 + */ + private String resAgentIDNo; + + /** + * 案件名称 + */ + private String caseName; + + /** + * 仲裁员名称 + */ + private String arbitratorName; + /** + * 开庭年 + */ + private String hearYear; + /** + * 开庭月 + */ + private String hearMonths; + /** + * 开庭日 + */ + private String hearDay; + + /** + * 申请人具体仲裁请求 + */ + private String appArbitrationClaims; + + /** + * 申请人证据名称 + */ + private String appEvidenceName; + + /** + * 申请人拟证事实 + */ + private String appProveFacts; + /** + * 被申请人对申请人答辩内容 + */ + private String resDefenseContentToApp; + + /** + * 被申请人具体仲裁请求 + */ + private String resArbitrationClaims; + /** + * 被申请人证据名称 + */ + private String resEvidenceName; + /** + * 被申请人拟证事实 + */ + private String resProveFacts; + /** + * 申请人对被申请人答辩内容 + */ + private String appDefenseContentToRes; + /** + * 第三人答辩内容 + */ + private String thirdDefenseContent; + /** + * 第三人证据名称 + */ + private String thirdEvidenceName; + /** + * 第三人拟证事实 + */ + private String thirdProveFacts; + /** + * 申请人对第三人答辩内容 + */ + private String appDefenseContentToThird; + /** + * 被申请人对第三人答辩内容 + */ + private String resDefenseContentToThird; + /** + * 证据认定 + */ + private String evidenDetermi; + /** + * 认定事实 + */ + private String factDetermi; + /** + * 综上所述 + */ + private String caseSketch; + /** + * 本庭认为 + */ + private String arbitrateThink; + /** + * 裁决如下 + */ + private String rulingFollows; + /** + * 法律条款 + */ + private String legalProvisions; + /** + * 首席仲裁 + */ + private String umpire; + /** + * 仲裁员1 + */ + private String arbitratorName1; + /** + * 仲裁员2 + */ + private String arbitratorName2; + /** + * 年 + */ + private String year; + /** + * 月 + */ + private String months; + /** + * 日 + */ + private String day; + /** + * 书记员 + */ + private String clerk; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/ArbitrateRecord.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/ArbitrateRecord.java index 74c5595..967f9b4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/ArbitrateRecord.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/ArbitrateRecord.java @@ -26,7 +26,7 @@ public class ArbitrateRecord extends BaseEntity { /** 审核裁决书意见 */ private String checkOpinion; /** 裁决书附件id */ - private Long annexId; + private Integer annexId; diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseAttach.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseAttach.java index bce1776..9827fc7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseAttach.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/CaseAttach.java @@ -9,7 +9,7 @@ import lombok.NoArgsConstructor; @Builder @AllArgsConstructor @NoArgsConstructor -public class CaseAttach { +public class CaseAttach { /** * 附件id */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/dto/CaseEvidenceDTO.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/dto/CaseEvidenceDTO.java new file mode 100644 index 0000000..142b68f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/dto/CaseEvidenceDTO.java @@ -0,0 +1,37 @@ +package com.ruoyi.wisdomarbitrate.domain.dto; + +import com.ruoyi.wisdomarbitrate.domain.Arbitrator; +import lombok.Data; + +import java.util.List; + +/** + * 案件质证传入对象 + */ +@Data +public class CaseEvidenceDTO { + /** + * 案件id + */ + private Long caseId; + + /** + * 是否有异议需要举证,1是,0否 + */ + private Integer objectionAddEviden; + + /** + * 是否需要开庭审理,1是,0否 + */ + private Integer openCourtHear; + + /** + * 是否指派仲裁员,1是,2否 + */ + private Integer pendingAppointArbotrar; + + /** + * 案件仲裁员 + */ + private List arbitrators; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/dto/CasePayDTO.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/dto/CasePayDTO.java index 933f300..b440235 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/dto/CasePayDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/dto/CasePayDTO.java @@ -2,7 +2,7 @@ package com.ruoyi.wisdomarbitrate.domain.dto; import lombok.Data; /** - * 案件缴费传入参数 + * 案件缴费传入对象 */ @Data public class CasePayDTO { diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/IAdjudicationService.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/IAdjudicationService.java new file mode 100644 index 0000000..c17ed82 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/IAdjudicationService.java @@ -0,0 +1,8 @@ +package com.ruoyi.wisdomarbitrate.service; + +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.wisdomarbitrate.domain.CaseApplication; + +public interface IAdjudicationService { + AjaxResult createDocument(CaseApplication caseApplication); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseArbitrateService.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseArbitrateService.java index 231ae50..0e66a10 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseArbitrateService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseArbitrateService.java @@ -1,10 +1,13 @@ package com.ruoyi.wisdomarbitrate.service; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.wisdomarbitrate.domain.ArbitrateRecord; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; public interface ICaseArbitrateService { - AjaxResult chooseArbitrateMethod(CaseApplication caseApplication,Integer arbitratMethod); - AjaxResult writtenHear(CaseApplication caseApplication, String accidentDescription, String arbitrationResult); + + AjaxResult writtenHear(ArbitrateRecord arbitrateRecord); + + AjaxResult examineArbitrateMethod(CaseApplication caseApplication, Integer opinion); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseEvidenceService.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseEvidenceService.java index 5e801ea..e601832 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseEvidenceService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseEvidenceService.java @@ -3,6 +3,7 @@ package com.ruoyi.wisdomarbitrate.service; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; +import com.ruoyi.wisdomarbitrate.domain.dto.CaseEvidenceDTO; import com.ruoyi.wisdomarbitrate.domain.vo.CaseEvidenceVO; import org.springframework.web.multipart.MultipartFile; @@ -18,4 +19,5 @@ public interface ICaseEvidenceService { AjaxResult evidenceConfirmation(CaseApplication caseApplication); + AjaxResult caseCrossexamination(CaseEvidenceDTO caseEvidenceDTO); } 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 new file mode 100644 index 0000000..332fbde --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/AdjudicationServiceImpl.java @@ -0,0 +1,150 @@ +package com.ruoyi.wisdomarbitrate.service.impl; + +import com.deepoove.poi.config.Configure; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.WordUtil; +import com.ruoyi.wisdomarbitrate.domain.*; +import com.ruoyi.wisdomarbitrate.mapper.ArbitrateRecordMapper; +import com.ruoyi.wisdomarbitrate.mapper.CaseAffiliateMapper; +import com.ruoyi.wisdomarbitrate.mapper.CaseApplicationMapper; +import com.ruoyi.wisdomarbitrate.mapper.CaseAttachMapper; +import com.ruoyi.wisdomarbitrate.service.IAdjudicationService; +import org.apache.poi.xwpf.usermodel.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; + +@Service +public class AdjudicationServiceImpl implements IAdjudicationService { + @Autowired + private CaseApplicationMapper caseApplicationMapper; + @Autowired + private CaseAffiliateMapper caseAffiliateMapper; + @Autowired + private ArbitrateRecordMapper arbitrateRecordMapper; + @Autowired + private CaseAttachMapper caseAttachMapper; + + @Override + public AjaxResult createDocument(CaseApplication caseApplication) { + try { + Map datas = new HashMap<>(); + Adjudication adjudication = new Adjudication(); + Long id = caseApplication.getId(); + if (id == null){ + return null; + } + //获取案件详细信息 + CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); + //获取仲裁记录表里的相关信息 + ArbitrateRecord arbitrateRecord = new ArbitrateRecord(); + arbitrateRecord.setCaseAppliId(id); + ArbitrateRecord arbitrateRecord1 = arbitrateRecordMapper.selectArbitrateRecord(arbitrateRecord); + + //获取案件关联人信息 + CaseAffiliate caseAffiliate = new CaseAffiliate(); + caseAffiliate.setCaseAppliId(id); + List caseAffiliates = caseAffiliateMapper.selectCaseAffiliate(caseAffiliate); + if (caseAffiliates != null && caseAffiliates.size() > 0){ + for (CaseAffiliate affiliate : caseAffiliates){ + //获取身份类型 + int identityType = affiliate.getIdentityType(); + if (identityType == 1) { //申请人 + datas.put("appName", affiliate.getName()); + datas.put("appSex", null); + datas.put("appIDNo", affiliate.getIdentityNum()); + datas.put("appAddress", affiliate.getContactAddress()); + datas.put("appAgentName", affiliate.getNameAgent()); + datas.put("appAgentIDNo",affiliate.getIdentityNumAgent()); + }else if (identityType == 2){ //被申请人 + datas.put("resName", affiliate.getName()); + datas.put("resSex", null); + datas.put("resIDNo", affiliate.getIdentityNum()); + datas.put("resAddress", affiliate.getContactAddress()); + datas.put("resAgentName", affiliate.getNameAgent()); + datas.put("resAgentIDNo",affiliate.getIdentityNumAgent()); + } + } + } + String arbitratorName = caseApplication1.getArbitratorName(); + datas.put("caseName",caseApplication1.getCaseName()); + datas.put("arbitratorName",arbitratorName); + LocalDate localDate = caseApplication1.getHearDate() + .toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + datas.put("hearYear", localDate.getYear()); + datas.put("hearMonths", localDate.getMonthValue()); + datas.put("hearDay", localDate.getDayOfMonth()); + datas.put("appArbitrationClaims", null); + datas.put("appEvidenceName", null); + datas.put("appProveFacts", null); + datas.put("resDefenseContentToApp", null); + datas.put("resArbitrationClaims", null); + datas.put("resEvidenceName", null); + datas.put("resProveFacts", null); + datas.put("appDefenseContentToRes", null); + datas.put("evidenDetermi", arbitrateRecord1.getEvidenDetermi()); + datas.put("factDetermi", arbitrateRecord1.getFactDetermi()); + datas.put("caseSketch", arbitrateRecord1.getCaseSketch()); + datas.put("arbitrateThink", arbitrateRecord1.getArbitrateThink()); + datas.put("legalProvisions", null); + datas.put("rulingFollows", arbitrateRecord1.getRulingFollows()); + datas.put("umpire", null); + if (arbitratorName.contains(",")){ + String[] nameArray = arbitratorName.split(","); + String firstName = nameArray[0]; + String secondName = nameArray[1]; + datas.put("arbitratorName1", firstName); + datas.put("arbitratorName2", secondName); + }else { + String secondName = ""; + datas.put("arbitratorName1", arbitratorName); + datas.put("arbitratorName2", secondName); + } + LocalDate now = LocalDate.now(); + datas.put("year", now.getYear()); + datas.put("months", now.getMonthValue()); + datas.put("day", now.getDayOfMonth()); + datas.put("clerk", null); + String modalFilePath = "/data/arbitrate-document/template/仲裁裁决书模板.docx"; + + String currentDateStr = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + String saveFolderPath = "/data/arbitrate-document/formal/" + currentDateStr; + // 创建日期目录 + File saveFolder = new File(saveFolderPath); + if (!saveFolder.exists()) { + saveFolder.mkdirs(); + } + String fileName = UUID.randomUUID().toString().replace("-", "") + ".docx"; + String resultFilePath = saveFolderPath+ fileName; + String docFilePath = WordUtil.getDocFilePath(datas, modalFilePath, resultFilePath); + //将裁决书保存到附件表里 + CaseAttach caseAttach = CaseAttach.builder() + .caseAppliId(id) + .annexName(fileName) + .annexPath(docFilePath) + .annexType(3) + .build(); + int i = caseAttachMapper.save(caseAttach); + if (i>0){ + Integer annexId = caseAttach.getAnnexId(); + //将附件id保存到仲裁记录表里面 + arbitrateRecord1.setAnnexId(annexId); + arbitrateRecordMapper.updataArbitrateRecord(arbitrateRecord1); + } + return AjaxResult.success("裁决书保存路径为" + docFilePath); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CallBackHandleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CallBackHandleServiceImpl.java index 4812468..dfa8aca 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CallBackHandleServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CallBackHandleServiceImpl.java @@ -13,6 +13,7 @@ import org.springframework.stereotype.Component; public class CallBackHandleServiceImpl implements CallBackService { @Autowired private CasePaymentServiceImpl casePaymentService; + @Override public void successPay(String orderSn) { casePaymentService.callback(orderSn); 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 dcfedd8..a1c589e 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,9 +3,11 @@ package com.ruoyi.wisdomarbitrate.service.impl; import com.ruoyi.common.constant.CaseApplicationConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.SmsUtils; +import com.ruoyi.wisdomarbitrate.domain.ArbitrateRecord; import com.ruoyi.wisdomarbitrate.domain.CaseAffiliate; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; import com.ruoyi.wisdomarbitrate.domain.CaseLogRecord; +import com.ruoyi.wisdomarbitrate.mapper.ArbitrateRecordMapper; import com.ruoyi.wisdomarbitrate.mapper.CaseAffiliateMapper; import com.ruoyi.wisdomarbitrate.mapper.CaseApplicationMapper; import com.ruoyi.wisdomarbitrate.mapper.CaseLogRecordMapper; @@ -24,70 +26,79 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService { private CaseAffiliateMapper caseAffiliateMapper; @Autowired private CaseLogRecordMapper caseLogRecordMapper; + @Autowired + private ArbitrateRecordMapper arbitrateRecordMapper; @Override @Transactional - public AjaxResult chooseArbitrateMethod(CaseApplication caseApplication, Integer arbitratMethod) { - if (arbitratMethod != null) { - String arbitratMethodStr = arbitratMethod == 1 ? "开庭审理" : "书面审理"; - //查询案件详细信息 - CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); - if (caseApplication1 == null) { - return AjaxResult.error(); + public AjaxResult examineArbitrateMethod(CaseApplication caseApplication, Integer opinion) { + //查询案件详细信息 + CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); + if (caseApplication1 == null) { + return AjaxResult.error(); + } + int arbitratMethod = caseApplication1.getArbitratMethod(); + String caseNum = caseApplication1.getCaseNum(); + if (opinion==0){ //拒绝 + if (arbitratMethod == 2){ + caseApplication1.setArbitratMethod(1); // 更改仲裁方式 + }else { + caseApplication1.setArbitratMethod(2); } - String caseNum = caseApplication1.getCaseNum(); - //选择仲裁方式 - caseApplication.setArbitratMethod(arbitratMethod); - //修改案件状态为待开庭 - caseApplication.setCaseStatus(CaseApplicationConstants.PENDING_OPENCOURT_HEAR); - int i = caseApplicationMapper.submitCaseApplication(caseApplication); - if (i > 0) { - //发送短信通知 - SmsUtils.SendSmsRequest request = new SmsUtils.SendSmsRequest(); - request.setTemplateId("1931000"); - CaseAffiliate caseAffiliate = new CaseAffiliate(); - caseAffiliate.setCaseAppliId(caseApplication1.getId()); - List caseAffiliates = caseAffiliateMapper.selectCaseAffiliate(caseAffiliate); //获取案件关联人信息 - if (caseAffiliates != null && caseAffiliates.size() > 0) { - for (CaseAffiliate affiliate : caseAffiliates) { - //获取身份类型 - int identityType = affiliate.getIdentityType(); - if (identityType == 1) { //申请人 - request.setPhone(affiliate.getContactTelphone()); - // 这个值,要看你的模板中是否预留了占位符,如果没有则不需要设置 - // 1931000 普通短信 确定仲裁方式通知 尊敬的{1}用户,您的{2}仲裁案件,仲裁方式已确定为{3},请知晓,如非本人操作,请忽略本短信。 - String name = affiliate.getName(); - request.setTemplateParamSet(new String[]{name, caseNum, arbitratMethodStr}); - SmsUtils.sendSms(request); - } else { //被申请人 - request.setPhone(affiliate.getContactTelphone()); - // 模板id1928006 普通短信 案件应诉通知 尊敬的{1}用户,您的{2}案件{3}已成功受理,请点击https://phmapp.xayunmei.com选择是否应诉。 - String name = affiliate.getName(); - request.setTemplateParamSet(new String[]{name, caseNum, arbitratMethodStr}); - SmsUtils.sendSms(request); - } + } + //修改案件状态为待开庭 + caseApplication1.setCaseStatus(CaseApplicationConstants.PENDING_OPENCOURT_HEAR); + int i = caseApplicationMapper.submitCaseApplication(caseApplication1); + if (i > 0) { + String arbitratMethodStr = caseApplication1.getArbitratMethod() == 1 ? "开庭审理" : "书面审理"; + //发送短信通知 + SmsUtils.SendSmsRequest request = new SmsUtils.SendSmsRequest(); + request.setTemplateId("1931000"); + CaseAffiliate caseAffiliate = new CaseAffiliate(); + caseAffiliate.setCaseAppliId(caseApplication1.getId()); + List caseAffiliates = caseAffiliateMapper.selectCaseAffiliate(caseAffiliate); //获取案件关联人信息 + if (caseAffiliates != null && caseAffiliates.size() > 0) { + for (CaseAffiliate affiliate : caseAffiliates) { + //获取身份类型 + int identityType = affiliate.getIdentityType(); + if (identityType == 1) { //申请人 + request.setPhone(affiliate.getContactTelphone()); + // 这个值,要看你的模板中是否预留了占位符,如果没有则不需要设置 + // 1931000 普通短信 确定仲裁方式通知 尊敬的{1}用户,您的{2}仲裁案件,仲裁方式已确定为{3},请知晓,如非本人操作,请忽略本短信。 + String name = affiliate.getName(); + request.setTemplateParamSet(new String[]{name, caseNum, arbitratMethodStr}); + SmsUtils.sendSms(request); + } else { //被申请人 + request.setPhone(affiliate.getContactTelphone()); + // 模板id1928006 普通短信 案件应诉通知 尊敬的{1}用户,您的{2}案件{3}已成功受理,请点击https://phmapp.xayunmei.com选择是否应诉。 + String name = affiliate.getName(); + request.setTemplateParamSet(new String[]{name, caseNum, arbitratMethodStr}); + SmsUtils.sendSms(request); } } - return AjaxResult.success("选择成功"); } - + return AjaxResult.success("审核成功"); } - return AjaxResult.error("请选择开庭方式"); + return AjaxResult.error(); } @Override - public AjaxResult writtenHear(CaseApplication caseApplication, String accidentDescription, String arbitrationResult) { - //提交仲裁结果 + public AjaxResult writtenHear(ArbitrateRecord arbitrateRecord) { + //查询案件详情 + CaseApplication caseApplication = new CaseApplication(); + caseApplication.setId(arbitrateRecord.getCaseAppliId()); CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); - caseApplication1.setCaseDescribe(accidentDescription); //案情描述 - caseApplication1.setCaseResult(arbitrationResult); //仲裁结果 - int i = caseApplicationMapper.updataCaseApplication(caseApplication1); + String createBy = caseApplication1.getCreateBy(); + if (createBy!=null){ + arbitrateRecord.setCreateBy(createBy); + } + //提交仲裁结果 + int i = arbitrateRecordMapper.insertArbitrateRecord(arbitrateRecord); if (i>0){ //案件日志表里添加数据 CaseLogRecord caseLogRecord = new CaseLogRecord(); caseLogRecord.setCaseAppliId(caseApplication1.getId()); caseLogRecord.setCaseNode(caseApplication1.getCaseStatus()); - String createBy = caseApplication1.getCreateBy(); if (createBy!=null){ caseLogRecord.setCreateBy(createBy); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseEvidenceServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseEvidenceServiceImpl.java index 52f9ea1..e51b8c7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseEvidenceServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseEvidenceServiceImpl.java @@ -4,15 +4,11 @@ import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.CaseApplicationConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.file.FileUploadUtils; -import com.ruoyi.wisdomarbitrate.domain.CaseAffiliate; -import com.ruoyi.wisdomarbitrate.domain.CaseApplication; -import com.ruoyi.wisdomarbitrate.domain.CaseAttach; +import com.ruoyi.wisdomarbitrate.domain.*; +import com.ruoyi.wisdomarbitrate.domain.dto.CaseEvidenceDTO; import com.ruoyi.wisdomarbitrate.domain.vo.CaseDetailVO; import com.ruoyi.wisdomarbitrate.domain.vo.CaseEvidenceVO; -import com.ruoyi.wisdomarbitrate.mapper.CaseAffiliateMapper; -import com.ruoyi.wisdomarbitrate.mapper.CaseApplicationMapper; -import com.ruoyi.wisdomarbitrate.mapper.CaseAttachMapper; -import com.ruoyi.wisdomarbitrate.mapper.CaseEvidenceMapper; +import com.ruoyi.wisdomarbitrate.mapper.*; import com.ruoyi.wisdomarbitrate.service.ICaseEvidenceService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -21,12 +17,9 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; @Service public class CaseEvidenceServiceImpl implements ICaseEvidenceService { @@ -38,10 +31,12 @@ public class CaseEvidenceServiceImpl implements ICaseEvidenceService { private CaseApplicationMapper caseApplicationMapper; @Autowired private CaseAttachMapper caseAttachMapper; + @Autowired + private CaseLogRecordMapper caseLogRecordMapper; @Override @Transactional - public AjaxResult getCaseDetailsById(Long id,String userName) { + public AjaxResult getCaseDetailsById(Long id, String userName) { CaseApplication caseApplication = new CaseApplication(); caseApplication.setId(id); CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); @@ -52,10 +47,12 @@ public class CaseEvidenceServiceImpl implements ICaseEvidenceService { caseAffiliate.setCaseAppliId(id); List caseAffiliates = caseAffiliateMapper.selectCaseAffiliate(caseAffiliate); for (CaseAffiliate affiliate : caseAffiliates) { - String name = affiliate.getName(); - //判断当前登录人和案件关联人姓名是否一致 - if (name.equals(userName)) { //一致,将案件关联人的身份类型赋给当前登录人 - caseDetailVO.setIdentityType(affiliate.getIdentityType()); + if (affiliate.getName() != null) { + String name = affiliate.getName(); + //判断当前登录人和案件关联人姓名是否一致 + if (name.equals(userName)) { //一致,将案件关联人的身份类型赋给当前登录人 + caseDetailVO.setIdentityType(affiliate.getIdentityType()); + } } if (affiliate.getIdentityType() == 1) { //申请人 caseDetailVO.setApplicantName(affiliate.getName()); @@ -64,13 +61,13 @@ public class CaseEvidenceServiceImpl implements ICaseEvidenceService { } //根据案件id查询案件证据材料 List evidenceMaterialList = caseAttachMapper.queryAnnexPathByCaseId(id); - if (evidenceMaterialList!=null&&evidenceMaterialList.size()>0){ + if (evidenceMaterialList != null && evidenceMaterialList.size() > 0) { for (CaseAttach caseAttach : evidenceMaterialList) { - String path =caseAttach.getAnnexName(); + String path = caseAttach.getAnnexName(); String prefix = "/profile"; int startIndex = path.indexOf(prefix); startIndex += prefix.length(); - String extractedPath = "/uploadPath"+path.substring(startIndex); + String extractedPath = "/uploadPath" + path.substring(startIndex); caseAttach.setAnnexPath(extractedPath); } } @@ -116,10 +113,9 @@ public class CaseEvidenceServiceImpl implements ICaseEvidenceService { } - @Override public List getCaseListAll(String identityNum) { - List caseStatusList = Arrays.asList(3, 4, 5, 9); + List caseStatusList = Arrays.asList(CaseApplicationConstants.CASE_CROSSEXAMI); return getCaseEvidenceVOList(identityNum, caseStatusList, null); } @@ -127,12 +123,57 @@ public class CaseEvidenceServiceImpl implements ICaseEvidenceService { public AjaxResult evidenceConfirmation(CaseApplication caseApplication) { caseApplication.setCaseStatus(CaseApplicationConstants.PENDING_TRIAL); int i = caseApplicationMapper.submitCaseApplication(caseApplication); - if (i>0){ + if (i > 0) { return AjaxResult.success("证据确认成功"); } return AjaxResult.error("暂无需要确认的证据"); } + @Override + public AjaxResult caseCrossexamination(CaseEvidenceDTO caseEvidenceDTO) { + //查询案件详细信息 + CaseApplication caseApplication = new CaseApplication(); + caseApplication.setId(caseEvidenceDTO.getCaseId()); + CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); + if (caseApplication1 != null) { + int caseStatus = caseApplication1.getCaseStatus(); + caseApplication1.setObjectionAddEviden(caseEvidenceDTO.getObjectionAddEviden()); + caseApplication1.setOpenCourtHear(caseEvidenceDTO.getOpenCourtHear()); + caseApplication1.setPendingAppointArbotrar(caseEvidenceDTO.getPendingAppointArbotrar()); + List arbitrators = caseEvidenceDTO.getArbitrators(); + if (arbitrators != null && arbitrators.size() > 0) { + List ids = arbitrators.stream().map(Arbitrator::getId).collect(Collectors.toList()); + List arbitratorNames = arbitrators.stream().map(Arbitrator::getArbitratorName).collect(Collectors.toList()); + String idstr = ids.stream().map(Object::toString).collect(Collectors.joining(",")); + String arbitratorNamestr = arbitratorNames.stream().map(Object::toString).collect(Collectors.joining(",")); + caseApplication1.setArbitratorId(idstr); + caseApplication1.setArbitratorName(arbitratorNamestr); + } + //修改案件状态 + caseApplication1.setCaseStatus(CaseApplicationConstants.CONFIRMDED_PENDING_TRIAL_SUBMMIT); + //选择仲裁方式 + if (caseEvidenceDTO.getOpenCourtHear()==1){ //开庭审理 + caseApplication1.setArbitratMethod(1); + }else { + caseApplication1.setArbitratMethod(2); //书面审理 + } + int i = caseApplicationMapper.submitCaseApplication(caseApplication1); + if (i > 0) { + //案件日志表里添加数据 + CaseLogRecord caseLogRecord = new CaseLogRecord(); + caseLogRecord.setCaseAppliId(caseApplication1.getId()); + caseLogRecord.setCaseNode(caseStatus); + String createBy = caseApplication1.getCreateBy(); + if (createBy != null) { + caseLogRecord.setCreateBy(createBy); + } + caseLogRecordMapper.insertCaseLogRecord(caseLogRecord); + return AjaxResult.success("提交成功"); + } + } + return null; + } + private List getCaseEvidenceVOList(String identityNum, List caseStatusList, Integer identityType) { List caseListByRespondent = caseEvidenceMapper.getCaseListByRespondent(identityNum, caseStatusList, identityType); if (caseListByRespondent != null && caseListByRespondent.size() > 0) { diff --git a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml index 5d7714d..d3dc194 100644 --- a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAttachMapper.xml @@ -13,7 +13,7 @@ - + INSERT INTO case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account) VALUES (#{caseAppliId}, #{annexName}, #{annexPath},#{annexType},#{note},#{userId},#{userName})