示例#1
0
        /// <summary>
        /// 拣货的库存变化
        /// </summary>
        /// <param name="baseDatacommodityCode"></param>
        /// <param name="pickTask"></param>
        /// <param name="bAutoSubmit">是否是主动提交</param>
        /// <returns></returns>
        public BasePostData <CommodityInventoryChange> CreatePickTaskCommodityInventoryChange(BaseData <CommodityCode> baseDataCommodityCode, PickTask pickTask, bool bAutoSubmit)
        {
            BasePostData <CommodityInventoryChange> retBaseSinglePostDataCommodityInventoryChange = null;

            //校验是否含有数据,如果含有数据,有就继续下一步
            baseDataCommodityCode = HttpHelper.GetInstance().ResultCheck(baseDataCommodityCode, out bool isSuccess);

            if (isSuccess)
            {
                var CommodityCodes = baseDataCommodityCode.body.objects;

                var CommodityInventoryChanges = new List <CommodityInventoryChange>(CommodityCodes.Count);

                CommodityCodes.ForEach(it => {
                    CommodityInventoryChange cic = new CommodityInventoryChange()
                    {
                        CommodityCodeId = it.id,           //商品码【扫描】
                        SourceBill      = new SourceBill() //来源单据
                        {
                            object_name = typeof(PickTask).Name,
                            object_id   = pickTask.id
                        }
                    };

                    if (it.operate_type == (int)OperateType.出库)
                    {
                        cic.ChangeStatus = CommodityInventoryChangeStatus.拣货作业.ToString();
                        cic.StoreHouseId = it.StoreHouseId;
                    }
                    else
                    {
                        cic.ChangeStatus    = CommodityInventoryChangeStatus.正常.ToString();
                        cic.EquipmentId     = it.EquipmentId;
                        cic.StoreHouseId    = it.StoreHouseId;
                        cic.GoodsLocationId = it.GoodsLocationId;
                    }

                    if (!bAutoSubmit && it.AbnormalDisplay == AbnormalDisplay.异常.ToString())
                    {
                        cic.AdjustStatus = CommodityInventoryChangeAdjustStatus.是.ToString();
                    }

                    CommodityInventoryChanges.Add(cic);
                });

                retBaseSinglePostDataCommodityInventoryChange = CommodityInventoryChangeBll.GetInstance().CreateCommodityInventoryChange(CommodityInventoryChanges);
            }
            else
            {
                retBaseSinglePostDataCommodityInventoryChange = new BasePostData <CommodityInventoryChange>
                {
                    code    = baseDataCommodityCode.code,
                    message = baseDataCommodityCode.message
                };
            }

            return(retBaseSinglePostDataCommodityInventoryChange);
        }
示例#2
0
        /// <summary>
        /// 创建库存调整中库存变更记录(用于开机启动的对比流程)
        /// </summary>
        /// <param name="baseDataCommodityCode"></param>
        /// <returns></returns>
        public BasePostData <CommodityInventoryChange> CreateCommodityInventoryChangeInStockChangeByOpen(BaseData <CommodityCode> baseDataCommodityCode)
        {
            if (null == baseDataCommodityCode)
            {
                return(new BasePostData <CommodityInventoryChange>()
                {
                    code = (int)ResultCode.Parameter_Exception,
                    message = ResultCode.Parameter_Exception.ToString()
                });
            }
            List <CommodityInventoryChange> changes = new List <CommodityInventoryChange>();
            //创建商品库存变更记录资料【出库::下架】
            var outList = baseDataCommodityCode.body.objects.Where(it => it.operate_type == 0).ToList();

            if (null != outList || outList.Count > 0)
            {
                outList.ForEach(commodityCode =>
                {
                    var temp = new CommodityInventoryChange()
                    {
                        CommodityCodeId = commodityCode.id,
                        //出库变更更后库房、变更更后设备、变更更后货位 value 值都为null。
                        StoreHouseId = commodityCode.StoreHouseId,
                        ChangeStatus = CommodityInventoryChangeStatus.未上架.ToString(),
                        AdjustStatus = CommodityInventoryChangeAdjustStatus.是.ToString()
                    };
                    changes.Add(temp);
                });
            }

            //创建商品库存变更记录资料【入库::上架】
            var inList = baseDataCommodityCode.body.objects.Where(it => it.operate_type == 1).ToList();

            if (null != outList || outList.Count > 0)
            {
                inList.ForEach(commodityCode =>
                {
                    var temp = new CommodityInventoryChange()
                    {
                        CommodityCodeId = commodityCode.id,
                        ChangeStatus    = CommodityInventoryChangeStatus.正常.ToString(),
                        AdjustStatus    = CommodityInventoryChangeAdjustStatus.是.ToString(),
                        EquipmentId     = commodityCode.EquipmentId,
                        GoodsLocationId = commodityCode.GoodsLocationId,
                        StoreHouseId    = commodityCode.StoreHouseId
                    };
                    changes.Add(temp);
                });
            }
            return(CreateCommodityInventoryChange(changes));
        }
示例#3
0
        /// <summary>
        /// 根据商品码变更列表和来源单据创建库存变更记录资料(有单领用)
        /// </summary>
        /// <param name="baseDataCommodityCode"></param>
        /// <param name="sourceBill"></param>
        /// <returns></returns>
        public BasePostData <CommodityInventoryChange> CreateCommodityInventoryChange(BaseData <CommodityCode> baseDataCommodityCode, SourceBill sourceBill)
        {
            if (null == baseDataCommodityCode || null == sourceBill || null == sourceBill.object_name)
            {
                return(new BasePostData <CommodityInventoryChange>()
                {
                    code = (int)ResultCode.Parameter_Exception,
                    message = ResultCode.Parameter_Exception.ToString()
                });
            }
            List <CommodityInventoryChange> changes = new List <CommodityInventoryChange>();

            baseDataCommodityCode.body.objects.ForEach(commodityCode =>
            {
                var temp = new CommodityInventoryChange()
                {
                    CommodityCodeId = commodityCode.id,
                };
                switch (commodityCode.operate_type)
                {
                case 0:
                    //出库变更更后库房、变更更后设备、变更更后货位 value 值都为null。
                    temp.SourceBill   = sourceBill;
                    temp.ChangeStatus = CommodityInventoryChangeStatus.已消耗.ToString();
                    break;

                case 1:
                    temp.SourceBill = new SourceBill()
                    {
                        object_name = "ConsumingReturnOrder",
                    };
                    temp.ChangeStatus    = CommodityInventoryChangeStatus.正常.ToString();
                    temp.EquipmentId     = commodityCode.EquipmentId;
                    temp.GoodsLocationId = commodityCode.GoodsLocationId;
                    temp.StoreHouseId    = commodityCode.StoreHouseId;
                    break;
                }
                changes.Add(temp);
            });
            return(CreateCommodityInventoryChange(changes));
        }
        /// <summary>
        /// 提交变更信息
        /// </summary>
        /// <param name="baseDataCommodityCode"></param>
        /// <param name="allotShelf"></param>
        /// <param name="baseAllotShelfCommodity"></param>
        /// <returns></returns>

        public BasePostData <CommodityInventoryChange> SubmitAllotShelfChangeWithOrder(BaseData <CommodityCode> baseDataCommodityCode, AllotShelf allotShelf, BaseData <AllotShelfCommodity> baseAllotShelfCommodity)
        {
            BasePostData <CommodityInventoryChange> retBaseSinglePostDataCommodityInventoryChange = null;

            //校验是否含有数据,如果含有数据,有就继续下一步
            baseDataCommodityCode = HttpHelper.GetInstance().ResultCheck(baseDataCommodityCode, out bool isSuccess);

            baseAllotShelfCommodity = HttpHelper.GetInstance().ResultCheck(baseAllotShelfCommodity, out bool isSuccess2);
            if (isSuccess && isSuccess2)
            {
                var CommodityCodes            = baseDataCommodityCode.body.objects;
                var CommodityInventoryChanges = new List <CommodityInventoryChange>(CommodityCodes.Count);

                //调拨上架商品明细
                var allotShelfCommodities = baseAllotShelfCommodity.body.objects;
                //获取待上架商品CommodityId列表(去重后)
                var detailCommodityIds = allotShelfCommodities.Select(it => it.CommodityId).Distinct().ToList();

                CommodityCodes.ForEach(it =>
                {
                    CommodityInventoryChange cic = new CommodityInventoryChange()
                    {
                        CommodityCodeId = it.id,           //商品码【扫描】
                        SourceBill      = new SourceBill() //来源单据
                        {
                            object_name = typeof(AllotShelf).Name,
                            object_id   = allotShelf.id
                        },
                        //EquipmentId = ApplicationState.GetEquipId(),
                        //StoreHouseId = ApplicationState.GetHouseId(),
                        //GoodsLocationId = it.GoodsLocationId
                    };

                    //【待确认】出库
                    if (it.operate_type == (int)OperateType.出库)
                    {
                        cic.ChangeStatus = CommodityInventoryChangeStatus.未上架.ToString();
                        cic.StoreHouseId = ApplicationState.GetHouseId();
                        cic.AdjustStatus = CommodityInventoryChangeAdjustStatus.是.ToString();
                    }
                    //入库
                    else
                    {
                        cic.ChangeStatus    = CommodityInventoryChangeStatus.正常.ToString();
                        cic.EquipmentId     = it.EquipmentId;
                        cic.StoreHouseId    = it.StoreHouseId;
                        cic.GoodsLocationId = it.GoodsLocationId;
                        //【待确认】
                        if (!detailCommodityIds.Contains(it.CommodityId))
                        {
                            cic.AdjustStatus = CommodityInventoryChangeAdjustStatus.是.ToString();
                        }
                    }

                    CommodityInventoryChanges.Add(cic);
                });

                retBaseSinglePostDataCommodityInventoryChange = CommodityInventoryChangeBll.GetInstance().CreateCommodityInventoryChange(CommodityInventoryChanges);
            }
            else
            {
                retBaseSinglePostDataCommodityInventoryChange = new BasePostData <CommodityInventoryChange>
                {
                    code    = baseDataCommodityCode.code,
                    message = baseDataCommodityCode.message
                };

                LogUtils.Error("CreateShelfTaskCommodityInventoryChange 失败! " + baseDataCommodityCode.message);
            }
            return(retBaseSinglePostDataCommodityInventoryChange);
        }
示例#5
0
        /// <summary>
        /// 根据商品码变更列表和来源单据创建库存变更记录资料(回退)
        /// </summary>
        /// <param name="baseDataCommodityCode"></param>
        /// <returns></returns>
        public BasePostData <CommodityInventoryChange> CreateCommodityInventoryChange(BaseData <CommodityCode> baseDataCommodityCode)
        {
            if (null == baseDataCommodityCode)
            {
                return(new BasePostData <CommodityInventoryChange>()
                {
                    code = (int)ResultCode.Parameter_Exception,
                    message = ResultCode.Parameter_Exception.ToString()
                });
            }
            List <CommodityInventoryChange> changes = new List <CommodityInventoryChange>();
            var count = baseDataCommodityCode.body.objects.Where(it => it.operate_type == 0).Count();
            //创建领用单实体用于后面更新操作
            ConsumingOrder order = null;

            if (count > 0)//当出库数量大于0说明在领用需要创建领用单
            {
                var consumingOrder = ConsumingBll.GetInstance().CreateConsumingOrder(new ConsumingOrder()
                {
                    Status       = ConsumingOrderStatus.领用中.ToString(),
                    StoreHouseId = ApplicationState.GetValue <String>((int)ApplicationKey.HouseId),
                    Type         = ConsumingOrderType.一般领用.ToString()
                });
                //校验数据是否正常
                HttpHelper.GetInstance().ResultCheck(consumingOrder, out bool isSuccess);
                if (isSuccess)
                {
                    //创建商品库存变更记录资料【出库::领用】
                    baseDataCommodityCode.body.objects.Where(it => it.operate_type == 0).ToList().ForEach(commodityCode =>
                    {
                        var temp = new CommodityInventoryChange()
                        {
                            CommodityCodeId = commodityCode.id,
                            //出库变更更后库房、变更更后设备、变更更后货位 value 值都为null。
                            SourceBill = new SourceBill()
                            {
                                object_name = "ConsumingOrder",
                                object_id   = consumingOrder.body[0].id
                            },
                            ChangeStatus = CommodityInventoryChangeStatus.已消耗.ToString()
                        };
                        changes.Add(temp);
                    });
                    order = consumingOrder.body[0];
                }
            }
            ////创建商品库存变更记录资料【入库::回退】
            baseDataCommodityCode.body.objects.Where(it => it.operate_type == 1).ToList().ForEach(commodityCode =>
            {
                var temp = new CommodityInventoryChange()
                {
                    CommodityCodeId = commodityCode.id,
                    SourceBill      = new SourceBill()
                    {
                        object_name = "ConsumingReturnOrder",
                    },
                    ChangeStatus    = CommodityInventoryChangeStatus.正常.ToString(),
                    EquipmentId     = commodityCode.EquipmentId,
                    GoodsLocationId = commodityCode.GoodsLocationId,
                    StoreHouseId    = commodityCode.StoreHouseId,
                };
                changes.Add(temp);
            });

            var result = CreateCommodityInventoryChange(changes);

            //校验数据是否正常
            HttpHelper.GetInstance().ResultCheck(result, out bool isSuccess2);

            //添加变更记录成功时,且有出库记录(即创建过领用单)
            if (isSuccess2 && count > 0)
            {
                if (baseDataCommodityCode.body.objects.Where(item => (item.QualityStatus == QualityStatusType.过期.ToString() || item.InventoryStatus == CommodityInventoryChangeStatus.待回收.ToString()) && item.operate_type == 0).Count() > 0)
                {
                    order.Status = ConsumingOrderStatus.异常.ToString();
                }
                else
                {
                    order.Status = ConsumingOrderStatus.已完成.ToString();
                }
                var temp = ConsumingBll.GetInstance().UpdateConsumingOrderStatus(order);

                if (temp.code != 0)
                {
                    LogUtils.Error("ConsummingOrder " + temp.message);
                }
            }
            return(result);
        }
示例#6
0
        /// <summary>
        /// 创建回收取货中库存变更记录
        /// </summary>
        /// <param name="baseDataCommodityCode"></param>
        /// <returns></returns>
        public BasePostData <CommodityInventoryChange> CreateCommodityInventoryChange(BaseData <CommodityCode> baseDataCommodityCode, CommodityRecovery commodityRecovery, bool bAutoSubmit)
        {
            if (null == baseDataCommodityCode)
            {
                return(new BasePostData <CommodityInventoryChange>()
                {
                    code = (int)ResultCode.Parameter_Exception,
                    message = ResultCode.Parameter_Exception.ToString()
                });
            }
            List <CommodityInventoryChange> changes = new List <CommodityInventoryChange>();
            //创建商品库存变更记录资料【出库::下架】
            var outList = baseDataCommodityCode.body.objects.Where(it => it.operate_type == 0).ToList();

            if (null != outList || outList.Count > 0)
            {
                outList.ForEach(commodityCode =>
                {
                    CommodityInventoryChange cic = new CommodityInventoryChange()
                    {
                        CommodityCodeId = commodityCode.id,
                        SourceBill      = new SourceBill
                        {
                            object_name = "CommodityRecovery",
                            object_id   = commodityRecovery.id
                        },
                        ChangeStatus = CommodityInventoryChangeStatus.待回收.ToString(),
                        StoreHouseId = commodityRecovery.StoreHouse
                    };

                    if (!bAutoSubmit)
                    {
                        cic.AdjustStatus = CommodityInventoryChangeAdjustStatus.是.ToString();
                    }
                    changes.Add(cic);
                });
            }

            if (!bAutoSubmit)
            {
                //创建商品库存变更记录资料【入库::上架】
                var inList = baseDataCommodityCode.body.objects.Where(it => it.operate_type == 1).ToList();
                if (null != inList || inList.Count > 0)
                {
                    inList.ForEach(commodityCode =>
                    {
                        CommodityInventoryChange cic = new CommodityInventoryChange()
                        {
                            CommodityCodeId = commodityCode.id,
                            SourceBill      = new SourceBill
                            {
                                object_name = "CommodityRecovery",
                                object_id   = commodityRecovery.id
                            },
                            ChangeStatus    = CommodityInventoryChangeStatus.正常.ToString(),
                            StoreHouseId    = commodityCode.StoreHouseId,
                            EquipmentId     = commodityCode.EquipmentId,
                            GoodsLocationId = commodityCode.GoodsLocationId,
                            AdjustStatus    = CommodityInventoryChangeAdjustStatus.是.ToString()
                        };
                        changes.Add(cic);
                    });
                }
            }

            return(CreateCommodityInventoryChange(changes));
        }