流程监管相关功能

This commit is contained in:
ly19960718 2021-12-03 14:23:54 +08:00
parent 282c4271d0
commit 502523ec43
13 changed files with 645 additions and 16 deletions

View File

@ -0,0 +1,54 @@
package cn.com.tenlion.pojo.vos.oversee;
import ink.wgink.annotation.CheckEmptyAnnotation;
import ink.wgink.annotation.CheckNumberAnnotation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
*
* @ClassName: OverseeVO
* @Description: 督办信息
* @Author: CodeFactory
* @Date: 2021-11-08 10:09:51
* @Version: 3.0
**/
@ApiModel
public class OverseeVO {
@ApiModelProperty(name = "taskId", value = "任务ID")
private String taskId;
@ApiModelProperty(name = "overseeContent", value = "督办内容")
private String overseeContent;
@ApiModelProperty(name = "overseeWay", value = "督办方式 notice 站内通知 nm 站内+短信")
private String overseeWay;
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public String getOverseeContent() {
return overseeContent == null ? "" : overseeContent.trim();
}
public void setOverseeContent(String overseeContent) {
this.overseeContent = overseeContent;
}
public String getOverseeWay() {
return overseeWay == null ? "" : overseeWay.trim();
}
public void setOverseeWay(String overseeWay) {
this.overseeWay = overseeWay;
}
}

View File

@ -0,0 +1,25 @@
package cn.com.tenlion.pojo.vos.remote;
import java.util.List;
public class IdsVO {
private List<String> ids;
private List<String> ids2;
public List<String> getIds() {
return ids;
}
public void setIds(List<String> ids) {
this.ids = ids;
}
public List<String> getIds2() {
return ids2;
}
public void setIds2(List<String> ids2) {
this.ids2 = ids2;
}
}

View File

@ -0,0 +1,51 @@
package cn.com.tenlion.pojo.vos.rulehandletime;
import ink.wgink.annotation.CheckEmptyAnnotation;
import ink.wgink.annotation.CheckNumberAnnotation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
*
* @ClassName: RuleHandletimeVO
* @Description: 时效规则
* @Author: CodeFactory
* @Date: 2021-11-05 16:15:36
* @Version: 3.0
**/
@ApiModel
public class RuleHandletimeVO {
@ApiModelProperty(name = "nodeId", value = "节点ID")
private String nodeId;
@ApiModelProperty(name = "ruleTimeType", value = "时限类型")
private String ruleTimeType;
@ApiModelProperty(name = "ruleTime", value = "时限")
@CheckNumberAnnotation(name = "时限")
private int ruleTime;
public String getNodeId() {
return nodeId;
}
public void setNodeId(String nodeId) {
this.nodeId = nodeId;
}
public String getRuleTimeType() {
return ruleTimeType;
}
public void setRuleTimeType(String ruleTimeType) {
this.ruleTimeType = ruleTimeType;
}
public int getRuleTime() {
return ruleTime;
}
public void setRuleTime(int ruleTime) {
this.ruleTime = ruleTime;
}
}

View File

@ -0,0 +1,50 @@
package cn.com.tenlion.pojo.vos.ruleoversee;
import ink.wgink.annotation.CheckEmptyAnnotation;
import ink.wgink.annotation.CheckNumberAnnotation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
*
* @ClassName: RuleOverseeVO
* @Description: 督办规则
* @Author: CodeFactory
* @Date: 2021-11-04 15:57:14
* @Version: 3.0
**/
@ApiModel
public class RuleOverseeVO {
@ApiModelProperty(name = "nodeId", value = "节点ID")
private String nodeId;
@ApiModelProperty(name = "ruleTimeType", value = "时限类型")
private String ruleTimeType;
@ApiModelProperty(name = "ruleTime", value = "时限")
@CheckNumberAnnotation(name = "时限")
private int ruleTime;
public String getNodeId() {
return nodeId == null ? "" : nodeId.trim();
}
public void setNodeId(String nodeId) {
this.nodeId = nodeId;
}
public String getRuleTimeType() {
return ruleTimeType;
}
public void setRuleTimeType(String ruleTimeType) {
this.ruleTimeType = ruleTimeType;
}
public int getRuleTime() {
return ruleTime;
}
public void setRuleTime(int ruleTime) {
this.ruleTime = ruleTime;
}
}

View File

@ -0,0 +1,71 @@
package cn.com.tenlion.pojo.vos.rulewarning;
import ink.wgink.annotation.CheckEmptyAnnotation;
import ink.wgink.annotation.CheckNumberAnnotation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
*
* @ClassName: RuleWarningVO
* @Description: 预警规则
* @Author: CodeFactory
* @Date: 2021-11-05 16:49:03
* @Version: 3.0
**/
@ApiModel
public class RuleWarningVO {
@ApiModelProperty(name = "nodeId", value = "节点ID")
private String nodeId;
@ApiModelProperty(name = "yellowRuleTimeType", value = "黄牌时限类型")
private String yellowRuleTimeType;
@ApiModelProperty(name = "yellowRuleTime", value = "黄牌时限")
@CheckNumberAnnotation(name = "黄牌时限")
private int yellowRuleTime;
@ApiModelProperty(name = "redRuleTimeType", value = "红牌时限类型")
private String redRuleTimeType;
@ApiModelProperty(name = "redRuleTime", value = "红牌时限")
@CheckNumberAnnotation(name = "红牌时限")
private int redRuleTime;
public String getNodeId() {
return nodeId;
}
public void setNodeId(String nodeId) {
this.nodeId = nodeId;
}
public String getYellowRuleTimeType() {
return yellowRuleTimeType;
}
public void setYellowRuleTimeType(String yellowRuleTimeType) {
this.yellowRuleTimeType = yellowRuleTimeType;
}
public int getYellowRuleTime() {
return yellowRuleTime;
}
public void setYellowRuleTime(int yellowRuleTime) {
this.yellowRuleTime = yellowRuleTime;
}
public String getRedRuleTimeType() {
return redRuleTimeType;
}
public void setRedRuleTimeType(String redRuleTimeType) {
this.redRuleTimeType = redRuleTimeType;
}
public int getRedRuleTime() {
return redRuleTime;
}
public void setRedRuleTime(int redRuleTime) {
this.redRuleTime = redRuleTime;
}
}

View File

@ -0,0 +1,66 @@
package cn.com.tenlion.pojo.vos.taskmsg;
import ink.wgink.annotation.CheckEmptyAnnotation;
import io.swagger.annotations.ApiModelProperty;
import java.lang.reflect.Array;
public class SmsPhoneVO {
@ApiModelProperty(name = "content", value = "发送内容")
@CheckEmptyAnnotation(name="发送内容")
private String content;
@ApiModelProperty(name = "phones", value = "手机号码列表")
@CheckEmptyAnnotation(name="手机号码")
private Array phones;
@ApiModelProperty(name = "sendUserId", value = "发送人用户ID")
@CheckEmptyAnnotation(name="发送人用户ID")
private String sendUserId;
@ApiModelProperty(name = "sendUserName", value = "发送人昵称")
@CheckEmptyAnnotation(name="发送人昵称")
private String sendUserName;
@ApiModelProperty(name = "sendUserUsername", value = "发送人用户名")
@CheckEmptyAnnotation(name="发送人用户名")
private String sendUserUsername;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Array getPhones() {
return phones;
}
public void setPhones(Array phones) {
this.phones = phones;
}
public String getSendUserId() {
return sendUserId;
}
public void setSendUserId(String sendUserId) {
this.sendUserId = sendUserId;
}
public String getSendUserName() {
return sendUserName;
}
public void setSendUserName(String sendUserName) {
this.sendUserName = sendUserName;
}
public String getSendUserUsername() {
return sendUserUsername;
}
public void setSendUserUsername(String sendUserUsername) {
this.sendUserUsername = sendUserUsername;
}
}

View File

@ -68,6 +68,16 @@ public class HandleServiceImpl extends DefaultBaseService implements IHandleServ
public HandleDTO getByTaskId(String taskId){
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
if(task == null){
@ -77,9 +87,7 @@ public class HandleServiceImpl extends DefaultBaseService implements IHandleServ
if(handleId == null){
throw new SearchException("系统异常");
}
return this.get(handleId.toString());
}
@ -125,7 +133,7 @@ public class HandleServiceImpl extends DefaultBaseService implements IHandleServ
}
/**
* 发送通过信号
* 发送通过信号废弃
*/
public void sendPassSignal(String reprotId,Map<String,Object> params){
String processInstanceId = activitiBaseService.getProcessInstanceId(reprotId);
@ -271,7 +279,6 @@ public class HandleServiceImpl extends DefaultBaseService implements IHandleServ
public void setParams(List<HandleDTO> list){
//设置处理人姓名
for (HandleDTO handleDTO : list) {
UserDTO userDTO = userBaseService.get(handleDTO.getCreator());
@ -279,12 +286,6 @@ public class HandleServiceImpl extends DefaultBaseService implements IHandleServ
handleDTO.setCreatorName(userDTO.getUserName());
}
}
}

View File

@ -0,0 +1,132 @@
<!doctype html>
<html lang="en">
<head>
<base href="/case/">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
<style>
html{
background-color: #ffffff;
}
</style>
</head>
<body>
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<ul class="layui-timeline" id="logTemplateView">
<script type="text/html" id="logTemplate">
{{# layui.each(d, function(index, item){ }}
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<h3 class="layui-timeline-title">
{{ item.gmtCreate }}
</h3>
<p>
<table class="layui-table" style="width: 1000px">
<thead>
<tr>
<th>分拨人</th>
<th>分拨时间</th>
<th>分拨范围</th>
<th>分拨类型</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ item.creatorName}}</td>
<td>{{ item.gmtCreate }}</td>
<td>{{ item.distributionTypeText }}</td>
<td>{{ item.distributionDeptTypeText }}</td>
</tr>
<tr>
<td>
分拨说明
</td>
<td colspan="3">
{{ item.distributionSummary }}
</td>
</tr>
<tr>
<td colspan="5" style="text-align: center">
分拨责任单位
</td>
</tr>
<tr style="background-color: #f2f2f2">
<th>单位名称</th>
<th>处理类型</th>
<th>处理状态</th>
<th>时间</th>
</tr>
{{# var userList = item.distributionUserList;}}
{{# for(var i = 0, it = userList[i]; it = userList[i++];) { }}
<tr>
<td>{{ it.userDeptName }}</td>
<td>{{ it.userTypeText }}</td>
<td>{{ it.userStatusText }}</td>
<td>{{ it.gmtCreate }}</td>
</tr>
{{# } }}
</tbody>
</table>
</p>
</div>
</li>
{{# }); }}
</script>
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<div class="layui-timeline-title">暂无</div>
</div>
</li>
</ul>
</form>
</body>
<script src="assets/js/vendor/wangEditor/wangEditor.min.js"></script>
<script src="assets/js/vendor/ckplayer/ckplayer/ckplayer.js"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate', 'laytpl'], function(){
var $ = layui.$;
var form = layui.form;
var laytpl = layui.laytpl;
var businessId = top.restAjax.params(window.location.href).businessId;
// 初始化内容
function initData() {
var loadLayerIndex;
top.restAjax.get(top.restAjax.path('api/distribution/list-history/{businessId}', [businessId]), {}, null, function(code, data) {
console.log(data)
laytpl(document.getElementById('logTemplate').innerHTML).render(data, function(html) {
document.getElementById('logTemplateView').innerHTML = html;
form.render(null, 'dataForm');
});
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
}
initData();
});
</script>
</body>
</html>

View File

@ -0,0 +1,156 @@
<!doctype html>
<html lang="en">
<head>
<base href="/case/">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
</head>
<body>
<div class="layui-fluid layui-anim layui-anim-fadein" style="background-color: #fff">
<div class="layui-collapse" lay-filter="test">
<div class="layui-colla-item">
<h2 class="layui-colla-title">分拨详情</h2>
<div class="layui-colla-content">
<form class="layui-form layui-form-pane" lay-filter="allocateForm">
<div class="layui-row layui-col-space10">
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">分拨人</label>
<div class="layui-input-block">
<input type="text" class="layui-input" name="distributionTypeText" readonly>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">分拨时间</label>
<div class="layui-input-block">
<input type="text" class="layui-input" name="distributionTypeText" readonly>
</div>
</div>
</div>
</div>
<div class="layui-row layui-col-space10">
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">分拨范围</label>
<div class="layui-input-block">
<input type="text" class="layui-input" name="distributionTypeText" readonly>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">分拨类型</label>
<div class="layui-input-block">
<input type="text" class="layui-input" name="distributionTypeText" readonly>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">分拨说明</label>
<div class="layui-input-block">
<textarea class="layui-textarea"></textarea>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">分拨单位</label>
<div class="layui-input-block">
<textarea class="layui-textarea"></textarea>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="layui-colla-item">
<h2 class="layui-colla-title">责任单位处理详情</h2>
<div class="layui-colla-content">
<p>因为不适合。如果希望开发长期的项目或者制作产品类网站,那么就需要实现特定的设计,为了在维护项目中可以方便地按设计师要求快速修改样式,肯定会逐步编写出各种业务组件、工具类,相当于为项目自行开发一套框架。——来自知乎@Kayo</p>
</div>
</div>
</div>
<!-- <div class="layui-card">
<div class="layui-card-header">
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
<a class="close" href="javascript:void(0);">上级列表</a><span lay-separator="">/</span>
<a href="javascript:void(0);"><cite>新增内容</cite></a>
</span>
</div>
<div class="layui-card-body" style="padding: 15px;">
</div>
</div>-->
</div>
<script src="assets/js/vendor/wangEditor/wangEditor.min.js"></script>
<script src="assets/js/vendor/ckplayer/ckplayer/ckplayer.js"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate', 'laytpl' ,'element'], function(){
var $ = layui.$;
var form = layui.form;
var laytpl = layui.laytpl;
var laydate = layui.laydate;
var wangEditor = window.wangEditor;
var element = layui.element;
var wangEditorObj = {};
var viewerObj = {};
var memberLevel = top.restAjax.params(window.location.href).memberLevel;
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
$('.close').on('click', function() {
closeBox();
});
});
</script>
</body>
</html>

View File

@ -159,6 +159,15 @@
});
function selectSpecialUser(){
var specialDeptId = $('#specialDeptId').val();
var specialDeptName = $('#specialDeptName').val();
if(specialDeptId == ''){
var selectedNodes = [];
selectedNodes.id = specialDeptId;
selectedNodes.name = specialDeptName;
top.dialog.dialogTreeData.selectedNodes = selectedNodes;
}
top.dialog.open({
url: top.restAjax.path('route/taskbase/allocate/select-dept.html', []),
title: '选择专办单位',

View File

@ -282,6 +282,20 @@
reloadTable();
}
});
}else if(layEvent === 'handleEvent'){
layer.open({
type: 2,
title: '评价结果',
closeBtn: 1,
area: ['90%', '90%'],
shadeClose: false,
anim: 2,
maxmin:false,
content: top.restAjax.path('route/handle/show-report.html?reportId={reportId}', [data.reportId]),
end: function() {
reloadTable();
}
});
}
});

View File

@ -28,13 +28,13 @@
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">核查说明</label>
<div class="layui-input-block">
<textarea id="checkContent" name="checkContent" class="layui-textarea" placeholder="请输入核查说明"></textarea>
<textarea lay-verify="required" id="checkContent" name="checkContent" class="layui-textarea" placeholder="请输入核查说明"></textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">核查照片</label>
<label class="layui-form-label">核查照片(最多九张)</label>
<div class="layui-input-block">
<input type="hidden" id="checkPhotos" name="checkPhotos">
<input lay-verify="required" type="hidden" id="checkPhotos" name="checkPhotos">
<div class="layui-btn-container" id="checkPhotosFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="checkPhotosFileDownload" type="text/html">
{{# var fileName = 'checkPhotos'; }}

View File

@ -28,13 +28,13 @@
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">核查说明</label>
<div class="layui-input-block">
<textarea id="checkContent" name="checkContent" class="layui-textarea" placeholder="请输入核查说明"></textarea>
<textarea lay-verify="required" id="checkContent" name="checkContent" class="layui-textarea" placeholder="请输入核查说明"></textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">核查照片</label>
<label class="layui-form-label">核查照片(最多九张)</label>
<div class="layui-input-block">
<input type="hidden" id="checkPhotos" name="checkPhotos">
<input lay-verify="required" type="hidden" id="checkPhotos" name="checkPhotos">
<div class="layui-btn-container" id="checkPhotosFileBox" style="border: 1px solid #e6e6e6;"></div>
<script id="checkPhotosFileDownload" type="text/html">
{{# var fileName = 'checkPhotos'; }}