From 94c7f9ddd3f03502809df03a616c766b6a372236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B8=96=E7=90=AA?= <2231925844@qq.com> Date: Thu, 20 Feb 2025 17:25:05 +0800 Subject: [PATCH] =?UTF-8?q?[UPDATE]=EF=BC=9A=E5=90=88=E5=90=8C=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=88=9D=E5=A7=8B=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../controller/common/CommonController.java | 44 ++- .../src/main/resources/application-druid.yml | 8 +- .../src/main/resources/application.yml | 18 +- tcctlo-admin/src/test/java/FileTest.java | 15 + tcctlo-common/pom.xml | 18 +- .../src/test/java/GeneratorUIServer.java | 4 +- tcctlo-law-office/pom.xml | 8 + .../controller/CaseInformationController.java | 56 +++- .../ContractTemplateController.java | 95 ++++++ .../ImpulseInformationController.java | 18 +- .../tcctlo/law/entity/ContractTemplate.java | 115 +++++++ .../law/mapper/CaseInformationMapper.java | 43 +++ .../law/mapper/ContractTemplateMapper.java | 25 ++ .../tcctlo/law/mapper/FileManagerMapper.java | 8 + .../law/mapper/ImpulseInformationMapper.java | 12 + .../law/service/ICaseInformationService.java | 34 ++- .../law/service/IContractTemplateService.java | 95 ++++++ .../service/IImpulseInformationService.java | 8 +- .../impl/CaseInformationServiceImpl.java | 281 +++++++++++++----- .../impl/ContractTemplateServiceImpl.java | 170 +++++++++++ .../impl/ImpulseInformationServiceImpl.java | 41 ++- .../java/com/tcctlo/law/tools/FileUpload.java | 29 ++ .../law/tools/RichTextToWordSimple.java | 64 ++++ .../tcctlo/law/vo/CaseInformationListVO.java | 16 + .../tcctlo/law/vo/ImpulseInformationVO.java | 38 +++ .../CaseInformationMapper.xml | 89 +++++- .../ContractTemplateMapper.xml | 11 + .../tcctlo-law-office/FileManagerMapper.xml | 11 + .../ImpulseInformationMapper.xml | 29 +- .../com/tcctlo/law/LawApplicationTest.java | 28 -- .../test/java/com/tcctlo/law/WordTest.java | 38 +++ 32 files changed, 1312 insertions(+), 159 deletions(-) create mode 100644 tcctlo-law-office/src/main/java/com/tcctlo/law/controller/ContractTemplateController.java create mode 100644 tcctlo-law-office/src/main/java/com/tcctlo/law/entity/ContractTemplate.java create mode 100644 tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/ContractTemplateMapper.java create mode 100644 tcctlo-law-office/src/main/java/com/tcctlo/law/service/IContractTemplateService.java create mode 100644 tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/ContractTemplateServiceImpl.java create mode 100644 tcctlo-law-office/src/main/java/com/tcctlo/law/tools/FileUpload.java create mode 100644 tcctlo-law-office/src/main/java/com/tcctlo/law/tools/RichTextToWordSimple.java create mode 100644 tcctlo-law-office/src/main/java/com/tcctlo/law/vo/ImpulseInformationVO.java create mode 100644 tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/ContractTemplateMapper.xml delete mode 100644 tcctlo-law-office/src/test/java/com/tcctlo/law/LawApplicationTest.java create mode 100644 tcctlo-law-office/src/test/java/com/tcctlo/law/WordTest.java diff --git a/pom.xml b/pom.xml index f01cf5fa..f61d1ac4 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ 2.0.53 6.6.5 2.13.0 - 4.1.2 + 4.1.0 2.3 0.9.1 diff --git a/tcctlo-admin/src/main/java/com/tcctlo/web/controller/common/CommonController.java b/tcctlo-admin/src/main/java/com/tcctlo/web/controller/common/CommonController.java index 1d455e8b..32a36530 100644 --- a/tcctlo-admin/src/main/java/com/tcctlo/web/controller/common/CommonController.java +++ b/tcctlo-admin/src/main/java/com/tcctlo/web/controller/common/CommonController.java @@ -1,22 +1,13 @@ package com.tcctlo.web.controller.common; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import com.tcctlo.common.annotation.Anonymous; -import org.apache.http.HttpResponse; +import com.tcctlo.common.config.RuoYiConfig; +import com.tcctlo.common.constant.Constants; +import com.tcctlo.common.core.domain.AjaxResult; +import com.tcctlo.common.utils.StringUtils; +import com.tcctlo.common.utils.file.FileUploadUtils; +import com.tcctlo.common.utils.file.FileUtils; +import com.tcctlo.framework.config.ServerConfig; import org.dromara.x.file.storage.core.FileInfo; import org.dromara.x.file.storage.core.FileStorageService; import org.slf4j.Logger; @@ -25,13 +16,18 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import com.tcctlo.common.config.RuoYiConfig; -import com.tcctlo.common.constant.Constants; -import com.tcctlo.common.core.domain.AjaxResult; -import com.tcctlo.common.utils.StringUtils; -import com.tcctlo.common.utils.file.FileUploadUtils; -import com.tcctlo.common.utils.file.FileUtils; -import com.tcctlo.framework.config.ServerConfig; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; /** * 通用请求处理 @@ -96,6 +92,7 @@ public class CommonController { //上传图片,返回文件信息 FileInfo fileInfo = fileStorageService.of(file) .setPath(objectName) //保存到相对路径下,为了方便管理,不需要可以不写 + .setContentType(file.getContentType()) .upload(); //将文件上传到对应地方 AjaxResult ajax = AjaxResult.success(); ajax.put("url", fileInfo.getUrl()); @@ -110,6 +107,7 @@ public class CommonController { /** * 下载文件至本地 + * * @param response 响应 */ @GetMapping("/downloadFileOnLocal") diff --git a/tcctlo-admin/src/main/resources/application-druid.yml b/tcctlo-admin/src/main/resources/application-druid.yml index 4a577654..5d946c60 100644 --- a/tcctlo-admin/src/main/resources/application-druid.yml +++ b/tcctlo-admin/src/main/resources/application-druid.yml @@ -12,10 +12,10 @@ spring: password: root #线上环境 - #master: - # url: jdbc:mysql://47.109.202.121:3306/law-firm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - # username: root - # password: TCCT3.1415926 +# master: +# url: jdbc:mysql://47.109.202.121:3306/law-firm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# username: root +# password: TCCT3.1415926 # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/tcctlo-admin/src/main/resources/application.yml b/tcctlo-admin/src/main/resources/application.yml index a7010bf5..e554238a 100644 --- a/tcctlo-admin/src/main/resources/application.yml +++ b/tcctlo-admin/src/main/resources/application.yml @@ -16,7 +16,7 @@ ruoyi: # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 - port: 8088 + port: 8096 servlet: # 应用的访问路径 context-path: / @@ -131,7 +131,7 @@ xss: # 文件上传 dromara: x-file-storage: #文件存储配置 - default-platform: aliyun-oss-1 #默认使用的存储平台 + default-platform: minio-1 #默认使用的存储平台 thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】 #对应平台的配置写在这里,注意缩进要对齐 aliyun-oss: @@ -143,5 +143,19 @@ dromara: bucket-name: low-office domain: https://low-office.oss-cn-beijing.aliyuncs.com/ # 访问域名,注意“/”结尾,例如:https://abc.oss-cn-shanghai.aliyuncs.com/ base-path: low-office-images/ # 基础路径 + minio: + - platform: minio-1 # 存储平台标识 + enable-storage: true # 启用存储 + access-key: Xz7M7YncjbZZcLaHnHtB + secret-key: TdyM7bJ6WSfjPKOA3srAuugQxIS2PRL96IBrLoZu +# end-point: http://124.222.218.34:9000 + end-point: http://47.109.202.121:9000 + bucket-name: law-firm + domain: http://47.109.202.121:9000/law-firm/ # 访问域名,注意“/”结尾,例如:http://minio.abc.com/abc/ + base-path: law/ # 基础路径 +serviceFilePath: D:\templeteWordDownload\ +#serviceFilePath: /backitems/lawFirm/wordTemplate/ +generatedWordPath: D:/word/ + diff --git a/tcctlo-admin/src/test/java/FileTest.java b/tcctlo-admin/src/test/java/FileTest.java index a66f3623..b0843a4e 100644 --- a/tcctlo-admin/src/test/java/FileTest.java +++ b/tcctlo-admin/src/test/java/FileTest.java @@ -1,15 +1,30 @@ import com.tcctlo.TCCTLawOfficeApplication; +import com.tcctlo.common.utils.uuid.UUID; +import io.minio.MinioClient; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; +import javax.annotation.Resource; +import java.io.File; + @SpringBootTest(classes = TCCTLawOfficeApplication.class) public class FileTest { + @Resource + private MinioClient minioClient; + @Test @DisplayName("测试:截取文件后缀名") public void testFileName(){ String fileName = "https://low-office.oss-cn-beijing.aliyuncs.com/low-office-images/2025/01/25/67948d96229fc1a67923a564.xlsx"; System.out.println(fileName.substring(fileName.lastIndexOf("."))); } + + + @Test + @DisplayName("测试:截取文件后缀名") + public void testMinio(){ + + } } diff --git a/tcctlo-common/pom.xml b/tcctlo-common/pom.xml index c7095e99..0bf2c4fe 100644 --- a/tcctlo-common/pom.xml +++ b/tcctlo-common/pom.xml @@ -52,13 +52,13 @@ org.apache.commons commons-lang3 - + com.fasterxml.jackson.core jackson-databind - + com.alibaba.fastjson2 @@ -126,6 +126,12 @@ 3.17.4 + + io.minio + minio + 8.2.0 + + org.dromara.x-file-storage @@ -147,6 +153,14 @@ 3.5.1 + + cn.hutool + hutool-all + 5.3.7 + + + + diff --git a/tcctlo-generator/src/test/java/GeneratorUIServer.java b/tcctlo-generator/src/test/java/GeneratorUIServer.java index f52a1fd8..a3ea4032 100644 --- a/tcctlo-generator/src/test/java/GeneratorUIServer.java +++ b/tcctlo-generator/src/test/java/GeneratorUIServer.java @@ -5,12 +5,12 @@ import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter; public class GeneratorUIServer { public static void main(String[] args) { - GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:mysql://localhost:3306/low-office?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8") + GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:mysql://localhost:3306/law-firm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8") .userName("root") .password("root") .driverClassName("com.mysql.cj.jdbc.Driver") //数据库schema,MSSQL,PGSQL,ORACLE,DB2类型的数据库需要指定 - .schemaName("low-office") + .schemaName("law-firm") //数据库表前缀,生成entity名称时会去掉(v2.0.3新增) // .tablePrefix("t_") //如果需要修改entity及其属性的命名规则,以及自定义各类生成文件的命名规则,可自定义一个NameConverter实例,覆盖相应的名称转换方法,详细可查看该接口的说明: diff --git a/tcctlo-law-office/pom.xml b/tcctlo-law-office/pom.xml index bd21fe24..8b22f792 100644 --- a/tcctlo-law-office/pom.xml +++ b/tcctlo-law-office/pom.xml @@ -39,5 +39,13 @@ spring-test test + + + com.deepoove + poi-tl + 1.6.0 + + + \ No newline at end of file diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/CaseInformationController.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/CaseInformationController.java index bc21fbc9..747f3509 100644 --- a/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/CaseInformationController.java +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/CaseInformationController.java @@ -29,6 +29,37 @@ public class CaseInformationController extends BaseController { @Autowired private ICaseInformationService iCaseInformationService; + + /** + * 案件审核 + * @param params 参数:案件编号、审核状态、审核意见【id、auditStatus、auditOpinion】 + * @return + */ + @PostMapping(value = "/caseReview") + public AjaxResult caseReview(@RequestBody Map params) { + return AjaxResult.success(iCaseInformationService.caseReview(params)); + } + + /** + * 案件撤销 + * @param params 参数:案件编号、收案状态【id、caseStatus】 + * @return + */ + @PostMapping(value = "/claimWithdrawal") + public AjaxResult claimWithdrawal(@RequestBody Map params) { + return AjaxResult.success(iCaseInformationService.claimWithdrawal(params)); + } + + /** + * 设置案件结案 + * @param params 参数:案件编号、审核状态、审核意见【id、auditStatus、auditOpinion】 + * @return + */ + @PostMapping(value = "/caseClosed") + public AjaxResult caseClosed(@RequestBody Map params) { + return AjaxResult.success(iCaseInformationService.caseClosed(params)); + } + /** * 案件信息录入 * @@ -57,8 +88,20 @@ public class CaseInformationController extends BaseController { return AjaxResult.success(pageList); } + /** + * 案件查询【利冲信息库页面展示利冲信息对应的案件信息】 + * @param id 案件ID + * @return 案件信息 + */ + @GetMapping(value = "/selectCaseById/{id}") + public AjaxResult selectCaseById(@PathVariable("id") Long id) { + CaseInformationListVO caseInformationListVO = iCaseInformationService.selectCaseById(id); + return AjaxResult.success(caseInformationListVO); + } + /** * 根据案件ID查询案件详细信息 + * * @param id 案件ID * @return 结果集 */ @@ -70,17 +113,23 @@ public class CaseInformationController extends BaseController { /** * 案件信息修改 + * * @param params 入参 * @return 是否修改成功 */ @PostMapping(value = "/updateCaseInfo") public AjaxResult updateCaseInfo(@RequestBody CaseInformationEnterVO params) { - Integer result = iCaseInformationService.updateCaseInfo(params); - return AjaxResult.success(result); + Boolean res = iCaseInformationService.updateCaseInfo(params); + if (res) { + return AjaxResult.success("案件信息录入成功"); + } else { + return AjaxResult.error("案件信息录入失败"); + } } /** * 案件归档【单个案件】 + * * @param caseArchivedVO 要归档的案件 * @return 是否归档成功 */ @@ -111,6 +160,7 @@ public class CaseInformationController extends BaseController { /** * 案件删除【批量删除+单个删除】 + * * @param ids * @return */ @@ -124,6 +174,4 @@ public class CaseInformationController extends BaseController { Integer result = iCaseInformationService.update(params); return AjaxResult.success(result); } - - } diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/ContractTemplateController.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/ContractTemplateController.java new file mode 100644 index 00000000..ad081fbb --- /dev/null +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/ContractTemplateController.java @@ -0,0 +1,95 @@ +package com.tcctlo.law.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.tcctlo.common.core.domain.AjaxResult; +import com.tcctlo.law.entity.ContractTemplate; +import com.tcctlo.law.service.IContractTemplateService; +import com.tcctlo.law.vo.ImpulseInformationVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + *

+ * 合同模板 前端控制器 + *

+ * + * @author + * @since 2025-02-18 + */ + +@RestController +@RequestMapping("/contractTemplate") +public class ContractTemplateController { + + + @Autowired + private IContractTemplateService iContractTemplateService; + + /*@PostMapping(value = "/list") + public AjaxResult list(@RequestBody Map params) { + params.putIfAbsent("current", 1); + params.putIfAbsent("size", 10); + Page pageList = iImpulseInformationService.list(params); + return AjaxResult.success(pageList); + }*/ + + @PostMapping(value = "/list") + public AjaxResult list(@RequestBody Map params) { + params.putIfAbsent("current", 1); + params.putIfAbsent("size", 10); + Page pageList = iContractTemplateService.list(params); + return AjaxResult.success(pageList); + } + + /*@GetMapping(value = "/list") + public AjaxResult list(@RequestParam(required = false) Integer current, @RequestParam(required = false) Integer size) { + if (current == null) { + current = 1; + } + if (size == null) { + size = 10; + } + Page pageList = iContractTemplateService.list(current,size); + return AjaxResult.success(pageList); + }*/ + + + @GetMapping(value = "/{id}") + public AjaxResult getById(@PathVariable("id") Long id) { + ContractTemplate contractTemplate = iContractTemplateService.getById(id); + return AjaxResult.success(contractTemplate); + } + + @PostMapping(value = "/create") + public AjaxResult create(@RequestBody ContractTemplate params) { + Integer result = iContractTemplateService.create(params); + return AjaxResult.success(result); + } + + @PostMapping(value = "/delete/{id}") + public AjaxResult delete(@PathVariable("id") Long id) { + Integer result = iContractTemplateService.delete(id); + return AjaxResult.success(result); + } + + @PostMapping(value = "/deleteTemplate") + public AjaxResult deleteTemplate(@RequestBody Map param) { + + return AjaxResult.success(iContractTemplateService.deleteTemplate(param)); + } + + @PostMapping(value = "/update") + public AjaxResult update(@RequestBody ContractTemplate params) { + Integer result = iContractTemplateService.update(params); + return AjaxResult.success(result); + } + + + @GetMapping(value = "/getWord/{id}") + public AjaxResult getWord(@PathVariable("id") Long id) throws Exception { + iContractTemplateService.getWord(id); + return AjaxResult.success(); + } +} diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/ImpulseInformationController.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/ImpulseInformationController.java index f5f7dfe1..0ecb3334 100644 --- a/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/ImpulseInformationController.java +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/controller/ImpulseInformationController.java @@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tcctlo.common.core.domain.AjaxResult; import com.tcctlo.law.entity.ImpulseInformation; import com.tcctlo.law.service.IImpulseInformationService; +import com.tcctlo.law.vo.ImpulseInformationVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Map; + /** *

* 利冲信息表 前端控制器 @@ -24,7 +27,16 @@ public class ImpulseInformationController { @Autowired private IImpulseInformationService iImpulseInformationService; - @GetMapping(value = "/list") + @PostMapping(value = "/list") + public AjaxResult list(@RequestBody Map params) { + params.putIfAbsent("current", 1); + params.putIfAbsent("size", 10); + Page pageList = iImpulseInformationService.list(params); + return AjaxResult.success(pageList); + } + + + /*@GetMapping(value = "/list") public AjaxResult list(@RequestParam(required = false) Integer current, @RequestParam(required = false) Integer size) { if (current == null) { current = 1; @@ -34,7 +46,7 @@ public class ImpulseInformationController { } Page pageList = iImpulseInformationService.list(current, size); return AjaxResult.success(pageList); - } + }*/ /** * 模糊查询【用于搜索条件查询】 * @@ -81,4 +93,6 @@ public class ImpulseInformationController { Integer result = iImpulseInformationService.update(params); return AjaxResult.success(result); } + + } diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/entity/ContractTemplate.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/entity/ContractTemplate.java new file mode 100644 index 00000000..f22627cf --- /dev/null +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/entity/ContractTemplate.java @@ -0,0 +1,115 @@ +package com.tcctlo.law.entity; +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import com.fasterxml.jackson.databind.JsonNode; +import lombok.Data; +import lombok.EqualsAndHashCode; +/** + *

+ * 合同模板 + *

+ * + * @author + * @since 2025-02-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("contract_template") +public class ContractTemplate implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 合同模板名称 + */ + private String templateName; + + /** + * 合同描述 + */ + private String templateContext; + + /** + * 存储路径(服务器) + */ + private String filePath; + + /** + * 阿里云OSS访问地址 + */ + private String fileUrl; + + /** + * 生成的新文件名 + */ + private String newFileName; + + /** + * 电子签章位置(X轴) + */ + private Double locationX; + + /** + * 电子签章位置(Y轴) + */ + private Double locationY; + + /** + * 电子签章位置页码 + */ + private Integer pageNumber; + + /** + * 动态表单参数 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private JsonNode formParameter; + + /** + * 状态【0:正常,1:停用】 + */ + private Integer status; + + /** + * 删除标志【0:未删除,1:已删除】 + */ + private Integer delFlag; + + /** + * 创建者 + */ + private Long createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** + * 更新者 + */ + private Date updateBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + /** + * 备注 + */ + private String remake; + +} diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/CaseInformationMapper.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/CaseInformationMapper.java index 803d5031..d7c9c409 100644 --- a/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/CaseInformationMapper.java +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/CaseInformationMapper.java @@ -28,6 +28,14 @@ public interface CaseInformationMapper extends BaseMapper { Page selectCondition(@Param("page") Page page, @Param("condition") Map condition); + /** + * 根据案件ID查询案件信息 + * @param id 案件ID + * @return 结果集 + */ + CaseInformationListVO selectCaseById(@Param("id") Long id); + + /** * 案件归档 * @param caseId 要归档的案件ID @@ -40,4 +48,39 @@ public interface CaseInformationMapper extends BaseMapper { * @param longList 案件ID集合 */ int removeByIds(@Param("ids") List longList); + + /** + * 判断案件是否有相关文件 + * @param id 案件id + * @return 结果集 + */ + int selectCaseFileNum(@Param("id") Long id); + + /** + * 根据案件ID查询案件信息 + * @param id 案件ID + * @return 结果集 + */ + CaseInformation selectCaseInfoById(@Param("id") Long id); + + /** + * 案件审核 + * @param params 参数 + * @return 是否审核成功 + */ + boolean caseReview(@Param("params") Map params); + + /** + * 案件撤销 + * @param params 参数 + * @return 是否撤销成功 + */ + Boolean claimWithdrawal(@Param("params") Map params); + + /** + * 案件结案 + * @param params 参数 + * @return 结案结果 + */ + Boolean caseClosed(@Param("params") Map params); } diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/ContractTemplateMapper.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/ContractTemplateMapper.java new file mode 100644 index 00000000..70685c74 --- /dev/null +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/ContractTemplateMapper.java @@ -0,0 +1,25 @@ +package com.tcctlo.law.mapper; + +import com.tcctlo.law.entity.ContractTemplate; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 合同模板 Mapper 接口 + *

+ * + * @author + * @since 2025-02-18 + */ +public interface ContractTemplateMapper extends BaseMapper { + + /** + * 批量删除 + * @param ids ids + * @return 结果集 + */ + Integer deleteTemplate(@Param("ids") List ids); +} diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/FileManagerMapper.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/FileManagerMapper.java index 4824f7a5..01671fe8 100644 --- a/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/FileManagerMapper.java +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/FileManagerMapper.java @@ -15,6 +15,7 @@ import java.util.List; * @author 张世琪 * @since 2025-02-06 */ + public interface FileManagerMapper extends BaseMapper { /** @@ -45,4 +46,11 @@ public interface FileManagerMapper extends BaseMapper { * @param fileIds 收款记录表中存储的文件ID */ int removeByCaseIdAndFileIds(@Param("caseId") Long caseId, @Param("fileIds") List fileIds); + + /** + * 查询案件相关的所有文件 + * @param caseId 案件ID + * @return 结果集 + */ + List selectFileByCaseId(@Param("caseId") Long caseId); } diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/ImpulseInformationMapper.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/ImpulseInformationMapper.java index 403239ba..a4ae3079 100644 --- a/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/ImpulseInformationMapper.java +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/mapper/ImpulseInformationMapper.java @@ -1,10 +1,13 @@ package com.tcctlo.law.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tcctlo.law.entity.ImpulseInformation; +import com.tcctlo.law.vo.CaseInformationListVO; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -59,4 +62,13 @@ public interface ImpulseInformationMapper extends BaseMapper * @return 结果集 */ int removeByCaseId(@Param("caseId") List caseId); + + + /** + * 分页条件查询 + * @param page 分页 + * @param condition 条件 + * @return 结果集 + */ + Page selectCondition(@Param("page") Page page, @Param("condition") Map condition); } diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/service/ICaseInformationService.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/ICaseInformationService.java index aef46bb1..1cc4e476 100644 --- a/tcctlo-law-office/src/main/java/com/tcctlo/law/service/ICaseInformationService.java +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/ICaseInformationService.java @@ -1,8 +1,8 @@ package com.tcctlo.law.service; -import com.tcctlo.law.entity.CaseInformation; -import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.tcctlo.law.entity.CaseInformation; import com.tcctlo.law.vo.CaseArchivedVO; import com.tcctlo.law.vo.CaseInformationEnterVO; import com.tcctlo.law.vo.CaseInformationListVO; @@ -41,6 +41,13 @@ public interface ICaseInformationService extends IService{ */ CaseInformation getById(Long id); + /** + * 根据案件ID查询案件信息 + * @param id 案件id + * @return 结果集 + */ + CaseInformationListVO selectCaseById(Long id); + /** *

* 新增接口 @@ -92,7 +99,7 @@ public interface ICaseInformationService extends IService{ * @param params 案件信息 * @return 受影响行数 */ - Integer updateCaseInfo(CaseInformationEnterVO params); + Boolean updateCaseInfo(CaseInformationEnterVO params); /** * 删除案件信息 @@ -107,4 +114,25 @@ public interface ICaseInformationService extends IService{ * @return 是否归档成功 */ Boolean caseArchived(CaseArchivedVO caseArchivedVO); + + /** + * 案件审核 + * @param params 参数 + * @return 是否审核成功 + */ + Boolean caseReview(Map params); + + /** + * 案件撤销 + * @param params 参数 + * @return 是否撤销成功 + */ + Boolean claimWithdrawal(Map params); + + /** + * 案件结案 + * @param params 参数 + * @return 是否结案成功 + */ + Boolean caseClosed(Map params); } diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/service/IContractTemplateService.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/IContractTemplateService.java new file mode 100644 index 00000000..044ba0f0 --- /dev/null +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/IContractTemplateService.java @@ -0,0 +1,95 @@ +package com.tcctlo.law.service; + +import com.tcctlo.law.entity.ContractTemplate; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.io.FileNotFoundException; +import java.util.Map; + +/** + *

+ * 合同模板 服务类 + *

+ * + * @author + * @since 2025-02-18 + */ +public interface IContractTemplateService { + + /** + *

+ * 分页列表查询 + *

+ * @param pageNo + * @param pageSize + * @return + */ + /*Page list(Integer pageNo, Integer pageSize);*/ + + + /** + *

+ * 分页列表查询 + *

+ * + * @param pageNo + * @param pageSize + * @return + */ + Page list(Map params); + + /** + *

+ * 详情接口 + *

+ * + * @param id + * @return + */ + ContractTemplate getById(Long id); + + /** + *

+ * 新增接口 + *

+ * + * @param contractTemplate + * @return + */ + Integer create(ContractTemplate contractTemplate); + + + /** + *

+ * 删除接口 + *

+ * + * @param id + * @return + */ + Integer delete(Long id); + + /** + *

+ * 更新接口 + *

+ * + * @param contractTemplate + * @return + */ + Integer update(ContractTemplate contractTemplate); + + /** + * 批量删除 + * + * @param ids ids + * @return 结果集 + */ + Integer deleteTemplate(Map param); + + /** + * 根据word模板生成word + * @param id 模板id + */ + void getWord(Long id) throws Exception; +} diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/service/IImpulseInformationService.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/IImpulseInformationService.java index b1b66361..1265942e 100644 --- a/tcctlo-law-office/src/main/java/com/tcctlo/law/service/IImpulseInformationService.java +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/IImpulseInformationService.java @@ -3,6 +3,7 @@ package com.tcctlo.law.service; import com.tcctlo.law.entity.ImpulseInformation; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.tcctlo.law.vo.ImpulseInformationVO; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -22,11 +23,10 @@ public interface IImpulseInformationService extends IService *

* 分页列表查询 *

- * @param pageNo - * @param pageSize - * @return + * @param params 查询条件 + * @return 结果集 */ - Page list(Integer pageNo, Integer pageSize); + Page list(Map params); /** *

diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/CaseInformationServiceImpl.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/CaseInformationServiceImpl.java index 66a1be36..9cc973cf 100644 --- a/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/CaseInformationServiceImpl.java +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/CaseInformationServiceImpl.java @@ -12,6 +12,7 @@ import com.tcctlo.law.entity.*; import com.tcctlo.law.mapper.*; import com.tcctlo.law.service.*; import com.tcctlo.law.tools.GenerateCaseNo; +import com.tcctlo.law.tools.RichTextToWordSimple; import com.tcctlo.law.vo.CaseArchivedVO; import com.tcctlo.law.vo.CaseInformationEnterVO; import com.tcctlo.law.vo.CaseInformationListVO; @@ -22,11 +23,7 @@ import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.math.BigDecimal; import java.util.*; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Predicate; import java.util.stream.Collectors; /** @@ -40,6 +37,8 @@ import java.util.stream.Collectors; @Service public class CaseInformationServiceImpl extends ServiceImpl implements ICaseInformationService { + @Resource + private RichTextToWordSimple richTextToWordSimple; @Resource private CaseInformationMapper caseInformationMapper; @@ -156,19 +155,57 @@ public class CaseInformationServiceImpl extends ServiceImpl page = new Page<>(pageNo, pageSize); Page caseInformationPage = caseInformationMapper.selectCondition(page, params); for (CaseInformationListVO item : caseInformationPage.getRecords()) { - item.setEntrustingParty(informationMapper.selectByCaseId(item.getId(), 0).stream().map(ImpulseInformation::getCaseName).collect(Collectors.joining(","))); //委托方 + /*item.setEntrustingParty(informationMapper.selectByCaseId(item.getId(), 0).stream().map(ImpulseInformation::getCaseName).collect(Collectors.joining(","))); //委托方 item.setOpposite(informationMapper.selectByCaseId(item.getId(), 1).stream().map(ImpulseInformation::getCaseName).collect(Collectors.joining(","))); //相对方 item.setAttorneyAgent(caseLawyerMapper.selectAttorneyAgentLawByCaseId(item.getId()).getLawyerName()); //代理律师 item.setAssistingLawyer(caseLawyerMapper.selectAssistingLawyerByCaseId(item.getId()).stream().map(CaseLawyer::getLawyerName).collect(Collectors.joining(","))); //协办律师 + int fileNum = caseInformationMapper.selectCaseFileNum(item.getId()); + item.setFileFlag(fileNum > 0); + item.setFileList(fileManagerMapper.selectFileByCaseId(item.getId()));*/ + + List entrustingParty = informationMapper.selectByCaseId(item.getId(), 0); + if (CollUtil.isNotEmpty(entrustingParty)){ + item.setEntrustingParty(entrustingParty.stream().map(ImpulseInformation::getCaseName).collect(Collectors.joining(","))); + } + + List opposite = informationMapper.selectByCaseId(item.getId(), 1); + if (CollUtil.isNotEmpty(opposite)){ + item.setOpposite(opposite.stream().map(ImpulseInformation::getCaseName).collect(Collectors.joining(","))); + } + + CaseLawyer attorneyAgent = caseLawyerMapper.selectAttorneyAgentLawByCaseId(item.getId()); + if (BeanUtil.isNotEmpty(attorneyAgent)){ + item.setAttorneyAgent(attorneyAgent.getLawyerName()); + } + + List assistingLawyer = caseLawyerMapper.selectAssistingLawyerByCaseId(item.getId()); + if (CollUtil.isNotEmpty(assistingLawyer)){ + item.setAssistingLawyer(assistingLawyer.stream().map(CaseLawyer::getLawyerName).collect(Collectors.joining(","))); + } + + int fileNum = caseInformationMapper.selectCaseFileNum(item.getId()); + item.setFileFlag(fileNum > 0); + item.setFileList(fileManagerMapper.selectFileByCaseId(item.getId())); } return caseInformationPage; } + + @Override + public CaseInformationListVO selectCaseById(Long id) { + CaseInformationListVO item = caseInformationMapper.selectCaseById(id); + item.setAttorneyAgent(caseLawyerMapper.selectAttorneyAgentLawByCaseId(item.getId()).getLawyerName()); //代理律师 + item.setAssistingLawyer(caseLawyerMapper.selectAssistingLawyerByCaseId(item.getId()).stream().map(CaseLawyer::getLawyerName).collect(Collectors.joining(","))); //协办律师 + return item; + } + @Override public CaseInformation getById(Long id) { return caseInformationMapper.selectById(id); } + + @Override public Integer create(CaseInformation caseInformation) { return caseInformationMapper.insert(caseInformation); @@ -184,7 +221,7 @@ public class CaseInformationServiceImpl extends ServiceImpl impulseInformationList = new ArrayList<>(); + List entrustingParty = caseInfo.getEntrustingParty(); + if (CollUtil.isNotEmpty(entrustingParty)){ + impulseInformationList.addAll(caseInfo.getEntrustingParty().stream().peek(item -> { + item.setCaseId(caseId); + item.setIsClient(0); + }).collect(Collectors.toList())); + } + List opposite = caseInfo.getOpposite(); + if (CollUtil.isNotEmpty(opposite)){ + impulseInformationList.addAll(caseInfo.getOpposite().stream().peek(item -> { + item.setCaseId(caseId); + item.setIsClient(1); + }).collect(Collectors.toList())); + informationService.saveBatch(impulseInformationList); + List impulseInformationIds = impulseInformationList.stream().map(item -> item.getId()).collect(Collectors.toList()); + caseInformation.setImpulseInformationIds(StringUtils.join(impulseInformationIds, ",")); + } + //插入案件关联律师数据 + List caseLawyerList = new ArrayList<>(); + CaseLawyer attorneyAgent = caseInfo.getAttorneyAgent(); + if (BeanUtil.isNotEmpty(attorneyAgent)){ + attorneyAgent.setLawyerType(0); + attorneyAgent.setCaseId(caseId); + caseLawyerList.add(attorneyAgent); //代理律师 + } + List assistingLawyer = caseInfo.getAssistingLawyer(); + if (CollUtil.isNotEmpty(assistingLawyer)){ + caseLawyerList.addAll(assistingLawyer.stream().peek(item -> { + item.setCaseId(caseId); + item.setLawyerType(1); + }).collect(Collectors.toList())); //协办律师 + caseLawyerService.saveBatch(caseLawyerList); + List caseLawyerIds = caseLawyerList.stream().map(item -> item.getLawyerId()).collect(Collectors.toList()); + caseInformation.setCaseLawyerIds(StringUtils.join(caseLawyerIds, ",")); + caseInformationMapper.updateById(caseInformation); //更新案件表中的律师IDS和利冲信息IDS + } + + //插入案件关联收款记录信息【收款记录文件插入】 + List collectionRecordList = caseInfo.getCollectionRecordList(); + if (CollUtil.isNotEmpty(collectionRecordList)){ + collectionRecordList.forEach(item -> { + item.setCaseId(caseId); + List fileManagerList = item.getFileManager().stream().peek(i -> { + i.setCaseId(caseId); + i.setFileType(1); //设置文件类型为【收款记录文件】 + }).collect(Collectors.toList()); + fileManagerService.saveBatch(fileManagerList); + List fileIds = fileManagerList.stream().map(FileManager::getId).collect(Collectors.toList()); + item.setCollectionUrlId(StringUtils.join(fileIds, ",")); + collectionRecordMapper.insert(item); + }); + } + } catch (Exception e) { + throw new RuntimeException("案件录入失败"); + } + return true; } @Override @@ -279,80 +386,89 @@ public class CaseInformationServiceImpl extends ServiceImpl oldImpulse = informationMapper.selectByCaseId(params.getCaseInformation().getId(), 0); - List newImpulse = params.getEntrustingParty(); - editImpulseInformation(oldImpulse, newImpulse, caseId); + //案件关联【委托方】----entrustingParty--从数据库获取出原来的委托方信息与通过接口传入的进行比对 + List oldImpulse = informationMapper.selectByCaseId(params.getCaseInformation().getId(), 0); + List newImpulse = params.getEntrustingParty(); + editImpulseInformation(oldImpulse, newImpulse, caseId); - //案件关联【相对方】----opposite - List oldOpposite = informationMapper.selectByCaseId(params.getCaseInformation().getId(), 1); - List newOpposite = params.getOpposite(); - editImpulseInformation(oldOpposite, newOpposite, caseId); - caseInformation.setImpulseInformationIds(informationMapper.selectByCaseIdAdnDelFlag(params.getCaseInformation().getId()).stream().map(i -> i.getId().toString()).collect(Collectors.joining(","))); + //案件关联【相对方】----opposite + List oldOpposite = informationMapper.selectByCaseId(params.getCaseInformation().getId(), 1); + List newOpposite = params.getOpposite(); + editImpulseInformation(oldOpposite, newOpposite, caseId); + caseInformation.setImpulseInformationIds(informationMapper.selectByCaseIdAdnDelFlag(params.getCaseInformation().getId()).stream().map(i -> i.getId().toString()).collect(Collectors.joining(","))); - //代理律师----attorneyAgent----修改原来的律师信息 - CaseLawyer newAttorneyAgent = params.getAttorneyAgent(); - if (newAttorneyAgent.getId() == null) { - CaseLawyer oldCaseLawyer = caseLawyerMapper.selectAttorneyAgentLawByCaseId(params.getCaseInformation().getId()); - oldCaseLawyer.setIsPrime(1); - caseLawyerMapper.updateById(oldCaseLawyer); - newAttorneyAgent.setCaseId(params.getCaseInformation().getId()); - caseLawyerMapper.insert(newAttorneyAgent); + //代理律师----attorneyAgent----修改原来的律师信息 + CaseLawyer newAttorneyAgent = params.getAttorneyAgent(); + if (BeanUtil.isNotEmpty(newAttorneyAgent)){ + if (newAttorneyAgent.getId() == null) { + CaseLawyer oldCaseLawyer = caseLawyerMapper.selectAttorneyAgentLawByCaseId(params.getCaseInformation().getId()); + if (oldCaseLawyer != null){ + oldCaseLawyer.setIsPrime(1); + caseLawyerMapper.updateById(oldCaseLawyer); + } + newAttorneyAgent.setCaseId(params.getCaseInformation().getId()); + caseLawyerMapper.insert(newAttorneyAgent); + } + } + + + + //协办律师----assistingLawyer + List newAssistingLawyer = params.getAssistingLawyer(); //协办律师 + List oldAssistingLawyer = caseLawyerMapper.selectAssistingLawyerByCaseId(params.getCaseInformation().getId()); + editAssistingLawyer(oldAssistingLawyer, newAssistingLawyer, caseId); + caseInformation.setCaseLawyerIds(caseLawyerMapper.selectAllPrimeLawyerByCaseId(params.getCaseInformation().getId()).stream().map(c -> c.getLawyerId().toString()).collect(Collectors.joining(","))); + + /** + * 收款记录----collectionRecordList + * 收款记录基本信息----collectionRecord + * 收款记录文件----fileManager + */ + List newData = params.getCollectionRecordList(); //收款记录信息 + List oldData = collectionRecordMapper.selectByCaseId(caseId); + List newIds = newData.stream().map(item -> item.getId()).collect(Collectors.toList()); + List oldIds = oldData.stream().map(item -> item.getId()).collect(Collectors.toList()); + //获取新添加的收款记录,计算出新的收款记录金额,在总金额中加上 + List insert = newData.stream().filter(item -> item.getId() == null).peek(item -> item.setCaseId(caseId)).collect(Collectors.toList()); + insert.forEach(item -> { + List fileManager = item.getFileManager().stream().peek(i -> i.setCaseId(caseId)).collect(Collectors.toList()); + fileManagerService.saveBatch(fileManager); + item.setCollectionUrlId(fileManager.stream().map(i -> i.getId().toString()).collect(Collectors.joining(","))); + }); + List list = BeanUtil.copyToList(insert, CollectionRecord.class); + collectionRecordService.saveBatch(list); + /*BigDecimal addSum = BigDecimal.valueOf(insert.stream().mapToDouble(item -> item.getAmountReceived().doubleValue()).sum());*/ + + //获取删除的收款记录,计算出删除的收款记录的金额,在总金额中减去 + List deleteIds = (List) CollUtil.subtract(oldIds, newIds); + List deleteData = oldData.stream().filter(item -> CollUtil.contains(deleteIds, item.getId())).peek(item -> { + item.setDelFlag(1); + item.setStatus(1); + }).collect(Collectors.toList()); + /*BigDecimal delSum = BigDecimal.valueOf(deleteData.stream().mapToDouble(item -> item.getAmountReceived().doubleValue()).sum());*/ + + + for (CollectionRecordEnterVO item : deleteData) { + //根据caseId和收款记录ID删除收款记录 + collectionRecordMapper.removeByCaseIdAdnRecordId(item.getId(),caseId); + //根据caseId和收款记录ID删除收款记录文件 + List fileIds = Arrays.stream(item.getCollectionUrlId().split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + fileManagerMapper.removeByCaseIdAndFileIds(caseId, fileIds); + } + caseInformationMapper.updateById(caseInformation); + }catch (Exception e){ + throw new RuntimeException("保存失败"); } - - - //协办律师----assistingLawyer - List newAssistingLawyer = params.getAssistingLawyer(); //协办律师 - List oldAssistingLawyer = caseLawyerMapper.selectAssistingLawyerByCaseId(params.getCaseInformation().getId()); - editAssistingLawyer(oldAssistingLawyer, newAssistingLawyer, caseId); - caseInformation.setCaseLawyerIds(caseLawyerMapper.selectAllPrimeLawyerByCaseId(params.getCaseInformation().getId()).stream().map(c -> c.getLawyerId().toString()).collect(Collectors.joining(","))); - - /** - * 收款记录----collectionRecordList - * 收款记录基本信息----collectionRecord - * 收款记录文件----fileManager - */ - List newData = params.getCollectionRecordList(); //收款记录信息 - List oldData = collectionRecordMapper.selectByCaseId(caseId); - List newIds = newData.stream().map(item -> item.getId()).collect(Collectors.toList()); - List oldIds = oldData.stream().map(item -> item.getId()).collect(Collectors.toList()); - //获取新添加的收款记录,计算出新的收款记录金额,在总金额中加上 - List insert = newData.stream().filter(item -> item.getId() == null).peek(item -> item.setCaseId(caseId)).collect(Collectors.toList()); - insert.forEach(item -> { - List fileManager = item.getFileManager().stream().peek(i -> i.setCaseId(caseId)).collect(Collectors.toList()); - fileManagerService.saveBatch(fileManager); - item.setCollectionUrlId(fileManager.stream().map(i -> i.getId().toString()).collect(Collectors.joining(","))); - }); - List list = BeanUtil.copyToList(insert, CollectionRecord.class); - collectionRecordService.saveBatch(list); - /*BigDecimal addSum = BigDecimal.valueOf(insert.stream().mapToDouble(item -> item.getAmountReceived().doubleValue()).sum());*/ - - //获取删除的收款记录,计算出删除的收款记录的金额,在总金额中减去 - List deleteIds = (List) CollUtil.subtract(oldIds, newIds); - List deleteData = oldData.stream().filter(item -> CollUtil.contains(deleteIds, item.getId())).peek(item -> { - item.setDelFlag(1); - item.setStatus(1); - }).collect(Collectors.toList()); - /*BigDecimal delSum = BigDecimal.valueOf(deleteData.stream().mapToDouble(item -> item.getAmountReceived().doubleValue()).sum());*/ - - - for (CollectionRecordEnterVO item : deleteData) { - //根据caseId和收款记录ID删除收款记录 - collectionRecordMapper.removeByCaseIdAdnRecordId(item.getId(),caseId); - //根据caseId和收款记录ID删除收款记录文件 - List fileIds = Arrays.stream(item.getCollectionUrlId().split(",")) - .map(Long::parseLong) - .collect(Collectors.toList()); - fileManagerMapper.removeByCaseIdAndFileIds(caseId, fileIds); - } - caseInformationMapper.updateById(caseInformation); - return 0; + return true; } @Override @@ -396,6 +512,21 @@ public class CaseInformationServiceImpl extends ServiceImpl params) { + return caseInformationMapper.caseReview(params); + } + + @Override + public Boolean claimWithdrawal(Map params) { + return caseInformationMapper.claimWithdrawal(params); + } + + @Override + public Boolean caseClosed(Map params) { + return caseInformationMapper.caseClosed(params); + } + /** * 编辑协办律师 * diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/ContractTemplateServiceImpl.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/ContractTemplateServiceImpl.java new file mode 100644 index 00000000..6b03d5cc --- /dev/null +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/ContractTemplateServiceImpl.java @@ -0,0 +1,170 @@ +package com.tcctlo.law.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.tcctlo.common.core.domain.AjaxResult; +import com.tcctlo.law.entity.ContractTemplate; +import com.tcctlo.law.mapper.ContractTemplateMapper; +import com.tcctlo.law.service.IContractTemplateService; +import com.tcctlo.law.tools.FileUpload; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 合同模板 服务实现类 + *

+ * + * @author + * @since 2025-02-18 + */ +@Service +public class ContractTemplateServiceImpl extends ServiceImpl implements IContractTemplateService { + + + @Resource + private ContractTemplateMapper contractTemplateMapper; + + @Resource + private FileUpload fileUpload; + + @Value("${serviceFilePath}") + private String serviceFilePath; + + @Value("${generatedWordPath}") + private String generatedWordPath; + + /*@Override + public Page list(Integer pageNo, Integer pageSize) { + return contractTemplateMapper.selectPage(new Page<>(pageNo, pageSize), new QueryWrapper<>()); + }*/ + + + @Override + public Page list(Map params) { + return contractTemplateMapper.selectPage(new Page<>((Integer) params.get("current"), (Integer) params.get("size")), new QueryWrapper<>()); + } + + @Override + public ContractTemplate getById(Long id) { + ContractTemplate contractTemplate = contractTemplateMapper.selectById(id); + return contractTemplate; + } + + /** + * 下载文件至本地 + * + * @param response 响应 + */ + @GetMapping("/downloadFileOnLocal") + public AjaxResult downloadFile(HttpServletResponse response, @RequestParam("urlPath") String urlPath, @RequestParam("path") String path) { + try { + URL url = new URL(urlPath); + String filePath = "F:\\fileDownload\\" + UUID.randomUUID() + urlPath.substring(urlPath.lastIndexOf(".")); + URLConnection conn = url.openConnection(); + InputStream inputStream = conn.getInputStream(); + FileOutputStream fileOutputStream = new FileOutputStream(filePath); + int bytesum = 0; + int byteread; + byte[] buffer = new byte[1024]; + while ((byteread = inputStream.read(buffer)) != -1) { + bytesum += byteread; + fileOutputStream.write(buffer, 0, byteread); + } + fileOutputStream.close(); + return AjaxResult.success("下载成功"); + } catch (Exception e) { + throw new RuntimeException("下载失败"); + } + } + + @Override + public Integer create(ContractTemplate contractTemplate) { + try { + URL url = new URL(contractTemplate.getFileUrl()); + String filePath = serviceFilePath + UUID.randomUUID() + contractTemplate.getFileUrl().substring(contractTemplate.getFileUrl().lastIndexOf(".")); +// String filePath = "/backitems/lawFirm/wordTemplate/" + UUID.randomUUID() + contractTemplate.getFileUrl().substring(contractTemplate.getFileUrl().lastIndexOf(".")); + contractTemplate.setFilePath(filePath); + URLConnection conn = url.openConnection(); + InputStream inputStream = conn.getInputStream(); + FileOutputStream fileOutputStream = new FileOutputStream(filePath); + int bytesum = 0; + int byteread; + byte[] buffer = new byte[1024]; + while ((byteread = inputStream.read(buffer)) != -1) { + bytesum += byteread; + fileOutputStream.write(buffer, 0, byteread); + } + fileOutputStream.close(); + } catch (Exception e) { + throw new RuntimeException("存储至服务器失败"); + } + + return contractTemplateMapper.insert(contractTemplate); + } + + @Override + public Integer delete(Long id) { + return contractTemplateMapper.deleteById(id); + } + + @Override + public Integer update(ContractTemplate contractTemplate) { + return contractTemplateMapper.updateById(contractTemplate); + } + + @Override + public Integer deleteTemplate(Map param) { + List ids = Arrays.stream(param.get("ids").split(",")) + .mapToLong(Long::parseLong) + .boxed() + .collect(Collectors.toList()); + return contractTemplateMapper.deleteTemplate(ids); + } + + @Override + public void getWord(Long id) throws Exception { + ContractTemplate contractTemplate = contractTemplateMapper.selectById(id); + String filePath = contractTemplate.getFilePath(); + HashMap map = new HashMap<>(); + map.put("firstParty","甲方名称"); + map.put("secondParty","乙方名称"); + map.put("solicitor","张三、李四、王五"); + map.put("commitment","委托事项委托事项委托事项委托事项"); + map.put("signDate", LocalDateTime.now().toString()); + map.put("legalRepresentative","法定代表人"); + map.put("idNo","620121199708060011"); + map.put("creditCode","52031001156477894"); + map.put("bankName","中国建设银行"); + map.put("accountNum","4561112557894411"); + map.put("address","云南省昆明市"); + map.put("phone","13359490766"); + map.put("facsimile","0931-6554211"); + map.put("postcode","730300"); + XWPFTemplate template = XWPFTemplate.compile(filePath).render(map); + String savePath = generatedWordPath + UUID.randomUUID().toString() + ".docx"; + FileOutputStream out = new FileOutputStream(savePath); + template.write(out); + out.flush(); + out.close(); + template.close(); + File file = new File(savePath); + System.out.println(fileUpload.uploadFile(file)); + } + +} diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/ImpulseInformationServiceImpl.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/ImpulseInformationServiceImpl.java index 22d9b5b0..da40f011 100644 --- a/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/ImpulseInformationServiceImpl.java +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/service/impl/ImpulseInformationServiceImpl.java @@ -1,20 +1,28 @@ package com.tcctlo.law.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tcctlo.common.utils.StringUtils; +import com.tcctlo.law.entity.CaseInformation; import com.tcctlo.law.entity.ImpulseInformation; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.tcctlo.law.mapper.CaseInformationMapper; import com.tcctlo.law.mapper.ImpulseInformationMapper; import com.tcctlo.law.service.IImpulseInformationService; +import com.tcctlo.law.vo.ImpulseInformationVO; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.function.Consumer; +import java.util.stream.Collectors; /** *

@@ -31,11 +39,37 @@ public class ImpulseInformationServiceImpl extends ServiceImpl list(Integer pageNo, Integer pageSize) { - return impulseInformationMapper.selectPage(new Page<>(pageNo, pageSize), new QueryWrapper<>()); + public Page list(Map params) { + Page resPage = new Page<>(); + Page page = impulseInformationMapper.selectCondition(new Page<>((Integer) params.get("current"), (Integer) params.get("size")), params); + if (page.getRecords() != null){ + List list = BeanUtil.copyToList(page.getRecords(), ImpulseInformationVO.class); + list.stream().peek(item -> { + if (item.getCaseId() != null){ + CaseInformation caseInformation = caseInformationMapper.selectById(item.getCaseId()); + item.setCaseInfoName(caseInformation.getCaseName()); + item.setTermOfConsultancy(caseInformation.getTermOfConsultancy()); + item.setArchiveStatus(caseInformation.getArchiveStatus()); + item.setIsFinishCase(caseInformation.getIsFinishCase()); + } + }).collect(Collectors.toList()); + resPage.setRecords(list); + resPage.setTotal(page.getTotal()); + resPage.setSize(page.getSize()); + resPage.setCurrent(page.getCurrent()); + } + return resPage; } + /*@Override + public Page list(Map params) { + return impulseInformationMapper.selectPage(new Page<>((Integer) params.get("current"), (Integer) params.get("size")), new QueryWrapper<>()); + }*/ + @Override public List selectLikeByParam(String caseName, Integer isClient) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -63,8 +97,7 @@ public class ImpulseInformationServiceImpl extends ServiceImpl fileList; + + } diff --git a/tcctlo-law-office/src/main/java/com/tcctlo/law/vo/ImpulseInformationVO.java b/tcctlo-law-office/src/main/java/com/tcctlo/law/vo/ImpulseInformationVO.java new file mode 100644 index 00000000..989f4ca7 --- /dev/null +++ b/tcctlo-law-office/src/main/java/com/tcctlo/law/vo/ImpulseInformationVO.java @@ -0,0 +1,38 @@ +package com.tcctlo.law.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.tcctlo.law.entity.CaseInformation; +import com.tcctlo.law.entity.ImpulseInformation; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ImpulseInformationVO extends ImpulseInformation { + /** + * 案件名称 + */ + private String caseInfoName; + + /** + * 顾问期限 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date termOfConsultancy; + + /** + * 归档状态【0:未归档,1:已归档】 + */ + private Integer archiveStatus; + + /** + * 是否结案【0:未结案,1:已结案】 + */ + private Integer isFinishCase; + + +} diff --git a/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/CaseInformationMapper.xml b/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/CaseInformationMapper.xml index 956cc85f..7a2aae8e 100644 --- a/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/CaseInformationMapper.xml +++ b/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/CaseInformationMapper.xml @@ -3,9 +3,12 @@ - + - ci.id,ci.case_no,ci.case_name,ci.case_context,ci.business_type,ci.business_classify,ci.case_type,ci.agency_stage,ci.case_source,ci.amount_receivable,ci.amount_received_sum,ci.payment_deadline,ci.reserve_money,ci.term_of_consultancy,ci.collection_status,ci.impulse_state,ci.case_status,ci.audit_status,ci.archive_status,ci.is_finish_case,ci.audit_opinion,ci.impulse_information_ids,ci.case_lawyer_ids,ci.status,ci.del_flag,ci.create_by,ci.create_time,ci.update_by,ci.update_time,ci.remake + ci + . + id + ,ci.case_no,ci.case_name,ci.case_context,ci.business_type,ci.business_classify,ci.case_type,ci.agency_stage,ci.case_source,ci.amount_receivable,ci.amount_received_sum,ci.payment_deadline,ci.reserve_money,ci.term_of_consultancy,ci.collection_status,ci.impulse_state,ci.case_status,ci.audit_status,ci.archive_status,ci.is_finish_case,ci.audit_opinion,ci.impulse_information_ids,ci.case_lawyer_ids,ci.status,ci.del_flag,ci.create_by,ci.create_time,ci.update_by,ci.update_time,ci.remake update case_information ci @@ -20,11 +23,54 @@ #{id} - + + update case_information ci + + + ci.audit_status = #{params.auditStatus}, + + + ci.audit_opinion = #{params.auditOpinion} + + + + + and ci.id = #{params.id} + + + + + update case_information ci + + + ci.case_status = #{params.caseStatus}, + + + + + and ci.id = #{params.id} + + + + + update case_information ci + + + ci.is_finish_case = #{params.isFinishCase} + + + + + and ci.id = #{params.id} + + + + + + diff --git a/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/ContractTemplateMapper.xml b/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/ContractTemplateMapper.xml new file mode 100644 index 00000000..39f7e46f --- /dev/null +++ b/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/ContractTemplateMapper.xml @@ -0,0 +1,11 @@ + + + + + + update contract_template ct set ct.del_flag = 1, ct.status = 1 where ct.id in + + #{id} + + + diff --git a/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/FileManagerMapper.xml b/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/FileManagerMapper.xml index 69d8adec..f765b65c 100644 --- a/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/FileManagerMapper.xml +++ b/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/FileManagerMapper.xml @@ -40,4 +40,15 @@ and fm.del_flag = 0 + diff --git a/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/ImpulseInformationMapper.xml b/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/ImpulseInformationMapper.xml index 59e5bf97..eaf97a25 100644 --- a/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/ImpulseInformationMapper.xml +++ b/tcctlo-law-office/src/main/resources/mapper/tcctlo-law-office/ImpulseInformationMapper.xml @@ -23,7 +23,7 @@ update impulse_information ii set ii.del_flag = 1, ii.status = 1, - ii.check_flag = 1 + ii.check_flag = 0 where ii.case_id in #{item} @@ -82,5 +82,32 @@ + diff --git a/tcctlo-law-office/src/test/java/com/tcctlo/law/LawApplicationTest.java b/tcctlo-law-office/src/test/java/com/tcctlo/law/LawApplicationTest.java deleted file mode 100644 index 811b2a5e..00000000 --- a/tcctlo-law-office/src/test/java/com/tcctlo/law/LawApplicationTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.tcctlo.law; - -import cn.hutool.core.util.IdUtil; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@SpringBootTest(classes = LawApplication.class) -public class LawApplicationTest { - - @Test - public void caseNo() { - // 获取当前日期和时间(精确到秒) - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); - String currentDateTime = dateFormat.format(new Date()); - - // 生成4位随机数 - String strRandom = IdUtil.fastSimpleUUID(); - - // 组合成订单编号 - String orderNumber = currentDateTime + "-" + strRandom; - - // 输出订单编号 - System.out.println("生成的订单编号为: " + orderNumber); - } -} diff --git a/tcctlo-law-office/src/test/java/com/tcctlo/law/WordTest.java b/tcctlo-law-office/src/test/java/com/tcctlo/law/WordTest.java new file mode 100644 index 00000000..30cc5630 --- /dev/null +++ b/tcctlo-law-office/src/test/java/com/tcctlo/law/WordTest.java @@ -0,0 +1,38 @@ +package com.tcctlo.law; + +import com.deepoove.poi.XWPFTemplate; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import java.io.FileOutputStream; +import java.time.LocalDateTime; +import java.util.HashMap; + +@SpringBootTest(classes = LawApplication.class) +public class WordTest { + + @Test + void word() throws Exception{ + HashMap map = new HashMap<>(); + map.put("firstParty","甲方名称"); + map.put("secondParty","乙方名称"); + map.put("solicitor","张三、李四、王五"); + map.put("commitment","委托事项委托事项委托事项委托事项"); + map.put("signDate", LocalDateTime.now().toString()); + map.put("legalRepresentative","法定代表人"); + map.put("idNo","620121199708060011"); + map.put("creditCode","52031001156477894"); + map.put("bankName","中国建设银行"); + map.put("accountNum","4561112557894411"); + map.put("address","云南省昆明市"); + map.put("phone","13359490766"); + map.put("facsimile","0931-6554211"); + map.put("postcode","730300"); + XWPFTemplate template = XWPFTemplate.compile("D:/templeteWord/常年法律顾问合同(2023.12版).docx").render(map); + FileOutputStream out = new FileOutputStream("D:/word/常年法律顾问合同.docx"); + template.write(out); + out.flush(); + out.close(); + template.close(); + } +}