/// <summary> /// 修改自定义字段某个值 /// </summary> public bool EditUdf(DicEnum.UDF_CATE cate, long objectId, int udfId, string value, string desc, long user_id, DicEnum.OPER_LOG_OBJ_CATE operType) { // 更新自定义字段值 var udfList = GetUdf(cate); var udfValues = GetUdfValue(cate, objectId, udfList); var user = new UserResourceBLL().GetSysUserSingle(user_id); int index = udfValues.FindIndex(f => f.id == udfId); object oldVal = udfValues[index].value; udfValues[index].value = value; UpdateUdfValue(cate, udfList, objectId, udfValues, new UserInfoDto { id = user_id, name = user.name }, operType); var colName = udfList.Find(f => f.id == udfId).name; bool result = true; switch (cate) { case DicEnum.UDF_CATE.PROJECTS: result = new ProjectBLL().AddUdfActivity(objectId, colName, oldVal, value, desc, user_id); break; default: break; } return(result); }
/// <summary> /// 工时表审批 /// </summary> /// <param name="ids">,号分割的多个工时表id</param> /// <param name="userId"></param> /// <returns></returns> public int ApproveWorkEntryReport(string ids, long userId) { int appCnt = 0; var rptDal = new sdk_work_entry_report_dal(); var logDal = new tst_work_entry_report_log_dal(); var reports = rptDal.FindListBySql($"select * from sdk_work_entry_report where id in({ids}) and status_id={(int)DicEnum.WORK_ENTRY_REPORT_STATUS.WAITING_FOR_APPROVAL} and delete_time=0"); if (reports == null || reports.Count == 0) { return(appCnt); } var user = new UserResourceBLL().GetResourceById(userId); foreach (var report in reports) { // 判断用户是否在当前可以审批工时表 int tier = GetWorkEntryReportCurrentApproveTier(report.id); if (tier == 3) { continue; } var aprvResList = GetApproverList((long)report.resource_id); tier++; if (user.security_level_id == 1 || aprvResList.Exists(_ => _.tier == tier && _.approver_resource_id == userId)) // 用户是管理员或用户可以审批下一级 { tst_work_entry_report_log log = new tst_work_entry_report_log(); log.id = logDal.GetNextIdCom(); log.work_entry_report_id = report.id; log.oper_user_id = userId; log.oper_type_id = (int)DicEnum.WORK_ENTRY_REPORT_OPER_TYPE.APPROVAL; log.oper_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); log.tier = tier; logDal.Insert(log); OperLogBLL.OperLogAdd <tst_work_entry_report_log>(log, log.id, userId, DicEnum.OPER_LOG_OBJ_CATE.WORK_ENTRY_REPORT_LOG, "工时表审批"); appCnt++; if (aprvResList.Count == 0 || aprvResList.Max(_ => _.tier) == tier) // 是最后一级审批人 { var rptOld = rptDal.FindById(report.id); report.status_id = (int)DicEnum.WORK_ENTRY_REPORT_STATUS.PAYMENT_BEEN_APPROVED; report.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); report.update_user_id = userId; report.approve_time = report.update_time; report.approve_user_id = userId; rptDal.Update(report); OperLogBLL.OperLogUpdate(OperLogBLL.CompareValue <sdk_work_entry_report>(rptOld, report), report.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SDK_WORK_RECORD, "工时表审批"); } } } return(appCnt); }