123 Commits
Author SHA1 Message Date
qitz c54981e584 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-03-20 09:14:42 +08:00
qitz cf42c93c6d 印章审核回调 2024-03-20 09:14:17 +08:00
wangqiong123andGitea bf343b7e5a Merge branch 'prod' of SH-Arbitrate/Mediation-Backend into dev 2024-03-19 18:18:06 +08:00
wangqiong123andGitea de0d26882e Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-19 18:17:40 +08:00
18792927508 7977c89ab4 bug修复 2024-03-19 18:17:04 +08:00
wangqiong123andGitea 35f0663fb3 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-18 14:13:33 +08:00
18792927508 1256a9dd50 身份类别字典 2024-03-18 14:12:45 +08:00
qtzandGitea 249b11ee61 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-18 10:02:10 +08:00
qitz a64aa29a4e Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-03-18 09:58:23 +08:00
qitz 4502b8128f 优化查询日志 2024-03-18 09:58:01 +08:00
wangqiong123andGitea 9f52637abd Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-15 17:47:29 +08:00
18792927508 8a7cf059fd 在线修改 2024-03-15 17:46:50 +08:00
wangqiong123andGitea 21e86a4c47 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-15 17:38:23 +08:00
18792927508 a9bf9379ba 调节申请书修改 2024-03-15 17:37:56 +08:00
qtzandGitea 983edd6dd9 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-15 10:12:33 +08:00
qitz fb36d28f56 优化签署日志 2024-03-15 10:08:29 +08:00
wangqiong123andGitea 3e00799963 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-15 09:19:08 +08:00
18792927508 dd776e6fab 保存附件 2024-03-15 09:18:18 +08:00
wangqiong123andGitea 4875ac4b70 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-14 17:17:11 +08:00
18792927508 1cece4a0d1 在线修改 2024-03-14 17:16:38 +08:00
qtzandGitea b22b49763c Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-14 16:16:42 +08:00
qitz 3c1eb3ba55 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-03-14 16:13:38 +08:00
qitz abeca57c83 优化签署回调 2024-03-14 16:13:22 +08:00
qtzandGitea 0fc6595fb3 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-14 10:51:13 +08:00
qitz d7d48a3ff3 优化回调 2024-03-14 10:46:47 +08:00
wangqiong123andGitea b4e54bd501 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-13 14:52:55 +08:00
18792927508 92c619f123 onlyoffice 2024-03-13 14:52:04 +08:00
qtzandGitea 6ce906e04c Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-13 14:45:43 +08:00
qitz 2b5765d935 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-03-13 14:42:20 +08:00
qitz 619734469d 实现签署回调功能 2024-03-13 14:41:46 +08:00
wangqiong123andGitea 9f94b61bfb Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-12 14:57:37 +08:00
18792927508 13422f5c2d 新增,单点登录 2024-03-12 14:56:51 +08:00
18792927508 6f8879c5d1 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into wq1 2024-03-12 14:55:00 +08:00
qtzandGitea 609e0470fb Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-11 10:07:22 +08:00
qitz 40666adb10 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-03-11 10:04:09 +08:00
qitz df108c15eb 优化签名用印功能 2024-03-11 10:03:52 +08:00
qtzandGitea 658ce02b8f Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-08 11:09:10 +08:00
qitz 8e235b6135 优化调解功能 2024-03-08 11:05:35 +08:00
18792927508 4b615599b4 1 2024-03-06 18:25:05 +08:00
18792927508 c042d9e611 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into prod 2024-03-06 18:24:18 +08:00
18792927508 6be935061c Merge branch 'prod' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into wq1 2024-03-06 18:18:38 +08:00
wangqiong123andGitea 327aa07c21 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-06 18:15:00 +08:00
18792927508 bf0a834577 正式环境端口修改 2024-03-06 18:14:39 +08:00
wangqiong123andGitea 2afcbb6f73 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-06 17:06:17 +08:00
18792927508 2696ac1156 bug 2024-03-06 17:05:22 +08:00
qtzandGitea 80fd24e1c3 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-06 16:32:21 +08:00
qitz ac0278a1c5 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-03-06 16:28:49 +08:00
qitz c927559270 优化调解功能 2024-03-06 16:28:27 +08:00
qtzandGitea 9c36ade13f Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-03-06 11:29:18 +08:00
qitz 07a1bad4a1 优化案件受理功能 2024-03-06 11:26:00 +08:00
qtzandGitea dc95793394 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-29 17:59:59 +08:00
qitz 134c5b880a Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-29 17:56:51 +08:00
qitz b3398e9828 优化查询流程 2024-02-29 17:56:31 +08:00
qtzandGitea 988e763abd Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-29 15:30:20 +08:00
qitz e02dc53776 优化调解的短信记录 2024-02-29 15:26:24 +08:00
wangqiong123andGitea dc0826ddad Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-28 09:57:24 +08:00
wangqiong123andGitea c97c5965f9 Merge branch 'dev' of SH-Arbitrate/Mediation-Backend into prod 2024-02-28 09:53:30 +08:00
18792927508 1a3848e339 测试系统数据库 2024-02-28 09:51:33 +08:00
wangqiong123andGitea beb7989c5e Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-28 09:43:10 +08:00
18792927508 49c99ecb5e 视频会议 2024-02-28 09:39:43 +08:00
wangqiong123andGitea f87943e9f5 Merge branch 'dev' of SH-Arbitrate/Mediation-Backend into prod 2024-02-27 18:04:47 +08:00
wangqiong123andGitea 0579a94658 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-27 18:04:26 +08:00
18792927508 4a2155f7eb bug修复 2024-02-27 18:00:46 +08:00
wangqiong123andGitea badbdf8c13 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-27 15:28:57 +08:00
18792927508 694a7667f4 bug修复 2024-02-27 15:25:03 +08:00
qtzandGitea 1ddfff3e51 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-27 15:08:29 +08:00
qitz 02575e8bfc Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-27 15:04:47 +08:00
qitz ba28986510 优化流程查询功能 2024-02-27 15:04:28 +08:00
qtzandGitea e2bf519221 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-26 14:34:42 +08:00
qitz ef5f37d83a Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-26 14:31:49 +08:00
qitz dc990ef8bb 修改查看流程功能 2024-02-26 14:31:26 +08:00
wangqiong123andGitea ce307a7912 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-26 14:01:32 +08:00
18792927508 86b8305dc2 bug修复 2024-02-26 13:58:05 +08:00
qtzandGitea da4a49956c Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-26 11:00:38 +08:00
qitz 7ad9bdd869 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-26 10:57:43 +08:00
qitz 766f9e9fb7 优化用印申请功能 2024-02-26 10:57:31 +08:00
qtzandGitea d8cb453153 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-26 10:27:18 +08:00
qitz 9fe2684b33 修改签收功能 2024-02-26 10:24:00 +08:00
qtzandGitea 5ad63c8905 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-23 15:19:18 +08:00
qitz ea727fc760 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-23 15:16:19 +08:00
qitz 657e748cb3 优化日志查询 2024-02-23 15:15:51 +08:00
wangqiong123andGitea d69913799c Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-23 14:28:38 +08:00
18792927508 e00d61949b bug 2024-02-23 14:25:37 +08:00
qtzandGitea ba20a9d807 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-23 11:30:55 +08:00
qitz 48aa6625f4 优化查询流程 2024-02-23 11:26:42 +08:00
wangqiong123andGitea 1c90f35d47 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-22 10:21:33 +08:00
18792927508 dc26290e28 bug修复 2024-02-22 10:18:22 +08:00
qtzandGitea 8d61792ec6 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-22 09:44:17 +08:00
qitz 66131d6b1a 优化修改案件功能 2024-02-22 09:40:49 +08:00
wangqiong123andGitea 4a7194c9ea Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-21 16:19:49 +08:00
18792927508 0d246d5917 BUG修复 2024-02-21 16:16:22 +08:00
qtzandGitea 657df6d9a5 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-21 14:24:05 +08:00
qitz aa8522293f Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-21 14:21:07 +08:00
qitz 5e4fe7df97 优化查看流程功能 2024-02-21 14:20:50 +08:00
qtzandGitea 6ae4f4bec7 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-21 11:43:10 +08:00
qitz 7377980330 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-21 11:40:23 +08:00
qitz 854f98c560 修改查询日志 2024-02-21 11:40:07 +08:00
qtzandGitea 8e54eba40a Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-21 09:42:24 +08:00
qitz f595820ec4 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-21 09:38:30 +08:00
wangqiong123andGitea 5c0439f1f0 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-21 09:38:22 +08:00
qitz 1fc66789aa 优化送达功能 2024-02-21 09:38:08 +08:00
18792927508 398d4a80d0 bug修复221 2024-02-21 09:35:21 +08:00
qtzandGitea 0fe491cf84 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-20 17:26:07 +08:00
qitz 158e6ee9fd Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-20 17:23:00 +08:00
qitz 32db41e641 优化查询流程 2024-02-20 17:22:44 +08:00
qtzandGitea e67d6d2d3f Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-20 09:20:46 +08:00
qitz e6160f71d4 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-20 09:17:29 +08:00
qitz a98413baba 优化更新状态 2024-02-20 09:16:57 +08:00
wangqiong123andGitea 8309678cb4 Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-20 09:09:57 +08:00
18792927508 0b96d4351d bug修复 2024-02-20 09:06:43 +08:00
qtzandGitea b8ad0dfc8c Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-19 15:09:49 +08:00
qitz 6ee2fd571a Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-19 15:06:45 +08:00
qitz 483128ca87 优化签名功能 2024-02-19 15:06:30 +08:00
qtzandGitea af4922ce3c Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-19 14:00:37 +08:00
qitz 5f6b9495b1 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-19 13:57:54 +08:00
qitz 7b7ee0ab63 优化修改功能 2024-02-19 13:57:36 +08:00
qtzandGitea fb76ba3a21 Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-19 11:36:16 +08:00
qitz d014a5e76b Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Backend into qtz1 2024-02-19 11:33:14 +08:00
qitz 962e28c0d8 修改调解和解功能 2024-02-19 11:32:55 +08:00
qtzandGitea 39c7bb43bd Merge branch 'qtz1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-19 10:22:03 +08:00
qitz 784f7c0675 修改送达功能 2024-02-19 10:19:12 +08:00
wangqiong123andGitea 54dea94f6a Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev 2024-02-19 09:23:08 +08:00
18792927508 164642ae58 bug修复 2024-02-19 09:20:03 +08:00
72 changed files with 3853 additions and 785 deletions
@@ -1,11 +1,19 @@
package com.ruoyi; package com.ruoyi;
import cn.hutool.core.collection.CollectionUtil;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.mapper.SysUserMapper;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.List;
/** /**
* 启动程序 * 启动程序
* *
@@ -30,5 +38,14 @@ public class RuoYiApplication
" | | \\ `' /| `-' / \n" + " | | \\ `' /| `-' / \n" +
" | | \\ / \\ / \n" + " | | \\ / \\ / \n" +
" ''-' `'-' `-..-' "); " ''-' `'-' `-..-' ");
// 启动成功后,查询用户表,将用户信息存到redis
RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
SysUserMapper userMapper = SpringUtils.getBean(SysUserMapper.class);
List<SysUser> sysUsers = userMapper.selectUserListByIds(null);
if(CollectionUtil.isNotEmpty(sysUsers)){
for (SysUser sysUser : sysUsers) {
redisCache.setCacheObject(CacheConstants.USER_KEY+sysUser.getUserId(),sysUser);
}
}
} }
} }
@@ -5,10 +5,7 @@ import com.ruoyi.system.domain.vo.flow.MsCaseFlowSearchVO;
import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO; import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO;
import com.ruoyi.system.service.flow.CaseFlowService; import com.ruoyi.system.service.flow.CaseFlowService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import static com.ruoyi.common.core.domain.AjaxResult.success; import static com.ruoyi.common.core.domain.AjaxResult.success;
@@ -28,6 +25,13 @@ public class CaseFlowController {
public Object queryCaseFlowInfo(@RequestBody MsCaseFlowSearchVO caseFlowSearchVO) { public Object queryCaseFlowInfo(@RequestBody MsCaseFlowSearchVO caseFlowSearchVO) {
return caseFlowService.queryCaseFlowInfo(caseFlowSearchVO); return caseFlowService.queryCaseFlowInfo(caseFlowSearchVO);
} }
/**
* 查询案件流程信息
*/
@GetMapping("/selectCaseFlow")
public AjaxResult selectCaseFlow() {
return caseFlowService.selectCaseFlow();
}
/** /**
* 新增或编辑案件流程节点信息 * 新增或编辑案件流程节点信息
@@ -1,19 +1,6 @@
package com.ruoyi.web.controller.system; package com.ruoyi.web.controller.system;
import java.util.ArrayList; import com.ruoyi.common.annotation.Anonymous;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
@@ -24,6 +11,14 @@ import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.system.service.ISysDictDataService;
import com.ruoyi.system.service.ISysDictTypeService; import com.ruoyi.system.service.ISysDictTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/** /**
* 数据字典信息 * 数据字典信息
@@ -82,6 +77,20 @@ public class SysDictDataController extends BaseController
} }
return success(data); return success(data);
} }
/**
* 根据字典类型查询字典数据信息,跳过token
*/
@Anonymous
@GetMapping(value = "/type/skipToken/{dictType}")
public AjaxResult skipToken(@PathVariable String dictType)
{
List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
if (StringUtils.isNull(data))
{
data = new ArrayList<SysDictData>();
}
return success(data);
}
/** /**
* 新增字典类型 * 新增字典类型
@@ -1,8 +1,17 @@
package com.ruoyi.web.controller.system; package com.ruoyi.web.controller.system;
import java.util.List; import cn.hutool.core.util.StrUtil;
import java.util.Set; import cn.hutool.crypto.digest.MD5;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysMenu;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.service.ISysMenuService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.flow.CaseFlowService; import com.ruoyi.system.service.flow.CaseFlowService;
import com.ruoyi.wisdomarbitrate.domain.dto.miniprogress.IdentityAuthentication; import com.ruoyi.wisdomarbitrate.domain.dto.miniprogress.IdentityAuthentication;
@@ -12,15 +21,9 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult; import java.util.List;
import com.ruoyi.common.core.domain.entity.SysMenu; import java.util.Set;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.system.service.ISysMenuService;
/** /**
* 登录验证 * 登录验证
@@ -43,6 +46,8 @@ public class SysLoginController {
private ISysUserService sysUserService; private ISysUserService sysUserService;
@Autowired @Autowired
private CaseFlowService caseFlowService; private CaseFlowService caseFlowService;
@Autowired
private TokenService tokenService;
/** /**
* 登录方法 * 登录方法
* *
@@ -102,4 +107,19 @@ public class SysLoginController {
List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId); List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
return AjaxResult.success(menuService.buildMenus(menus)); return AjaxResult.success(menuService.buildMenus(menus));
} }
/**sso登录接口*/
@PostMapping("login/sso")
public AjaxResult loginSSO( @RequestBody LoginBody loginBody){
if(StrUtil.isEmpty(loginBody.getUsername()) || StrUtil.isEmpty(loginBody.getTicket())
|| StrUtil.isEmpty(loginBody.getRoleName()) ){
return AjaxResult.error("参数错误");
}
return loginService.loginSSO(loginBody);
}
public static void main(String[] args) {
System.out.println( MD5.create().digestHex("BMceshi" ));
}
} }
@@ -4,12 +4,18 @@ import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.wisdomarbitrate.domain.dto.miniprogress.IdentityAuthentication; import com.ruoyi.wisdomarbitrate.domain.dto.miniprogress.IdentityAuthentication;
import com.ruoyi.wisdomarbitrate.domain.vo.miniprogress.WeChatUserVO; import com.ruoyi.wisdomarbitrate.domain.vo.miniprogress.WeChatUserVO;
import com.ruoyi.wisdomarbitrate.service.miniprogress.WeChatUserService; import com.ruoyi.wisdomarbitrate.service.miniprogress.WeChatUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* @author wangqiong * @author wangqiong
* @description 微信小程序用户注册登录 * @description 微信小程序用户注册登录
@@ -20,7 +26,10 @@ import org.springframework.web.bind.annotation.*;
public class WeChatUserController extends BaseController { public class WeChatUserController extends BaseController {
@Autowired @Autowired
private WeChatUserService weChatUserService; private WeChatUserService weChatUserService;
@Autowired
private SysRoleMapper roleMapper;
@Autowired
private SysUserMapper userMapper;
/** /**
* 小程序端获取手机验证码 * 小程序端获取手机验证码
* @param userVO * @param userVO
@@ -35,14 +44,22 @@ public class WeChatUserController extends BaseController {
} }
return weChatUserService.sendCode(userVO); return weChatUserService.sendCode(userVO);
} }
@Anonymous
@GetMapping("/roles")
public AjaxResult roles()
{
List<SysRole> list = roleMapper.selectRoleAll();
return AjaxResult.success(list);
}
/** /**
* 小程序注册 * 小程序注册
*/ */
@Anonymous @Anonymous
@PostMapping("/registerUser") @PostMapping("/registerUser")
public AjaxResult registerUser( @RequestBody IdentityAuthentication ientityAuthentication) { public AjaxResult registerUser( @RequestBody IdentityAuthentication ientityAuthentication) {
if(ientityAuthentication.getId()==null if(
|| StrUtil.isEmpty(ientityAuthentication.getName()) // ientityAuthentication.getId()==null ||
StrUtil.isEmpty(ientityAuthentication.getName())
|| StrUtil.isEmpty(ientityAuthentication.getIdentityNo()) || StrUtil.isEmpty(ientityAuthentication.getIdentityNo())
|| StrUtil.isEmpty(ientityAuthentication.getPhone()) || StrUtil.isEmpty(ientityAuthentication.getPhone())
|| StrUtil.isEmpty(ientityAuthentication.getUserName()) || StrUtil.isEmpty(ientityAuthentication.getUserName())
@@ -54,5 +71,16 @@ public class WeChatUserController extends BaseController {
logger.info("调用小程序注册==="+ientityAuthentication.toString()); logger.info("调用小程序注册==="+ientityAuthentication.toString());
return weChatUserService.registerUser(ientityAuthentication); return weChatUserService.registerUser(ientityAuthentication);
} }
@Anonymous
@GetMapping("/verifyUserName")
public AjaxResult verifyUserName(@RequestParam("userName") String userName)
{
SysUser sysUser = userMapper.checkUserNameUnique(userName);
if(sysUser==null){
return AjaxResult.success();
}else {
return AjaxResult.error("用户名已存在!");
}
}
} }
@@ -10,6 +10,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.EsignDemoException; import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.common.utils.IdCardUtils; import com.ruoyi.common.utils.IdCardUtils;
import com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SmsSendRecord;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseApplication; 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.*; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.*;
@@ -47,33 +48,63 @@ public class MsCaseApplicationController extends BaseController {
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo page(MsCaseApplicationReq req) public TableDataInfo page(MsCaseApplicationReq req)
{ {
//startPage();
List<MsCaseApplicationVO> list = caseApplicationService.list(req); List<MsCaseApplicationVO> list = caseApplicationService.list(req);
return getDataTable(list); return getDataTable(list);
} }
/**
* 首页待办数量
*/
@GetMapping("/todoCount")
public AjaxResult todoCount()
{
CaseToDoCountVO vo= caseApplicationService.todoCount();
return success(vo);
}
/**
* 根据登录人返回用户信息
*/
@GetMapping("/getUserInfo")
public AjaxResult getUserInfo()
{
return success(caseApplicationService.getUserInfo());
}
/** /**
* 新增案件 * 新增案件
*/ */
// todo 重复提交校验
@PostMapping("/insert") @PostMapping("/insert")
public AjaxResult insert(@RequestBody MsCaseApplicationVO caseApplication ) public AjaxResult insert(@RequestBody MsCaseApplicationVO caseApplication )
{ {
if(caseApplication.getAffiliate()==null||caseApplication.getAffiliate().getOrganizeFlag()==null){ if(caseApplication.getAffiliate()==null||caseApplication.getAffiliate().getOrganizeFlag()==null){
error("参数校验失败"); error("参数校验失败");
} }
AjaxResult ajaxResult = AjaxResult.success();
return success(caseApplicationService.insert(caseApplication)); ajaxResult.put("caseNum",caseApplicationService.insert(caseApplication));
return ajaxResult;
} }
/**
* 批量新增案件
*/
@PostMapping("/batchInsert")
public AjaxResult batchInsert(@RequestBody MsCaseBatchInsertVO list )
{
return caseApplicationService.batchInsert(list);
}
/** /**
* 根据身份证号获取性别和出生日期 * 根据身份证号获取性别和出生日期
*/ */
@GetMapping("/getInfoByIdCard") @GetMapping("/getInfoByIdCard")
public AjaxResult getInfoByIdCard(@RequestParam("idCard") String idCard) public AjaxResult getInfoByIdCard(@RequestParam(value = "idCard" ,required = false) String idCard)
{ {
if(StrUtil.isEmpty(idCard)){ if(StrUtil.isEmpty(idCard)){
error("参数校验失败"); return error("身份证号不能为空");
} }
if(!IdcardUtil.isValidCard(idCard)){ if(!IdcardUtil.isValidCard(idCard)){
error("身份证不合法,请输入正确的身份证号"); return error("身份证不合法,请输入正确的身份证号");
} }
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
Map<String, String> identityNumMap = IdCardUtils.getBirAgeSex(idCard); Map<String, String> identityNumMap = IdCardUtils.getBirAgeSex(idCard);
@@ -105,16 +136,27 @@ public class MsCaseApplicationController extends BaseController {
} }
return success(caseApplicationService.update(caseApplication)); return success(caseApplicationService.update(caseApplication));
} }
/**
* 删除案件
*/
@PostMapping("/delete")
public AjaxResult delete(@RequestBody MsCaseApplication req ) {
if (req.getCaseFlowId() == null
|| (req.getId() == null && StrUtil.isEmpty(req.getBatchNumber()))) {
return error("参数校验失败");
}
return caseApplicationService.delete(req);
}
/** /**
* 根据id查询案件 * 根据id查询案件
*/ */
@GetMapping("/selectById") @GetMapping("/selectById")
public AjaxResult selectById(@RequestParam Long id ) public AjaxResult selectById(@RequestParam(required = false) Long id ,@RequestParam(required = false) String caseNum )
{ {
if(id==null){ if(id==null && caseNum==null ){
error("id不能为空"); error("参数校验失败");
} }
return success(caseApplicationService.selectById(id)); return success(caseApplicationService.selectById(id,caseNum));
} }
/** /**
* 案件压缩包导入 * 案件压缩包导入
@@ -122,6 +164,7 @@ public class MsCaseApplicationController extends BaseController {
* @return * @return
* @throws IOException * @throws IOException
*/ */
@PostMapping("/uploadCaseZipFile") @PostMapping("/uploadCaseZipFile")
public AjaxResult uploadCaseZipFile(@RequestParam("file") MultipartFile file, @RequestParam("templateId") Long templateId) throws IOException { public AjaxResult uploadCaseZipFile(@RequestParam("file") MultipartFile file, @RequestParam("templateId") Long templateId) throws IOException {
if(file.isEmpty()||templateId==null){ if(file.isEmpty()||templateId==null){
@@ -129,6 +172,20 @@ public class MsCaseApplicationController extends BaseController {
} }
return caseApplicationService.uploadCaseZipFile(file,templateId); return caseApplicationService.uploadCaseZipFile(file,templateId);
} }
/**
* 用户信息压缩包导入
* @param file
* @return
* @throws IOException
*/
@Anonymous
@PostMapping("/userIdentify")
public AjaxResult userIdentify(@RequestParam("file") MultipartFile file) throws IOException {
if(file.isEmpty()){
return error("参数不能为空");
}
return caseApplicationService.userIdentify(file);
}
/** /**
* 生成调解申请书 * 生成调解申请书
@@ -195,8 +252,8 @@ public class MsCaseApplicationController extends BaseController {
* @return * @return
*/ */
@GetMapping("/listMediator") @GetMapping("/listMediator")
public AjaxResult listMediator( ) { public AjaxResult listMediator( @RequestParam(value = "caseAppliId",required = false) Long caseAppliId) {
return caseApplicationService.listMediator(); return caseApplicationService.listMediator(caseAppliId);
} }
/** /**
* 保存预约 * 保存预约
@@ -255,12 +312,25 @@ public class MsCaseApplicationController extends BaseController {
*/ */
@PostMapping("/mediation") @PostMapping("/mediation")
public AjaxResult mediation(@RequestBody MsCaseApplicationReq req) throws EsignDemoException, InterruptedException { public AjaxResult mediation(@RequestBody MsCaseApplicationReq req) throws EsignDemoException, InterruptedException {
if (req.getCaseFlowId() == null || req.getId() == null) { if (req.getCaseFlowId() == null || req.getId() == null || req.getMediaResult()==null) {
return error("参数校验失败"); return error("参数校验失败");
} }
return caseApplicationService.mediation(req); return caseApplicationService.mediation(req);
} }
/**
* 确定会议结果
* @param
* @return
*/
@PostMapping("/confirmMeetingResult")
public AjaxResult confirmMeetingResult(@RequestBody MsCaseApplicationReq req) {
if (req.getCaseFlowId() == null || req.getId() == null || req.getMediaResult()==null) {
return error("参数校验失败");
}
return caseApplicationService.confirmMeetingResult(req);
}
/** /**
* 修改庭审笔录 * 修改庭审笔录
* @param * @param
@@ -332,4 +402,28 @@ public class MsCaseApplicationController extends BaseController {
return success(videoService.reserveConferenceList(caseId)); return success(videoService.reserveConferenceList(caseId));
} }
/**
* 查询短信发送记录
* @param smsSendRecord
* @return
*/
@PostMapping("/smsRecord")
public TableDataInfo getSmsSendRecord(@RequestBody SmsSendRecord smsSendRecord){
startPage();
List<SmsSendRecord> list = caseApplicationService.getSmsSendRecord(smsSendRecord);
return getDataTable(list);
}
/**
* 保存onlyOffice在线编辑的文件
* @param
* @return
*/
@PostMapping("/saveOnlyOfficeFile")
public AjaxResult saveOnlyOfficeFile( @RequestBody MsCaseAttach caseAttach) {
if(caseAttach.getCaseAppliId()==null||StrUtil.isEmpty(caseAttach.getOnlyOfficeFileId())||StrUtil.isEmpty(caseAttach.getAnnexPath())){
return error("参数校验失败");
}
return caseApplicationService.saveOnlyOfficeFile(caseAttach);
}
} }
@@ -65,7 +65,7 @@ public class MsCaseApplicationPayController extends BaseController {
} }
/** /**
* 确认缴费,支持批量(batchNumber不为空,则为批量) * 申请人/被申请人确认缴费,支持批量(batchNumber不为空,则为批量)
* @param dto 缴费传入参数 * @param dto 缴费传入参数
* @return 统一响应结果 * @return 统一响应结果
*/ */
@@ -79,7 +79,7 @@ public class MsCaseApplicationPayController extends BaseController {
return casePaymentService.confirmPayment(dto); return casePaymentService.confirmPayment(dto);
} }
/** /**
* 确认已缴费,支持批量(batchNumber不为空,则为批量) * 财务确认已缴费,支持批量(batchNumber不为空,则为批量)
* @param dto 缴费传入参数 * @param dto 缴费传入参数
* @return 统一响应结果 * @return 统一响应结果
*/ */
@@ -91,5 +91,18 @@ public class MsCaseApplicationPayController extends BaseController {
} }
return casePaymentService.confirmPaid(dto); return casePaymentService.confirmPaid(dto);
} }
/**
* 财务确认被申请人已缴费,支持批量(batchNumber不为空,则为批量)
* @param dto 缴费传入参数
* @return 统一响应结果
*/
@PostMapping("/resConfirmPaid")
public AjaxResult resConfirmPaid(@RequestBody CaseConfirmPayDTO dto) {
if ((dto.getCaseId() == null && StrUtil.isEmpty(dto.getBatchNumber()))
|| dto.getCaseFlowId() == null) {
return error("参数校验失败");
}
dto.setApplicantConfirm(false);
return casePaymentService.confirmPaid(dto);
}
} }
@@ -2,6 +2,8 @@ package com.ruoyi.web.controller.wisdomarbitrate.mscase;
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 cn.hutool.json.JSONUtil;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.EsignDemoException; import com.ruoyi.common.exception.EsignDemoException;
@@ -10,6 +12,8 @@ import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseLogRecordVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseLogRecordVO;
import com.ruoyi.wisdomarbitrate.service.mscase.MsSignSealService; import com.ruoyi.wisdomarbitrate.service.mscase.MsSignSealService;
import com.ruoyi.wisdomarbitrate.utils.SignVerifyUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@@ -57,6 +61,38 @@ public class MsSignSealController extends BaseController {
return success(sealUrlRecordselect); return success(sealUrlRecordselect);
} }
/**
* 签名用印回调
*/
@Anonymous
@PostMapping("/signSeaalCaseApplicaCallback")
public AjaxResult signSeaalCaseApplicaCallback() throws Exception {
boolean checkResult= SignVerifyUtils.checkSignuter();
if(checkResult){
String reqbodystr =SignVerifyUtils.getRequestBody();
return msSignSealService.signSeaalCaseApplicaCallback(reqbodystr);
}else {
return AjaxResult.error("error");
}
}
/**
* 印章审核回调
*/
@Anonymous
@PostMapping("/sealCheckCallback")
public AjaxResult sealCheckCallback() throws Exception {
boolean checkResult= SignVerifyUtils.checkSignuter();
if(checkResult){
String reqbodystr =SignVerifyUtils.getRequestBody();
return msSignSealService.sealCheckCallback(reqbodystr);
}else {
return AjaxResult.error("error");
}
}
/** /**
* 查询案件进度 * 查询案件进度
*/ */
@@ -6,7 +6,8 @@ spring:
druid: druid:
# 主库数据源 # 主库数据源
master: master:
url: jdbc:mysql://121.40.189.20:3306/mediation_system?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=true&serverTimezone=Asia/Shanghai&useSSL=false # url: jdbc:mysql://121.40.189.20:3306/mediation_system?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=true&serverTimezone=Asia/Shanghai&useSSL=false
url: jdbc:mysql://121.40.189.20:3306/mediation_system_prod?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=true&serverTimezone=Asia/Shanghai&useSSL=false
username: root username: root
password: YMzc157# password: YMzc157#
# 从库数据源 # 从库数据源
+18 -4
View File
@@ -17,8 +17,8 @@ ruoyi:
# 开发环境配置 # 开发环境配置
server: server:
# 服务器的HTTP端口,默认为8080 # 测试环境6001,开发环境7001
port: 6001 port: 7001
servlet: servlet:
# 应用的访问路径 # 应用的访问路径
context-path: / context-path: /
@@ -131,8 +131,8 @@ mybatis:
mapperLocations: classpath*:mapper/**/*Mapper.xml mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件 # 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml configLocation: classpath:mybatis/mybatis-config.xml
configuration: # configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# PageHelper分页插件 # PageHelper分页插件
pagehelper: pagehelper:
helperDialect: mysql helperDialect: mysql
@@ -184,6 +184,20 @@ imConfig:
secretId: AKID3xfHgroY4MQHvLXUXMwIQL1UjmbBX1Tv secretId: AKID3xfHgroY4MQHvLXUXMwIQL1UjmbBX1Tv
# 腾讯云密钥 # 腾讯云密钥
secretKey: INDrIXcT8YmomZBcsy0oNirnU0LTN4X7 secretKey: INDrIXcT8YmomZBcsy0oNirnU0LTN4X7
# 调解机构代码配置
organizeConfig:
# creditCode
creditCode: 910000058386410047
# 引入仲裁系统url配置
arbitrateConfig:
url: http://121.40.189.20:9001/callArbitrateCaseApplication/generateCaseApplication
# 回调通知
signSealCallbackConfig:
url: http://121.40.189.20:7001/mssignSeal/signSeaalCaseApplicaCallback
# onlyOffice系统url配置
onlyOfficeConfig:
# url: http://172.16.0.254:9090/files/upload
url: http://121.40.189.20:9090/files/upload
#jodconverter: #jodconverter:
# local: # local:
# host: 121.40.189.20 # host: 121.40.189.20
@@ -42,4 +42,12 @@ public class CacheConstants
*/ */
public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:"; public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:";
public static final String WE_CHAT_SMS_VERIFY_CODE_KEY="we_chat_sms_verify_code:"; public static final String WE_CHAT_SMS_VERIFY_CODE_KEY="we_chat_sms_verify_code:";
/**
* 案件 redis key
*/
public static final String CASE_KEY = "case_codes:";
/**
* 所有用户 redis key
*/
public static final String USER_KEY = "user_key:";
} }
@@ -1,58 +0,0 @@
package com.ruoyi.common.constant;
/**
* 立案申请案件状态
*
*/
public class CaseApplicationConstants {
/** 立案申请 */
public static final int CASE_APPLICATION = 0;
/** 待立案审查 */
public static final int CASE_CHECK = 1;
/** 待缴费 */
public static final int PENDING_PAYMENT = 2;
/** 待缴费确认 */
public static final int PENDING_PAYMENT_CONFIRM = 3;
/** 待案件质证 */
public static final int CASE_CROSSEXAMI = 4;
/** 待组庭 */
public static final int PENDING_TRIAL = 26;
/** 待组庭审核 */
public static final int CONFIRMDED_PENDING_TRIAL_SUBMMIT = 5;
/** 待组庭确定 */
public static final int CONFIRMDED_PENDING_TRIAL = 6;
/** 待审核仲裁方式 */
public static final int CHECK_ARBITRATION_METHOD = 7;
/** 待开庭审理 */
public static final int PENDING_OPENCOURT_HEAR = 8;
/** 待书面审理 */
public static final int PENDING_WRIITEN_HEAR = 9;
/** 待生成仲裁文书 */
public static final int GENERATED_ARBITRATION = 10;
/**待秘书核验仲裁文书*/
public static final int VERPRIF_ARBITRATION = 11;
/**待部门长审核仲裁文书*/
public static final int CHECK_ARBITRATION = 12;
/**待仲裁文书签名*/
public static final int SIGN_ARBITRATION = 13;
/** 待仲裁文书用印 */
public static final int ARBITRATED_SEAL = 14;
/** 待仲裁文书送达 */
public static final int ARBITRATION_DELIVERY = 15;
/** 待案件归档*/
public static final int CASE_FILING = 16;
/** 已归档*/
public static final int CASE_ARCHIVED = 17;
/** 待修改开庭时间*/
public static final int MODIFY_HEARDATE = 31;
/**待仲裁员审核仲裁文书*/
public static final int HEAD_CHECK_ARBITRATION = 18;
}
@@ -63,8 +63,12 @@ public class SysUser extends BaseEntity
/** 用户身份证号 */ /** 用户身份证号 */
@Excel(name = "身份证号")
private String idCard; private String idCard;
/** 身份类别,0-身份证,1-护照,默认0 */
private Integer idType;
/** 国籍,0-国内,1-国外,默认0 */
private Integer nationality;
/** 用户邮箱 */ /** 用户邮箱 */
@Excel(name = "用户邮箱") @Excel(name = "用户邮箱")
@@ -136,6 +140,22 @@ public class SysUser extends BaseEntity
this.userId = userId; this.userId = userId;
} }
public Integer getIdType() {
return idType;
}
public void setIdType(Integer idType) {
this.idType = idType;
}
public Integer getNationality() {
return nationality;
}
public void setNationality(Integer nationality) {
this.nationality = nationality;
}
public Long getUserId() public Long getUserId()
{ {
return userId; return userId;
@@ -361,6 +381,8 @@ public class SysUser extends BaseEntity
.append("deptIds", getDeptIds()) .append("deptIds", getDeptIds())
.append("userName", getUserName()) .append("userName", getUserName())
.append("idCard", getIdCard()) .append("idCard", getIdCard())
.append("idType", getIdType())
.append("nationality", getNationality())
.append("nickName", getNickName()) .append("nickName", getNickName())
.append("email", getEmail()) .append("email", getEmail())
.append("phonenumber", getPhonenumber()) .append("phonenumber", getPhonenumber())
@@ -26,12 +26,36 @@ public class LoginBody
* 唯一标识 * 唯一标识
*/ */
private String uuid; private String uuid;
/**
* 密文:BM+用户名用MD5加密
*/
private String ticket;
/**
* 角色名,申请人,被申请人,委托代理人
*/
private String roleName;
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getUsername() public String getUsername()
{ {
return username; return username;
} }
public String getTicket() {
return ticket;
}
public void setTicket(String ticket) {
this.ticket = ticket;
}
public void setUsername(String username) public void setUsername(String username)
{ {
this.username = username; this.username = username;
@@ -16,10 +16,11 @@ public enum AnnexTypeEnum implements EnumsInterface {
PAYMENT_RECEIPT(4, "申请人缴费单"), PAYMENT_RECEIPT(4, "申请人缴费单"),
MEETING_VIDEO(5, "会议视频"), MEETING_VIDEO(5, "会议视频"),
MEDIATE(6, "庭审笔录"), MEDIATE(6, "庭审笔录"),
MEDIATE_BOOK(7, "调解书"), MEDIATE_BOOK(7, "调解书或和解协议"),
MEDIATION_FILES(8, "调解资料"), MEDIATION_FILES(8, "调解资料"),
RES_PAYMENT_RECEIPT(9, "被申请人缴费单"), RES_PAYMENT_RECEIPT(9, "被申请人缴费单"),
SEAL_PICTURE(10, "印章图片"), SEAL_PICTURE(10, "印章图片"),
FLOW_SVG(11, "流程节点SVG"),
; ;
@@ -10,9 +10,10 @@ import com.ruoyi.common.interfaces.EnumsInterface;
* @Created wangqiong * @Created wangqiong
*/ */
public enum TemplateTypeEnum implements EnumsInterface { public enum TemplateTypeEnum implements EnumsInterface {
MEDIATION_APPLICATION(1, "调解申请书模板"), MEDIATION_APPLICATION(1, "机构调解申请书模板"),
MEDIATION_AGREEMENT(2, "和解协议模板"), MEDIATION_AGREEMENT(2, "和解协议模板"),
MEDIATE_BOOK(3, "调解书模板"), MEDIATE_BOOK(3, "调解书模板"),
PERSON_MEDIATION_APPLICATION(4, "自然人调解申请书模板"),
@@ -4,10 +4,7 @@ import lombok.extern.slf4j.Slf4j;
import javax.mail.*; import javax.mail.*;
import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage;
import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@Slf4j @Slf4j
public final class EmailUtil { public final class EmailUtil {
@@ -27,8 +24,8 @@ public final class EmailUtil {
BodyPart bodyPart = multipart.getBodyPart(i); BodyPart bodyPart = multipart.getBodyPart(i);
if(bodyPart.getContentType().contains("Message/Rfc822")){ if(bodyPart.getContentType().contains("Message/Rfc822")){
MimeMessage mimeMessage = new MimeMessage(session, bodyPart.getInputStream()); MimeMessage mimeMessage = new MimeMessage(session, bodyPart.getInputStream());
if(mimeMessage.getSubject()!=null&&mimeMessage.getSubject().contains("裁决书")){ if(mimeMessage.getSubject()!=null&&mimeMessage.getSubject().contains("调解书")){
String[] split = mimeMessage.getSubject().split("裁决书"); String[] split = mimeMessage.getSubject().split("调解书");
if(split.length>0){ if(split.length>0){
return split[0]; return split[0];
} }
@@ -16,8 +16,9 @@ public class MimeTypeUtils
public static final String IMAGE_BMP = "image/bmp"; public static final String IMAGE_BMP = "image/bmp";
public static final String IMAGE_GIF = "image/gif"; public static final String IMAGE_GIF = "image/gif";
public static final String IMAGE_SVG = "image/svg";
public static final String[] IMAGE_EXTENSION = { "bmp", "gif", "jpg", "jpeg", "png" };
public static final String[] IMAGE_EXTENSION = { "bmp", "gif", "jpg", "jpeg", "png","svg" };
public static final String[] FLASH_EXTENSION = { "swf", "flv" }; public static final String[] FLASH_EXTENSION = { "swf", "flv" };
@@ -28,7 +29,7 @@ public class MimeTypeUtils
public static final String[] DEFAULT_ALLOWED_EXTENSION = { public static final String[] DEFAULT_ALLOWED_EXTENSION = {
// 图片 // 图片
"bmp", "gif", "jpg", "jpeg", "png", "bmp", "gif", "jpg", "jpeg", "png","svg",
// word excel powerpoint // word excel powerpoint
"doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt",
// 压缩文件 // 压缩文件
@@ -52,6 +53,8 @@ public class MimeTypeUtils
return "bmp"; return "bmp";
case IMAGE_GIF: case IMAGE_GIF:
return "gif"; return "gif";
case IMAGE_SVG:
return "svg";
default: default:
return ""; return "";
} }
@@ -1,5 +1,10 @@
package com.ruoyi.framework.config; package com.ruoyi.framework.config;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.wisdomarbitrate.service.mscase.MsCaseApplicationService; import com.ruoyi.wisdomarbitrate.service.mscase.MsCaseApplicationService;
import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
@@ -75,10 +80,32 @@ public class RedisConfig extends CachingConfigurerSupport
public ApplicationListener applicationListener() { public ApplicationListener applicationListener() {
return (ApplicationListener<RedisKeyExpiredEvent>) event -> { return (ApplicationListener<RedisKeyExpiredEvent>) event -> {
String key = new String(event.getSource()); String key = new String(event.getSource());
// 根据key查询案件表 if(key.startsWith(CacheConstants.CASE_KEY)) {
caseApplicationService.notAccept(key,"已超过案件受理期限五日,"); String[] split = key.split(CacheConstants.CASE_KEY);
if(split.length>1 && StrUtil.isNotEmpty(split[1])) {
caseApplicationService.notAccept(split[1], "已超过案件受理期限五日,");
}
}
}; };
} }
/**
* 获取字典缓存
*
* @param key 参数键
* @return dictDatas 字典数据列表
*/
public static String getCodeCache(String key)
{
String codeCache = SpringUtils.getBean(RedisCache.class).getCacheObject(getVerifyCodeCacheKey(key));
if (StringUtils.isNotNull(codeCache))
{
return codeCache;
}
return null;
}
private static String getVerifyCodeCacheKey(String key) {
return CacheConstants.CASE_KEY + key;
}
/** /**
* 限流脚本 * 限流脚本
*/ */
@@ -111,7 +111,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 过滤请求 // 过滤请求
.authorizeRequests() .authorizeRequests()
// 对于登录login 注册register 验证码captchaImage 允许匿名访问 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
.antMatchers("/login", "/register", "/captchaImage","/uploadPath/**","/websocket/**").permitAll() .antMatchers("/login","/login/sso", "/register", "/captchaImage","/uploadPath/**","/websocket/**").permitAll()
// 静态资源,可匿名访问 // 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
@@ -1,33 +1,35 @@
package com.ruoyi.framework.web.service; package com.ruoyi.framework.web.service;
import javax.annotation.Resource; import cn.hutool.crypto.digest.MD5;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.user.*;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.framework.security.context.AuthenticationContextHolder;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.constant.Constants; import javax.annotation.Resource;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.user.BlackListException;
import com.ruoyi.common.exception.user.CaptchaException;
import com.ruoyi.common.exception.user.CaptchaExpireException;
import com.ruoyi.common.exception.user.UserNotExistsException;
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.framework.security.context.AuthenticationContextHolder;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService;
/** /**
* 登录校验方法 * 登录校验方法
@@ -51,6 +53,8 @@ public class SysLoginService
@Autowired @Autowired
private ISysConfigService configService; private ISysConfigService configService;
@Autowired
private SysRoleMapper roleMapper;
/** /**
* 登录验证 * 登录验证
@@ -63,7 +67,6 @@ public class SysLoginService
*/ */
public String login(String username, String password, String code, String uuid) public String login(String username, String password, String code, String uuid)
{ {
// 验证码校验
validateCaptcha(username, code, uuid); validateCaptcha(username, code, uuid);
// 登录前置校验 // 登录前置校验
loginPreCheck(username, password); loginPreCheck(username, password);
@@ -99,6 +102,45 @@ public class SysLoginService
// 生成token // 生成token
return tokenService.createToken(loginUser); return tokenService.createToken(loginUser);
} }
/**
* 无需验证码登录
* 重写login方法将验证码模块去掉
* @param username
* @param password
* @param uuid
* @return
*/
public String loginNoCaptcha(String username, String password, String uuid)
{
// 用户验证
Authentication authentication = null;
try
{
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
AuthenticationContextHolder.setContext(authenticationToken);
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(authenticationToken);
}
catch (Exception e)
{
if (e instanceof BadCredentialsException)
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
}
else
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
throw new ServiceException(e.getMessage());
}
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
recordLoginInfo(loginUser.getUserId());
// 生成token
return tokenService.createToken(loginUser);
}
/** /**
* 校验验证码 * 校验验证码
@@ -178,4 +220,42 @@ public class SysLoginService
sysUser.setLoginDate(DateUtils.getNowDate()); sysUser.setLoginDate(DateUtils.getNowDate());
userService.updateUserProfile(sysUser); userService.updateUserProfile(sysUser);
} }
public AjaxResult loginSSO(LoginBody loginBody) {
// MD5加密并和Ticket比对
String currentTicket = MD5.create().digestHex("BM" + loginBody.getUsername());
if(!currentTicket.equals(loginBody.getTicket())){
return AjaxResult.error("ticket校验失败");
}
AjaxResult ajax = AjaxResult.success();
String username = loginBody.getUsername();
// 根据用户名获取用户信息,如果用户不存在则新增用户
SysUser user = userService.selectUserByUserName(username);
if(user==null){
// 新增用户
user = new SysUser();
user.setUserName(username);
user.setPassword(SecurityUtils.encryptPassword("abc123456"));
user.setNickName(username);
// 代理人角色相当于申请人角色
if(loginBody.getRoleName().contains("代理人")){
loginBody.setRoleName("申请人");
}
// 根据角色名查询角色id
Long roleIdByName = roleMapper.selectRoleIdByName(loginBody.getRoleName());
if(roleIdByName==null){
return AjaxResult.error("角色不存在");
}
user.setRoleIds( new Long[]{roleIdByName});
userService.insertUser(user);
}// 生成token
LoginUser loginUser = new LoginUser();
loginUser.setUser(user);
loginUser.setUserId(user.getUserId());
String token = tokenService.createToken(loginUser);
ajax.put("userName", user.getUserName());
ajax.put(Constants.TOKEN, token);
return ajax;
}
} }
@@ -1,14 +1,5 @@
package com.ruoyi.framework.web.service; package com.ruoyi.framework.web.service;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
@@ -22,6 +13,16 @@ import eu.bitwalker.useragentutils.UserAgent;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/** /**
* token验证处理 * token验证处理
@@ -119,6 +120,8 @@ public class TokenService
refreshToken(loginUser); refreshToken(loginUser);
Map<String, Object> claims = new HashMap<>(); Map<String, Object> claims = new HashMap<>();
claims.put("userName",loginUser.getUsername());
claims.put("userId",loginUser.getUserId());
claims.put(Constants.LOGIN_USER_KEY, token); claims.put(Constants.LOGIN_USER_KEY, token);
return createToken(claims); return createToken(claims);
} }
@@ -207,14 +210,24 @@ public class TokenService
Claims claims = parseToken(token); Claims claims = parseToken(token);
return claims.getSubject(); return claims.getSubject();
} }
/**
* 从令牌中获取用户名
*
* @param token 令牌
* @return 用户名
*/
public String getUserNameFromToken(String token)
{
Claims claims = parseToken(token);
return claims.get("userName").toString();
}
/** /**
* 获取请求token * 获取请求token
* *
* @param request * @param request
* @return token * @return token
*/ */
private String getToken(HttpServletRequest request) public String getToken(HttpServletRequest request)
{ {
String token = request.getHeader(header); String token = request.getHeader(header);
if (StringUtils.isNotEmpty(token) && token.startsWith(Constants.TOKEN_PREFIX)) if (StringUtils.isNotEmpty(token) && token.startsWith(Constants.TOKEN_PREFIX))
@@ -1,10 +1,11 @@
package com.ruoyi.system.domain.entity.flow; package com.ruoyi.system.domain.entity.flow;
import javax.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import javax.persistence.*;
@Getter @Getter
@Setter @Setter
@ToString @ToString
@@ -51,4 +52,9 @@ public class MsCaseFlow {
*/ */
@Column(name = "button_auth_flag") @Column(name = "button_auth_flag")
private String buttonAuthFlag; private String buttonAuthFlag;
/**
* svg路径
*/
@Column(name = "file_name")
private String fileName;
} }
@@ -0,0 +1,28 @@
package com.ruoyi.system.domain.vo.flow;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class MsBaseCaseFlow {
/**
* 主键id
*/
private Integer id;
/**
* 顺序
*/
private Integer sort;
/**
* 案件状态名称
*/
private String caseStatusName;
}
@@ -5,7 +5,6 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.Column;
import java.util.List; import java.util.List;
@@ -57,4 +56,13 @@ public class MsCaseFlowVO {
* 按钮权限标识符 * 按钮权限标识符
*/ */
private String buttonAuthFlag; private String buttonAuthFlag;
/**
* 角色名
*/
private String roleName;
/**
* svg图片路径
*/
private String fileName;
} }
@@ -1,6 +1,8 @@
package com.ruoyi.system.mapper.flow; package com.ruoyi.system.mapper.flow;
import com.ruoyi.system.domain.entity.flow.MsCaseFlow; import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
import com.ruoyi.system.domain.vo.flow.MsBaseCaseFlow;
import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
@@ -16,9 +18,15 @@ public interface MsCaseFlowMapper extends Mapper<MsCaseFlow> {
@Select("select f1.id,f1.node_id nodeId,f1.node_name nodeName,f1.case_status_name caseStatusName,f1.back_flow_id backFlowId,f1.sort from ms_case_flow f1 join ms_case_flow f2 on f2.id=#{caseFlowId} and f1.sort=f2.sort+1 ") @Select("select f1.id,f1.node_id nodeId,f1.node_name nodeName,f1.case_status_name caseStatusName,f1.back_flow_id backFlowId,f1.sort from ms_case_flow f1 join ms_case_flow f2 on f2.id=#{caseFlowId} and f1.sort=f2.sort+1 ")
MsCaseFlow nextFlow(Integer caseFlowId); MsCaseFlow nextFlow(Integer caseFlowId);
@Select("select f1.id,f1.node_id nodeId,f1.node_name nodeName,f1.case_status_name caseStatusName,f1.back_flow_id backFlowId,f1.sort from ms_case_flow f1 join ms_case_flow f2 on f2.id=#{caseFlowId} and f1.sort >= f2.sort+1 ") @Select("select f1.id,f1.node_id nodeId,f1.node_name nodeName,f1.case_status_name caseStatusName,f1.back_flow_id backFlowId,f1.sort from ms_case_flow f1 join ms_case_flow f2 on f2.id=#{caseFlowId} and f1.sort >= f2.sort+1 order by f1.sort ")
List<MsCaseFlow> nextFlowall(Integer caseFlowId); List<MsCaseFlow> nextFlowall(Integer caseFlowId);
@Select("select f1.id,f1.node_id nodeId,f1.node_name nodeName,f1.case_status_name caseStatusName,f1.back_flow_id backFlowId,f1.sort from ms_case_flow f1 join ms_case_flow f2 on f2.id=#{caseFlowId} and f1.sort=f2.sort+3 ") @Select("select f1.id,f1.node_id nodeId,f1.node_name nodeName,f1.case_status_name caseStatusName,f1.back_flow_id backFlowId,f1.sort from ms_case_flow f1 join ms_case_flow f2 on f2.id=#{caseFlowId} and f1.sort=f2.sort+3 ")
MsCaseFlow nextFlow1(Integer caseFlowId); MsCaseFlow nextFlow1(Integer caseFlowId);
@Select("SELECT r.role_name as roleName ,f.node_name as nodeName ,f.case_status_name as caseStatusName FROM ms_case_flow f left join ms_case_flow_role_related fr on f.id = fr.flow_id left join ms_sys_role r on fr.roleid = r.role_id WHERE f.id = #{caseFlowId} ")
List<MsCaseFlowVO> selectFlowRole(Integer caseFlowId);
@Select("select f1.id,f1.case_status_name caseStatusName,f1.sort from ms_case_flow f1 order by f1.sort")
List<MsBaseCaseFlow> selectCaseFlow();
} }
@@ -1,5 +1,6 @@
package com.ruoyi.system.service.flow; package com.ruoyi.system.service.flow;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.vo.flow.MsCaseFlowSearchVO; import com.ruoyi.system.domain.vo.flow.MsCaseFlowSearchVO;
import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO; import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO;
@@ -12,6 +13,11 @@ public interface CaseFlowService {
* @return * @return
*/ */
Object queryCaseFlowInfo(MsCaseFlowSearchVO caseFlowSearchVO); Object queryCaseFlowInfo(MsCaseFlowSearchVO caseFlowSearchVO);
/**
* 查询案件流程信息
* @return
*/
AjaxResult selectCaseFlow();
/** /**
* 新增或编辑案件流程节点信息 * 新增或编辑案件流程节点信息
@@ -40,4 +46,6 @@ public interface CaseFlowService {
* @return * @return
*/ */
Set<Integer> getCaseStatusIdByRoleKey(Set<String> roles); Set<Integer> getCaseStatusIdByRoleKey(Set<String> roles);
} }
@@ -2,11 +2,12 @@ package com.ruoyi.system.service.flow;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.StringUtils;
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.domain.vo.flow.MsBaseCaseFlow;
import com.ruoyi.system.domain.vo.flow.MsCaseFlowSearchVO; import com.ruoyi.system.domain.vo.flow.MsCaseFlowSearchVO;
import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO; import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO;
import com.ruoyi.system.mapper.SysRoleMapper; import com.ruoyi.system.mapper.SysRoleMapper;
@@ -14,12 +15,15 @@ import com.ruoyi.system.mapper.flow.MsCaseFlowMapper;
import com.ruoyi.system.mapper.flow.MsCaseFlowRoleRelatedMapper; import com.ruoyi.system.mapper.flow.MsCaseFlowRoleRelatedMapper;
import com.ruoyi.system.util.NewStringUtil; import com.ruoyi.system.util.NewStringUtil;
import com.ruoyi.system.util.TableDataUtil; import com.ruoyi.system.util.TableDataUtil;
import org.bouncycastle.crypto.DataLengthException;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
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 tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -40,15 +44,12 @@ public class CaseFlowServiceImpl implements CaseFlowService {
*/ */
@Override @Override
public Object queryCaseFlowInfo(MsCaseFlowSearchVO caseFlowSearchVO) { public Object queryCaseFlowInfo(MsCaseFlowSearchVO caseFlowSearchVO) {
//查询某个案件流程节点信息 if (caseFlowSearchVO == null || caseFlowSearchVO.getPageNum() == null || caseFlowSearchVO.getPageSize() == null) {
if (caseFlowSearchVO.getId() != null) { //查询所有案件流程节点信息
return msCaseFlowMapper.selectAll();
} else if (caseFlowSearchVO.getId() != null) {
//查询某个案件流程节点信息
return msCaseFlowMapper.selectByPrimaryKey(caseFlowSearchVO.getId()); return msCaseFlowMapper.selectByPrimaryKey(caseFlowSearchVO.getId());
} else if (caseFlowSearchVO == null) {
//查询所有案件流程节点信息
return msCaseFlowMapper.selectAll();
} else if (caseFlowSearchVO.getPageNum() == null || caseFlowSearchVO.getPageSize() == null) {
//查询所有案件流程节点信息
return msCaseFlowMapper.selectAll();
} else { } else {
//分页查询案件流程节点信息 //分页查询案件流程节点信息
Map<Integer, List<SysRole>> sysRoleMap = queryRoleByFlowId(null); Map<Integer, List<SysRole>> sysRoleMap = queryRoleByFlowId(null);
@@ -96,6 +97,12 @@ public class CaseFlowServiceImpl implements CaseFlowService {
} }
} }
@Override
public AjaxResult selectCaseFlow() {
List<MsBaseCaseFlow> caseFlows = msCaseFlowMapper.selectCaseFlow();
return AjaxResult.success(caseFlows);
}
/** /**
* 查询流程信息相关的角色信息 * 查询流程信息相关的角色信息
* *
@@ -125,6 +132,27 @@ public class CaseFlowServiceImpl implements CaseFlowService {
return map; return map;
} }
/**
* 本地图片装64
* @param imgPath
* @return
* @throws Exception
*/
public static String convertToBase64( String imgPath) {
byte[] data = null;
// 读取图片字节数组
try {
imgPath=imgPath.replace("/profile/upload", "/home/ruoyi/uploadPath/upload/");
InputStream in = Files.newInputStream(Paths.get(imgPath));
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 返回Base64编码过的字节数组字符串
return Base64.getEncoder().encodeToString(Objects.requireNonNull(data));
}
/** /**
* 新增或编辑案件流程节点信息 * 新增或编辑案件流程节点信息
* *
@@ -133,6 +161,7 @@ public class CaseFlowServiceImpl implements CaseFlowService {
*/ */
@Override @Override
public Boolean saveCaseFlow(MsCaseFlowVO caseFlowVO) { public Boolean saveCaseFlow(MsCaseFlowVO caseFlowVO) {
if (caseFlowVO.getId() != null) { if (caseFlowVO.getId() != null) {
//更新案件流程信息 //更新案件流程信息
MsCaseFlow msCaseFlow = new MsCaseFlow(); MsCaseFlow msCaseFlow = new MsCaseFlow();
@@ -228,6 +257,8 @@ public class CaseFlowServiceImpl implements CaseFlowService {
return false; return false;
} }
/** /**
* 排序案件流程节点 * 排序案件流程节点
* *
@@ -8,6 +8,7 @@ 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.entity.SysUserDept; import com.ruoyi.common.core.domain.entity.SysUserDept;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanValidators; import com.ruoyi.common.utils.bean.BeanValidators;
@@ -241,6 +242,8 @@ public class SysUserServiceImpl implements ISysUserService {
@Transactional @Transactional
public AjaxResult insertUser(SysUser user) { public AjaxResult insertUser(SysUser user) {
// 新增用户信息 // 新增用户信息
user.setCreateBy("admin");
user.setCreateTime(DateUtils.getNowDate());
int rows = userMapper.insertUser(user); int rows = userMapper.insertUser(user);
// 新增用户部门关联 // 新增用户部门关联
if(CollectionUtil.isNotEmpty(user.getDeptIds())) { if(CollectionUtil.isNotEmpty(user.getDeptIds())) {
@@ -1,7 +1,6 @@
package com.ruoyi.wisdomarbitrate.domain.dto.miniprogress; package com.ruoyi.wisdomarbitrate.domain.dto.miniprogress;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data; import lombok.Data;
@@ -12,10 +11,22 @@ public class IdentityAuthentication extends BaseEntity {
/** ID */ /** ID */
private Long id; private Long id;
/**
* 角色id
*/
private Long roleId;
/** 姓名 */ /** 姓名 */
private String name; private String name;
/** 身份证号 */ /** 身份证号 */
private String identityNo; private String identityNo;
/**
* 身份类别,0-身份证,1-护照,默认0
*/
private Integer idType;
/**
* 国籍,0-国内,1-国外,默认0
*/
private Integer nationality;
/** /**
* 短信验证码 * 短信验证码
*/ */
@@ -100,6 +111,22 @@ public class IdentityAuthentication extends BaseEntity {
return userId; return userId;
} }
public Integer getIdType() {
return idType;
}
public void setIdType(Integer idType) {
this.idType = idType;
}
public Integer getNationality() {
return nationality;
}
public void setNationality(Integer nationality) {
this.nationality = nationality;
}
public void setUserId(Long userId) { public void setUserId(Long userId) {
this.userId = userId; this.userId = userId;
} }
@@ -30,5 +30,17 @@ public class CaseConfirmPayDTO {
* 缴费凭证 * 缴费凭证
*/ */
private List<MsCaseAttach> payOrderList; private List<MsCaseAttach> payOrderList;
/**
* 是否同意,0-拒绝,1-同意
*/
private Integer yesOrNo;
/**
* 拒绝原因
*/
private String reason;
/**
* 是否申请人确认缴费
*/
private Boolean applicantConfirm=true;
} }
@@ -144,6 +144,27 @@ public class MsSealSignRecord {
@Column(name = "position_ypsn_medi") @Column(name = "position_ypsn_medi")
private double positionYpsnMedi; private double positionYpsnMedi;
/**
* 申请人签名状态
*/
@Column(name = "sign_status_apply")
private Integer signStatusApply;
/**
* 被申请人签名状态
*/
@Column(name = "sign_status_response")
private Integer signStatusResponse;
/**
* 调解员签名状态
*/
@Column(name = "sign_status_mediator")
private Integer signStatusMediator;
/**
* 用印状态
*/
@Column(name = "seal_status")
private Integer sealStatus;
} }
@@ -154,4 +154,14 @@ public class MsCaseAffiliate {
*/ */
@Column(name = "is_sign_respon") @Column(name = "is_sign_respon")
private Integer isSignRespon; private Integer isSignRespon;
/**
* 身份类别,0-身份证,1-护照,默认0
*/
@Column(name = "id_type")
private Integer idType;
/**
* 国籍,0-国内,1-国外,默认0
*/
@Column(name = "nationality")
private Integer nationality;
} }
@@ -99,7 +99,7 @@ public class MsCaseApplication {
private String payType; private String payType;
/** /**
* 调解结果,1达成调解,2未达成调解,3未达成调解但不再争议,4未达成调解但同意引入仲裁 * 调解结果,1达成调解,2未达成调解,3未达成调解但不再争议,4未达成调解但同意引入仲裁,5-达成和解
*/ */
@Column(name = "media_result") @Column(name = "media_result")
private Integer mediaResult; private Integer mediaResult;
@@ -73,8 +73,8 @@ public class MsCaseAttach {
private Long sealStatus; private Long sealStatus;
/** /**
* 是否是证据上传,0-否,1-是 * onlyOffice附件id
*/ */
@Column(name = "is_batch_upload") @Column(name = "only_office_file_id")
private Long isBatchUpload; private String onlyOfficeFileId;
} }
@@ -0,0 +1,69 @@
package com.ruoyi.wisdomarbitrate.domain.entity.mscase;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Getter
@Setter
@ToString
@Table(name = "ms_case_audit")
public class MsCaseAudit {
@Id
@GeneratedValue(generator = "JDBC")
private Long id;
/**
* 案件申请id
*/
@Column(name = "case_appli_id")
private Long caseAppliId;
/**
* 案件节点
*/
@Column(name = "case_node")
private Integer caseNode;
/**
* 案件状态
*/
@Column(name = "case_status_name")
private String caseStatusName;
/**
* 是否同意,0-拒绝,1-同意,默认1同意
*/
@Column(name = "yes_or_no")
private Integer yesOrNo;
/**
* 操作人用户名
*/
@Column(name = "create_by")
private String createBy;
/**
* 操作人用户昵称
*/
@Column(name = "create_nick_name")
private String createNickName;
/**
* 创建时间
*/
@Column(name = "create_time")
private Date createTime;
/**
* 拒绝原因
*/
@Column(name = "reason")
private String reason;
}
@@ -8,7 +8,7 @@ import java.util.List;
public class StringIdsReq { public class StringIdsReq {
private List<String> ids; private List<String> ids;
/** /**
* 签署人账号(即仲裁员手机号) * 签署人账号(即调解员手机号)
*/ */
private String psnAccount; private String psnAccount;
/** /**
@@ -2,7 +2,6 @@ package com.ruoyi.wisdomarbitrate.domain.vo.mscase;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAffiliate; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAffiliate;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach;
import lombok.Data; import lombok.Data;
@@ -40,13 +39,13 @@ public class CaseApplicationVO {
/** 立案日期 */ /** 立案日期 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date registerDate; private Date registerDate;
/** 仲裁方式 */ /** 调解方式 */
private Integer arbitratMethod; private Integer arbitratMethod;
/** /**
* 是否导入,0手动录入,1导入,默认0 * 是否导入,0手动录入,1导入,默认0
*/ */
private Integer importFlag; private Integer importFlag;
/** 仲裁方式名称 */ /** 调解方式名称 */
private String arbitratMethodName; private String arbitratMethodName;
/** 案件状态 */ /** 案件状态 */
@@ -60,7 +59,7 @@ public class CaseApplicationVO {
private Integer respondentIsWrittenHear; private Integer respondentIsWrittenHear;
/** 开庭方式是否一致 */ /** 开庭方式是否一致 */
private Integer arbitraMethodIssame; private Integer arbitraMethodIssame;
/** 仲裁方式说明 */ /** 调解方式说明 */
private String arbitratMethodIllustrate; private String arbitratMethodIllustrate;
@@ -0,0 +1,30 @@
package com.ruoyi.wisdomarbitrate.domain.vo.mscase;
import lombok.Data;
/**
* @Classname CaseToDoCount
* @Description 代办案件数量
* @Version 1.0.0
* @Date 2024/1/15 15:48
* @Created wangqiong
*/
@Data
public class CaseToDoCount {
/**
* 流程表id
*/
private Integer caseFlowId;
/**
* 流程状态
*/
private String caseStatusName;
/**
* 数量
*/
private Long caseCount;
/**
* base64
*/
private String fileName;
}
@@ -0,0 +1,21 @@
package com.ruoyi.wisdomarbitrate.domain.vo.mscase;
import lombok.Data;
import java.util.List;
/**
* @Classname CaseToDoCountVO
* @Description 代办案件数量返回VO
* @Version 1.0.0
* @Date 2024/1/15 15:48
* @Created wangqiong
*/
@Data
public class CaseToDoCountVO {
/**
* 待办数量
*/
private List<CaseToDoCount> toDoCountList;
}
@@ -31,4 +31,8 @@ public class MediatorVO {
* 已办数量 * 已办数量
*/ */
private Long completeAmount; private Long completeAmount;
/**
* 是否回显,true为回显,false为不回显
*/
private Boolean EchoFlag=false;
} }
@@ -35,7 +35,7 @@ public class MsCaseApplicationReq {
/** /**
* 申请机构 * 申请机构
*/ */
private String applicationOrganId; private List<Long> applicationOrganIds;
/** /**
* 是否申请人,不为空则是申请人 * 是否申请人,不为空则是申请人
*/ */
@@ -95,9 +95,17 @@ public class MsCaseApplicationReq {
* 是否小程序,1-是 * 是否小程序,1-是
*/ */
private Integer miniProgressFlag ; private Integer miniProgressFlag ;
/**
* 是否线上调解,1-线上调解
*/
private Integer mediationMethod ;
/** /**
* 附件 * 附件
*/ */
private List<MsCaseAttach> attachList; private List<MsCaseAttach> attachList;
/**
* 代理人电话
*/
private String contactTelphoneAgent;
} }
@@ -1,5 +1,6 @@
package com.ruoyi.wisdomarbitrate.domain.vo.mscase; package com.ruoyi.wisdomarbitrate.domain.vo.mscase;
import com.fasterxml.jackson.annotation.JsonFormat;
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.MsCaseApplication;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach;
@@ -7,6 +8,7 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@@ -65,6 +67,22 @@ public class MsCaseApplicationVO extends MsCaseApplication {
* 拒绝原因 * 拒绝原因
*/ */
private String rejectReason; private String rejectReason;
/**
* 调解方式名称,1-线上调解,2-线下调解
*/
private String mediationMethodName;
/**
* 缴费拒绝原因
*/
private String reason;
/**
* 签名按钮显示,0-显示,1-不显示
*/
private Integer signButtonFlag;
/**
* 结束时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime;
} }
@@ -0,0 +1,19 @@
package com.ruoyi.wisdomarbitrate.domain.vo.mscase;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Classname MsCaseBatchInsertVO
* @Description 批量新增案件
* @Version 1.0.0
* @Date 2024/3/11 10:04
* @Created wangqiong
*/
@Data
public class MsCaseBatchInsertVO implements Serializable {
private static final long serialVersionUID = 1L;
private List<MsCaseApplicationVO> list;
}
@@ -64,6 +64,10 @@ public class MsCaseLogRecordVO {
*/ */
private String content; private String content;
private Integer nodeId;
private Integer sort;
@@ -3,6 +3,7 @@ package com.ruoyi.wisdomarbitrate.mapper.dept;
import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify; import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.entity.Example;
import java.util.List; import java.util.List;
@@ -24,4 +25,5 @@ public interface DeptIdentifyMapper {
* @return * @return
*/ */
String selectById(@Param("id") Long identifyId); String selectById(@Param("id") Long identifyId);
} }
@@ -1,6 +1,7 @@
package com.ruoyi.wisdomarbitrate.mapper.mscase; package com.ruoyi.wisdomarbitrate.mapper.mscase;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseApplication; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseApplication;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.CaseToDoCount;
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.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -34,10 +35,24 @@ public interface MsCaseApplicationMapper extends Mapper<MsCaseApplication> {
* @param caseStatusNames * @param caseStatusNames
* @return * @return
*/ */
@Select("<script> select t.* from (select c.id,c.room_id roomId,c.mediation_method mediationMethod,0 AS pendingStatus,c.case_flow_id caseFlowId,c.batch_number batchNumber,c.case_num caseNum,c.case_subject_amount caseSubjectAmount," + @Select("<script> select t.* from (select c.media_result mediaResult,c.id,c.room_id roomId,c.mediation_method mediationMethod," +
" CASE c.mediation_method when 1 then '线上调解' when 2 then '线下调解' ELSE '' END mediationMethodName,"
+
"0 AS pendingStatus,c.case_flow_id caseFlowId,c.batch_number batchNumber,c.case_num caseNum,c.case_subject_amount caseSubjectAmount," +
"a.application_name applicationName,a.respondent_name respondentName,c.mediator_name mediatorName," + "a.application_name applicationName,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=\"req.mediatorId != null \">" +
" AND c.mediator_id = #{req.mediatorId} " +
"</if> "
+
"<if test='req.applicantFlag != null and req.applicationOrganIds != null and req.applicationOrganIds.size() > 0 '> and (a.application_id in" +
"<foreach item='organId' index='index' collection='req.applicationOrganIds' open='(' separator=',' close=')'>" +
"#{organId}" +
"</foreach> or a.contact_telphone_agent=#{req.contactTelphoneAgent} )" +
"</if> "
+
"<if test='caseStatusNames != null and caseStatusNames.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='caseStatusNames' open='(' separator=',' close=')'>" + "<foreach item='caseStatus' index='index' collection='caseStatusNames' open='(' separator=',' close=')'>" +
"#{caseStatus}" + "#{caseStatus}" +
@@ -48,9 +63,14 @@ public interface MsCaseApplicationMapper extends Mapper<MsCaseApplication> {
"</if> " + "</if> " +
"<if test=\"req.caseFlowId != null \">" + "<if test=\"req.caseFlowId != null \">" +
" AND c.case_flow_id = #{req.caseFlowId} " + " AND c.case_flow_id = #{req.caseFlowId} " +
"</if> " + "</if> "
+
"<if test=\"req.mediationMethod != null \">" +
" AND c.mediation_method = #{req.mediationMethod} " +
"</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 like concat('%', #{req.caseNum}, '%') "+
"</if> " "</if> "
+ "<if test=\"req.respondentIdentityNum != null and req.respondentIdentityNum != ''\">" + + "<if test=\"req.respondentIdentityNum != null and req.respondentIdentityNum != ''\">" +
" AND a.respondent_identity_num = #{req.respondentIdentityNum} " + " AND a.respondent_identity_num = #{req.respondentIdentityNum} " +
@@ -61,13 +81,32 @@ 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.room_id roomId,c.mediation_method mediationMethod,1 AS pendingStatus,c.case_flow_id caseFlowId,c.batch_number batchNumber,c.case_num caseNum,c.case_subject_amount caseSubjectAmount," + "union select c.media_result mediaResult,c.id id,c.room_id roomId,c.mediation_method mediationMethod,"
+
" CASE c.mediation_method when 1 then '线上调解' when 2 then '线下调解' ELSE '' END mediationMethodName,"
+
"1 AS pendingStatus,c.case_flow_id caseFlowId,c.batch_number batchNumber,c.case_num caseNum,c.case_subject_amount caseSubjectAmount," +
"a.application_name applicationName,a.respondent_name respondentName,c.mediator_name mediatorName," + "a.application_name applicationName,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 " + "join ms_case_application c on r.case_appli_id=c.id " +
"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=\"req.mediatorId != null \">" +
" AND c1.mediator_id = #{req.mediatorId} " +
"</if> "
+
"<if test=\"req.mediationMethod != null \">" +
" AND c1.mediation_method = #{req.mediationMethod} " +
"</if> "
+
"<if test='req.applicantFlag != null and req.applicationOrganIds != null and req.applicationOrganIds.size() > 0 '> and (a.application_id in" +
"<foreach item='organId' index='index' collection='req.applicationOrganIds' open='(' separator=',' close=')'>" +
"#{organId}" +
"</foreach> or a.contact_telphone_agent=#{req.contactTelphoneAgent} )" +
"</if> "
+
"<if test='caseStatusNames != null and caseStatusNames.size() > 0 '> and c1.case_status_name in" + "<if test='caseStatusNames != null and caseStatusNames.size() > 0 '> and c1.case_status_name in" +
"<foreach item='caseStatus' index='index' collection='caseStatusNames' open='(' separator=',' close=')'>" + "<foreach item='caseStatus' index='index' collection='caseStatusNames' open='(' separator=',' close=')'>" +
"#{caseStatus}" + "#{caseStatus}" +
@@ -78,7 +117,7 @@ public interface MsCaseApplicationMapper extends Mapper<MsCaseApplication> {
" AND c1.case_flow_id = #{req.caseFlowId} " + " AND c1.case_flow_id = #{req.caseFlowId} " +
"</if> " + "</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 like concat('%', #{req.caseNum}, '%') " +
"</if> " "</if> "
+ "<if test=\"req.respondentIdentityNum != null and req.respondentIdentityNum != ''\">" + + "<if test=\"req.respondentIdentityNum != null and req.respondentIdentityNum != ''\">" +
" AND a1.respondent_identity_num = #{req.respondentIdentityNum} " + " AND a1.respondent_identity_num = #{req.respondentIdentityNum} " +
@@ -95,7 +134,7 @@ public interface MsCaseApplicationMapper extends Mapper<MsCaseApplication> {
" AND c.case_flow_id = #{req.caseFlowId} " + " AND c.case_flow_id = #{req.caseFlowId} " +
"</if> " + "</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 like concat('%', #{req.caseNum}, '%')" +
"</if> " "</if> "
+ "<if test=\"req.respondentIdentityNum != null and req.respondentIdentityNum != ''\">" + + "<if test=\"req.respondentIdentityNum != null and req.respondentIdentityNum != ''\">" +
" AND a.respondent_identity_num = #{req.respondentIdentityNum} " + " AND a.respondent_identity_num = #{req.respondentIdentityNum} " +
@@ -122,4 +161,47 @@ public interface MsCaseApplicationMapper extends Mapper<MsCaseApplication> {
*/ */
@Select("select max(room_id) maxRoomId from ms_reserved_conference") @Select("select max(room_id) maxRoomId from ms_reserved_conference")
Long selectMaxRoomId(); Long selectMaxRoomId();
/**
* 待办数量
* @param o
* @return
*/
@Select(" <script> SELECT c.case_flow_id caseFlowId,count(c.id) caseCount " +
"FROM ms_case_application c " +
"join ms_case_affiliate a on c.id=a.case_appli_id <where> " +
"<if test=\"req.mediatorId != null \">" +
" AND c.mediator_id = #{req.mediatorId} " +
"</if> "
+
"<if test='req.applicantFlag != null and req.applicationOrganIds != null and req.applicationOrganIds.size() > 0 '> and (a.application_id in" +
"<foreach item='organId' index='index' collection='req.applicationOrganIds' open='(' separator=',' close=')'>" +
"#{organId}" +
"</foreach> or a.contact_telphone_agent=#{req.contactTelphoneAgent} )" +
"</if> "
+
"<if test='caseStatusNames != null and caseStatusNames.size() > 0 '> and c.case_status_name in" +
"<foreach item='caseStatus' index='index' collection='caseStatusNames' open='(' separator=',' close=')'>" +
"#{caseStatus}" +
"</foreach>" +
"</if> " +
"<if test=\"req.batchNumber != null and req.batchNumber != ''\">" +
" AND c.batch_number = #{req.batchNumber} " +
"</if> " +
"<if test=\"req.caseFlowId != null \">" +
" AND c.case_flow_id = #{req.caseFlowId} " +
"</if> "
+
"<if test=\"req.mediationMethod != null \">" +
" AND c.mediation_method = #{req.mediationMethod} " +
"</if> "
+ "<if test=\"req.respondentIdentityNum != null and req.respondentIdentityNum != ''\">" +
" AND a.respondent_identity_num = #{req.respondentIdentityNum} " +
"</if> "
+
" </where> " +
"group by c.case_flow_id,c.case_status_name"+
" </script>"
)
List<CaseToDoCount> todoCount(@Param("req")MsCaseApplicationReq req, @Param("caseStatusNames") List<String> caseStatusNames);
} }
@@ -35,7 +35,18 @@ public interface MsCaseAttachMapper {
*/ */
void deleteByCasedIdAndType(@Param("caseAppliId")Long caseAppliId,@Param("annexType") int annexType,@Param("isBatchUpload") int isBatchUpload); void deleteByCasedIdAndType(@Param("caseAppliId")Long caseAppliId,@Param("annexType") int annexType,@Param("isBatchUpload") int isBatchUpload);
void deleteCaseAttachByCasedIdAndType(@Param("caseAppliId")Long caseAppliId,@Param("annexType") int annexType); void deleteCaseAttachByCasedIdAndType(@Param("caseAppliId")Long caseAppliId,@Param("annexType") Integer annexType);
/**
* 批量删除
* @param ids
*/
void batchDelete(@Param("ids")List<Long> ids);
/**
* 根据附件名查找数量
* @param fileName
* @return
*/
int countByfileName(@Param("annexName") String fileName,@Param("caseAppliId") Long caseAppliId);
} }
@@ -0,0 +1,17 @@
package com.ruoyi.wisdomarbitrate.mapper.mscase;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAudit;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;
public interface MsCaseAuditMapper extends Mapper<MsCaseAudit> {
/**
* 查询拒绝原因
* @param id
* @param caseFlowId
* @return
*/
@Select("select reason from ms_case_audit where case_appli_id=#{caseAppliId} and case_node=#{caseFlowId} order by id desc limit 1")
String selectByCaseId(@Param("caseAppliId") Long id, @Param("caseFlowId") Integer caseFlowId);
}
@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.Date;
import java.util.List; import java.util.List;
public interface MsCaseLogRecordMapper extends Mapper<MsCaseLogRecord> { public interface MsCaseLogRecordMapper extends Mapper<MsCaseLogRecord> {
@@ -16,32 +17,30 @@ public interface MsCaseLogRecordMapper extends Mapper<MsCaseLogRecord> {
*/ */
List<MsCaseLogRecord> selectCompleteByCreateBy(@Param("list") List<String> list); List<MsCaseLogRecord> selectCompleteByCreateBy(@Param("list") List<String> list);
@Select("<script> select cl.case_node caseNode ,cl.case_node_time caseNodeTime ,cl.notes ,cl.id ,cl.case_appli_id caseAppliId," +
" cl.create_by createBy,cl.create_nick_name createNickName,cl.create_time createTime, " + @Select("<script> select cl.case_node caseNode ,cl.case_status_name caseStatusName ,cl.case_node_time caseNodeTime , cl.notes , " +
" CASE cl.case_node when 0 then '新增案件' " + " cl.id ,cl.case_appli_id caseAppliId ,cl.create_by createBy ,cl.create_nick_name createNickName, " +
"when 1 then '提交案件' when 2 then '缴费' " + " cl.create_time createTime ,f.node_name content " +
" when 3 then '确认缴费' when 4 then '受理分配' when 5 then '选择调解员' " + " from ms_case_log_record cl left join ms_case_flow f " +
" when 6 then '核实调解员' when 7 then '确认调解员' when 8 then '确定调解时间' " + " on cl.case_node = f.node_id " +
" when 9 then '调解' when 10 then '确认调解书' when 11 then '签名' " + " <where> " +
" when 12 then '用印申请' when 13 then '用印' when 14 then '归档' " + " <if test=\"caseLogRecord.caseAppliId != null and caseLogRecord.caseAppliId != ''\">" +
" when 15 then '签收' when 16 then '结束' " + " AND cl.case_appli_id = #{caseLogRecord.caseAppliId} " +
" ELSE '无案件状态' " + " </if> " +
" END content, " + " </where> " +
" CASE cl.case_node when 1 then '申请人' when 2 then '申请人' " + " order by create_time asc " +
" when 3 then '财务' when 4 then '法律顾问' when 5 then '申请人' " + " </script>")
" when 6 then '法律顾问' when 7 then '部门长' when 8 then '法律顾问' " +
" when 9 then '法律顾问' when 10 then '申请人' when 11 then '申请人' " +
" when 12 then '法律顾问' when 13 then '部门长' when 14 then '法律顾问' " +
" when 15 then '申请人' when 16 then '无角色' " +
" ELSE '无角色' " +
" END roleName " +
" from ms_case_log_record cl " +
" <where> " +
" <if test=\"caseLogRecord.caseAppliId != null and caseLogRecord.caseAppliId != ''\">" +
" AND cl.case_appli_id = #{caseLogRecord.caseAppliId} " +
" </if> " +
" </where> " +
" order by create_time asc " +
" </script>")
List<MsCaseLogRecordVO> selectCaseLogRecordList(@Param("caseLogRecord") MsCaseLogRecord caseLogRecord); List<MsCaseLogRecordVO> selectCaseLogRecordList(@Param("caseLogRecord") MsCaseLogRecord caseLogRecord);
@Select("SELECT group_concat( DISTINCT t.createNickName) createNickName,t.nodeName content,t.nodeId,t.sort ,t.caseStatusName FROM (SELECT l.create_nick_name createNickName ,f.node_name nodeName,f.node_id nodeId, f.sort, f.case_status_name caseStatusName FROM ms_case_log_record l left join ms_case_flow f on l.case_node = f.node_id WHERE l.case_appli_id = #{caseAppliId} and f.node_name is not null ) t group by t.nodeName,t.nodeId,t.sort ,t.caseStatusName order by t.sort ")
List<MsCaseLogRecordVO> selectCaseLogRecordListCaseProgress(Long caseAppliId);
/**
* 根据案件id查询结束时间
* @param caseAppliId
* @param caseStatusName
* @return
*/
@Select("SELECT create_time endTime FROM ms_case_log_record where case_appli_id=#{caseAppliId} and case_status_name=#{caseStatusName} order by create_time desc limit 1")
Date selectEndTimeByCaseId(@Param("caseAppliId") Long caseAppliId, @Param("caseStatusName") String caseStatusName);
} }
@@ -9,6 +9,7 @@ import java.util.List;
@Mapper @Mapper
public interface TemplateManageMapper { public interface TemplateManageMapper {
List<TemplateManage> selectTemplateList(TemplateManage templateManage); List<TemplateManage> selectTemplateList(TemplateManage templateManage);
List<TemplateManage> selectTemplateListByIds(@Param("fileIds") List<Long> fileIds);
int insertTemplateManage(TemplateManage templateManage); int insertTemplateManage(TemplateManage templateManage);
@@ -56,6 +57,13 @@ public interface TemplateManageMapper {
*/ */
void deleteTemplateManageFileById(@Param("id")Long id, @Param("fileIds")List<Long> annexIds); void deleteTemplateManageFileById(@Param("id")Long id, @Param("fileIds")List<Long> annexIds);
/**
* 根据id和附件类型删除
* @param id
* @param types
*/
void deleteTemplateManageFileByIdAndType(@Param("id")Long id, @Param("types")List<Integer> types);
/** /**
* 根据模板id和类型查询 * 根据模板id和类型查询
* @param templateId * @param templateId
@@ -78,4 +86,11 @@ public interface TemplateManageMapper {
* @return * @return
*/ */
List<TemplateManage> selectTemplateListById(@Param("id")Long id); List<TemplateManage> selectTemplateListById(@Param("id")Long id);
/**
* 根据调解机构代码查询模板id
* @param creditCode
* @return
*/
Long selectByCreditCode(@Param("creditCode")long creditCode);
} }
@@ -427,11 +427,20 @@ public class DeptIdentifyServiceImpl implements IDeptIdentifyService {
Long id = templateManage.getId(); Long id = templateManage.getId();
templateManage.setUpdateBy(getUsername()); templateManage.setUpdateBy(getUsername());
int i = templateManageMapper.updateTemplateManage(templateManage); int i = templateManageMapper.updateTemplateManage(templateManage);
// 先删除附件 // 先删除附件
if (CollectionUtil.isNotEmpty(templateManage.getAnnexIds())) { if (CollectionUtil.isNotEmpty(templateManage.getAnnexIds())) {
templateManageMapper.deleteTemplateManageFileById(id, templateManage.getAnnexIds()); // 根据附件id查询附件类型
// 修改附件表 List<TemplateManage> templateManages = templateManageMapper.selectTemplateListByIds(templateManage.getAnnexIds());
templateManageMapper.updateFileByIds(templateManage); if(CollectionUtil.isNotEmpty(templateManages)) {
List<Integer> types = templateManages.stream().map(TemplateManage::getTemType).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(types)) {
// 根据模板id和类型删除附件
templateManageMapper.deleteTemplateManageFileByIdAndType(id, types);
// 修改附件表
templateManageMapper.updateFileByIds(templateManage);
}
}
} }
if (i > 0) { if (i > 0) {
@@ -641,6 +650,7 @@ public class DeptIdentifyServiceImpl implements IDeptIdentifyService {
ajax.put("temName",list.get(0).getTemName()); ajax.put("temName",list.get(0).getTemName());
// 调节申请书 // 调节申请书
ajax.put("applicationFile",manageMap.get(TemplateTypeEnum.MEDIATION_APPLICATION.getCode())); ajax.put("applicationFile",manageMap.get(TemplateTypeEnum.MEDIATION_APPLICATION.getCode()));
ajax.put("personApplicationFile",manageMap.get(TemplateTypeEnum.PERSON_MEDIATION_APPLICATION.getCode()));
// 和解协议 // 和解协议
ajax.put("agreementFile",manageMap.get(TemplateTypeEnum.MEDIATION_AGREEMENT.getCode())); ajax.put("agreementFile",manageMap.get(TemplateTypeEnum.MEDIATION_AGREEMENT.getCode()));
// 调解书 // 调解书
@@ -123,10 +123,10 @@ public class WeChatUserServiceImpl implements WeChatUserService {
// 根据身份证查询系统用户表中是否存在该用户,存在则同步已认证的信息,不存在则新增 // 根据身份证查询系统用户表中是否存在该用户,存在则同步已认证的信息,不存在则新增
SysUser sysUser=sysUserMapper.selectUserByIdCard(ientityAuthentication.getIdentityNo()); SysUser sysUser=sysUserMapper.selectUserByIdCard(ientityAuthentication.getIdentityNo());
// 查询角色 // 查询角色
Long roleIdByName = roleMapper.selectRoleIdByName("被申请人"); Long roleIdByName =ientityAuthentication.getRoleId();
if(roleIdByName==null){ // if(roleIdByName==null){
return AjaxResult.warn("被申请人角色不存在,请联系系统管理员新增角色"); // return AjaxResult.warn("被申请人角色不存在,请联系系统管理员新增角色");
} // }
if(sysUser!=null){ if(sysUser!=null){
sysUser.setIdCard(ientityAuthentication.getIdentityNo()); sysUser.setIdCard(ientityAuthentication.getIdentityNo());
sysUser.setNickName(ientityAuthentication.getName()); sysUser.setNickName(ientityAuthentication.getName());
@@ -137,7 +137,7 @@ public class WeChatUserServiceImpl implements WeChatUserService {
sysUserMapper.updateUser(sysUser); sysUserMapper.updateUser(sysUser);
ientityAuthentication.setUserId(sysUser.getUserId()); ientityAuthentication.setUserId(sysUser.getUserId());
int count=0; int count=0;
if(CollectionUtil.isNotEmpty(sysUser.getRoles()) ){ if(CollectionUtil.isNotEmpty(sysUser.getRoles()) && roleIdByName!=null){
for (SysRole role : sysUser.getRoles()) { for (SysRole role : sysUser.getRoles()) {
if(Objects.equals(role.getRoleId(), roleIdByName)){ if(Objects.equals(role.getRoleId(), roleIdByName)){
@@ -147,8 +147,10 @@ public class WeChatUserServiceImpl implements WeChatUserService {
} }
} }
if(CollectionUtil.isEmpty(sysUser.getRoles())||count==0){ if(CollectionUtil.isEmpty(sysUser.getRoles())||count==0){
if(roleIdByName!=null) {
// 用户未关联被申请人角色,关联角色 // 用户未关联被申请人角色,关联角色
userRoleMapper.insertUserRole(sysUser.getUserId(), roleIdByName); userRoleMapper.insertUserRole(sysUser.getUserId(), roleIdByName);
}
} }
}else { }else {
@@ -159,13 +161,17 @@ public class WeChatUserServiceImpl implements WeChatUserService {
sysUser.setPhonenumber(ientityAuthentication.getPhone()); sysUser.setPhonenumber(ientityAuthentication.getPhone());
sysUser.setEmail(ientityAuthentication.getEmail()); sysUser.setEmail(ientityAuthentication.getEmail());
sysUser.setCreateBy(ientityAuthentication.getUserName()); sysUser.setCreateBy(ientityAuthentication.getUserName());
sysUser.setIdType(ientityAuthentication.getIdType());
sysUser.setNationality(ientityAuthentication.getNationality());
sysUser.setPassword(SecurityUtils.encryptPassword(ientityAuthentication.getPassWord())); sysUser.setPassword(SecurityUtils.encryptPassword(ientityAuthentication.getPassWord()));
int row = sysUserMapper.insertUser(sysUser); int row = sysUserMapper.insertUser(sysUser);
if(row<1) { if(row<1) {
return AjaxResult.warn("注册失败"); return AjaxResult.warn("注册失败");
} }
// 用户关联被申请人角色 if(roleIdByName!=null) {
userRoleMapper.insertUserRole(sysUser.getUserId(), roleIdByName); // 用户关联被申请人角色
userRoleMapper.insertUserRole(sysUser.getUserId(), roleIdByName);
}
} }
ientityAuthentication.setUserId(sysUser.getUserId()); ientityAuthentication.setUserId(sysUser.getUserId());
@@ -1,16 +1,16 @@
package com.ruoyi.wisdomarbitrate.service.mscase; package com.ruoyi.wisdomarbitrate.service.mscase;
import com.alibaba.fastjson.JSONArray;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.EsignDemoException; import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.system.domain.entity.flow.MsCaseFlow; import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
import com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SmsSendRecord;
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.MsCaseApplication;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.BookingVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.*;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationReq;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseAttachVO;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
@@ -30,20 +30,38 @@ public interface MsCaseApplicationService {
* @return * @return
*/ */
List<MsCaseApplicationVO> list(MsCaseApplicationReq req); List<MsCaseApplicationVO> list(MsCaseApplicationReq req);
/**
* 首页待办数量
* @return
*/
CaseToDoCountVO todoCount();
/** /**
* 根据id查询案件 * 根据id查询案件
* @param id * @param id
* @return * @return
*/ */
MsCaseApplicationVO selectById(Long id); MsCaseApplicationVO selectById(Long id ,String caseNum );
/** /**
* 新增案件 * 新增案件
* @param caseApplication * @param caseApplication
* @return * @return
*/ */
int insert(MsCaseApplicationVO caseApplication); String insert(MsCaseApplicationVO caseApplication);
/**
* 新增案件
* @param caseApplication
* @param caseFlow
*/
String insert(MsCaseApplicationVO caseApplication, MsCaseFlow caseFlow);
/**
* 批量新增案件
* @param vo
* @return
*/
AjaxResult batchInsert(MsCaseBatchInsertVO vo);
/** /**
* 新增用户 * 新增用户
* @param affiliate * @param affiliate
@@ -72,6 +90,13 @@ public interface MsCaseApplicationService {
*/ */
AjaxResult uploadCaseZipFile(MultipartFile file, Long templateId); AjaxResult uploadCaseZipFile(MultipartFile file, Long templateId);
/**
* 用户信息压缩包导入
* @param file
* @return
*/
AjaxResult userIdentify(MultipartFile file);
/** /**
* 生成调解申请书 * 生成调解申请书
* @param req * @param req
@@ -125,12 +150,18 @@ public interface MsCaseApplicationService {
* @return * @return
*/ */
AjaxResult submit(MsCaseApplication req); AjaxResult submit(MsCaseApplication req);
/**
* 删除案件
* @param req
* @return
*/
AjaxResult delete(MsCaseApplication req);
/** /**
* 查询调解员 * 查询调解员
* @return * @return
*/ */
AjaxResult listMediator(); AjaxResult listMediator(Long caseAppliId);
/** /**
* 保存预约 * 保存预约
* @param * @param
@@ -158,6 +189,12 @@ public interface MsCaseApplicationService {
* @return * @return
*/ */
AjaxResult mediation(MsCaseApplicationReq req) throws EsignDemoException, InterruptedException; AjaxResult mediation(MsCaseApplicationReq req) throws EsignDemoException, InterruptedException;
/**
* 确定会议结果
* @param req
* @return
*/
AjaxResult confirmMeetingResult(MsCaseApplicationReq req);
/** /**
* 修改庭审笔录 * 修改庭审笔录
@@ -183,6 +220,11 @@ public interface MsCaseApplicationService {
* @param dictDataList 内置字段 * @param dictDataList 内置字段
*/ */
void createMediateApplication(MsCaseApplication application, MsCaseAffiliate affiliate, String templatePath, List<String> bookmarkList, List<SysDictData> dictDataList, Integer templateType) ; void createMediateApplication(MsCaseApplication application, MsCaseAffiliate affiliate, String templatePath, List<String> bookmarkList, List<SysDictData> dictDataList, Integer templateType) ;
/**
* 调解书上传到onlyoffice服务器
* @param annexPath
*/
JSONArray uploadOnlyOffice(String annexPath,Long id);
/** /**
* 案件受理 * 案件受理
* @param application * @param application
@@ -208,4 +250,22 @@ public interface MsCaseApplicationService {
* @param caseId * @param caseId
*/ */
void notAccept(String caseId,String reason); void notAccept(String caseId,String reason);
/**
* 根据登录人返回用户信息
*/
SysUser getUserInfo();
/**
* 查询短信发送记录
* @param smsSendRecord
* @return
*/
List<SmsSendRecord> getSmsSendRecord(SmsSendRecord smsSendRecord);
/**
* 保存onlyOffice在线编辑的文件
* @param
* @return
*/
AjaxResult saveOnlyOfficeFile(MsCaseAttach caseAttach);
} }
@@ -47,7 +47,14 @@ public interface MsCasePaymentService {
* @param nextFlow * @param nextFlow
* @param application * @param application
*/ */
public void confirmPaid(MsCaseFlow currentFlow, MsCaseFlow nextFlow, MsCaseApplication application); public void confirmPaid(CaseConfirmPayDTO dto,MsCaseFlow currentFlow, MsCaseFlow nextFlow, MsCaseApplication application);
/**
* 被申请人确认已缴费
* @param dto
* @return
*/
AjaxResult resConfirmPaid(CaseConfirmPayDTO dto);
/** /**
* 确认缴费 * 确认缴费
* *
@@ -7,6 +7,7 @@ import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseLogRecordVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseLogRecordVO;
import java.io.IOException;
import java.util.List; import java.util.List;
public interface MsSignSealService { public interface MsSignSealService {
@@ -34,4 +35,8 @@ public interface MsSignSealService {
AjaxResult msCaseSignUrlApplyAPP(MsSignSealDTO dto) throws EsignDemoException; AjaxResult msCaseSignUrlApplyAPP(MsSignSealDTO dto) throws EsignDemoException;
AjaxResult msCaseSignUrlResAPP(MsSignSealDTO dto) throws EsignDemoException; AjaxResult msCaseSignUrlResAPP(MsSignSealDTO dto) throws EsignDemoException;
AjaxResult signSeaalCaseApplicaCallback(String reqbodystr) throws EsignDemoException, IOException;
AjaxResult sealCheckCallback(String reqbodystr) throws EsignDemoException, IOException;
} }
@@ -5,13 +5,16 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import com.ruoyi.ElegentPay; import com.ruoyi.ElegentPay;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.AnnexTypeEnum; import com.ruoyi.common.enums.AnnexTypeEnum;
import com.ruoyi.common.enums.PaymentStatusEnum; import com.ruoyi.common.enums.PaymentStatusEnum;
import com.ruoyi.common.enums.YesOrNoEnum; import com.ruoyi.common.enums.YesOrNoEnum;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.SmsUtils; import com.ruoyi.common.utils.SmsUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.dto.PayRequest; import com.ruoyi.dto.PayRequest;
import com.ruoyi.dto.PayResponse; import com.ruoyi.dto.PayResponse;
import com.ruoyi.system.domain.entity.flow.MsCaseFlow; import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
@@ -19,15 +22,9 @@ import com.ruoyi.system.mapper.flow.MsCaseFlowMapper;
import com.ruoyi.wisdomarbitrate.domain.dto.mscase.CaseConfirmPayDTO; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.CaseConfirmPayDTO;
import com.ruoyi.wisdomarbitrate.domain.dto.mscase.CasePayDTO; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.CasePayDTO;
import com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SmsSendRecord; import com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SmsSendRecord;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAffiliate; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.*;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseApplication;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach;
import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCasePaymentRecord;
import com.ruoyi.wisdomarbitrate.domain.vo.mscase.PaymentDetailVO; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.PaymentDetailVO;
import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseAffiliateMapper; import com.ruoyi.wisdomarbitrate.mapper.mscase.*;
import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseApplicationMapper;
import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseAttachMapper;
import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCasePaymentRecordMapper;
import com.ruoyi.wisdomarbitrate.mapper.sendrecord.SmsRecordMapper; import com.ruoyi.wisdomarbitrate.mapper.sendrecord.SmsRecordMapper;
import com.ruoyi.wisdomarbitrate.service.mscase.MsCaseApplicationService; import com.ruoyi.wisdomarbitrate.service.mscase.MsCaseApplicationService;
import com.ruoyi.wisdomarbitrate.service.mscase.MsCasePaymentService; import com.ruoyi.wisdomarbitrate.service.mscase.MsCasePaymentService;
@@ -66,6 +63,8 @@ public class MsCasePaymentServiceImpl implements MsCasePaymentService {
MsCasePaymentService casePaymentService; MsCasePaymentService casePaymentService;
@Autowired @Autowired
private RedisCache redisCache; private RedisCache redisCache;
@Autowired
private MsCaseAuditMapper auditMapper;
@Override @Override
@@ -273,101 +272,212 @@ public class MsCasePaymentServiceImpl implements MsCasePaymentService {
if (currentFlow == null) { if (currentFlow == null) {
return AjaxResult.error("未找到当前流程节点"); return AjaxResult.error("未找到当前流程节点");
} }
MsCaseFlow flow =null;
// 如果同意,查找下一个流程节点,拒绝,查找上一个流程
if (dto.getYesOrNo().equals(YesOrNoEnum.YES.getCode())) {
// 同意,根据流程id查找下一个流程节点
flow = caseFlowMapper.nextFlow(dto.getCaseFlowId());
if (flow == null) {
return AjaxResult.error("未找到下一个流程节点");
}
} else {
if (currentFlow.getBackFlowId() == null) {
return AjaxResult.error("未找到驳回流程");
}
// 拒绝,查找驳回流程
flow = caseFlowMapper.selectByPrimaryKey(currentFlow.getBackFlowId());
if (flow == null) {
return AjaxResult.error("未找到驳回流程");
}
// 根据流程id查找下一个流程节点
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(dto.getCaseFlowId());
if (nextFlow == null) {
return AjaxResult.error("未找到下一个流程节点");
} }
if (StrUtil.isNotEmpty(dto.getBatchNumber())) { if (StrUtil.isNotEmpty(dto.getBatchNumber())) {
// 批量 // 批量
List<MsCaseApplication> applicationList = applicationService.listByBatchNumber(dto.getBatchNumber(), dto.getCaseFlowId()); List<MsCaseApplication> applicationList = applicationService.listByBatchNumber(dto.getBatchNumber(), dto.getCaseFlowId());
if(CollectionUtil.isEmpty(applicationList)){ if (CollectionUtil.isEmpty(applicationList)) {
return AjaxResult.error("该批号下未找到案件"); return AjaxResult.error("该批号下未找到案件");
} }
for (MsCaseApplication application : applicationList) { for (MsCaseApplication application : applicationList) {
casePaymentService.confirmPaid(currentFlow,nextFlow, application); casePaymentService.confirmPaid(dto, currentFlow, flow, application);
} }
}else { } else {
MsCaseApplication caseApplication=new MsCaseApplication(); MsCaseApplication caseApplication = new MsCaseApplication();
caseApplication.setId(dto.getCaseId()); caseApplication.setId(dto.getCaseId());
caseApplication.setLockStatus(YesOrNoEnum.YES.getCode()); caseApplication.setLockStatus(YesOrNoEnum.YES.getCode());
casePaymentService.confirmPaid(currentFlow,nextFlow,caseApplication ); casePaymentService.confirmPaid(dto, currentFlow, flow, caseApplication);
} }
return AjaxResult.success("确认缴费成功");
return AjaxResult.success();
} }
/** /**
* 确认已缴费 * 确认已缴费
* @param nextFlow * @param flow
* @param application * @param application
* @param * @param
*/ */
@Transactional @Transactional
public void confirmPaid(MsCaseFlow currentFlow,MsCaseFlow nextFlow, MsCaseApplication application) { public void confirmPaid(CaseConfirmPayDTO dto, MsCaseFlow currentFlow, MsCaseFlow flow, MsCaseApplication application) {
// 查询案件 // 查询案件
MsCaseApplication caseAppllication = caseApplicationMapper.selectByPrimaryKey(application.getId()); MsCaseApplication caseAppllication = caseApplicationMapper.selectByPrimaryKey(application.getId());
if(caseAppllication==null){ if (caseAppllication == null) {
throw new RuntimeException("未找到该案件"); throw new RuntimeException("未找到该案件");
} }
//更改记录表里的支付状态和支付时间 //更改记录表里的支付状态和支付时间
MsCasePaymentRecord casePaymentRecord = new MsCasePaymentRecord(); MsCasePaymentRecord casePaymentRecord = new MsCasePaymentRecord();
casePaymentRecord.setPaymentStatus(1); if (dto.getYesOrNo().equals(YesOrNoEnum.YES.getCode())) {
// 同意
casePaymentRecord.setPaymentStatus(1);
casePaymentRecord.setPaymentTime(new Date());
casePaymentRecord.setUpdateTime(new Date());
}else {
casePaymentRecord.setPaymentStatus(0);
}
casePaymentRecord.setCaseId(application.getId()); casePaymentRecord.setCaseId(application.getId());
casePaymentRecord.setPaymentTime(new Date());
casePaymentRecord.setUpdateTime(new Date());
Example example = new Example(MsCasePaymentRecord.class); Example example = new Example(MsCasePaymentRecord.class);
example.createCriteria().andEqualTo("caseId", casePaymentRecord.getCaseId()); example.createCriteria().andEqualTo("caseId", casePaymentRecord.getCaseId());casePaymentRecordMapper.updateByExampleSelective(casePaymentRecord, example);
casePaymentRecordMapper.updateByExampleSelective(casePaymentRecord,example);
// 更改案件流程id和案件状态 // 更改案件流程id和案件状态
application.setCaseFlowId(nextFlow.getId()); application.setCaseFlowId(flow.getId());
application.setCaseStatusName(nextFlow.getCaseStatusName()); application.setCaseStatusName(flow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(application); caseApplicationMapper.updateByPrimaryKeySelective(application);
// 将该案件存放到redis,5日之内如果案件状态还是待受理状态,则发送不受理通知书并自动结束 if (dto.getApplicantConfirm() && dto.getYesOrNo().equals(YesOrNoEnum.YES.getCode())) {
redisCache.setCacheObject(String.valueOf(application.getId()), application, Constants.CASE_ACCEPT_EXPIRATION, TimeUnit.DAYS); // 申请人确认缴费后将该案件存放到redis,5日之内如果案件状态还是待受理状态,则发送不受理通知书并自动结束
// redisCache.setCacheObject(CacheConstants.CASE_KEY+application.getId(), application, Constants.CASE_ACCEPT_EXPIRATION, TimeUnit.DAYS);
SpringUtils.getBean(RedisCache.class).setCacheObject(getVerifyCodeCacheKey(String.valueOf(application.getId())), application, Constants.CASE_ACCEPT_EXPIRATION, TimeUnit.DAYS);
}
// 新增日志 // 新增日志
CaseLogUtils.insertCaseLog(application.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(),"确认已缴费"); if (dto.getYesOrNo().equals(YesOrNoEnum.YES.getCode())) {
CaseLogUtils.insertCaseLog(application.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(), null);
}else {
CaseLogUtils.insertCaseLog(application.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(), "拒绝确认缴费,拒绝原因为:"+dto.getReason());
}
if (dto.getYesOrNo().equals(YesOrNoEnum.NO.getCode())) {
// 拒绝,新增审核记录
MsCaseAudit audit = new MsCaseAudit();
audit.setCaseNode(flow.getId());
audit.setCaseStatusName(flow.getCaseStatusName());
audit.setCaseAppliId(dto.getCaseId());
audit.setYesOrNo(dto.getYesOrNo());
audit.setReason(dto.getReason());
audit.setCreateTime(new Date());
if (SecurityUtils.getLoginUser().getUser() != null) {
audit.setCreateBy(SecurityUtils.getUsername());
audit.setCreateNickName(SecurityUtils.getLoginUser().getUser().getNickName());
}
auditMapper.insert(audit);
}
// 查询申请人电话,如果是自然人,代理人不为空,则给代理人发短信,代理人为空,给申请人发短信 // 查询申请人电话,如果是自然人,代理人不为空,则给代理人发短信,代理人为空,给申请人发短信
MsCaseAffiliate affiliate = caseAffiliateMapper.selectByPrimaryKey(application.getId()); MsCaseAffiliate affiliate = caseAffiliateMapper.selectByPrimaryKey(application.getId());
if(affiliate != null) { // 发送缴费通知
String phone=""; sendPaymentSms(dto,caseAppllication, affiliate,flow);
String userName="";
if(affiliate.getOrganizeFlag().equals(0)){
}
private static String getVerifyCodeCacheKey(String key) {
return CacheConstants.CASE_KEY + key;
}
/**
* 被申请人确认已缴费
* @param dto
* @return
*/
@Transactional
@Override
public AjaxResult resConfirmPaid(CaseConfirmPayDTO dto) {
dto.setApplicantConfirm(false);
confirmPaid(dto);
return AjaxResult.success();
}
/**
* 发送缴费短信
* @param dto
* @param caseAppllication
* @param affiliate
*/
private void sendPaymentSms(CaseConfirmPayDTO dto, MsCaseApplication caseAppllication, MsCaseAffiliate affiliate,MsCaseFlow flow) {
if (affiliate != null) {
// 受理通知
String phone = "";
String userName = "";
// 缴费通知
String payPhone = "";
String payUserName = "";
if (affiliate.getOrganizeFlag().equals(0)) {
// 自然人 // 自然人
if(StrUtil.isNotEmpty(affiliate.getContactTelphoneAgent())){ if (StrUtil.isNotEmpty(affiliate.getContactTelphoneAgent())) {
phone=affiliate.getContactTelphoneAgent(); phone = affiliate.getContactTelphoneAgent();
userName=affiliate.getNameAgent(); userName = affiliate.getNameAgent();
}else { } else {
phone=affiliate.getApplicationPhone(); phone = affiliate.getApplicationPhone();
userName=affiliate.getApplicationName(); userName = affiliate.getApplicationName();
} }
}else { } else {
phone=affiliate.getContactTelphoneAgent(); phone = affiliate.getContactTelphoneAgent();
userName=affiliate.getNameAgent(); userName = affiliate.getNameAgent();
} }
if(StrUtil.isNotEmpty(phone)) { if (StrUtil.isNotEmpty(phone)) {
// 发送短信 2051914 调解缴费成功通知 尊敬的{1},您的调解申请费用已缴费成功。 payPhone=phone;
Boolean smsFlag = SmsUtils.sendSms(affiliate.getCaseAppliId(), "2051914", phone, new String[]{userName}); payUserName=userName;
CaseLogUtils.insertCaseLog(application.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(), "申请人调解缴费成功通知短信,尊敬的" + userName + ",您的调解申请费用已缴费成功。"); if(!dto.getApplicantConfirm()) {
// 被申请人发送通知
payPhone=affiliate.getRespondentPhone();
payUserName=affiliate.getRespondentName();
}
Boolean smsFlag =true;
SmsSendRecord smsSendRecord=null;
// 申请人被申请人发送缴费成功短信 2051914 调解缴费成功通知 尊敬的{1},您的调解申请费用已缴费成功。
if (dto.getYesOrNo().equals(YesOrNoEnum.YES.getCode())) {
smsFlag = SmsUtils.sendSms(affiliate.getCaseAppliId(), "2051914", payPhone, new String[]{payUserName});
smsSendRecord = new SmsSendRecord(caseAppllication.getId(), caseAppllication.getCaseNum(), payPhone, new Date(), "尊敬的" + payUserName + ",您的调解申请费用已缴费成功。");
} else {
smsFlag = SmsUtils.sendSms(affiliate.getCaseAppliId(), "2074402", payPhone, new String[]{payUserName, caseAppllication.getCaseNum(), dto.getReason()});
// 2074402 调解系统确认缴费不通过通知 尊敬的{1}用户,您的{2}案件,确认缴费未通过,理由为{3},请知晓,如非本人操作,请忽略本短信
smsSendRecord = new SmsSendRecord(caseAppllication.getId(), caseAppllication.getCaseNum(), payPhone, new Date(), "尊敬的" + payUserName + "用户,您的" + caseAppllication.getCaseNum() + "案件,确认缴费未通过,理由为" + dto.getReason() + ",请知晓,如非本人操作,请忽略本短信");
}
// 新增短信记录 // 新增短信记录
SmsSendRecord smsSendRecord = new SmsSendRecord(application.getId(), caseAppllication.getCaseNum(), phone, new Date(), "尊敬的" + userName + ",您的调解申请费用已缴费成功。"); if (smsFlag) {
if(smsFlag){
smsSendRecord.setSendStatus(YesOrNoEnum.YES.getCode()); smsSendRecord.setSendStatus(YesOrNoEnum.YES.getCode());
}else { } else {
smsSendRecord.setSendStatus(YesOrNoEnum.NO.getCode()); smsSendRecord.setSendStatus(YesOrNoEnum.NO.getCode());
} }
smsRecordMapper.saveSmsSendRecord(smsSendRecord); smsRecordMapper.saveSmsSendRecord(smsSendRecord);
if(!dto.getApplicantConfirm()&& dto.getYesOrNo().equals(YesOrNoEnum.YES.getCode())) {
// 申请人发送受理短信
sendAcceptSms(dto, caseAppllication, userName, phone);
// 被申请人发送受理短信
sendAcceptSms(dto, caseAppllication, affiliate.getRespondentName(), affiliate.getRespondentPhone());
}
} }
} }
} }
/**
* 发送受理短信
* @param dto
* @param caseAppllication
*/
private void sendAcceptSms(CaseConfirmPayDTO dto, MsCaseApplication caseAppllication,String userName,String phone ) {
// 申请人被申请人发送受理通知书 2073601 尊敬的{1}用户,您的{2}案件,已成功受理,请知晓,如非本人操作,请忽略本短信。
Boolean smsFlag = SmsUtils.sendSms(caseAppllication.getId(), "2073601", phone, new String[]{userName, caseAppllication.getCaseNum()});
SmsSendRecord smsSendRecord = new SmsSendRecord(caseAppllication.getId(), caseAppllication.getCaseNum(), phone, new Date(), "尊敬的" + userName + "用户,您的" + caseAppllication.getCaseNum() + "案件,已成功受理,请知晓,如非本人操作,请忽略本短信。");
// 新增短信记录
if (smsFlag) {
smsSendRecord.setSendStatus(YesOrNoEnum.YES.getCode());
} else {
smsSendRecord.setSendStatus(YesOrNoEnum.NO.getCode());
}
smsRecordMapper.saveSmsSendRecord(smsSendRecord);
}
/** /**
* 确认缴费 * 确认缴费
* *
@@ -380,7 +490,17 @@ public class MsCasePaymentServiceImpl implements MsCasePaymentService {
application.setPayType(dto.getPayType()); application.setPayType(dto.getPayType());
// 修改缴费附件 // 修改缴费附件
if (CollectionUtil.isNotEmpty(dto.getPayOrderList())) { if (CollectionUtil.isNotEmpty(dto.getPayOrderList())) {
for (MsCaseAttach caseAttach : dto.getPayOrderList()) { for (MsCaseAttach caseAttach : dto.getPayOrderList()) {
// 先删除之前的缴费
if(currentFlow.getButtonAuthFlag().equals("caseManagement:list:pay")){
// 申请人附件
caseAttachMapper.deleteCaseAttachByCasedIdAndType(application.getId(),AnnexTypeEnum.PAYMENT_RECEIPT.getCode());
}else {
// 被申请人缴费附件
caseAttachMapper.deleteCaseAttachByCasedIdAndType(application.getId(),AnnexTypeEnum.RES_PAYMENT_RECEIPT.getCode());
}
caseAttach.setCaseAppliId(application.getId()); caseAttach.setCaseAppliId(application.getId());
caseAttachMapper.updateCaseAttach(caseAttach); caseAttachMapper.updateCaseAttach(caseAttach);
} }
@@ -389,7 +509,7 @@ public class MsCasePaymentServiceImpl implements MsCasePaymentService {
application.setCaseFlowId(nextFlow.getId()); application.setCaseFlowId(nextFlow.getId());
application.setCaseStatusName(nextFlow.getCaseStatusName()); application.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(application); caseApplicationMapper.updateByPrimaryKeySelective(application);
CaseLogUtils.insertCaseLog(application.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(),"确认缴费"); CaseLogUtils.insertCaseLog(application.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(),null);
} }
@@ -25,14 +25,15 @@ import com.ruoyi.common.utils.SmsUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.SaaSAPIFileUtils; import com.ruoyi.common.utils.file.SaaSAPIFileUtils;
import com.ruoyi.system.domain.entity.flow.MsCaseFlow; import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO;
import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.flow.MsCaseFlowMapper; import com.ruoyi.system.mapper.flow.MsCaseFlowMapper;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify; import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify;
import com.ruoyi.wisdomarbitrate.domain.dto.dept.SealManage; import com.ruoyi.wisdomarbitrate.domain.dto.dept.SealManage;
import com.ruoyi.wisdomarbitrate.domain.dto.mscase.CaseLogRecord; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.CaseLogRecord;
import com.ruoyi.wisdomarbitrate.domain.dto.mscase.MsSignSealDTO; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.MsSignSealDTO;
import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord;
import com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SendMailRecord;
import com.ruoyi.wisdomarbitrate.domain.entity.dept.MsSealSignRecord; import com.ruoyi.wisdomarbitrate.domain.entity.dept.MsSealSignRecord;
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.MsCaseApplication;
@@ -59,6 +60,7 @@ import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -82,6 +84,8 @@ public class MsSignSealServiceImpl implements MsSignSealService {
MsCaseFlowMapper caseFlowMapper; MsCaseFlowMapper caseFlowMapper;
@Autowired @Autowired
private SysUserMapper userMapper; private SysUserMapper userMapper;
@Autowired
private MsCaseAttachMapper caseAttachMapper;
@Autowired @Autowired
private SysUserMapper sysUserMapper; private SysUserMapper sysUserMapper;
@@ -391,6 +395,11 @@ public class MsSignSealServiceImpl implements MsSignSealService {
if (nextFlow == null) { if (nextFlow == null) {
return AjaxResult.error("未找到下一个流程节点"); return AjaxResult.error("未找到下一个流程节点");
} }
// 查询当前节点
MsCaseFlow currentFlow = caseFlowMapper.selectByPrimaryKey(dto.getCaseFlowId());
if (currentFlow == null) {
return AjaxResult.error("当前流程不存在");
}
if (StrUtil.isNotEmpty(dto.getBatchNumber())) { if (StrUtil.isNotEmpty(dto.getBatchNumber())) {
// 批量操作 // 批量操作
// 查询该批号下该流程的案件 // 查询该批号下该流程的案件
@@ -402,9 +411,7 @@ public class MsSignSealServiceImpl implements MsSignSealService {
application.setCaseFlowId(nextFlow.getId()); application.setCaseFlowId(nextFlow.getId());
application.setCaseStatusName(nextFlow.getCaseStatusName()); application.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(application); caseApplicationMapper.updateByPrimaryKeySelective(application);
CaseLogUtils.insertCaseLog(application.getId(), nextFlow.getNodeId(), nextFlow.getCaseStatusName(),"用印申请"); CaseLogUtils.insertCaseLog(application.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(),null);
} }
} else { } else {
// 单独 // 单独
@@ -414,9 +421,7 @@ public class MsSignSealServiceImpl implements MsSignSealService {
application.setCaseFlowId(nextFlow.getId()); application.setCaseFlowId(nextFlow.getId());
application.setCaseStatusName(nextFlow.getCaseStatusName()); application.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(application); caseApplicationMapper.updateByPrimaryKeySelective(application);
CaseLogUtils.insertCaseLog(application.getId(), nextFlow.getNodeId(), nextFlow.getCaseStatusName(),"用印申请"); CaseLogUtils.insertCaseLog(application.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(),null);
} }
return AjaxResult.success("用印申请成功"); return AjaxResult.success("用印申请成功");
@@ -452,44 +457,101 @@ public class MsSignSealServiceImpl implements MsSignSealService {
public AjaxResult selectCaseProgress(MsSignSealDTO dto) { public AjaxResult selectCaseProgress(MsSignSealDTO dto) {
Map<String, Object> datas = new HashMap<>(); Map<String, Object> datas = new HashMap<>();
Long id = dto.getCaseId(); Long id = dto.getCaseId();
MsCaseLogRecord caseLogRecord = new MsCaseLogRecord(); // MsCaseLogRecord caseLogRecord = new MsCaseLogRecord();
caseLogRecord.setCaseAppliId(id); // caseLogRecord.setCaseAppliId(id);
List<MsCaseLogRecordVO> records = caseLogRecordMapper.selectCaseLogRecordList(caseLogRecord); List<MsCaseLogRecordVO> records = caseLogRecordMapper.selectCaseLogRecordListCaseProgress(dto.getCaseId());
MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(id); MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(id);
Integer caseFlowId = caseApplicationselect.getCaseFlowId(); Integer caseFlowId = caseApplicationselect.getCaseFlowId();
MsCaseFlow msCaseFlow = caseFlowMapper.selectByPrimaryKey(caseFlowId); MsCaseFlow msCaseFlow = caseFlowMapper.selectByPrimaryKey(caseFlowId);
String nodeName = ""; List<MsCaseLogRecordVO> recordsNew = new ArrayList<>();
if(msCaseFlow!=null){ if (records != null && records.size() > 0) {
nodeName = msCaseFlow.getNodeName(); for (MsCaseLogRecordVO msCaseLogRecordVO : records) {
} // String content = msCaseLogRecordVO.getContent();
CaseLogRecord caseLogRecordin = getInCasenode(nodeName); String content = msCaseLogRecordVO.getCaseStatusName();
if(StringUtils.isNotEmpty(content)){
if(content.equals("结束")){
recordsNew.add(msCaseLogRecordVO);
}else {
if(!content.equals(msCaseFlow.getCaseStatusName())){
recordsNew.add(msCaseLogRecordVO);
}else{
break;
}
}
// 根据流程id查找下一个流程节点 }
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseApplicationselect.getCaseFlowId()); }
String nodeName1 = "";
if(nextFlow!=null){
nodeName1 = nextFlow.getNodeName();
} }
CaseLogRecord caseLogRecordnext = getNextRole(nodeName1);
caseLogRecordin.setNextRoleName(caseLogRecordnext.getNextRoleName()); CaseLogRecord caseLogRecordin = new CaseLogRecord();
MsCaseLogRecordVO msCaseLogRecordVO = new MsCaseLogRecordVO();
BeanUtil.copyProperties(caseLogRecordin, msCaseLogRecordVO);
List<MsCaseLogRecordVO> caseLogRecordsin = new ArrayList<>(); List<MsCaseLogRecordVO> caseLogRecordsin = new ArrayList<>();
caseLogRecordsin.add(msCaseLogRecordVO); if(!"结束".equals(msCaseFlow.getNodeName())){
caseLogRecordin.setCaseNodeName(msCaseFlow.getNodeName());
List<MsCaseFlowVO> msCaseFlowvos = caseFlowMapper.selectFlowRole(caseFlowId);
StringBuilder roleIn = new StringBuilder();
for(MsCaseFlowVO mscaseFlowVO:msCaseFlowvos){
if(!"结束".equals(mscaseFlowVO.getNodeName())){
roleIn.append( mscaseFlowVO.getRoleName()+"正在进行"+mscaseFlowVO.getNodeName()+";");
}
}
caseLogRecordin.setContent(roleIn.toString().substring(0,roleIn.toString().length()-1));
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseFlowId);
if(nextFlow!=null){
String nodeName = nextFlow.getNodeName();
if(StringUtils.isNotEmpty(nodeName)){
if(!"结束".equals(nodeName)){
List<MsCaseFlowVO> nextMsCaseFlowvo = caseFlowMapper.selectFlowRole(nextFlow.getId());
StringBuilder roleIn1 = new StringBuilder();
for(MsCaseFlowVO mscaseFlowVO:nextMsCaseFlowvo){
roleIn1.append( mscaseFlowVO.getRoleName()+";");
}
caseLogRecordin.setNextRoleName("下一节点角色:"+roleIn1.toString().substring(0,roleIn1.toString().length()-1));
}
}
}
MsCaseLogRecordVO msCaseLogRecordVO = new MsCaseLogRecordVO();
BeanUtil.copyProperties(caseLogRecordin, msCaseLogRecordVO);
caseLogRecordsin.add(msCaseLogRecordVO);
}
List<MsCaseFlow> nextFlowall = caseFlowMapper.nextFlowall(caseApplicationselect.getCaseFlowId()); List<MsCaseFlow> nextFlowall = caseFlowMapper.nextFlowall(caseApplicationselect.getCaseFlowId());
List<MsCaseLogRecordVO> caseLogRecordsnext = new ArrayList<>(); List<MsCaseLogRecordVO> caseLogRecordsnext = new ArrayList<>();
if (nextFlowall != null && nextFlowall.size() > 0) { if (nextFlowall != null && nextFlowall.size() > 0) {
for (MsCaseFlow msCaseFlow1 : nextFlowall) { for (MsCaseFlow msCaseFlow1 : nextFlowall) {
caseLogRecordsnext.add(getNextCaseLogRecord(msCaseFlow1.getNodeName())); List<MsCaseFlowVO> msCaseFlowVOs = caseFlowMapper.selectFlowRole(msCaseFlow1.getId());
} MsCaseLogRecordVO caseLogRecord1 = new MsCaseLogRecordVO();
} caseLogRecord1.setCaseNodeName(msCaseFlowVOs.get(0).getNodeName());
datas.put("finishCasenode", records); StringBuilder rolenext = new StringBuilder();
for(MsCaseFlowVO mscaseFlowVO:msCaseFlowVOs){
String nodeName1 = mscaseFlowVO.getNodeName();
if(StringUtils.isNotEmpty(nodeName1)){
if("结束".equals(nodeName1)){
rolenext.append("结束;");
}else {
rolenext.append( mscaseFlowVO.getRoleName()+"将进行"+mscaseFlowVO.getNodeName()+";");
}
}
}
caseLogRecord1.setContent( rolenext.toString().substring(0,rolenext.toString().length()-1));
caseLogRecordsnext.add(caseLogRecord1);
}
}
if(caseLogRecordsin!=null&&caseLogRecordsin.size()>0){
datas.put("finishCasenode", recordsNew);
}else {
MsCaseLogRecordVO msCaseLogRecordVO1 = new MsCaseLogRecordVO();
msCaseLogRecordVO1.setContent("结束");
recordsNew.add(msCaseLogRecordVO1);
datas.put("finishCasenode", recordsNew);
}
datas.put("inCasenode", caseLogRecordsin); datas.put("inCasenode", caseLogRecordsin);
datas.put("nextCasenode", caseLogRecordsnext); datas.put("nextCasenode", caseLogRecordsnext);
return success(datas); return success(datas);
} }
@@ -506,10 +568,18 @@ public class MsSignSealServiceImpl implements MsSignSealService {
if(record.getCreateTime()!=null){ if(record.getCreateTime()!=null){
caseNodeTime= DateUtil.format(record.getCreateTime(), DatePattern.NORM_DATETIME_FORMATTER); caseNodeTime= DateUtil.format(record.getCreateTime(), DatePattern.NORM_DATETIME_FORMATTER);
} }
Integer caseNode = record.getCaseNode();
String createBy = record.getCreateBy();
if(StrUtil.isNotEmpty(createBy)){
contentBuilder.append(Optional.ofNullable(record.getCreateNickName()).orElse("")).append("(").append(record.getCreateBy()).append(")").append("于").append(caseNodeTime);
}else{
contentBuilder.append(Optional.ofNullable(record.getCreateNickName()).orElse("")).append("于").append(caseNodeTime);
}
contentBuilder.append(Optional.ofNullable(record.getCreateNickName()).orElse("")).append("(").append(record.getCreateBy()).append(")").append("于").append(caseNodeTime);
if(StrUtil.isNotEmpty(record.getContent())){ if(StrUtil.isNotEmpty(record.getContent())){
contentBuilder.append(record.getContent()); contentBuilder.append(record.getContent());
}else if(caseNode.intValue() == 0){
contentBuilder.append(record.getCaseStatusName());
} }
if(StrUtil.isNotEmpty(record.getNotes())){ if(StrUtil.isNotEmpty(record.getNotes())){
contentBuilder.append(",").append(record.getNotes()); contentBuilder.append(",").append(record.getNotes());
@@ -522,8 +592,8 @@ public class MsSignSealServiceImpl implements MsSignSealService {
} }
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public AjaxResult msCaseFile(List<Long> ids) { public AjaxResult msCaseFile(List<Long> ids){
try { try {
for (Long id : ids) { for (Long id : ids) {
MsCaseApplication caseApplication1 = msCaseApplicationMapper.selectByPrimaryKey(id); MsCaseApplication caseApplication1 = msCaseApplicationMapper.selectByPrimaryKey(id);
@@ -606,6 +676,11 @@ public class MsSignSealServiceImpl implements MsSignSealService {
} }
} }
Integer caseFlowId = caseApplication1.getCaseFlowId(); Integer caseFlowId = caseApplication1.getCaseFlowId();
// 查询当前节点
MsCaseFlow currentFlow = caseFlowMapper.selectByPrimaryKey(caseFlowId);
if(currentFlow==null){
return AjaxResult.error("未找到当前流程节点");
}
// 根据流程id查找下一个流程节点 // 根据流程id查找下一个流程节点
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseFlowId); MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseFlowId);
caseApplication1.setCaseFlowId(nextFlow.getId()); caseApplication1.setCaseFlowId(nextFlow.getId());
@@ -615,60 +690,68 @@ public class MsSignSealServiceImpl implements MsSignSealService {
String appEmail = ""; String appEmail = "";
String resEmail = ""; String resEmail = "";
MsCaseAffiliate caseAffiliate = msCaseAffiliateMapper.selectByPrimaryKey(id); MsCaseAffiliate caseAffiliate = msCaseAffiliateMapper.selectByPrimaryKey(id);
appEmail = caseAffiliate.getAgentEmail();
resEmail = caseAffiliate.getRespondentEmail();
Integer organizeFlag = caseAffiliate.getOrganizeFlag();
if(organizeFlag!=null){
if(organizeFlag.intValue()==1){
appEmail = caseAffiliate.getAgentEmail();
}else {
appEmail = caseAffiliate.getApplicationEmail();
}
}
resEmail = caseAffiliate.getRespondentEmail();
boolean appEmailFlag = sendCaseEmail(caseApplication1, appEmail, caseAttachList); boolean appEmailFlag = sendCaseEmail(caseApplication1, appEmail, caseAttachList);
// SendMailRecord sendMailRecord = new SendMailRecord(); SendMailRecord sendMailRecord = new SendMailRecord();
// sendMailRecord.setCaseId(id); sendMailRecord.setCaseId(id);
// sendMailRecord.setMailAddress(appEmail); sendMailRecord.setMailAddress(appEmail);
// sendMailRecord.setMailContent("您好,审核后的裁决书在附件中请查阅"); sendMailRecord.setMailContent("您好,审核后的调解书在附件中请查阅");
//// sendMailRecord.setMailContent("您好,您的{"+caseApplication1.getCaseNum()+"}案件,审核后的裁决书在附件中请查阅"); // sendMailRecord.setMailContent("您好,您的{"+caseApplication1.getCaseNum()+"}案件,审核后的裁决书在附件中请查阅");
// sendMailRecord.setMailName("签署后的裁决书"); sendMailRecord.setMailName("签署后的调解书");
// sendMailRecord.setSendTime(new Date()); sendMailRecord.setSendTime(new Date());
// sendMailRecord.setCreateBy(getUsername()); sendMailRecord.setCreateBy(SecurityUtils.getUsername());
// if (appEmailFlag) { if (appEmailFlag) {
// sendMailRecord.setSendStatus(1); sendMailRecord.setSendStatus(1);
// } else { } else {
// sendMailRecord.setSendStatus(0); sendMailRecord.setSendStatus(0);
// } }
// sendMailRecordMapper.saveSendMailRecord(sendMailRecord); sendMailRecordMapper.saveSendMailRecord(sendMailRecord);
boolean resEmailFlag = sendCaseEmail(caseApplication1, resEmail, caseAttachList); boolean resEmailFlag = sendCaseEmail(caseApplication1, resEmail, caseAttachList);
// SendMailRecord sendMailRecord1 = new SendMailRecord(); SendMailRecord sendMailRecord1 = new SendMailRecord();
// sendMailRecord1.setCaseId(id); sendMailRecord1.setCaseId(id);
// sendMailRecord1.setMailAddress(resEmail); sendMailRecord1.setMailAddress(resEmail);
//// sendMailRecord.setMailContent("您好,您的{"+caseApplication1.getCaseNum()+"}案件,审核后的裁决书在附件中请查阅"); // sendMailRecord.setMailContent("您好,您的{"+caseApplication1.getCaseNum()+"}案件,审核后的裁决书在附件中请查阅");
// sendMailRecord1.setMailContent("您好,审核后的裁决书在附件中请查阅"); sendMailRecord1.setMailContent("您好,审核后的调解书在附件中请查阅");
// sendMailRecord1.setMailName("签署后的裁决书"); sendMailRecord1.setMailName("签署后的调解书");
// sendMailRecord1.setSendTime(new Date()); sendMailRecord1.setSendTime(new Date());
// sendMailRecord1.setCreateBy(getUsername()); sendMailRecord1.setCreateBy(SecurityUtils.getUsername());
// if (resEmailFlag) { if (resEmailFlag) {
// sendMailRecord1.setSendStatus(1); sendMailRecord1.setSendStatus(1);
// }else { }else {
// sendMailRecord1.setSendStatus(0); sendMailRecord1.setSendStatus(0);
// } }
// sendMailRecordMapper.saveSendMailRecord(sendMailRecord1); sendMailRecordMapper.saveSendMailRecord(sendMailRecord1);
if(!appEmailFlag&&!resEmailFlag){ if(!appEmailFlag&&!resEmailFlag){
throw new ServiceException("裁决书发送失败"); throw new ServiceException("调解书发送失败");
} }
if(!appEmailFlag){ if(!appEmailFlag){
throw new ServiceException("申请人裁决书发送失败"); throw new ServiceException("申请人调解书发送失败");
} }
if(!resEmailFlag){ if(!resEmailFlag){
throw new ServiceException("被申请人裁决书发送失败"); throw new ServiceException("被申请人调解书发送失败");
} }
CaseLogUtils.insertCaseLog(caseApplication1.getId(), nextFlow.getNodeId(), nextFlow.getCaseStatusName(),"归档"); CaseLogUtils.insertCaseLog(caseApplication1.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(),"");
} }
} catch (Exception e) { } catch (Exception e) {
return AjaxResult.error(e.getMessage()); throw new ServiceException("调解书发送失败");
} }
return AjaxResult.success("归档成功"); return AjaxResult.success("");
} }
@Override @Override
@@ -677,6 +760,11 @@ public class MsSignSealServiceImpl implements MsSignSealService {
Long caseId = dto.getCaseId(); Long caseId = dto.getCaseId();
MsCaseAffiliate caseAffiliate = msCaseAffiliateMapper.selectByPrimaryKey(caseId); MsCaseAffiliate caseAffiliate = msCaseAffiliateMapper.selectByPrimaryKey(caseId);
MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(caseId); MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(caseId);
// 查询当前节点
MsCaseFlow currentFlow = caseFlowMapper.selectByPrimaryKey(caseApplicationselect.getCaseFlowId());
if (currentFlow == null) {
return AjaxResult.error("当前流程不存在");
}
// if (dto.getIsSignApply() != null && dto.getIsSignApply().intValue() == 1) { // if (dto.getIsSignApply() != null && dto.getIsSignApply().intValue() == 1) {
// caseAffiliate.setIsSignApply(1); // caseAffiliate.setIsSignApply(1);
// msCaseAffiliateMapper.updateByPrimaryKeySelective(caseAffiliate); // msCaseAffiliateMapper.updateByPrimaryKeySelective(caseAffiliate);
@@ -698,7 +786,7 @@ public class MsSignSealServiceImpl implements MsSignSealService {
caseApplicationselect.setCaseFlowId(nextFlow.getId()); caseApplicationselect.setCaseFlowId(nextFlow.getId());
caseApplicationselect.setCaseStatusName(nextFlow.getCaseStatusName()); caseApplicationselect.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(caseApplicationselect); caseApplicationMapper.updateByPrimaryKeySelective(caseApplicationselect);
CaseLogUtils.insertCaseLog(caseApplicationselect.getId(), nextFlow.getNodeId(), nextFlow.getCaseStatusName(),"签收"); CaseLogUtils.insertCaseLog(caseApplicationselect.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(),null);
} }
// if (dto.getIsSignRespon() != null && dto.getIsSignRespon().intValue() == 1) { // if (dto.getIsSignRespon() != null && dto.getIsSignRespon().intValue() == 1) {
// caseAffiliate.setIsSignRespon(1); // caseAffiliate.setIsSignRespon(1);
@@ -722,7 +810,7 @@ public class MsSignSealServiceImpl implements MsSignSealService {
caseApplicationselect.setCaseFlowId(nextFlow.getId()); caseApplicationselect.setCaseFlowId(nextFlow.getId());
caseApplicationselect.setCaseStatusName(nextFlow.getCaseStatusName()); caseApplicationselect.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(caseApplicationselect); caseApplicationMapper.updateByPrimaryKeySelective(caseApplicationselect);
CaseLogUtils.insertCaseLog(caseApplicationselect.getId(), nextFlow.getNodeId(), nextFlow.getCaseStatusName(),"签收"); CaseLogUtils.insertCaseLog(caseApplicationselect.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(),null);
} }
return AjaxResult.success("签收成功"); return AjaxResult.success("签收成功");
@@ -735,6 +823,8 @@ public class MsSignSealServiceImpl implements MsSignSealService {
MsCaseAffiliate caseAffiliate = msCaseAffiliateMapper.selectByPrimaryKey(caseId); MsCaseAffiliate caseAffiliate = msCaseAffiliateMapper.selectByPrimaryKey(caseId);
Integer organizeFlag = caseAffiliate.getOrganizeFlag(); Integer organizeFlag = caseAffiliate.getOrganizeFlag();
MsCaseApplication caseApplication = msCaseApplicationMapper.selectByPrimaryKey(caseId);
SysUser user = new SysUser(); SysUser user = new SysUser();
Long userId = SecurityUtils.getUserId(); Long userId = SecurityUtils.getUserId();
user.setUserId(userId); user.setUserId(userId);
@@ -803,6 +893,36 @@ public class MsSignSealServiceImpl implements MsSignSealService {
}else { }else {
return AjaxResult.error(); return AjaxResult.error();
} }
}else if(roleNames.contains("调解员")){
SealSignRecord sealSignRecordres = new SealSignRecord();
MsSealSignRecord mssealSignRecord = new MsSealSignRecord();
mssealSignRecord.setCaseAppliId(caseId);
List<MsSealSignRecord> sealSignRecords = sealSignRecordMapper.selectSealSignRecord(mssealSignRecord);
if (sealSignRecords != null && sealSignRecords.size() > 0) {
String signFlowid = sealSignRecords.get(0).getSignFlowId();
SealSignRecord sealSignRecord = new SealSignRecord();
Long arbitratorId = caseApplication.getMediatorId();
if (arbitratorId!=null) {
SysUser sysUser = sysUserMapper.selectUserById(arbitratorId);
if (sysUser == null) {
return AjaxResult.error();
}
sealSignRecord.setPensonAccount(sysUser.getPhonenumber());
}
sealSignRecord.setSignFlowid(signFlowid);
Gson gson = new Gson();
EsignHttpResponse signUrl = SignAward.signUrl(sealSignRecord);
JsonObject signUrlJsonObject = gson.fromJson(signUrl.getBody(), JsonObject.class);
JsonObject signUrlData = signUrlJsonObject.getAsJsonObject("data");
String urlapply = signUrlData.get("shortUrl").getAsString();
sealSignRecordres.setSealUrl(urlapply);
return AjaxResult.success(sealSignRecordres);
}else {
return AjaxResult.error();
}
} }
return AjaxResult.success(); return AjaxResult.success();
} }
@@ -897,6 +1017,411 @@ public class MsSignSealServiceImpl implements MsSignSealService {
return AjaxResult.success(sealSignRecordres); return AjaxResult.success(sealSignRecordres);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult signSeaalCaseApplicaCallback(String reqbodystr) throws EsignDemoException, IOException {
JSONObject jsonObjectCallback = JSONObject.parseObject(reqbodystr);
Gson gson = new Gson();
if (jsonObjectCallback != null) {
int signResult = jsonObjectCallback.getIntValue("signResult");
String action = jsonObjectCallback.getString("action");
String signFlowId = jsonObjectCallback.getString("signFlowId");
Long operateTime = jsonObjectCallback.getLongValue("operateTime");
JSONObject operator = jsonObjectCallback.getJSONObject("operator");
JSONObject psnAccount = operator.getJSONObject("psnAccount");
String accountMobile = psnAccount.getString("accountMobile");
Example msSealSignRecordExample = new Example(MsSealSignRecord.class);
msSealSignRecordExample.createCriteria().andEqualTo("signFlowId", signFlowId);
MsSealSignRecord sealSignRecordsel = sealSignRecordMapper.selectOneByExample(msSealSignRecordExample);
String pensonAccountApply = sealSignRecordsel.getPensonAccount();
String orgnNamePsnAcc = sealSignRecordsel.getOrgnNamePsnAcc();
String pensonAccountRes = sealSignRecordsel.getPensonAccountRes();
String pensonAccountMedi = sealSignRecordsel.getPensonAccountMedi();
String pensonName = sealSignRecordsel.getPensonName();
String orgnNamePsnName = sealSignRecordsel.getOrgnNamePsnName();
String pensonNameRes = sealSignRecordsel.getPensonNameRes();
String pensonNameMedi = sealSignRecordsel.getPensonNameMedi();
Date dateOperate = new Date(operateTime);
Integer signStatusApply = sealSignRecordsel.getSignStatusApply();
Integer signStatusResponse = sealSignRecordsel.getSignStatusResponse();
Integer signStatusMediator = sealSignRecordsel.getSignStatusMediator();
Integer sealStatus = sealSignRecordsel.getSealStatus();
Long caseAppliId = sealSignRecordsel.getCaseAppliId();
MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(caseAppliId);
Integer mediaResult = caseApplicationselect.getMediaResult();
MsCaseFlow currentFlow = caseFlowMapper.selectByPrimaryKey(caseApplicationselect.getCaseFlowId());
Integer caseNode = currentFlow.getNodeId();
String caseStatusName = currentFlow.getCaseStatusName();
if("SIGN_MISSON_COMPLETE".equals(action) && signResult==2){
if(mediaResult.intValue()==1){
//调解
if(StringUtils.isNotEmpty(accountMobile)&&accountMobile.equals(pensonAccountApply)){
//申请人签名
sealSignRecordsel.setSignStatusApply(1);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
MsCaseLogRecord operLog = new MsCaseLogRecord();
operLog.setCreateNickName(pensonName);
operLog.setCaseStatusName(caseStatusName);
operLog.setCaseAppliId(caseAppliId);
operLog.setCaseNode(caseNode);
operLog.setCreateTime(dateOperate);
caseLogRecordMapper.insert(operLog);
if(signStatusResponse!=null&&signStatusResponse.intValue()==1&&
signStatusMediator!=null&&signStatusMediator.intValue()==1){
// 根据流程id查找下一个流程节点
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseApplicationselect.getCaseFlowId().intValue());
MsCaseApplication application = new MsCaseApplication();
application.setId(caseApplicationselect.getId());
application.setCaseFlowId(nextFlow.getId());
application.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(application);
//修改"签署用印记录表"的状态为待用印
sealSignRecordsel.setSignFlowStatus(2);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
}
}else if(StringUtils.isNotEmpty(accountMobile)&&accountMobile.equals(pensonAccountRes)){
//被申请人签名
sealSignRecordsel.setSignStatusResponse(1);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
MsCaseLogRecord operLog = new MsCaseLogRecord();
operLog.setCreateNickName(pensonNameRes);
operLog.setCaseStatusName(caseStatusName);
operLog.setCaseAppliId(caseAppliId);
operLog.setCaseNode(caseNode);
operLog.setCreateTime(dateOperate);
caseLogRecordMapper.insert(operLog);
if(signStatusApply!=null&&signStatusApply.intValue()==1&&
signStatusMediator!=null&&signStatusMediator.intValue()==1){
// 根据流程id查找下一个流程节点
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseApplicationselect.getCaseFlowId().intValue());
MsCaseApplication application = new MsCaseApplication();
application.setId(caseApplicationselect.getId());
application.setCaseFlowId(nextFlow.getId());
application.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(application);
//修改"签署用印记录表"的状态为待用印
sealSignRecordsel.setSignFlowStatus(2);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
}
}else if(StringUtils.isNotEmpty(accountMobile)&&accountMobile.equals(pensonAccountMedi)){
//调解员签名
sealSignRecordsel.setSignStatusMediator(1);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
MsCaseLogRecord operLog = new MsCaseLogRecord();
operLog.setCreateNickName(pensonNameMedi);
operLog.setCaseStatusName(caseStatusName);
operLog.setCaseAppliId(caseAppliId);
operLog.setCaseNode(caseNode);
operLog.setCreateTime(dateOperate);
caseLogRecordMapper.insert(operLog);
if(signStatusApply!=null&&signStatusApply.intValue()==1&&
signStatusResponse!=null&&signStatusResponse.intValue()==1){
// 根据流程id查找下一个流程节点
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseApplicationselect.getCaseFlowId().intValue());
MsCaseApplication application = new MsCaseApplication();
application.setId(caseApplicationselect.getId());
application.setCaseFlowId(nextFlow.getId());
application.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(application);
//修改"签署用印记录表"的状态为待用印
sealSignRecordsel.setSignFlowStatus(2);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
}
}else if(StringUtils.isNotEmpty(accountMobile)&&accountMobile.equals(orgnNamePsnAcc)){
sealSignRecordsel.setSealStatus(1);
sealSignRecordsel.setSignFlowStatus(3);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
MsCaseLogRecord operLog = new MsCaseLogRecord();
operLog.setCreateNickName(orgnNamePsnName);
operLog.setCaseStatusName(caseStatusName);
operLog.setCaseAppliId(caseAppliId);
operLog.setCaseNode(caseNode);
operLog.setCreateTime(dateOperate);
caseLogRecordMapper.insert(operLog);
// 根据流程id查找下一个流程节点
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseApplicationselect.getCaseFlowId().intValue());
MsCaseApplication application = new MsCaseApplication();
application.setId(caseApplicationselect.getId());
application.setCaseFlowId(nextFlow.getId());
application.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(application);
//下载审核完成的调解书
EsignHttpResponse fileDownload = SaaSAPIFileUtils.fileDownloadUrl(signFlowId);
JsonObject fileDownloadJsonObject = gson.fromJson(fileDownload.getBody(), JsonObject.class);
JsonObject fileDownloadData = fileDownloadJsonObject.getAsJsonObject("data");
JsonArray filesArray = fileDownloadData.get("files").getAsJsonArray();
if (filesArray != null && filesArray.size() > 0) {
JsonObject fileObject = (JsonObject) filesArray.get(0);
String fileDownloadUrl = fileObject.get("downloadUrl").toString();
LocalDate now = LocalDate.now();
String year = Integer.toString(now.getYear());
String month = String.format("%02d", now.getMonthValue());
String day = String.format("%02d", now.getDayOfMonth());
String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day;
String fileName = UUID.randomUUID().toString().replace("-", "") + ".pdf";
// String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
// String savePath = "/home/ruoyi/uploadPath/upload/";
String saveName = fileName;
String savePath = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
// 创建日期目录
File saveFolder = new File(saveFolderPath);
if (!saveFolder.exists()) {
saveFolder.mkdirs();
}
String resultFilePath = saveFolderPath + "/" + fileName;
File resultFilePathFile = new File(resultFilePath);
if (!resultFilePathFile.exists()) {
resultFilePathFile.createNewFile();
}
String fileDownloadUrlnew = fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1);
boolean downLoadFile = FileTransformation.downLoadFileByUrl(fileDownloadUrlnew, resultFilePath);
if (downLoadFile) {
MsCaseAttach caseAttach = new MsCaseAttach();
caseAttach.setCaseAppliId(caseAppliId);
caseAttach.setAnnexType(7);
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
caseAttachMapper.updateCaseAttachBycaseid(caseAttach);
}
}
}
}else if(mediaResult.intValue()==5){
//和解
if(StringUtils.isNotEmpty(accountMobile)&&accountMobile.equals(pensonAccountApply)){
//申请人签名
sealSignRecordsel.setSignStatusApply(1);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
MsCaseLogRecord operLog = new MsCaseLogRecord();
operLog.setCreateNickName(pensonName);
operLog.setCaseStatusName(caseStatusName);
operLog.setCaseAppliId(caseAppliId);
operLog.setCaseNode(caseNode);
operLog.setCreateTime(dateOperate);
caseLogRecordMapper.insert(operLog);
if(signStatusResponse!=null&&signStatusResponse.intValue()==1){
MsCaseFlow nextFlow = caseFlowMapper.nextFlow1(caseApplicationselect.getCaseFlowId().intValue());
MsCaseApplication application = new MsCaseApplication();
application.setId(caseApplicationselect.getId());
application.setCaseFlowId(nextFlow.getId());
application.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(application);
//修改"签署用印记录表"的状态为完成
sealSignRecordsel.setSignFlowStatus(3);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
//下载审核完成的调解书
EsignHttpResponse fileDownload = SaaSAPIFileUtils.fileDownloadUrl(signFlowId);
JsonObject fileDownloadJsonObject = gson.fromJson(fileDownload.getBody(), JsonObject.class);
JsonObject fileDownloadData = fileDownloadJsonObject.getAsJsonObject("data");
JsonArray filesArray = fileDownloadData.get("files").getAsJsonArray();
if (filesArray != null && filesArray.size() > 0) {
JsonObject fileObject = (JsonObject) filesArray.get(0);
String fileDownloadUrl = fileObject.get("downloadUrl").toString();
LocalDate now = LocalDate.now();
String year = Integer.toString(now.getYear());
String month = String.format("%02d", now.getMonthValue());
String day = String.format("%02d", now.getDayOfMonth());
String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day;
String fileName = UUID.randomUUID().toString().replace("-", "") + ".pdf";
// String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
// String savePath = "/home/ruoyi/uploadPath/upload/";
String saveName = fileName;
String savePath = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
// 创建日期目录
File saveFolder = new File(saveFolderPath);
if (!saveFolder.exists()) {
saveFolder.mkdirs();
}
String resultFilePath = saveFolderPath + "/" + fileName;
File resultFilePathFile = new File(resultFilePath);
if (!resultFilePathFile.exists()) {
resultFilePathFile.createNewFile();
}
String fileDownloadUrlnew = fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1);
boolean downLoadFile = FileTransformation.downLoadFileByUrl(fileDownloadUrlnew, resultFilePath);
if (downLoadFile) {
MsCaseAttach caseAttach = new MsCaseAttach();
caseAttach.setCaseAppliId(caseAppliId);
caseAttach.setAnnexType(7);
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
caseAttachMapper.updateCaseAttachBycaseid(caseAttach);
}
}
}
}else if(StringUtils.isNotEmpty(accountMobile)&&accountMobile.equals(pensonAccountRes)){
//被申请人签名
sealSignRecordsel.setSignStatusResponse(1);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
MsCaseLogRecord operLog = new MsCaseLogRecord();
operLog.setCreateNickName(pensonNameRes);
operLog.setCaseStatusName(caseStatusName);
operLog.setCaseAppliId(caseAppliId);
operLog.setCaseNode(caseNode);
operLog.setCreateTime(dateOperate);
caseLogRecordMapper.insert(operLog);
if(signStatusApply!=null&&signStatusApply.intValue()==1){
MsCaseFlow nextFlow = caseFlowMapper.nextFlow1(caseApplicationselect.getCaseFlowId().intValue());
MsCaseApplication application = new MsCaseApplication();
application.setId(caseApplicationselect.getId());
application.setCaseFlowId(nextFlow.getId());
application.setCaseStatusName(nextFlow.getCaseStatusName());
caseApplicationMapper.updateByPrimaryKeySelective(application);
//修改"签署用印记录表"的状态为完成
sealSignRecordsel.setSignFlowStatus(3);
sealSignRecordMapper.updateByPrimaryKeySelective(sealSignRecordsel);
//下载审核完成的调解书
EsignHttpResponse fileDownload = SaaSAPIFileUtils.fileDownloadUrl(signFlowId);
JsonObject fileDownloadJsonObject = gson.fromJson(fileDownload.getBody(), JsonObject.class);
JsonObject fileDownloadData = fileDownloadJsonObject.getAsJsonObject("data");
JsonArray filesArray = fileDownloadData.get("files").getAsJsonArray();
if (filesArray != null && filesArray.size() > 0) {
JsonObject fileObject = (JsonObject) filesArray.get(0);
String fileDownloadUrl = fileObject.get("downloadUrl").toString();
LocalDate now = LocalDate.now();
String year = Integer.toString(now.getYear());
String month = String.format("%02d", now.getMonthValue());
String day = String.format("%02d", now.getDayOfMonth());
String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day;
String fileName = UUID.randomUUID().toString().replace("-", "") + ".pdf";
// String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
// String savePath = "/home/ruoyi/uploadPath/upload/";
String saveName = fileName;
String savePath = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
// 创建日期目录
File saveFolder = new File(saveFolderPath);
if (!saveFolder.exists()) {
saveFolder.mkdirs();
}
String resultFilePath = saveFolderPath + "/" + fileName;
File resultFilePathFile = new File(resultFilePath);
if (!resultFilePathFile.exists()) {
resultFilePathFile.createNewFile();
}
String fileDownloadUrlnew = fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1);
boolean downLoadFile = FileTransformation.downLoadFileByUrl(fileDownloadUrlnew, resultFilePath);
if (downLoadFile) {
MsCaseAttach caseAttach = new MsCaseAttach();
caseAttach.setCaseAppliId(caseAppliId);
caseAttach.setAnnexType(7);
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
caseAttachMapper.updateCaseAttachBycaseid(caseAttach);
}
}
}
}
}
}
}else{
return AjaxResult.error("error");
}
return AjaxResult.success("success");
}
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult sealCheckCallback(String reqbodystr) throws EsignDemoException, IOException {
JSONObject jsonObjectCallback = JSONObject.parseObject(reqbodystr);
Gson gson = new Gson();
if (jsonObjectCallback != null) {
int auditStatus = jsonObjectCallback.getIntValue("auditStatus");
String action = jsonObjectCallback.getString("action");
String orgId = jsonObjectCallback.getString("orgId");
String sealId = jsonObjectCallback.getString("sealId");
SealManage sealManage = new SealManage();
DeptIdentify deptIdentify1 = new DeptIdentify();
deptIdentify1.setOrgId(orgId);
List<DeptIdentify> deptIdentifies = deptIdentifyMapper.selectDeptIdentify(deptIdentify1);
if (deptIdentifies != null && deptIdentifies.size() > 0) {
Long iddeptIdent = deptIdentifies.get(0).getId();
SealManage sealManageSel = new SealManage();
sealManageSel.setIdentifyId(iddeptIdent);
sealManageSel.setSealId(sealId);
List<String> sealIdList = new ArrayList<>();
List<SealManage> selectSealList = sealManageMapper.selectSealList(sealManageSel);
if (selectSealList != null && selectSealList.size() > 0) {
sealManage = selectSealList.get(0);
}
}
if("SEAL_AUDIT".equals(action) && auditStatus==1){
EsignHttpResponse response = SignAward.getOrgSeal(orgId, sealId);
JSONObject jsonObject = JSONObject.parseObject(response.getBody());
int code = jsonObject.getIntValue("code");
if (code == 0) {
JSONObject data = jsonObject.getJSONObject("data");
int sealStatus = data.getIntValue("sealStatus");
if (sealStatus == 1) {//印章状态 1已启用,2待审核,3审核不通过,4 挂起
//已启用证明审核通过,下载到数据库
String sealImageDownloadUrl = data.getString("sealImageDownloadUrl");
LocalDate now = LocalDate.now();
String year = Integer.toString(now.getYear());
String month = String.format("%02d", now.getMonthValue());
String day = String.format("%02d", now.getDayOfMonth());
String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day;
String fileName = UUID.randomUUID().toString().replace("-", "") + ".jpg";
String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
String savePath = "/home/ruoyi/uploadPath/upload/";
// 创建日期目录
File saveFolder = new File(saveFolderPath);
if (!saveFolder.exists()) {
saveFolder.mkdirs();
}
String resultFilePath = saveFolderPath + "/" + fileName;
File resultFilePathFile = new File(resultFilePath);
if (!resultFilePathFile.exists()) {
resultFilePathFile.createNewFile();
}
boolean downLoadFile = FileTransformation.downLoadFileByUrl(sealImageDownloadUrl, resultFilePath);
if (downLoadFile) {
MsCaseAttach caseAttach = new MsCaseAttach();
caseAttach.setAnnexType(AnnexTypeEnum.SEAL_PICTURE.getCode()); //10代表印章图片
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
int i1 = caseAttachMapper.save(caseAttach);
if (i1 > 0) {
//将附件id保存到公章管理表里
Long annexId1 = caseAttach.getAnnexId();
sealManage.setAnnexId(annexId1);
sealManage.setSealStatus(1);
sealManage.setIsUse(0);
sealManageMapper.updateSealManage(sealManage);
}
}
}
}
}
}else{
return AjaxResult.error("error");
}
return AjaxResult.success("success");
}
/** /**
* 通过邮件发送裁决书文件 * 通过邮件发送裁决书文件
* *
@@ -926,7 +1451,7 @@ public class MsSignSealServiceImpl implements MsSignSealService {
if (file != null && file.exists()) { if (file != null && file.exists()) {
try { try {
Boolean aBoolean = emailOutUtil.sendEmil(email, "您好,审核后的裁决书在附件中请查阅", "签署后的裁决书", fileList, null); Boolean aBoolean = emailOutUtil.sendEmil(email, "您好,审核后的调解书在附件中请查阅", "签署后的调解书", fileList, null);
if (aBoolean) { if (aBoolean) {
return Boolean.TRUE; return Boolean.TRUE;
@@ -9,6 +9,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
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.enums.AnnexTypeEnum; import com.ruoyi.common.enums.AnnexTypeEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.PdfUtils; import com.ruoyi.common.utils.PdfUtils;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.mapper.SysRoleMapper; import com.ruoyi.system.mapper.SysRoleMapper;
@@ -52,8 +53,7 @@ import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.ruoyi.common.core.domain.AjaxResult.success; import static com.ruoyi.common.core.domain.AjaxResult.success;
import static com.ruoyi.common.utils.file.FileUploadUtils.getAbsoluteFile; import static com.ruoyi.common.utils.file.FileUploadUtils.*;
import static com.ruoyi.common.utils.file.FileUploadUtils.getPathFileName;
/** /**
* @author wangqiong * @author wangqiong
@@ -178,11 +178,16 @@ public class VideoConferenceServiceImpl implements VideoConferenceService {
@Transactional @Transactional
@Override @Override
public String createRoomId(Long caseId) { public String createRoomId(Long caseId) {
// 查询案件
MsCaseApplication caseApplication = caseApplicationMapper.selectByPrimaryKey(caseId);
if(null == caseApplication){
throw new ServiceException("未找到该案件");
}
long roomId = generateRoomId(); long roomId = generateRoomId();
// 绑定案件与房间号 // 绑定案件与房间号
bindCaseId(caseId, String.valueOf(roomId)); bindCaseId(caseId, String.valueOf(roomId));
// 新增预约会议表 // 新增预约会议表
ReservedConference conference = new ReservedConference(caseId, SecurityUtils.getUserId(), roomId, ReservedConference conference = new ReservedConference(caseId,caseApplication.getMediatorId(), roomId,
null, null); null, null);
// 先删除之前的会议 // 先删除之前的会议
reservedConferenceMapper.deletByCaseId(caseId); reservedConferenceMapper.deletByCaseId(caseId);
@@ -448,23 +453,29 @@ public class VideoConferenceServiceImpl implements VideoConferenceService {
String fileName = fileUrl.substring(fileUrl.lastIndexOf("/")); String fileName = fileUrl.substring(fileUrl.lastIndexOf("/"));
fileName = fileName.replace("/", ""); fileName = fileName.replace("/", "");
fileName=fileId+fileName; fileName=fileId+fileName;
String absPath = getAbsoluteFile(RuoYiConfig.getVideoUploadPath(), fileName).getAbsolutePath(); String annexName=System.currentTimeMillis()+fileName;
String absPath = getAbsoluteFile(RuoYiConfig.getVideoUploadPath(), annexName).getAbsolutePath();
staticAndMksDir = Paths.get(absPath).toFile().toString(); staticAndMksDir = Paths.get(absPath).toFile().toString();
long downloadFile = HttpUtil.downloadFile(fileUrl, staticAndMksDir); long downloadFile = HttpUtil.downloadFile(fileUrl, staticAndMksDir);
if(downloadFile>0) { if(downloadFile>0) {
Example example = new Example(MsCaseApplication.class); Example example = new Example(MsCaseApplication.class);
example.createCriteria().andEqualTo("roomId", roomId); example.createCriteria().andEqualTo("roomId", roomId);
MsCaseApplication caseApplication = caseApplicationMapper.selectOneByExample(example); MsCaseApplication caseApplication = caseApplicationMapper.selectOneByExample(example);
if(caseApplication != null) { if(caseApplication != null) {
String annexName = getPathFileName(RuoYiConfig.getVideoUploadPath(), fileName); // 根据文件名称查询附件,如果该视频已存在则不存入数据库
// 存入数据库 int count= caseAttachMapper.countByfileName(fileName,caseApplication.getId());
MsCaseAttach caseAttach = MsCaseAttach.builder().caseAppliId(caseApplication.getId()) if(count<1) {
.annexName(fileName) annexName = getPathFileName(RuoYiConfig.getVideoUploadPath(), annexName);
.annexPath(annexName) // 存入数据库
.annexType(AnnexTypeEnum.MEETING_VIDEO.getCode()) MsCaseAttach caseAttach = MsCaseAttach.builder().caseAppliId(caseApplication.getId())
.build(); .annexName(fileName)
caseAttachMapper.save(caseAttach); .annexPath(annexName)
return annexName; .annexType(AnnexTypeEnum.MEETING_VIDEO.getCode())
.build();
caseAttachMapper.save(caseAttach);
return annexName;
}
} }
} }
} }
@@ -0,0 +1,46 @@
package com.ruoyi.wisdomarbitrate.utils;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class DigesdateUtils {
public static String getSignStr(String paramsStr, String accessSec ) {
Mac macDiges = null;
try {
macDiges = Mac.getInstance("HmacSHA256");
SecretKeySpec accessSecKey = new SecretKeySpec(accessSec.getBytes("UTF-8"), "HmacSHA256");
macDiges.init(accessSecKey);
macDiges.update(paramsStr.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
} catch (InvalidKeyException e) {
e.printStackTrace();
return null;
}
return byteTrasferhex(macDiges.doFinal());
}
public static String byteTrasferhex(byte[] byteArrayData) {
StringBuilder hashBuilder = new StringBuilder();
String stmpHex;
for (int n = 0; byteArrayData != null && n < byteArrayData.length; n++) {
stmpHex = Integer.toHexString(byteArrayData[n] & 0XFF);
if (stmpHex.length() == 1)
hashBuilder.append('0');
hashBuilder.append(stmpHex);
}
return hashBuilder.toString();
}
}
@@ -243,7 +243,7 @@ public class FixSelectFlowDetailUtils {
/* /*
定时查询签署流程详情 定时查询签署流程详情
*/ */
@Scheduled(cron = "0/10 * * * * ?") // @Scheduled(cron = "0/10 * * * * ?")
@Transactional @Transactional
public void fixExecuteSelectFlowDetailUtils() { public void fixExecuteSelectFlowDetailUtils() {
Gson gson = new Gson(); Gson gson = new Gson();
@@ -286,9 +286,10 @@ public class FixSelectFlowDetailUtils {
List<Integer> psnsignStatusListnew = psnsignStatusList.stream().distinct().collect(Collectors.toList()); List<Integer> psnsignStatusListnew = psnsignStatusList.stream().distinct().collect(Collectors.toList());
MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(sealSignRecord.getCaseAppliId()); MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(sealSignRecord.getCaseAppliId());
Integer isReconci = caseApplicationselect.getIsReconci(); // Integer isReconci = caseApplicationselect.getIsReconci();
if(isReconci!=null){ Integer mediaResult = caseApplicationselect.getMediaResult();
if(isReconci.intValue()==1){ if(mediaResult!=null){
if(mediaResult.intValue()==5){
if (( psnsignStatusListnew.size()==1 && (psnsignStatusListnew.get(0).intValue() == 2))) { if (( psnsignStatusListnew.size()==1 && (psnsignStatusListnew.get(0).intValue() == 2))) {
//更新立案申请状态为待送达 //更新立案申请状态为待送达
// MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(sealSignRecord.getCaseAppliId()); // MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(sealSignRecord.getCaseAppliId());
@@ -350,7 +351,7 @@ public class FixSelectFlowDetailUtils {
} }
} }
} }
}else { }else if(mediaResult.intValue()==1){
if (( psnsignStatusListnew.size()==1 && (psnsignStatusListnew.get(0).intValue() == 2)) && (orgsignStatus.intValue() == 1)) { if (( psnsignStatusListnew.size()==1 && (psnsignStatusListnew.get(0).intValue() == 2)) && (orgsignStatus.intValue() == 1)) {
//更新立案申请状态为待用印 //更新立案申请状态为待用印
// MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(sealSignRecord.getCaseAppliId()); // MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(sealSignRecord.getCaseAppliId());
@@ -3,19 +3,17 @@ package com.ruoyi.wisdomarbitrate.utils;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.ruoyi.common.core.domain.entity.EsignHttpResponse; import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
import com.ruoyi.common.enums.EsignRequestType; import com.ruoyi.common.enums.EsignRequestType;
import com.ruoyi.common.exception.EsignDemoException; import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.common.utils.EsignApplicaConfig; import com.ruoyi.common.utils.EsignApplicaConfig;
import com.ruoyi.common.utils.EsignHttpHelper; import com.ruoyi.common.utils.EsignHttpHelper;
import com.ruoyi.common.utils.SealUtil; import com.ruoyi.common.utils.SealUtil;
import com.ruoyi.wisdomarbitrate.domain.vo.base.StringIdsReq;
import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify; import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify;
import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord;
import com.ruoyi.wisdomarbitrate.domain.vo.base.StringIdsReq;
import org.springframework.beans.factory.annotation.Value;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -25,6 +23,9 @@ public class SignAward {
private static String eSignAppId = EsignApplicaConfig.EsignAppId; private static String eSignAppId = EsignApplicaConfig.EsignAppId;
private static String eSignAppSecret = EsignApplicaConfig.EsignAppSecret; private static String eSignAppSecret = EsignApplicaConfig.EsignAppSecret;
@Value("${signSealCallbackConfig.url}")
private static String signSealCallbackUrl;
public static void main(String[] args) throws EsignDemoException { public static void main(String[] args) throws EsignDemoException {
Gson gson = new Gson(); Gson gson = new Gson();
@@ -354,7 +355,7 @@ public class SignAward {
" \"signConfig\": {\n" + " \"signConfig\": {\n" +
" \"availableSignClientTypes\": \"1\"\n" + " \"availableSignClientTypes\": \"1\"\n" +
" },\n" + " },\n" +
// " \"notifyUrl\": \"" + signSealCallbackUrl + "\",\n" +
" \"autoFinish\": true\n" + " \"autoFinish\": true\n" +
" },\n" + " },\n" +
@@ -826,8 +827,8 @@ public class SignAward {
String apiaddr = "/v3/files/" + fileId + "/keyword-positions"; String apiaddr = "/v3/files/" + fileId + "/keyword-positions";
String jsonParm = "{\n" + String jsonParm = "{\n" +
" \"keywords\": [\n" + " \"keywords\": [\n" +
" \"仲裁员:\",\n" + " \"调解员:\",\n" +
" \"(仲裁委员会盖章)\"\n" + " \"(调解委员会盖章)\"\n" +
" ]\n" + " ]\n" +
"}"; "}";
//请求方法 //请求方法
@@ -0,0 +1,99 @@
package com.ruoyi.wisdomarbitrate.utils;
import com.ruoyi.common.utils.EsignApplicaConfig;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.wisdomarbitrate.service.miniprogress.impl.IdentityAuthenticationServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
public class SignVerifyUtils {
private static String eSignAppSecret = EsignApplicaConfig.EsignAppSecret;
public static boolean checkSignuter() throws Exception {
HttpServletRequest httprequest = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
String orialsignature = httprequest.getHeader("X-Tsign-Open-SIGNATURE");
String timestampreq = httprequest.getHeader("X-Tsign-Open-TIMESTAMP");
String reqQuerystr =getHttpreqQuery();
//获取请求参数
String reqbodystr =getRequestBody();
String signOriaData = timestampreq + reqQuerystr + reqbodystr;
String newDisgSignuter= DigesdateUtils.getSignStr(signOriaData, eSignAppSecret);
if (StringUtils.equals(orialsignature, newDisgSignuter)) {
return true;
}else {
return false;
}
}
public static String getHttpreqQuery() {
HttpServletRequest httprequest = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
List<String> reqNames= new ArrayList();
Enumeration<String> httpreqEle =httprequest.getParameterNames();
while (httpreqEle.hasMoreElements()){
reqNames.add(httpreqEle.nextElement());
}
Collections.sort(reqNames);
String httpreqQuery = "";
for (String reqName : reqNames) {
String reqvalue = httprequest.getParameter(reqName);
httpreqQuery += reqvalue == null ? "" : reqvalue;
}
return httpreqQuery;
}
public static String getRequestBody() {
HttpServletRequest httprequest = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
String requestBody = "";
int reqContentLen = httprequest.getContentLength();
if (reqContentLen < 0) {
return null;
}
byte bufByteArray[] = new byte[reqContentLen];
try {
for (int i = 0; i < reqContentLen;) {
int lengthReadInputStream = httprequest.getInputStream().read(bufByteArray, i, reqContentLen - i);
if (lengthReadInputStream == -1) {
break;
}
i += lengthReadInputStream;
}
} catch (IOException e) {
e.printStackTrace();
}
try {
requestBody = new String(bufByteArray, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return requestBody;
}
}
@@ -7,6 +7,6 @@ targetprojectpath=D:/ymPro/Mediation-Backend/ruoyi-system/src/main/resources/map
#模块名称 #模块名称
moduleName=mscase moduleName=mscase
#表名 #表名
tableName=ms_case_affiliate tableName=ms_case_audit
#主键 #主键
premaryId=id premaryId=id
@@ -9,6 +9,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="userName" column="user_name" /> <result property="userName" column="user_name" />
<result property="nickName" column="nick_name" /> <result property="nickName" column="nick_name" />
<result property="idCard" column="id_card" /> <result property="idCard" column="id_card" />
<result property="idType" column="id_type" />
<result property="nationality" column="nationality" />
<result property="email" column="email" /> <result property="email" column="email" />
<result property="phonenumber" column="phonenumber" /> <result property="phonenumber" column="phonenumber" />
<result property="sex" column="sex" /> <result property="sex" column="sex" />
@@ -50,7 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectUserVo"> <sql id="selectUserVo">
select u.user_id, u.user_name, u.nick_name,u.specialty, u.id_card,u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, select u.user_id, u.user_name, u.nick_name,u.specialty, u.id_card,u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,u.id_card r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,u.id_card,u.id_type,u.nationality
from ms_sys_user u from ms_sys_user u
left join ms_sys_user_role ur on u.user_id = ur.user_id left join ms_sys_user_role ur on u.user_id = ur.user_id
left join ms_sys_role r on r.role_id = ur.role_id left join ms_sys_role r on r.role_id = ur.role_id
@@ -200,6 +202,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userName != null and userName != ''">user_name,</if> <if test="userName != null and userName != ''">user_name,</if>
<if test="nickName != null and nickName != ''">nick_name,</if> <if test="nickName != null and nickName != ''">nick_name,</if>
<if test="idCard != null and idCard != ''">id_card,</if> <if test="idCard != null and idCard != ''">id_card,</if>
<if test="idType != null ">id_type,</if>
<if test="nationality != null ">nationality,</if>
<if test="email != null and email != ''">email,</if> <if test="email != null and email != ''">email,</if>
<if test="avatar != null and avatar != ''">avatar,</if> <if test="avatar != null and avatar != ''">avatar,</if>
<if test="phonenumber != null and phonenumber != ''">phonenumber,</if> <if test="phonenumber != null and phonenumber != ''">phonenumber,</if>
@@ -216,6 +220,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userName != null and userName != ''">#{userName},</if> <if test="userName != null and userName != ''">#{userName},</if>
<if test="nickName != null and nickName != ''">#{nickName},</if> <if test="nickName != null and nickName != ''">#{nickName},</if>
<if test="idCard != null and idCard != ''">#{idCard},</if> <if test="idCard != null and idCard != ''">#{idCard},</if>
<if test="idType != null ">#{idType},</if>
<if test="nationality != null ">#{nationality},</if>
<if test="email != null and email != ''">#{email},</if> <if test="email != null and email != ''">#{email},</if>
<if test="avatar != null and avatar != ''">#{avatar},</if> <if test="avatar != null and avatar != ''">#{avatar},</if>
<if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if> <if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if>
@@ -272,6 +278,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<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> <if test="idCard != null and idCard != ''">id_card = #{idCard},</if>
<if test="idType != null">id_type = #{idType},</if>
<if test="nationality != null">nationality = #{nationality},</if>
<if test="email != null ">email = #{email},</if> <if test="email != null ">email = #{email},</if>
<if test="phonenumber != null ">phonenumber = #{phonenumber},</if> <if test="phonenumber != null ">phonenumber = #{phonenumber},</if>
<if test="sex != null and sex != ''">sex = #{sex},</if> <if test="sex != null and sex != ''">sex = #{sex},</if>
@@ -23,6 +23,10 @@
<result column="position_xorg" jdbcType="DOUBLE" property="positionXorg" /> <result column="position_xorg" jdbcType="DOUBLE" property="positionXorg" />
<result column="position_yorg" jdbcType="DOUBLE" property="positionYorg" /> <result column="position_yorg" jdbcType="DOUBLE" property="positionYorg" />
<result column="file_download_url" jdbcType="LONGVARCHAR" property="fileDownloadUrl" /> <result column="file_download_url" jdbcType="LONGVARCHAR" property="fileDownloadUrl" />
<result column="sign_status_apply" jdbcType="INTEGER" property="signStatusApply" />
<result column="sign_status_response" jdbcType="INTEGER" property="signStatusResponse" />
<result column="sign_status_mediator" jdbcType="INTEGER" property="signStatusMediator" />
<result column="seal_status" jdbcType="INTEGER" property="sealStatus" />
</resultMap> </resultMap>
@@ -23,6 +23,9 @@
<if test="sealStatus != null"> <if test="sealStatus != null">
AND seal_status = #{sealStatus} AND seal_status = #{sealStatus}
</if> </if>
<if test="sealId != null and sealId != ''">
AND seal_id = #{sealId}
</if>
</where> </where>
</select> </select>
@@ -13,18 +13,19 @@
<result property="sealStatus" column="seal_status" /> <result property="sealStatus" column="seal_status" />
<result property="useId" column="use_id" /> <result property="useId" column="use_id" />
<result property="useAccount" column="use_account" /> <result property="useAccount" column="use_account" />
<result property="onlyOfficeFileId" column="only_office_file_id" />
</resultMap> </resultMap>
<insert id="save" useGeneratedKeys="true" keyProperty="annexId"> <insert id="save" useGeneratedKeys="true" keyProperty="annexId">
INSERT INTO ms_case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,is_batch_upload) INSERT INTO ms_case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,only_office_file_id)
VALUES (#{caseAppliId}, #{annexName}, #{annexPath},#{annexType},#{note},#{useId},#{useAccount},#{sealStatus},#{isBatchUpload}) VALUES (#{caseAppliId}, #{annexName}, #{annexPath},#{annexType},#{note},#{useId},#{useAccount},#{sealStatus},#{onlyOfficeFileId})
</insert> </insert>
<insert id="batchSave" useGeneratedKeys="true" keyProperty="annexId"> <insert id="batchSave" useGeneratedKeys="true" keyProperty="annexId">
INSERT INTO ms_case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,is_batch_upload) INSERT INTO ms_case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status,only_office_file_id)
VALUES VALUES
<foreach item="item" index="index" collection="list" separator=","> <foreach item="item" index="index" collection="list" separator=",">
(#{item.caseAppliId}, #{item.annexName}, #{item.annexPath},#{item.annexType},#{item.note},#{item.useId},#{item.useAccount},#{item.sealStatus},#{item.isBatchUpload}) (#{item.caseAppliId}, #{item.annexName}, #{item.annexPath},#{item.annexType},#{item.note},#{item.useId},#{item.useAccount},#{item.sealStatus},#{item.onlyOfficeFileId})
</foreach> </foreach>
</insert> </insert>
<delete id="deleteByFileIds"> <delete id="deleteByFileIds">
@@ -38,19 +39,16 @@
delete from ms_case_attach delete from ms_case_attach
where case_appli_id = #{caseAppliId} where case_appli_id = #{caseAppliId}
and annex_type = #{annexType} and annex_type = #{annexType}
<if test="isBatchUpload != null ">
AND is_batch_upload = #{isBatchUpload}
</if>
</delete> </delete>
<select id="queryAnnexPathByCaseId" resultType="com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach" resultMap="CaseAttachResult"> <select id="queryAnnexPathByCaseId" resultType="com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach" resultMap="CaseAttachResult">
select annex_id,case_appli_id,annex_name,annex_path,annex_type,note,use_id,use_account select *
from ms_case_attach from ms_case_attach
where case_appli_id =#{id} where case_appli_id =#{id}
</select> </select>
<select id="listCaseAttachByCaseIdAndType" resultType="com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach" resultMap="CaseAttachResult"> <select id="listCaseAttachByCaseIdAndType" resultType="com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach" resultMap="CaseAttachResult">
select annex_id,case_appli_id,annex_name,annex_path,annex_type,note,use_id,use_account select *
from ms_case_attach from ms_case_attach
<where> <where>
<if test="caseAppliId != null "> <if test="caseAppliId != null ">
@@ -65,11 +63,20 @@
<delete id="deleteCaseAttachByCasedIdAndType"> <delete id="deleteCaseAttachByCasedIdAndType">
delete from ms_case_attach delete from ms_case_attach
where case_appli_id = #{caseAppliId} where case_appli_id = #{caseAppliId}
<if test="annexType != null ">
and annex_type = #{annexType} and annex_type = #{annexType}
</if>
</delete>
<delete id="batchDelete">
delete from ms_case_attach
where case_appli_id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete> </delete>
<select id="queryCaseAttachList" resultMap="CaseAttachResult"> <select id="queryCaseAttachList" resultMap="CaseAttachResult">
select annex_id,case_appli_id,annex_name,annex_path,annex_type,note,use_id,use_account select *
from ms_case_attach from ms_case_attach
<where> <where>
<if test="id != null "> <if test="id != null ">
@@ -95,6 +102,9 @@
</if> </if>
</where> </where>
</select> </select>
<select id="countByfileName" resultType="java.lang.Integer">
select count(1) from ms_case_attach where case_appli_id=#{caseAppliId} and annex_name=#{annexName}
</select>
<update id="updateCaseAttach" parameterType="com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach"> <update id="updateCaseAttach" parameterType="com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach">
update ms_case_attach update ms_case_attach
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseAuditMapper">
<resultMap id="BaseResultMap" type="com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAudit">
<!--
WARNING - @mbg.generated
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="case_appli_id" jdbcType="BIGINT" property="caseAppliId" />
<result column="case_node" jdbcType="INTEGER" property="caseNode" />
<result column="case_status_name" jdbcType="VARCHAR" property="caseStatusName" />
<result column="yes_or_no" jdbcType="INTEGER" property="yesOrNo" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_nick_name" jdbcType="VARCHAR" property="createNickName" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="reason" jdbcType="LONGVARCHAR" property="reason" />
</resultMap>
</mapper>
@@ -19,7 +19,7 @@
<select id="selectSendMailRecord" parameterType="com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SendMailRecord" resultMap="SendMailRecordResult"> <select id="selectSendMailRecord" parameterType="com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SendMailRecord" resultMap="SendMailRecordResult">
SELECT s.id ,s.mail_name ,s.mail_content ,s.mail_address ,s.send_time ,s.case_id ,s.create_time ,s.create_by , SELECT s.id ,s.mail_name ,s.mail_content ,s.mail_address ,s.send_time ,s.case_id ,s.create_time ,s.create_by ,
s.update_by ,s.update_time , s.send_status ,c.case_num s.update_by ,s.update_time , s.send_status ,c.case_num
from send_mail_record s left join ms_case_application c from ms_send_mail_record s left join ms_case_application c
on s.case_id = c.id on s.case_id = c.id
<where> <where>
<if test="caseNum != null and caseNum != ''"> <if test="caseNum != null and caseNum != ''">
@@ -30,7 +30,7 @@
</select> </select>
<insert id="saveSendMailRecord"> <insert id="saveSendMailRecord">
insert into send_mail_record( insert into ms_send_mail_record(
<if test="mailName != null and mailName != ''">mail_name,</if> <if test="mailName != null and mailName != ''">mail_name,</if>
<if test="mailContent != null and mailContent != ''">mail_content,</if> <if test="mailContent != null and mailContent != ''">mail_content,</if>
<if test="mailAddress != null and mailAddress != ''">mail_address,</if> <if test="mailAddress != null and mailAddress != ''">mail_address,</if>
@@ -64,7 +64,18 @@
</where> </where>
ORDER BY create_time DESC ORDER BY create_time DESC
</select> </select>
<select id="selectTemplateListByIds" resultMap="TemplateManageResult">
SELECT *
FROM ms_template_manage_file
<where>
<if test="fileIds != null">
and file_id in
<foreach collection="fileIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
</select>
<select id="selectById" resultMap="TemplateManageResult"> <select id="selectById" resultMap="TemplateManageResult">
select * from ms_template_manage where id=#{id} select * from ms_template_manage where id=#{id}
</select> </select>
@@ -135,10 +146,18 @@
; ;
</delete> </delete>
<delete id="deleteTemplateManageFileByIdAndType">
delete from ms_template_manage_file where template_manage_id = #{id} and tem_type in
<foreach collection="types" item="it" open="(" separator="," close=")">
#{it}
</foreach>
;
</delete>
<select id="selectByIdAndType" resultMap="TemplateManageResult"> <select id="selectByIdAndType" resultMap="TemplateManageResult">
select f.* from ms_template_manage m join ms_template_manage_file f on m.id=f.template_manage_id select f.* from ms_template_manage m join ms_template_manage_file f on m.id=f.template_manage_id
where f.template_manage_id=#{templateId} and f.tem_type=#{type} oeder by f.file_id desc limit 1 where f.template_manage_id=#{templateId} and f.tem_type=#{type} order by f.file_id desc limit 1
</select> </select>
<select id="selectFileById" resultMap="TemplateManageResult"> <select id="selectFileById" resultMap="TemplateManageResult">
@@ -150,4 +169,8 @@
select m.* ,f.* from ms_template_manage m join ms_template_manage_file f on m.id=f.template_manage_id select m.* ,f.* from ms_template_manage m join ms_template_manage_file f on m.id=f.template_manage_id
where m.id=#{id} where m.id=#{id}
</select> </select>
<select id="selectByCreditCode" resultType="java.lang.Long">
select m.id from ms_dept_identify i join ms_template_manage m on m.identify_id=i.id
where i.credit_code=#{creditCode} and i.del_flag=0 and i.identify_status=1 limit 1
</select>
</mapper> </mapper>