diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bestsign/RegisterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bestsign/RegisterController.java index 6e349cb..5f3b0d1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bestsign/RegisterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bestsign/RegisterController.java @@ -26,4 +26,6 @@ public class RegisterController { public AjaxResult createDocument(@Validated @RequestBody PersonRegisterVO personRegisterVO) { return signRegisterService.registerPerson(personRegisterVO); } +// @PostMapping("/registerEnterprise") +// public AjaxResult } 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 index 0c3b451..2dfd99d 100644 --- 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 @@ -41,12 +41,46 @@ public class AdjudicationController extends BaseController { /** * 根据快递单号查询物流信息 - * @param trackingNum 单号 - * @param phoneLastFour 收/寄件人手机号后四位,顺丰快递需填写本字段。 + * @param caseApplication * @return */ @GetMapping("/logistics") - public AjaxResult getLogisticsInfo(String trackingNum,Integer phoneLastFour){ - return adjudicationService.getLogisticsInfo(trackingNum,phoneLastFour); + public AjaxResult getLogisticsInfo(CaseApplication caseApplication){ + return adjudicationService.getLogisticsInfo(caseApplication); + } + + /** + * 签名(暂时只改案件状态) + * @param caseApplication + * @return + */ + @PostMapping("/signature") + public AjaxResult signature(@Validated @RequestBody CaseApplication caseApplication){ + return adjudicationService.signature(caseApplication); + } + + /** + * 归档(暂时只改案件状态) + * @param caseApplication + * @return + */ + @PostMapping("/caseFile") + public AjaxResult caseFile(@Validated @RequestBody CaseApplication caseApplication){ + return adjudicationService.caseFile(caseApplication); + } + + /** + * 送达(不包含发送电子邮件) + * @param id + * @param appEmail + * @param resEmail + * @param apptrackingNum + * @param restrackingNum + * @return + */ + @PostMapping("/service") + public AjaxResult service(Long id,String appEmail,String resEmail + ,String apptrackingNum,String restrackingNum){ + return adjudicationService.service(id,appEmail,resEmail,apptrackingNum,restrackingNum); } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CaseApplicationConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CaseApplicationConstants.java index 1362386..d4bcb6e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CaseApplicationConstants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CaseApplicationConstants.java @@ -37,12 +37,13 @@ public class CaseApplicationConstants { /**待仲裁文书签名*/ public static final int SIGN_ARBITRATION = 13; /** 待仲裁文书用印 */ - public static final int ARBITRATED_SEAL = 14; + public static final int ARBITRATED_SEAL = 14; /** 待仲裁文书送达 */ public static final int ARBITRATION_DELIVERY = 15; /** 待案件归档*/ public static final int CASE_FILING = 16; - + /** 已归档*/ + public static final int CASE_ARCHIVED = 17; diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/LogisticsInfoVO.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/LogisticsInfoVO.java new file mode 100644 index 0000000..480a96a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/LogisticsInfoVO.java @@ -0,0 +1,16 @@ +package com.ruoyi.wisdomarbitrate.domain.vo; + +import lombok.Data; + +@Data +public class LogisticsInfoVO { + /** + * 案件关联人身份类型 + */ + private Integer identityType; + + /** + * 物流信息 + */ + private String logisticsInfo; +} 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 index 416e92c..935b0a2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/IAdjudicationService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/IAdjudicationService.java @@ -8,5 +8,12 @@ public interface IAdjudicationService { AjaxResult sendDocumentByEmail(Long id,String appEmail,String resEmail ,String apptrackingNum,String restrackingNum); - AjaxResult getLogisticsInfo(String trackingNum,Integer phoneLastFour); + AjaxResult getLogisticsInfo(CaseApplication caseApplication); + + AjaxResult signature(CaseApplication caseApplication); + + AjaxResult caseFile(CaseApplication caseApplication); + + AjaxResult service(Long id, String appEmail, String resEmail, String apptrackingNum, String restrackingNum); + } 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 9fff3eb..f2059f1 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 @@ -1,16 +1,21 @@ package com.ruoyi.wisdomarbitrate.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.deepoove.poi.config.Configure; import com.ruoyi.common.constant.CaseApplicationConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.EmailOutUtil; import com.ruoyi.common.utils.WordUtil; import com.ruoyi.wisdomarbitrate.domain.*; +import com.ruoyi.wisdomarbitrate.domain.vo.LogisticsInfoVO; 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 com.ruoyi.wisdomarbitrate.service.ICaseApplicationService; +import lombok.extern.slf4j.Slf4j; import org.apache.poi.xwpf.usermodel.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.MailSendException; @@ -31,6 +36,7 @@ import java.time.format.DateTimeFormatter; import java.util.*; @Service +@Slf4j public class AdjudicationServiceImpl implements IAdjudicationService { private final String apiUrl = "http://api.cainiaoapi.com/api/exp/v1/index"; @@ -44,6 +50,8 @@ public class AdjudicationServiceImpl implements IAdjudicationService { private CaseAttachMapper caseAttachMapper; @Autowired private EmailOutUtil emailOutUtil; + @Autowired + private ICaseApplicationService caseApplicationService; @Override public AjaxResult createDocument(CaseApplication caseApplication) { @@ -123,14 +131,18 @@ public class AdjudicationServiceImpl implements IAdjudicationService { datas.put("arbitratorName2", secondName); } LocalDate now = LocalDate.now(); - datas.put("year", now.getYear()); - datas.put("months", now.getMonthValue()); - datas.put("day", now.getDayOfMonth()); + String year = Integer.toString(now.getYear()); + String month = String.format("%02d", now.getMonthValue()); + String day = String.format("%02d", now.getDayOfMonth()); + datas.put("year", year); + datas.put("months", month); + datas.put("day", day); String modalFilePath = "/data/arbitrate-document/template/仲裁裁决书模板.docx"; //String modalFilePath = "D:/develop/仲裁裁决书模板 (2).docx"; - String saveFolderPath = "/data/arbitrate-document/formal/" + now.getYear() + "/" + now.getMonthValue() + "/" + now.getDayOfMonth(); + String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; //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; // 创建日期目录 File saveFolder = new File(saveFolderPath); @@ -141,14 +153,15 @@ 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); + String savePath = docFilePath.substring(0, docFilePath.indexOf("/upload/") + 8); //修改案件状态 caseApplication1.setCaseStatus(CaseApplicationConstants.VERPRIF_ARBITRATION); caseApplicationMapper.submitCaseApplication(caseApplication1); //将裁决书保存到附件表里 CaseAttach caseAttach = CaseAttach.builder() .caseAppliId(id) - .annexName(fileName) - .annexPath(docFilePath) + .annexName(saveName) + .annexPath(savePath) .annexType(3) .build(); int i = caseAttachMapper.save(caseAttach); @@ -169,7 +182,7 @@ public class AdjudicationServiceImpl implements IAdjudicationService { @Override @Transactional - public AjaxResult sendDocumentByEmail(Long id, String appEmail, String resEmail ,String apptrackingNum,String restrackingNum) { + public AjaxResult sendDocumentByEmail(Long id, String appEmail, String resEmail, String apptrackingNum, String restrackingNum) { CaseApplication caseApplication = new CaseApplication(); caseApplication.setId(id); CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); @@ -180,16 +193,21 @@ public class AdjudicationServiceImpl implements IAdjudicationService { //根据案件id查询裁决书 try { List fileList = new ArrayList<>(); - List caseAttachList = caseAttachMapper.queryAnnexPathByCaseId(id); + CaseApplication caseApplication2 = caseApplicationService.selectCaseApplication(caseApplication); + List caseAttachList = caseApplication2.getCaseAttachList(); if (caseAttachList != null && caseAttachList.size() > 0) { for (CaseAttach caseAttach : caseAttachList) { if (caseAttach.getAnnexType() == 3) { String annexPath = caseAttach.getAnnexPath(); - fileList.add(new File(annexPath)); + //File file = new File("/home/ruoyi/" + annexPath); + String path = "/home/ruoyi/" + annexPath; + File file = new File(path); + System.out.println("文件是:" + file); + fileList.add(file); } } } - if (fileList.size()<1){ + if (fileList.size() < 1) { return AjaxResult.error("未查询到裁决书"); } File file = fileList.get(0); @@ -210,13 +228,13 @@ public class AdjudicationServiceImpl implements IAdjudicationService { CaseAffiliate caseAffiliate = new CaseAffiliate(); caseAffiliate.setCaseAppliId(id); List caseAffiliates = caseAffiliateMapper.selectCaseAffiliate(caseAffiliate); - if (caseAffiliates!=null&&caseAffiliates.size()>0){ + if (caseAffiliates != null && caseAffiliates.size() > 0) { for (CaseAffiliate affiliate : caseAffiliates) { - if (affiliate.getIdentityType() == 1){ //申请人 + if (affiliate.getIdentityType() == 1) { //申请人 affiliate.setSendEmail(appEmail); affiliate.setTrackNum(apptrackingNum); caseAffiliateMapper.updataCaseAffiliate(affiliate); - }else { + } else { affiliate.setSendEmail(resEmail); affiliate.setTrackNum(restrackingNum); caseAffiliateMapper.updataCaseAffiliate(affiliate); @@ -230,40 +248,124 @@ public class AdjudicationServiceImpl implements IAdjudicationService { } @Override - public AjaxResult getLogisticsInfo(String trackingNum, Integer phoneLastFour) { + public AjaxResult getLogisticsInfo(CaseApplication caseApplication) { try { //快递单号查询 - String key = "70ba5c7b327f71fccd5924f70e3e7b7f"; + String key = "729437f92468910aee6c12dbfeaee3c1"; String com = "auto"; - // 构造查询字符串参数 - String queryParameters = String.format("key=%s&com=%s&no=%s&phone=%d", - URLEncoder.encode(key, "UTF-8"), - URLEncoder.encode(com, "UTF-8"), - URLEncoder.encode(trackingNum, "UTF-8"), - phoneLastFour); - // 拼接到API URL中 - String fullUrl = apiUrl + "?" + queryParameters; - URL url = new URL(fullUrl); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("GET"); - int responseCode = connection.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); - String line; - StringBuilder response = new StringBuilder(); - while ((line = reader.readLine()) != null) { - response.append(line); + //根据案件id查询单号信息 + CaseAffiliate caseAffiliate = new CaseAffiliate(); + caseAffiliate.setCaseAppliId(caseApplication.getId()); + List logisticsInfoVOList = new ArrayList<>(); + List caseAffiliates = caseAffiliateMapper.selectCaseAffiliate(caseAffiliate); + if (caseAffiliates != null && caseAffiliates.size() > 0) { + for (CaseAffiliate affiliate : caseAffiliates) { + LogisticsInfoVO logisticsInfoVO = new LogisticsInfoVO(); + String trackNum = affiliate.getTrackNum(); + if (trackNum != null) { + // 构造查询字符串参数 + String queryParameters = String.format("key=%s&com=%s&no=%s&phone=%d", + URLEncoder.encode(key, "UTF-8"), + URLEncoder.encode(com, "UTF-8"), + URLEncoder.encode(trackNum, "UTF-8"), null); + // 拼接到API URL中 + String fullUrl = apiUrl + "?" + queryParameters; + URL url = new URL(fullUrl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + int responseCode = connection.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String line; + StringBuilder response = new StringBuilder(); + while ((line = reader.readLine()) != null) { + response.append(line); + } + reader.close(); + // 处理返回的响应数据\ + JSONObject jsonObject = JSON.parseObject(response.toString()); + // 提取 "data" 字段并转换为字符串 + String data = jsonObject.getString("data"); + if (data != null) { + logisticsInfoVO.setIdentityType(affiliate.getIdentityType()); + logisticsInfoVO.setLogisticsInfo(data); + logisticsInfoVOList.add(logisticsInfoVO); + } + } else { + // 请求失败 + return AjaxResult.error("请求失败,错误码:" + responseCode); + } + } } - reader.close(); - // 处理返回的响应数据 - return AjaxResult.success(response); - } else { - // 请求失败 - return AjaxResult.error("请求失败,错误码:" + responseCode); + return AjaxResult.success(logisticsInfoVOList); } } catch (IOException e) { e.printStackTrace(); } return null; } + + @Override + public AjaxResult signature(CaseApplication caseApplication) { + //更改案件状态(暂时) + caseApplication.setCaseStatus(CaseApplicationConstants.ARBITRATED_SEAL); + caseApplicationMapper.submitCaseApplication(caseApplication); + return AjaxResult.success("签名成功,案件状态已改为待仲裁文书用印"); + } + + @Override + public AjaxResult caseFile(CaseApplication caseApplication) { + //更改案件状态(暂时) + caseApplication.setCaseStatus(CaseApplicationConstants.CASE_ARCHIVED); + caseApplicationMapper.submitCaseApplication(caseApplication); + return AjaxResult.success("归档成功,案件状态已改为已归档"); + } + + @Override + public AjaxResult service(Long id, String appEmail, String resEmail, String apptrackingNum, String restrackingNum) { + CaseApplication caseApplication = new CaseApplication(); + caseApplication.setId(id); + CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); + if (caseApplication1 == null) { + return AjaxResult.error("未查询到相关案件"); + } + //修改案件状态 + caseApplication1.setCaseStatus(CaseApplicationConstants.CASE_FILING); + caseApplicationMapper.submitCaseApplication(caseApplication1); + //保存邮箱信息和快递单号到关联人表 + CaseAffiliate caseAffiliate = new CaseAffiliate(); + caseAffiliate.setCaseAppliId(id); + List caseAffiliates = caseAffiliateMapper.selectCaseAffiliate(caseAffiliate); + if (caseAffiliates != null && caseAffiliates.size() > 0) { + for (CaseAffiliate affiliate : caseAffiliates) { + if (affiliate.getIdentityType() == 1) { //申请人 + affiliate.setSendEmail(appEmail); + affiliate.setTrackNum(apptrackingNum); + caseAffiliateMapper.updataCaseAffiliate(affiliate); + } else { + affiliate.setSendEmail(resEmail); + affiliate.setTrackNum(restrackingNum); + caseAffiliateMapper.updataCaseAffiliate(affiliate); + } + } + } + return AjaxResult.success("仲裁文书送达成功"); + } + + public static void main(String[] args) { + try { + List fileList = new ArrayList<>(); + fileList.add(new File("D:\\home\\ruoyi\\uploadPath\\upload\\2023\\10\\7\\b442880179844a848f1f8b08c29e3d0c.docx")); + File file = fileList.get(0); + //电子邮件送达 + EmailOutUtil emailOutUtil = new EmailOutUtil(); + JavaMailSender javaMailSender = emailOutUtil.rebuildMailSender(); + if (javaMailSender != null) { + emailOutUtil.sendMessageCarryFile("1154956315@qq.com", "案件裁决书", "您的裁决书已送达,详情请查阅附件", file + , "hjbjava@163.com", javaMailSender); + } + } catch (MailSendException e) { + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAffiliateMapper.xml b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAffiliateMapper.xml index 4c7762b..7a10075 100644 --- a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAffiliateMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CaseAffiliateMapper.xml @@ -18,12 +18,14 @@ +