internal bool CreateErrorOrderSortingLog(List <ThreadSortOrder> ThreadSortOrderList, UserInfo userInfo, int operationType) { try { //记录分拣日志 using (var db = new OrderSortingDBEntities()) { foreach (ThreadSortOrder entity in ThreadSortOrderList) { for (int i = 0; i < entity.TargetLattice.Count; i++) { OrderSortingLog sortingLog = NewOrderSortingLog(entity.OrderInfo, entity.TargetLattice[i], entity.ResultLattice, userInfo, operationType, 3); db.OrderSortingLog.Add(sortingLog); } } db.SaveChanges(); return(true); } } catch (Exception ex) { SaveErrLogHelper.SaveErrorLog(string.Empty, ex.ToString()); return(false); } }
/// <summary> /// 更新格口与国家地区的关联 /// </summary> /// <param name="latticesetting">格口信息</param> /// <param name="countrysList">国家地区</param> internal void UpdateSolutionCountry(LatticeSetting latticesetting, List <Countrys> countrysList) { try { var newData = (from pt in countrysList select new SolutionCountry { Id = Guid.NewGuid().ToString(), SortingSolutionId = _sortingSolution, CabinetId = latticesetting.CabinetId, LatticeSettingId = latticesetting.ID, CountryId = pt.ID, CountryName = pt.CnName }); using (var db = new OrderSortingDBEntities()) { var oldData = db.SolutionCountry.Where(sp => sp.LatticeSettingId == latticesetting.ID && sp.SortingSolutionId == _sortingSolution); db.SolutionCountry.RemoveRange(oldData); db.SolutionCountry.AddRange(newData); db.SaveChanges(); } } catch (Exception) { throw; } finally { _solutionCountryList = GetSolutionCountryList(); } }
/// <summary> /// 根据订单号撤回分拣 /// </summary> /// <param name="orderIdArra"></param> /// <returns></returns> internal string DeleteOrderCacheByOrderId(string[] orderIdArra) { try { using (var db = new OrderSortingDBEntities()) { //验证 foreach (string orderID in orderIdArra) { if (orderID == "") { continue; } if (db.LatticeOrdersCache.Where(o => o.OrderId == orderID).Count() <= 0) { return($"撤回失败,未找到订单号:{orderID},请核对订单号是否正确!"); } } var logCache = db.LatticeOrdersCache.Where(o => orderIdArra.Contains(o.OrderId)); db.LatticeOrdersCache.RemoveRange(logCache); db.SaveChanges(); //重新统计分拣信息 LoadTotalSortingDataList(db); } return($"撤回成功!"); } catch (Exception) { throw; } }
/// <summary> /// 更新格口与邮寄方式地区的关联 /// </summary> /// <param name="latticesetting"></param> /// <param name="posttypeslist"></param> internal void UpdateSolutionPostArea(LatticeSetting latticesetting, List <PostArea> postArealist, string PostTypeId) { try { var newData = (from pt in postArealist select new SolutionPostArea { ID = Guid.NewGuid().ToString(), SortingSolutionId = _sortingSolution, Type = pt.Type, Area = pt.Area, Flag = pt.Flag, PostTypeId = pt.PostTypeId, LactticeSettingId = latticesetting.ID, CabinetId = latticesetting.CabinetId }); using (var db = new OrderSortingDBEntities()) { var oldData = db.SolutionPostArea.Where(sp => sp.LactticeSettingId == latticesetting.ID && sp.CabinetId == latticesetting.CabinetId && sp.PostTypeId == PostTypeId && sp.SortingSolutionId == _sortingSolution); db.SolutionPostArea.RemoveRange(oldData); db.SolutionPostArea.AddRange(newData); db.SaveChanges(); } } catch (Exception) { throw; } finally { _solutionPostAreaList = GetSolutionPostAreaList(); } }
/// <summary> /// 更新格口与邮寄方式的关联 /// </summary> /// <param name="latticesetting">格口信息</param> /// <param name="posttypesList">邮寄方式</param> internal void UpdateSolutionPostType(LatticeSetting latticesetting, List <Posttypes> posttypeslist) { try { var newData = (from pt in posttypeslist select new SolutionPostType { Id = Guid.NewGuid().ToString(), SortingSolutionId = _sortingSolution, CabinetId = latticesetting.CabinetId, LatticeSettingId = latticesetting.ID, PostTypeId = pt.PostID, PostTypeName = pt.CnPostName, }); using (var db = new OrderSortingDBEntities()) { var oldData = db.SolutionPostType.Where(sp => sp.LatticeSettingId == latticesetting.ID && sp.SortingSolutionId == _sortingSolution); db.SolutionPostType.RemoveRange(oldData); db.SolutionPostType.AddRange(newData); db.SaveChanges(); } } catch (Exception) { throw; } finally { _solutionPostTypeList = GetSolutionPostTypeList(); } }
/// <summary> /// 创建装箱记录(operationType:1自动满格,2手动满格,3打印包牌号) /// </summary> /// <param name="lattice">柜格</param> /// <param name="userInfo">用户信息</param> /// <param name="boxWeight">箱子重量</param> /// <param name="operationType">操作类型:1自动满格,2手动满格,3打印包牌号</param> /// <returns></returns> internal override PackingLog CreatePackingLog(LatticeSetting lattice, UserInfo userInfo, decimal boxWeight, out List <LatticeOrdersCache> LatticeOrdersCacheList, int operationType = 3) { Debug.WriteLine("CreatePackingLog begin 2"); using (var db = new OrderSortingDBEntities()) { var logCache = db.LatticeOrdersCache.Where(o => o.LatticesettingId == lattice.ID); if (logCache == null || logCache.Count() < 1) { LatticeOrdersCacheList = null; return(null); } var logList = logCache.ToList(); LatticeOrdersCacheList = logList; PackingLog pkgLog = NewPackingLog(lattice, userInfo, operationType, logList, boxWeight); db.PackingLog.Add(pkgLog); db.LatticeOrdersCache.RemoveRange(logList); var response = API_Helper.BatchOutbound(userInfo, pkgLog, logList); if (response != null && !response.Success && !string.IsNullOrWhiteSpace(response.Message)) { throw new Exception(response.Message); } db.SaveChanges(); return(pkgLog); } }
/// <summary> /// 创建分拣记录 /// </summary> /// <param name="info">订单信息</param> /// <param name="targetLattice">目标柜格</param> /// <param name="resultLattice">投入柜格</param> /// <param name="operationType">操作类型:1扫描,2投递,3异常恢复</param> /// <param name="status">状态:1待投递,2已投递,3投递异常,4重复扫描</param> internal bool CreateOrderSortingLog(OrderInfo info, LatticeSetting targetLattice, LatticeSetting resultLattice, UserInfo userInfo, int operationType, int status) { try { //记录分拣日志 OrderSortingLog sortingLog = NewOrderSortingLog(info, targetLattice, resultLattice, userInfo, operationType, status); using (var db = new OrderSortingDBEntities()) { db.OrderSortingLog.Add(sortingLog); //正确投入,计数 if (status == 2 && !db.LatticeOrdersCache.Any(o => o.OrderId == info.OrderId)) { var countryEnName = db.Countrys.Where(cntr => cntr.ID == info.CountryId || cntr.EnShorting == info.CountryId).Select(cnt => cnt.EnName).FirstOrDefault(); db.LatticeOrdersCache.Add(new LatticeOrdersCache() { LatticesettingId = resultLattice.ID, OrderId = info.OrderId, TraceId = info.TraceId, Weight = info.Weight, CountryId = info.CountryId, CountryName = countryEnName, PostId = info.PostId, PostName = info.PostName }); db.SaveChanges(); //重新统计分拣信息 LoadTotalSortingDataList(db); } else { db.SaveChanges(); } return(true); } } catch (Exception ex) { SaveErrLogHelper.SaveErrorLog(string.Empty, ex.ToString()); return(false); } }
/// <summary> /// 根据Id删除分拣方案 /// </summary> /// <param name="id"></param> internal static void DeleteSortingSolutionsById(string id) { using (var db = new OrderSortingDBEntities()) { var ss = db.SortingSolutions.Find(id); db.SortingSolutions.Remove(ss); var spt = db.SolutionPostType.Where(sp => sp.SortingSolutionId == id); db.SolutionPostType.RemoveRange(spt); var sc = db.SolutionCountry.Where(sp => sp.SortingSolutionId == id); db.SolutionCountry.RemoveRange(sc); db.SaveChanges(); } }
/// <summary> /// 保存格口设置信息 /// </summary> /// <param name="latticesetting"></param> internal void SaveLatticeSetting(LatticeSetting latticesetting) { try { using (var db = new OrderSortingDBEntities()) { db.LatticeSetting.AddOrUpdate(latticesetting); db.SaveChanges(); } } catch (Exception) { throw; } }
/// <summary> /// 根据格号撤回分拣 /// </summary> /// <param name="latticeId"></param> /// <returns></returns> internal string DeleteOrderCacheByLatticeId(string latticeId) { try { using (var db = new OrderSortingDBEntities()) { var lattice = db.LatticeSetting.FirstOrDefault(ls => ls.LatticeId == latticeId); var logCache = db.LatticeOrdersCache.Where(o => o.LatticesettingId == lattice.ID); db.LatticeOrdersCache.RemoveRange(logCache); db.SaveChanges(); //重新统计分拣信息 LoadTotalSortingDataList(db); } return("撤回成功!"); } catch (Exception) { throw; } }
/// <summary> /// 新建分拣方案 /// </summary> /// <param name="solutionName"></param> /// <returns></returns> internal string CreateNewSolution(string solutionName) { try { var SolutionId = Guid.NewGuid().ToString(); using (var db = new OrderSortingDBEntities()) { if (db.SortingSolutions.Any(ss => ss.Name == solutionName)) { throw new Exception("方案名重复!"); } //保存方案名 SortingSolutions solution = new SortingSolutions(); solution.Id = SolutionId; solution.Name = solutionName; db.SortingSolutions.Add(solution); ////方案另存为 //_solutionCountryList.ForEach(sc => //{ // sc.SortingSolutionId = SolutionId; // sc.Id = Guid.NewGuid().ToString(); //}); //db.SolutionCountry.AddRange(_solutionCountryList); //_solutionPostTypeList.ForEach(sc => //{ // sc.SortingSolutionId = SolutionId; // sc.Id = Guid.NewGuid().ToString(); //}); //db.SolutionPostType.AddRange(_solutionPostTypeList); db.SaveChanges(); } _solutionCountryList.Clear(); _solutionPostTypeList.Clear(); return(SolutionId); } catch (Exception) { throw; } }
/// <summary> /// 创建装箱记录(多格口打印一个PKG标签) /// </summary> /// <param name="latticeIdArray">格口号</param> /// <param name="userInfo">用户信息</param> /// <param name="criticalWeight">临界重量</param> /// <param name="boxWeight">箱子重量</param> /// <returns></returns> internal override PackingLog CreatePackingLog(string[] latticeIdArray, UserInfo userInfo, decimal criticalWeight, decimal boxWeight, out List <LatticeOrdersCache> latticeInfo, int operationType = 3) { using (var db = new OrderSortingDBEntities()) { //根据格口号获取格口信息 var LatticesettingIds = db.LatticeSetting.Where(ls => latticeIdArray.Contains(ls.LatticeId)).Select(ls => ls.ID); if (LatticesettingIds.Count() != latticeIdArray.Where(o => !string.IsNullOrWhiteSpace(o)).Count()) { throw new Exception("输入的格口号有误,注意:多个格口间需使用回车键分隔!"); } //根据格口信息获取相关的快件信息 var logCache = db.LatticeOrdersCache.Where(o => LatticesettingIds.Contains(o.LatticesettingId)); if (logCache == null || logCache.Count() < 1) { throw new Exception("没有分拣记录,装箱记录生成失败!"); } var logList = logCache.ToList(); latticeInfo = logList; //装箱记录 PackingLog pkgLog = NewPackingLog(null, userInfo, operationType, logList, boxWeight); if (pkgLog.Weight > criticalWeight) { throw new Exception(string.Format("总重量{0}Kg,临界重量{1}Kg,装箱记录生成失败!", pkgLog.Weight, criticalWeight)); } db.PackingLog.Add(pkgLog); db.LatticeOrdersCache.RemoveRange(logList); //把装箱信息上传到物流系统 var response = API_Helper.BatchOutboundBySingleFlyt(userInfo, pkgLog, logList); if (response != null && !response.Success && !string.IsNullOrWhiteSpace(response.Message)) { throw new Exception(response.Message); } db.SaveChanges(); return(pkgLog); } }