using cylsg.Model.ECTEModel; using cylsg.Model.utilityViewModel; using cylsg.utility.Extend; using ECTESTOA; using EzCoreNet.Redis; using Furion.LinqBuilder; using Models; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace cylsg.Application.CyOS { /// /// 川印配送控制器 /// [Authorize] [ApiDescriptionSettings("CYOA")] public class CyOsDeliverManage : IDynamicApiController { private readonly ISqlSugarClient _client; private readonly IOAServices _oAServices; private readonly IEzCoreNetRedisService _eZCoreNetRedisService; private ECTESTOAPermissions Permissions; public CyOsDeliverManage(ISqlSugarClient client, IOAServices oAServices, IEzCoreNetRedisService netRedisService) { _client = client.AsTenant().GetConnection("ECTESTOADB"); _oAServices = oAServices; _eZCoreNetRedisService = netRedisService; } [HttpGet] [AllowAnonymous] public async Task testc() { return await CreatDeliverPlanSn(); } /// /// 获取预约配送信息 /// /// /// [HttpPost] public async Task GetListAppointmentDeliverList(ApoointmentDeliverSearchParam Param) { if (!await CheckRols()) { throw Oops.Oh("没有权限"); } Expression> SearchList = (x) => true; SearchList = SearchList.And(x => x.FirmId == _oAServices.firmId); if (!string.IsNullOrEmpty(Param.Content)) { SearchList = SearchList.And(x => x.Remark.Contains(Param.Content)); } if (Param.MemberId != null) { SearchList = SearchList.And(x => x.FirmId == Param.MemberId); } if (Param.TimeStart != null) { SearchList = SearchList.And(x => x.CreateTime > Param.TimeStart); } if (Param.TimeEnd != null) { SearchList = SearchList.And(x => x.CreateTime < Param.TimeEnd); } //报销状态 if (Param.DeliverState != null) { SearchList = SearchList.And(x => x.Chulistatus == Param.DeliverState); } //强制增加员工过滤 RefAsync totle = 0; var data = await _client.Queryable().Includes(x => x.SentStaff) .Where(SearchList).OrderByDescending(x => x.ChuliTime).ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle); Param.page.TotalCount = totle; return new AppointmentDeliverRet { Data = data, page = Param.page, }; } /// /// 送货预约单详情 /// /// /// public async Task GetAppointmentDeliverInfo(int KeiId) { if (!await CheckRols()) { throw Oops.Oh("没有权限"); } var data = await _client.Queryable().Includes(x => x.SentStaff).Where(x => x.Keyid == KeiId && x.FirmId == _oAServices.firmId).FirstAsync(); return data; } /// /// 受理 /// /// /// public async Task AcceptAppointmentDeliver(int KeiId) { if (!(KeiId > 0)) throw Oops.Oh("Keyid不能为空"); if (!await CheckRols()) { throw Oops.Oh("没有权限"); } var data = await _client.Queryable().Where(x => x.Keyid == KeiId && x.FirmId == _oAServices.firmId).FirstAsync(); if (data == null) throw Oops.Oh("没找到数据"); if (data.Chulistatus != AppointmentDeliverState.unAccept) throw Oops.Oh("订单已处理"); data.Chulistatus = AppointmentDeliverState.Accept; data.LastUpdateTime = DateTime.Now; data.Updater = Permissions.MemberId; return await _client.Updateable(data).ExecuteCommandAsync(); } /// /// 创建配送单 /// /// 只需要传递 /// [HttpPost] public async Task CreatDeliverPlan(OA_DeliverPlan Param) { OA_CarManage car = null; if (Param.DriverId != null) car = await _client.Queryable().Where(x => x.StaffID == Param.DriverId && x.MemberID == _oAServices.firmId).FirstAsync(); if (!await CheckRols()) { throw Oops.Oh("没有权限"); } OA_CorporateClients cor = null; if (Param.BuyerId != null) cor = await _client.Queryable().Where(x => x.Keyid == Param.BuyerId).FirstAsync(); OA_DeliverPlan DeliverPlan = new OA_DeliverPlan() { Keyid = Guid.NewGuid(), FirmId = _oAServices.firmId, BuyerId = Param.BuyerId ?? Guid.Empty, DeliverTime = Param.DeliverTime, CarId = car == null ? 0 : car.Keyid, Wentifankui = "", Xingzhengzhuize = "", Yichangchuli = "", Zhuyishixiang = "", Gongzuokaoping = "", Transferstatus = 1, Sort = 1, Creater = Param.Creater ?? Permissions.MemberId, CreateTime = DateTime.Now, DriverId = Param.DriverId, SellerOrderId = await CreatDeliverPlanSn(), Dianhua = Param.Dianhua, Dizhi = Param.Dizhi, Remark = Param.Remark, BusinessManagerId = cor == null ? 0 : cor.BusinessManagerId, Biddingcompany = cor == null ? 0 : (cor.Biddingcompany ?? 0), ShifouDelivery = 1, Lianxiren = Param.Lianxiren, Deliveredstatus = (int)DeliveredType.Undeliver, CompanyName = Param.CompanyName, }; return await _client.Insertable(DeliverPlan).ExecuteCommandAsync(); } /// /// 获取送货单 /// /// /// [HttpPost] public async Task GetDeliverPlans(DeliverPlanSearchParam Param) { if (!await CheckRols()) { throw Oops.Oh("没有权限"); } Expression> SearchList = (x) => true; SearchList = SearchList.And(x => x.FirmId == _oAServices.firmId); //SearchList = SearchList.And(x => x.Creater == Permissions.MemberId);//只看自己 SearchList = SearchList.And(x => x.ShifouDelivery != 2);//过滤有效 if (Param.DeliverKeyID != null) { SearchList = SearchList.And(x => x.DriverId == Param.DeliverKeyID); } //客户名称 if (!string.IsNullOrEmpty(Param.CorporateClient)) { SearchList = SearchList.And(x => x.CompanyName.Contains(Param.CorporateClient)); } if (Param.TimeStart != null) { SearchList = SearchList.And(x => x.DeliverTime > Param.TimeStart); } if (Param.TimeEnd != null) { SearchList = SearchList.And(x => x.DeliverTime < Param.TimeEnd.Value.AddDays(1)); } if (Param.DeliveredState != null) { if (Param.DeliveredState != DeliveredType.Delivered) { SearchList = SearchList.And(x => x.Deliveredstatus != DeliveredType.Delivered); } else { SearchList = SearchList.And(x => x.Deliveredstatus == DeliveredType.Delivered); } } //强制增加员工过滤 RefAsync totle = 0; var data = await _client.Queryable().Includes(x => x.Driver).Includes(x => x.SentStaff) .Where(SearchList).OrderBy(x => x.Dizhi).OrderBy(x => x.Sort).ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle); Param.page.TotalCount = totle; return new DeliverOderPageRet { Data = data, page = Param.page, }; } /// /// 修改订单 /// /// /// public async Task UpDataDeliverPlans(OA_DeliverPlan Param) { if (Param.Keyid == null) throw Oops.Oh("ID错误"); if (!await CheckRols()) { throw Oops.Oh("没有权限"); } var data = await _client.Queryable().Where(x => x.ShifouDelivery != 2 && x.Keyid == Param.Keyid).FirstAsync(); data.LastUpdateTime = DateTime.Now; data.Updater = Permissions.MemberId; if (data.DriverId != Param.DriverId) { data.DriverId = Param.DriverId; var car = await _client.Queryable().Where(x => x.StaffID == Param.DriverId && x.MemberID == _oAServices.firmId).FirstAsync(); data.CarId = car == null ? 0 : car.Keyid; } data.DeliverTime = Param.DeliverTime; data.Remark = Param.Remark; data.CompanyName = Param.CompanyName; data.Dizhi = Param.Dizhi; data.Lianxiren = Param.Lianxiren; data.Dianhua = Param.Dianhua; data.Sort = Param.Sort; if (Param.Attachments != null) foreach (var item in Param.Attachments) { if (item.Keyid > 0) { } else { item.OA_Id = data.Keyid; item.CreateTime = DateTime.Now; item.Operator = Permissions.Name; } } data.Attachments = Param.Attachments; return await _client.UpdateNav(data).Include(x => x.Attachments, new UpdateNavOptions() { OneToManyInsertOrUpdate = true, }).ExecuteCommandAsync(); } /// /// 修改订单 /// /// /// public async Task SortDeliverPlans(SortPlanIn Param) { if (!await CheckRols()) { throw Oops.Oh("没有权限"); } var Active = await _client.Queryable().Where(x => x.Keyid == Param.ActiveKeyId).FirstAsync(); if (Active == null) throw Oops.Oh("当前无法排序"); var ActiveList = await _client.Queryable().Where(x => x.CreateTime < Active.CreateTime.Value.AddDays(1).Date && x.CreateTime > Active.CreateTime.Value.Date).ToListAsync(); return true; } /// /// 获取送货单详情 /// /// /// public async Task GetDeliverPlanInfo(Guid KeyId) { if (!await CheckRols()) { throw Oops.Oh("没有权限"); } return await _client.Queryable().Includes(x => x.SentStaff).Includes(x => x.Attachments).Includes(x => x.Driver).Includes(x => x.Manager) .Where(x => x.Keyid == KeyId && x.ShifouDelivery != 2).FirstAsync(); } /// /// 判断是否具有权限 /// /// private async Task CheckRols() { var pr = await _oAServices.GetOAPermissions(); Permissions = pr; if (pr != null && pr.MemberId != null) { if (pr.BF_IsDeliverManage == true) return true; else return false; } else return false; } /// /// 生成sn号 /// /// private async Task CreatDeliverPlanSn() { // var sn = await _client.Queryable().Where(x => x.CreateTime >= DateTime.Now.Date && x.CreateTime < DateTime.Now.AddDays(1).Date).OrderByDescending(x => x.SellerOrderId).Select(x => x.SellerOrderId).FirstAsync(); var sn = await _client.Queryable().Where(x => x.CreateTime.Value.Date == DateTime.Now.Date).OrderByDescending(x => x.SellerOrderId).Select(x => x.SellerOrderId).FirstAsync(); if (sn != null) { try { var datasn = sn.Length > 3 ? sn.Substring(sn.Length - 3) : sn; ; int data = datasn.toInt(); data += 1; var str = DateTime.Now.ToString("yyyyMMdd"); return DateTime.Now.ToString("yyyyMMdd") + data.ToString("D3"); } catch (Exception) { return DateTime.Now.ToString("yyyyMMdd") + 1.ToString("D3"); } } return DateTime.Now.ToString("yyyymmdd") + 1.ToString("D3"); } } public class ApoointmentDeliverSearchParam { /// /// 起始时间 /// public DateTime? TimeStart { get; set; } /// /// 结束时间 /// public DateTime? TimeEnd { get; set; } /// /// 内容 /// public string Content { get; set; } /// /// 员工ID /// public Guid? MemberId { get; set; } /// /// 受理状态 /// public AppointmentDeliverState? DeliverState { get; set; } /// /// 页面参数 /// public PageModel page { get; set; } } public class DeliverPlanSearchParam { /// /// 起始时间 /// public DateTime? TimeStart { get; set; } /// /// 结束时间 /// public DateTime? TimeEnd { get; set; } /// /// 司机KeyID /// public int? DeliverKeyID { get; set; } /// /// 客户名称 /// public string CorporateClient { get; set; } /// /// 配送状态 /// public DeliveredType? DeliveredState { get; set; } /// /// 页面参数 /// public PageModel page { get; set; } } /// /// 拖动时最后变量 /// public class SortPlanIn() { /// /// 拖动的KeyID /// public Guid ActiveKeyId { get; set; } /// /// 下一层的项的KeyID /// public Guid LowerKeyId { get; set; } /// /// 上一层的邻居的KeyId /// public Guid SuperiorKeyId { get; set; } /// /// 拖动方向 /// public DirectionalType Directional { get; set; } } public enum DirectionalType { /// /// 向上拖动 /// Up, /// /// 向下拖动 /// Down, } }