Example #1
0
        public JsonResult RevertWorkHourList(string SelectedData)
        {
            Action action = () =>
            {
                var list   = JsonHelper.ToList(SelectedData);
                var fields = new string[] { "Step1Date", "Step1Day", "Step1Value", "Step1User", "Step1UserName",
                                            "Step2Date", "Step2Day", "Step2Value", "Step2User", "Step2UserName",
                                            "ConfirmDate", "ConfirmDay", "ConfirmValue", "ConfirmUser", "ConfirmUserName" };
                var       setStr = string.Join("= null,", fields) + "= null,IsStep1='0',IsStep2='0',IsConfirm='0',State='Create'";
                SQLHelper hrDB   = SQLHelper.CreateSqlHelper(ConnEnum.HR);
                foreach (var item in list)
                {
                    var id = item.GetValue("ID");
                    var sb = new StringBuilder();
                    sb.AppendLine(string.Format("update S_W_UserWorkHour set {0} where ID = '{1}'", setStr, id));

                    var detailDic = new Dictionary <string, object>();
                    detailDic.SetValue("ID", FormulaHelper.CreateGuid());
                    detailDic.SetValue("S_W_UserWorkHourID", id);
                    detailDic.SetValue("SortIndex", 0);
                    detailDic.SetValue("ApproveValue", 0);
                    detailDic.SetValue("ApproveDay", 0);
                    detailDic.SetValue("ApproveDate", System.DateTime.Now);
                    detailDic.SetValue("ApproveStep", "Revert");
                    detailDic.SetValue("ApproveUser", this.CurrentUserInfo.UserID);
                    detailDic.SetValue("ApproveUserName", this.CurrentUserInfo.UserName);
                    sb.AppendLine(detailDic.CreateInsertSql(hrDB, "S_W_UserWorkHour_ApproveDetail", detailDic.GetValue("ID")));

                    var sql = sb.ToString();
                    hrDB.ExecuteNonQuery(sql);

                    S_W_UserWorkHour workHourInfo = new S_W_UserWorkHour();
                    UpdateEntity <S_W_UserWorkHour>(workHourInfo, item);
                    workHourInfo.RevertCost();
                }
            };

            if (System.Configuration.ConfigurationManager.AppSettings["UseMsdtc"].ToLower() == "true")
            {
                using (TransactionScope ts = new TransactionScope())
                {
                    action();
                    ts.Complete();
                }
            }
            else
            {
                action();
            }

            return(Json(""));
        }
Example #2
0
        public JsonResult ApproveWorkHourList(string SelectedData, string State)
        {
            Action action = () =>
            {
                if (string.IsNullOrEmpty(State))
                {
                    throw new Formula.Exceptions.BusinessException("未传入State,无法操作");
                }
                var       list      = JsonHelper.ToList(SelectedData);
                var       fo        = new WorkHourFO();
                SQLHelper hrDB      = SQLHelper.CreateSqlHelper(ConnEnum.Comprehensive);
                var       enumDef   = EnumBaseHelper.GetEnumDef("Comprehensive.WorkHourState");
                var       enumItems = new List <EnumItemInfo>();
                if (enumDef != null)
                {
                    enumItems = enumDef.EnumItem.ToList();
                }
                var _state = State;
                if (State == "Locked")
                {
                    _state = "Confirm";
                }
                var fieldDt = GetFieldTable(hrDB, "S_W_UserWorkHour");
                foreach (var item in list)
                {
                    var itemStateLevel = 0d;
                    var itemState      = item.GetValue("State");
                    if (enumItems.Any(a => a.Code == itemState))
                    {
                        itemStateLevel = enumItems.FirstOrDefault(a => a.Code == itemState).SortIndex.Value;
                    }
                    var fnStateLevel = 0d;
                    if (enumItems.Any(a => a.Code == State))
                    {
                        fnStateLevel = enumItems.FirstOrDefault(a => a.Code == State).SortIndex.Value;
                    }
                    if (fnStateLevel < itemStateLevel)
                    {
                        throw new Formula.Exceptions.BusinessException("已经【" + enumItems.FirstOrDefault(a => a.Code == itemState).Name
                                                                       + "】的数据不能再【" + enumItems.FirstOrDefault(a => a.Code == State).Name + "】,无法保存");
                    }

                    if (!item.ContainsKey(_state + "Value"))
                    {
                        throw new Formula.Exceptions.BusinessException("列表中不包含【" + _state + "Value】字段,无法保存");
                    }
                    if (!item.ContainsKey(_state + "Day"))
                    {
                        throw new Formula.Exceptions.BusinessException("列表中不包含【" + _state + "Day】字段,无法保存");
                    }
                    if (!item.ContainsKey(_state + "User"))
                    {
                        throw new Formula.Exceptions.BusinessException("列表中不包含【" + _state + "User】字段,无法保存");
                    }
                    if (!item.ContainsKey(_state + "Date"))
                    {
                        throw new Formula.Exceptions.BusinessException("列表中不包含【" + _state + "Date】字段,无法保存");
                    }
                    if (!item.ContainsKey("Is" + _state))
                    {
                        throw new Formula.Exceptions.BusinessException("列表中不包含【Is" + _state + "】字段,无法保存");
                    }
                    var id = item.GetValue("ID");

                    item.SetValue(_state + "User", this.CurrentUserInfo.UserID);
                    item.SetValue(_state + "UserName", this.CurrentUserInfo.UserName);
                    item.SetValue(_state + "Date", System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
                    item.SetValue("Is" + _state, "1");
                    item.SetValue("State", State);

                    decimal?workHourValue = null;
                    if (!string.IsNullOrEmpty(item.GetValue("WorkHourValue")))
                    {
                        workHourValue = decimal.Parse(item.GetValue("WorkHourValue"));
                    }
                    decimal?approveValue = null;
                    if (!string.IsNullOrEmpty(item.GetValue(_state + "Value")))
                    {
                        approveValue = decimal.Parse(item.GetValue(_state + "Value"));
                    }
                    if (approveValue == null)
                    {
                        approveValue = workHourValue;//审批工时为空时,默认审批工时=填报工时;
                    }
                    item.SetValue(_state + "Value", approveValue);
                    decimal?approveDay = fo.ConvertHourToDay(approveValue, workHourType, NormalHoursMax);
                    item.SetValue(_state + "Day", approveDay);

                    var sb = new StringBuilder();
                    sb.AppendLine(CreateUpdateSql(item, hrDB, "S_W_UserWorkHour", id, fieldDt));

                    var detailDic = new Dictionary <string, object>();
                    detailDic.SetValue("ID", FormulaHelper.CreateGuid());
                    detailDic.SetValue("S_W_UserWorkHourID", id);
                    detailDic.SetValue("SortIndex", 0);
                    detailDic.SetValue("ApproveValue", approveValue);
                    detailDic.SetValue("ApproveDay", approveDay);
                    detailDic.SetValue("ApproveDate", item.GetValue(_state + "Date"));
                    detailDic.SetValue("ApproveStep", State);
                    detailDic.SetValue("ApproveUser", this.CurrentUserInfo.UserID);
                    detailDic.SetValue("ApproveUserName", this.CurrentUserInfo.UserName);
                    sb.AppendLine(detailDic.CreateInsertSql(hrDB, "S_W_UserWorkHour_ApproveDetail", detailDic.GetValue("ID")));

                    var sql = sb.ToString();
                    hrDB.ExecuteNonQuery(sql);

                    if (State == "Locked")
                    {
                        #region 工时审批通过后写入成本数据
                        S_W_UserWorkHour workHourInfo = new S_W_UserWorkHour();
                        UpdateEntity <S_W_UserWorkHour>(workHourInfo, item);
                        workHourInfo.ImportToCost();
                        #endregion
                    }
                }
            };

            if (System.Configuration.ConfigurationManager.AppSettings["UseMsdtc"].ToLower() == "true")
            {
                using (TransactionScope ts = new TransactionScope())
                {
                    action();
                    ts.Complete();
                }
            }
            else
            {
                action();
            }

            return(Json(""));
        }
Example #3
0
        public void SaveWorkHour(List <Dictionary <string, object> > list, DateTime date, UserInfo user, string workHourSaveType, decimal maxNormaValue = 8)
        {
            var startDate = DateTimeHelper.GetWeekFirstDayMon(date);
            var endDate   = DateTimeHelper.GetWeekLastDaySun(date);
            var entities  = Formula.FormulaHelper.GetEntities <HREntities>();
            var employee  = entities.Set <T_Employee>().FirstOrDefault(d => d.UserID == user.UserID);
            var hrdb      = SQLHelper.CreateSqlHelper(ConnEnum.HR);

            var delStr = "";

            for (DateTime i = startDate; i <= endDate; i = i.AddDays(1))
            {
                delStr += string.Format(@"
delete S_W_UserWorkHour where WorkHourDate = '{0}' and State = 'Create' and UserID = '{1}'", i, user.UserID);
            }
            hrdb.ExecuteNonQuery(delStr);

            #region 保存工时数据
            foreach (var item in list)
            {
                var projectID      = item.GetValue("ProjectID");
                var SubProjectCode = item.GetValue("SubProjectCode");
                var MajorCode      = item.GetValue("MajorCode");
                var WorkContent    = item.GetValue("WorkContent");
                for (DateTime i = startDate; i <= endDate; i = i.AddDays(1))
                {
                    var normalValueField    = i.ToString("yyyy-MM-dd") + "_NormalValue";
                    var normalValue         = String.IsNullOrEmpty(item.GetValue(normalValueField)) ? 0M : Convert.ToDecimal(item.GetValue(normalValueField));
                    var addtionalValueField = i.ToString("yyyy-MM-dd") + "_AdditionalValue";
                    var addtionalValue      = String.IsNullOrEmpty(item.GetValue(addtionalValueField)) ? 0M : Convert.ToDecimal(item.GetValue(addtionalValueField));

                    if ((normalValue == 0 && addtionalValue == 0))
                    {
                        continue;
                    }
                    var sql = string.Format(
                        "select top 1 ID from S_W_UserWorkHour where ProjectID='{0}' and SubProjectCode='{1}' and MajorCode='{2}' and WorkContent='{3}' and UserID='{4}' and WorkHourDate='{5}'",
                        projectID, SubProjectCode, MajorCode, WorkContent, user.UserID, i);
                    var dataTable = hrdb.ExecuteDataTable(sql);
                    if (dataTable.Rows.Count == 0)
                    {
                        var userWorkHour = new S_W_UserWorkHour();
                        userWorkHour.ID           = FormulaHelper.CreateGuid();
                        userWorkHour.UserID       = user.UserID;
                        userWorkHour.UserName     = user.UserName;
                        userWorkHour.UserDeptID   = user.UserOrgID;
                        userWorkHour.UserDeptName = user.UserOrgName;
                        userWorkHour.WorkHourDate = i;
                        userWorkHour.UserCode     = user.Code;
                        if (employee != null)
                        {
                            userWorkHour.EmployeeID = employee.ID;
                        }
                        userWorkHour.State                  = "Create";
                        userWorkHour.IsConfirm              = "0";
                        userWorkHour.IsStep1                = "0";
                        userWorkHour.IsStep2                = "0";
                        userWorkHour.CreateUser             = user.UserName;
                        userWorkHour.CreateUserID           = user.UserID;
                        userWorkHour.SupplementID           = "";
                        userWorkHour.BelongMonth            = i.Month;
                        userWorkHour.BelongYear             = i.Year;
                        userWorkHour.BelongQuarter          = ((i.Month - 1) / 3) + 1;
                        userWorkHour.ProjectChargerUser     = item.GetValue("ProjectChargerUser");
                        userWorkHour.ProjectChargerUserName = item.GetValue("ProjectChargerUserName");
                        userWorkHour.ProjectCode            = item.GetValue("ProjectCode");
                        userWorkHour.ProjectDept            = item.GetValue("ProjectDept");
                        userWorkHour.ProjectDeptName        = item.GetValue("ProjectDeptName");
                        userWorkHour.ProjectID              = projectID;
                        userWorkHour.ProjectName            = item.GetValue("ProjectName");
                        userWorkHour.SubProjectCode         = item.GetValue("SubProjectCode");
                        userWorkHour.SubProjectName         = item.GetValue("SubProjectName");
                        userWorkHour.TaskWorkCode           = item.GetValue("TaskWorkCode");
                        userWorkHour.TaskWorkName           = item.GetValue("TaskWorkName");
                        userWorkHour.WorkContent            = item.GetValue("WorkContent");
                        userWorkHour.MajorCode              = item.GetValue("MajorCode");
                        userWorkHour.MajorName              = item.GetValue("MajorName");
                        userWorkHour.WorkHourType           = item.GetValue("WorkHourType");

                        userWorkHour.NormalValue     = normalValue;
                        userWorkHour.AdditionalValue = addtionalValue;
                        userWorkHour.WorkHourValue   = normalValue + addtionalValue;
                        userWorkHour.WorkHourDay     = ConvertHourToDay(userWorkHour.WorkHourValue, workHourSaveType, maxNormaValue);

                        userWorkHour.ToDic().InsertDB(hrdb, "S_W_UserWorkHour", userWorkHour.ID);
                    }
                    else
                    {
                        var id  = dataTable.Rows[0]["ID"].ToString();
                        var dic = new Dictionary <string, object>();
                        dic.SetValue("NormalValue", normalValue);
                        dic.SetValue("AdditionalValue", addtionalValue);
                        dic.SetValue("WorkHourValue", normalValue + addtionalValue);
                        dic.SetValue("WorkHourDay", ConvertHourToDay(normalValue + addtionalValue, workHourSaveType, maxNormaValue));
                        dic.UpdateDB(hrdb, "S_W_UserWorkHour", id);
                    }
                }
            }
            #endregion
        }