コード例 #1
0
        /// <summary>
        /// 收货
        /// </summary>
        /// <param name="moveId"></param>
        /// <param name="updated"></param>
        /// <param name="updated2"></param>
        /// <returns></returns>
        public static OpResult MoveinReceive(string moveId, string updated, string updated2)
        {
            var op = new OpResult();

            try
            {
                int IndexofA = updated.IndexOf('[');
                int IndexofB = updated.IndexOf(']');

                int IndexofC = updated2.IndexOf('[');
                int IndexofD = updated2.IndexOf(']');

                if (updated != "[]" || !updated.IsNullOrEmpty())
                {
                    updated = updated.Substring(IndexofA, IndexofB - IndexofA + 1);
                    if (updated.Contains("\\"))
                    {
                        updated = updated.Replace("\\", "");
                    }
                }
                if (updated2 != "[]" || !updated2.IsNullOrEmpty())
                {
                    updated2 = updated2.Substring(IndexofC, IndexofD - IndexofC + 1);
                    if (updated2.Contains("\\"))
                    {
                        updated2 = updated2.Replace("\\", "");
                    }
                }

                var dists  = updated.ToObject <List <HouseMoveList> >();
                var dists2 = updated2.ToObject <List <HouseMoveList> >();

                if (!updated2.IsNullOrEmpty())
                {
                    if (dists2.Any())
                    {
                        var barcodes = dists2.Select(o => o.Barcode);
                        dists.RemoveAll(o => barcodes.Contains(o.Barcode));
                        dists.AddRange(dists2);
                    }
                }
                dists = dists.Where(o => o.ActualQuantity > 0).ToList();

                if (!dists.Any())
                {
                    op.Message = "收获量必须大于0!";
                }
                else
                {
                    var details = BaseService <HouseMoveList> .FindList(o => o.MoveId == moveId);

                    var order   = STHouseMoveService.Find(o => o.MoveId == moveId);
                    var records = new List <InventoryRecord>();
                    foreach (var dt in details)
                    {
                        var obj = dists.FirstOrDefault(o => o.Barcode == dt.Barcode);
                        if (obj == null)
                        {
                            continue;
                        }
                        else
                        {
                            dt.ActualQuantity = obj.ActualQuantity;
                            dt.State          = 4;
                            dt.Memo           = obj.Memo;
                            var pro = ProductService.Find(o => o.Barcode == dt.Barcode || ("," + o.Barcodes + ",").Contains("," + dt.Barcode + ","));
                            records.Add(new InventoryRecord()
                            {
                                Barcode = pro != null ? pro.Barcode : dt.Barcode, StoreId = order.InStoreId, Source = 3, Number = dt.ActualQuantity, OperatId = order.MoveId
                            });
                        }
                    }
                    order.ActualUID = Sys.CurrentUser.UID;
                    order.ActualDT  = DateTime.Now;
                    order.State     = 4;
                    //增库存
                    BaseService <HouseMove> .Update(order);

                    op = BaseService <HouseMoveList> .Update(details);

                    if (op.Successed)
                    {
                        InventoryRecordService.SaveLog(records);
                    }
                }
            }

            catch (Exception ex)
            {
                op.Message = ex.Message;
                Log.WriteError(ex);
            }
            return(op);
        }
コード例 #2
0
        /// <summary>
        /// 新增或修改
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static OpResult SaveOrUpdate(HouseMove obj)
        {
            var re = new OpResult();

            try
            {
                var details = new List <HouseMoveList>();
                if (!string.IsNullOrWhiteSpace(obj.Inserted))
                {
                    var adds = obj.Inserted.ToObject <List <HouseMoveList> >();
                    if (adds.Any())
                    {
                        details.AddRange(adds.Where(o => !o.Barcode.IsNullOrEmpty() && !o.Title.IsNullOrEmpty()));
                    }
                }
                obj.CompanyId = CommonService.CompanyId;
                if (obj.Id == 0)
                {
                    obj.MoveId = Logic.CommonRules.GUID;
                    details.Each(o =>
                    {
                        o.MoveId   = obj.MoveId;
                        o.StockOut = 0;//todo
                        o.State    = 1;
                    });
                    obj.CreateDT  = DateTime.Now;
                    obj.CreateUID = Sys.CurrentUser.UID;
                    obj.State     = 1;
                    Add(obj, false);

                    re = BaseService <HouseMoveList> .AddRange(details);
                }

                else
                {
                    var sour = STHouseMoveService.FindById(obj.Id);
                    var list = BaseService <HouseMoveList> .FindList(o => o.MoveId == sour.MoveId);

                    var uid    = sour.CreateUID;
                    var create = sour.CreateDT;
                    var state  = sour.State;
                    obj.ToCopyProperty(sour);
                    sour.CreateDT  = create;
                    sour.CreateUID = uid;
                    sour.State     = state;
                    details.Each(o =>
                    {
                        o.MoveId = sour.MoveId;
                        o.State  = sour.State;
                    });
                    if (!string.IsNullOrWhiteSpace(obj.Deleted))
                    {
                        var dels = obj.Deleted.ToObject <List <HouseMoveList> >();
                        if (dels.Any())
                        {
                            var barcodes = dels.Select(o => o.Barcode).ToList();
                            var deletes  = list.Where(o => barcodes.Contains(o.Barcode)).ToList();
                            BaseService <HouseMoveList> .CurrentRepository.RemoveRange(deletes, false);
                        }
                    }
                    if (!string.IsNullOrWhiteSpace(obj.Updated))
                    {
                        var upts = obj.Updated.ToObject <List <HouseMoveList> >();

                        if (upts.Any())
                        {
                            var barcodes = upts.Select(o => o.Barcode).ToList();
                            var deletes  = list.Where(o => barcodes.Contains(o.Barcode)).ToList();

                            BaseService <HouseMoveList> .CurrentRepository.RemoveRange(deletes, false);

                            BaseService <HouseMoveList> .AddRange(upts, false);
                        }
                    }
                    BaseService <HouseMoveList> .AddRange(details, false);

                    re = Update(sour);
                }
            }
            catch (Exception ex)
            {
                re.Message = ex.Message;
            }
            return(re);
        }