123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- using Hotline.Api.Controllers;
- using Hotline.Application.Tests.Dto;
- using Hotline.Orders;
- using Hotline.Repository.SqlSugar.Orders;
- using Hotline.Share.Dtos.FlowEngine;
- using Hotline.Share.Dtos.Order;
- using Hotline.Share.Enums.FlowEngine;
- using Hotline.Share.Tools;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.AspNetCore.Mvc.RazorPages;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using XF.Domain.Repository;
- namespace Hotline.Application.Tests.Mock;
- public class OrderServiceMock
- {
- private readonly OrderController _orderController;
- private CreateOrderOutDto CreateOrderOutDto;
- private AddOrderDto AddOrderDto;
- private readonly IRepository<Order> _orderRepository;
- private readonly IOrderVisitRepository _orderVisitRepository;
- public OrderServiceMock(OrderController orderController, IRepository<Order> orderRepository, IOrderVisitRepository orderVisitRepository)
- {
- _orderController = orderController;
- _orderController.ControllerContext = new ControllerContext
- {
- HttpContext = new DefaultHttpContext()
- };
- _orderRepository = orderRepository;
- _orderVisitRepository = orderVisitRepository;
- }
- public OrderServiceMock CreateOrder(string callId = "")
- {
- var json = "{\"sourceChannel\":\"因特网\",\"sourceChannelCode\":\"YTW\",\"transferPhone\":null,\"fromPhone\":null,\"acceptorName\":\"单元测试\",\"acceptorStaffNo\":\"\",\"fromName\":\"1233333333\",\"fromGender\":1,\"identityType\":1,\"licenceType\":null,\"licenceTypeCode\":null,\"licenceNo\":null,\"ageRange\":null,\"ageRangeCode\":null,\"contact\":\"12333333333\",\"isSecret\":false,\"acceptSms\":false,\"no\":null,\"title\":\"\",\"hotspotId\":\"1912\",\"eventCategoryId\":null,\"incidentTime\":null,\"incidentPurpose\":null,\"areaCode\":\"519800\",\"city\":\"省内\",\"street\":null,\"isRepeat\":\"false\",\"pushType\":null,\"pushTypeCode\":null,\"content\":\"单元测试内容\",\"duplicateIds\":[],\"duplicateTitle\":null,\"callAddress\":null,\"repeatableEventDetails\":[],\"orderExtension\":null,\"transpond\":false,\"isEnforcementOrder\":false,\"focusOnEventsArr\":[],\"focusOnEvents\":null,\"isFormalistWorkOrder\":false,\"isSensitiveWorkOrders\":false,\"isUrgent\":false,\"isThreePartyConference\":false,\"is24HoursComplete\":false,\"company\":null,\"orderPushTypes\":[],\"acceptType\":\"咨询\",\"acceptTypeCode\":\"10\",\"files\":[],\"hotspotSpliceName\":\"互联互通-转接乐山市12345\",\"hotspotName\":\"转接乐山市12345\",\"hotspotCode\":\"1912\",\"hotspotExternal\":\"19\",\"county\":\"\",\"town\":\"\"}";
- AddOrderDto = json.FromJson<AddOrderDto>();
- if (callId.NotNullOrEmpty())
- {
- AddOrderDto.CallId = callId;
- AddOrderDto.SourceChannel = "电话";
- AddOrderDto.SourceChannelCode = AppDefaults.SourceChannel.DianHua;
- }
- AddOrderDto.Title = "单元测试" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
- CreateOrderOutDto = _orderController.Add(AddOrderDto).GetAwaiter().GetResult().ToJson().FromJson<CreateOrderOutDto>();
- return this;
- }
- public CreateOrderOutDto GetCreateResult()
- {
- return CreateOrderOutDto;
- }
- public OrderServiceMock 办理到派单员()
- {
- var stepNextInfo = _orderController.GetFlowStartOptions(CreateOrderOutDto.Id).GetAwaiter().GetResult().ToJson().FromJson<NextStepsDto<NextStepOption>>();
- var stepInfo = stepNextInfo.Steps.FirstOrDefault(m => m.Value == "派单组");
- var stepOrg = stepInfo.Items.FirstOrDefault(m => m.Username == "单元测试派单员");
- var handleDto = new StartWorkflowDto<OrderHandleFlowDto>
- {
- Data = new OrderHandleFlowDto
- {
- OrderId = CreateOrderOutDto.Id,
- },
- Workflow = new BasicWorkflowDto
- {
- NextHandlers = [stepOrg],
- NextStepCode = stepInfo.Key,
- NextStepName = stepInfo.Value,
- Opinion = "办理到派单组意见",
- BackToCountersignEnd = false,
- IsSms = false,
- IsForwarded = false,
- HandlerType = EHandlerType.OrgLevel,
- BusinessType = EBusinessType.Send,
- FlowDirection = EFlowDirection.CenterToCenter,
- }
- };
- _orderController.StartFlow(handleDto).GetAwaiter().GetResult();
- return this;
- }
- public OrderServiceMock 办理到一级部门()
- {
- var stepNextInfo = _orderController.GetFlowStartOptions(CreateOrderOutDto.Id).GetAwaiter().GetResult().ToJson().FromJson<NextStepsDto<NextStepOption>>();
- var stepInfo = stepNextInfo.Steps.FirstOrDefault(m => m.Value == "一级部门");
- var stepOrg = stepInfo.Items.FirstOrDefault(m => m.OrgName == "测试部门");
- var handleDto = new StartWorkflowDto<OrderHandleFlowDto>
- {
- Data = new OrderHandleFlowDto
- {
- OrderId = CreateOrderOutDto.Id,
- },
- Workflow = new BasicWorkflowDto
- {
- NextHandlers = [stepOrg],
- NextStepCode = stepInfo.Key,
- NextStepName = stepInfo.Value,
- Opinion = "办理意见",
- BackToCountersignEnd = false,
- IsSms = false,
- IsForwarded = false,
- HandlerType = EHandlerType.OrgLevel,
- BusinessType = EBusinessType.Department,
- }
- };
- _orderController.StartFlow(handleDto).GetAwaiter().GetResult();
- return this;
- }
- public OrderServiceMock 办理到归档(Action action = null, Action<OrderHandleFlowDto> dataAction = null, Action<NextWorkflowDto> workflowAction = null)
- {
- action?.Invoke();
- var stepNextInfo = _orderController.GetNextStepsWithRecommend(CreateOrderOutDto.Id).GetAwaiter().GetResult().ToJson().FromJson<NextStepsDto<NextStepOption>>();
- var stepInfo = stepNextInfo.Steps.FirstOrDefault(m => m.Value == "归档");
- var stepOrg = stepInfo.Items.FirstOrDefault();
- var order = _orderRepository.Get(CreateOrderOutDto.Id);
- var handleDto = new NextWorkflowDto<OrderHandleFlowDto>
- {
- Data = new OrderHandleFlowDto
- {
- OrderId = CreateOrderOutDto.Id,
- RealHandlerName = "经办人",
- RealHandlerPhone = "13666666666",
- RealContactLocale = true,
- RealIsContacted = true,
- IsOther = true,
- OtherRemark = "其它原因",
- RealCommunicationAddress = "地点地点地点",
- RealCommunicationTime = DateTime.Now,
- },
- Workflow = new NextWorkflowDto
- {
- NextStepCode = "end",
- NextStepName = "归档",
- Opinion = "办理到归档",
- BackToCountersignEnd = false,
- IsSms = false,
- IsForwarded = false,
- HandlerType = EHandlerType.OrgLevel,
- BusinessType = EBusinessType.Department,
- FlowDirection = EFlowDirection.OrgToOrg,
- WorkflowId = order.WorkflowId,
- StepId = stepNextInfo.StepId,
- }
- };
- dataAction?.Invoke(handleDto.Data);
- workflowAction?.Invoke(handleDto.Workflow);
- try
- {
- _orderController.Handle(handleDto).GetAwaiter().GetResult();
- }
- catch (Exception e)
- {
- var msg = e.Message;
- if (msg.Contains("RealtimeService") == false)
- {
- throw;
- }
- // ignore
- }
- return this;
- }
- public OrderServiceMock 办理到二级部门(Action action = null)
- {
- action?.Invoke();
- var stepNextInfo = _orderController.GetNextStepsWithRecommend(CreateOrderOutDto.Id).GetAwaiter().GetResult().ToJson().FromJson<NextStepsDto<NextStepOption>>();
- var stepInfo = stepNextInfo.Steps.FirstOrDefault(m => m.Value == "二级部门");
- var stepOrg = stepInfo.Items.FirstOrDefault(m => m.OrgName == "测试二级部门");
- var order = _orderRepository.Get(CreateOrderOutDto.Id);
- var handleDto = new NextWorkflowDto<OrderHandleFlowDto>
- {
- Data = new OrderHandleFlowDto
- {
- OrderId = CreateOrderOutDto.Id,
- },
- Workflow = new NextWorkflowDto
- {
- NextHandlers = [stepOrg],
- NextStepCode = stepInfo.Key,
- NextStepName = stepInfo.Value,
- Opinion = "办理到二级部门",
- BackToCountersignEnd = false,
- IsSms = false,
- IsForwarded = false,
- HandlerType = EHandlerType.OrgLevel,
- BusinessType = EBusinessType.Department,
- FlowDirection = EFlowDirection.OrgToOrg,
- WorkflowId = order.WorkflowId,
- StepId = stepNextInfo.StepId,
- }
- };
- _orderController.Handle(handleDto).GetAwaiter().GetResult();
- return this;
- }
- public OrderServiceMock 办理一级部门汇总(Action aciton = null)
- {
- aciton?.Invoke();
- var stepNextInfo = _orderController.GetNextStepsWithRecommend(CreateOrderOutDto.Id).GetAwaiter().GetResult().ToJson().FromJson<NextStepsDto<NextStepOption>>();
- var stepInfo = stepNextInfo.Steps.FirstOrDefault(m => m.Value == "一级部门汇总");
- var stepOrg = stepInfo.Items.FirstOrDefault(m => m.OrgName == "测试部门");
- var order = _orderRepository.Get(CreateOrderOutDto.Id);
- var handleDto = new NextWorkflowDto<OrderHandleFlowDto>
- {
- Data = new OrderHandleFlowDto
- {
- OrderId = CreateOrderOutDto.Id,
- RealHandlerName = "经办人",
- RealHandlerPhone = "13666666666",
- RealContactLocale = true,
- RealIsContacted = true,
- IsOther = true,
- IsEvasive = true,
- OtherRemark = "其它原因",
- RealCommunicationAddress = "地点地点地点",
- RealCommunicationTime = DateTime.Now
- },
- Workflow = new NextWorkflowDto
- {
- NextHandlers = [stepOrg],
- NextStepCode = stepInfo.Key,
- NextStepName = stepInfo.Value,
- Opinion = "办理到一级部门汇总",
- BackToCountersignEnd = false,
- IsSms = false,
- IsForwarded = false,
- HandlerType = EHandlerType.AssignedUser,
- BusinessType = EBusinessType.Department,
- FlowDirection = EFlowDirection.OrgToOrg,
- StepType = EStepType.Summary,
- WorkflowId = order.WorkflowId,
- StepId = stepNextInfo.StepId,
- }
- };
- _orderController.Handle(handleDto).GetAwaiter().GetResult();
- return this;
- }
- public OrderServiceMock 发布工单(Action aciton = null)
- {
- aciton?.Invoke();
- var baseData = _orderController.PublishOrderPageBase(CreateOrderOutDto.Id).GetAwaiter().GetResult();
- var inDto = new PublishOrderDto
- {
- Id = CreateOrderOutDto.Id,
- PublishState = false,
- ArrangeTitle = baseData.OrderTitle,
- ArrangeContent = baseData.Content,
- ArrangeOpinion = baseData.ActualOpinion,
- IdNames = [baseData.ActualHandleOrgName],
- ProPublishState = false,
- Resolve = true
- };
- _orderController.PublishOrder(inDto).GetAwaiter().GetResult();
- return this;
- }
- public OrderServiceMock 发送回访短信(Action aciton = null)
- {
- aciton?.Invoke();
- var id = _orderVisitRepository.Queryable()
- .Where(m => m.No == CreateOrderOutDto.No)
- .Select(m => m.Id)
- .First();
- var inDto = new VisitSmsInDto
- {
- Ids = [id]
- };
- _orderController.VisitPushSMSAsync(inDto).GetAwaiter().GetResult();
- return this;
- }
- }
|