示例#1
0
        /// <summary>
        /// 添加单据信息
        /// </summary>
        /// <param name="bill"></param>
        /// <param name="body"></param>
        /// <returns></returns>
        public string SaveOutputBill(WbsOrder bill, WbsOrderLine[] body)
        {
            var outHeaderService = TableViewServiceFactory.CreateInstance <IWbsOrderService>();
            var outLineService   = TableViewServiceFactory.CreateInstance <IWbsOrderLineService>();
            var transaction      = TransactionServiceFatory.CreateInstance <ITransactionService>();

            #region 单据验证
            if (!VerifyAddBillData(bill, body))
            {
                throw new VerifyException("单据验证失败!");
            }
            #endregion
            transaction.BeginTransaction();
            try
            {
                outHeaderService.Insert(bill);
                foreach (var line in body)
                {
                    outLineService.Insert(line);
                }
                transaction.CompleteTransaction();

                return(null);
            }
            catch (Exception ex)
            {
                transaction.RollbackTransaction();
                return(ex.ToString());
            }
        }
示例#2
0
        /// <summary>
        ///  更新出库行项目
        /// </summary>
        /// <param name="bill"></param>
        /// <param name="body"></param>
        /// <returns></returns>
        public WbsOrder UpdateOutputBill(WbsOrder bill, WbsOrderLine[] body)
        {
            var outHeaderService = TableViewServiceFactory.CreateInstance <IWbsOrderService>();
            var outLineService   = TableViewServiceFactory.CreateInstance <IWbsOrderLineService>();

            try
            {
                foreach (var line in body)
                {
                    if (string.IsNullOrWhiteSpace(line.OrderLineGuid))
                    {
                        line.OrderNo = bill.OrderNo;
                        InsertOutputBillLine(bill, line);
                    }
                    else
                    {
                        UpdateOutputBillLine(bill, line);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(outHeaderService.GetEntityList(new WbsOrder()
            {
                OrderNo = bill.OrderNo
            }).FirstOrDefault());
        }
示例#3
0
        /// <summary>
        /// 添加单据信息
        /// </summary>
        /// <param name="bill"></param>
        /// <param name="body"></param>
        /// <returns></returns>
        public WbsOrder SaveOutputBill(WbsOrder bill, WbsOrderLine[] body)
        {
            var outHeaderService = TableViewServiceFactory.CreateInstance <IWbsOrderService>();
            var outLineService   = TableViewServiceFactory.CreateInstance <IWbsOrderLineService>();
            var transaction      = TransactionServiceFatory.CreateInstance <ITransactionService>();

            #region 单据验证
            if (!VerifyAddBillData(bill, body))
            {
                throw new VerifyException("单据验证失败!");
            }
            #endregion
            transaction.BeginTransaction();
            try
            {
                outHeaderService.Insert(bill);
                foreach (var line in body)
                {
                    outLineService.Insert(line);
                }
                transaction.CompleteTransaction();
            }
            catch (Exception ex)
            {
                transaction.RollbackTransaction();
                throw ex;
            }
            return(outHeaderService.GetEntityList(new WbsOrder()
            {
                OrderNo = bill.OrderNo
            }).FirstOrDefault());
        }
示例#4
0
    private WbsOrderLine[] JsonToWbsOrderLine(WbsOrder header, McJsonObject headJson, McJsonObject[] bodyJson)
    {
        var result = new List <WbsOrderLine>();

        #region 数据处理
        foreach (var lineJson in bodyJson)
        {
            var line = new WbsOrderLine();
            //单号
            line.OrderNo       = header.OrderNo;
            line.OrderLineGuid = Guid.NewGuid().ToString();
            //单LINE
            line.LineId = lineJson.IntValue("LINE_ID");
            //单据行状态
            line.LineStatus = lineJson.IntValue("LINE_STATUS");
            //物料信息
            line.MaterialNo = lineJson.StringValue("MATER_NO");
            //等级
            line.ProductGrade = lineJson.StringValue("PRODUCT_GRADE");
            //单据数量
            line.RequireQty = lineJson.IntValue("REQUIRE_QTY");
            //实际数量
            line.ActQty = lineJson.IntValue("ACT_QTY");
            //发货数量
            line.ShipQty = lineJson.IntValue("SHIP_QTY");
            //工装编号
            line.LimitPalletId = lineJson.StringValue("LIMIT_PALLET_ID");
            //开始站台
            line.LimitBinNo = lineJson.StringValue("LIMIT_BIN_NO");
            //目的站台
            line.ElocNo = lineJson.StringValue("ELOC_NO");
            //产品GUID
            line.LimitProductGuid = lineJson.StringValue("LIMIT_PRODUCT_GUID");
            //行任务分解
            line.LineTaskFlag = lineJson.IntValue("LINE_TASK_FLAG");
            //行项目唯一标示
            line.OrderLineGuid = lineJson.StringValue("ORDER_LINE_GUID");
            line.OrderLineGuid = Guid.NewGuid().ToString().ToUpper();
            //是否已删除
            line.DeleteFlag = "N";
            //此单发货顺序
            line.SortId = 1;
            //优先级
            line.LinePriority = 50;
            //目标锁定
            line.LockEndLoc = 1;
            result.Add(line);
        }
        #endregion
        return(result.ToArray());
    }
示例#5
0
        private void UpdateOutputBillLine(WbsOrder bill, WbsOrderLine line)
        {
            var outLineService = TableViewServiceFactory.CreateInstance <IWbsOrderLineService>();
            var update         = new WbsOrderLine();

            update.MaterialNo       = line.MaterialNo;
            update.ProductGrade     = line.ProductGrade;
            update.ElocNo           = line.ElocNo;
            update.LimitBinNo       = line.LimitBinNo;
            update.DeleteFlag       = line.DeleteFlag;
            update.LimitBinNo       = line.LimitBinNo;
            update.LimitProductGuid = line.LimitProductGuid;
            update.LimitPalletId    = line.LimitPalletId;
            var where           = new WbsOrderLine();
            where.OrderLineGuid = line.OrderLineGuid;
            where.OrderNo       = line.OrderNo;
            where.LineId        = line.LineId;
            outLineService.Update(update, where);
        }
示例#6
0
    private WbsOrder JsonToWbsOrder(McJsonObject headJson)
    {
        var result = new WbsOrder();

        #region 数据处理
        //单号
        result.OrderNo = headJson.StringValue("ORDER_NO");
        //单据状态(0:未执行,1:出库中,2:已完成,3:已取消
        result.OrderStatus = headJson.IntValue("ORDER_STATUS");
        //优先级    数字越小优先级越高
        result.OrderPriority = headJson.IntValue("ORDER_PRIORITY");
        //生成方式
        result.SourceType = headJson.IntValue("SOURCE_TYPE");
        //单据类型
        result.OrderTypeNo = headJson.StringValue("ORDER_TYPE_NO");
        //单据类型模式
        result.OrderTypeModule = headJson.StringValue("ORDER_TYPE_MODULE");
        #endregion
        return(result);
    }
示例#7
0
        private bool VerifyAddBillData(WbsOrder bill, WbsOrderLine[] body)
        {
            if (!VerifyBillData(bill, body))
            {
                return(false);
            }
            var outHeaderService = TableViewServiceFactory.CreateInstance <IWbsOrderService>();

            #region 验证 出库单号
            var count = outHeaderService.GetRowCount(new WbsOrder()
            {
                OrderNo = bill.OrderNo
            });
            if (count > 0)
            {
                throw new VerifyException("出库单号已存在!");
            }
            #endregion
            return(true);
        }
示例#8
0
        private void InsertOutputBillLine(WbsOrder bill, WbsOrderLine line)
        {
            var outLineService = TableViewServiceFactory.CreateInstance <IWbsOrderLineService>();
            var insert         = new WbsOrderLine();

            insert.OrderNo       = line.OrderNo;
            insert.LineId        = line.LineId;
            insert.LineStatus    = line.LineStatus;
            insert.MaterialNo    = line.MaterialNo;
            insert.ProductGrade  = line.ProductGrade;
            insert.ElocNo        = line.ElocNo;
            insert.RequireQty    = line.RequireQty;
            insert.ActQty        = line.ActQty;
            insert.ShipQty       = line.ShipQty;
            insert.LimitBinNo    = line.LimitBinNo;
            insert.OrderLineGuid = Guid.NewGuid().ToString();
            insert.DeleteFlag    = "N";
            insert.SortId        = 1;
            insert.LinePriority  = 50;
            insert.LockEndLoc    = 1;
            outLineService.Insert(insert);
        }
示例#9
0
    private WbsOrder JsonToWbsOrder(McJsonObject headJson)
    {
        var result = new WbsOrder(); ///缺4个:OrderTypeNo、OrderTypeModule

        #region 数据处理
        //单号
        result.OrderNo = headJson.StringValue("ORDER_NO");
        //单据状态(0:未执行,1:出库中,2:已完成,3:已取消
        result.OrderStatus = headJson.IntValue("ORDER_STATUS");
        //优先级    数字越小优先级越高
        result.OrderPriority = headJson.IntValue("ORDER_PRIORITY");
        //生成方式
        result.SourceType = headJson.IntValue("SOURCE_TYPE");
        //单据类型
        result.OrderTypeNo = headJson.StringValue("ORDER_TYPE_NO");
        //单据类型模式
        result.OrderTypeModule = headJson.StringValue("ORDER_TYPE_MODULE");
        //创建日期
        result.CreationDate = DateTime.Now;
        //创建者
        result.CreatedBy = this.Data.User.UserId.ToString();
        #endregion
        return(result);
    }
示例#10
0
        private bool VerifyBillData(WbsOrder bill, WbsOrderLine[] body)
        {
            var outHeaderService = TableViewServiceFactory.CreateInstance <IWbsOrderService>();

            #region 验证 主表数据
            #region 验证 单据类型
            var kind = bill.OrderTypeNo;
            if (kind == null)
            {
                throw new VerifyException("请选择单据类型,如果没有订单类型,请维护订单类型!");
            }
            #endregion
            #region 验证 异常出库
            var kindInt = bill.OrderTypeNo;
            if (kindInt == "100891" && body.Length > 1)
            {
                throw new VerifyException("异常出库每次建单据只允许一种物料!");
            }
            #endregion
            #endregion
            #region 验证 表体
            foreach (var line in body)
            {
                if (!string.IsNullOrWhiteSpace(line.LimitPalletId))
                {
                    line.LinePriority = line.LinePriority - 1;
                    if (line.LinePriority == 0)
                    {
                        line.LinePriority = 1;
                    }
                }
                if (bill.OrderTypeNo == "100058")
                {//空笼出库
                    line.MaterialNo = "BPALLET";
                }
                else
                {
                    if (!string.IsNullOrWhiteSpace(line.LimitPalletId))
                    {
                        #region 验证 出库物料
                        if (string.IsNullOrWhiteSpace(line.MaterialNo))
                        {
                            throw new VerifyException("行号[" + line.LineId?.ToString("0") + "],请选择出库物料!");
                        }
                        #endregion
                        #region 验证 物料等级
                        if (string.IsNullOrWhiteSpace(line.ProductGrade))
                        {
                            throw new VerifyException("行号[" + line.LineId?.ToString("0") + "],请选择物料等级!");
                        }
                        #endregion
                    }
                }
                #region 验证 单号行号
                if (line.LineId == null)
                {
                    throw new VerifyException("行号[" + line.LineId?.ToString("0") + "],请输入单号行号!");
                }
                #endregion
                #region 验证 库位编码是否存在

                var data = TableViewServiceFactory.CreateInstance <IPsbBinStatusService>();
                var eloc = TableViewServiceFactory.CreateInstance <IPsbLocService>();
                if (!string.IsNullOrWhiteSpace(line.LimitBinNo))
                {
                    PsbBinStatus ba = new PsbBinStatus();
                    ba.BinNo = line.LimitBinNo;
                    var listbabin = data.GetEntityTable(ba);
                    if (listbabin.Rows.Count == 0)
                    {
                        throw new VerifyException("开始库位[" + line.LimitBinNo + "],的库位编码不存在!");
                    }
                }
                if (!string.IsNullOrWhiteSpace(line.ElocNo))
                {
                    PsbLoc bat = new PsbLoc();
                    bat.LocNo = line.ElocNo;
                    var listbabint = eloc.GetEntityTable(bat);
                    if (listbabint.Rows.Count == 0)
                    {
                        throw new VerifyException("目的站台[" + line.ElocNo + "],的库位编码不存在!");
                    }
                }
                #endregion
                #region 验证 工装编码

                if (!string.IsNullOrWhiteSpace(line.LimitPalletId))
                {
                    var Padata = TableViewServiceFactory.CreateInstance <IPsbPalletService>();
                    var pallet = new PsbPallet();
                    pallet.PalletNo = line.LimitPalletId;
                    if (Padata.GetRowCount(pallet) == 0)
                    {
                        throw new VerifyException("工装编码[" + line.LimitPalletId + "],不存在或者无效!");
                    }
                }
                #endregion
                #region 验证 单据数量
                if (line.RequireQty == null || line.RequireQty <= 0)
                {
                    throw new VerifyException("行号[" + line.LineId?.ToString("0") + "],请输入单据数量且为非零正整数!");
                }
                #endregion
            }
            #endregion
            return(true);
        }