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.system.domain.FlowProcDefDto;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.flowable.bpmn.model.UserTask;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author Tony
@ -120,4 +116,11 @@ public interface IFlowDefinitionService {
* @return
*/
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.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.repository.ProcessDefinitionQuery;
@ -207,6 +208,20 @@ public class FlowDefinitionServiceImpl extends FlowServiceFactory implements IFl
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
*

View File

@ -99,6 +99,9 @@ public class FlowTaskEntity extends BaseEntity{
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date finishTime;
@ApiModelProperty("任务完成类型")
private String taskComType;
private long deptId;
private long projectId;
@ -345,4 +348,12 @@ public class FlowTaskEntity extends BaseEntity{
public void setBusinessKey(String 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 = [];
for (let i = 0; i < this.projectUnitUsers.length; i++) {
if (this.projectUnitUsers[i].projectId == row.projectId) {
data = this.projectUnitUsers[i].data;
data = this.projectUnitUsers[i].fjdata;
break;
}
}

View File

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

View File

@ -22,6 +22,7 @@ import com.ruoyi.system.service.ISysUserService;
import com.yanzhu.jh.project.service.ISurProjectAuditinfoService;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.flowable.bpmn.model.UserTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -289,4 +290,22 @@ public class WcFlowableController extends BaseController {
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.nick_name AS assigneeName,
td.dept_name AS assigneeDeptName,
ht.PROC_INST_ID_
ht.PROC_INST_ID_,
ahc.TYPE_ as taskComType
FROM
act_hi_taskinst ht
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 act_hi_comment ahc on ahc.TASK_ID_ = ht.ID_ AND ahc.PROC_INST_ID_ is not NULL
WHERE
ht.ID_ IN (
SELECT
@ -85,9 +87,9 @@ LEFT JOIN (
PROC_INST_ID_
)
GROUP BY ht.PROC_INST_ID_
) ht ON ht.PROC_INST_ID_ = RES.PROC_INST_ID_
)
##待办
DROP view vw_flow_await;
CREATE VIEW vw_flow_await AS (SELECT
@ -152,49 +154,6 @@ WHERE
##审批意见
DROP view vw_flow_comment;
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
hc.ID_ AS commentId,
hc.TYPE_ AS commentType,
@ -268,7 +227,8 @@ DEF.END_TIME_ as finishTime,
ru.user_id AS startUserId,
ru.nick_name AS startUserName,
rd.dept_name AS startDeptName,
RES.ASSIGNEE_
RES.ASSIGNEE_,
ahc.TYPE_ as taskComType
FROM
act_hi_taskinst RES
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 JOIN sys_user ru ON ru.user_id = RES.ASSIGNEE_
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
RES.ASSIGNEE_ is not null and RES.END_TIME_ is not null)
##君哥其它sql
CREATE VIEW vw_smz_ssp_problemmodify_audit
AS

View File

@ -100,6 +100,7 @@ public class WeChatMessageServiceImpl {
WxMpTemplateMessage copyTemplateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(copySendUser))
.templateId(TemplateMessageEnum.TROUBLE_SUBMIT.getId())
.miniProgram(new WxMpTemplateMessage.MiniProgram(WechatAccountConfig.getWxAppId(), "/pageage/project_problemmodify/"+handlePath+"/list/index?barProId="+smzSspProblemmodify.getProjectId()))
.build();
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()+"")+""));
@ -126,6 +127,25 @@ public class WeChatMessageServiceImpl {
templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改提交复检"));
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){
/**
*
@ -142,6 +162,26 @@ public class WeChatMessageServiceImpl {
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time3", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改复检驳回,请重新提交整改"));
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){
/**
*
@ -158,6 +198,26 @@ public class WeChatMessageServiceImpl {
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time3", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("const10", "隐患整改复检通过"));
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);
}