Пример #1
0
        public JsonResult SetEngineeringInfo(string ContractInfoID)
        {
            var contractInfo = this.GetEntityByID(ContractInfoID);

            if (contractInfo == null)
            {
                throw new Formula.Exceptions.BusinessException("未能找到指定的合同信息,无法启动立项");
            }
            var engineering = this.GetEntityByID <S_I_Engineering>(contractInfo.EngineeringInfo);

            if (engineering == null)
            {
                engineering                     = new S_I_Engineering();
                engineering.ID                  = FormulaHelper.CreateGuid();
                engineering.Name                = contractInfo.Name;
                engineering.Code                = contractInfo.SerialNumber;
                engineering.CustomerInfo        = contractInfo.PartyA;
                engineering.CustomerInfoName    = contractInfo.PartyAName;
                engineering.MainDept            = contractInfo.ProductionDept;
                engineering.MainDeptName        = contractInfo.ProductionDeptName;
                engineering.BusinessManager     = contractInfo.BusinessManager;
                engineering.BusinessManagerName = contractInfo.BusinessManagerName;
                engineering.ChargerUser         = contractInfo.ProductionManager;
                engineering.ChargerUserName     = contractInfo.ProductionManagerName;
                this.BusinessEntities.Set <S_I_Engineering>().Add(engineering);
                contractInfo.EngineeringInfo     = engineering.ID;
                contractInfo.EngineeringInfoName = engineering.Name;
            }
            this.BusinessEntities.SaveChanges();
            return(Json(engineering));
        }
Пример #2
0
        public JsonResult SaveExcelData()
        {
            var    reader   = new System.IO.StreamReader(HttpContext.Request.InputStream);
            string data     = reader.ReadToEnd();
            var    tempdata = JsonConvert.DeserializeObject <Dictionary <string, string> >(data);
            var    list     = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(tempdata["data"]);

            var             eID   = GetQueryString("EngineeringInfoID");
            S_I_Engineering engin = entities.Set <S_I_Engineering>().Find(eID);

            if (engin == null)
            {
                throw new Formula.Exceptions.BusinessValidationException("未找到ID为" + eID + "的S_I_Engineering");
            }

            foreach (var item in list)
            {
                T_HSE_DeviceEntranceCheck check = new T_HSE_DeviceEntranceCheck();
                check.ID = FormulaHelper.CreateGuid();
                check.EngineeringInfoID = eID;
                check.DeviceNum         = item.GetValue("DeviceNum");
                check.DeviceName        = item.GetValue("DeviceName");
                check.SpecType          = item.GetValue("SpecType");
                check.Manufacturer      = item.GetValue("Manufacturer");
                check.ManufactureDate   = item.GetValue("ManufactureDate");
                check.DeviceType        = item.GetValue("DeviceType");

                var tmpQuery = entities.Set <S_P_ContractInfo>().Where(a => a.EngineeringInfoID == eID &&
                                                                       a.ContractProperty == "Construction" &&
                                                                       a.ContractState == "Sign");

                string tmpStr = item.GetValue("SubcontractingUnit").Trim();
                var    sing   = tmpQuery.FirstOrDefault(a => a.PartyBName == tmpStr);
                if (sing != null)
                {
                    check.SubcontractingUnit     = sing.PartyB;
                    check.SubcontractingUnitName = sing.PartyBName;
                }
                else
                {
                    throw new Formula.Exceptions.BusinessValidationException("已签约分包合同中未找到" + tmpStr);
                }

                check.Count      = Convert.ToInt32(item.GetValue("Count"));
                check.EntryDate  = Convert.ToDateTime(item.GetValue("EntryDate"));
                check.CheckDate  = Convert.ToDateTime(item.GetValue("CheckDate"));
                check.ExpiryDate = Convert.ToDateTime(item.GetValue("ExpiryDate"));

                check.CreateDate   = DateTime.Now;
                check.CreateUserID = CurrentUserInfo.UserID;
                check.CreateUser   = CurrentUserInfo.UserName;
                check.CompanyID    = CurrentUserInfo.UserCompanyID;
                check.OrgID        = CurrentUserInfo.UserOrgID;

                entities.Set <T_HSE_DeviceEntranceCheck>().Add(check);
            }

            entities.SaveChanges();
            return(Json("Success"));
        }
Пример #3
0
        protected override void BeforeSave(Dictionary <string, string> dic, Base.Logic.Domain.S_UI_Form formInfo, bool isNew)
        {
            base.BeforeSave(dic, formInfo, isNew);
            S_I_Engineering engineering = EPCEntites.Set <S_I_Engineering>().Find(dic.GetValue("EngineeringInfoID"));

            if (engineering.State != ProjectState.Bid.ToString())
            {
                throw new Formula.Exceptions.BusinessValidationException("已经完成立项的项目不能修改投标结果");
            }
        }
Пример #4
0
        public override JsonResult Delete()
        {
            this.BeforeDelete(Request["ListIDs"].Split(','));
            var             contractIDs = Request["ListIDs"].Split(',');
            S_I_Engineering engineering = null;

            foreach (var contractID in contractIDs)
            {
                S_P_ContractInfo contract = this.GetEntityByID <S_P_ContractInfo>(contractID);
                engineering = contract.S_I_Engineering;
                var contents = contract.S_P_ContractInfo_Content.ToList();
                foreach (var content in contents)
                {
                    var pBom = EPCEntites.Set <S_P_Bom>().Find(content.PBomID);
                    if (pBom == null)
                    {
                        continue;
                    }
                    //throw new BusinessException("未找到id为【" + content.PBomID + "】的PBom");
                    //pbom更新以SignDate是否有值为标准,有值说明之前pbom是统计过这个合同额的,因此要扣除
                    if (contract.SignDate != null)
                    {
                        pBom.ContractQuantity -= content.ContractQuantity;
                    }
                    if (EPCEntites.Set <S_P_ContractInfo_Content>().Count(a => a.PBomID == pBom.ID && a.ID != content.ID) == 0)
                    {
                        pBom.Locked           = false;
                        pBom.FactContractDate = null;
                    }
                }
                foreach (var content in contract.S_P_ContractInfo_Content.ToList())
                {
                    this.EPCEntites.Set <S_P_ContractInfo_Content>().Remove(content);
                }
                foreach (var content in contract.S_P_ContractInfo_PaymentObj.ToList())
                {
                    this.EPCEntites.Set <S_P_ContractInfo_PaymentObj>().Remove(content);
                }
                foreach (var content in contract.S_P_ContractInfo_CBSInfo.ToList())
                {
                    this.EPCEntites.Set <S_P_ContractInfo_CBSInfo>().Remove(content);
                }
                this.EPCEntites.Set <S_P_ContractInfo>().Remove(contract);
                this.EPCEntites.Set <S_I_CBS_Contract>().Delete(c => c.RelateID == contract.ID);
            }

            this.EPCEntites.SaveChanges();
            if (engineering != null)
            {
                engineering.SumCBSContractValue();
            }
            return(Json(""));
        }
Пример #5
0
 protected override void OnFlowEnd(S_F_ProjectReimbursement entity, Workflow.Logic.Domain.S_WF_InsTaskExec taskExec, Workflow.Logic.Domain.S_WF_InsDefRouting routing)
 {
     if (entity != null)
     {
         entity.Push();
         this.EPCEntites.SaveChanges();
         if (S_T_DefineParams.Params.GetValue("ProjReimbursementAutoSettle").ToLower() == "true")
         {
             S_I_Engineering engineering = this.EPCEntites.Set <S_I_Engineering>().Find(entity.Project);
             engineering.SumCBSCost();
         }
     }
 }
        protected override void BeforeSave(Dictionary <string, string> dic, Base.Logic.Domain.S_UI_Form formInfo, bool isNew)
        {
            var    dbContext         = FormulaHelper.GetEntities <EPCEntities>();
            string engineeringInfoID = dic.GetValue("EngineeringInfoID");

            if (isNew)
            {
                if (dbContext.Set <T_M_BidSchema>().Count(c => c.FlowPhase != "End" && c.EngineeringInfoID == engineeringInfoID) > 0)
                {
                    throw new Formula.Exceptions.BusinessValidationException("尚有投标策划表未审批完成,无法进行升版操作");
                }
            }
            S_I_Engineering enginnering = dbContext.Set <S_I_Engineering>().Find(engineeringInfoID);

            if (enginnering.State != ProjectState.Bid.ToString())
            {
                throw new Formula.Exceptions.BusinessValidationException("已经完成立项的项目不能再进行投标策划表调整");
            }
        }
Пример #7
0
        public JsonResult SetEngineeringInfo(string ID, string SingleTaskNotice)
        {
            var clue = this.GetEntityByID(ID);

            if (clue == null)
            {
                throw new Formula.Exceptions.BusinessException("未能找到指定的前期项目信息,无法启动立项");
            }
            var engineering = this.GetEntityByID <S_I_Engineering>(clue.EngineeringInfo);

            if (engineering == null)
            {
                engineering                     = new S_I_Engineering();
                engineering.ID                  = FormulaHelper.CreateGuid();
                engineering.Name                = clue.Name;
                engineering.Code                = clue.SerialNumber;
                engineering.CustomerInfo        = clue.CustomerInfo;
                engineering.CustomerInfoName    = clue.CustomerInfoName;
                engineering.BusinessManager     = clue.BusinessManager;
                engineering.BusinessManagerName = clue.BusinessManagerName;
                engineering.Country             = clue.Country;
                engineering.Province            = clue.Province;
                engineering.City                = clue.City;
                this.BusinessEntities.Set <S_I_Engineering>().Add(engineering);
                clue.EngineeringInfo     = engineering.ID;
                clue.EngineeringInfoName = engineering.Name;
            }
            this.BusinessEntities.SaveChanges();
            if (!String.IsNullOrEmpty(SingleTaskNotice) && SingleTaskNotice == true.ToString())
            {
                var db  = Config.SQLHelper.CreateSqlHelper(Config.ConnEnum.Project);
                var obj = db.ExecuteScalar("select count(0) from T_CP_TaskNotice where RelateID='" + ID + "'");
                if (obj != null && obj != DBNull.Value)
                {
                    if (Convert.ToInt32(obj) > 0)
                    {
                        throw new Formula.Exceptions.BusinessException("项目【" + clue.Name + "】已经下达过任务单,不能重复下达");
                    }
                }
            }
            return(Json(engineering));
        }
Пример #8
0
        /// <summary>
        ///  更新工程坐标信息
        /// </summary>
        /// <param name="id"></param>
        /// <param name="lat">纬度</param>
        /// <param name="lng">经度</param>
        public void UpdateGisInfo(string id, string lat, string lng, string engineerAddress)
        {
            var             entity          = FormulaHelper.GetEntities <EPCEntities>();
            S_I_Engineering engineeringInfo = entity.Set <S_I_Engineering>().FirstOrDefault(x => x.ID == id);

            if (engineeringInfo != null)
            {
                engineeringInfo.Lat             = lat;
                engineeringInfo.Long            = lng;
                engineeringInfo.EngineerAddress = engineerAddress;

                T_I_EngineeringBuild tEBulidInfo = entity.Set <T_I_EngineeringBuild>().FirstOrDefault(x => x.ID == engineeringInfo.BuildFormID);
                if (tEBulidInfo != null)
                {
                    tEBulidInfo.Lat             = lat;
                    tEBulidInfo.Long            = lng;
                    tEBulidInfo.EngineerAddress = engineerAddress;
                }
                entity.SaveChanges();
            }
        }
Пример #9
0
        void SendNotice(S_T_ISODefine isoDefine, Dictionary <string, object> dic, S_I_Engineering engineeringInfo, string sendType = "Start")
        {
            var regText = sendType == "Start" ? isoDefine.StartNoticeContent : isoDefine.EndNoticeContent;

            if (isoDefine.SendNotice != "True" || String.IsNullOrEmpty(regText))
            {
                return;
            }
            var formID = dic.GetValue("ID");
            var notice = this.EPCEntites.Set <S_I_Notice>().FirstOrDefault(d => d.RelateType == sendType && d.RelateID == formID);

            if (notice == null)
            {
                notice    = this.EPCEntites.Set <S_I_Notice>().Create();
                notice.ID = FormulaHelper.CreateGuid();
                var enumDefine = new List <Dictionary <string, object> >();
                if (!String.IsNullOrEmpty(isoDefine.EnumFieldInfo))
                {
                    enumDefine = JsonHelper.ToList(isoDefine.EnumFieldInfo);
                }
                var content = replaceNameString(regText, dic, enumDefine);
                notice.Title   = content;
                notice.Content = content;
                if (!String.IsNullOrEmpty(isoDefine.LinkViewUrl))
                {
                    notice.LinkUrl = isoDefine.LinkViewUrl.IndexOf("?") >= 0 ?
                                     isoDefine.LinkViewUrl + "&ID=" + formID :
                                     isoDefine.LinkViewUrl + "?ID=" + formID;
                }
                notice.CreateDate        = DateTime.Now;
                notice.RelateID          = formID;
                notice.RelateType        = sendType;
                notice.CreateUserID      = dic.GetValue("CreateUserID");
                notice.CreateUserName    = dic.GetValue("CreateUser");
                notice.EngineeringInfoID = engineeringInfo.ID;
                notice.IsFromSys         = "True";
                this.EPCEntites.Set <S_I_Notice>().Add(notice);
            }
        }
Пример #10
0
        private S_I_ProjectInfo AddProject(T_CP_TaskNotice entity, S_I_Engineering engineering, T_CP_TaskNotice_PhaseDetail singlePhase = null)
        {
            var marketEntities = FormulaHelper.GetEntities <Market.Logic.Domain.MarketEntities>();

            S_I_ProjectInfo projectInfo = entity.Push();

            projectInfo.ModifyDate   = projectInfo.CreateDate;
            projectInfo.ModifyUser   = projectInfo.CreateUser;
            projectInfo.ModifyUserID = projectInfo.CreateUserID;

            //重新修改phaseValue、phaseName、Name、Code等信息
            if (singlePhase != null)
            {
                projectInfo.PhaseValue        = singlePhase.Phase;
                projectInfo.WBSRoot.PhaseCode = singlePhase.Phase;
                var phaseList = BaseConfigFO.GetWBSAttrList(WBSNodeType.Phase);
                var phaseItem = phaseList.FirstOrDefault(d => projectInfo.PhaseValue == d.Code);
                projectInfo.PhaseName      = phaseItem.Name;
                projectInfo.Name           = singlePhase.Name;
                projectInfo.Code           = singlePhase.Code;
                projectInfo.ChargeDeptID   = singlePhase.ChargeDept ?? entity.ChargeDept;
                projectInfo.ChargeDeptName = singlePhase.ChargeDeptName ?? entity.ChargeDeptName;
                projectInfo.ChargeUserID   = singlePhase.ChargeUser ?? entity.ChargeUser;
                projectInfo.ChargeUserName = singlePhase.ChargeUserName ?? entity.ChargeUserName;
                projectInfo.OtherDeptID    = singlePhase.OtherDept ?? entity.OtherDept;
                projectInfo.OtherDeptName  = singlePhase.OtherDeptName ?? entity.OtherDeptName;
                projectInfo.PlanStartDate  = singlePhase.PlanStartDate ?? entity.PlanStartDate;
                projectInfo.PlanFinishDate = singlePhase.PlanFinishDate ?? entity.PlanFinishDate;
            }

            projectInfo.ModifyDate   = projectInfo.CreateDate;
            projectInfo.ModifyUser   = projectInfo.CreateUser;
            projectInfo.ModifyUserID = projectInfo.CreateUserID;
            #region  步创建经营库的项目信息
            S_I_Project project    = null;
            var         marketClue = marketEntities.S_P_MarketClue.Find(entity.RelateID);
            project = marketEntities.S_I_Project.FirstOrDefault(d => d.TasKNoticeID == entity.ID);
            if (project != null)
            {
                throw new Formula.Exceptions.BusinessException("任务单已经下达过项目,无法重复下达");
            }
            project                    = new S_I_Project();
            project.ID                 = projectInfo.ID;
            project.TasKNoticeID       = entity.ID;
            project.TasKNoticeTmplCode = entity.TmplCode;
            project.Name               = projectInfo.Name;
            project.Code               = projectInfo.Code;
            project.Phase              = projectInfo.PhaseValue;
            project.ProjectClass       = projectInfo.ProjectClass;
            project.Customer           = projectInfo.CustomerID;
            project.CustomerName       = projectInfo.CustomerName;
            project.CreateDate         = DateTime.Now;
            project.EngineeringInfo    = entity.EngineeringID;
            project.ChargerDept        = projectInfo.ChargeDeptID;
            project.ChargerDeptName    = projectInfo.ChargeDeptName;
            project.ChargerUser        = projectInfo.ChargeUserID;
            project.ChargerUserName    = projectInfo.ChargeUserName;
            project.Country            = projectInfo.Country;
            project.Province           = projectInfo.Province;
            project.Area               = projectInfo.Area;
            project.City               = projectInfo.City;
            project.State              = projectInfo.State;
            project.ProjectScale       = entity.ProjectLevel;
            if (marketClue != null)
            {
                project.MakertClueID = marketClue.ID;
                marketClue.State     = Market.Logic.ClueState.Succeed.ToString();
            }
            marketEntities.S_I_Project.Add(project);
            entity.MarketProjectID = project.ID;
            #endregion

            #region  步绑定合同

            if (!String.IsNullOrEmpty(entity.ContractInfo))
            {
                var contract = marketEntities.Set <S_C_ManageContract>().Include("S_C_ManageContract_ProjectRelation")
                               .Include("S_C_ManageContract_ReceiptObj").FirstOrDefault(d => d.ID == entity.ContractInfo);
                if (contract != null)
                {
                    var relation = contract.S_C_ManageContract_ProjectRelation.FirstOrDefault(a => a.ProjectID == project.ID);
                    if (relation == null)
                    {
                        relation                      = new S_C_ManageContract_ProjectRelation();
                        relation.ID                   = FormulaHelper.CreateGuid();
                        relation.ProjectID            = project.ID;
                        relation.S_C_ManageContractID = contract.ID;
                        relation.ProjectCode          = project.Code;
                        relation.ProjectName          = project.Name;
                        if (contract.S_C_ManageContract_ProjectRelation.Count == 0)
                        {
                            if (entity.ContractValue.HasValue && contract.ContractRMBAmount > 0)
                            {
                                if (contract.ContractRMBAmount > 0)
                                {
                                    relation.Scale = entity.ContractValue.Value / contract.ContractRMBAmount * 100;
                                }
                                else
                                {
                                    relation.Scale = 0;
                                }
                                relation.ProjectValue = entity.ContractValue;
                                relation.TaxRate      = contract.TaxRate;
                                relation.TaxValue     = relation.ProjectValue / (1 + contract.TaxRate) * contract.TaxRate;
                                relation.ClearValue   = relation.ProjectValue - relation.TaxValue;
                            }
                            else
                            {
                                relation.Scale        = 100;
                                relation.ProjectValue = contract.ContractRMBAmount;
                                var taxRate    = contract.TaxRate.HasValue ? contract.TaxRate.Value : 0;
                                var taxValue   = contract.ContractRMBAmount / (1 + taxRate) * taxRate;
                                var clearVlaue = contract.ContractRMBAmount - taxValue;
                                relation.TaxRate    = taxRate;
                                relation.TaxValue   = taxValue;
                                relation.ClearValue = contract.ContractRMBAmount - taxValue;
                            }
                            foreach (var item in contract.S_C_ManageContract_ReceiptObj.ToList())
                            {
                                item.ProjectInfo     = project.ID;
                                item.ProjectInfoName = project.Name;
                                relation.TaxRate     = contract.TaxRate;
                            }
                        }
                        else
                        {
                            if (entity.ContractValue.HasValue && contract.ContractRMBAmount > 0)
                            {
                                if (contract.ContractRMBAmount > 0)
                                {
                                    relation.Scale = entity.ContractValue.Value / contract.ContractRMBAmount * 100;
                                }
                                else
                                {
                                    relation.Scale = 0;
                                }
                                relation.ProjectValue = entity.ContractValue;
                                relation.TaxRate      = contract.TaxRate;
                                relation.TaxValue     = relation.ProjectValue / (1 + contract.TaxRate) * contract.TaxRate;
                                relation.ClearValue   = relation.ProjectValue - relation.TaxValue;
                            }
                            else
                            {
                                relation.Scale        = 0;
                                relation.ProjectValue = 0;
                                relation.TaxRate      = contract.TaxRate;
                            }
                        }
                        contract.S_C_ManageContract_ProjectRelation.Add(relation);
                        if (String.IsNullOrEmpty(contract.EngineeringInfo) && engineering != null)
                        {
                            contract.EngineeringInfo     = engineering.ID;
                            contract.EngineeringInfoName = engineering.Name;
                        }
                    }
                }
            }
            else
            {
                var contractList = marketEntities.Set <S_C_ManageContract>().Include("S_C_ManageContract_ProjectRelation")
                                   .Include("S_C_ManageContract_ReceiptObj").Where(d => d.EngineeringInfo == entity.EngineeringID).ToList();
                foreach (var contract in contractList)
                {
                    var relation = contract.S_C_ManageContract_ProjectRelation.FirstOrDefault(a => a.ProjectID == project.ID);
                    if (relation == null)
                    {
                        relation                      = new S_C_ManageContract_ProjectRelation();
                        relation.ID                   = FormulaHelper.CreateGuid();
                        relation.ProjectID            = project.ID;
                        relation.S_C_ManageContractID = contract.ID;
                        relation.ProjectCode          = project.Code;
                        relation.ProjectName          = project.Name;
                        if (contract.S_C_ManageContract_ProjectRelation.Count == 0)
                        {
                            relation.Scale        = 100;
                            relation.ProjectValue = contract.ContractRMBAmount;
                            foreach (var item in contract.S_C_ManageContract_ReceiptObj.ToList())
                            {
                                item.ProjectInfo     = project.ID;
                                item.ProjectInfoName = project.Name;
                            }
                        }
                        else
                        {
                            relation.Scale        = 0;
                            relation.ProjectValue = 0;
                        }
                        contract.S_C_ManageContract_ProjectRelation.Add(relation);
                    }
                }
            }


            #endregion

            projectInfo.MarketProjectInfoID = project.ID;

            #region 默认创建EPS结构
            var group = this.BusinessEntities.Set <S_I_ProjectGroup>().FirstOrDefault(d => d.RelateID == entity.EngineeringID && d.Type == "Engineering");
            if (group == null)
            {
                group                      = new S_I_ProjectGroup();
                group.ID                   = Formula.FormulaHelper.CreateGuid();
                group.Name                 = engineering.Name;
                group.Code                 = engineering.Code;
                group.City                 = engineering.City;
                group.Country              = engineering.Country;
                group.Province             = engineering.Province;
                group.Area                 = engineering.Area;
                group.ProjectClass         = engineering.Class;
                group.Investment           = engineering.Investment;
                group.Proportion           = engineering.Proportion;
                group.PhaseContent         = engineering.PhaseContent;
                group.Address              = engineering.Address;
                group.DeptID               = engineering.MainDept;
                group.DeptName             = engineering.MainDeptName;
                group.RelateID             = engineering.ID;
                group.EngineeringSpaceCode = ProjectMode.Standard.ToString();
                group.CreateDate           = DateTime.Now;
                var fo = Formula.FormulaHelper.CreateFO <EPSFO>();
                fo.BuildEngineering(group);
            }
            group.BindingProject(projectInfo);
            entity.GroupID     = group.ID;
            group.PhaseContent = engineering.PhaseContent;
            group.PhaseValue   = engineering.PhaseValue;
            #endregion

            projectInfo.InitDeisgnInputTemplate(true);

            //把设总放进RBS中
            if (projectInfo != null && !string.IsNullOrEmpty(entity.DesignManager))
            {
                projectInfo.WBSRoot.SetUsers(ProjectRole.DesignManager.ToString(), entity.DesignManager.Split(','), true, true, true, true);
            }

            var customer = marketEntities.Set <S_F_Customer>().FirstOrDefault(a => a.ID == entity.Customer);
            if (customer != null)
            {
                if (string.IsNullOrEmpty(entity.Country))
                {
                    project.Country     = customer.Country;
                    projectInfo.Country = customer.Country;
                }
                if (string.IsNullOrEmpty(entity.Province))
                {
                    project.Province     = customer.Province;
                    projectInfo.Province = customer.Province;
                }
                if (string.IsNullOrEmpty(entity.City))
                {
                    project.City     = customer.City;
                    projectInfo.City = customer.City;
                }
                if (string.IsNullOrEmpty(entity.Area))
                {
                    project.Area     = customer.Area;
                    projectInfo.Area = customer.Area;
                }
            }

            return(projectInfo);
        }
Пример #11
0
        protected override void OnFlowEnd(T_CP_TaskNotice entity, Workflow.Logic.Domain.S_WF_InsTaskExec taskExec, Workflow.Logic.Domain.S_WF_InsDefRouting routing)
        {
            if (entity == null)
            {
                throw new Formula.Exceptions.BusinessException("没有找到指定的任务单,立项失败");
            }
            var marketEntities = FormulaHelper.GetEntities <Market.Logic.Domain.MarketEntities>();

            var projectList = new List <S_I_ProjectInfo>();

            if (!String.IsNullOrEmpty(entity.ProjectInfoID) &&
                this.BusinessEntities.Set <S_I_ProjectInfo>().Any(a => a.ID == entity.ProjectInfoID))
            {
                #region 任务单升版
                S_I_ProjectInfo projectInfo = null;
                S_I_Project     project     = null;
                projectInfo             = entity.UpGrade();
                project                 = marketEntities.S_I_Project.FirstOrDefault(d => d.ID == projectInfo.MarketProjectInfoID);
                project.Name            = entity.ProjectInfo;
                project.Code            = entity.SerialNumber;
                project.Phase           = entity.Phase;
                project.ProjectClass    = entity.ProjectClass;
                project.Customer        = entity.Customer;
                project.CustomerName    = entity.CustomerName;
                project.CreateDate      = DateTime.Now;
                project.EngineeringInfo = entity.EngineeringID;
                project.ChargerDept     = string.IsNullOrEmpty(entity.ChargeDept) ? entity.DesignDept : entity.ChargeDept;
                project.ChargerDeptName = string.IsNullOrEmpty(entity.ChargeDeptName) ? entity.DesignDeptName : entity.ChargeDeptName;
                project.ChargerUser     = entity.ChargeUser;
                project.ChargerUserName = entity.ChargeUserName;
                project.Country         = entity.Country;
                project.Province        = entity.Province;
                project.Area            = entity.Area;

                if (string.IsNullOrEmpty(project.Area))
                {
                    //获取省份对应的地区(SubCategory)
                    var enumItem = EnumBaseHelper.GetEnumDef("System.Province").EnumItem.FirstOrDefault(a => a.Code == entity.Province);
                    if (enumItem != null)
                    {
                        project.Area = enumItem.SubCategory;
                    }
                }
                project.City             = entity.City;
                project.ProjectScale     = entity.ProjectLevel;
                projectInfo.ModifyDate   = DateTime.Now;
                projectInfo.ModifyUser   = entity.CreateUser;
                projectInfo.ModifyUserID = entity.CreateUserID;

                //修改经营库项目名称冗余字段
                if (!string.IsNullOrEmpty(projectInfo.MarketProjectInfoID))
                {
                    if (entity.ContractValue.HasValue && String.IsNullOrEmpty(entity.ContractInfo))
                    {
                        marketEntities.S_C_ManageContract_ProjectRelation.Where(a => a.ProjectID == projectInfo.MarketProjectInfoID &&
                                                                                a.S_C_ManageContractID == entity.ContractInfo).Update(a => a.ProjectValue = entity.ContractValue);
                    }
                    marketEntities.S_C_ManageContract_ProjectRelation.Where(a => a.ProjectID == projectInfo.MarketProjectInfoID).Update(a => a.ProjectName  = entity.ProjectInfo);
                    marketEntities.S_C_ManageContract_ReceiptObj.Where(a => a.ProjectInfo == projectInfo.MarketProjectInfoID).Update(a => a.ProjectInfoName = entity.ProjectInfo);
                    marketEntities.S_C_PlanReceipt.Where(a => a.ProjectID == projectInfo.MarketProjectInfoID).Update(a => a.ProjectName             = entity.ProjectInfo);
                    marketEntities.S_FC_CostInfo.Where(a => a.ProjectID == projectInfo.MarketProjectInfoID).Update(a => a.ProjectName               = entity.ProjectInfo);
                    marketEntities.S_SP_SupplierContract.Where(a => a.ProjectInfo == projectInfo.MarketProjectInfoID).Update(a => a.ProjectInfoName = entity.ProjectInfo);
                }
                projectList.Add(projectInfo);
                #endregion
            }
            else
            {
                #region 新建任务单立项

                #region 如果工程信息为空,则默认创建工程
                var  engineering = marketEntities.S_I_Engineering.Find(entity.EngineeringID);
                bool newEngineer = false;
                if (engineering == null)
                {
                    engineering    = new S_I_Engineering();
                    engineering.ID = FormulaHelper.CreateGuid();
                    marketEntities.S_I_Engineering.Add(engineering);
                    newEngineer = true;
                }
                engineering.Name = String.IsNullOrEmpty(entity.EngineeringName) ? entity.ProjectInfo : entity.EngineeringName;
                if (!String.IsNullOrEmpty(entity.Customer))
                {
                    engineering.CustomerInfo     = entity.Customer;
                    engineering.CustomerInfoName = entity.CustomerName;
                }
                engineering.Code = String.IsNullOrEmpty(entity.EngineeringCode) ? entity.SerialNumber : entity.EngineeringCode;
                if (!string.IsNullOrEmpty(entity.MainDeptInfo))
                {
                    engineering.MainDept     = entity.MainDeptInfo;
                    engineering.MainDeptName = entity.MainDeptInfoName;
                }
                else if (string.IsNullOrEmpty(engineering.MainDept))
                {
                    engineering.MainDept     = entity.ChargeDept;
                    engineering.MainDeptName = entity.ChargeDeptName;
                }
                engineering.OtherDept       = String.IsNullOrEmpty(entity.EngineeringOtherDept) ? entity.OtherDept : entity.EngineeringOtherDept;
                engineering.OtherDeptName   = String.IsNullOrEmpty(entity.EngineeringOtherDeptName) ? entity.OtherDeptName : entity.EngineeringOtherDeptName;
                engineering.ChargerUser     = String.IsNullOrEmpty(entity.EngineeringChargeUser) ? entity.ChargeUser : entity.EngineeringChargeUser;
                engineering.ChargerUserName = String.IsNullOrEmpty(entity.EngineeringChargeUserName) ? entity.ChargeUserName : entity.EngineeringChargeUserName;
                engineering.Country         = entity.Country;
                engineering.Province        = entity.Province;
                engineering.City            = entity.City;
                engineering.Area            = entity.Area;
                engineering.Proportion      = entity.BuildArea;
                engineering.Address         = entity.BuildAddress;
                engineering.LandingArea     = entity.LandArea;
                engineering.CreateDate      = DateTime.Now;
                if (!String.IsNullOrEmpty(entity.Investment))
                {
                    engineering.Investment = Convert.ToDecimal(entity.Investment);
                }
                if (newEngineer)
                {
                    entity.EngineeringID             = engineering.ID;
                    entity.EngineeringName           = engineering.Name;
                    entity.EngineeringCode           = engineering.Code;
                    entity.EngineeringChargeUser     = engineering.ChargerUser;
                    entity.EngineeringChargeUserName = engineering.ChargerUserName;
                    entity.MainDeptInfo             = engineering.MainDept;
                    entity.MainDeptInfoName         = engineering.MainDeptName;
                    entity.EngineeringOtherDept     = engineering.OtherDept;
                    entity.EngineeringOtherDeptName = engineering.OtherDeptName;
                }

                var phaseName       = "";
                var phaseList       = BaseConfigFO.GetWBSAttrList(WBSNodeType.Phase);
                var entityPhaseList = phaseList.Where(d => entity.Phase.Contains(d.Code)).ToList();
                foreach (var item in entityPhaseList)
                {
                    phaseName += item.Name + ",";
                }
                engineering.PhaseContent = phaseName.TrimEnd(',');
                engineering.PhaseValue   = entity.Phase;
                #endregion

                if (!string.IsNullOrEmpty(entity.MultiProjMode) && entity.MultiProjMode.ToLower() == "1")
                {
                    var list = entity.Phase.Split(',');
                    if (list.Length == 0)
                    {
                        throw new Formula.Exceptions.BusinessException("没有指定阶段");
                    }

                    string projIds = "";
                    foreach (var item in entity.T_CP_TaskNotice_PhaseDetail)
                    {
                        var prj = AddProject(entity, engineering, item);
                        projIds           += prj.ID + ",";
                        item.ProjectInfoID = prj.ID;
                        projectList.Add(prj);
                    }
                    entity.ProjectInfoID = projIds.TrimEnd(',');
                }
                else
                {
                    var prj = AddProject(entity, engineering);
                    projectList.Add(prj);
                }

                #endregion
            }

            this.BusinessEntities.SaveChanges();
            marketEntities.SaveChanges();


            #region 自动同步核算项目
            Expenses.Logic.CBSInfoFO.SynCBSInfo(FormulaHelper.ModelToDic <T_CP_TaskNotice>(entity), Expenses.Logic.SetCBSOpportunity.TaskNoticeComplete);
            #endregion
        }
        public JsonResult ValidateData()
        {
            var    reader    = new System.IO.StreamReader(HttpContext.Request.InputStream);
            string data      = reader.ReadToEnd();
            var    tempdata  = JsonConvert.DeserializeObject <Dictionary <string, string> >(data);
            var    excelData = JsonConvert.DeserializeObject <ExcelData>(tempdata["data"]);

            var             eID   = GetQueryString("EngineeringInfoID");
            S_I_Engineering engin = entities.Set <S_I_Engineering>().Find(eID);

            if (engin == null)
            {
                throw new Formula.Exceptions.BusinessValidationException("未找到ID为" + eID + "的S_I_Engineering");
            }

            var errors = excelData.Vaildate(e =>
            {
                if (e.FieldName == "Name" && String.IsNullOrEmpty(e.Value))
                {
                    e.IsValid   = false;
                    e.ErrorText = "姓名不能为空";
                }
                else if (e.FieldName == "SubcontractingUnit")
                {
                    if (String.IsNullOrEmpty(e.Value))
                    {
                        e.IsValid   = false;
                        e.ErrorText = "分包单位不能为空";
                    }
                    else
                    {
                        var tmpQuery = entities.Set <S_P_ContractInfo>().Where(a => a.EngineeringInfoID == eID &&
                                                                               a.ContractProperty == "Construction" &&
                                                                               a.ContractState == "Sign");

                        if (!tmpQuery.Any(a => a.PartyBName == e.Value.Trim()))
                        {
                            e.IsValid   = false;
                            e.ErrorText = "已签约分包合同中未找到该乙方名称";
                        }
                    }
                }
                else if (e.FieldName == "ExpiryDate" && !String.IsNullOrEmpty(e.Value))
                {
                    DateTime tmpDate = DateTime.Now;
                    if (!DateTime.TryParse(e.Value, out tmpDate))
                    {
                        e.IsValid   = false;
                        e.ErrorText = "有效期限格式不正确";
                    }
                }
                else if (e.FieldName == "EntryDate" && !String.IsNullOrEmpty(e.Value))
                {
                    DateTime tmpDate = DateTime.Now;
                    if (!DateTime.TryParse(e.Value, out tmpDate))
                    {
                        e.IsValid   = false;
                        e.ErrorText = "进场时间格式不正确";
                    }
                }
                else if (e.FieldName == "ExitDate" && !String.IsNullOrEmpty(e.Value))
                {
                    DateTime tmpDate = DateTime.Now;
                    if (!DateTime.TryParse(e.Value, out tmpDate))
                    {
                        e.IsValid   = false;
                        e.ErrorText = "退场时间格式不正确";
                    }
                }
            });

            return(Json(errors));
        }
        public JsonResult SaveExcelData()
        {
            var    reader   = new System.IO.StreamReader(HttpContext.Request.InputStream);
            string data     = reader.ReadToEnd();
            var    tempdata = JsonConvert.DeserializeObject <Dictionary <string, string> >(data);
            var    list     = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(tempdata["data"]);

            var             eID   = GetQueryString("EngineeringInfoID");
            S_I_Engineering engin = entities.Set <S_I_Engineering>().Find(eID);

            if (engin == null)
            {
                throw new Formula.Exceptions.BusinessValidationException("未找到ID为" + eID + "的S_I_Engineering");
            }

            foreach (var item in list)
            {
                T_HSE_SpecOperaPerson detail = new T_HSE_SpecOperaPerson();
                detail.ID = FormulaHelper.CreateGuid();
                detail.EngineeringInfoID = eID;
                detail.Name = item.GetValue("Name");

                var tmpQuery = entities.Set <S_P_ContractInfo>().Where(a => a.EngineeringInfoID == eID &&
                                                                       a.ContractProperty == "Construction" &&
                                                                       a.ContractState == "Sign");

                string tmpStr = item.GetValue("SubcontractingUnit").Trim();
                var    sing   = tmpQuery.FirstOrDefault(a => a.PartyBName == tmpStr);
                if (sing != null)
                {
                    detail.SubcontractingUnit     = sing.PartyB;
                    detail.SubcontractingUnitName = sing.PartyBName;
                }
                else
                {
                    throw new Formula.Exceptions.BusinessValidationException("已签约分包合同中未找到" + tmpStr);
                }

                detail.Sex          = item.GetValue("Sex");
                detail.Phone        = item.GetValue("Phone");
                detail.IDCard       = item.GetValue("IDCard");
                detail.WorkType     = item.GetValue("WorkType");
                detail.OperaCerfNum = item.GetValue("OperaCerfNum");
                detail.LicOrg       = item.GetValue("LicOrg");

                detail.CreateDate   = DateTime.Now;
                detail.CreateUserID = CurrentUserInfo.UserID;
                detail.CreateUser   = CurrentUserInfo.UserName;
                detail.CompanyID    = CurrentUserInfo.UserCompanyID;
                detail.OrgID        = CurrentUserInfo.UserOrgID;

                if (!string.IsNullOrEmpty(item.GetValue("ExpiryDate")))
                {
                    detail.ExpiryDate = Convert.ToDateTime(item.GetValue("ExpiryDate"));
                }
                if (!string.IsNullOrEmpty(item.GetValue("EntryDate")))
                {
                    detail.EntryDate = Convert.ToDateTime(item.GetValue("EntryDate"));
                }
                if (!string.IsNullOrEmpty(item.GetValue("ExitDate")))
                {
                    detail.ExitDate = Convert.ToDateTime(item.GetValue("ExitDate"));
                }

                entities.Set <T_HSE_SpecOperaPerson>().Add(detail);
            }

            entities.SaveChanges();
            return(Json("Success"));
        }
Пример #14
0
        public string CreateNewProject(string EngineeringID)
        {
            var entity = FormulaHelper.GetEntities <EPCEntities>();
            var isOver = entity.Set <S_I_Engineering>().Where(c => c.OldEngineeringID == EngineeringID).ToList();
            var newid  = "";

            if (isOver.Count == 0)
            {
                S_I_Engineering oldProject = entity.Set <S_I_Engineering>().FirstOrDefault(c => c.ID == EngineeringID);
                S_I_Engineering newProject = new S_I_Engineering();
                newid         = FormulaHelper.CreateGuid();
                newProject.ID = newid;
                newProject.OldEngineeringID = EngineeringID;
                newProject.ContractMode     = "AfterSale";
                newProject.CreateDate       = DateTime.Now;
                newProject.CreateUser       = FormulaHelper.GetUserInfo().UserName;
                newProject.CreateUserID     = FormulaHelper.GetUserInfo().UserID;

                newProject.Name          = oldProject.Name + "(售后项目)";
                newProject.OrgID         = oldProject.OrgID;
                newProject.OtherDept     = oldProject.OtherDept;
                newProject.OtherDeptName = oldProject.OtherDeptName;
                //newProject.PBSRoot = oldProject.PBSRoot;
                newProject.PhaseValue          = oldProject.PhaseValue;
                newProject.ProductionValue     = oldProject.ProductionValue;
                newProject.ProjectClass        = oldProject.ProjectClass;
                newProject.ProjectContent      = oldProject.ProjectContent;
                newProject.ProjectPhase        = oldProject.ProjectPhase;
                newProject.ProjectPreiod       = oldProject.ProjectPreiod;
                newProject.ProjectScale        = oldProject.ProjectScale;
                newProject.Remark              = oldProject.Remark;
                newProject.SalePeriod          = oldProject.SalePeriod;
                newProject.SerialNumber        = oldProject.SerialNumber;
                newProject.State               = oldProject.State;
                newProject.Status              = oldProject.Status;
                newProject.StepName            = oldProject.StepName;
                newProject.SuccessRate         = oldProject.SuccessRate;
                newProject.Advantage           = oldProject.Advantage;
                newProject.Attachment          = oldProject.Attachment;
                newProject.BiddingCharger      = oldProject.BiddingCharger;
                newProject.BiddingChargerName  = oldProject.BiddingChargerName;
                newProject.BuildFormID         = oldProject.BuildFormID;
                newProject.BuildType           = oldProject.BuildType;
                newProject.BusinessCharger     = oldProject.BusinessCharger;
                newProject.BusinessChargerName = oldProject.BusinessChargerName;
                //newProject.CBSRoot = oldProject.CBSRoot;
                newProject.ChargerDept     = oldProject.ChargerDept;
                newProject.ChargerDeptName = oldProject.ChargerDeptName;
                newProject.ChargerUser     = oldProject.ChargerUser;
                newProject.ChargerUserName = oldProject.ChargerUserName;
                newProject.CompanyID       = oldProject.CompanyID;
                newProject.Competition     = oldProject.Competition;
                //newProject.ConstructionRoot = oldProject.ConstructionRoot;

                newProject.CurrentPhase     = oldProject.CurrentPhase;
                newProject.CustomerAddress  = oldProject.CustomerAddress;
                newProject.CustomerCode     = oldProject.CustomerCode;
                newProject.CustomerInfo     = oldProject.CustomerInfo;
                newProject.CustomerInfoName = oldProject.CustomerInfoName;
                //newProject.DeviceRoot = oldProject.DeviceRoot;
                newProject.ExaminePerformance   = oldProject.ExaminePerformance;
                newProject.FlowInfo             = oldProject.FlowInfo;
                newProject.FlowPhase            = oldProject.FlowPhase;
                newProject.Investment           = oldProject.Investment;
                newProject.IsInvestigate        = oldProject.IsInvestigate;
                newProject.IsInvestigateDate    = oldProject.IsInvestigateDate;
                newProject.IsInvestigateProject = oldProject.IsInvestigateProject;
                //newProject.LaborRoot = oldProject.LaborRoot;
                //newProject.Mode = oldProject.Mode;
                newProject.ModeCode     = "EPCAfterSale";
                newProject.ModifyDate   = oldProject.ModifyDate;
                newProject.ModifyUser   = oldProject.ModifyUser;
                newProject.ModifyUserID = oldProject.ModifyUserID;
                entity.Set <S_I_Engineering>().Add(newProject);
                entity.SaveChanges();
            }
            return(newid);
        }