Пример #1
0
        public TechProcessVersionModel Get(int parentId, string node)
        {
            try
            {
                using (var _db = new IEDEntities())
                {
                    TechProcessVersionModel techVersion = null;
                    techVersion = _db.T_TechProcessVersion.Where(x => !x.IsDeleted && x.ParentId == parentId).Select(x => new TechProcessVersionModel()
                    {
                        Id                   = x.Id,
                        ProductId            = x.ProductId,
                        ProductName          = x.T_Product.Name,
                        TimeCompletePerCommo = x.TimeCompletePerCommo,
                        NumberOfWorkers      = x.NumberOfWorkers,
                        WorkingTimePerDay    = x.WorkingTimePerDay,
                        PacedProduction      = x.PacedProduction,
                        ProOfGroupPerDay     = x.ProOfGroupPerDay,
                        ProOfGroupPerHour    = x.ProOfGroupPerHour,
                        ProOfPersonPerDay    = x.ProOfPersonPerDay,
                        //WorkshopId = x.WorkshopId,
                        //WorkShopName = x.T_WorkShop.Name,
                        Note           = x.Note,
                        Quantities     = 0,
                        Price          = 0,
                        PricePerSecond = x.PricePerSecond,
                        Allowance      = x.Allowance,
                    }).FirstOrDefault();
                    if (techVersion != null)
                    {
                        #region
                        var details = (from x in _db.T_TechProcessVersionDetail
                                       where
                                       !x.T_CA_Phase.IsDeleted &&
                                       x.TechProcessVersionId == techVersion.Id
                                       select
                                       new TechProcessVerDetailModel()
                        {
                            Id = x.Id,
                            TechProcessVersionId = x.TechProcessVersionId,
                            PhaseGroupId = x.T_CA_Phase.T_PhaseGroup.Id,
                            CA_PhaseId = x.CA_PhaseId,
                            PhaseCode = x.T_CA_Phase.Code,
                            PhaseName = x.T_CA_Phase.Name,
                            //   StandardTMU = Math.Round(x.StandardTMU, 3),
                            StandardTMU = Math.Round(x.T_CA_Phase.TotalTMU, 3),
                            Percent = x.Percent,
                            EquipmentId = x.T_CA_Phase.EquipmentId != null ? x.T_CA_Phase.EquipmentId ?? 0 : 0,
                            EquipmentCode = x.T_CA_Phase.EquipmentId != null ? x.T_CA_Phase.T_Equipment.Code : "",
                            EquipmentName = x.T_CA_Phase.EquipmentId != null ? x.T_CA_Phase.T_Equipment.Name : "",
                            EquipmentGroupCode = x.T_CA_Phase.EquipmentId.HasValue ? x.T_CA_Phase.T_Equipment.T_EquipmentGroup.GroupCode : "",
                            TimeByPercent = Math.Round(x.TimeByPercent, 3),
                            Worker = x.Worker,
                            De_Percent = 0,
                            Description = x.Description == null ? "" : x.Description,
                            Coefficient = x.T_CA_Phase.SWorkerLevel.Coefficient,
                            WorkerLevelId = x.T_CA_Phase.WorkerLevelId,
                            WorkerLevelName = x.T_CA_Phase.SWorkerLevel.Name,
                            Index = x.T_CA_Phase.Index
                        }).OrderBy(x => x.Index).ThenBy(x => x.PhaseCode).ToList();
                        techVersion.details = details;

                        var listEquipmentId = details.Where(c => c.EquipmentId > 0).Select(c => c.EquipmentId).Distinct().ToList();
                        if (listEquipmentId.Count > 0)
                        {
                            techVersion.equipments = new List <ModelEquipment>();
                            foreach (var equipmentId in listEquipmentId)
                            {
                                var equipments = details.Where(c => c.EquipmentId == equipmentId).Select(c => new ModelEquipment()
                                {
                                    Id   = c.EquipmentId.Value,
                                    Name = c.EquipmentName,
                                    Code = c.EquipmentCode
                                }).ToList();
                                if (equipments.Count > 0)
                                {
                                    var equipmentFirst = equipments[0];
                                    equipmentFirst.QuantityUse = equipments.Count;
                                    techVersion.equipments.Add(equipmentFirst);
                                }
                            }
                        }
                        var phaseIds = details.Select(x => x.CA_PhaseId).Distinct().ToList();
                        if (phaseIds != null && phaseIds.Count > 0)
                        {
                            var timePrepares = _db.T_CA_Phase_TimePrepare.Where(x => !x.IsDeleted && phaseIds.Contains(x.Commo_Ana_PhaseId)).Select(x => new Commo_Ana_Phase_TimePrepareModel()
                            {
                                Id = x.Id,
                                Commo_Ana_PhaseId = x.Commo_Ana_PhaseId,
                                TMUNumber         = x.T_TimePrepare.TMUNumber
                            }).ToList();
                            if (timePrepares != null && timePrepares.Count > 0)
                            {
                                double tmu = 0, time = 0;
                                var    cfObj = _db.T_IEDConfig.FirstOrDefault(x => !x.IsDeleted && x.Name.Trim().ToUpper().Equals(eIEDConfigName.TMU.Trim().ToUpper()));
                                if (cfObj != null && !string.IsNullOrEmpty(cfObj.Value))
                                {
                                    double.TryParse(cfObj.Value, out tmu);
                                }
                                foreach (var item in details)
                                {
                                    time             = timePrepares.Where(x => x.Commo_Ana_PhaseId == item.CA_PhaseId).Sum(x => x.TMUNumber);
                                    item.TimePrepare = time > 0 ? time / tmu : 0;
                                }
                            }
                        }

                        if (!string.IsNullOrEmpty(node))
                        {
                            techVersion.details.AddRange(_db.T_CA_Phase.Where(x => !x.IsDeleted && x.Node.Contains(node) && !phaseIds.Contains(x.Id)).Select(x => new TechProcessVerDetailModel()
                            {
                                Id = 0,
                                TechProcessVersionId = 0,
                                PhaseGroupId         = x.T_PhaseGroup.Id,
                                CA_PhaseId           = x.Id,
                                PhaseCode            = x.Code,
                                Index              = x.Index,
                                PhaseName          = x.Name,
                                StandardTMU        = Math.Round(x.TotalTMU, 3),
                                EquipmentId        = x.EquipmentId != null ? x.EquipmentId ?? 0 : 0,
                                EquipmentCode      = x.EquipmentId != null ? x.T_Equipment.Code : "",
                                EquipmentName      = x.EquipmentId != null ? x.T_Equipment.Name : "",
                                EquipmentGroupCode = x.EquipmentId.HasValue ? x.T_Equipment.T_EquipmentGroup.GroupCode : "",
                                Description        = x.Description == null ? "" : x.Description,
                            }).OrderBy(x => x.Index).ThenBy(x => x.PhaseCode).ToList());
                        }
                        #endregion
                    }
                    else
                    {
                        techVersion = new TechProcessVersionModel();
                        techVersion.details.AddRange(_db.T_CA_Phase.Where(x => !x.IsDeleted && x.Node.Contains(node)).Select(x => new TechProcessVerDetailModel()
                        {
                            Id = 0,
                            TechProcessVersionId = 0,
                            PhaseGroupId         = x.T_PhaseGroup.Id,
                            CA_PhaseId           = x.Id,
                            PhaseCode            = x.Code,
                            Index              = x.Index,
                            PhaseName          = x.Name,
                            StandardTMU        = Math.Round(x.TotalTMU, 3),
                            EquipmentId        = x.EquipmentId != null ? x.EquipmentId ?? 0 : 0,
                            EquipmentCode      = x.EquipmentId != null ? x.T_Equipment.Code : "",
                            EquipmentName      = x.EquipmentId != null ? x.T_Equipment.Name : "",
                            EquipmentGroupCode = x.EquipmentId.HasValue ? x.T_Equipment.T_EquipmentGroup.GroupCode : "",
                            Description        = x.Description == null ? "" : x.Description,
                        }).OrderBy(x => x.Index).ThenBy(x => x.PhaseCode).ToList());
                    }
                    return(techVersion);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #2
0
        public ResponseBase InsertOrUpdate(TechProcessVersionModel model)
        {
            try
            {
                using (db = new IEDEntities())
                {
                    var result = new ResponseBase();
                    T_TechProcessVersion       version   = null;
                    T_TechProcessVersionDetail verDetail = null;
                    model.Id = 0;
                    if (model.Id == 0)
                    {
                        version = new T_TechProcessVersion();
                        Parse.CopyObject(model, ref version);
                        version.CreatedDate = DateTime.Now;
                        version.CreatedUser = model.ActionUser;

                        if (model.details != null && model.details.Count > 0)
                        {
                            version.T_TechProcessVersionDetail = new Collection <T_TechProcessVersionDetail>();
                            foreach (var item in model.details)
                            {
                                verDetail = new T_TechProcessVersionDetail();
                                Parse.CopyObject(item, ref verDetail);
                                verDetail.T_TechProcessVersion = version;
                                verDetail.CreatedDate          = version.CreatedDate;
                                verDetail.CreatedUser          = version.CreatedUser;
                                version.T_TechProcessVersionDetail.Add(verDetail);
                            }
                        }
                        string query = "update T_TechProcessVersion set IsDeleted = 1 WHERE ParentId =" + version.ParentId;
                        db.Database.ExecuteSqlCommand(query);
                        db.T_TechProcessVersion.Add(version);
                    }
                    else
                    {
                        #region Update
                        version = db.T_TechProcessVersion.FirstOrDefault(x => !x.IsDeleted && x.Id == model.Id);
                        if (version == null)
                        {
                            result.IsSuccess = false;
                            result.Errors.Add(new Error()
                            {
                                MemberName = "Update", Message = "Dữ liệu bạn đang thao tác đã bị xóa hoặc không tồn tại. Vui lòng kiểm tra lại !."
                            });
                            return(result);
                        }
                        else
                        {
                            version.NumberOfWorkers      = model.NumberOfWorkers;
                            version.WorkingTimePerDay    = model.WorkingTimePerDay;
                            version.PacedProduction      = model.PacedProduction;
                            version.TimeCompletePerCommo = model.TimeCompletePerCommo;
                            version.ProOfGroupPerDay     = model.ProOfGroupPerDay;
                            version.ProOfGroupPerHour    = model.ProOfGroupPerHour;
                            version.ProOfPersonPerDay    = model.ProOfPersonPerDay;
                            version.Note           = model.Note;
                            version.UpdatedUser    = model.ActionUser;
                            version.UpdatedDate    = DateTime.Now;
                            version.PricePerSecond = model.PricePerSecond;
                            version.Allowance      = model.Allowance;

                            var details = db.T_TechProcessVersionDetail.Where(x => !x.IsDeleted && x.TechProcessVersionId == model.Id).OrderBy(x => x.Id).ToList();
                            if (details.Count > 0)
                            {
                                model.details = model.details.OrderBy(x => x.Id).ToList();
                                for (int i = 0; i < details.Count(); i++)
                                {
                                    details[i].Percent       = model.details[i].Percent;
                                    details[i].TimeByPercent = model.details[i].TimeByPercent;
                                    details[i].Worker        = model.details[i].Worker;
                                    details[i].Description   = model.details[i].Description;
                                    details[i].UpdatedUser   = model.ActionUser;
                                    details[i].UpdatedDate   = DateTime.Now;
                                }
                            }
                        }
                        #endregion
                    }
                    db.SaveChanges();
                    result.Data      = version.Id;
                    result.IsSuccess = true;

                    return(result);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }