dengjunjie
2025-10-26 26dbfbfc18fe54c9f36121111275300a7c102be7
添加报警通知信息
已修改4个文件
已添加7个文件
329 ■■■■ 文件已修改
新建文件夹/WIDESEA_WMSServer/ClassLibrary1/IMessageInfoHtyService.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/ClassLibrary1/IMessageInfoService.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/ClassLibrary2/MessageInfoHtyService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/WIDESEA_Common/MessageEnum.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/WIDESEA_Model/Models/WMSInfo/Dt_MessageInfo.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/WMSInfo/MessageInfoController.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/WMSInfo/MessageInfoHtyController.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
н¨Îļþ¼Ð/WIDESEA_WMSServer/ClassLibrary1/IMessageInfoHtyService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.BaseServices;
using WIDESEA_Model.Models;
namespace WIDESEA_IWMsInfoServices
{
    public interface IMessageInfoHtyService : IService<Dt_MessageInfo_Hty>
    {
    }
}
н¨Îļþ¼Ð/WIDESEA_WMSServer/ClassLibrary1/IMessageInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Model.Models;
namespace WIDESEA_IWMsInfoServices
{
    public interface IMessageInfoService : IService<Dt_MessageInfo>
    {
        IRepository<Dt_MessageInfo> Repository { get; }
        /// <summary>
        /// æ·»åŠ é€šçŸ¥ä¿¡æ¯
        /// </summary>
        /// <param name="groupByEnum"></param>
        /// <param name="messageName"></param>
        /// <param name="messageInfo"></param>
        /// <param name="statusEnum"></param>
        /// <param name="messageRemark"></param>
        /// <returns></returns>
        WebResponseContent AddMessageInfo(MessageGroupByEnum groupByEnum, string messageName, string messageInfo, MessageStatusEnum statusEnum = MessageStatusEnum.Undisposed, string messageRemark = "");
    }
}
н¨Îļþ¼Ð/WIDESEA_WMSServer/ClassLibrary2/MessageInfoHtyService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_IWMsInfoServices;
using WIDESEA_Model.Models;
namespace WIDESEA_WMsInfoServices
{
    public class MessageInfoHtyService : ServiceBase<Dt_MessageInfo_Hty, IRepository<Dt_MessageInfo_Hty>>, IMessageInfoHtyService
    {
        public MessageInfoHtyService(IRepository<Dt_MessageInfo_Hty> BaseDal) : base(BaseDal)
        {
        }
    }
}
н¨Îļþ¼Ð/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
using SqlSugar.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_IWMsInfoServices;
using WIDESEA_Model.Models;
namespace WIDESEA_WMsInfoServices
{
    public class MessageInfoService : ServiceBase<Dt_MessageInfo, IRepository<Dt_MessageInfo>>, IMessageInfoService
    {
        public MessageInfoService(IRepository<Dt_MessageInfo> BaseDal) : base(BaseDal)
        {
        }
        public IRepository<Dt_MessageInfo> Repository => BaseDal;
        /// <summary>
        /// æ·»åŠ é€šçŸ¥ä¿¡æ¯
        /// </summary>
        /// <param name="groupByEnum"></param>
        /// <param name="messageName"></param>
        /// <param name="messageInfo"></param>
        /// <param name="statusEnum"></param>
        /// <param name="messageRemark"></param>
        /// <returns></returns>
        public WebResponseContent AddMessageInfo(MessageGroupByEnum groupByEnum, string messageName, string messageInfo, MessageStatusEnum statusEnum = MessageStatusEnum.Undisposed, string messageRemark = "")
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_MessageInfo dt_MessageInfo = null;
                if (groupByEnum == MessageGroupByEnum.InventoryExceedAlarm)
                    dt_MessageInfo = BaseDal.QueryFirst(x => x.MessageName == messageName && x.MessageRemark == messageRemark);
                else
                    dt_MessageInfo = BaseDal.QueryFirst(x => x.MessageName == messageName && x.MessageInfo == messageInfo);
                if (dt_MessageInfo == null)
                {
                    dt_MessageInfo = new Dt_MessageInfo();
                    dt_MessageInfo.MessageGroupBy = groupByEnum.ObjToInt();
                    dt_MessageInfo.MessageStatus = statusEnum.ObjToInt();
                    dt_MessageInfo.MessageName = messageName;
                    dt_MessageInfo.MessageInfo = messageInfo;
                    dt_MessageInfo.MessageRemark = messageRemark;
                    BaseDal.AddData(dt_MessageInfo);
                }
                else
                {
                    if (dt_MessageInfo.MessageGroupBy == MessageGroupByEnum.InventoryExceedAlarm.ObjToInt())
                    {
                        dt_MessageInfo.MessageStatus = statusEnum.ObjToInt();
                        dt_MessageInfo.MessageName = messageName;
                        dt_MessageInfo.MessageInfo = messageInfo;
                        dt_MessageInfo.MessageRemark = messageRemark;
                        BaseDal.UpdateData(dt_MessageInfo);
                    }
                }
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
    }
}
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_Common/MessageEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common
{
    /// <summary>
    /// å¼‚常信息分组
    /// </summary>
    public enum MessageGroupByEnum
    {
        /// <summary>
        /// è®¾å¤‡æŠ¥è­¦
        /// </summary>
        [Description("设备报警")]
        EquipmentAlarm,
        /// <summary>
        /// åº“存过期预警
        /// </summary>
        [Description("库存过期预警")]
        InventoryExceedAlarm,
        /// <summary>
        /// ä½Žåº“存预警
        /// </summary>
        [Description("低库存预警")]
        InventoryLowAlarm,
        /// <summary>
        /// ç‰©æ–™å¾…维护报警
        /// </summary>
        [Description("物料待维护报警")]
        MaterielAlarm,
        /// <summary>
        /// å…¥åº“单报警
        /// </summary>
        [Description("入库单报警")]
        InOrderAlarm,
        /// <summary>
        /// å‡ºåº“单报警
        /// </summary>
        [Description("出库单报警")]
        OutOrderAlarm,
    }
    public enum MessageStatusEnum
    {
        /// <summary>
        /// å¾…处理
        /// </summary>
        [Description("待处理")]
        Undisposed,
        /// <summary>
        /// æ€¥å¤„理
        /// </summary>
        [Description("急处理")]
        Emergency,
        /// <summary>
        /// å·²å¤„理
        /// </summary>
        [Description("已处理")]
        Processed,
    }
}
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_Model/Models/WMSInfo/Dt_MessageInfo.cs
@@ -21,7 +21,19 @@
        public int Id { get; set; }
        /// <summary>
        /// å¼‚常信息名称
        /// å¼‚常信息分组(设备报警,库存过期报警,物料维护报警,低库存报警,创建出入库单报警)
        /// </summary>
        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "异常信息分组")]
        public int MessageGroupBy { get; set; }
        /// <summary>
        /// çŠ¶æ€
        /// </summary>
        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "状态")]
        public int MessageStatus { get; set; }
        /// <summary>
        /// å¼‚常信息名称(获取上游入库单异常。。。)
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "异常信息名称")]
        public string MessageName { get; set; }
@@ -33,9 +45,9 @@
        public string MessageInfo { get; set; }
        /// <summary>
        /// çŠ¶æ€
        /// å¤‡æ³¨(库存过期预警时传入物料编号和批次号)
        /// </summary>
        [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "状态")]
        public int MessageStatus { get; set; }
        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "备注")]
        public string MessageRemark { get; set; }
    }
}
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs
@@ -13,6 +13,8 @@
using static WIDESEA_DTO.SquareCabin.TowcsDto;
using WIDESEA_Common.WareHouseEnum;
using WIDESEA_DTO.SquareCabin;
using WIDESEA_Common;
using System.Xml.Linq;
namespace WIDESEA_WMSServer
{
@@ -22,24 +24,16 @@
        private readonly ICabinOrderDetailServices _cabinDetailServices;
        private readonly IDeliveryOrderServices _deliveryOrderServices;
        private readonly IDeliveryOrderDetailServices _deliveryOrderDetailServices;
        private readonly IBasicService _basicService;
        private readonly IMessageInfoService _messageInfoService;
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly IInventory_BatchServices _inventory_BatchServices;
        private readonly IInventoryInfoService _inventoryInfoService;
        private readonly ISupplyTaskService _supplyTaskService;
        private readonly ITacticsService _tacticsService;
        public Business(IDeliveryOrderServices deliveryOrderServices, IBasicService basicService, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, IDeliveryOrderDetailServices deliveryOrderDetailServices, ISupplyTaskService supplyTaskService, ICabinOrderServices cabinOrderServices, ITacticsService tacticsService, ICabinOrderDetailServices cabinDetailServices)
        public Business(IDeliveryOrderServices deliveryOrderServices, IUnitOfWorkManage unitOfWorkManage, IDeliveryOrderDetailServices deliveryOrderDetailServices, ICabinOrderServices cabinOrderServices, ICabinOrderDetailServices cabinDetailServices, IMessageInfoService messageInfoService)
        {
            _deliveryOrderServices = deliveryOrderServices;
            _basicService = basicService;
            _unitOfWorkManage = unitOfWorkManage;
            _inventory_BatchServices = inventory_BatchServices;
            _inventoryInfoService = inventoryInfoService;
            _deliveryOrderDetailServices = deliveryOrderDetailServices;
            _supplyTaskService = supplyTaskService;
            _cabinOrderServices = cabinOrderServices;
            _tacticsService = tacticsService;
            _cabinDetailServices = cabinDetailServices;
            _messageInfoService = messageInfoService;
        }
        #region èŽ·å–ERP入库单
        static string SearchInDate = "2025-09-10 00:00:00";
@@ -99,7 +93,9 @@
                //存储入库单号
                List<string> orderNos = new List<string>();
                string name = string.Empty;
                MessageGroupByEnum messageGroupBy = MessageGroupByEnum.InOrderAlarm;
                MessageStatusEnum messageStatus = MessageStatusEnum.Emergency;
                foreach (var order in newOrders)
                {
                    try
@@ -107,6 +103,7 @@
                        _unitOfWorkManage.BeginTran();
                        if (order.order_type == "1") //正常入库
                        {
                            name = "创建正常入库单";
                            responseContent = _cabinOrderServices.CreateInboundOrder(order);
                            if (!responseContent.Status) throw new Exception(responseContent.Message);
                            List<Dt_CabinOrder>? dt_CabinOrders = responseContent.Data as List<Dt_CabinOrder>;
@@ -115,6 +112,8 @@
                        }
                        else if (order.order_type == "3")//入库退料
                        {
                            messageGroupBy = MessageGroupByEnum.OutOrderAlarm;
                            name = "创建入库退货单";
                            //创建出库单
                            #region è½¬æ¢ä¸ºå‡ºåº“单
                            UpstramOutOrderInfo upstramOutOrderInfo = new UpstramOutOrderInfo()
@@ -141,6 +140,8 @@
                        }
                        else if (order.order_type == "5")//报溢入库
                        {
                            name = "创建盘盈入库单";
                            messageStatus = MessageStatusEnum.Undisposed;
                            var content = _cabinOrderServices.CreateCheckInOrder(order);
                            if (!content.Status) throw new Exception(content.Message);
                        }
@@ -149,14 +150,11 @@
                    catch (Exception ex)
                    {
                        _unitOfWorkManage.RollbackTran();
                        _messageInfoService.AddMessageInfo(messageGroupBy, name, ex.Message, messageStatus);
                        SendErrorToUpstream(1, "", ex.Message, "");
                        return responseContent.Error("同步失败: " + ex.Message);
                    }
                };
                //在下发给wcs
                //EdiIn(); //发给下游
                //如果这个方法成功了,那么就调用CompleteOrder接口,然后改变
                return responseContent.OK("同步入库单成功");
            }
@@ -218,21 +216,26 @@
                    return responseContent.OK("所有出库单已存在,无需新增");
                }
                _unitOfWorkManage.BeginTran();
                try
                {
                    List<Dt_DeliveryOrder> _DeliveryOrders = new List<Dt_DeliveryOrder>();
                    List<string> orderNos = new List<string>();
                string name = string.Empty;
                MessageGroupByEnum messageGroupBy = MessageGroupByEnum.OutOrderAlarm;
                MessageStatusEnum messageStatus = MessageStatusEnum.Emergency;
                    foreach (var outorder in newOutOrders)
                    {
                    try
                    {
                        _unitOfWorkManage.BeginTran();
                        if (outorder.order_type == "1") // æ­£å¸¸å‡ºåº“单
                        {
                            name = "创建正常出库单";
                            var content = _deliveryOrderServices.CreateOutboundOrder(outorder);
                            if (!content.Status) throw new Exception(content.Message);
                        }
                        else if (outorder.order_type == "2")//出库退货
                        {
                            name = "创建出库退货单";
                            messageGroupBy = MessageGroupByEnum.InOrderAlarm;
                            // åˆ›å»ºå‡ºåº“退货单 - è¿™é‡Œéœ€è¦æ ¹æ®ä¸šåŠ¡é€»è¾‘å®žçŽ°
                            // æš‚时跳过或实现退货逻辑
                            //continue;
@@ -264,34 +267,23 @@
                        }
                        else if (outorder.order_type == "6")//报损出库
                        {
                            name = "创建盘损出库单";
                            messageStatus = MessageStatusEnum.Undisposed;
                            var content = _deliveryOrderServices.CreateCheckOutOrder(outorder);
                            if (!content.Status) throw new Exception(content.Message);
                        }
                    }
                    // æ‰¹é‡æ’入出库单和明细
                    //if (_DeliveryOrders.Any())
                    //{
                    //    BaseDal.Db.InsertNav(_DeliveryOrders).Include(x => x.Details).ExecuteCommand();
                    //}
                    //下发出库单任务给wcs
                    _unitOfWorkManage.CommitTran();
                    //var tex = CreateSupplyTask(order_no);
                    //if (!tex)
                    //{
                    //    return responseContent.Error("创建供应任务失败");
                    //}
                    return responseContent.OK($"同步出库单成功,共{_DeliveryOrders.Count}条");
                }
                catch (Exception ex)
                {
                    _unitOfWorkManage.RollbackTran();
                        _messageInfoService.AddMessageInfo(messageGroupBy, name, ex.Message, messageStatus);
                    SendErrorToUpstream(3, "", ex.Message, "");
                    return responseContent.Error("同步失败: " + ex.Message);
                }
            }
                return responseContent.OK($"同步出库单成功,共{_DeliveryOrders.Count}条");
            }
            catch (Exception ex)
            {
                SendErrorToUpstream(3, "", ex.Message, "");
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs
@@ -43,9 +43,10 @@
        private readonly ICabinOrderDetailServices _cabinOrderDetailServices;
        private readonly ISupplyTaskService _supplyTaskService;
        private readonly ISupplyTaskHtyService _supplyTaskHtyService;
        private readonly IMessageInfoService _messageInfoService;
        public IRepository<Dt_CabinOrder> Repository => BaseDal;
        public CabinOrderServices(IRepository<Dt_CabinOrder> BaseDal, IBasicService basicService, IMedicineGoodsServices medicineGoodsServices, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, ICabinOrderDetailServices cabinOrderDetailServices, ICabinOrderHtyServices cabinOrderHtyServices, ICabinOrderDetailHtyServices cabinOrderDetailHtyServices, ISupplyTaskService supplyTaskService, ISupplyTaskHtyService supplyTaskHtyService) : base(BaseDal)
        public CabinOrderServices(IRepository<Dt_CabinOrder> BaseDal, IBasicService basicService, IMedicineGoodsServices medicineGoodsServices, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, ICabinOrderDetailServices cabinOrderDetailServices, ICabinOrderHtyServices cabinOrderHtyServices, ICabinOrderDetailHtyServices cabinOrderDetailHtyServices, ISupplyTaskService supplyTaskService, ISupplyTaskHtyService supplyTaskHtyService, IMessageInfoService messageInfoService) : base(BaseDal)
        {
            _basicService = basicService;
            _medicineGoodsServices = medicineGoodsServices;
@@ -55,6 +56,7 @@
            _cabinOrderDetailServices = cabinOrderDetailServices;
            _supplyTaskService = supplyTaskService;
            _supplyTaskHtyService = supplyTaskHtyService;
            _messageInfoService = messageInfoService;
        }
@@ -724,6 +726,7 @@
            }
            catch (Exception ex)
            {
                //_messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "创建盘盈入库单", ex.Message);
                content.Error(ex.Message);
            }
            return content;
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs
@@ -43,8 +43,9 @@
        private readonly ISupplyTaskService _supplyTaskService;
        private readonly ISupplyTaskHtyService _supplyTaskHtyService;
        private readonly ITacticsService _tacticsService;
        private readonly IMessageInfoService _messageInfoService;
        public IRepository<Dt_DeliveryOrder> Repository => BaseDal;
        public DeliveryOrderServices(IRepository<Dt_DeliveryOrder> BaseDal, IBasicService basicService, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, IDeliveryOrderDetailServices deliveryOrderDetailServices, ISupplyTaskService supplyTaskService, ICabinOrderServices cabinOrderServices, ITacticsService tacticsService, ISupplyTaskHtyService supplyTaskHtyService) : base(BaseDal)
        public DeliveryOrderServices(IRepository<Dt_DeliveryOrder> BaseDal, IBasicService basicService, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, IDeliveryOrderDetailServices deliveryOrderDetailServices, ISupplyTaskService supplyTaskService, ICabinOrderServices cabinOrderServices, ITacticsService tacticsService, ISupplyTaskHtyService supplyTaskHtyService, IMessageInfoService messageInfoService) : base(BaseDal)
        {
            _basicService = basicService;
            _unitOfWorkManage = unitOfWorkManage;
@@ -55,6 +56,7 @@
            _cabinOrderServices = cabinOrderServices;
            _tacticsService = tacticsService;
            _supplyTaskHtyService = supplyTaskHtyService;
            _messageInfoService = messageInfoService;
        }
        #region åˆ›å»ºå‡ºåº“单
        /// <summary>
@@ -720,9 +722,9 @@
                    }
                }
            }
            catch (Exception e)
            catch (Exception ex)
            {
                content.Error(e.Message);
                content.Error(ex.Message);
            }
            return content;
        }
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/WMSInfo/MessageInfoController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core.BaseController;
using WIDESEA_IWMsInfoServices;
using WIDESEA_Model.Models;
namespace WIDESEA_WMSServer.Controllers.WMSInfo
{
    [Route("api/[controller]")]
    [ApiController]
    public class MessageInfoController : ApiBaseController<IMessageInfoService, Dt_MessageInfo>
    {
        public MessageInfoController(IMessageInfoService service) : base(service)
        {
        }
    }
}
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/WMSInfo/MessageInfoHtyController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core.BaseController;
using WIDESEA_IWMsInfoServices;
using WIDESEA_Model.Models;
namespace WIDESEA_WMSServer.Controllers.WMSInfo
{
    [Route("api/[controller]")]
    [ApiController]
    public class MessageInfoHtyController : ApiBaseController<IMessageInfoHtyService, Dt_MessageInfo_Hty>
    {
        public MessageInfoHtyController(IMessageInfoHtyService service) : base(service)
        {
        }
    }
}