Commit c24a9ae1 by 李小惠

Merge branch 'develop' of http://gitlab.sothing.top/843502640/jyzb_platformV2 into develop-lxh

parents 92cbd5b2 520709b3
...@@ -12,6 +12,7 @@ public enum OrderExceptionEnum implements IExceptionEnum { ...@@ -12,6 +12,7 @@ public enum OrderExceptionEnum implements IExceptionEnum {
ORDERDETAIL_ISNOT_NULL(CommonConstant.DEFAULT_USER_ERROR_CODE,"记账子单据不能为空"), ORDERDETAIL_ISNOT_NULL(CommonConstant.DEFAULT_USER_ERROR_CODE,"记账子单据不能为空"),
ORDERDETAIL_NOT_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"子单据不存在"), ORDERDETAIL_NOT_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"子单据不存在"),
ORDERDETAIL_ERROR(CommonConstant.DEFAULT_USER_ERROR_CODE,"子单据不一致,操作失败"), ORDERDETAIL_ERROR(CommonConstant.DEFAULT_USER_ERROR_CODE,"子单据不一致,操作失败"),
ROLE_ERROR(CommonConstant.DEFAULT_USER_ERROR_CODE,"审核组织机构用户配置异常!请检查日志"),
; ;
/** /**
......
package com.junmp.jyzb.listener; package com.junmp.jyzb.listener;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
...@@ -9,8 +10,14 @@ import com.junmp.junmpProcess.dto.json.*; ...@@ -9,8 +10,14 @@ import com.junmp.junmpProcess.dto.json.*;
import com.junmp.junmpProcess.exception.WorkFlowException; import com.junmp.junmpProcess.exception.WorkFlowException;
import com.junmp.junmpProcess.mapper.OrgUserMapper; import com.junmp.junmpProcess.mapper.OrgUserMapper;
import com.junmp.junmpProcess.service.Repository.ProcessTemplateService; import com.junmp.junmpProcess.service.Repository.ProcessTemplateService;
import com.junmp.jyzb.api.exception.enums.OrderExceptionEnum;
import com.junmp.jyzb.entity.SupplierType;
import com.junmp.v2.auth.api.bean.login.LoginUser; import com.junmp.v2.auth.api.bean.login.LoginUser;
import com.junmp.v2.auth.api.context.LoginContext; import com.junmp.v2.auth.api.context.LoginContext;
import com.junmp.v2.common.exception.base.ServiceException;
import com.junmp.v2.message.api.MessageApi;
import com.junmp.v2.message.api.bean.req.MessageReq;
import com.junmp.v2.message.api.bean.req.MessageSendReq;
import com.junmp.v2.sys.api.UserServiceApi; import com.junmp.v2.sys.api.UserServiceApi;
import com.junmp.v2.sys.api.bean.user.dto.RoleUserDto; import com.junmp.v2.sys.api.bean.user.dto.RoleUserDto;
import com.junmp.v2.sys.api.bean.user.vo.QueryUserInfoVo; import com.junmp.v2.sys.api.bean.user.vo.QueryUserInfoVo;
...@@ -25,10 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -25,10 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.junmp.junmpProcess.utils.BpmnModelUtils.getChildNode; import static com.junmp.junmpProcess.utils.BpmnModelUtils.getChildNode;
...@@ -41,6 +45,8 @@ public class CounterSignListener implements ExecutionListener { ...@@ -41,6 +45,8 @@ public class CounterSignListener implements ExecutionListener {
@Resource @Resource
private TaskService taskService; private TaskService taskService;
@Resource @Resource
private MessageApi messageApi;
@Resource
private RepositoryService repositoryService; private RepositoryService repositoryService;
@Resource @Resource
private OrgUserMapper orgUserMapper; private OrgUserMapper orgUserMapper;
...@@ -77,7 +83,7 @@ public class CounterSignListener implements ExecutionListener { ...@@ -77,7 +83,7 @@ public class CounterSignListener implements ExecutionListener {
} }
else if (Type.equals("5"))//指定角色 else if (Type.equals("5"))//指定角色,查找发起人组织机构下的同角色账号
{ {
List<String> Roles=group.getApproverIds(); List<String> Roles=group.getApproverIds();
if (Roles.size()>0)//角色不为空 if (Roles.size()>0)//角色不为空
...@@ -97,7 +103,11 @@ public class CounterSignListener implements ExecutionListener { ...@@ -97,7 +103,11 @@ public class CounterSignListener implements ExecutionListener {
{ {
assigneeList.add(userId.getUserID()); assigneeList.add(userId.getUserID());
} }
if(assigneeList.size()==0)
{
// throw new ServiceException(OrderExceptionEnum.ROLE_ERROR);
throw new WorkFlowException("组织机构下无该角色账号,请先添加账号!");
}
} }
...@@ -165,8 +175,28 @@ public class CounterSignListener implements ExecutionListener { ...@@ -165,8 +175,28 @@ public class CounterSignListener implements ExecutionListener {
} }
if (assigneeList.size()!=0) if (assigneeList.size()!=0)
{ {
execution.setVariable(variable, assigneeList); execution.setVariable(variable, assigneeList);
assigneeList.forEach(userId->//为相应的用户推送消息
{
MessageSendReq sendReq = new MessageSendReq();
sendReq.setReceiveUserIds(String.valueOf(userId));
sendReq.setMsgTitle("BizTypeEnum.YW.getDesc()");
sendReq.setBizType("BizTypeEnum.YW.getValue()");
sendReq.setMsgContent("msgContent");
sendReq.setPriority("0");
sendReq.setSendTime(DateTime.now());
messageApi.sendMessage(sendReq);
messageApi.queryCount(new MessageReq());
/*推送发送未读数量*/
MessageReq req1 = new MessageReq();
req1.setReadFlag(0);
req1.setReceiveUserId(Long.valueOf(userId));
Integer count1 = messageApi.queryCount(req1);
messageApi.pushMsgToUser(String.valueOf(userId),count1);
});
} }
} else { } else {
......
...@@ -2,11 +2,16 @@ package com.junmp.jyzb.listener; ...@@ -2,11 +2,16 @@ package com.junmp.jyzb.listener;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.junmp.junmpProcess.dto.json.ChildNode; import com.junmp.junmpProcess.dto.json.ChildNode;
import com.junmp.junmpProcess.utils.RabbitMQUtils2; import com.junmp.junmpProcess.utils.RabbitMQUtils2;
//import com.rabbitmq.client.Channel; //import com.rabbitmq.client.Channel;
//import com.rabbitmq.client.Connection; //import com.rabbitmq.client.Connection;
import com.junmp.jyzb.api.bean.dto.OrderDto;
import com.junmp.jyzb.api.bean.query.OrderMainReq;
import com.junmp.jyzb.api.bean.req.UpdateOrderReq; import com.junmp.jyzb.api.bean.req.UpdateOrderReq;
import com.junmp.jyzb.entity.OrderDetail;
import com.junmp.jyzb.entity.OrderMain;
import com.junmp.jyzb.service.OrderMainService; import com.junmp.jyzb.service.OrderMainService;
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection; import com.rabbitmq.client.Connection;
...@@ -41,6 +46,16 @@ import java.util.Map; ...@@ -41,6 +46,16 @@ import java.util.Map;
// 获取流程定义ID // 获取流程定义ID
String processDefinitionId = event.getProcessDefinitionId(); String processDefinitionId = event.getProcessDefinitionId();
OrderMainReq req=new OrderMainReq();
req.setProcessId(processInstanceId);
OrderMain existOrder= orderMainService.getOne(new LambdaQueryWrapper<OrderMain>()
.eq(OrderMain::getProcessId, req.getProcessId())
);
UpdateOrderReq updateOrderReq = new UpdateOrderReq();
updateOrderReq.setId(existOrder.getId());
updateOrderReq.setExamineState("finished");
updateOrderReq.setOrderState("ready");
orderMainService.ChangeOrderState(updateOrderReq);
// 获取流程实例关联的变量 // 获取流程实例关联的变量
Map<String, Object> processVariables = getProcessVariables(processInstanceId); Map<String, Object> processVariables = getProcessVariables(processInstanceId);
...@@ -48,7 +63,7 @@ import java.util.Map; ...@@ -48,7 +63,7 @@ import java.util.Map;
{ {
// 获取单据类型 // 获取单据类型
String documentType = (String) processVariables.get("documentType"); String documentType = (String) processVariables.get("documentType");
UpdateOrderReq updateOrderReq = JSONObject.parseObject(documentType, new TypeReference<UpdateOrderReq>() { updateOrderReq = JSONObject.parseObject(documentType, new TypeReference<UpdateOrderReq>() {
}); });
updateOrderReq.setExamineState("finished"); updateOrderReq.setExamineState("finished");
updateOrderReq.setOrderState("ready"); updateOrderReq.setOrderState("ready");
......
...@@ -23,7 +23,9 @@ import com.junmp.jyzb.entity.*; ...@@ -23,7 +23,9 @@ import com.junmp.jyzb.entity.*;
import com.junmp.jyzb.mapper.OrderMainMapper; import com.junmp.jyzb.mapper.OrderMainMapper;
import com.junmp.jyzb.service.*; import com.junmp.jyzb.service.*;
import com.junmp.jyzb.utils.DateTimeUtil; import com.junmp.jyzb.utils.DateTimeUtil;
import com.junmp.v2.common.bean.response.ApiRes;
import com.junmp.v2.common.exception.base.ServiceException; import com.junmp.v2.common.exception.base.ServiceException;
import com.junmp.v2.common.exception.enums.DefaultBizExceptionEnum;
import com.junmp.v2.common.util.BeanPlusUtil; import com.junmp.v2.common.util.BeanPlusUtil;
import com.junmp.v2.common.util.HttpServletUtil; import com.junmp.v2.common.util.HttpServletUtil;
import com.junmp.v2.db.api.factory.PageFactory; import com.junmp.v2.db.api.factory.PageFactory;
...@@ -118,6 +120,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -118,6 +120,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
detailList.add(detail); detailList.add(detail);
} }
//执行工作流 //执行工作流
if (req.getExamineState().equals("working")) if (req.getExamineState().equals("working"))
{ {
StartProcessInstanceDTO startProcessInstanceDTO=new StartProcessInstanceDTO(); StartProcessInstanceDTO startProcessInstanceDTO=new StartProcessInstanceDTO();
...@@ -128,6 +131,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -128,6 +131,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
String ProcessInstanceId= FlowInstanceService.startProcessInstanceById(startProcessInstanceDTO); String ProcessInstanceId= FlowInstanceService.startProcessInstanceById(startProcessInstanceDTO);
order.setProcessId(ProcessInstanceId); order.setProcessId(ProcessInstanceId);
} }
orderDetailService.saveBatch(detailList); orderDetailService.saveBatch(detailList);
//设置总价格和总数量 //设置总价格和总数量
order.setPrice(priceTotal); order.setPrice(priceTotal);
...@@ -304,10 +308,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -304,10 +308,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
@Override @Override
public Boolean ChangeOrderState(UpdateOrderReq req) { public Boolean ChangeOrderState(UpdateOrderReq req) {
OrderMain order = orderMainExist(req.getId()); OrderMain order = orderMainExist(req.getId());
if (!order.getExamineState().equals("none"))
{
throw new ServiceException(OrderExceptionEnum.ORDER_CAN_NOT_UPDATE);
}
order.setExamineState(req.getExamineState()); order.setExamineState(req.getExamineState());
order.setOrderState(req.getOrderState()); order.setOrderState(req.getOrderState());
return this.updateById(order); return this.updateById(order);
......
...@@ -10,6 +10,7 @@ public interface CommonConstants { ...@@ -10,6 +10,7 @@ public interface CommonConstants {
Integer SC_OK_200 = 200; Integer SC_OK_200 = 200;
String FORM_VAR="formData"; String FORM_VAR="formData";
String FORM_Trigger="formTrigger";
String PROCESS_STATUS="processStatus"; String PROCESS_STATUS="processStatus";
String START_USER_INFO="startUser"; String START_USER_INFO="startUser";
String ORDER_ID="orderId"; String ORDER_ID="orderId";
......
...@@ -20,4 +20,5 @@ public class StartProcessInstanceDTO { ...@@ -20,4 +20,5 @@ public class StartProcessInstanceDTO {
private String orderId; private String orderId;
private String orderType; private String orderType;
private String userId; private String userId;
private String triggerId;
} }
...@@ -6,9 +6,13 @@ import com.alibaba.fastjson.TypeReference; ...@@ -6,9 +6,13 @@ import com.alibaba.fastjson.TypeReference;
import com.junmp.junmpProcess.dto.StartProcessInstanceDTO; import com.junmp.junmpProcess.dto.StartProcessInstanceDTO;
import com.junmp.junmpProcess.factory.FlowServiceFactory; import com.junmp.junmpProcess.factory.FlowServiceFactory;
import com.junmp.junmpProcess.service.IFlowInstanceService; import com.junmp.junmpProcess.service.IFlowInstanceService;
import com.junmp.jyzb.api.exception.enums.CabinetBoxExceptionEnum;
import com.junmp.jyzb.api.exception.enums.OrderExceptionEnum;
import com.junmp.v2.auth.api.bean.login.LoginUser; import com.junmp.v2.auth.api.bean.login.LoginUser;
import com.junmp.v2.auth.api.context.LoginContext; import com.junmp.v2.auth.api.context.LoginContext;
import com.junmp.v2.common.bean.response.ApiRes; import com.junmp.v2.common.bean.response.ApiRes;
import com.junmp.v2.common.exception.IExceptionEnum;
import com.junmp.v2.common.exception.base.ServiceException;
import com.junmp.v2.sys.user.entity.SysUser; import com.junmp.v2.sys.user.entity.SysUser;
import com.junmp.v2.sys.user.service.SysUserService; import com.junmp.v2.sys.user.service.SysUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -106,6 +110,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow ...@@ -106,6 +110,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
Authentication.setAuthenticatedUserId(StartUser.getUserId().toString()); Authentication.setAuthenticatedUserId(StartUser.getUserId().toString());
Map<String,Object> processVariables= new HashMap<>(); Map<String,Object> processVariables= new HashMap<>();
processVariables.put(FORM_VAR,formData); processVariables.put(FORM_VAR,formData);
processVariables.put(FORM_Trigger,processInstanceDto.getTriggerId());//获取触发器信息
processVariables.put(ORDER_ID,processInstanceDto.getOrderId()); processVariables.put(ORDER_ID,processInstanceDto.getOrderId());
processVariables.put(ORDER_TYPE,processInstanceDto.getOrderType()); processVariables.put(ORDER_TYPE,processInstanceDto.getOrderType());
processVariables.put(START_USER_INFO,JSONObject.toJSONString(StartUser)); processVariables.put(START_USER_INFO,JSONObject.toJSONString(StartUser));
...@@ -128,6 +133,8 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow ...@@ -128,6 +133,8 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
// { // {
// return ApiRes.failure("流程不存在或已挂起"); // return ApiRes.failure("流程不存在或已挂起");
// } // }
try {
ProcessInstance processInstance = processInstanceBuilder ProcessInstance processInstance = processInstanceBuilder
.processDefinitionId(processInstanceDto.getProcessDefinitionId()) .processDefinitionId(processInstanceDto.getProcessDefinitionId())
...@@ -135,12 +142,30 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow ...@@ -135,12 +142,30 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
.variables(processVariables) .variables(processVariables)
.businessStatus(BUSINESS_STATUS_1) .businessStatus(BUSINESS_STATUS_1)
.start(); .start();
//手动完成第一个任务
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
task.setAssignee(StartUser.getUserId().toString()); task.setAssignee(StartUser.getUserId().toString());
return processInstance.getProcessInstanceId(); return processInstance.getProcessInstanceId();
} catch (Exception e) {
String fullErrorMessage = getFullErrorMessage(e);
// 处理在启动流程实例时发生的异常
throw new ServiceException(OrderExceptionEnum.ROLE_ERROR);
// throw new ServiceException(fullErrorMessage);
} }
//手动完成第一个任务
}
// 递归获取异常信息的方法
private String getFullErrorMessage(Throwable throwable) {
StringBuilder errorMessage = new StringBuilder();
while (throwable != null) {
errorMessage.append(throwable.getMessage()).append("\n");
throwable = throwable.getCause();
}
return errorMessage.toString();
}
@Override @Override
public String getFormIdByInstanceId(String instanceId) { public String getFormIdByInstanceId(String instanceId) {
HistoricActivityInstance query = historyService.createHistoricActivityInstanceQuery() HistoricActivityInstance query = historyService.createHistoricActivityInstanceQuery()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论