Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev

This commit was merged in pull request #13.
This commit is contained in:
2024-01-11 15:32:27 +08:00
committed by Gitea
13 changed files with 714 additions and 139 deletions
@@ -77,7 +77,7 @@ public class CommonController
* 通用上传请求(单个) * 通用上传请求(单个)
*/ */
@PostMapping("/upload") @PostMapping("/upload")
public AjaxResult uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("annexType") Integer annexType, @RequestParam("id") Long id) throws Exception public AjaxResult uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("annexType") Integer annexType) throws Exception
{ {
try try
{ {
@@ -86,8 +86,10 @@ public class CommonController
// 上传并返回新文件名称 // 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file); String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName; String url = serverConfig.getUrl() + fileName;
saveCaseAttach(id, annexType, fileName,file.getOriginalFilename()); Long annexId = saveCaseAttach(annexType, fileName, file.getOriginalFilename());
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
ajax.put("annexId", annexId);
ajax.put("annexType", annexType);
ajax.put("url", url); ajax.put("url", url);
ajax.put("fileName", fileName); ajax.put("fileName", fileName);
ajax.put("newFileName", FileUtils.getName(fileName)); ajax.put("newFileName", FileUtils.getName(fileName));
@@ -102,13 +104,13 @@ public class CommonController
/** /**
* 保存到案件附件表 * 保存到案件附件表
* @param id * @param
* @param annexType * @param annexType
* @param fileName * @param fileName
* @param originalFilename * @param originalFilename
*/ */
private void saveCaseAttach(Long id, Integer annexType, String fileName, String originalFilename) { private Long saveCaseAttach(Integer annexType, String fileName, String originalFilename) {
MsCaseAttach caseAttach = MsCaseAttach.builder().caseAppliId(id) MsCaseAttach caseAttach = MsCaseAttach.builder()
.annexName(originalFilename) .annexName(originalFilename)
.annexPath(fileName) .annexPath(fileName)
.annexType(annexType) .annexType(annexType)
@@ -116,6 +118,7 @@ public class CommonController
.useAccount(SecurityUtils.getUsername()) .useAccount(SecurityUtils.getUsername())
.build(); .build();
msCaseAttachMapper.save(caseAttach); msCaseAttachMapper.save(caseAttach);
return caseAttach.getAnnexId();
} }
/** /**
* 根据案件id获取附件 * 根据案件id获取附件
@@ -140,7 +143,7 @@ public class CommonController
* 通用上传请求(多个) * 通用上传请求(多个)
*/ */
@PostMapping("/uploads") @PostMapping("/uploads")
public AjaxResult uploadFiles(@RequestParam("files") MultipartFile[] files, @RequestParam("annexType")Integer annexType, @RequestParam("id")Long id ) throws Exception public AjaxResult uploadFiles(@RequestParam("files") MultipartFile[] files, @RequestParam("annexType")Integer annexType ) throws Exception
{ {
try try
{ {
@@ -150,6 +153,7 @@ public class CommonController
List<String> fileNames = new ArrayList<String>(); List<String> fileNames = new ArrayList<String>();
List<String> newFileNames = new ArrayList<String>(); List<String> newFileNames = new ArrayList<String>();
List<String> originalFilenames = new ArrayList<String>(); List<String> originalFilenames = new ArrayList<String>();
List<Long> annexIds = new ArrayList<>();
for (MultipartFile file : files) for (MultipartFile file : files)
{ {
// 上传并返回新文件名称 // 上传并返回新文件名称
@@ -159,9 +163,12 @@ public class CommonController
fileNames.add(fileName); fileNames.add(fileName);
newFileNames.add(FileUtils.getName(fileName)); newFileNames.add(FileUtils.getName(fileName));
originalFilenames.add(file.getOriginalFilename()); originalFilenames.add(file.getOriginalFilename());
saveCaseAttach(id, annexType, fileName,file.getOriginalFilename()); Long annexId = saveCaseAttach(annexType, fileName, file.getOriginalFilename());
annexIds.add(annexId);
} }
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
ajax.put("annexIds", annexIds);
ajax.put("annexType", annexType);
ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER)); ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER));
ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER)); ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER));
ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER));
@@ -7,8 +7,10 @@ import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationReq;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO;
import com.ruoyi.wisdomarbitrate.service.mscase.MsCaseApplicationService; import com.ruoyi.wisdomarbitrate.service.mscase.MsCaseApplicationService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException;
import java.util.List; import java.util.List;
/** /**
* 案件列表控制层 * 案件列表控制层
@@ -42,6 +44,41 @@ public class MsCaseApplicationController extends BaseController {
return success(caseApplicationService.insert(caseApplication)); return success(caseApplicationService.insert(caseApplication));
} }
/**
* 修改案件
*/
@PostMapping("/update")
public AjaxResult update(@RequestBody MsCaseApplicationVO caseApplication )
{
if(caseApplication.getId()==null){
error("id不能为空");
}
return caseApplicationService.update(caseApplication);
}
/**
* 根据id查询案件
*/
@GetMapping("/selectById")
public AjaxResult selectById(@RequestParam Long id )
{
if(id==null){
error("id不能为空");
}
return success(caseApplicationService.selectById(id));
}
/**
* 案件压缩包导入
* @param file
* @return
* @throws IOException
*/
@PostMapping("/uploadCaseZipFile")
public AjaxResult uploadCaseZipFile(@RequestParam("file") MultipartFile file, @RequestParam("templateId") Long templateId) throws IOException {
if(file.isEmpty()||templateId==null){
return error("参数不能为空");
}
return caseApplicationService.uploadCaseZipFile(file,templateId);
}
@@ -0,0 +1,23 @@
package com.ruoyi.common.utils;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.util.concurrent.*;
/**
* @Author: ymbgy
* @Date: 2022-09-23 10:06
*/
public class ThreadUtil {
public static ExecutorService createThreadPool() {
//获取系统处理器个数,作为线程池数量
int nThreads = Runtime.getRuntime().availableProcessors();
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
//Thread Pool
ExecutorService executor = new ThreadPoolExecutor(nThreads, 200,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
return executor;
}
}
@@ -1,11 +1,14 @@
package com.ruoyi.wisdomarbitrate.domain.entity.mscase; package com.ruoyi.wisdomarbitrate.domain.entity.mscase;
import java.util.Date;
import javax.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Getter @Getter
@Setter @Setter
@ToString @ToString
@@ -89,6 +92,11 @@ public class MsCaseAffiliate {
*/ */
@Column(name = "respondent_identity_num") @Column(name = "respondent_identity_num")
private String respondentIdentityNum; private String respondentIdentityNum;
/**
* 被申请人联系电话
*/
@Column(name = "respondent_phone")
private String respondentPhone;
/** /**
* 被申请人性别(0=男,女=1) * 被申请人性别(0=男,女=1)
@@ -1,5 +1,7 @@
package com.ruoyi.wisdomarbitrate.domain.entity.mscase; package com.ruoyi.wisdomarbitrate.domain.entity.mscase;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@@ -15,6 +17,7 @@ import java.util.Date;
@Setter @Setter
@ToString @ToString
@Table(name = "ms_case_application") @Table(name = "ms_case_application")
@Data
public class MsCaseApplication { public class MsCaseApplication {
/** /**
* id * id
@@ -145,6 +148,7 @@ public class MsCaseApplication {
/** /**
* 创建时间 * 创建时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@Column(name = "create_time") @Column(name = "create_time")
private Date createTime; private Date createTime;
@@ -157,6 +161,7 @@ public class MsCaseApplication {
/** /**
* 更新时间 * 更新时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@Column(name = "update_time") @Column(name = "update_time")
private Date updateTime; private Date updateTime;
@@ -1,11 +1,15 @@
package com.ruoyi.wisdomarbitrate.domain.entity.mscase; package com.ruoyi.wisdomarbitrate.domain.entity.mscase;
import java.util.Date;
import javax.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Getter @Getter
@Setter @Setter
@ToString @ToString
@@ -67,4 +71,6 @@ public class MsCaseLogRecord {
* 备注 * 备注
*/ */
private String notes; private String notes;
@Column(name = "case_status_name")
private String caseStatusName;
} }
@@ -22,9 +22,9 @@ public class MsCaseApplicationReq {
*/ */
private String applicationOrganId; private String applicationOrganId;
/** /**
* 案件状态 * 案件状态ID
*/ */
private String caseStatusName; private Long caseFlowId;
/** /**
* 开始时间 * 开始时间
*/ */
@@ -16,10 +16,27 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@Data @Data
public class MsCaseApplicationVO extends MsCaseApplication { public class MsCaseApplicationVO extends MsCaseApplication {
/**
* 案件日志id
*/
private Long caseAppliLogId;
/**
* 申请机构名称
*/
private String applicationOrganName;
/**
* 被申请人姓名
*/
private String respondentName;
/** /**
* 案件相关人员 * 案件相关人员
*/ */
private MsCaseAffiliate affiliate; private MsCaseAffiliate affiliate;
/**
* 是否压缩包导入,默认false
*/
private boolean importFlag=false;
/** /**
* 案件附件相关表 * 案件附件相关表
*/ */
@@ -28,5 +45,13 @@ public class MsCaseApplicationVO extends MsCaseApplication {
* 附件类型 * 附件类型
*/ */
private List<Integer> annexTypeList; private List<Integer> annexTypeList;
/**
* 附件类型
*/
private Integer annexType;
/**
* 自定义字段
*/
private List<MsColumnValueVO> columnValueList;
} }
@@ -31,21 +31,24 @@ public interface MsCaseApplicationMapper extends Mapper<MsCaseApplication> {
/** /**
* 案件列表查询 * 案件列表查询
* @param req * @param req
* @param caseStatusName * @param caseStatusNames
* @return * @return
*/ */
@Select("<script> select t.* from (select c.id,c.batch_number batchNumber,c.case_num caseNum,c.case_subject_amount caseSubjectAmount," + @Select("<script> select t.* from (select c.id,c.case_flow_id caseFlowId,c.batch_number batchNumber,c.case_num caseNum,c.case_subject_amount caseSubjectAmount," +
"a.application_organ_name applicationOrganName,a.respondent_name respondentName,c.mediator_name mediatorName," + "a.application_organ_name applicationOrganName,a.respondent_name respondentName,c.mediator_name mediatorName," +
"c.hear_date hearDate,c.case_status_name caseStatusName,c.create_time createTime from ms_case_application c " + "c.hear_date hearDate,c.case_status_name caseStatusName,c.create_time createTime from ms_case_application c " +
"join ms_case_affiliate a on c.id=a.case_appli_id <where> " + "join ms_case_affiliate a on c.id=a.case_appli_id <where> " +
"<if test='caseStatusName != null and caseStatusName.size() > 0 '> and c.case_status_name in" + "<if test='caseStatusNames != null and caseStatusNames.size() > 0 '> and c.case_status_name in" +
"<foreach item='caseStatus' index='index' collection='caseStatusName' open='(' separator=',' close=')'>" + "<foreach item='caseStatus' index='index' collection='caseStatusNames' open='(' separator=',' close=')'>" +
"#{caseStatus}" + "#{caseStatus}" +
"</foreach>" + "</foreach>" +
"</if> " + "</if> " +
"<if test=\"req.batchNumber != null and req.batchNumber != ''\">" + "<if test=\"req.batchNumber != null and req.batchNumber != ''\">" +
" AND c.batch_number = #{req.batchNumber} " + " AND c.batch_number = #{req.batchNumber} " +
"</if> " + "</if> " +
"<if test=\"req.caseFlowId != null \">" +
" AND c.case_flow_id = #{req.caseFlowId} " +
"</if> " +
"<if test=\"req.caseNum != null and req.caseNum != ''\">" + "<if test=\"req.caseNum != null and req.caseNum != ''\">" +
" AND c.case_num = #{req.caseNum} " + " AND c.case_num = #{req.caseNum} " +
"</if> " + "</if> " +
@@ -58,20 +61,23 @@ public interface MsCaseApplicationMapper extends Mapper<MsCaseApplication> {
"<if test=\"req.endTime != null and req.endTime != ''\">" + "<if test=\"req.endTime != null and req.endTime != ''\">" +
"and c.create_time &lt;= #{req.endTime}</if>" + "and c.create_time &lt;= #{req.endTime}</if>" +
" </where> " + " </where> " +
"union select c.id id,c.batch_number batchNumber,c.case_num caseNum,c.case_subject_amount caseSubjectAmount," + "union select c.id id,c.case_flow_id caseFlowId,c.batch_number batchNumber,c.case_num caseNum,c.case_subject_amount caseSubjectAmount," +
"a.application_organ_name applicationOrganName,a.respondent_name respondentName,c.mediator_name mediatorName," + "a.application_organ_name applicationOrganName,a.respondent_name respondentName,c.mediator_name mediatorName," +
"c.hear_date hearDate,c.case_status_name caseStatusName,c.create_time createTime from ms_case_log_record r " + "c.hear_date hearDate,c.case_status_name caseStatusName,c.create_time createTime from ms_case_log_record r " +
"join ms_case_application c on r.case_appli_id=c.id and r.case_status_name!=c.case_status_name " + "join ms_case_application c on r.case_appli_id=c.id and r.case_status_name!=c.case_status_name " +
"join ms_case_affiliate a on c.id=a.case_appli_id <where> r.create_by=#{req.userName} and c.id not in (" + "join ms_case_affiliate a on c.id=a.case_appli_id <where> r.create_by=#{req.userName} and c.id not in (" +
"select c1.id from ms_case_application c1 JOIN ms_case_affiliate a1 ON a1.case_appli_id = c1.id" + "select c1.id from ms_case_application c1 JOIN ms_case_affiliate a1 ON a1.case_appli_id = c1.id" +
"<if test='caseStatusName != null and caseStatusName.size() > 0 '> and c.case_status_name in" + "<if test='caseStatusNames != null and caseStatusNames.size() > 0 '> and c.case_status_name in" +
"<foreach item='caseStatus' index='index' collection='caseStatusName' open='(' separator=',' close=')'>" + "<foreach item='caseStatus' index='index' collection='caseStatusNames' open='(' separator=',' close=')'>" +
"#{caseStatus}" + "#{caseStatus}" +
"</foreach>" + "</foreach>" +
"</if> " + "</if> " +
"<if test=\"req.batchNumber != null and req.batchNumber != ''\">" + "<if test=\"req.batchNumber != null and req.batchNumber != ''\">" +
" AND c1.batch_number = #{req.batchNumber} " + " AND c1.batch_number = #{req.batchNumber} " +
"</if> " + "</if> " +
"<if test=\"req.caseFlowId != null \">" +
" AND c1.case_flow_id = #{req.caseFlowId} " +
"</if> " +
"<if test=\"req.caseNum != null and req.caseNum != ''\">" + "<if test=\"req.caseNum != null and req.caseNum != ''\">" +
" AND c1.case_num = #{req.caseNum} " + " AND c1.case_num = #{req.caseNum} " +
"</if> " + "</if> " +
@@ -84,14 +90,17 @@ public interface MsCaseApplicationMapper extends Mapper<MsCaseApplication> {
"and c1.create_time &lt;= #{req.endTime}</if>" + "and c1.create_time &lt;= #{req.endTime}</if>" +
" </where> " + " </where> " +
" ) " + " ) " +
"<if test='caseStatusName != null and caseStatusName.size() > 0 '> and c.case_status_name in" + "<if test='caseStatusNames != null and caseStatusNames.size() > 0 '> and c.case_status_name in" +
"<foreach item='caseStatus' index='index' collection='caseStatusName' open='(' separator=',' close=')'>" + "<foreach item='caseStatus' index='index' collection='caseStatusNames' open='(' separator=',' close=')'>" +
"#{caseStatus}" + "#{caseStatus}" +
"</foreach>" + "</foreach>" +
"</if> " + "</if> " +
"<if test=\"req.batchNumber != null and req.batchNumber != ''\">" + "<if test=\"req.batchNumber != null and req.batchNumber != ''\">" +
" AND c.batch_number = #{req.batchNumber} " + " AND c.batch_number = #{req.batchNumber} " +
"</if> " + "</if> " +
"<if test=\"req.caseFlowId != null \">" +
" AND c.case_flow_id = #{req.caseFlowId} " +
"</if> " +
"<if test=\"req.caseNum != null and req.caseNum != ''\">" + "<if test=\"req.caseNum != null and req.caseNum != ''\">" +
" AND c.case_num = #{req.caseNum} " + " AND c.case_num = #{req.caseNum} " +
"</if> " + "</if> " +
@@ -104,5 +113,5 @@ public interface MsCaseApplicationMapper extends Mapper<MsCaseApplication> {
"and c.create_time &lt;= #{req.endTime}</if>" + "and c.create_time &lt;= #{req.endTime}</if>" +
" ) t order by t.createTime desc,t.caseNum desc" + " ) t order by t.createTime desc,t.caseNum desc" +
" </script>") " </script>")
List<MsCaseApplicationVO> list(@Param("req")MsCaseApplicationReq req, @Param("caseStatusName") List<String> caseStatusName); List<MsCaseApplicationVO> list(@Param("req")MsCaseApplicationReq req, @Param("caseStatusNames") List<String> caseStatusNames);
} }
@@ -1,7 +1,10 @@
package com.ruoyi.wisdomarbitrate.service.mscase; package com.ruoyi.wisdomarbitrate.service.mscase;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAffiliate;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationReq; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationReq;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
@@ -20,5 +23,37 @@ public interface MsCaseApplicationService {
*/ */
List<MsCaseApplicationVO> list(MsCaseApplicationReq req); List<MsCaseApplicationVO> list(MsCaseApplicationReq req);
/**
* 根据id查询案件
* @param id
* @return
*/
MsCaseApplicationVO selectById(Long id);
/**
* 新增案件
* @param caseApplication
* @return
*/
int insert(MsCaseApplicationVO caseApplication); int insert(MsCaseApplicationVO caseApplication);
/**
* 新增申请机构代理人
* @param affiliate
*/
void insertAgentUser(MsCaseAffiliate affiliate);
/**
* 修改案件
* @param caseApplication
* @return
*/
AjaxResult update(MsCaseApplicationVO caseApplication);
/**
* 案件压缩包导入
* @param file 附件
* @param templateId 模板id
* @return
*/
AjaxResult uploadCaseZipFile(MultipartFile file, Long templateId);
} }
@@ -1,38 +1,46 @@
package com.ruoyi.wisdomarbitrate.service.mscase.impl; package com.ruoyi.wisdomarbitrate.service.mscase.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.IdWorkerUtil;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.entity.flow.MsCaseFlow; import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
import com.ruoyi.system.domain.entity.flow.MsCaseFlowRoleRelated; import com.ruoyi.system.domain.entity.flow.MsCaseFlowRoleRelated;
import com.ruoyi.system.mapper.SysDeptMapper; import com.ruoyi.system.mapper.*;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.mapper.flow.MsCaseFlowMapper; import com.ruoyi.system.mapper.flow.MsCaseFlowMapper;
import com.ruoyi.system.mapper.flow.MsCaseFlowRoleRelatedMapper; import com.ruoyi.system.mapper.flow.MsCaseFlowRoleRelatedMapper;
import com.ruoyi.wisdomarbitrate.domain.dto.template.FatchRule;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAffiliate; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAffiliate;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseApplication;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationReq; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationReq;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsColumnValueVO;
import com.ruoyi.wisdomarbitrate.mapper.mscase.*; import com.ruoyi.wisdomarbitrate.mapper.mscase.*;
import com.ruoyi.wisdomarbitrate.mapper.template.FatchRuleMapper;
import com.ruoyi.wisdomarbitrate.service.mscase.MsCaseApplicationService; import com.ruoyi.wisdomarbitrate.service.mscase.MsCaseApplicationService;
import com.ruoyi.wisdomarbitrate.utils.CaseLogUtils;
import com.ruoyi.wisdomarbitrate.utils.OCRUtils;
import com.ruoyi.wisdomarbitrate.utils.UnZipFileUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.io.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.math.RoundingMode;
import java.util.List; import java.text.SimpleDateFormat;
import java.util.Map; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.ruoyi.common.utils.SecurityUtils.getUsername; import static com.ruoyi.common.utils.SecurityUtils.getUsername;
@@ -59,6 +67,10 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
@Autowired @Autowired
MsCaseAttachLogMapper msCaseAttachLogMapper; MsCaseAttachLogMapper msCaseAttachLogMapper;
@Autowired @Autowired
MsColumnValueMapper columnValueMapper;
@Autowired
MsColumnValueLogMapper columnValueLogMapper;
@Autowired
MsCaseFlowMapper caseFlowMapper; MsCaseFlowMapper caseFlowMapper;
@Autowired @Autowired
MsCaseFlowRoleRelatedMapper caseFlowRoleRelatedMapper; MsCaseFlowRoleRelatedMapper caseFlowRoleRelatedMapper;
@@ -70,78 +82,109 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
SysUserMapper userMapper; SysUserMapper userMapper;
@Autowired @Autowired
SysUserRoleMapper userRoleMapper; SysUserRoleMapper userRoleMapper;
@Autowired
FatchRuleMapper fatchRuleMapper;
@Autowired
SysDictDataMapper dictDataMapper;
// 案件基本字段
public static final List<String> CASE_BASE_COLUMN = Arrays.asList("caseSubjectAmount", "arbitratClaims", "facts", "requestRule");
public static final SimpleDateFormat yyyymmddFormat = new SimpleDateFormat("yyyy-MM-dd");
/** /**
* 案件列表查询 * 案件列表查询
*
* @param req * @param req
* @return * @return
*/ */
@Override @Override
public List<MsCaseApplicationVO> list(MsCaseApplicationReq req) { public List<MsCaseApplicationVO> list(MsCaseApplicationReq req) {
// admin查询所有案件
if (StrUtil.equals(SecurityUtils.getUsername(), "admin")) {
return msCaseApplicationMapper.list(req, null);
}
// 根据用户查询角色 // 根据用户查询角色
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
List<SysRole> roles = loginUser.getUser().getRoles(); List<SysRole> roles = loginUser.getUser().getRoles();
if(CollectionUtil.isEmpty(roles)){ if (CollectionUtil.isEmpty(roles)) {
throw new ServiceException("该用户未指定角色"); throw new ServiceException("该用户未指定角色");
} }
req.setUserName(SecurityUtils.getUsername()); req.setUserName(SecurityUtils.getUsername());
// 根据角色查询关联的案件状态 // 根据角色查询关联的案件状态
Example example = new Example(MsCaseFlowRoleRelated.class); Example example = new Example(MsCaseFlowRoleRelated.class);
example.createCriteria().andIn("roleid",roles.stream().map(SysRole::getRoleId).collect(Collectors.toList())); example.createCriteria().andIn("roleid", roles.stream().map(SysRole::getRoleId).collect(Collectors.toList()));
List<MsCaseFlowRoleRelated> caseFlowRoleRelatedList= caseFlowRoleRelatedMapper.selectByExample(example); List<MsCaseFlowRoleRelated> caseFlowRoleRelatedList = caseFlowRoleRelatedMapper.selectByExample(example);
if(CollectionUtil.isEmpty(caseFlowRoleRelatedList)){ if (CollectionUtil.isEmpty(caseFlowRoleRelatedList)) {
throw new ServiceException("该角色为绑定案件流程"); throw new ServiceException("该角色为绑定案件流程");
} }
Example flowExample = new Example(MsCaseFlow.class); Example flowExample = new Example(MsCaseFlow.class);
flowExample.createCriteria().andIn("id",caseFlowRoleRelatedList.stream().map(MsCaseFlowRoleRelated::getFlowId).collect(Collectors.toList())); flowExample.createCriteria().andIn("id", caseFlowRoleRelatedList.stream().map(MsCaseFlowRoleRelated::getFlowId).collect(Collectors.toList()));
List<MsCaseFlow> caseFlows = caseFlowMapper.selectByExample(flowExample); List<MsCaseFlow> caseFlows = caseFlowMapper.selectByExample(flowExample);
if(CollectionUtil.isEmpty(caseFlows)){ if (CollectionUtil.isEmpty(caseFlows)) {
throw new ServiceException("该角色为绑定案件流程"); throw new ServiceException("该角色为绑定案件流程");
} }
// 查询案件列表 // 查询案件列表
List<MsCaseApplicationVO> caseApplicationList=msCaseApplicationMapper.list(req,caseFlows.stream().map(MsCaseFlow::getCaseStatusName).collect(Collectors.toList())); List<MsCaseApplicationVO> caseApplicationList = msCaseApplicationMapper.list(req, caseFlows.stream().map(MsCaseFlow::getCaseStatusName).collect(Collectors.toList()));
return caseApplicationList; return caseApplicationList;
} }
@Override
public MsCaseApplicationVO selectById(Long id) {
MsCaseApplicationVO vo = new MsCaseApplicationVO();
MsCaseApplication caseApplication = msCaseApplicationMapper.selectByPrimaryKey(id);
BeanUtil.copyProperties(caseApplication, vo);
// 查询案件相关人员
MsCaseAffiliate caseAffiliate = msCaseAffiliateMapper.selectByPrimaryKey(id);
vo.setAffiliate(caseAffiliate);
// 查询附件
List<MsCaseAttach> caseAttachList = msCaseAttachMapper.queryAnnexPathByCaseId(id);
vo.setCaseAttachList(caseAttachList);
// 自定义字段
List<MsColumnValueVO> columnValueVOS = columnValueMapper.listByCaseId(id);
vo.setColumnValueList(columnValueVOS);
return vo;
}
/** /**
* 新增案件 * 新增案件
*
* @param caseApplication * @param caseApplication
* @return * @return
*/ */
@Transactional @Transactional
@Override @Override
public int insert(MsCaseApplicationVO caseApplication) { public int insert(MsCaseApplicationVO caseApplication) {
if (caseApplication.getId() == null) {
caseApplication.setId(IdWorkerUtil.getId()); caseApplication.setId(IdWorkerUtil.getId());
}
// 根据用户查询角色 // 根据用户查询角色
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
List<SysRole> roles = loginUser.getUser().getRoles(); List<SysRole> roles = loginUser.getUser().getRoles();
if(CollectionUtil.isEmpty(roles)){ if (CollectionUtil.isEmpty(roles)) {
throw new ServiceException("该用户未指定角色"); throw new ServiceException("该用户未指定角色");
} }
// 根据角色查询关联的案件状态 // 根据角色查询关联的案件状态
Example example = new Example(MsCaseFlowRoleRelated.class); Example example = new Example(MsCaseFlowRoleRelated.class);
example.createCriteria().andIn("roleid",roles.stream().map(SysRole::getRoleId).collect(Collectors.toList())); example.createCriteria().andIn("roleid", roles.stream().map(SysRole::getRoleId).collect(Collectors.toList()));
List<MsCaseFlowRoleRelated> caseFlowRoleRelatedList= caseFlowRoleRelatedMapper.selectByExample(example); List<MsCaseFlowRoleRelated> caseFlowRoleRelatedList = caseFlowRoleRelatedMapper.selectByExample(example);
if(CollectionUtil.isEmpty(caseFlowRoleRelatedList)){ if (CollectionUtil.isEmpty(caseFlowRoleRelatedList)) {
throw new ServiceException("该角色为绑定案件流程"); throw new ServiceException("该角色为绑定案件流程");
} }
Example flowExample = new Example(MsCaseFlow.class); Example flowExample = new Example(MsCaseFlow.class);
flowExample.setOrderByClause("sort asc"); flowExample.setOrderByClause("sort asc");
flowExample.createCriteria().andIn("id",caseFlowRoleRelatedList.stream().map(MsCaseFlowRoleRelated::getFlowId).collect(Collectors.toList())); flowExample.createCriteria().andIn("id", caseFlowRoleRelatedList.stream().map(MsCaseFlowRoleRelated::getFlowId).collect(Collectors.toList()));
List<MsCaseFlow> caseFlows = caseFlowMapper.selectByExample(flowExample); List<MsCaseFlow> caseFlows = caseFlowMapper.selectByExample(flowExample);
if(CollectionUtil.isNotEmpty(caseFlows)){ MsCaseFlow caseFlow = caseFlows.get(0);
caseApplication.setCaseStatusName(caseFlows.get(0).getCaseStatusName()); if (CollectionUtil.isNotEmpty(caseFlows)) {
caseApplication.setCaseFlowId(caseFlows.get(0).getId()); caseApplication.setCaseStatusName(caseFlow.getCaseStatusName());
caseApplication.setCaseFlowId(caseFlow.getId());
} }
caseApplication.setCreateTime(new Date());
// 计算仲裁费用 // 计算仲裁费用
if( caseApplication.getCaseSubjectAmount()!=null) { setFeePayableMethod(caseApplication);
BigDecimal feeRate = new BigDecimal("0.01");
BigDecimal feePayable = caseApplication.getCaseSubjectAmount().multiply(feeRate).setScale(2, BigDecimal.ROUND_HALF_UP);
caseApplication.setFeePayable(feePayable);
}
// 设置批号 // 设置批号
if (StrUtil.isEmpty(caseApplication.getBatchNumber())) {
caseApplication.setBatchNumber(getBatchNumber()); caseApplication.setBatchNumber(getBatchNumber());
}
// 设置编码 // 设置编码
caseApplication.setCaseNum(getCaseNum()); caseApplication.setCaseNum(getCaseNum());
caseApplication.setCreateBy(SecurityUtils.getUsername()); caseApplication.setCreateBy(SecurityUtils.getUsername());
@@ -149,20 +192,438 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
caseApplication.setVersion(1); caseApplication.setVersion(1);
MsCaseAffiliate affiliate = caseApplication.getAffiliate(); MsCaseAffiliate affiliate = caseApplication.getAffiliate();
// 保存案件基本信息 // 保存案件基本信息
if(msCaseApplicationMapper.insertSelective(caseApplication)>0){ if (msCaseApplicationMapper.insertSelective(caseApplication) > 0) {
List<MsCaseAttach> caseAttachList = caseApplication.getCaseAttachList(); List<MsCaseAttach> caseAttachList = caseApplication.getCaseAttachList();
// 保存案件相关人员 // 保存案件相关人员
if(affiliate !=null) { if (affiliate != null) {
// 设置申请人 // 设置申请人
if( StrUtil.isNotEmpty(affiliate.getApplicationOrganName())){ if (StrUtil.isNotEmpty(affiliate.getApplicationOrganName())) {
// 组装申请机构 // 组装申请机构
insertDept(affiliate); insertDept(affiliate);
// 新增申请机构代理人
insertAgentUser(affiliate);
}
// 压缩包导入,则根据身份证号获取性别和出生日期
String identityNum = affiliate.getRespondentIdentityNum();
if (caseApplication.isImportFlag() && StrUtil.isNotEmpty(identityNum)) {
identityNum = identityNum.replace("\n", "");
Map<String, String> identityNumMap = IdCardUtils.getBirAgeSex(identityNum);
String birthday = identityNumMap.get("birthday");
if (StrUtil.isNotEmpty(birthday)) {
Date birthdayDate = null;
try {
birthdayDate = yyyymmddFormat.parse(birthday);
} catch (Exception e) {
e.printStackTrace();
}
affiliate.setRespondentBirth(birthdayDate);
}
//从身份证抓取性别
affiliate.setRespondentSex(identityNumMap.get("sexCode"));
}
if (StrUtil.isNotEmpty(affiliate.getAgentEmail())) {
affiliate.setAgentEmail(affiliate.getAgentEmail().replace("\n", "").replaceAll("\\s", ""));
}
if (StrUtil.isNotEmpty(affiliate.getRespondentEmail())) {
affiliate.setRespondentEmail(affiliate.getRespondentEmail().replace("\n", "").replaceAll("\\s", ""));
}
affiliate.setCaseAppliId(caseApplication.getId());
msCaseAffiliateMapper.insert(affiliate);
}
// 保存案件附件
if (CollectionUtil.isNotEmpty(caseAttachList) && !caseApplication.isImportFlag()) {
for (MsCaseAttach caseAttach : caseAttachList) {
caseAttach.setCaseAppliId(caseApplication.getId());
// 修改案件附件
msCaseAttachMapper.updateCaseAttach(caseAttach);
}
}
List<MsColumnValueVO> columnValueList = caseApplication.getColumnValueList();
if (CollectionUtil.isNotEmpty(columnValueList)) {
for (MsColumnValueVO msColumnValueVO : columnValueList) {
msColumnValueVO.setCaseId(caseApplication.getId());
}
columnValueMapper.batchSave(columnValueList);
}
CaseLogUtils.insertCaseLog(caseApplication.getId(), caseFlow.getNodeId(), caseFlow.getCaseStatusName(), "");
return 1;
}
return 0;
}
/**
* 计算仲裁费用
*
* @param caseApplication
*/
private void setFeePayableMethod(MsCaseApplicationVO caseApplication) {
if (caseApplication.getCaseSubjectAmount() != null) {
BigDecimal feeRate = new BigDecimal("0.01");
BigDecimal feePayable = caseApplication.getCaseSubjectAmount().multiply(feeRate).setScale(2, RoundingMode.HALF_UP);
caseApplication.setFeePayable(feePayable);
}
}
/**
* 修改案件
*
* @param caseApplication
* @return
*/
@Transactional
@Override
public AjaxResult update(MsCaseApplicationVO caseApplication) {
// 计算仲裁费用
setFeePayableMethod(caseApplication);
caseApplication.setUpdateBy(SecurityUtils.getUsername());
caseApplication.setUpdateTime(new Date());
// 为null则不更新
msCaseApplicationMapper.updateByPrimaryKeySelective(caseApplication);
MsCaseAffiliate affiliate = caseApplication.getAffiliate();
if (affiliate != null) {
affiliate.setCaseAppliId(caseApplication.getId());
// 设置申请人
if (StrUtil.isNotEmpty(affiliate.getApplicationOrganName())) {
// 组装申请机构
insertDept(affiliate);
// 新增申请机构代理人
insertAgentUser(affiliate);
}
msCaseAffiliateMapper.updateByPrimaryKeySelective(affiliate);
}
if (CollectionUtil.isNotEmpty(caseApplication.getCaseAttachList())) {
for (MsCaseAttach caseAttach : caseApplication.getCaseAttachList()) {
caseAttach.setCaseAppliId(caseApplication.getId());
msCaseAttachMapper.updateCaseAttach(caseAttach);
}
}
if (CollectionUtil.isNotEmpty(caseApplication.getColumnValueList())) {
columnValueMapper.batchUpdate(caseApplication.getColumnValueList());
}
return AjaxResult.success("修改成功");
}
/**
* 压缩包导入
*
* @param file 附件
* @param templateId 模板id
* @return
*/
@Transactional
@Override
public AjaxResult uploadCaseZipFile(MultipartFile file, Long templateId) {
UUID uuid = UUID.randomUUID();
// todo 压缩包解压路径
String targetPath = "/home/ruoyi/uploadPath/upload/unzipFile/" + uuid + "/";
// String targetPath = "D:/home/ruoyi/uploadPath/upload/unzipFile/"+uuid+ "/";
File zipFile = null;
InputStream ins = null;
try {
ins = file.getInputStream();
//上传的压缩包保存的路径
// todo
String savePath = "/home/ruoyi/uploadPath/upload/zipFile/";
// String savePath = "D:/home/ruoyi/uploadPath/upload/zipFile/";
String saveName = uuid + "_" + file.getOriginalFilename();
zipFile = new File(savePath + saveName);
inputChangeToFile(ins, zipFile);
} catch (IOException e) {
e.printStackTrace();
}
if (zipFile == null) {
return AjaxResult.error("压缩包上传失败");
}
//解压缩上传的压缩包
boolean unzipSuccess = UnZipFileUtils.unZipFile(zipFile, targetPath);
if (!unzipSuccess) {
// 解压失败
return AjaxResult.error("解压失败");
}
// 查询抓取规则
List<FatchRule> fatchRuleList = fatchRuleMapper.listByTemplateId(templateId);
if (CollectionUtil.isEmpty(fatchRuleList)) {
return AjaxResult.error("未设置抓取规则");
}
Map<Integer, List<FatchRule>> defaultRuleMap = fatchRuleList.stream().collect(Collectors.groupingBy(FatchRule::getIsDefault));
// 判断解压后的文件夹是否存在
File directory = new File(targetPath);
if (!directory.exists()) {
return AjaxResult.error("文件不存在");
}
if (!directory.isDirectory() || directory.listFiles() == null) {
return AjaxResult.error("未找到文件夹");
}
File[] files = directory.listFiles();
if (files == null) {
return AjaxResult.error("压缩包格式不正确");
}
// 抓取规则,0-内置字段,1-自定义字段
Map<String, List<FatchRule>> fatchRuleMap = fatchRuleList.stream().collect(Collectors.groupingBy(FatchRule::getFileName));
// 在系统表中查询案件内置字段
SysDictData sysDictData = new SysDictData();
sysDictData.setDictType("case_built_type");
List<SysDictData> dictDataList = dictDataMapper.selectDictDataList(sysDictData);
if (CollectionUtil.isEmpty(dictDataList)) {
return AjaxResult.error("未找到案件内置字段");
}
//查询批次号
String batchNumber = getBatchNumber();
// 抓取内容
Map<String, String> fatchMap = new HashMap<>();
for (File outFile : files) {
if (!outFile.isDirectory() || outFile.listFiles() == null) {
continue;
}
// 一个infile对应一个案件
for (File inFile : outFile.listFiles()) {
// 所有的文件,fileMap<fileName,filePath>
Map<String, String> fileMap = findFile(inFile);
if (fileMap != null && !fileMap.isEmpty()) {
// 根据抓取规则设置字段值
for (Map.Entry<String, List<FatchRule>> entry : fatchRuleMap.entrySet()) {
getFatchContent(fileMap, entry.getKey(), fatchMap, entry.getValue());
}
if (fatchMap.size() > 0) {
// 组装案件信息
MsCaseApplicationVO caseApplicationVO = new MsCaseApplicationVO();
MsCaseApplication caseApplication = new MsCaseApplication();
MsCaseAffiliate affiliate = new MsCaseAffiliate();
List<MsCaseAttach> attachList = new ArrayList<>();
List<MsColumnValueVO> columnValueList = new ArrayList<>();
caseApplication.setId(IdWorkerUtil.getId());
caseApplication.setTemplateId(templateId);
caseApplication.setBatchNumber(batchNumber);
// 组装案件内置字段
for (SysDictData dictData : dictDataList) {
// 主表字段
if (CASE_BASE_COLUMN.contains(dictData.getDictValue())) {
ObjectFieldUtils.setValue(caseApplication, dictData.getDictValue(), fatchMap.get(dictData.getDictLabel()));
} else {
// 相关人员字段
ObjectFieldUtils.setValue(affiliate, dictData.getDictValue(), fatchMap.get(dictData.getDictLabel()));
}
}
// 自定义字段,组装columnValue表
if (defaultRuleMap.size() > 0 && defaultRuleMap.containsKey(1)) {
List<FatchRule> columnRules = defaultRuleMap.get(1);
columnRules.forEach(columnRule -> {
MsColumnValueVO columnValue = new MsColumnValueVO();
columnValue.setColumn(columnRule.getColumn());
columnValue.setName(columnRule.getColumnName());
columnValue.setValue(fatchMap.get(columnRule.getColumnName()));
columnValue.setIsDefault(1);
columnValue.setCaseId(caseApplication.getId());
columnValueList.add(columnValue);
});
}
BeanUtil.copyProperties(caseApplication, caseApplicationVO);
// 组装附件
buildAttach(fileMap, caseApplicationVO, attachList);
caseApplicationVO.setAffiliate(affiliate);
caseApplicationVO.setCaseAttachList(attachList);
caseApplicationVO.setColumnValueList(columnValueList);
caseApplicationVO.setImportFlag(true);
insert(caseApplicationVO);
}
}
}
}
return AjaxResult.success();
}
/**
* 组装附件
*
* @param fileMap
* @param caseApplication
* @param attachList
*/
private void buildAttach(Map<String, String> fileMap, MsCaseApplicationVO caseApplication, List<MsCaseAttach> attachList) {
for (Map.Entry<String, String> entry : fileMap.entrySet()) {
String fileUrl = entry.getValue();
if (StrUtil.isEmpty(fileUrl)) {
continue;
}
// 上传
// String filePath = RuoYiConfig.getUploadPath();
MsCaseAttach caseAttach = new MsCaseAttach();
caseAttach.setCaseAppliId(caseApplication.getId());
caseAttach.setAnnexPath(entry.getValue());
caseAttach.setAnnexName(entry.getKey());
// todo
// if (StrUtil.isNotEmpty(fileUrl)) {
// String fileName = fileUrl.replace(filePath, "/profile/upload");
// caseAttach.setAnnexName(entry.getKey());
// }
// 申请人提供的证据材料
caseAttach.setAnnexType(2);
attachList.add(caseAttach);
if (fileUrl.contains("仲裁申请书")) {
MsCaseAttach applyFile = new MsCaseAttach();
BeanUtil.copyProperties(caseAttach, applyFile);
applyFile.setAnnexType(1);
attachList.add(applyFile);
}
}
}
/**
* 获取抓取内容
*
* @param andConvertPDF 文件路径map
* @param mapKey 文件名
* @param map 抓取内容map
* @param fatchRules 抓取规则
*/
private void getFatchContent(Map<String, String> andConvertPDF, String mapKey, Map<String, String> map, List<FatchRule> fatchRules) {
String fileURL = null;
for (Map.Entry<String, String> entry : andConvertPDF.entrySet()) {
if (entry.getKey().contains(mapKey)) {
fileURL = entry.getValue();
}
}
if (StrUtil.isEmpty(fileURL)) {
return;
}
if (fileURL.endsWith("txt")) {
String readerFile = ReadFileUtils.readerTxtFile(fileURL);
OCRUtils.fatchRuleGetContent(readerFile, fatchRules, map);
} else if (fileURL.endsWith("doc") || fileURL.endsWith("docx")) {
// doc,docx,text识别内容
String readerFile = null;
try {
readerFile = ReadFileUtils.readWord(fileURL);
} catch (Exception e) {
e.printStackTrace();
}
OCRUtils.fatchRuleGetContent(readerFile, fatchRules, map);
} else if (fileURL.endsWith("pdf")) {
//获取文件的页数
int fileNumPage = getFileNumPage(fileURL);
//文件转成base64
String base64 = OCRUtils.pdfConvertBase64(fileURL);
if (base64 == null) {
throw new ServiceException("pdf转base64失败");
// return false;
}
StringBuilder ocrText = new StringBuilder(); // 创建一个StringBuilder对象
for (int i = 1; i <= fileNumPage; i++) {
//对接腾讯云接口.识别里面的数据
String text = OCRUtils.pdfIdentifyText(base64, i, fatchRules);
ocrText.append(text); // 拼接当前的字符串
}
// 根据抓取规则截取内容
OCRUtils.fatchRuleGetContent(ocrText.toString(), fatchRules, map);
}
}
/**
* 获取pdf页数
*
* @param pdfUrl
* @return
*/
private static int getFileNumPage(String pdfUrl) {
File pdfFile = new File(pdfUrl);
int pageCount = 0;
try (PDDocument document = PDDocument.load(pdfFile)) {
pageCount = document.getNumberOfPages();
} catch (IOException e) {
e.printStackTrace();
}
return pageCount;
}
/**
* 查找文件
*
* @param directory
* @param
* @return
*/
private Map<String, String> findFile(File directory) {
Map<String, String> filePathMap = new HashMap<>();
if (directory.isFile()) {
String path = "";
// 如果传入的参数是一个文件
path = directory.getAbsolutePath();
filePathMap.put(directory.getName(), path);
} else if (directory.isDirectory()) {
searchFile(directory, filePathMap);
} else {
return null;
}
return filePathMap;
}
/**
* 递归查找文件夹
*
* @param directory
* @param filePathMap
*/
public static void searchFile(File directory, Map<String, String> filePathMap) {
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.getName().contains("zip") || file.getName().contains("rar")) {
continue;
}
if (file.isFile()) {
filePathMap.put(file.getName(), file.getAbsolutePath());
} else if (file.isDirectory()) {
// 如果是目录,递归查找
searchFile(file, filePathMap);
}
}
}
}
public void inputChangeToFile(InputStream instream, File file) {
try {
OutputStream outStr = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = instream.read(buffer, 0, 1024)) != -1) {
outStr.write(buffer, 0, bytesRead);
}
outStr.flush();
outStr.close();
instream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 新增申请机构代理人
*
* @param affiliate
*/
@Transactional
public void insertAgentUser(MsCaseAffiliate affiliate) {
// 查询申请人角色id // 查询申请人角色id
Long roleId = roleMapper.selectRoleIdByName("申请人"); Long roleId = roleMapper.selectRoleIdByName("申请人");
// 根据代理人手机号去用户表查询,有修改,么有新增 // 根据代理人手机号去用户表查询,有修改,么有新增
SysUser agentUser = userMapper.selectUserByPhone(affiliate.getContactTelphoneAgent()); SysUser agentUser = userMapper.selectUserByPhone(affiliate.getContactTelphoneAgent());
// 代理人为空,新增代理人 // 代理人为空,新增代理人
if(agentUser==null){ if (agentUser == null) {
agentUser = new SysUser(); agentUser = new SysUser();
agentUser.setUserName(affiliate.getContactTelphoneAgent()); agentUser.setUserName(affiliate.getContactTelphoneAgent());
agentUser.setNickName(affiliate.getNameAgent()); agentUser.setNickName(affiliate.getNameAgent());
@@ -171,17 +632,17 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
agentUser.setDeptId(Long.valueOf(affiliate.getApplicationOrganId())); agentUser.setDeptId(Long.valueOf(affiliate.getApplicationOrganId()));
userMapper.insertUser(agentUser); userMapper.insertUser(agentUser);
userRoleMapper.insertUserRole(agentUser.getUserId(), roleId); userRoleMapper.insertUserRole(agentUser.getUserId(), roleId);
}else if(null != agentUser.getDeptId() && !String.valueOf(agentUser.getDeptId()).equals(affiliate.getApplicationOrganId())){ } else if (null != agentUser.getDeptId() && !String.valueOf(agentUser.getDeptId()).equals(affiliate.getApplicationOrganId())) {
if (null != agentUser.getDept() && StrUtil.isNotEmpty(agentUser.getDept().getDeptName())) { if (null != agentUser.getDept() && StrUtil.isNotEmpty(agentUser.getDept().getDeptName())) {
throw new ServiceException( "该申请代理人已在【" + agentUser.getDept().getDeptName() + "】申请机构下存在,请检查填写信息是否正确"); throw new ServiceException("该申请代理人已在【" + agentUser.getDept().getDeptName() + "】申请机构下存在,请检查填写信息是否正确");
} else { } else {
throw new ServiceException("该申请代理人已存在,与申请机构不匹配,请检查填写信息是否正确"); throw new ServiceException("该申请代理人已存在,与申请机构不匹配,请检查填写信息是否正确");
} }
}else if (null != agentUser.getDeptId() && String.valueOf(agentUser.getDeptId()).equals(affiliate.getApplicationOrganId())) { } else if (null != agentUser.getDeptId() && String.valueOf(agentUser.getDeptId()).equals(affiliate.getApplicationOrganId())) {
// 同步用户表和案件关联人表的手机号和名称 // 同步用户表和案件关联人表的手机号和名称
affiliate.setContactTelphoneAgent(StrUtil.isNotEmpty(agentUser.getPhonenumber())?agentUser.getPhonenumber():affiliate.getContactTelphoneAgent()); affiliate.setContactTelphoneAgent(StrUtil.isNotEmpty(agentUser.getPhonenumber()) ? agentUser.getPhonenumber() : affiliate.getContactTelphoneAgent());
affiliate.setNameAgent(agentUser.getNickName()); affiliate.setNameAgent(agentUser.getNickName());
affiliate.setAgentEmail(StrUtil.isNotEmpty(agentUser.getEmail())?agentUser.getEmail():affiliate.getAgentEmail()); affiliate.setAgentEmail(StrUtil.isNotEmpty(agentUser.getEmail()) ? agentUser.getEmail() : affiliate.getAgentEmail());
List<Long> longList = new ArrayList<>(); List<Long> longList = new ArrayList<>();
// 新增角色为申请人 // 新增角色为申请人
if (CollectionUtil.isNotEmpty(agentUser.getRoles())) { if (CollectionUtil.isNotEmpty(agentUser.getRoles())) {
@@ -195,30 +656,10 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
} }
} }
affiliate.setCaseAppliId(caseApplication.getId());
msCaseAffiliateMapper.insert(affiliate);
}
// 保存案件附件
if(CollectionUtil.isNotEmpty(caseAttachList)){
for (MsCaseAttach caseAttach : caseAttachList) {
caseAttach.setCaseAppliId(caseApplication.getId());
// 修改案件附件
msCaseAttachMapper.updateCaseAttach(caseAttach);
}
// for(MsCaseAttach caseAttach:caseAttachList){
// caseAttach.setCaseAppliId(caseApplication.getId());
//
// }
// msCaseAttachMapper.batchSave(caseAttachList);
}
return 1;
}
return 0;
}
/** /**
* 新增部门 * 新增部门
*
* @param affiliate * @param affiliate
*/ */
@Transactional @Transactional
@@ -252,6 +693,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
/** /**
* 获取案件编码 * 获取案件编码
*
* @return * @return
*/ */
private String getCaseNum() { private String getCaseNum() {
@@ -265,7 +707,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
if (null == maxCaseNum) { if (null == maxCaseNum) {
caseNum = caseNum + "00001"; caseNum = caseNum + "00001";
} else { } else {
maxCaseNum=maxCaseNum+1; maxCaseNum = maxCaseNum + 1;
caseNum = caseNum + String.format("%05d", maxCaseNum); caseNum = caseNum + String.format("%05d", maxCaseNum);
} }
return caseNum; return caseNum;
@@ -273,14 +715,15 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
/** /**
* 获取批次号 * 获取批次号
*
* @return * @return
*/ */
private String getBatchNumber() { private String getBatchNumber() {
Integer batchNumber = msCaseApplicationMapper.selectMaxBatchNumber(); Integer batchNumber = msCaseApplicationMapper.selectMaxBatchNumber();
if(batchNumber==null){ if (batchNumber == null) {
return "000001"; return "000001";
}else { } else {
return String.format("%06d", batchNumber+1); return String.format("%06d", batchNumber + 1);
} }
} }
@@ -27,7 +27,7 @@ public class CaseLogUtils
* @param caseNode 案件节点,不能为空 * @param caseNode 案件节点,不能为空
* @param notes 备注 * @param notes 备注
*/ */
public static void insertCaseLog(@NotNull Long caseAppliId, @NotEmpty Integer caseNode, String notes ){ public static void insertCaseLog(@NotNull Long caseAppliId, @NotEmpty Integer caseNode,String caseStatusName, String notes ){
MsCaseLogRecord operLog = new MsCaseLogRecord(); MsCaseLogRecord operLog = new MsCaseLogRecord();
// 获取当前的用户 // 获取当前的用户
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
@@ -41,30 +41,7 @@ public class CaseLogUtils
operLog.setCreateNickName("管理员"); operLog.setCreateNickName("管理员");
operLog.setUpdateBy("admin"); operLog.setUpdateBy("admin");
} }
operLog.setCaseAppliId(caseAppliId); operLog.setCaseStatusName(caseStatusName);
operLog.setCaseNode(caseNode);
operLog.setNotes(notes);
caseLogRecordMapper.insert(operLog);
}
/**
* 新增案件日志
* @param caseAppliId 案件id,不能为空
* @param caseNode 案件节点,不能为空
* @param notes 备注
*/
public static void insertCaseLog(@NotNull Long caseAppliId, @NotEmpty Integer caseNode, String notes ,LoginUser loginUser ){
MsCaseLogRecord operLog = new MsCaseLogRecord();
// 获取当前的用户
if(loginUser!=null) {
SysUser sysUser = userMapper.selectUserById(loginUser.getUserId());
operLog.setCreateBy(sysUser.getUserName());
operLog.setCreateNickName(sysUser.getNickName());
operLog.setUpdateBy(sysUser.getUserName());
}else {
operLog.setCreateBy("admin");
operLog.setCreateNickName("管理员");
operLog.setUpdateBy("admin");
}
operLog.setCaseAppliId(caseAppliId); operLog.setCaseAppliId(caseAppliId);
operLog.setCaseNode(caseNode); operLog.setCaseNode(caseNode);
operLog.setNotes(notes); operLog.setNotes(notes);
@@ -274,20 +274,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateUser" parameterType="com.ruoyi.common.core.domain.entity.SysUser"> <update id="updateUser" parameterType="com.ruoyi.common.core.domain.entity.SysUser">
update ms_sys_user update ms_sys_user
<set> <set>
<if test="deptId != null and deptId != 0">dept_id = #{deptId},</if> dept_id = #{deptId},
<if test="userName != null and userName != ''">user_name = #{userName},</if> <if test="userName != null and userName != ''">user_name = #{userName},</if>
<if test="nickName != null and nickName != ''">nick_name = #{nickName},</if> <if test="nickName != null and nickName != ''">nick_name = #{nickName},</if>
<if test="idCard != null and idCard != ''">id_card = #{idCard},</if> id_card = #{idCard},
<if test="email != null ">email = #{email},</if> email = #{email},
<if test="phonenumber != null ">phonenumber = #{phonenumber},</if> phonenumber = #{phonenumber},
<if test="sex != null and sex != ''">sex = #{sex},</if> sex = #{sex},
<if test="avatar != null and avatar != ''">avatar = #{avatar},</if> <if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
<if test="password != null and password != ''">password = #{password},</if> <if test="password != null and password != ''">password = #{password},</if>
<if test="status != null and status != ''">status = #{status},</if> <if test="status != null and status != ''">status = #{status},</if>
<if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if> <if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if>
<if test="loginDate != null">login_date = #{loginDate},</if> <if test="loginDate != null">login_date = #{loginDate},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="remark != null">remark = #{remark},</if> remark = #{remark},
specialty = #{specialty}, specialty = #{specialty},
update_time = sysdate() update_time = sysdate()
</set> </set>