| | |
| | | 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; |
| | |
| | | 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 |
| | |
| | | /// <summary> |
| | | /// 川印相关服务 |
| | | /// </summary> |
| | | public class CyinOAService: ICyinOAService |
| | | public class CyinOAService : ICyinOAService |
| | | { |
| | | /// <summary> |
| | | /// 是否是司机key |
| | | /// </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 IRedisOperationRepository _redisOperationRepository; |
| | | private readonly string _UserMoble; |
| | | private string? _DriveName { get; set; } |
| | | |
| | | |
| | | public CyinOAService( IUnitOfWork unitOfWork,IHttpContextUser contextUser,ICoreCmsUserServices coreCmsUserServices, |
| | | IRedisOperationRepository redisOperationRepository,ICoreCmsUserServices coreCmsUser) { |
| | | |
| | | |
| | | /// <summary> |
| | | /// 学校管理员ID,有则是,没有则不是 |
| | | /// </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) |
| | | { |
| | | |
| | |
| | | throw new Exception("登录信息错误,请重新登录"); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | var user = _coreCmsUserServices.QueryById(_User.ID); |
| | | if (user == null) |
| | |
| | | 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) |
| | | { |
| | |
| | | { |
| | | 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> |
| | | /// 是否是送货管理员 |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 是否是司机 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public async Task<bool > IsDrive() |
| | | public async Task<bool> IsDrive() |
| | | { |
| | | var ret = new WebApiCallBack(); |
| | | if (_User?.ID == null) |
| | |
| | | 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) |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | _DriveName =null; |
| | | _DriveName = null; |
| | | isdrive = "false"; |
| | | } |
| | | |
| | |
| | | //ret.data= data; |
| | | if (isdrive == "true") |
| | | { |
| | | |
| | | |
| | | |
| | | return true; |
| | | |
| | |
| | | { |
| | | 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 = "" |
| | |
| | | }); |
| | | 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)) |
| | | { |
| | |
| | | |
| | | where = where.And(p => p.shi == obj.shi); |
| | | |
| | | |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(obj.quxian)) |
| | | { |
| | | |
| | | |
| | | where = where.And(p => p.quxian == obj.quxian); |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | { |
| | | |
| | | where = where.And(p => p.quxianId == quxianId); |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | 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)) |
| | |
| | | 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)) |
| | |
| | | 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() |
| | |
| | | { |
| | | 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); |
| | |
| | | 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 |
| | | { |
| | |
| | | msg = "已经锁单" |
| | | }; |
| | | } |
| | | if (oldOder.isdelete == true) |
| | | return new WebApiCallBack |
| | | { |
| | | status = false, |
| | | msg = "订单已删除" |
| | | }; |
| | | |
| | | decimal auturo = 0; |
| | | foreach (var item in oldOder.items) |
| | | { |
| | |
| | | |
| | | } |
| | | oldOder.shipMobile = planOrderInfoDto.shipMobile; |
| | | oldOder.userMobile = planOrderInfoDto.shipMobile; |
| | | oldOder.shipName = planOrderInfoDto.shipName; |
| | | oldOder.orderAmount = auturo; |
| | | |
| | |
| | | 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 |
| | | //{ |
| | |
| | | //}).ExecuteCommandAsync(); |
| | | |
| | | |
| | | await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.CyDeliverOAjisuanjine,oldOder.orderkeyid?.ToString()); |
| | | await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.CyDeliverOAjisuanjine, oldOder.orderkeyid?.ToString()); |
| | | return new WebApiCallBack() |
| | | { |
| | | status = true, |
| | |
| | | { |
| | | |
| | | 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() |
| | | { |
| | |
| | | }; |
| | | } |
| | | |
| | | 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() |
| | | { |
| | |
| | | msg = "没有找到相关订单" |
| | | }; |
| | | } |
| | | if(olddata.DeliverState == DeliverStateType.CompletedDelivery) |
| | | if (olddata.DeliverState == DeliverStateType.CompletedDelivery) |
| | | { |
| | | return new WebApiCallBack() |
| | | { |
| | |
| | | }; |
| | | } |
| | | 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 |
| | | { |
| | |
| | | |
| | | { |
| | | 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) |
| | |
| | | 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() |
| | | { |
| | |
| | | }; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | 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 |
| | |
| | | } |
| | | 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 |
| | | { |
| | |
| | | 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) |
| | |
| | | sheng = "", |
| | | shi = "", |
| | | quxian = "", |
| | | DeliveryMoble="", |
| | | |
| | | |
| | | }); |
| | | if(!string.IsNullOrEmpty(obj.DeliveryMoble)) |
| | | { |
| | | where = where.And(n => n.DeliveryMoble == obj.DeliveryMoble); |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(obj.sheng)) |
| | | { |
| | | |
| | |
| | | } |
| | | 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 |
| | |
| | | x.shipAddress, |
| | | x.quxian, |
| | | x.pianqu, |
| | | x.deliverOrder |
| | | x.deliverOrder, |
| | | x.DeliverState, |
| | | x.DeliveryMoble |
| | | |
| | | |
| | | }).ToList() |
| | | }).ToList(), |
| | | |
| | | deliveryList |
| | | |
| | | } |
| | | }; |
| | | } |
| | |
| | | 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 = "订单已完成" |
| | | }; |
| | | }; |
| | | |
| | |
| | | }) |
| | | .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 |
| | | { |
| | |
| | | id = item.id, |
| | | name = item.name, |
| | | nums = item.nums, |
| | | Number = DeliveredCount, |
| | | price = item.price, |
| | | specification = item.specification, |
| | | isOld = item.isOld, |
| | |
| | | }); |
| | | } |
| | | |
| | | 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, |
| | |
| | | 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 |
| | |
| | | }; |
| | | } |
| | | |
| | | |
| | | 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 |
| | | { |
| | |
| | | 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(); |
| | | |
| | | |
| | | |
| | |
| | | |
| | | { |
| | | |
| | | 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 |
| | |
| | | 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) |
| | | { |
| | |
| | | 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 = "系统处理失败" |
| | | |
| | | }; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | var obj = JsonConvert.DeserializeAnonymousType(entity.where, new |
| | | { |
| | | quxianId = "", |
| | | sheng="", |
| | | sheng = "", |
| | | pianqu = "", |
| | | shipAddress = "", |
| | | shipAddress = "", |
| | | shi = "", |
| | | quxian = "", |
| | | DeliverState="" |
| | | DeliverState = "" |
| | | |
| | | |
| | | |
| | |
| | | { |
| | | 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)) |
| | |
| | | where = where.And(n => n.sheng == obj.sheng); |
| | | |
| | | } |
| | | |
| | | |
| | | if (!string.IsNullOrWhiteSpace(obj.shi)) |
| | | { |
| | | |
| | |
| | | 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 |
| | | } |
| | | }; |
| | | } |
| | |
| | | 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)) |
| | |
| | | { |
| | | |
| | | |
| | | where = where.And(n => n.Oreder.shi == obj.shi); |
| | | where = where.And(n => n.Oreder.shi == obj.shi); |
| | | |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(obj.quxian)) |
| | |
| | | where = where.And(n => n.Oreder.quxian == obj.quxian); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | if (!string.IsNullOrEmpty(obj.pianqu)) |
| | |
| | | where = where.And(n => n.Oreder.shipAddress.Contains(obj.shipAddress)); |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | if (!string.IsNullOrEmpty(obj.EndTimeStartZone)) |
| | |
| | | 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); |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | } |
| | | 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) |
| | |
| | | return new WebApiCallBack() |
| | | { |
| | | status = true, |
| | | data = new |
| | | data = new |
| | | { |
| | | list= data, |
| | | list = data, |
| | | totalNumbe |
| | | } |
| | | }; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public async Task<WebApiCallBack> GetDeliverInfoOfDrver(FMStringId entity) |
| | | { |
| | |
| | | |
| | | }; |
| | | } |
| | | |
| | | 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 |
| | | { |
| | |
| | | } |
| | | 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, |
| | |
| | | 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>() |
| | | |
| | | }; |
| | |
| | | DeliveredCount = count, |
| | | Number = thisNumber?.Number ?? count, |
| | | unDeliveredCount = item.nums > count ? item.nums - count : 0, |
| | | LessNumber= thisNumber.LessNumber, |
| | | LessNumber = thisNumber.LessNumber, |
| | | }); |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | 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 |
| | |
| | | }; |
| | | 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) |
| | | { |
| | | |
| | |
| | | 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() |
| | | { |
| | |
| | | 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 |
| | | { |
| | |
| | | }; |
| | | |
| | | 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 |
| | |
| | | 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 |
| | | { |
| | |
| | | }; |
| | | } |
| | | var countlist = await CountLessCount(order.DeliverOrderItems); |
| | | await _CyDbClient.AsTenant().BeginTranAsync(); |
| | | await _CyDbClient.AsTenant().BeginTranAsync(); |
| | | try |
| | | { |
| | | if (countlist != null) |
| | |
| | | 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() |
| | | { |
| | |
| | | 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>(); |
| | |
| | | |
| | | 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 |
| | |
| | | /// </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() |
| | | { |
| | |
| | | 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() |
| | |
| | | ZYBName = item.name, |
| | | ZYBSpecification = item.specification, |
| | | id = Guid.NewGuid(), |
| | | OrderID= DeliverOrder.id, |
| | | OrderID = DeliverOrder.id, |
| | | |
| | | }); |
| | | } |
| | | DeliverOrder.items= ret; |
| | | DeliverOrder.items = ret; |
| | | return DeliverOrder; |
| | | } |
| | | /// <summary> |
| | |
| | | /// </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 |
| | |
| | | { |
| | | 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) |
| | |
| | | ingCountlistdata.AddRange(item.items); |
| | | } |
| | | |
| | | var inglist= ingCountlistdata.GroupBy(x => new |
| | | var inglist = ingCountlistdata.GroupBy(x => new |
| | | { |
| | | x.ZYBName, |
| | | x.ZYBSpecification |
| | |
| | | { |
| | | 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> |
| | | /// 解析xml图片 |
| | | /// </summary> |
| | | /// <param name="xmlstr"></param> |
| | | /// <returns></returns> |
| | | private List<InquiryWorkBookModel> ParseXml( string xmlstr) |
| | | { |
| | | // 解析 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> |
| | |
| | | /// <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; } |
| | | } |
| | | |
| | | } |