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