Пример #1
0
        public static IList <DispatchFormItemEntity> GetItems(string dispatchId)
        {
            var sql = @"
select 
    id,dispatch_id,serial_id,count,batch_no,expired_date,logistics_code,logistics_content,
    is_confirmed,confirmed_id,confirmed_time,created_id,created_time
from dispatch_form_items where dispatch_id=@p_dispatch_id order by created_time desc";

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

            db.AddInParameter(cmd, "p_dispatch_id", DbType.String, dispatchId);

            var list = new List <DispatchFormItemEntity>();

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

                    list.Add(entity);
                }
            }

            return(list);
        }
Пример #2
0
        public static void Pass(DispatchFormItemEntity formItem)
        {
            var form = Get(formItem.DispatchId);

            if (form == null)
            {
                throw new Exception("The dispatch form does not exist.");
            }

            var db = DatabaseFactory.CreateDatabase();

            using (var conn = db.CreateConnection())
            {
                conn.Open();
                using (var trans = conn.BeginTransaction())
                {
                    try
                    {
                        UpdateItem(formItem, db, trans);
                        UpdateDispatchStatus(form.Id, db, trans);
                        UpdateGoodsSerial(formItem, db, trans);
                        CreateReceiveForm(form, formItem, db, trans);

                        trans.Commit();
                    }
                    catch
                    {
                        trans.Rollback();
                        throw;
                    }
                }
            }
        }
Пример #3
0
        public static DispatchFormItemEntity GetItemBySerialId(string serialId)
        {
            var sql = @"
select 
    id,dispatch_id,serial_id,count,batch_no,expired_date,logistics_code,logistics_content,
    is_confirmed,confirmed_id,confirmed_time,created_id,created_time
from dispatch_form_items where serial_id=@p_serial_id";

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

            db.AddInParameter(cmd, "p_serial_id", DbType.String, serialId);
            using (var reader = db.ExecuteReader(cmd))
            {
                if (reader.Read())
                {
                    var entity = new DispatchFormItemEntity();
                    entity.Init(reader);

                    return(entity);
                }
            }

            return(null);
        }
Пример #4
0
        public static IList <DispatchFormItemEntity> GetItems(int formNo, string hospitalID)
        {
            var sql = @"
select a.*
from dispatch_form_items a inner join dispatch_form b on a.dispatch_id = b.id
where b.order_form_no =@p_form_no and b.hospital_id=@p_hospital_id
order by a.created_time desc";

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

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

            var list = new List <DispatchFormItemEntity>();

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

                    list.Add(entity);
                }
            }

            return(list);
        }
Пример #5
0
 private static void UpdateGoodsSerial(DispatchFormItemEntity form, Database db, DbTransaction trans)
 {
     GoodsSerialRepository.UpdateSerialInfo(new GoodsSerialEntity
     {
         Id               = form.SerialId,
         LogisticsCode    = form.LogisticsCode,
         LogisticsContent = form.LogisticsContent,
         UpdatedId        = form.ConfirmedId,
         UpdatedTime      = form.ConfirmedTime
     }, db, trans);
 }
Пример #6
0
        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);
        }
Пример #7
0
        private static void UpdateItem(DispatchFormItemEntity form, Database db, DbTransaction trans)
        {
            var sql = @"update dispatch_form_items set 
logistics_code=@p_logistics_code,logistics_content=@p_logistics_content,
is_confirmed=@p_is_confirmed,confirmed_id=@p_confirmed_id,confirmed_time=@p_confirmed_time
where id=@p_id";

            var dc = db.GetSqlStringCommand(sql);

            db.AddInParameter(dc, "p_id", DbType.String, form.Id);
            db.AddInParameter(dc, "p_logistics_code", DbType.String, form.LogisticsCode);
            db.AddInParameter(dc, "p_logistics_content", DbType.String, form.LogisticsContent);
            db.AddInParameter(dc, "p_is_confirmed", DbType.Boolean, form.IsConfirmed);
            db.AddInParameter(dc, "p_confirmed_id", DbType.String, form.ConfirmedId);
            db.AddInParameter(dc, "p_confirmed_time", DbType.DateTime, form.ConfirmedTime);

            db.ExecuteNonQuery(dc, trans);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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;
                    }
                }
            }
        }
Пример #10
0
        private static void CreateItem(DispatchFormItemEntity formItem, Database db, DbTransaction trans)
        {
            var sql = @"insert into dispatch_form_items(
id,dispatch_id,serial_id,count,batch_no,expired_date,is_confirmed,created_id,created_time
)
values(
@p_id,@p_dispatch_id,@p_serial_id,@p_count,@p_batch_no,@p_expired_date,@p_is_confirmed,@p_created_id,@p_created_time
)";

            var cmd = db.GetSqlStringCommand(sql);

            db.AddInParameter(cmd, "p_id", DbType.String, formItem.Id);
            db.AddInParameter(cmd, "p_dispatch_id", DbType.String, formItem.DispatchId);
            db.AddInParameter(cmd, "p_serial_id", DbType.String, formItem.SerialId);
            db.AddInParameter(cmd, "p_count", DbType.Int32, formItem.Count);
            db.AddInParameter(cmd, "p_batch_no", DbType.String, formItem.BatchNo);
            db.AddInParameter(cmd, "p_expired_date", DbType.DateTime, formItem.ExpiredDate);
            db.AddInParameter(cmd, "p_is_confirmed", DbType.Boolean, formItem.IsConfirmed);
            db.AddInParameter(cmd, "p_created_id", DbType.String, formItem.CreatedId);
            db.AddInParameter(cmd, "p_created_time", DbType.DateTime, formItem.CreatedTime);

            db.ExecuteNonQuery(cmd, trans);
        }