优化审批相关流程

pull/2/head
sunchenliang 1 year ago
parent 142dc2c080
commit 5c9b8a15ff

@ -1,6 +1,7 @@
package cn.jyjz.flowable.service; package cn.jyjz.flowable.service;
import cn.jyjz.flowable.domain.vo.FlowModelVO; import cn.jyjz.flowable.domain.vo.FlowModelVO;
import org.flowable.task.api.Task;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -36,7 +37,7 @@ public interface IFormCustomService<T> {
* @param deploymentid * @param deploymentid
* @param processdefinitionid * @param processdefinitionid
*/ */
public boolean updateForm(String fromid,String deploymentid,String processdefinitionid,String assignee,String taskId,String processInstanceId,String tasknme); public boolean updateForm(String fromid, String deploymentid, String processdefinitionid, String assignee, String taskId, String processInstanceId, Task task);
/** /**
* *
* @param fromid * @param fromid

@ -93,12 +93,12 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey); throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey);
} }
List<Task> list = this.flowTaskService.nowRunTask(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId()); List<Task> list = this.flowTaskService.nowRunTask(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId());
String taskname = ""; Task task = null;
if (null != list && !list.isEmpty()) { if (null != list && !list.isEmpty()) {
taskname = list.get(0).getName(); task = list.get(0);
} }
//保存instanceId到数据库需要根据流程分类进行判断更新 //保存instanceId到数据库需要根据流程分类进行判断更新
boolean isupdate = iFormCustomService.updateForm(formid, processDefinition.getDeploymentId(), processDefinition.getId(), flowTaskCompleteVO.getAssignee(), flowTaskCompleteVO.getTaskId(), processInstance.getProcessInstanceId(), taskname); boolean isupdate = iFormCustomService.updateForm(formid, processDefinition.getDeploymentId(), processDefinition.getId(), flowTaskCompleteVO.getAssignee(), flowTaskCompleteVO.getTaskId(), processInstance.getProcessInstanceId(), task);
if (isupdate) { if (isupdate) {
FlowModelVO flowModelVO = iFormCustomService.getForm(formid); FlowModelVO flowModelVO = iFormCustomService.getForm(formid);
//增加未查看记录 //增加未查看记录
@ -121,7 +121,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
if (StringUtils.isNotBlank(servicename) && StringUtils.isNotBlank(formid)) { if (StringUtils.isNotBlank(servicename) && StringUtils.isNotBlank(formid)) {
iFormCustomService.delForm(formid); iFormCustomService.delForm(formid);
} }
}finally { } finally {
RequestContextHolder.resetRequestAttributes(); RequestContextHolder.resetRequestAttributes();
} }
return false; return false;
@ -165,12 +165,12 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey); throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey);
} }
List<Task> list = this.flowTaskService.nowRunTask(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId()); List<Task> list = this.flowTaskService.nowRunTask(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId());
String taskname = ""; Task task = null;
if (null != list && !list.isEmpty()) { if (null != list && !list.isEmpty()) {
taskname = list.get(0).getName(); task = list.get(0);
} }
//保存instanceId到数据库需要根据流程分类进行判断更新 //保存instanceId到数据库需要根据流程分类进行判断更新
boolean isupdate = iFormCustomService.updateForm(formid, processDefinition.getDeploymentId(), processDefinition.getId(), flowTaskCompleteVO.getAssignee(), flowTaskCompleteVO.getTaskId(), processInstance.getProcessInstanceId(), taskname); boolean isupdate = iFormCustomService.updateForm(formid, processDefinition.getDeploymentId(), processDefinition.getId(), flowTaskCompleteVO.getAssignee(), flowTaskCompleteVO.getTaskId(), processInstance.getProcessInstanceId(), task);
if (isupdate) { if (isupdate) {
FlowModelVO flowModelVO = iFormCustomService.getForm(formid); FlowModelVO flowModelVO = iFormCustomService.getForm(formid);
//增加未查看记录 //增加未查看记录

@ -480,28 +480,10 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
} }
OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(taskVO.getFormid())); OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(taskVO.getFormid()));
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
cn.jyjz.xiaoyao.common.base.vo.User byLoginname = userTokenService.findByLoginname(childPicture.getAssignee()); sendMsg(childPicture,userToken);
OcrMsg msg = new OcrMsg(); childPicture.setTaskId(taskData.getId());
msg.setCreateTime(System.currentTimeMillis()); childPicture.setTaskname(taskData.getName());
msg.setSendTime(System.currentTimeMillis()); ocrTaskchildPictureService.updateById(childPicture);
msg.setReceiveUserIds(byLoginname.getId().toString());
msg.setTitile(model.getFromtaskname());
msg.setSender(Long.valueOf(userToken.getUserid()));
JSONObject jsonObject = new JSONObject();
jsonObject.put("taskId", model.getFromtaskid());
jsonObject.put("nodeName", model.getTaskname());
jsonObject.put("states", 1);
jsonObject.put("sendUserId", userToken.getUserid());
jsonObject.put("sendUserName", userToken.getUsername());
jsonObject.put("sendTime", System.currentTimeMillis());
jsonObject.put("fromId", model.getId().toString());
jsonObject.put("taskName", model.getFromtaskname());
jsonObject.put("packageId", model.getPackageid());
msg.setBusJson(jsonObject.toJSONString());
msg.setCreateBy(Long.valueOf(userToken.getUserid()));
msg.setCreateTime(System.currentTimeMillis());
msg.setSendStatus("1");
ocrMsgService.save(msg);
} }
//增加未查看记录 //增加未查看记录
userViewApproeService.saveUserViewApproe(formData.getAssignee(), formData.getFormid().toString(), formData.getTenantid().toString()); userViewApproeService.saveUserViewApproe(formData.getAssignee(), formData.getFormid().toString(), formData.getTenantid().toString());
@ -550,6 +532,31 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
return false; return false;
} }
private void sendMsg(OcrTaskchildPicture model,UserToken userToken){
cn.jyjz.xiaoyao.common.base.vo.User byLoginname = userTokenService.findByLoginname(model.getAssignee());
OcrMsg msg = new OcrMsg();
msg.setCreateTime(System.currentTimeMillis());
msg.setSendTime(System.currentTimeMillis());
msg.setReceiveUserIds(byLoginname.getId().toString());
msg.setTitile(model.getFromtaskname());
msg.setSender(Long.valueOf(userToken.getUserid()));
JSONObject jsonObject = new JSONObject();
jsonObject.put("taskId", model.getFromtaskid());
jsonObject.put("nodeName", model.getTaskname());
jsonObject.put("states", 1);
jsonObject.put("sendUserId", userToken.getUserid());
jsonObject.put("sendUserName", userToken.getUsername());
jsonObject.put("sendTime", System.currentTimeMillis());
jsonObject.put("fromId", model.getId().toString());
jsonObject.put("taskName", model.getFromtaskname());
jsonObject.put("packageId", model.getPackageid());
msg.setBusJson(jsonObject.toJSONString());
msg.setCreateBy(Long.valueOf(userToken.getUserid()));
msg.setCreateTime(System.currentTimeMillis());
msg.setSendStatus("1");
ocrMsgService.save(msg);
}
/** /**
* *
* *
@ -573,7 +580,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
if (StringUtils.isNotBlank(businesskey)) { if (StringUtils.isNotBlank(businesskey)) {
String[] busskey = businesskey.split(SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT); String[] busskey = businesskey.split(SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT);
iFormCustomService = SpringUtils.getBean(busskey[2]); iFormCustomService = SpringUtils.getBean(busskey[2]);
iFormCustomService.updateForm(busskey[1], processDefinition.getDeploymentId(), processDefinition.getId(), flowTaskCompleteVO.getAssignee(), flowTaskCompleteVO.getTaskId(), processInstanceId, task.getName()); iFormCustomService.updateForm(busskey[1], processDefinition.getDeploymentId(), processDefinition.getId(), flowTaskCompleteVO.getAssignee(), flowTaskCompleteVO.getTaskId(), processInstanceId, task);
} }
} }

@ -195,6 +195,10 @@ public class OcrTaskchildPicture implements BaseDto, java.io.Serializable {
@TableField(value = "TASKNAME") @TableField(value = "TASKNAME")
private String taskname; private String taskname;
@Schema(description = "当前节点id")
@TableField(value = "TASKID")
private String taskId;
@Schema(description = "完成时间") @Schema(description = "完成时间")
@TableField(value = "FINISHTIME") @TableField(value = "FINISHTIME")
private Long finishtime; private Long finishtime;
@ -203,10 +207,6 @@ public class OcrTaskchildPicture implements BaseDto, java.io.Serializable {
@TableField(exist = false) @TableField(exist = false)
private Category categoryDto; private Category categoryDto;
@ApiModelProperty(value = "节点主键")
@TableField(exist = false)
private String taskId;
//节点描述 //节点描述
@ApiModelProperty(value = "节点描述") @ApiModelProperty(value = "节点描述")
@TableField(exist = false) @TableField(exist = false)

@ -319,8 +319,10 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
ocrTaskchildPicture.getId().toString(), ocrTaskchildPicture.getId().toString(),
category.getServicename() category.getServicename()
); );
//TODO 需要测试
ocrPicture.setTaskchildpictureid(ocrTaskchildPicture.getId().toString()); ocrPicture.setTaskchildpictureid(ocrTaskchildPicture.getId().toString());
//修改状态为已生成任务并且审批状态为审批中
ocrPicture.setTaskstatus("1");
ocrPicture.setWorkStatus("1");
ocrPictureService.updateById(ocrPicture); ocrPictureService.updateById(ocrPicture);
} }
} }

@ -27,7 +27,9 @@ import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
import cn.jyjz.xiaoyao.upload.upload.UploadSpringUtil; import cn.jyjz.xiaoyao.upload.upload.UploadSpringUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.velocity.shaded.commons.io.FilenameUtils; import org.apache.velocity.shaded.commons.io.FilenameUtils;
import org.flowable.task.api.Task;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -224,14 +226,17 @@ public class TaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchildPic
} }
@Override @Override
public boolean updateForm(String fromid, String deploymentid, String processdefinitionid, String assignee, String taskId, String processInstanceId, String tasknme) { public boolean updateForm(String fromid, String deploymentid, String processdefinitionid, String assignee, String taskId, String processInstanceId, Task task) {
if (StringUtils.isNotBlank(fromid) && StringUtils.isNotBlank(deploymentid) && StringUtils.isNotBlank(processdefinitionid)) { if (StringUtils.isNotBlank(fromid) && StringUtils.isNotBlank(deploymentid) && StringUtils.isNotBlank(processdefinitionid)) {
OcrTaskchildPicture model = this.ocrTaskchildPictureService.selectDtoById(Long.parseLong(fromid)); OcrTaskchildPicture model = this.ocrTaskchildPictureService.selectDtoById(Long.parseLong(fromid));
model.setProcessinstanceid(processInstanceId); model.setProcessinstanceid(processInstanceId);
model.setProcessdefinitionid(processdefinitionid); model.setProcessdefinitionid(processdefinitionid);
model.setDeploymentid(deploymentid); model.setDeploymentid(deploymentid);
model.setAssignee(assignee); model.setAssignee(assignee);
model.setTaskname(tasknme); if(ObjectUtils.isNotEmpty(task)){
model.setTaskname(task.getName());
model.setTaskId(taskId);
}
model.setStates(SystemConstantsOa.OA_STATUS_TYPE_ING); model.setStates(SystemConstantsOa.OA_STATUS_TYPE_ING);
//查询审批人姓名 //查询审批人姓名
String[] assignees = assignee.split(","); String[] assignees = assignee.split(",");

@ -555,16 +555,42 @@
</select> </select>
<select id="getPictureHistoryList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo"> <select id="getPictureHistoryList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo">
SELECT t2.ID id, t2.PICTUREID pictureId, t2.STATES states, t2.PROCESSINSTANCEID processInstanceId, SELECT t2.ID id,
t2.PROCESSDEFINITIONID processDefinitionId, t2.DEPLOYMENTID deploymentId, t2.ASSIGNEENAME assigneeName, t2.ASSIGNEE assignee, t2.PICTUREID pictureId,
t2.FILEANNEX fileAnnex, t2.GUIDANG guiDang, t2.CREATEUSER createUser, t2.CREATEUSERNAME createUserName, t2.CREATEDATE createDate, t2.USERID userId, t2.USERNAME userName, t2.STATES states,
t2.FROMTASKID fromTaskId, t2.FROMTASKNAME fromTaskName, t2.FROMUSERID fromUserId, t2.FROMPROJECTID fromProjectId, t2.FROMPLANID fromPlanId, t2.FROMUPTIME fromupTime, t2.FROMSOURCEID fromSourceId, t2.PROCESSINSTANCEID processInstanceId,
t2.HAVEPOINTS havePoints, t2.TASKNAME taskName, t2.FROMUSERNAME fromUserName, t2.FROMPROJECTNAME fromProjectName, t2.FINISHTIME finishTime,t1.imgUrl, t2.PROCESSDEFINITIONID processDefinitionId,
ifnull(t3.STATSHIS, 1) historyStates,t1.submit_date_timestamp submitDateTimestamp,t1.photo_date_timestamp photoDateTimestamp t2.DEPLOYMENTID deploymentId,
t2.ASSIGNEENAME assigneeName,
t2.ASSIGNEE assignee,
t2.FILEANNEX fileAnnex,
t2.GUIDANG guiDang,
t2.CREATEUSER createUser,
t2.CREATEUSERNAME createUserName,
t2.CREATEDATE createDate,
t2.USERID userId,
t2.USERNAME userName,
t2.FROMTASKID fromTaskId,
t2.FROMTASKNAME fromTaskName,
t2.FROMUSERID fromUserId,
t2.FROMPROJECTID fromProjectId,
t2.FROMPLANID fromPlanId,
t2.FROMUPTIME fromupTime,
t2.FROMSOURCEID fromSourceId,
t2.HAVEPOINTS havePoints,
t2.TASKNAME taskName,
t2.TASKID taskId,
t2.FROMUSERNAME fromUserName,
t2.FROMPROJECTNAME fromProjectName,
t2.FINISHTIME finishTime,
t1.imgUrl,
ifnull(t3.STATSHIS, 1) historyStates,
t1.submit_date_timestamp submitDateTimestamp,
t1.photo_date_timestamp photoDateTimestamp
FROM ocr_picture t1 FROM ocr_picture t1
LEFT JOIN ocr_taskchild_picture t2 LEFT JOIN ocr_taskchild_picture t2
on t1.ID = t2.PICTUREID on t1.ID = t2.PICTUREID
LEFT JOIN oa_userapprove_t t3 on t2.ID = t3.FORMID and t3.TASKNAME = '${taskname}' LEFT JOIN oa_userapprove_t t3 on t2.ID = t3.FORMID and t3.TASKNAME = '${taskname}'
where t1.ID in where t1.ID in
<foreach collection="pictureIds" open="(" close=")" item="item" separator="," index="index"> <foreach collection="pictureIds" open="(" close=")" item="item" separator="," index="index">
#{item} #{item}
@ -660,6 +686,7 @@
t3.FROMUSERNAME fromUserName, t3.FROMUSERNAME fromUserName,
t3.FROMPROJECTNAME fromProjectName, t3.FROMPROJECTNAME fromProjectName,
t3.FINISHTIME finishTime, t3.FINISHTIME finishTime,
t3.TASKID taskId,
t2.imgUrl, t2.imgUrl,
t2.submit_date_timestamp submitDateTimestamp, t2.submit_date_timestamp submitDateTimestamp,
t2.photo_date_timestamp photoDateTimestamp, t2.photo_date_timestamp photoDateTimestamp,

Loading…
Cancel
Save