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("")); }
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("")); }
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 }