protected void SaveClose_Click(object sender, EventArgs e) { string udfValue = Request.Form[udf.id.ToString()]; if (!string.IsNullOrWhiteSpace(udfValue) && !string.IsNullOrEmpty(udfValue)) { } else { udfValue = null; } DicEnum.OPER_LOG_OBJ_CATE operCate = DicEnum.OPER_LOG_OBJ_CATE.PROJECT_EXTENSION_INFORMATION; switch (cate) { case DicEnum.UDF_CATE.PROJECTS: operCate = DicEnum.OPER_LOG_OBJ_CATE.PROJECT_EXTENSION_INFORMATION; break; default: break; } var result = new UserDefinedFieldsBLL().EditUdf(cate, objectId, udf.id, udfValue, Request.Form["description"], LoginUserId, operCate); if (result) { ClientScript.RegisterStartupScript(this.GetType(), "提示信息", "<script>alert('保存成功');window.close();self.opener.location.reload();</script>"); } else { ClientScript.RegisterStartupScript(this.GetType(), "提示信息", "<script>alert('保存失败');window.close();self.opener.location.reload();</script>"); } }
/// <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="cate"></param> /// <param name="fields"></param> /// <param name="id"></param> /// <param name="vals"></param> /// <param name="user"></param> /// <param name="oper_log_cate"></param> /// <returns></returns> public bool UpdateUdfValue(DicEnum.UDF_CATE cate, List <UserDefinedFieldDto> fields, long id, List <UserDefinedFieldValue> vals, UserInfoDto user, DicEnum.OPER_LOG_OBJ_CATE oper_log_cate) { if (vals == null || vals.Count == 0) { return(true); } var oldVal = GetUdfValue(cate, id, fields); Dictionary <string, string> dict = new Dictionary <string, string>(); StringBuilder updateSb = new StringBuilder(); foreach (var val in vals) { var oldv = oldVal.Find(f => f.id == val.id); if (oldv != null && object.Equals(oldv.value, val.value)) { continue; } var fld = fields.Find(f => f.id == val.id); if (val.value == null) { updateSb.Append(fld.col_name).Append("=null,"); // 组合sql更新语句 } else { string v = val.value.ToString().Replace("'", "''"); // 转义单引号 updateSb.Append(fld.col_name).Append("='").Append(v).Append("',"); // 组合sql更新语句 } dict.Add(fld.col_name, (oldv == null?"":oldv.value) + "→" + val.value); // 生成操作日志 } if (dict.Count == 0) // 无修改 { return(true); } string updateStr = updateSb.Remove(updateSb.Length - 1, 1).ToString(); string sql = $"UPDATE {GetTableName(cate)} SET {updateStr} WHERE parent_id={id}"; if (new sys_udf_field_dal().ExecuteSQL(sql) <= 0) { return(false); } sys_oper_log log = new sys_oper_log() { user_cate = "用户", user_id = user.id, name = user.name, phone = user.mobile == null ? "" : user.mobile, oper_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now), oper_object_cate_id = (int)oper_log_cate, oper_object_id = id, // 操作对象id oper_type_id = (int)DicEnum.OPER_LOG_TYPE.UPDATE, oper_description = new Tools.Serialize().SerializeJson(dict), remark = "修改自定义字段值" }; // 创建日志 new sys_oper_log_dal().Insert(log); // 插入日志 return(true); }
/// <summary> /// 保存记录中的自定义字段值,并记录日志 /// </summary> /// <param name="cate">客户、联系人等类别</param> /// <param name="userId">操作用户id</param> /// <param name="objId">记录的id</param> /// <param name="fields">自定义字段信息</param> /// <param name="value">自定义字段值</param> /// <param name="oper_log_cate"></param> /// <returns></returns> public bool SaveUdfValue(DicEnum.UDF_CATE cate, long userId, long objId, List <UserDefinedFieldDto> fields, List <UserDefinedFieldValue> value, DicEnum.OPER_LOG_OBJ_CATE oper_log_cate) { // 无自定义字段信息 if (value == null) { value = new List <UserDefinedFieldValue>(); } StringBuilder select = new StringBuilder(); StringBuilder values = new StringBuilder(); Dictionary <string, object> dict = new Dictionary <string, object>(); foreach (var val in value) { var field = fields.FindAll(s => s.id == val.id); if (field == null || field.Count == 0) { continue; } string fieldName = field.First().col_name; if (val.value != null) { select.Append(",").Append(fieldName); string v = val.value.ToString().Replace("'", "''"); // 转义单引号 values.Append(",'").Append(v).Append("'"); dict.Add(fieldName, val.value); } } string table = GetTableName(cate); var dal = new sys_udf_field_dal(); string insert = $"INSERT INTO {table} (id,parent_id{select.ToString()}) VALUES ({dal.GetNextIdCom()},{objId}{values.ToString()})"; try { int rslt = dal.ExecuteSQL(insert); if (rslt <= 0) { return(false); } var user = new sys_resource_dal().FindById(userId); sys_oper_log log = new sys_oper_log() { user_cate = "用户", user_id = user.id, name = user.name, phone = user.mobile_phone == null ? "" : user.mobile_phone, oper_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now), oper_object_cate_id = (int)oper_log_cate, oper_object_id = objId, // 操作对象id oper_type_id = (int)DicEnum.OPER_LOG_TYPE.ADD, oper_description = new Tools.Serialize().SerializeJson(dict), remark = "新增自定义字段值" }; // 创建日志 new sys_oper_log_dal().Insert(log); // 插入日志 } catch { return(false); // TODO: 异常处理 } return(true); }
/// <summary> /// 插入删除日志 /// </summary> /// <typeparam name="T">日志对象类</typeparam> /// <param name="entity">操作对象</param> /// <param name="objId">操作对象id</param> /// <param name="userId">userid</param> /// <param name="cate">操作对象种类</param> /// <param name="remark">备注</param> public static void OperLogDelete <T>(T entity, long objId, long userId, DicEnum.OPER_LOG_OBJ_CATE cate, string remark) where T : class { string desc = dal.AddValue <T>(entity); OperLog(objId, userId, DicEnum.OPER_LOG_TYPE.DELETE, cate, desc, remark); }
/// <summary> /// 插入更新日志 /// </summary> /// <param name="desc">更新对象的修改内容</param> /// <param name="objId">操作对象id</param> /// <param name="userId">userid</param> /// <param name="cate">操作对象种类</param> /// <param name="remark">备注</param> public static void OperLogUpdate(string desc, long objId, long userId, DicEnum.OPER_LOG_OBJ_CATE cate, string remark) { OperLog(objId, userId, DicEnum.OPER_LOG_TYPE.UPDATE, cate, desc, remark); }
/// <summary> /// 废弃 /// </summary> /// <typeparam name="T">日志对象类</typeparam> /// <param name="entity">操作对象</param> /// <param name="entityOld">操作对象旧值</param> /// <param name="objId">操作对象id</param> /// <param name="userId">userid</param> /// <param name="cate">操作对象种类</param> /// <param name="remark">备注</param> public static void OperLogUpdate <T>(T entity, T entityOld, long objId, long userId, DicEnum.OPER_LOG_OBJ_CATE cate, string remark) where T : class { string desc = dal.CompareValue <T>(entityOld, entity); OperLog(objId, userId, DicEnum.OPER_LOG_TYPE.UPDATE, cate, desc, remark); }
/// <summary> /// 插入日志 /// </summary> /// <param name="objId">操作对象id</param> /// <param name="userId">userid</param> /// <param name="type">操作类型</param> /// <param name="cate">操作对象种类</param> /// <param name="operDesc">操作内容</param> /// <param name="remark">备注</param> public static void OperLog(long objId, long userId, DicEnum.OPER_LOG_TYPE type, DicEnum.OPER_LOG_OBJ_CATE cate, string operDesc, string remark) { sys_oper_log log = new sys_oper_log(); log.user_id = userId; log.user_cate = "用户"; log.name = ""; log.phone = ""; log.oper_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); log.oper_object_cate_id = (int)cate; log.oper_object_id = objId;// 操作对象id log.oper_type_id = (int)type; log.oper_description = operDesc; log.remark = remark; dal.Insert(log); }