From 557c2711a3e103ebc3d0492344eca9730d5e92b2 Mon Sep 17 00:00:00 2001 From: 移动系统liao <liaoxujun@qq.com> Date: 星期一, 17 二月 2025 10:47:47 +0800 Subject: [PATCH] 增加司机配送单超时处理任务,防止一直不停手机定位信息, --- CoreCms.Net.Services/CYOAServices/CyinOAService.cs | 1482 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 1,216 insertions(+), 266 deletions(-) diff --git a/CoreCms.Net.Services/CYOAServices/CyinOAService.cs b/CoreCms.Net.Services/CYOAServices/CyinOAService.cs index 09f18ef..9bae019 100644 --- a/CoreCms.Net.Services/CYOAServices/CyinOAService.cs +++ b/CoreCms.Net.Services/CYOAServices/CyinOAService.cs @@ -12,8 +12,10 @@ using EC_SeckillInfo; using EnumsNET; using Essensoft.Paylink.Alipay.Domain; +using Microsoft.OpenApi.Validations; using Nest; using Newtonsoft.Json; +using NPOI.HPSF; using NPOI.SS.Formula.Functions; using SqlSugar; using SqlSugar.Extensions; @@ -23,13 +25,16 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Xml.Linq; using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressDeliveryOpenMessageGetDeliveryListResponse.Types; using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinGetCurrentSelfMenuInfoResponse.Types; using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinQrcodeCreateRequest.Types.Action.Types; using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinTagsMembersGetBlackListResponse.Types; using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinUserInfoBatchGetRequest.Types; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.ComponentTCBBatchCreateContainerServiceVersionRequest.Types; using static SKIT.FlurlHttpClient.Wechat.Api.Models.ScanProductAddV2Request.Types.Product.Types; using static SKIT.FlurlHttpClient.Wechat.Api.Models.SemanticSemproxySearchResponse.Types; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.WxaSecOrderUploadCombinedShippingInfoRequest.Types.SubOrder.Types; using static SKIT.FlurlHttpClient.Wechat.Api.Models.WxaServiceMarketServiceGetServiceBuyerListResponse.Types.Buyer.Types; namespace CoreCms.Net.Services.CYOAServices @@ -37,49 +42,57 @@ /// <summary> /// 宸濆嵃鐩稿叧鏈嶅姟 /// </summary> - public class CyinOAService: ICyinOAService + public class CyinOAService : ICyinOAService { /// <summary> /// 鏄惁鏄徃鏈簁ey /// </summary> const string IsCYDbDbKey = "IsCYDbDbKey:"; - + /// <summary> + /// 鍙告満璁㈠崟寮�濮嬪悗閿佸崟key + /// </summary> + const string LockFilshDeliverOderKey = "LockFilshDeliverOderKey:"; + const string LockFilshDeliverOderString = "GOODLuck:"; /// <summary> /// 鏄惁鎷ユ湁宸濆嵃鏁欒偛灞�璁㈠崟绠$悊 /// </summary> const string IsSchoolID = "IsShoodsID:"; - + const string IsSchoolMangerID = "IsSchoolManger:"; const string IsDeliverManageKey = "IsDeliverManageKey:"; - private readonly ISqlSugarClient _CyDbClient; - private readonly IUnitOfWork _UnitOfWork; + private readonly ISqlSugarClient _CyDbClient; private readonly IHttpContextUser _User; private readonly ICoreCmsUserServices _coreCmsUserServices; private readonly IRedisOperationRepository _redisOperationRepository; private readonly string _UserMoble; private string? _DriveName { get; set; } - - - public CyinOAService( IUnitOfWork unitOfWork,IHttpContextUser contextUser,ICoreCmsUserServices coreCmsUserServices, - IRedisOperationRepository redisOperationRepository,ICoreCmsUserServices coreCmsUser) { + + /// <summary> + /// 瀛︽牎绠$悊鍛業D,鏈夊垯鏄紝娌℃湁鍒欎笉鏄� + /// </summary> + private Guid? _SchoolManagerKeyId { get; set; } = null; + + public CyinOAService(IUnitOfWork unitOfWork, IHttpContextUser contextUser, ICoreCmsUserServices coreCmsUserServices, + IRedisOperationRepository redisOperationRepository, ICoreCmsUserServices coreCmsUser) + { + - _UnitOfWork = unitOfWork; _CyDbClient = unitOfWork.GetDbClient().GetConnection(AppSettingsConstVars.CYDbDbID); _User = contextUser; _coreCmsUserServices = coreCmsUserServices; _redisOperationRepository = redisOperationRepository; - _coreCmsUserServices= coreCmsUserServices; + _coreCmsUserServices = coreCmsUserServices; - _UserMoble = _coreCmsUserServices.QueryById(_User.ID).mobile??"娌℃湁鎵惧埌鐢ㄦ埛"; + _UserMoble = _coreCmsUserServices.QueryById(_User.ID).mobile ?? "娌℃湁鎵惧埌鐢ㄦ埛"; } - + /// <summary> /// 鏄惁鏄鏍℃柟 /// </summary> /// <returns></returns> - public async Task<bool > IsSchooler() + public async Task<bool> IsSchooler() { - + if (_User?.ID == null) { @@ -87,7 +100,7 @@ throw new Exception("鐧诲綍淇℃伅閿欒锛岃閲嶆柊鐧诲綍"); } - + var user = _coreCmsUserServices.QueryById(_User.ID); if (user == null) @@ -99,12 +112,12 @@ if (string.IsNullOrEmpty(isdrive)) { //娌℃湁閿�� - - var data = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(x => x.userMobile == user.mobile).FirstAsync(); + + var data = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(x => x.shipMobile == user.mobile&&x.isdelete==false).FirstAsync(); if (data != null) { @@ -127,7 +140,85 @@ { return false; } - + + } + public async Task<bool> IsSchoolManger() + { + + if (_User?.ID == null) + { + + + throw new Exception("鐧诲綍淇℃伅閿欒锛岃閲嶆柊鐧诲綍"); + + } + + + var user = _coreCmsUserServices.QueryById(_User.ID); + if (user == null) + { + + throw new Exception("鐧诲綍淇℃伅閿欒锛岃閲嶆柊鐧诲綍"); + } + var isdrive = await _redisOperationRepository.Get(IsSchoolMangerID + user.mobile); + + if (string.IsNullOrEmpty(isdrive)) + { + //娌℃湁閿�� + + + + + + var data = await _CyDbClient.Queryable<OA_CustomerCommunications>().Where(x => x.CompanyPhone == user.mobile).FirstAsync(); + + if (data != null) + { + _SchoolManagerKeyId = data.Keyid; + isdrive = _SchoolManagerKeyId.ToString(); + + } + else + isdrive = "false"; + await _redisOperationRepository.StringSetAsync(IsSchoolMangerID + user.mobile, isdrive, TimeSpan.FromMinutes(1)); + } + else + { + Guid keyid; + if( Guid.TryParse(isdrive,out keyid)) + { + _SchoolManagerKeyId = keyid; + } + else + { + + var data = await _CyDbClient.Queryable<OA_CustomerCommunications>().Where(x => x.CompanyPhone == user.mobile).FirstAsync(); + + if (data != null) + { + _SchoolManagerKeyId = data.Keyid; + isdrive = _SchoolManagerKeyId.ToString(); + + } + else + isdrive = "false"; + await _redisOperationRepository.StringSetAsync(IsSchoolMangerID + user.mobile, isdrive, TimeSpan.FromMinutes(1)); + } + } + + //db.DbFirst.IsCreateAttribute().CreateClassFile("c:\\Demo\\5", "EC_SeckillInfo"); ; + //var data= db.Queryable<EC_PrizeInfo>().ToList(); + //ret.data= data; + if (isdrive != "false") + { + + return true; + + } + else + { + return false; + } } /// <summary> /// 鏄惁鏄�佽揣绠$悊鍛� @@ -182,11 +273,12 @@ return false; } } + /// <summary> /// 鏄惁鏄徃鏈� /// </summary> /// <returns></returns> - public async Task<bool > IsDrive() + public async Task<bool> IsDrive() { var ret = new WebApiCallBack(); if (_User?.ID == null) @@ -204,13 +296,13 @@ var isdrive = await _redisOperationRepository.Get(IsCYDbDbKey + user.mobile); if (string.IsNullOrEmpty(isdrive)) { - + var FirmIds = AppSettingsConstVars.CyOsFirmIds; var firmidlist = FirmIds?.Split(",")?.Select(x => new Guid(x)); - var data = await _CyDbClient.Queryable<OA_Staff>().Where(x => x.Status == "鍦ㄨ亴" && x.MobieNum == user.mobile && x.BF_IsDriver==true).FirstAsync(); + var data = await _CyDbClient.Queryable<OA_Staff>().Where(x => x.Status == "鍦ㄨ亴" && x.MobieNum == user.mobile && x.BF_IsDriver == true).FirstAsync(); if (data != null) { @@ -219,7 +311,7 @@ } else { - _DriveName =null; + _DriveName = null; isdrive = "false"; } @@ -231,7 +323,7 @@ //ret.data= data; if (isdrive == "true") { - + return true; @@ -240,39 +332,46 @@ { return false; } - + } #region 瀛︽牎绔垪琛� - /// <summary> - /// 鑾峰彇瀛︽牎璐﹀彿绔殑School - /// </summary> - /// <param name="entity"></param> - /// <returns></returns> - public async Task<WebApiCallBack> GetOderListOfSchool(FMPageByWhereOrder entity) + + public async Task<WebApiCallBack> GetOderListOfSchoolManager(FMPageByWhereOrder entity) { - var rt = await IsSchooler(); + var rt = await IsSchoolManger(); + //var rt2 = await IsSchooler(); if (rt == false) { - throw new Exception("娌℃湁鏉冮檺璁块棶"); + + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; } var user = await _coreCmsUserServices.QueryByIdAsync(_User.ID); if (user == null) { - throw new Exception("娌℃湁鏉冮檺璁块棶"); + + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; } var where = PredicateBuilder.True<CoreCmsPlanOrder>(); - + where = where.And(p => p.isdelete == false); if (!string.IsNullOrWhiteSpace(entity.where)) { var obj = JsonConvert.DeserializeAnonymousType(entity.where, new { quxianId = "", sheng = "", - shi="", - quxian="", + shi = "", + quxian = "", pianqu = "", shipAddress = "", DeliverState = "" @@ -280,10 +379,11 @@ }); if (!string.IsNullOrWhiteSpace(obj.sheng)) { - - where = where.And(p => p.sheng == obj.sheng); - + + where = where.And(p => p.sheng == obj.sheng); + + } if (!string.IsNullOrWhiteSpace(obj.shi)) { @@ -291,12 +391,14 @@ where = where.And(p => p.shi == obj.shi); + } if (!string.IsNullOrWhiteSpace(obj.quxian)) { where = where.And(p => p.quxian == obj.quxian); + } @@ -307,6 +409,7 @@ { where = where.And(p => p.quxianId == quxianId); + } } @@ -315,7 +418,8 @@ var pianqu = obj.pianqu; - where = where.And(p => pianqu.Contains(p.pianqu)); + where = where.And(p => p.pianqu.Contains(pianqu)); + } if (!string.IsNullOrWhiteSpace(obj.shipAddress)) @@ -323,7 +427,8 @@ var shipAddress = obj.shipAddress; - where = where.And(p => shipAddress.Contains(p.shipAddress)); + where = where.And(p => p.shipAddress.Contains(shipAddress)); + } if (!string.IsNullOrWhiteSpace(obj.DeliverState)) @@ -332,23 +437,189 @@ if (Enum.TryParse(obj.DeliverState, out DeliverStateType result)) { where = where.And(p => p.DeliverState == result); + } } - + } - where = where.And(p => user.mobile == p.userMobile); - where = where.And(n => n.isdelete == false); + //where = where.And(p => user.mobile == p.userMobile); + //whereManger = whereManger.And(p => p.DeliverState == result); + where = where.And(p => p.isdelete == false); RefAsync<int> totalNumbe = 0; + //var listSchool = _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(where).OrderBy(p => p.quxianId).Select(p => new CoreCmsPlanOrderListDto(), true); + //var listSchoolManger = _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(where).OrderBy(p => p.quxianId).Select(p => new CoreCmsPlanOrderListDto(), true); + var list = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(where). + LeftJoin<EC_OrderBasic>((p, or) => p.orderkeyid == or.Keyid) + .LeftJoin<OA_CustomerCommunications>((p, or, cus) => or.BuyerId == cus.Keyid) + .Where((p, or, cus) => cus.Keyid == _SchoolManagerKeyId) + .OrderBy((p, or, cus) => p.quxianId).Select((p, or, cus) => p, true).MergeTable().Select(p => new CoreCmsPlanOrderListDto(), true).ToPageListAsync(entity.page, entity.limit, totalNumbe); - var list = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(where).OrderBy(p => p.quxianId).Select(p => new CoreCmsPlanOrderListDto(), true).ToPageListAsync(entity.page, entity.limit, totalNumbe); + //.QueryPageByDTOAsync(where, entity.page, entity.limit, true); + return new WebApiCallBack() + { + status = true, + data = new + { + list, + entity.page, + totalNumbe, + entity.limit, + entity.where, + + } + + }; + } + + /// <summary> + /// 鑾峰彇瀛︽牎璐﹀彿绔殑School + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + public async Task<WebApiCallBack> GetOderListOfSchool(FMPageByWhereOrder entity) + { + + var rt = await IsSchooler(); + var rt2 = await IsSchoolManger(); + if (rt == false && rt2 == false) + { + + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; + } + var user = await _coreCmsUserServices.QueryByIdAsync(_User.ID); + if (user == null) + { + + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; + } + + var where = PredicateBuilder.True<CoreCmsPlanOrder>(); + + where= where.And(p => p.isdelete == false); + if (!string.IsNullOrWhiteSpace(entity.where)) + { + + var obj = JsonConvert.DeserializeAnonymousType(entity.where, new + { + quxianId = "", + sheng = "", + shi = "", + quxian = "", + pianqu = "", + shipAddress = "", + DeliverState = "" + + }); + if (!string.IsNullOrWhiteSpace(obj.sheng)) + { + + + where = where.And(p => p.sheng == obj.sheng); + + + } + if (!string.IsNullOrWhiteSpace(obj.shi)) + { + + + where = where.And(p => p.shi == obj.shi); + + + } + if (!string.IsNullOrWhiteSpace(obj.quxian)) + { + + + where = where.And(p => p.quxian == obj.quxian); + + + } + + if (!string.IsNullOrWhiteSpace(obj.quxianId)) + { + var quxianId = obj.quxianId.ObjToInt(0); + if (quxianId >= 0) + { + + where = where.And(p => p.quxianId == quxianId); + + } + } + + if (!string.IsNullOrWhiteSpace(obj.pianqu)) + { + var pianqu = obj.pianqu; + + + where = where.And(p => p.pianqu.Contains(pianqu)); + + + } + if (!string.IsNullOrWhiteSpace(obj.shipAddress)) + { + var shipAddress = obj.shipAddress; + + + where = where.And(p => p.shipAddress.Contains(shipAddress)); + + } + + if (!string.IsNullOrWhiteSpace(obj.DeliverState)) + { + + if (Enum.TryParse(obj.DeliverState, out DeliverStateType result)) + { + where = where.And(p => p.DeliverState == result); + + } + + + + } + + + + + + + } + //where = where.And(p => user.mobile == p.userMobile); + //whereManger = whereManger.And(p => p.DeliverState == result); + where = where.And(p => p.isdelete == false); + RefAsync<int> totalNumbe = 0; + var listSchool = _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(where).Where(p => user.mobile == p.shipMobile).Select(p => new CoreCmsPlanOrderListDto(), true); + var listmager = _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(where). + LeftJoin<EC_OrderBasic>((p, or) => p.orderkeyid == or.Keyid) + .LeftJoin<OA_CustomerCommunications>((p, or, cus) => or.BuyerId == cus.Keyid) + .Where((p, or, cus) => cus.Keyid == _SchoolManagerKeyId) + .Select((p, or, cus) => p, true).Select(p => new CoreCmsPlanOrderListDto(), true); + + List<CoreCmsPlanOrderListDto> list = new List<CoreCmsPlanOrderListDto>(); + if (rt && rt2) + list = await _CyDbClient.Union(listSchool, listmager).OrderBy(p => p.quxianId).ToPageListAsync(entity.page, entity.limit, totalNumbe); + else + if (rt) + list = await listSchool.OrderBy(p => p.quxianId).ToPageListAsync(entity.page, entity.limit, totalNumbe); + else if (rt2) + list = await listmager.OrderBy(p => p.quxianId).ToPageListAsync(entity.page, entity.limit, totalNumbe); + + //var list = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(where).OrderBy(p => p.quxianId).Select(p => new CoreCmsPlanOrderListDto(), true).ToPageListAsync(entity.page, entity.limit, totalNumbe); //.QueryPageByDTOAsync(where, entity.page, entity.limit, true); return new WebApiCallBack() @@ -379,20 +650,36 @@ { var rt = await IsSchooler(); var rtb = await IsDrive(); + + var rt2 = await IsSchoolManger(); + if (rt == false && rt2 == false && rt2 == false) + { + + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; + } if (rt == false && rtb == false) { - throw new Exception("娌℃湁鏉冮檺璁块棶"); + + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; } - var list = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Includes(x=>x.items) - .Includes(x=>x.DeliverOrderItems,o=>o.items) + var list = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Includes(x => x.items) + .Includes(x => x.DeliverOrderItems, o => o.items) .Where(x => x.id == entity.id) - .Mapper(x=> + .Mapper(x => { - - x.deliverOrder = x.DeliverOrderItems.OrderByDescending(de=>de.CreateTime).FirstOrDefault(); + + x.deliverOrder = x.DeliverOrderItems.OrderByDescending(de => de.CreateTime).FirstOrDefault(); }).FirstAsync(); var countList = await CountLessCount(list.DeliverOrderItems); @@ -415,25 +702,31 @@ status = true, data = list, }; - } + } - + public async Task<WebApiCallBack> SetOderOfSchool(CoreCmsPlanOrderInfoDto planOrderInfoDto) { - var rt = await IsSchooler(); - if (rt == false) + var rt2 = await IsSchoolManger(); + if (rt == false && rt2 == false) { - return new WebApiCallBack { status = false, msg = "浣犳病鏈夋潈闄愭搷浣�" }; } + if (string.IsNullOrEmpty(planOrderInfoDto.shipMobile) || !planOrderInfoDto.shipMobile.IsPhoneNumberValid()) + return new WebApiCallBack + { + status = false, + msg="鑱旂郴浜虹數璇濆繀椤绘槸鎵嬫満鍙风爜" + }; + var oldOder = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Includes(x => x.items).Where(x => x.id == planOrderInfoDto.id).FirstAsync(); - if(oldOder.status==2) + if (oldOder.status == 2) { return new WebApiCallBack { @@ -441,6 +734,13 @@ msg = "宸茬粡閿佸崟" }; } + if (oldOder.isdelete == true) + return new WebApiCallBack + { + status = false, + msg = "璁㈠崟宸插垹闄�" + }; + decimal auturo = 0; foreach (var item in oldOder.items) { @@ -451,6 +751,7 @@ } oldOder.shipMobile = planOrderInfoDto.shipMobile; + oldOder.userMobile = planOrderInfoDto.shipMobile; oldOder.shipName = planOrderInfoDto.shipName; oldOder.orderAmount = auturo; @@ -461,11 +762,11 @@ await _CyDbClient.Updateable(oldOder.items).ExecuteCommandAsync(); await _CyDbClient.AsTenant().CommitTranAsync(); } - catch (Exception ) + catch (Exception) { await _CyDbClient.AsTenant().RollbackTranAsync(); - throw ; + throw; } //await _CyDbClient.UpdateNav(oldOder).Include(x => x.items,new UpdateNavOptions //{ @@ -473,7 +774,7 @@ //}).ExecuteCommandAsync(); - await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.CyDeliverOAjisuanjine,oldOder.orderkeyid?.ToString()); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.CyDeliverOAjisuanjine, oldOder.orderkeyid?.ToString()); return new WebApiCallBack() { status = true, @@ -485,28 +786,33 @@ { var rt = await IsSchooler(); - if (rt == false) + var rt2 = await IsSchoolManger(); + if (rt == false && rt2 == false) { - throw new Exception("娌℃湁鏉冮檺璁块棶"); + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; } var data = _CyDbClient.Queryable<CoreDeliverOrder>() - .Where(x=>x.id==new Guid(entity.id)) + .Where(x => x.id == new Guid(entity.id)) .Includes(x => x.items) .Includes(x => x.tracks) - .Includes(x=>x.Oreder,o=>o.items) + .Includes(x => x.Oreder, o => o.items) .Includes(x => x.Oreder, o => o.DeliverOrderItems) .Select(x => new CoreDeliverOrder() - { - DeliveryMoble = "", + { + DeliveryMoble = "", - - }, true).Mapper(x=> - { - - }).FirstAsync(); - + }, true).Mapper(x => + { + + }).FirstAsync(); + + return new WebApiCallBack() { @@ -515,27 +821,28 @@ }; } - public async Task <WebApiCallBack> SetDeliveryDataOfschool(SetDeliveryDataDto entity) + public async Task<WebApiCallBack> SetDeliveryDataOfschool(SetDeliveryDataDto entity) { - if(await IsSchooler()==false) + var rt = await IsSchooler(); + var rt2 = await IsSchoolManger(); + if (rt == false && rt2 == false) { - return new WebApiCallBack() + return new WebApiCallBack { - status = true, - msg = "鏃犳潈闄�" + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" }; - } - var olddata= await _CyDbClient.Queryable<CoreCmsPlanOrder>() - .Includes(x=>x.items) - .Includes(x=>x.DeliverOrderItems,de=>de.items) - . Where(x => x.id == entity.PlanOrderId) - .Mapper(x=>x.deliverOrder= x.DeliverOrderItems.Where(y=>y.OrderState== CoreDeliverOrderType.UnStart).FirstOrDefault()) + var olddata = await _CyDbClient.Queryable<CoreCmsPlanOrder>() + .Includes(x => x.items) + .Includes(x => x.DeliverOrderItems, de => de.items) + .Where(x => x.id == entity.PlanOrderId) + .Mapper(x => x.deliverOrder = x.DeliverOrderItems.Where(y => y.OrderState == CoreDeliverOrderType.UnStart).FirstOrDefault()) .FirstAsync(); - if(olddata==null) + if (olddata == null) { return new WebApiCallBack() { @@ -543,7 +850,7 @@ msg = "娌℃湁鎵惧埌鐩稿叧璁㈠崟" }; } - if(olddata.DeliverState == DeliverStateType.CompletedDelivery) + if (olddata.DeliverState == DeliverStateType.CompletedDelivery) { return new WebApiCallBack() { @@ -552,19 +859,19 @@ }; } var user = await _coreCmsUserServices.QueryByIdAsync(_User.ID); - await _CyDbClient.AsTenant().BeginTranAsync(); + await _CyDbClient.AsTenant().BeginTranAsync(); try { if (entity.MakeTime != null) { - if(olddata.deliverOrder==null) + if (olddata.deliverOrder == null) { //娌℃湁閰嶉�佸崟 鏂板缓 olddata.deliverOrder = await CreatDeliverItem(olddata); - olddata.deliverOrder.MakeTime=entity.MakeTime; - - await _CyDbClient.InsertNav(olddata.deliverOrder).Include(x => x.items).ExecuteCommandAsync(); - + olddata.deliverOrder.MakeTime = entity.MakeTime; + + await _CyDbClient.InsertNav(olddata.deliverOrder).Include(x => x.items).ExecuteCommandAsync(); + } else { @@ -582,15 +889,15 @@ { olddata.DeliverRemark = entity.DeliverRemark; - olddata.upDataBy=_UserMoble; - olddata.upDataTime= DateTime.Now; + olddata.upDataBy = _UserMoble; + olddata.upDataTime = DateTime.Now; await _CyDbClient.Updateable(olddata).ExecuteCommandAsync(); } await _CyDbClient.AsTenant().CommitTranAsync(); return new WebApiCallBack() { status = true, - + }; } catch (Exception) @@ -598,17 +905,23 @@ await _CyDbClient.AsTenant().RollbackTranAsync(); throw; } - - + + } public async Task<WebApiCallBack> GetDeliveryTracksOfSchool(FMStringId entity) { var rt = await IsSchooler(); - if (rt == false) + var rt2 = await IsSchoolManger(); + if (rt == false && rt2 == false) { - throw new Exception("娌℃湁鏉冮檺璁块棶"); + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; } - var data = await _CyDbClient.Queryable<CoreDeliveryOrderTracks>().Where(x => x.OrderID == new Guid(entity.id)).ToListAsync(); + var data = await _CyDbClient.Queryable<CoreDeliveryOrderTracks>().Where(x => x.OrderID == new Guid(entity.id)).OrderByDescending(x=>x.CreateTime) + .ToListAsync(); return new WebApiCallBack() { @@ -617,11 +930,21 @@ }; } - + public async Task<WebApiCallBack> GetDriverPhoneOfSchool(FMStringId entity) { + var rt = await IsSchooler(); + var rt2 = await IsSchoolManger(); + if (rt == false && rt2 == false) + { + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; + } if (!Guid.TryParse(entity.id, out Guid guid)) { return new WebApiCallBack @@ -736,22 +1059,28 @@ } where = where.And(n => n.isdelete == false); RefAsync<int> totalNumbe = 0; - var dlist = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(n => n.DeliverState != DeliverStateType.CompletedDelivery) + var dlist = await _CyDbClient.Queryable<CoreCmsPlanOrder>() + //.Where(n => n.DeliverState != DeliverStateType.CompletedDelivery) + //.Where(n => n.isdelete ==false) .Select((n) => new CoreCmsPlanOrder { IngDeliverOrderID = SqlFunc.Subqueryable<CoreDeliverOrder>().Where(x => x.OrderId == n.id && x.OrderState != CoreDeliverOrderType.Faile && x.OrderState != CoreDeliverOrderType.Completed - && (x.DeliveryMoble != "" || x.DeliveryMoble != null)).OrderByDesc(x => x.CreateTime).Select(x=>x.id), + && (x.DeliveryMoble != "" && x.DeliveryMoble != null)).OrderByDesc(x => x.CreateTime).Select(x => x.id), deliverOrder = SqlFunc.Subqueryable<CoreDeliverOrder>().Where(x => x.OrderId == n.id && x.OrderState != CoreDeliverOrderType.Faile && x.OrderState != CoreDeliverOrderType.Completed - && (x.DeliveryMoble != "" || x.DeliveryMoble != null)).OrderByDesc(x => x.CreateTime).First() + && (x.DeliveryMoble != "" && x.DeliveryMoble != null)).OrderByDesc(x => x.CreateTime).First(), + MakeTime = SqlFunc.Subqueryable<CoreDeliverOrder>().Where(x => x.OrderId == n.id + && x.OrderState != CoreDeliverOrderType.Faile + && x.OrderState != CoreDeliverOrderType.Completed + && (x.DeliveryMoble != "" && x.DeliveryMoble != null)).OrderByDesc(x => x.CreateTime).Select(x=>x.MakeTime) }, true - ).MergeTable().Where(where).ToPageListAsync(entity.page, entity.limit, totalNumbe); + ).MergeTable().Where(where).OrderBy(n=>n.MakeTime).ToPageListAsync(entity.page, entity.limit, totalNumbe); var data = dlist.Select(x => new { @@ -759,17 +1088,18 @@ MakeTime = x.deliverOrder?.MakeTime, shipAddress = x.shipAddress, isScheduled = x.deliverOrder != null ? "1" : "0", + x.DeliverState }).ToList(); return new WebApiCallBack { status = true, - data= new + data = new { totalNumbe, data, } - + }; } public async Task<WebApiCallBack> GetSendDeliveryOderListOfDeliveryManage(FMPageByWhereOrder entity) @@ -793,9 +1123,14 @@ sheng = "", shi = "", quxian = "", + DeliveryMoble="", }); + if(!string.IsNullOrEmpty(obj.DeliveryMoble)) + { + where = where.And(n => n.DeliveryMoble == obj.DeliveryMoble); + } if (!string.IsNullOrWhiteSpace(obj.sheng)) { @@ -857,28 +1192,39 @@ } where = where.And(n => n.isdelete == false); RefAsync<int> totalNumbe = 0; - var dlist = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(n => n.DeliverState != DeliverStateType.CompletedDelivery) + var dlist = await _CyDbClient.Queryable<CoreCmsPlanOrder>() + //.Where(n => n.DeliverState != DeliverStateType.CompletedDelivery) .Select((n) => new CoreCmsPlanOrder { - + deliverOrder = SqlFunc.Subqueryable<CoreDeliverOrder>().Where(x => x.OrderId == n.id && x.OrderState != CoreDeliverOrderType.Faile && x.OrderState != CoreDeliverOrderType.Completed && (x.DeliveryMoble != "" || x.DeliveryMoble != null)).OrderByDesc(x => x.CreateTime).First(), - MakeTime= SqlFunc.Subqueryable<CoreDeliverOrder>().Where(x => x.OrderId == n.id + MakeTime = SqlFunc.Subqueryable<CoreDeliverOrder>().Where(x => x.OrderId == n.id && x.OrderState != CoreDeliverOrderType.Faile && x.OrderState != CoreDeliverOrderType.Completed - && (x.DeliveryMoble != "" || x.DeliveryMoble != null)).OrderByDesc(x => x.CreateTime).Select(x=>x.MakeTime) + && (x.DeliveryMoble != "" || x.DeliveryMoble != null)).OrderByDesc(x => x.CreateTime).Select(x => x.MakeTime), + + DeliveryMoble = SqlFunc.Subqueryable<CoreDeliverOrder>().Where(x => x.OrderId == n.id + && x.OrderState != CoreDeliverOrderType.Faile + && x.OrderState != CoreDeliverOrderType.Completed + && (x.DeliveryMoble != "" || x.DeliveryMoble != null)).OrderByDesc(x => x.CreateTime).Select(x => x.DeliveryMoble) } - ,true - ).MergeTable().Where(where).ToPageListAsync(entity.page, entity.limit, totalNumbe); + , true + ).MergeTable().Where(where).OrderBy(x=>x.MakeTime).ToPageListAsync(entity.page, entity.limit, totalNumbe); + var deliveryList = await _CyDbClient.Queryable<OA_Staff>().Where(x => x.Status == "鍦ㄨ亴" && x.BF_IsDriver == true).Select(x => new + { + deliveryMoble = x.MobieNum, + name = x.Name, + }).ToListAsync(); return new WebApiCallBack { status = true, - data = new + data = new { totalNumbe, data = dlist.Select(x => new @@ -887,10 +1233,15 @@ x.shipAddress, x.quxian, x.pianqu, - x.deliverOrder + x.deliverOrder, + x.DeliverState, + x.DeliveryMoble - }).ToList() + }).ToList(), + + deliveryList + } }; } @@ -903,15 +1254,15 @@ msg = "浣犳病鏈夋潈闄愭搷浣�" }; - var data= await _CyDbClient.Queryable<CoreCmsPlanOrder>().Includes(x=>x.items).Includes(x=>x.DeliverOrderItems,itm=>itm.items) - .Where(x=>x.isdelete==false&&x.id==entity.id) - .FirstAsync(); - if(data==null) + var data = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Includes(x => x.items).Includes(x => x.DeliverOrderItems, itm => itm.items) + .Where(x => x.isdelete == false && x.id == entity.id) + .FirstAsync(); + if (data == null) { return new WebApiCallBack { status = false, - msg = "璁㈠崟宸插け鏁堟垨鑰呬笉鍙洿鏀�" + msg = "璁㈠崟宸插畬鎴�" }; }; @@ -936,17 +1287,17 @@ }) .ToList(); ///鏈夊苟涓旀湭鎵ц閰嶉�佺殑璁㈠崟 - var UndoDeliver = DeliverOrderlist.Where(x => x.OrderState == CoreDeliverOrderType.UnStart).FirstOrDefault(); + var UndoDeliver = data.DeliverOrderItems.Where(x => x.OrderState == CoreDeliverOrderType.UnStart).FirstOrDefault(); //閰嶉�佸崟鍒楄〃璇︽儏 var orderItm = new List<CoreCmsPlanOrderItemDto>(); - + foreach (var item in data.items) { var unDeliver = groupedItems.Where(x => x.ZYBName == item.name && x.ZYBSpecification == item.specification).FirstOrDefault()?.Number ?? 0; - unDeliver = item.nums - unDeliver; + unDeliver = item.nums - unDeliver; if (unDeliver < 0) unDeliver = 0; - int DeliveredCount = UndoDeliver?.items.Where(x=>x.ZYBSpecification== item.name&&x.ZYBName==item.name).FirstOrDefault()?.Number?? + int DeliveredCount = UndoDeliver?.items.Where(x => x.ZYBSpecification == item.name && x.ZYBName == item.name).FirstOrDefault()?.Number ?? unDeliver; orderItm.Add(new CoreCmsPlanOrderItemDto { @@ -954,6 +1305,7 @@ id = item.id, name = item.name, nums = item.nums, + Number = DeliveredCount, price = item.price, specification = item.specification, isOld = item.isOld, @@ -962,20 +1314,20 @@ }); } - var deliveryList = await _CyDbClient.Queryable<OA_Staff>().Where(x => x.Status == "鍦ㄨ亴" && x.BF_IsDriver == true).Select(x=>new + var deliveryList = await _CyDbClient.Queryable<OA_Staff>().Where(x => x.Status == "鍦ㄨ亴" && x.BF_IsDriver == true).Select(x => new { - deliveryMoble= x.MobieNum, - name= x.Name, + deliveryMoble = x.MobieNum, + name = x.Name, }).ToListAsync(); return new WebApiCallBack { status = true, - data = new + data = new { - id =UndoDeliver?.id, - OrderId = data.id, + id = UndoDeliver?.id, + OrderId = data.id, //鍙告満鐢佃瘽 DeliveryMoble = UndoDeliver?.DeliveryMoble, items = orderItm, @@ -995,8 +1347,21 @@ status = false, msg = "浣犳病鏈夋潈闄愭搷浣�" }; - - var planOrder= await _CyDbClient.Queryable<CoreCmsPlanOrder>().Includes(x=>x.items).Where(x => x.id == entity.OrderId).FirstAsync(); + bool isallZone = true; + foreach (var item in entity.items) + { + if (item.Number != 0) + isallZone = false; + } + if (isallZone) + { + return new WebApiCallBack + { + status = false, + msg = "閰嶉�佽揣鐗╀负0" + }; + } + var planOrder = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Includes(x => x.items).Where(x => x.id == entity.OrderId).FirstAsync(); if (planOrder == null) { return new WebApiCallBack @@ -1006,13 +1371,13 @@ }; } - - if (entity.id!=null) + + if (entity.id != null) { //鏄慨鏀� - var DeliverOrder = await _CyDbClient.Queryable<CoreDeliverOrder>().Includes(x=>x.items).Where(x => x.id == entity.id ).FirstAsync(); - if(DeliverOrder== null) + var DeliverOrder = await _CyDbClient.Queryable<CoreDeliverOrder>().Includes(x => x.items).Where(x => x.id == entity.id).FirstAsync(); + if (DeliverOrder == null) { return new WebApiCallBack { @@ -1020,35 +1385,35 @@ msg = "娌℃壘鍒拌鍗�", }; } - if(entity.MakeTime!=null) + if (entity.MakeTime != null) - DeliverOrder.MakeTime = entity.MakeTime; - if(entity.items!=null&&entity.items.Count>0) + DeliverOrder.MakeTime = entity.MakeTime; + if (entity.items != null && entity.items.Count > 0) { foreach (var item in DeliverOrder.items) { - var newitem= entity.items.Where(x=>x.name==item.ZYBName&&x.specification==item.ZYBSpecification).FirstOrDefault(); - if(newitem!=null) + var newitem = entity.items.Where(x => x.name == item.ZYBName && x.specification == item.ZYBSpecification).FirstOrDefault(); + if (newitem != null) { - if (item.Number != newitem.nums) + if (item.Number != newitem.Number) { - item.Number = newitem.nums; + item.Number = newitem.Number ?? 0; item.UpDataBy = _UserMoble; item.UpdataTime = DateTime.Now; } - - + + } } } - //DeliverOrder.items= entity.items; - if(!string.IsNullOrEmpty( entity.DeliveryMoble)) + //DeliverOrder.items= entity.items; + if (!string.IsNullOrEmpty(entity.DeliveryMoble)) DeliverOrder.DeliveryMoble = entity.DeliveryMoble; - DeliverOrder.UpDataBy = _coreCmsUserServices.QueryById(_User.ID)?.mobile; - + DeliverOrder.UpDataBy = _coreCmsUserServices.QueryById(_User.ID)?.mobile; + DeliverOrder.UpdataTime = DateTime.Now; - await _CyDbClient.UpdateNav(DeliverOrder).Include(x => x.items).ExecuteCommandAsync(); + await _CyDbClient.UpdateNav(DeliverOrder).Include(x => x.items).ExecuteCommandAsync(); @@ -1057,7 +1422,7 @@ { - var olddeliver = await _CyDbClient.Queryable<CoreDeliverOrder>().Includes(x => x.items).Where(x => x.OrderId==entity.OrderId&&x.OrderState== CoreDeliverOrderType.UnStart).FirstAsync(); + var olddeliver = await _CyDbClient.Queryable<CoreDeliverOrder>().Includes(x => x.items).Where(x => x.OrderId == entity.OrderId && x.OrderState == CoreDeliverOrderType.UnStart).FirstAsync(); if (olddeliver != null) { return new WebApiCallBack @@ -1076,7 +1441,7 @@ DeliveryMoble = entity.DeliveryMoble, id = Guid.NewGuid(), OrderState = CoreDeliverOrderType.UnStart, - items = new List<CoreDeliverOrderItem>() + items = new List<CoreDeliverOrderItem>() }; if (entity.items != null && entity.items.Count > 0) { @@ -1087,25 +1452,175 @@ CreateBy = _UserMoble, CreateTime = DateTime.Now, id = Guid.NewGuid(), - Number = item.nums, - OrderID= DeliverOrder.id, - ZYBName= item.name, - ZYBSpecification= item.specification, - - + Number = item.Number ?? 0, + OrderID = DeliverOrder.id, + ZYBName = item.name, + ZYBSpecification = item.specification, + + }); } - + } - await _CyDbClient.InsertNav(DeliverOrder).Include(x => x.items).ExecuteCommandAsync(); + await _CyDbClient.InsertNav(DeliverOrder).Include(x => x.items).ExecuteCommandAsync(); } return new WebApiCallBack() { status = true, data = true }; + + } + + public async Task<WebApiCallBack> GetSchoolInventory(FMIntId entity) + { + var rt = await IsDeliverManage(); + if (rt == false) + { + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; + } + var data = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Includes(x => x.items).Includes(x => x.DeliverOrderItems, de => de.items).Where(x => x.isdelete == false && x.id == entity.id).FirstAsync(); + if (data == null) + { + return new WebApiCallBack + { + status = false, + msg = "璁㈠崟宸插け鏁�" + }; + } + var DataCountlist = await CountLessCount(data.DeliverOrderItems); + List<CoreCmsPlanOrderItemDto> datalist = new List<CoreCmsPlanOrderItemDto>(); + + foreach (var item in data.items) + { + var overCount = DataCountlist.Where(x => x.name == item.name && x.Specification == item.specification).Select(x => x.OverCount).FirstOrDefault(0); + datalist.Add(new CoreCmsPlanOrderItemDto() + { + amount = item.amount, + nums = item.nums, + name=item.name, + specification=item.specification, + price= item.price, + + DeliveredCount = overCount, + unDeliveredCount = item.nums - overCount, + LessNumber = DataCountlist.Where(x => x.name == item.name && x.Specification == item.specification).Select(x => x.LessCount).FirstOrDefault(0), + Inventory=0 + + + }); + + + } + return new WebApiCallBack + { + status = true, + data = new + { + data.shipAddress, + data.shipMobile, + data.shipName, + data.shouhuoAddress, + data.status, + data.DeliverState, + data.DeliverRemark, + data.keYongAmount, + items = datalist, + + + } + }; + + + } + public async Task<WebApiCallBack> MakeMultiDeliveryOderOfDeliveryManage(MakeMultiDeliveryOrderDto entity) + { + + + var oder = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(x => entity.ids.Contains(x.id) && x.isdelete == false).Select(x => new CoreCmsPlanOrder() + { + deliverOrder = SqlFunc.Subqueryable<CoreDeliverOrder>().Where(y => y.OrderId == x.id && y.OrderState != CoreDeliverOrderType.Completed).First() + } + ).ToListAsync(); + if (oder == null || oder.Count == 0) + return new WebApiCallBack() + { + status = true, + data = true + + }; + //妫�楠� + foreach (var item in oder) + { + if (item.deliverOrder != null && item.deliverOrder.OrderState != CoreDeliverOrderType.UnStart) + return new WebApiCallBack() + { + status = false, + msg = $"瀛︽牎锛歿item.shipAddress} 璁㈠崟宸茬粡鍦ㄩ�佽揣涓紝涓嶈兘瀹夋帓閫佽揣" + }; + }; + + + //瀹夋帓閫佽揣 + + await _CyDbClient.AsTenant().BeginTranAsync(); + try + { + foreach (var item in oder) + { + + if (item.deliverOrder != null && item.deliverOrder.OrderState == CoreDeliverOrderType.UnStart) + { + if (item.deliverOrder.MakeTime != entity.Time || item.deliverOrder.DeliveryMoble != entity.DeliveryMoble) + + { + item.deliverOrder.MakeTime = entity.Time; + item.deliverOrder.DeliveryMoble = entity.DeliveryMoble; + item.deliverOrder.UpDataBy = _UserMoble; + item.deliverOrder.UpdataTime = DateTime.Now; + await _CyDbClient.Updateable(item.deliverOrder).ExecuteCommandAsync(); + } + } + else if (item.deliverOrder == null) + { + var oderold = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Includes(x => x.items).Includes(x => x.DeliverOrderItems, devs => devs.items).Where(x => x.id == item.id).FirstAsync(); + //鍒涘缓鏂拌〃 + var deliverOrder = await CreatDeliverItem(oderold); + deliverOrder.MakeTime = DateTime.Now; + deliverOrder.DeliveryMoble = entity.DeliveryMoble; + + await _CyDbClient.InsertNav(deliverOrder).Include(x => x.items).ExecuteCommandAsync(); + } + + + + } + await _CyDbClient.AsTenant().CommitTranAsync(); + + return new WebApiCallBack + { + status = true, + data = true, + }; + } + catch (Exception) + { + await _CyDbClient.AsTenant().RollbackTranAsync(); + return new WebApiCallBack + { + status = false, + msg = "绯荤粺澶勭悊澶辫触" + + }; + } + + } @@ -1126,12 +1641,12 @@ var obj = JsonConvert.DeserializeAnonymousType(entity.where, new { quxianId = "", - sheng="", + sheng = "", pianqu = "", - shipAddress = "", + shipAddress = "", shi = "", quxian = "", - DeliverState="" + DeliverState = "" @@ -1140,7 +1655,7 @@ { var ad = obj.DeliverState.ToInt32OrDefault(0); - where = where.And(n => n.DeliverState == (DeliverStateType)ad ); + where = where.And(n => n.DeliverState == (DeliverStateType)ad); } if (!string.IsNullOrWhiteSpace(obj.sheng)) @@ -1150,7 +1665,7 @@ where = where.And(n => n.sheng == obj.sheng); } - + if (!string.IsNullOrWhiteSpace(obj.shi)) { @@ -1212,14 +1727,14 @@ deliverOrder = SqlFunc.Subqueryable<CoreDeliverOrder>().Where(x => x.OrderId == n.id && (x.OrderState == CoreDeliverOrderType.UnStart || x.OrderState == CoreDeliverOrderType.Start) && x.DeliveryMoble == user.mobile).First() - }, true).MergeTable().Where(x=>x.IngDeliverOrderID != null).ToPageListAsync( entity.page,entity.limit, totalNumbe); + }, true).MergeTable().Where(x => x.IngDeliverOrderID != null).ToPageListAsync(entity.page, entity.limit, totalNumbe); return new WebApiCallBack { status = true, - data = new + data = new { totalNumbe, - data= lisdata + data = lisdata } }; } @@ -1244,16 +1759,16 @@ shi = "", quxian = "", OrderState = "", - StartTimeZone="", - EndTimeStartZone= "", - + StartTimeZone = "", + EndTimeStartZone = "", + }); if (!string.IsNullOrWhiteSpace(obj.OrderState)) { var ad = obj.OrderState.ToInt32OrDefault(0); - where = where.And(n => n.OrderState == (CoreDeliverOrderType)ad); + where = where.And(n => n.OrderState == (CoreDeliverOrderType)ad); } if (!string.IsNullOrWhiteSpace(obj.sheng)) @@ -1268,7 +1783,7 @@ { - where = where.And(n => n.Oreder.shi == obj.shi); + where = where.And(n => n.Oreder.shi == obj.shi); } if (!string.IsNullOrWhiteSpace(obj.quxian)) @@ -1278,7 +1793,7 @@ where = where.And(n => n.Oreder.quxian == obj.quxian); } - + if (!string.IsNullOrEmpty(obj.pianqu)) @@ -1295,7 +1810,7 @@ where = where.And(n => n.Oreder.shipAddress.Contains(obj.shipAddress)); - } + } if (!string.IsNullOrEmpty(obj.EndTimeStartZone)) @@ -1303,7 +1818,7 @@ var date = obj.EndTimeStartZone.ParseDateTimeRange(); if (date.StartDate != null && date.EndDate != null) - where = where.And(n => n.OverTime<date.EndDate&&n.OverTime>date.EndDate); + where = where.And(n => n.OverTime < date.EndDate && n.OverTime > date.EndDate); } @@ -1318,8 +1833,9 @@ } where = where.And(n => n.DeliveryMoble == _UserMoble); + where = where.And(n => n.OrderState == CoreDeliverOrderType.Completed); RefAsync<int> totalNumbe = 0; - var data= await _CyDbClient.Queryable<CoreDeliverOrder>().Includes(n=>n.Oreder).Where(where).OrderByDescending(n=>n.StartTime).ToPageListAsync( entity.page,entity.limit, totalNumbe); + var data = await _CyDbClient.Queryable<CoreDeliverOrder>().Includes(n => n.Oreder).Where(where).Where(x=>x.Oreder.isdelete==false).OrderByDescending(n => n.StartTime).ToPageListAsync(entity.page, entity.limit, totalNumbe); //var datalist= await _CyDbClient.Queryable<CoreCmsPlanOrder>().Includes(x => x.DeliverOrderItems).Where(where).Select(x => new CoreCmsPlanOrder //{ // IngDeliverOrderID = SqlFunc.Subqueryable<CoreDeliverOrder>().Where(ide => ide.DeliveryMoble == _UserMoble && ide.OrderId == x.id).Select(ide => ide.id) @@ -1331,14 +1847,17 @@ return new WebApiCallBack() { status = true, - data = new + data = new { - list= data, + list = data, totalNumbe } }; } + + + public async Task<WebApiCallBack> GetDeliverInfoOfDrver(FMStringId entity) { @@ -1353,11 +1872,11 @@ }; } - - var data= await _CyDbClient.Queryable<CoreDeliverOrder>() - .Where(x => x.id == guid && x.OrderState != CoreDeliverOrderType.Faile) - .Includes(x => x.items).Includes(x=>x.Oreder,or=>or.items).FirstAsync(); - if(data==null) + + var data = await _CyDbClient.Queryable<CoreDeliverOrder>() + .Where(x => x.id == guid && x.OrderState != CoreDeliverOrderType.Faile) + .Includes(x => x.items).Includes(x => x.Oreder, or => or.items).FirstAsync(); + if (data == null) { return new WebApiCallBack { @@ -1367,12 +1886,23 @@ } var DeliverOrderlist = await _CyDbClient.Queryable<CoreDeliverOrder>().Where(x => x.OrderId == data.OrderId).ToListAsync(); var lessdata = await CountLessCount(DeliverOrderlist); + var finish = await _redisOperationRepository.Get(LockFilshDeliverOderKey + data.id); + var CanFinishOrder = true; + if (data.OrderState != CoreDeliverOrderType.Start) + { + CanFinishOrder = false; + } + else + CanFinishOrder = true; + if (finish == LockFilshDeliverOderString) + CanFinishOrder = false; var ret = new DeliveryOrderDto() { MakeTime = data.MakeTime, DeliveryMoble = data.DeliveryMoble, OrderState = data.OrderState, + Remarke= data.Remarke, PlanOrdInfo = new CoreCmsPlanOrderInfoDto() { pianqu = data.Oreder.pianqu, @@ -1381,15 +1911,18 @@ shipAddress = data.Oreder.shipAddress, shouhuoAddress = data.Oreder.shipAddress, DeliverRemark = data.Oreder.DeliverRemark, - shipName= data.Oreder.shipName, - sheng= data.Oreder.sheng, - shi= data.Oreder.shi, - quxian= data.Oreder.quxian, - DeliveryOderID=data.id, + shipName = data.Oreder.shipName, + sheng = data.Oreder.sheng, + shi = data.Oreder.shi, + quxian = data.Oreder.quxian, + DeliveryOderID = data.id, + + }, + CanFinishOrder=CanFinishOrder, items = new List<CoreCmsPlanOrderItemDto>() }; @@ -1405,7 +1938,7 @@ DeliveredCount = count, Number = thisNumber?.Number ?? count, unDeliveredCount = item.nums > count ? item.nums - count : 0, - LessNumber= thisNumber.LessNumber, + LessNumber = thisNumber.LessNumber, }); @@ -1432,7 +1965,7 @@ } var data = await _CyDbClient.Queryable<CoreDeliverOrder>() - .Where(x => x.id == guid && x.OrderState == CoreDeliverOrderType.UnStart ) + .Where(x => x.id == guid && x.OrderState == CoreDeliverOrderType.UnStart) .FirstAsync(); if (data == null) return new WebApiCallBack @@ -1442,16 +1975,17 @@ }; data.OrderState = CoreDeliverOrderType.Start; data.UpDataBy = _UserMoble; - data.UpdataTime = DateTime.Now; + data.UpdataTime = DateTime.Now; data.StartTime = DateTime.Now; - await _CyDbClient.Updateable(data).ExecuteCommandAsync(); + await _CyDbClient.Updateable(data).ExecuteCommandAsync(); + _redisOperationRepository.StringSet(LockFilshDeliverOderKey + data.id, LockFilshDeliverOderString, TimeSpan.FromMinutes(5)); return new WebApiCallBack() { status = true }; } - + public async Task<WebApiCallBack> SetDeliverOrdeOfDrver(DeliveryOrderDto entity) { @@ -1461,8 +1995,23 @@ status = false, msg = "娌℃湁鏉冮檺鎿嶄綔" }; - var data= await _CyDbClient.Queryable<CoreDeliverOrder>().Includes(x=>x.items).Includes(x=>x.Oreder).Where(x => x.id == entity.id && x.OrderState != CoreDeliverOrderType.Faile && x.DeliveryMoble==_UserMoble).FirstAsync(); - if(data==null) + bool isallZone = true; + foreach (var item in entity.items) + { + if (item.Number != 0) + isallZone = false; + } + if (isallZone) + { + return new WebApiCallBack + { + status = false, + msg = "閰嶉�佽揣鐗╀负0" + }; + } + + var data = await _CyDbClient.Queryable<CoreDeliverOrder>().Includes(x => x.items).Includes(x => x.Oreder).Where(x => x.id == entity.id && x.OrderState != CoreDeliverOrderType.Faile && x.DeliveryMoble == _UserMoble).FirstAsync(); + if (data == null) { return new WebApiCallBack() { @@ -1470,41 +2019,50 @@ msg = "娌℃湁鏉冮檺鎴栬�呯姸鎬佸凡缁忛攣瀹氫笉鍙洿鏀�" }; } - var deliverlist = await _CyDbClient.Queryable<CoreDeliverOrder>().Includes(x=>x.items).Where(x => x.OrderId == data.OrderId).ToListAsync(); + var deliverlist = await _CyDbClient.Queryable<CoreDeliverOrder>().Includes(x => x.items).Where(x => x.OrderId == data.OrderId).ToListAsync(); var countlist = await CountLessCount(deliverlist); + //鍙告満涓嶅彲鏀� + //if (!string.IsNullOrEmpty(data.Oreder?.DeliverRemark)) + //{ + // if (data.Oreder.DeliverRemark != data.Oreder?.DeliverRemark) + // { + // data.Oreder.DeliverRemark = data.Oreder?.DeliverRemark; - if(!string.IsNullOrEmpty( data.Oreder?.DeliverRemark)) + // data.Oreder.upDataTime = DateTime.Now; + // data.Oreder.upDataBy = _UserMoble; + // } + //} + if (entity.Remarke != data.Remarke) { - if (data.Oreder.DeliverRemark != data.Oreder?.DeliverRemark) - { - data.Oreder.DeliverRemark = data.Oreder?.DeliverRemark; - data.Oreder.upDataTime = DateTime.Now; - data.Oreder.upDataBy = _UserMoble; - } + data.Remarke = entity.Remarke; + data.UpDataBy = _UserMoble; + data.UpdataTime = DateTime.Now; } - foreach (var item in data.items) + foreach (var item in data.items) { var it = entity.items.Where(x => x.name == item.ZYBName && x.specification == item.ZYBSpecification).FirstOrDefault(); if (it?.LessNumber != null) - if (item.LessNumber!=it.LessNumber) - { - item.LessNumber = it.LessNumber??0; - item.UpDataBy = _UserMoble; - item.UpdataTime = DateTime.Now; + if (item.LessNumber != it.LessNumber) + { + item.LessNumber = it.LessNumber ?? 0; + item.UpDataBy = _UserMoble; + item.UpdataTime = DateTime.Now; - - } - // 閫佽揣鏁伴噺鏄惁鑳借秴杩囬瀹氭暟閲忥紵 + + } + // 閫佽揣鏁伴噺鏄惁鑳借秴杩囬瀹氭暟閲忥紵 //item.Number- countlist.Where(x=>x.name==item.ZYBName&&x.Specification==item.ZYBSpecification).Select(x=>x.OverCount).FirstOrDefault(0) - if(it?.nums!=null) - if (item.Number!=it.Number ) - { - item.Number = it.Number??0; - item.UpDataBy = _UserMoble; - item.UpdataTime = DateTime.Now; - } + if (it?.nums != null) + if (item.Number != it.Number) + { + item.Number = it.Number ?? 0; + item.UpDataBy = _UserMoble; + item.UpdataTime = DateTime.Now; + } + + } - await _CyDbClient.UpdateNav(data).Include(x => x.Oreder).Include(x => x.items).ExecuteCommandAsync(); + await _CyDbClient.UpdateNav(data).Include(x => x.Oreder).Include(x => x.items).ExecuteCommandAsync(); return new WebApiCallBack { @@ -1533,7 +2091,7 @@ }; var data = await _CyDbClient.Queryable<CoreDeliverOrder>() - .Where(x => x.id == guid && x.OrderState == CoreDeliverOrderType.Start) + .Where(x => x.id == guid && x.OrderState == CoreDeliverOrderType.Start) .FirstAsync(); if (data == null) return new WebApiCallBack @@ -1541,10 +2099,20 @@ status = false, msg = "娌℃湁鏁版嵁锛屾垨鑰呮槸娌℃湁鏉冮檺鍙搷浣�" }; + var lockflg = await _redisOperationRepository.Get(LockFilshDeliverOderKey + data.id.ToString()); + if (lockflg != null&&lockflg== LockFilshDeliverOderString) + { + return new WebApiCallBack + { + status = false, + msg = "寮�濮嬮厤閫佸悗5鍒嗛挓涔嬪唴涓嶈兘瀹屾垚璁㈠崟鎿嶄綔" + }; + } + var order = await _CyDbClient.Queryable<CoreCmsPlanOrder>().Where(x => x.id == data.OrderId).Includes(x => x.items) .Includes(x => x.DeliverOrderItems, deo => deo.items).FirstAsync(); - if(order == null) + if (order == null) { return new WebApiCallBack { @@ -1553,7 +2121,7 @@ }; } var countlist = await CountLessCount(order.DeliverOrderItems); - await _CyDbClient.AsTenant().BeginTranAsync(); + await _CyDbClient.AsTenant().BeginTranAsync(); try { if (countlist != null) @@ -1611,22 +2179,22 @@ await _CyDbClient.AsTenant().RollbackTranAsync(); throw; } - + } public async Task<WebApiCallBack> SetTarcks(TracksDto entity) { - if( ! await IsDrive()) + if (!await IsDrive()) { return new WebApiCallBack() { - status= false, - - msg= "闈炲徃鏈虹涓嶉泦鍧愭爣鏁版嵁", + status = false, + + msg = "闈炲徃鏈虹涓嶉泦鍧愭爣鏁版嵁", }; } - entity.Moble = _UserMoble; + entity.Moble = _UserMoble; await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.CyDeliverOrderTarcks, JsonConvert.SerializeObject(entity)); return new WebApiCallBack() { @@ -1640,13 +2208,13 @@ public async Task<List<Sys_CitySite>> GetZoneList(Sys_CitySite cyte = null) { if (cyte == null) - return await _CyDbClient.Queryable<Sys_CitySite>().Where(x => x.CityLevel == 1 && x.IsDisplay == true && x.ProvinceId == 0&&x.CityId==0).OrderBy(x => x.OrderNum).ToListAsync(); + return await _CyDbClient.Queryable<Sys_CitySite>().Where(x => x.CityLevel == 1 && x.IsDisplay == true && x.ProvinceId == 0 && x.CityId == 0).OrderBy(x => x.OrderNum).ToListAsync(); if (cyte.CityLevel == 3) return new List<Sys_CitySite>(); - if(cyte.CityLevel==2) + if (cyte.CityLevel == 2) //鍖� - return await _CyDbClient.Queryable<Sys_CitySite>().Where(x => x.CityLevel == 3 && x.IsDisplay == true && x.ProvinceId == cyte.ProvinceId && x.CityId == cyte.Keyid).OrderBy(x => x.OrderNum).ToListAsync(); - if (cyte.CityLevel == 1) + return await _CyDbClient.Queryable<Sys_CitySite>().Where(x => x.CityLevel == 3 && x.IsDisplay == true && x.ProvinceId == cyte.ProvinceId && x.CityId == cyte.Keyid).OrderBy(x => x.OrderNum).ToListAsync(); + if (cyte.CityLevel == 1) //鏌ュ競绾� return await _CyDbClient.Queryable<Sys_CitySite>().Where(x => x.CityLevel == 2 && x.IsDisplay == true && x.ProvinceId == cyte.Keyid && x.CityId == 0).OrderBy(x => x.OrderNum).ToListAsync(); return new List<Sys_CitySite>(); @@ -1654,7 +2222,7 @@ public async Task<List<Sys_CitySite>> GetZoneListALL() { - return await _CyDbClient.Queryable<Sys_CitySite>().Where(x => x.IsDisplay == true ).ToListAsync(); + return await _CyDbClient.Queryable<Sys_CitySite>().Where(x => x.IsDisplay == true).ToListAsync(); } #endregion @@ -1665,13 +2233,13 @@ /// </summary> /// <param name="order"></param> /// <returns></returns> - private async Task< CoreDeliverOrder> CreatDeliverItem( CoreCmsPlanOrder order) + private async Task<CoreDeliverOrder> CreatDeliverItem(CoreCmsPlanOrder order) { - if(order.items==null) - order.items= await _CyDbClient.Queryable<CoreCmsPlanOrderItem>().Where(x=>x.orderId==order.id).ToListAsync(); - if(order.DeliverOrderItems == null) - order.DeliverOrderItems= await _CyDbClient.Queryable<CoreDeliverOrder>().Where(x=>x.OrderId==order.id).Includes(x=>x.items).ToListAsync(); - + if (order.items == null) + order.items = await _CyDbClient.Queryable<CoreCmsPlanOrderItem>().Where(x => x.orderId == order.id).ToListAsync(); + if (order.DeliverOrderItems == null) + order.DeliverOrderItems = await _CyDbClient.Queryable<CoreDeliverOrder>().Where(x => x.OrderId == order.id).Includes(x => x.items).ToListAsync(); + var countlist = await CountLessCount(order.DeliverOrderItems); var DeliverOrder = new CoreDeliverOrder() { @@ -1679,14 +2247,15 @@ CreateTime = DateTime.Now, OrderId = order.id, id = Guid.NewGuid(), + OrderState= CoreDeliverOrderType.UnStart, }; - var ret= new List<CoreDeliverOrderItem>(); + var ret = new List<CoreDeliverOrderItem>(); foreach (var item in order.items) { - var Number = item.nums -= countlist.Where(x => x.name == item.name && x.Specification == item.specification).Select(x => x.OverCount + x.IngCount).FirstOrDefault(0); - if(Number<0) + var Number = item.nums - countlist.Where(x => x.name == item.name && x.Specification == item.specification).Select(x => x.OverCount ).FirstOrDefault(0); + if (Number < 0) Number = 0; ret.Add(new CoreDeliverOrderItem() @@ -1697,11 +2266,11 @@ ZYBName = item.name, ZYBSpecification = item.specification, id = Guid.NewGuid(), - OrderID= DeliverOrder.id, + OrderID = DeliverOrder.id, }); } - DeliverOrder.items= ret; + DeliverOrder.items = ret; return DeliverOrder; } /// <summary> @@ -1709,22 +2278,22 @@ /// </summary> /// <param name=""></param> /// <returns></returns> - private async Task< List<SendCountDto> > CountLessCount(List<CoreDeliverOrder> datain) + private async Task<List<SendCountDto>> CountLessCount(List<CoreDeliverOrder> datain) { var OverCountlistdata = new List<CoreDeliverOrderItem>(); //缁熻宸茬粡瀹岀粨鐨勫崟 - foreach (var item in datain.Where(x=>x.OrderState== CoreDeliverOrderType.Completed).ToList()) + foreach (var item in datain.Where(x => x.OrderState == CoreDeliverOrderType.Completed).ToList()) { //鍏堢粺璁″凡缁忓畬缁撶殑閰嶉�佸崟 - if(item.items==null||item.items.Count==0) + if (item.items == null || item.items.Count == 0) { - item.items= await _CyDbClient.Queryable<CoreDeliverOrderItem>().Where(x=>x.OrderID==item.id).ToListAsync(); + item.items = await _CyDbClient.Queryable<CoreDeliverOrderItem>().Where(x => x.OrderID == item.id).ToListAsync(); } OverCountlistdata.AddRange(item.items); } - var overlist= OverCountlistdata.GroupBy(x => new + var overlist = OverCountlistdata.GroupBy(x => new { x.ZYBName, x.ZYBSpecification @@ -1732,13 +2301,14 @@ { name = x.Key.ZYBName, Specification = x.Key.ZYBSpecification, - num = x.Sum(x => x.Number) + num = x.Sum(x => x.Number), + lessCount = x.Sum(x => x.LessNumber) }).ToList(); - + //缁熻鏈畬鎴愮殑鍗� var ingCountlistdata = new List<CoreDeliverOrderItem>(); - foreach (var item in datain.Where(x => x.OrderState == CoreDeliverOrderType.UnStart||x.OrderState== CoreDeliverOrderType.Start).ToList()) + foreach (var item in datain.Where(x => x.OrderState == CoreDeliverOrderType.UnStart || x.OrderState == CoreDeliverOrderType.Start).ToList()) { //鍏堢粺璁″凡缁忓畬缁撶殑閰嶉�佸崟 if (item.items == null || item.items.Count == 0) @@ -1748,7 +2318,7 @@ ingCountlistdata.AddRange(item.items); } - var inglist= ingCountlistdata.GroupBy(x => new + var inglist = ingCountlistdata.GroupBy(x => new { x.ZYBName, x.ZYBSpecification @@ -1756,36 +2326,377 @@ { name = x.Key.ZYBName, Specification = x.Key.ZYBSpecification, - num = x.Sum(x => x.Number) + num = x.Sum(x => x.Number), + lessCount = x.Sum(x => x.LessNumber) }).ToList(); - var retlist = new List<SendCountDto>(); - foreach (var item in overlist) + var retlist = new List<SendCountDto>(); + var countlist = overlist; + //杩欎竴鍙ユ槸闃叉娌℃湁宸插畬鎴愯鍗曢�犳垚鐨勭┖杞 + if (countlist.Count == 0) + countlist = inglist; + foreach (var item in countlist) { retlist.Add(new SendCountDto { name = item.name, Specification = item.Specification, - OverCount = item.num, - IngCount = inglist.Where(x => x.name == item.name && x.Specification == item.Specification).Select(x => x.num).FirstOrDefault(0) + OverCount = overlist.Where(x => x.name == item.name && x.Specification == item.Specification).Select(x => x.num).FirstOrDefault(0), + IngCount = inglist.Where(x => x.name == item.name && x.Specification == item.Specification).Select(x => x.num).FirstOrDefault(0), + LessCount = overlist.Where(x => x.name == item.name && x.Specification == item.Specification).Select(x => x.lessCount).FirstOrDefault(0) }); } - + return retlist; } - + + /// <summary> + /// 瑙f瀽xml鍥剧墖 + /// </summary> + /// <param name="xmlstr"></param> + /// <returns></returns> + private List<InquiryWorkBookModel> ParseXml( string xmlstr) + { + // 瑙f瀽 XML 瀛楃涓� + XDocument doc = XDocument.Parse(xmlstr); + + // 鎻愬彇 InquiryWorkBookList 涓殑鏁版嵁 + var inquiryWorkBookList = doc.Descendants("InquiryWorkBookModel"); + + // 杞崲涓� List<InquiryWorkBookModel> + List<InquiryWorkBookModel> inquiryWorkBookModels = new List<InquiryWorkBookModel>(); + + foreach (var item in inquiryWorkBookList) + { + var model = new InquiryWorkBookModel + { + WorkBookName = item.Element("WorkBookName")?.Value ?? "", + WorkBookNameTxt = item.Element("WorkBookNameTxt")?.Value ?? "", + WorkBookSize = item.Element("WorkBookSize")?.Value ?? "", + WorkBookSizeTxt = item.Element("WorkBookSizeTxt")?.Value ?? "", + WorkBookCount = item.Element("WorkBookCount")?.Value ?? "", + ysUnit = item.Element("ysUnit")?.Value ?? "", + ysUnitTxt = item.Element("ysUnitTxt")?.Value ?? "", + WorkBookPrice = item.Element("WorkBookPrice")?.Value ?? "", + WorkBookMoney = item.Element("WorkBookMoney")?.Value ?? "", + WorkBookFengMian = item.Element("WorkBookFengMian")?.Value ?? "", + WorkBookFengMianTxt = item.Element("WorkBookFengMianTxt")?.Value ?? "", + FengMianYaoqiu = item.Element("FengMianYaoqiu")?.Value ?? "", + FengMianYaoqiuTxt = item.Element("FengMianYaoqiuTxt")?.Value ?? "", + WorkBookNeiXing = item.Element("WorkBookNeiXing")?.Value ?? "", + WorkBookNeiXingTxt = item.Element("WorkBookNeiXingTxt")?.Value ?? "", + NeiXingYaoqiu = item.Element("NeiXingYaoqiu")?.Value ?? "", + NeiXingYaoqiuTxt = item.Element("NeiXingYaoqiuTxt")?.Value ?? "", + WorkBookpageNum = item.Element("WorkBookpageNum")?.Value ?? "", + fengmian = item.Element("fengmian")?.Value ?? "", + neiye = item.Element("neiye")?.Value ?? "" + }; + + inquiryWorkBookModels.Add(model); + } + return inquiryWorkBookModels; + } + + + #endregion + + #region 瀛︽牎绠$悊绔� + /// <summary> + /// 鑾峰彇鏂板缓璁㈠崟瀛︽牎璁㈠崟鍒楄〃 + /// </summary> + /// <param name="Oderid"></param> + /// <returns></returns> + /// <exception cref="NotImplementedException"></exception> + public async Task<WebApiCallBack> CreatSchoolOfSchoolManage(CoreCmsPlanOrderInfoDto entity) + { + + if (!await IsDeliverManage()) + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; + + if(entity.orderkeyid==null||entity.orderkeyid==0) + { + return new WebApiCallBack + { + status = false, + msg = "娌℃湁瀵瑰簲璁㈠崟" + }; + } + if(string.IsNullOrEmpty(entity.shipAddress)) + { + return new WebApiCallBack + { + status = false, + msg = "瀛︽牎鍦板潃蹇呭~" + }; + } + if (string.IsNullOrEmpty(entity.shipMobile)&&(!entity.shipMobile.IsPhoneNumberValid())) + { + return new WebApiCallBack + { + status = false, + msg = "瀛︽牎鑱旂郴浜虹數璇濆繀濉笖蹇呴』鏄數璇濆彿鐮�" + }; + } + if (string.IsNullOrEmpty(entity.shipName)) + { + return new WebApiCallBack + { + status = false, + msg = "鑱旂郴浜哄繀濉�" + }; + } + if (string.IsNullOrEmpty(entity.pianqu)) + { + return new WebApiCallBack + { + status = false, + msg = "鐗囧尯蹇呭~" + }; + } + var Oder = await _CyDbClient.Queryable<EC_OrderBasic>().Where(x => x.Keyid == entity.orderkeyid&&x.OrderState>0).FirstAsync(); + if(Oder==null) + { + return new WebApiCallBack + { + status = false, + msg = $"璁㈠崟澶辨晥鎴栬�呭凡缁忓畬缁�" + }; + } + var Oderxml= await _CyDbClient.Queryable<EC_OrderPrintParameter>().Where(x => x.OrderId == entity.orderkeyid).Select(x => x.PrintParameter).FirstAsync(); + if(string.IsNullOrEmpty(Oderxml)) + { + return new WebApiCallBack + { + status = false, + msg = "璁㈠崟閿欒(0)" + }; + } + var custinfo = await _CyDbClient.Queryable<OA_CustomerCommunications>().Where(x => x.CompanyPhone == _UserMoble).FirstAsync(); + if(custinfo ==null) + { + return new WebApiCallBack + { + status = false, + msg = "鎿嶄綔鐢ㄦ埛娌℃湁缁戝畾鐪佸競鍖�" + }; + } + + var xmlist= ParseXml(Oderxml); + + if ( entity.items.Count>0) + { + var data = new CoreCmsPlanOrder + { + orderkeyid = entity.orderkeyid, + items = new List<CoreCmsPlanOrderItem>(), + createBy = _UserMoble, + createTime = DateTime.Now, + huaFeiAmount = 0, + DeliverState = DeliverStateType.NoDelivery, + keYongAmount = 0, + pianqu = entity.pianqu, + quxianId = entity.quxianId, + sheng = custinfo.Province, + quxian = custinfo.County, + shengId = entity.shengId, + shi = custinfo.City, + shiId = entity.shiId, + shipAddress = entity.shipAddress, + shipMobile = entity.shipMobile, + shipName = entity.shipName, + shouhuoAddress = entity.shipAddress, + status = 1, + isdelete = false, + userMobile = entity.shipMobile, + FirmId = Oder.SellerId.ToString() + + + + + }; + foreach (var item in entity.items) + { + var inxml = xmlist.Where(x => x.WorkBookNameTxt == item.name && x.WorkBookSizeTxt == item.specification).FirstOrDefault(); + decimal price = 0m; + decimal.TryParse(inxml.WorkBookPrice, out price); + + + data.items.Add(new CoreCmsPlanOrderItem + { + isOld=false, + amount = item.nums*price, + createBy = _UserMoble, + createTime=DateTime.Now, + fengmian=inxml.fengmian, + neiye=inxml.neiye, + price=price, + name=item.name, + specification=item.specification, + nums=item.nums, + + + }); + } + + data.orderAmount= data.items.Sum(x => x.amount); + data.oldOrderAmount = data.items.Sum(x => x.amount); + await _CyDbClient.InsertNav(data).Include(x => x.items).ExecuteCommandAsync(); + + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.CyDeliverOAjisuanjine, entity.orderkeyid?.ToString()); + return new WebApiCallBack + { + status = true, + data = true, + }; + + } + else + { + return new WebApiCallBack + { + status = false, + msg = "娌℃湁浣滀笟鏈鎯呰〃" + }; + } + + + } + + public async Task<WebApiCallBack> GetCreatSchoolOfSchoolManage() + { + + if (!await IsSchoolManger()) + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; + if(_SchoolManagerKeyId==null) + + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; + + var listmager = await _CyDbClient.Queryable<CoreCmsPlanOrder>(). + LeftJoin<EC_OrderBasic>((p, or) => p.orderkeyid == or.Keyid) + .LeftJoin<OA_CustomerCommunications>((p, or, cus) => or.BuyerId == cus.Keyid) + .Where((p, or, cus) => cus.Keyid == _SchoolManagerKeyId) + .Select((p, or, cus) => p, true).ToListAsync(); + if(listmager == null||listmager.Count==0) + { + return new WebApiCallBack + { + status = false, + msg = "鏈壘鎷ユ湁璁㈠崟" + }; + } + var ListZoneKeyID = listmager.GroupBy(x => x.orderkeyid).Select(x => new + { + keyid = x.Key.Value, + count = x.Count(), + }).ToList(); + + if(ListZoneKeyID.Count==0) + { + return new WebApiCallBack + { + status = false, + msg = "鏈壘鎷ユ湁璁㈠崟" + }; + } + //璁㈠崟璇︽儏鍒楄〃 + var ZoneOderList = await _CyDbClient.Queryable<EC_OrderBasic>().In(ListZoneKeyID.Select(y=>y.keyid).ToList()).Select(x => new zongoderinfo + { + Keyid = x.Keyid, + DocumentName= x.DocumentName, + WorkBooksxmlstr= SqlFunc.Subqueryable<EC_OrderPrintParameter>().Where(pa=>pa.OrderId==x.Keyid).Select(pa=>pa.PrintParameter) + + }).Mapper(x=> + { + x.WorkBooks= ParseXml(x.WorkBooksxmlstr); + x.WorkBooksxmlstr = null; + }).ToListAsync(); + + + + return new WebApiCallBack + { + status = true, + data = ZoneOderList, + + }; + + + + + } + + public async Task<WebApiCallBack> DelSchoolOfSchoolManage(FMIntId entity) + { + + if (!await IsSchoolManger()) + return new WebApiCallBack + { + status = false, + msg = "浣犳病鏈夋潈闄愭搷浣�" + }; + if(entity.id==0) + return new WebApiCallBack + { + status = false, + msg = "id鏃犳晥" + }; + + var data= await _CyDbClient.Queryable<CoreCmsPlanOrder, EC_OrderBasic>((core, order) => new JoinQueryInfos( + JoinType.Left, core.orderkeyid == order.Keyid + ) + + + ).Where((core, order) => order.BuyerId == _SchoolManagerKeyId&&core.id==entity.id).Select((core, order)=>core).FirstAsync(); + if(data!=null) + { + data.isdelete = true; + data.upDataBy = _UserMoble; + data.upDataTime = data.upDataTime; + await _CyDbClient.Updateable(data).ExecuteCommandAsync(); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.CyDeliverOAjisuanjine, data.orderkeyid?.ToString()); + return new WebApiCallBack + { + status = true, + data =true + }; + + } + else + { + return new WebApiCallBack + { + status = false, + msg = "娌℃湁鏉冮檺鍒犻櫎璇ヨ鍗�" + }; + } + + + } + #endregion } - class SendCountDto + class SendCountDto { /// <summary> /// 鍚嶇О /// </summary> - public string name { get; set; } + public string name { get; set; } /// <summary> /// 寮�鏈� /// </summary> @@ -1797,8 +2708,47 @@ /// <summary> /// 宸茶缃垨鑰呮湭瀹屾垚 /// </summary> - public int IngCount { get; set; } + public int IngCount { get; set; } + /// <summary> + /// 鑺傜害鏁伴噺 + /// </summary> + public int LessCount { get; set; } } + /// <summary> + /// 璁㈠崟鍙傛暟鍒楄〃 + /// </summary> + public class zongoderinfo + { + public int Keyid { get; set; } + public string DocumentName { get; set; } + public List<InquiryWorkBookModel> WorkBooks { get; set; } + public string WorkBooksxmlstr { get; set; } + + } + + public class InquiryWorkBookModel + { + public string WorkBookName { get; set; } + public string WorkBookNameTxt { get; set; } + public string WorkBookSize { get; set; } + public string WorkBookSizeTxt { get; set; } + public string WorkBookCount { get; set; } + public string ysUnit { get; set; } + public string ysUnitTxt { get; set; } + public string WorkBookPrice { get; set; } + public string WorkBookMoney { get; set; } + public string WorkBookFengMian { get; set; } + public string WorkBookFengMianTxt { get; set; } + public string FengMianYaoqiu { get; set; } + public string FengMianYaoqiuTxt { get; set; } + public string WorkBookNeiXing { get; set; } + public string WorkBookNeiXingTxt { get; set; } + public string NeiXingYaoqiu { get; set; } + public string NeiXingYaoqiuTxt { get; set; } + public string WorkBookpageNum { get; set; } + public string fengmian { get; set; } + public string neiye { get; set; } + } } -- Gitblit v1.9.1