dev_xds
姜玉琦 2024-04-14 22:14:26 +08:00
parent d57b016f25
commit ed2f1aba5f
8 changed files with 123 additions and 53 deletions

View File

@ -5,16 +5,12 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.flowable.domain.vo.ProcKeyRole; import com.ruoyi.flowable.domain.vo.ProcKeyRole;
import com.ruoyi.system.domain.FlowProcDefDto; import com.ruoyi.system.domain.FlowProcDefDto;
import org.flowable.bpmn.model.FlowElement; import org.flowable.bpmn.model.FlowElement;
import org.flowable.engine.repository.ProcessDefinition; import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
/** /**
* @author Tony * @author Tony
@ -120,4 +116,11 @@ public interface IFlowDefinitionService {
* @return * @return
*/ */
public void updateProcKeyRoleSort(ProcKeyRole procKeyRole); public void updateProcKeyRoleSort(ProcKeyRole procKeyRole);
/**
*
* @param deployId
* @return
*/
public List<UserTask> findFlowNodes(String deployId);
} }

View File

@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement; import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.repository.ProcessDefinitionQuery; import org.flowable.engine.repository.ProcessDefinitionQuery;
@ -207,6 +208,20 @@ public class FlowDefinitionServiceImpl extends FlowServiceFactory implements IFl
return list; return list;
} }
/**
*
* @param deployId
* @return
*/
@Override
public List<UserTask> findFlowNodes(String deployId){
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployId).singleResult();
//获得图片流
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
List<UserTask> list = bpmnModel.getProcesses().get(0).findFlowElementsOfType(UserTask.class);
return list;
}
/** /**
* ID * ID
* *

View File

@ -99,6 +99,9 @@ public class FlowTaskEntity extends BaseEntity{
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date finishTime; private Date finishTime;
@ApiModelProperty("任务完成类型")
private String taskComType;
private long deptId; private long deptId;
private long projectId; private long projectId;
@ -345,4 +348,12 @@ public class FlowTaskEntity extends BaseEntity{
public void setBusinessKey(String businessKey) { public void setBusinessKey(String businessKey) {
this.businessKey = businessKey; this.businessKey = businessKey;
} }
public String getTaskComType() {
return taskComType;
}
public void setTaskComType(String taskComType) {
this.taskComType = taskComType;
}
} }

View File

@ -682,7 +682,7 @@ export default {
let data = []; let data = [];
for (let i = 0; i < this.projectUnitUsers.length; i++) { for (let i = 0; i < this.projectUnitUsers.length; i++) {
if (this.projectUnitUsers[i].projectId == row.projectId) { if (this.projectUnitUsers[i].projectId == row.projectId) {
data = this.projectUnitUsers[i].data; data = this.projectUnitUsers[i].fjdata;
break; break;
} }
} }

View File

@ -682,7 +682,7 @@ export default {
let data = []; let data = [];
for (let i = 0; i < this.projectUnitUsers.length; i++) { for (let i = 0; i < this.projectUnitUsers.length; i++) {
if (this.projectUnitUsers[i].projectId == row.projectId) { if (this.projectUnitUsers[i].projectId == row.projectId) {
data = this.projectUnitUsers[i].data; data = this.projectUnitUsers[i].fjdata;
break; break;
} }
} }

View File

@ -22,6 +22,7 @@ import com.ruoyi.system.service.ISysUserService;
import com.yanzhu.jh.project.service.ISurProjectAuditinfoService; import com.yanzhu.jh.project.service.ISurProjectAuditinfoService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.flowable.bpmn.model.UserTask;
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.*;
@ -289,4 +290,22 @@ public class WcFlowableController extends BaseController {
return success(flowBusinessKeyService.quueryCount(flowTaskEntity)); return success(flowBusinessKeyService.quueryCount(flowTaskEntity));
} }
/**
*
* @param deployId
* @return
*/
@ApiOperation(value = "查询流程节点")
@GetMapping("/readDeployNotes/{deployId}")
public AjaxResult readDeployNotes(@ApiParam(value = "流程定义id") @PathVariable(value = "deployId") String deployId) {
String key = "YANZHU.FLOW.readDeployNotes:" + deployId;
Object object = redisCache.getCacheObject(key);
if (object != null) {
return success(object);
}
List<UserTask> list = flowDefinitionService.findFlowNodes(deployId);
redisCache.setCacheObject(key, list, 2, TimeUnit.MINUTES);
return success(list);
}
} }

View File

@ -70,11 +70,13 @@ LEFT JOIN (
tu.user_id AS assigneeId, tu.user_id AS assigneeId,
tu.nick_name AS assigneeName, tu.nick_name AS assigneeName,
td.dept_name AS assigneeDeptName, td.dept_name AS assigneeDeptName,
ht.PROC_INST_ID_ ht.PROC_INST_ID_,
ahc.TYPE_ as taskComType
FROM FROM
act_hi_taskinst ht act_hi_taskinst ht
LEFT JOIN sys_user tu ON tu.user_id = ht.ASSIGNEE_ LEFT JOIN sys_user tu ON tu.user_id = ht.ASSIGNEE_
LEFT JOIN sys_dept td ON td.dept_id = tu.dept_id LEFT JOIN sys_dept td ON td.dept_id = tu.dept_id
left join act_hi_comment ahc on ahc.TASK_ID_ = ht.ID_ AND ahc.PROC_INST_ID_ is not NULL
WHERE WHERE
ht.ID_ IN ( ht.ID_ IN (
SELECT SELECT
@ -85,9 +87,9 @@ LEFT JOIN (
PROC_INST_ID_ PROC_INST_ID_
) )
GROUP BY ht.PROC_INST_ID_ GROUP BY ht.PROC_INST_ID_
) ht ON ht.PROC_INST_ID_ = RES.PROC_INST_ID_ ) ht ON ht.PROC_INST_ID_ = RES.PROC_INST_ID_
) )
##待办 ##待办
DROP view vw_flow_await; DROP view vw_flow_await;
CREATE VIEW vw_flow_await AS (SELECT CREATE VIEW vw_flow_await AS (SELECT
@ -152,49 +154,6 @@ WHERE
##审批意见 ##审批意见
DROP view vw_flow_comment; DROP view vw_flow_comment;
CREATE VIEW vw_flow_comment AS ( CREATE VIEW vw_flow_comment AS (
SELECT
hc.ID_ AS commentId,
hc.TYPE_ AS commentType,
ht.ID_ AS taskId,
ht.NAME_ AS taskName,
ht.REV_ AS rev,
CASE
WHEN hc.TYPE_ = 1
AND ht.REV_ != 2 THEN
'通过'
WHEN hc.TYPE_ != 1 THEN
'驳回'
END AS commentResult,
ht.PROC_INST_ID_ AS procInstId,
ht.TASK_DEF_KEY_ AS taskDefKey,
ht.EXECUTION_ID_ AS executionId,
ht.DELETE_REASON_ AS deleteReason,
DATE_FORMAT(
ht.START_TIME_,
'%Y-%m-%d %H:%i:%S'
) AS startTime,
DATE_FORMAT(
ht.END_TIME_,
'%Y-%m-%d %H:%i:%S'
) AS endTime,
ht.DURATION_ AS duration,
hc.MESSAGE_ AS message,
ru.nick_name AS assigneeName,
rd.dept_name AS deptName,
r.role_name as candidate
FROM
act_hi_taskinst ht
LEFT JOIN act_hi_comment hc ON hc.TASK_ID_ = ht.ID_
LEFT JOIN act_hi_identitylink hi on hi.TASK_ID_ = ht.ID_ and hi.TYPE_ = 'candidate'
left JOIN sys_role r on r.role_id = hi.group_Id_
LEFT JOIN sys_user ru ON ru.user_id = ht.ASSIGNEE_
LEFT JOIN sys_dept rd ON rd.dept_id = ru.dept_id
where hc.TYPE_ is null or hc.TYPE_!='event'
)
##审批意见V2
DROP view vw_flow_comment;
CREATE VIEW vw_flow_comment AS (
SELECT SELECT
hc.ID_ AS commentId, hc.ID_ AS commentId,
hc.TYPE_ AS commentType, hc.TYPE_ AS commentType,
@ -268,7 +227,8 @@ DEF.END_TIME_ as finishTime,
ru.user_id AS startUserId, ru.user_id AS startUserId,
ru.nick_name AS startUserName, ru.nick_name AS startUserName,
rd.dept_name AS startDeptName, rd.dept_name AS startDeptName,
RES.ASSIGNEE_ RES.ASSIGNEE_,
ahc.TYPE_ as taskComType
FROM FROM
act_hi_taskinst RES act_hi_taskinst RES
LEFT OUTER JOIN act_hi_procinst DEF ON RES.PROC_INST_ID_ = DEF.PROC_INST_ID_ LEFT OUTER JOIN act_hi_procinst DEF ON RES.PROC_INST_ID_ = DEF.PROC_INST_ID_
@ -276,9 +236,11 @@ LEFT OUTER join act_re_procdef pd on RES.PROC_DEF_ID_ = pd.ID_
LEFT OUTER JOIN sur_project sp ON DEF.BUSINESS_KEY_ = sp.id LEFT OUTER JOIN sur_project sp ON DEF.BUSINESS_KEY_ = sp.id
LEFT JOIN sys_user ru ON ru.user_id = RES.ASSIGNEE_ LEFT JOIN sys_user ru ON ru.user_id = RES.ASSIGNEE_
LEFT JOIN sys_dept rd ON rd.dept_id = ru.dept_id LEFT JOIN sys_dept rd ON rd.dept_id = ru.dept_id
left join act_hi_comment ahc on ahc.TASK_ID_ = RES.ID_ AND ahc.PROC_INST_ID_ is not NULL
WHERE WHERE
RES.ASSIGNEE_ is not null and RES.END_TIME_ is not null) RES.ASSIGNEE_ is not null and RES.END_TIME_ is not null)
##君哥其它sql ##君哥其它sql
CREATE VIEW vw_smz_ssp_problemmodify_audit CREATE VIEW vw_smz_ssp_problemmodify_audit
AS AS

View File

@ -100,6 +100,7 @@ public class WeChatMessageServiceImpl {
WxMpTemplateMessage copyTemplateMessage = WxMpTemplateMessage.builder() WxMpTemplateMessage copyTemplateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(copySendUser)) .toUser(this.getMsgId(copySendUser))
.templateId(TemplateMessageEnum.TROUBLE_SUBMIT.getId()) .templateId(TemplateMessageEnum.TROUBLE_SUBMIT.getId())
.miniProgram(new WxMpTemplateMessage.MiniProgram(WechatAccountConfig.getWxAppId(), "/pageage/project_problemmodify/"+handlePath+"/list/index?barProId="+smzSspProblemmodify.getProjectId()))
.build(); .build();
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("thing7", this.getMsgProName(smzSspProblemmodify.getProjectId()))); copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("thing7", this.getMsgProName(smzSspProblemmodify.getProjectId())));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("thing5", this.getMsgName(smzSspProblemmodify.getCreateUser())+""+DictUtils.getDictLabel("sys_ssp_yhfl",smzSspProblemmodify.getRoleType()+"")+"")); copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("thing5", this.getMsgName(smzSspProblemmodify.getCreateUser())+""+DictUtils.getDictLabel("sys_ssp_yhfl",smzSspProblemmodify.getRoleType()+"")+""));
@ -126,6 +127,25 @@ public class WeChatMessageServiceImpl {
templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改提交复检")); templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改提交复检"));
list.add(templateMessage); list.add(templateMessage);
/**
*
*/
if(StringUtils.isNotBlank(smzSspProblemmodify.getCopySendUser())){
String[] copySendUsers = smzSspProblemmodify.getCopySendUser().split(",");
for(String copySendUser:copySendUsers){
WxMpTemplateMessage copyTemplateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(smzSspProblemmodify.getRecheckSendUser()))
.templateId(this.getMsgId(copySendUser))
.miniProgram(new WxMpTemplateMessage.MiniProgram(WechatAccountConfig.getWxAppId(), "/pageage/project_problemmodify/"+handlePath+"/list/index?barProId="+smzSspProblemmodify.getProjectId()))
.build();
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("thing11", this.getMsgProName(smzSspProblemmodify.getProjectId())));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("const16", infoTypeName+"/"+ DictUtils.getDictLabel(infoTypeDict,smzSspProblemmodify.getDangerType())));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", smzSspProblemmodify.getLordSent()));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("time3", DateUtils.getTime()));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改提交复检"));
list.add(copyTemplateMessage);
}
}
} else if(state==3){ } else if(state==3){
/** /**
* *
@ -142,6 +162,26 @@ public class WeChatMessageServiceImpl {
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time3", DateUtils.getTime())); templateMessage.addWxMpTemplateData(new WxMpTemplateData("time3", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改复检驳回,请重新提交整改")); templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改复检驳回,请重新提交整改"));
list.add(templateMessage); list.add(templateMessage);
/**
*
*/
if(StringUtils.isNotBlank(smzSspProblemmodify.getCopySendUser())){
String[] copySendUsers = smzSspProblemmodify.getCopySendUser().split(",");
for(String copySendUser:copySendUsers){
WxMpTemplateMessage copyTemplateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(smzSspProblemmodify.getRecheckSendUser()))
.templateId(this.getMsgId(copySendUser))
.miniProgram(new WxMpTemplateMessage.MiniProgram(WechatAccountConfig.getWxAppId(), "/pageage/project_problemmodify/"+handlePath+"/list/index?barProId="+smzSspProblemmodify.getProjectId()))
.build();
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("thing11", this.getMsgProName(smzSspProblemmodify.getProjectId())));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("const16", infoTypeName+"/"+ DictUtils.getDictLabel(infoTypeDict,smzSspProblemmodify.getDangerType())));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", smzSspProblemmodify.getRecheckSend()));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("time3", DateUtils.getTime()));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改复检驳回,请重新提交整改"));
list.add(copyTemplateMessage);
}
}
} else if(state==4){ } else if(state==4){
/** /**
* *
@ -158,6 +198,26 @@ public class WeChatMessageServiceImpl {
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time3", DateUtils.getTime())); templateMessage.addWxMpTemplateData(new WxMpTemplateData("time3", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改复检通过")); templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改复检通过"));
list.add(templateMessage); list.add(templateMessage);
/**
*
*/
if(StringUtils.isNotBlank(smzSspProblemmodify.getCopySendUser())){
String[] copySendUsers = smzSspProblemmodify.getCopySendUser().split(",");
for(String copySendUser:copySendUsers){
WxMpTemplateMessage copyTemplateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(smzSspProblemmodify.getRecheckSendUser()))
.templateId(this.getMsgId(copySendUser))
.miniProgram(new WxMpTemplateMessage.MiniProgram(WechatAccountConfig.getWxAppId(), "/pageage/project_problemmodify/"+handlePath+"/list/index?barProId="+smzSspProblemmodify.getProjectId()))
.build();
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("thing11", this.getMsgProName(smzSspProblemmodify.getProjectId())));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("const16", infoTypeName+"/"+ DictUtils.getDictLabel(infoTypeDict,smzSspProblemmodify.getDangerType())));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", smzSspProblemmodify.getRecheckSend()));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("time3", DateUtils.getTime()));
copyTemplateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改复检通过"));
list.add(copyTemplateMessage);
}
}
} }
this.send(list, MessageTypeEnum.getYHPCLX(smzSspProblemmodify.getInfoType())+state); this.send(list, MessageTypeEnum.getYHPCLX(smzSspProblemmodify.getInfoType())+state);
} }