|
@ -1,19 +1,15 @@ |
|
|
package com.yxt.anrui.oa.biz.oaform; |
|
|
package com.yxt.anrui.oa.biz.oaform; |
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
|
|
import com.yxt.anrui.oa.biz.oaform.flowable.*; |
|
|
import com.yxt.anrui.oa.biz.oaform.flowable.*; |
|
|
import com.yxt.anrui.oa.biz.oamendapply.OaMendApply; |
|
|
|
|
|
import com.yxt.anrui.oa.biz.oamendapply.SubmitOaMendApplyDto; |
|
|
|
|
|
import com.yxt.anrui.oa.feign.base.BillNo; |
|
|
import com.yxt.anrui.oa.feign.base.BillNo; |
|
|
import com.yxt.anrui.oa.feign.base.Rule; |
|
|
import com.yxt.anrui.oa.feign.base.Rule; |
|
|
import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables; |
|
|
import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables; |
|
|
import com.yxt.anrui.oa.feign.flowable.flow.FlowableFeign; |
|
|
import com.yxt.anrui.oa.feign.flowable.flow.FlowableFeign; |
|
|
import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum; |
|
|
|
|
|
import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo; |
|
|
import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo; |
|
|
import com.yxt.anrui.oa.feign.flowable.flow2.FlowDelegateQuery; |
|
|
import com.yxt.anrui.oa.feign.flowable.flow2.FlowDelegateQuery; |
|
|
import com.yxt.anrui.oa.feign.flowable.flow2.FlowFeign; |
|
|
import com.yxt.anrui.oa.feign.flowable.flow2.FlowFeign; |
|
@ -37,7 +33,6 @@ import com.yxt.common.core.result.ResultBean; |
|
|
import com.yxt.common.core.vo.PagerVo; |
|
|
import com.yxt.common.core.vo.PagerVo; |
|
|
import org.apache.tomcat.util.threads.ThreadPoolExecutor; |
|
|
import org.apache.tomcat.util.threads.ThreadPoolExecutor; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.context.annotation.Bean; |
|
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
import java.util.*; |
|
@ -164,17 +159,12 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
return baseMapper.updateFlowFiled(map); |
|
|
return baseMapper.updateFlowFiled(map); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public ResultBean complete(BusinessVariables bv) { |
|
|
public ResultBean complete(BusinessVariablesDto dto) { |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
String formSid = bv.getFormVariables().get("formSid").toString(); |
|
|
BusinessVariables bv = new BusinessVariables(); |
|
|
|
|
|
BeanUtil.copyProperties(dto, bv); |
|
|
String businessSid = bv.getBusinessSid(); |
|
|
String businessSid = bv.getBusinessSid(); |
|
|
OaForm oaForm = fetchBySid(formSid); |
|
|
OaForm oaForm = fetchBySid(businessSid); |
|
|
//添加网关
|
|
|
|
|
|
Map<String, Object> variables = bv.getFormVariables(); |
|
|
|
|
|
Map<String, Object> appMap = new HashMap<>(); |
|
|
|
|
|
appMap.put("sid", businessSid); |
|
|
|
|
|
variables.put("app", appMap); |
|
|
|
|
|
bv.setFormVariables(variables); |
|
|
|
|
|
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData(); |
|
|
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData(); |
|
|
bv.setOrgSidPath(deptVo.getOrgSidPath()); |
|
|
bv.setOrgSidPath(deptVo.getOrgSidPath()); |
|
|
bv.setModelId(oaForm.getProcDefId()); |
|
|
bv.setModelId(oaForm.getProcDefId()); |
|
@ -185,8 +175,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
} |
|
|
} |
|
|
UpdateFlowFieldVo ufVo = resultBean.getData(); |
|
|
UpdateFlowFieldVo ufVo = resultBean.getData(); |
|
|
OaFormFlowDto oaFormFlowDto = new OaFormFlowDto(); |
|
|
OaFormFlowDto oaFormFlowDto = new OaFormFlowDto(); |
|
|
BeanUtil.copyProperties(ufVo, oaFormFlowDto, "sid"); |
|
|
BeanUtil.copyProperties(ufVo, oaFormFlowDto); |
|
|
oaFormFlowDto.setSid(formSid); |
|
|
|
|
|
updateFlow(oaFormFlowDto); |
|
|
updateFlow(oaFormFlowDto); |
|
|
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { |
|
|
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { |
|
|
|
|
|
|
|
@ -209,7 +198,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
ufVo.setProcDefId(oaForms.getProcDefId()); |
|
|
ufVo.setProcDefId(oaForms.getProcDefId()); |
|
|
ufVo.setProcInsId(oaForms.getProcInstId()); |
|
|
ufVo.setProcInsId(oaForms.getProcInstId()); |
|
|
messageFlowableQuery.setUfVo(messageFlowVo); |
|
|
messageFlowableQuery.setUfVo(messageFlowVo); |
|
|
messageFlowableQuery.setAppMap(appMap); |
|
|
messageFlowableQuery.setAppMap((Map<String, Object>) bv.getFormVariables().get("app")); |
|
|
messageFlowableQuery.setBusinessSid(businessSid); |
|
|
messageFlowableQuery.setBusinessSid(businessSid); |
|
|
messageFlowableQuery.setModuleName(oaForms.getFormType()); |
|
|
messageFlowableQuery.setModuleName(oaForms.getFormType()); |
|
|
messageFlowableQuery.setMsgContent(oaForms.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); |
|
|
messageFlowableQuery.setMsgContent(oaForms.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); |
|
@ -265,30 +254,25 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ResultBean reject(TaskQuery query) { |
|
|
public ResultBean reject(TaskDto dto) { |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
String businessSid = query.getBusinessSid(); |
|
|
String businessSid = dto.getBusinessSid(); |
|
|
OaForm oaForm = fetchBySid(businessSid); |
|
|
OaForm oaForm = fetchBySid(businessSid); |
|
|
if (oaForm == null) { |
|
|
if (oaForm == null) { |
|
|
return rb.setMsg("该申请不存在"); |
|
|
return rb.setMsg("该申请不存在"); |
|
|
} |
|
|
} |
|
|
String businessTaskId = oaForm.getTaskId(); |
|
|
String businessTaskId = oaForm.getTaskId(); |
|
|
if (StringUtils.isNotBlank(businessTaskId)) { |
|
|
if (StringUtils.isNotBlank(businessTaskId)) { |
|
|
if (businessTaskId.equals(query.getTaskId())) { |
|
|
if (businessTaskId.equals(dto.getTaskId())) { |
|
|
if (StringUtils.isBlank(query.getComment())) { |
|
|
if (StringUtils.isBlank(dto.getComment())) { |
|
|
return rb.setMsg("请填写意见"); |
|
|
return rb.setMsg("请填写意见"); |
|
|
} |
|
|
} |
|
|
if (StringUtils.isBlank(query.getUserSid())) { |
|
|
if (StringUtils.isBlank(dto.getUserSid())) { |
|
|
return rb.setMsg("参数错误:userSid"); |
|
|
return rb.setMsg("参数错误:userSid"); |
|
|
} |
|
|
} |
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
BeanUtil.copyProperties(query, flowTaskVo); |
|
|
BeanUtil.copyProperties(dto, flowTaskVo); |
|
|
Map<String, Object> variables = new HashMap<>(); |
|
|
Map<String, Object> variables = dto.getFormVariables(); |
|
|
Map<String, Object> appMap = new HashMap<>(); |
|
|
|
|
|
appMap.put("sid", businessSid); |
|
|
|
|
|
variables.put("app", appMap); |
|
|
|
|
|
//网关
|
|
|
|
|
|
|
|
|
|
|
|
flowTaskVo.setValues(variables); |
|
|
flowTaskVo.setValues(variables); |
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo); |
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo); |
|
|
if (!resultBean.getSuccess()) { |
|
|
if (!resultBean.getSuccess()) { |
|
@ -316,7 +300,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
ufVo.setProcInsId(oaForms.getProcInstId()); |
|
|
ufVo.setProcInsId(oaForms.getProcInstId()); |
|
|
ufVo.setProcDefId(oaForms.getProcDefId()); |
|
|
ufVo.setProcDefId(oaForms.getProcDefId()); |
|
|
messageFlowableQuery.setUfVo(messageFlowVo); |
|
|
messageFlowableQuery.setUfVo(messageFlowVo); |
|
|
messageFlowableQuery.setAppMap(appMap); |
|
|
messageFlowableQuery.setAppMap((Map<String, Object>) dto.getFormVariables().get("app")); |
|
|
messageFlowableQuery.setBusinessSid(businessSid); |
|
|
messageFlowableQuery.setBusinessSid(businessSid); |
|
|
messageFlowableQuery.setModuleName(oaForms.getFormType()); |
|
|
messageFlowableQuery.setModuleName(oaForms.getFormType()); |
|
|
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(oaForms.getProcInstId()); |
|
|
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(oaForms.getProcInstId()); |
|
@ -340,17 +324,17 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
return rb.setMsg("操作失败!提交的数据不一致!"); |
|
|
return rb.setMsg("操作失败!提交的数据不一致!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public ResultBean revokeProcess(TaskQuery query) { |
|
|
public ResultBean revokeProcess(TaskDto dto) { |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
if (StringUtils.isBlank(query.getUserSid())) { |
|
|
if (StringUtils.isBlank(dto.getUserSid())) { |
|
|
return rb.setMsg("参数错误:userSid"); |
|
|
return rb.setMsg("参数错误:userSid"); |
|
|
} |
|
|
} |
|
|
OaForm oaForm = fetchBySid(query.getBusinessSid()); |
|
|
OaForm oaForm = fetchBySid(dto.getBusinessSid()); |
|
|
String businessTaskId = oaForm.getTaskId(); |
|
|
String businessTaskId = oaForm.getTaskId(); |
|
|
if (StringUtils.isNotBlank(businessTaskId)) { |
|
|
if (StringUtils.isNotBlank(businessTaskId)) { |
|
|
if (businessTaskId.equals(query.getTaskId())) { |
|
|
if (businessTaskId.equals(dto.getTaskId())) { |
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
BeanUtil.copyProperties(query, flowTaskVo); |
|
|
BeanUtil.copyProperties(dto, flowTaskVo); |
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo); |
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo); |
|
|
if (!resultBean.getSuccess()) { |
|
|
if (!resultBean.getSuccess()) { |
|
|
return rb.setMsg(resultBean.getMsg()); |
|
|
return rb.setMsg(resultBean.getMsg()); |
|
@ -364,23 +348,23 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
return rb.setMsg("操作失败,提交的数据不一致!"); |
|
|
return rb.setMsg("操作失败,提交的数据不一致!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public ResultBean breakProcess(TaskQuery query) { |
|
|
public ResultBean breakProcess(TaskDto dto) { |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
if (StringUtils.isBlank(query.getInstanceId())) { |
|
|
if (StringUtils.isBlank(dto.getInstanceId())) { |
|
|
return rb.setMsg("参数错误:instanceId"); |
|
|
return rb.setMsg("参数错误:instanceId"); |
|
|
} |
|
|
} |
|
|
if (StringUtils.isBlank(query.getUserSid())) { |
|
|
if (StringUtils.isBlank(dto.getUserSid())) { |
|
|
return rb.setMsg("参数错误:userSid"); |
|
|
return rb.setMsg("参数错误:userSid"); |
|
|
} |
|
|
} |
|
|
if (StringUtils.isBlank(query.getComment())) { |
|
|
if (StringUtils.isBlank(dto.getComment())) { |
|
|
return rb.setMsg("请填写意见"); |
|
|
return rb.setMsg("请填写意见"); |
|
|
} |
|
|
} |
|
|
OaForm oaForm = fetchBySid(query.getBusinessSid()); |
|
|
OaForm oaForm = fetchBySid(dto.getBusinessSid()); |
|
|
String businessTaskId = oaForm.getTaskId(); |
|
|
String businessTaskId = oaForm.getTaskId(); |
|
|
if (StringUtils.isNotBlank(businessTaskId)) { |
|
|
if (StringUtils.isNotBlank(businessTaskId)) { |
|
|
if (query.getUserSid().equals(oaForm.getCreateBySid())) { |
|
|
if (dto.getUserSid().equals(oaForm.getCreateBySid())) { |
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
BeanUtil.copyProperties(query, flowTaskVo); |
|
|
BeanUtil.copyProperties(dto, flowTaskVo); |
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo); |
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo); |
|
|
if (!resultBean.getSuccess()) { |
|
|
if (!resultBean.getSuccess()) { |
|
|
return rb.setMsg(resultBean.getMsg()); |
|
|
return rb.setMsg(resultBean.getMsg()); |
|
@ -390,9 +374,9 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
updateFlow(oaFormFlowDto); |
|
|
updateFlow(oaFormFlowDto); |
|
|
return rb.success().setData(resultBean.getData()); |
|
|
return rb.success().setData(resultBean.getData()); |
|
|
} else { |
|
|
} else { |
|
|
if (businessTaskId.equals(query.getTaskId())) { |
|
|
if (businessTaskId.equals(dto.getTaskId())) { |
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
BeanUtil.copyProperties(query, flowTaskVo); |
|
|
BeanUtil.copyProperties(dto, flowTaskVo); |
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo); |
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo); |
|
|
if (!resultBean.getSuccess()) { |
|
|
if (!resultBean.getSuccess()) { |
|
|
return rb.setMsg(resultBean.getMsg()); |
|
|
return rb.setMsg(resultBean.getMsg()); |
|
@ -407,18 +391,18 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
return rb.setMsg("操作失败!提交的数据不一致!"); |
|
|
return rb.setMsg("操作失败!提交的数据不一致!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public ResultBean delegate(DelegateQuery query) { |
|
|
public ResultBean delegate(DelegateDto dto) { |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); |
|
|
FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); |
|
|
BeanUtil.copyProperties(query, delegateQuery); |
|
|
BeanUtil.copyProperties(dto, delegateQuery); |
|
|
flowFeign.delegate(delegateQuery); |
|
|
flowFeign.delegate(delegateQuery); |
|
|
return rb.success(); |
|
|
return rb.success(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public ResultBean assignTask(DelegateQuery query) { |
|
|
public ResultBean assignTask(DelegateDto dto) { |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); |
|
|
FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); |
|
|
BeanUtil.copyProperties(query, delegateQuery); |
|
|
BeanUtil.copyProperties(dto, delegateQuery); |
|
|
flowFeign.assignTask(delegateQuery); |
|
|
flowFeign.assignTask(delegateQuery); |
|
|
return rb.success(); |
|
|
return rb.success(); |
|
|
} |
|
|
} |
|
@ -508,7 +492,9 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
bv.setTaskDefKey(oaForm.getNodeId()); |
|
|
bv.setTaskDefKey(oaForm.getNodeId()); |
|
|
bv.setComment("重新提交"); |
|
|
bv.setComment("重新提交"); |
|
|
bv.setInstanceId(oaForm.getProcInstId()); |
|
|
bv.setInstanceId(oaForm.getProcInstId()); |
|
|
return complete(bv); |
|
|
BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto(); |
|
|
|
|
|
BeanUtil.copyProperties(bv, businessVariablesDto); |
|
|
|
|
|
return complete(businessVariablesDto); |
|
|
} |
|
|
} |
|
|
return rb; |
|
|
return rb; |
|
|
|
|
|
|
|
@ -516,11 +502,13 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
|
|
|
|
|
|
private synchronized int submitBusinessData(SubmitDto dto) { |
|
|
private synchronized int submitBusinessData(SubmitDto dto) { |
|
|
int r = 0; |
|
|
int r = 0; |
|
|
if (dto.isNew()) { |
|
|
OaForm oaForm = fetchBySid(dto.getBusinessSid()); |
|
|
|
|
|
if (StringUtils.isBlank(oaForm.getTaskId()) && StringUtils.isBlank(dto.getNextNodeSid())) { |
|
|
|
|
|
//新提交
|
|
|
r = 1; |
|
|
r = 1; |
|
|
} else { |
|
|
} else if (StringUtils.isNotBlank(oaForm.getTaskId()) && oaForm.getTaskId().equals(dto.getNextNodeSid())) { |
|
|
|
|
|
//二次提交//只有数据一致的时候才能进行下一步
|
|
|
r = 2; |
|
|
r = 2; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
return r; |
|
|
return r; |
|
|
} |
|
|
} |
|
@ -551,8 +539,10 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> { |
|
|
bv.setNextNodeUserSids(organizationVo.getManagerSid()); |
|
|
bv.setNextNodeUserSids(organizationVo.getManagerSid()); |
|
|
|
|
|
|
|
|
} else if (rule == OaFormRuleEnum.INSTITUTION.getRule()) { |
|
|
} else if (rule == OaFormRuleEnum.INSTITUTION.getRule()) { |
|
|
|
|
|
//获取本机构链(含集团、事业部、分公司部门)中角色的用户(角色sid,发起人orgsidPath)
|
|
|
|
|
|
|
|
|
} else if (rule == OaFormRuleEnum.OTHER_INSTITUTION.getRule()) { |
|
|
} else if (rule == OaFormRuleEnum.OTHER_INSTITUTION.getRule()) { |
|
|
|
|
|
//获取其他机构链角色的用户(角色sid,机构sid])
|
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
bv.setNextNodeUserSids(""); |
|
|
bv.setNextNodeUserSids(""); |
|
|