public static IList <DispatchFormEntity> GetDispatches(int formNo, string hospitalID)
        {
            var sql = string.Format("select {0} from dispatch_form where order_form_no=@p_form_no and hospital_id=@p_hospital_id", COLUMN_SQL);

            var db = DatabaseFactory.CreateDatabase();
            var dc = db.GetSqlStringCommand(sql);

            db.AddInParameter(dc, "p_form_no", DbType.Int32, formNo);
            db.AddInParameter(dc, "p_hospital_id", DbType.String, hospitalID);

            var list = new List <DispatchFormEntity>();

            using (var reader = db.ExecuteReader(dc))
            {
                while (reader.Read())
                {
                    var entity = new DispatchFormEntity();
                    entity.Init(reader);

                    list.Add(entity);
                }
            }

            return(list);
        }
        private static void Create(DispatchFormEntity form, Database db, DbTransaction trans)
        {
            var sql = string.Format(@"INSERT INTO dispatch_form
(
id,order_id,order_form_no,order_detail_id,apply_unit_id,product_id,
dispatched_count,hospital_id,vendor_id,status,changed_id,changed_time,created_id,created_time
)
VALUES(
@p_id,@p_order_id,@p_order_form_no,@p_order_detail_id,@p_apply_unit_id,@p_product_id,
@p_dispatched_count,@p_hospital_id,@p_vendor_id,@p_status,@p_changed_id,@p_changed_time,@p_created_id,@p_created_time
)", COLUMN_SQL);

            var dc = db.GetSqlStringCommand(sql);

            db.AddInParameter(dc, "p_id", DbType.String, form.Id);
            db.AddInParameter(dc, "p_order_id", DbType.String, form.OrderId);
            db.AddInParameter(dc, "p_order_form_no", DbType.Int32, form.OrderFormNo);
            db.AddInParameter(dc, "p_order_detail_id", DbType.String, form.OrderDetailId);
            db.AddInParameter(dc, "p_apply_unit_id", DbType.String, form.ApplyUnitId);
            db.AddInParameter(dc, "p_product_id", DbType.String, form.ProductId);
            db.AddInParameter(dc, "p_dispatched_count", DbType.Int32, form.DispatchedCount);
            db.AddInParameter(dc, "p_hospital_id", DbType.String, form.HospitalId);
            db.AddInParameter(dc, "p_vendor_id", DbType.String, form.VendorId);
            db.AddInParameter(dc, "p_status", DbType.String, form.Status);
            db.AddInParameter(dc, "p_changed_id", DbType.String, form.ChangedId);
            db.AddInParameter(dc, "p_changed_time", DbType.DateTime, form.ChangedTime);
            db.AddInParameter(dc, "p_created_id", DbType.String, form.CreatedId);
            db.AddInParameter(dc, "p_created_time", DbType.DateTime, form.CreatedTime);

            db.ExecuteNonQuery(dc, trans);
        }
        private static DispatchFormEntity Get(string id, Database db, DbTransaction trans)
        {
            var sql = string.Format("select {0} from dispatch_form {1} where id=@p_id", COLUMN_SQL, TransHelper.UpdateLock(trans));

            if (db == null)
            {
                db = DatabaseFactory.CreateDatabase();
            }

            var dc = db.GetSqlStringCommand(sql);

            db.AddInParameter(dc, "p_id", DbType.String, id);

            DispatchFormEntity entity = null;

            using (var reader = (trans == null ? db.ExecuteReader(dc) : db.ExecuteReader(dc, trans)))
            {
                while (reader.Read())
                {
                    entity = new DispatchFormEntity();
                    entity.Init(reader);

                    break;
                }
            }

            return(entity);
        }
        public static IList <DispatchFormEntity> Query(DispatchQueryCondition condition, PagerInfo pager)
        {
            var baseSql      = @"select {0} from dispatch_form where 1=1 {1}";
            var conditionSql = GetConditionSql(condition);

            var db = DatabaseFactory.CreateDatabase();

            pager.ComputePageCount(QueryCount(baseSql, conditionSql, condition, db));

            var orderSql = " order by ";

            if (pager.OrderFields.Count > 0)
            {
                foreach (var field in pager.OrderFields)
                {
                    orderSql += field.Field + (field.Desc ? " DESC" : "") + ",";
                }
            }
            else
            {
                orderSql += " order_form_no desc,product_id,created_time desc,status ";
            }

            var sql = string.Format(baseSql, COLUMN_SQL, conditionSql);

            sql = @"SELECT * FROM
            (
                SELECT ROW_NUMBER() OVER(" + orderSql + @") pid," + COLUMN_SQL + @"
                FROM (" + sql + @") t            
            ) t1 WHERE t1.pid BETWEEN @p_pageNo * @p_pageSize + 1 AND (@p_pageNo + 1) * @p_pageSize ";

            var cmd = db.GetSqlStringCommand(sql);

            AddParameters(condition, db, cmd);
            db.AddInParameter(cmd, "p_pageNo", DbType.Int32, pager.PageIndex);
            db.AddInParameter(cmd, "p_pageSize", DbType.Int32, pager.PageSize);

            var list = new List <DispatchFormEntity>();

            using (var reader = db.ExecuteReader(cmd))
            {
                while (reader.Read())
                {
                    var entity = new DispatchFormEntity();
                    entity.Init(reader);

                    list.Add(entity);
                }
            }

            return(list);
        }
        private static string DispatchGoods(DispatchFormEntity form, DispatchFormItemEntity formItem, Database db, DbTransaction trans)
        {
            var orderDetail = OrderFormRepository.GetItem(form.OrderDetailId);

            var goodsSerial = new GoodsSerialEntity
            {
                ProductId         = form.ProductId,
                DispatchedCount   = formItem.Count,
                HospitalId        = form.HospitalId,
                VendorId          = form.VendorId,
                NeedAudit         = orderDetail.NeedAudit,
                NeedCheck         = orderDetail.NeedCheck,
                NeedSplit         = orderDetail.NeedSplit,
                SplitCopies       = orderDetail.SplitCopies,
                SplitUnit         = orderDetail.SplitUnit,
                SplitCapacity     = orderDetail.SplitCapacity,
                SplitPackageCount = orderDetail.SplitPackageCount,
                ValidDays         = orderDetail.ValidDays,
                BatchNo           = formItem.BatchNo,
                ExpiredDate       = formItem.ExpiredDate,
                IsClosed          = false,
                CreatedId         = form.CreatedId,
                CreatedTime       = DateTime.Now,
                UpdatedId         = form.CreatedId,
                UpdatedTime       = DateTime.Now
            };

            GoodsSerialRepository.Create(goodsSerial, db, trans);

            GoodsSerialFormRepository.Create(new GoodsSerialFormEntity
            {
                SerialId    = goodsSerial.Id,
                FormId      = form.Id,
                FormKind    = FormKind.DispatchItem,
                CreatedId   = form.CreatedId,
                CreatedTime = DateTime.Now,
            }, new GoodsSerialFormEntity
            {
                SerialId    = goodsSerial.Id,
                FormId      = form.OrderDetailId,
                FormKind    = FormKind.OrderDetail,
                CreatedId   = form.CreatedId,
                CreatedTime = DateTime.Now,
            }, db, trans);

            return(goodsSerial.Id);
        }
        private static void CreateReceiveForm(DispatchFormEntity form, DispatchFormItemEntity formItem, Database db, DbTransaction trans)
        {
            var receiveForm = new ReceiveFormEntity
            {
                OrderId       = form.OrderId,
                OrderFormNo   = form.OrderFormNo,
                OrderDetailId = form.OrderDetailId,
                ApplyUnitId   = form.ApplyUnitId,
                SerialId      = formItem.SerialId,
                ProductId     = form.ProductId,
                ReceivedCount = formItem.Count,
                HospitalId    = form.HospitalId,
                VendorId      = form.VendorId,
                CreatedId     = form.ChangedId,
                CreatedTime   = form.ChangedTime
            };

            ReceiveFormRepository.Create(receiveForm, db, trans);
        }
        public static void CreateItem(DispatchFormEntity form, DispatchFormItemEntity formItem)
        {
            var db = DatabaseFactory.CreateDatabase();

            using (var conn = db.CreateConnection())
            {
                conn.Open();
                using (var trans = conn.BeginTransaction())
                {
                    try
                    {
                        var count = SumItems(form.Id);

                        if (form.DispatchedCount == count + formItem.Count)
                        {
                            UpdateStatus(form.Id, DispatchFormStatus.Dispatching, formItem.CreatedId, formItem.CreatedTime, db, trans);
                        }
                        else if (count == 0)
                        {
                            UpdateStatus(form.Id, DispatchFormStatus.Dispatching, formItem.CreatedId, formItem.CreatedTime, db, trans);
                        }
                        else if (formItem.Count + count > form.DispatchedCount)
                        {
                            throw new Exception("The count of dispatch form is over.");
                        }

                        formItem.Id = Guid.NewGuid().ToString();

                        formItem.SerialId = DispatchGoods(form, formItem, db, trans);

                        CreateItem(formItem, db, trans);

                        trans.Commit();
                    }
                    catch
                    {
                        trans.Rollback();
                        throw;
                    }
                }
            }
        }
        public static DispatchFormEntity Get(string id)
        {
            var sql = string.Format("select {0} from dispatch_form where id=@p_id", COLUMN_SQL);

            var db = DatabaseFactory.CreateDatabase();
            var dc = db.GetSqlStringCommand(sql);

            db.AddInParameter(dc, "p_id", DbType.String, id);

            using (var reader = db.ExecuteReader(dc))
            {
                if (reader.Read())
                {
                    var entity = new DispatchFormEntity();
                    entity.Init(reader);

                    return(entity);
                }
            }

            return(null);
        }
        public static IList <DispatchFormEntity> Query(IList <string> orderDetailIds)
        {
            var list = new List <DispatchFormEntity>();

            if (orderDetailIds == null || orderDetailIds.Count == 0)
            {
                return(list);
            }

            IList <string> paramNames;
            string         paramSql;

            LIMS.Util.StringHelper.GenerInParameters("p_order_detail_id", orderDetailIds.Count, out paramNames, out paramSql);

            var sql = string.Format(@"select {0} from dispatch_form where order_detail_id in ({1}) and status in ('{2}','{3}','{4}')", COLUMN_SQL, paramSql, DispatchFormStatus.Waiting, DispatchFormStatus.Confirmed, DispatchFormStatus.Dispatching);

            var db = DatabaseFactory.CreateDatabase();
            var dc = db.GetSqlStringCommand(sql);

            for (var i = 0; i < orderDetailIds.Count; i++)
            {
                db.AddInParameter(dc, paramNames[i], DbType.String, orderDetailIds[i]);
            }

            using (var reader = db.ExecuteReader(dc))
            {
                while (reader.Read())
                {
                    var entity = new DispatchFormEntity();
                    entity.Init(reader);

                    list.Add(entity);
                }
            }

            return(list);
        }
Esempio n. 10
0
 private static void UpdateOrderStatus(DispatchFormEntity form, Database db, DbTransaction trans)
 {
     OrderFormRepository.UpdateStatus(form.OrderId, form.OrderDetailId, OrderFormItemStatus.Dispatching, db, trans);
 }