/// <summary> /// 增加自定义字段 /// </summary> /// <param name="cate"></param> /// <param name="udf"></param> /// <returns></returns> public bool AddUdf(DicEnum.UDF_CATE cate, UserDefinedFieldDto udf, long userId) { string table = GetTableName(cate); var dal = new sys_udf_field_dal(); var field = new sys_udf_field(); field.id = dal.GetNextIdCom(); field.col_name = GetNextColName(); field.col_comment = udf.name; field.description = udf.description; field.cate_id = udf.cate; field.data_type_id = udf.data_type; field.default_value = udf.default_value; field.is_protected = udf.is_protected; field.is_required = udf.required; field.is_encrypted = udf.is_encrypted; field.is_visible_in_portal = udf.is_visible_in_portal; field.crm_to_project_udf_id = udf.crm_to_project; field.sort_order = udf.sort_order; field.is_active = udf.is_active; field.display_format_id = udf.display_format; field.decimal_length = udf.decimal_length; field.create_user_id = userId; field.update_user_id = userId; field.create_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); field.update_time = field.create_time; dal.Insert(field); OperLogBLL.OperLogAdd <sys_udf_field>(field, field.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SYS_UDF_FILED, "新增自定义字段"); if (udf.data_type == (int)DicEnum.UDF_DATA_TYPE.LIST) // 字段为列表类型,保存列表值 { if (udf.list != null && udf.list.Count > 0) { var listDal = new sys_udf_list_dal(); foreach (var listVal in udf.list) { sys_udf_list val = new sys_udf_list(); val.id = listDal.GetNextIdCom(); val.is_default = listVal.is_default; val.name = listVal.name; val.sort_order = listVal.sort_order; val.udf_field_id = field.id; val.status_id = 0; val.create_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); val.update_time = val.create_time; val.create_user_id = field.create_user_id; val.update_user_id = val.create_user_id; listDal.Insert(val); OperLogBLL.OperLogAdd <sys_udf_list>(val, val.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SYS_UDF_FILED_LIST, "新增自定义字段值"); } } } string sql = $"alter table {table} add {field.col_name} varchar("; if (field.data_type_id == (int)DicEnum.UDF_DATA_TYPE.SINGLE_TEXT) { sql += "200)"; } else if (field.data_type_id == (int)DicEnum.UDF_DATA_TYPE.MUILTI_TEXT) { sql += "2000)"; } else { sql += "20)"; } dal.ExecuteSQL(sql); if (field.cate_id == (int)DicEnum.UDF_CATE.TICKETS) { table = GetTableName(DicEnum.UDF_CATE.FORM_RECTICKET); sql = $"alter table {table} add {field.col_name} varchar("; if (field.data_type_id == (int)DicEnum.UDF_DATA_TYPE.SINGLE_TEXT) { sql += "200)"; } else if (field.data_type_id == (int)DicEnum.UDF_DATA_TYPE.MUILTI_TEXT) { sql += "2000)"; } else { sql += "20)"; } dal.ExecuteSQL(sql); table = GetTableName(DicEnum.UDF_CATE.FORM_TICKET); sql = $"alter table {table} add {field.col_name} varchar("; if (field.data_type_id == (int)DicEnum.UDF_DATA_TYPE.SINGLE_TEXT) { sql += "200)"; } else if (field.data_type_id == (int)DicEnum.UDF_DATA_TYPE.MUILTI_TEXT) { sql += "2000)"; } else { sql += "20)"; } dal.ExecuteSQL(sql); } return(true); }
protected void Page_Load(object sender, EventArgs e) { long id; udfCates = new GeneralBLL().GetDicValues(GeneralTableEnum.UDF_FIELD_CATE); udfTypes = new GeneralBLL().GetDicValues(GeneralTableEnum.UDF_FIELD_TYPE); if (!IsPostBack) { if (long.TryParse(Request.QueryString["id"], out id)) { udfField = bll.GetUdfInfo(id); if (udfField == null) { Response.Write("<script>alert('参数错误!'); </script>"); Response.End(); return; } if (udfField.data_type == (int)DicEnum.UDF_DATA_TYPE.SINGLE_TEXT) { udfTypeOpts = "<option value='" + (int)DicEnum.UDF_DATA_TYPE.SINGLE_TEXT + "' selected='selected' >单行文本</option>"; udfTypeOpts += "<option value='" + (int)DicEnum.UDF_DATA_TYPE.MUILTI_TEXT + "' >多行文本</option>"; } else if (udfField.data_type == (int)DicEnum.UDF_DATA_TYPE.MUILTI_TEXT) { udfTypeOpts = "<option value='" + (int)DicEnum.UDF_DATA_TYPE.SINGLE_TEXT + "' >单行文本</option>"; udfTypeOpts += "<option value='" + (int)DicEnum.UDF_DATA_TYPE.MUILTI_TEXT + "' selected='selected' >多行文本</option>"; } else { var find = udfTypes.Find(_ => _.val.Equals(udfField.data_type.ToString())); udfTypeOpts = "<option value='" + (int)DicEnum.UDF_DATA_TYPE.SINGLE_TEXT + "' >单行文本</option>"; udfTypeOpts += "<option value='" + (int)DicEnum.UDF_DATA_TYPE.MUILTI_TEXT + "' >多行文本</option>"; udfTypeOpts += "<option value='" + udfField.data_type + "' selected='selected' >" + find.show + "</option>"; } } } else { UserDefinedFieldDto dto = new UserDefinedFieldDto(); dto.list = new List <sys_udf_list>(); if (long.TryParse(Request.QueryString["id"], out id)) { udfField = bll.GetUdfInfo(id); dto.id = (int)id; dto.cate = udfField.cate; foreach (var udfval in udfField.list) { if (!string.IsNullOrEmpty(Request.QueryString["listValShowe" + udfval.id])) { if (Request.Form["dftid"] != udfval.id.ToString()) { udfval.is_default = 0; } dto.list.Add(udfval); } } } else { dto.cate = int.Parse(Request.Form["cate_id"]); } dto.is_active = (sbyte)(GetCheckBoxValue("active") ? 1 : 0); dto.required = (sbyte)(GetCheckBoxValue("require") ? 1 : 0); dto.is_protected = (sbyte)(GetCheckBoxValue("protect") ? 1 : 0); dto.is_encrypted = (sbyte)(GetCheckBoxValue("encrypted") ? 1 : 0); dto.is_visible_in_portal = (sbyte)(GetCheckBoxValue("showinportal") ? 1 : 0); dto.name = Request.Form["col_comment"]; dto.description = Request.Form["description"]; dto.default_value = Request.Form["default_value"]; dto.data_type = int.Parse(Request.Form["data_type_id"]); dto.sort_order = Request.Form["sort_value"]; if (!string.IsNullOrEmpty(Request.Form["crm_to_project_udf_id"])) { dto.crm_to_project = int.Parse(Request.Form["crm_to_project_udf_id"]); } var ids = Request.Form["crm_to_project_udf_id"]; if (!string.IsNullOrEmpty(ids)) { ids = ids.Remove(ids.Length - 1, 1); var idstr = ids.Split(','); foreach (var valid in idstr) { var ufv = new sys_udf_list(); ufv.name = Request.Form["listValShow" + valid]; if (Request.Form["dftid"] == valid) { ufv.is_default = 1; } if (!string.IsNullOrEmpty(Request.Form["listValOrder" + valid])) { ufv.sort_order = decimal.Parse(Request.Form["listValOrder" + valid]); } dto.list.Add(ufv); } } bll.EditUdf((DicEnum.UDF_CATE)dto.cate, dto, LoginUserId); if (Request.Form["act"] == "new") { Response.Write("<script>alert('保存自定义字段成功');window.location.href='UserDefinedField.aspx';self.opener.location.reload();</script>"); } else { Response.Write("<script>alert('保存自定义字段成功');window.close();self.opener.location.reload();</script>"); } } }
/// <summary> /// 新增编辑自定义字段 /// </summary> /// <param name="cate"></param> /// <param name="udf"></param> /// <param name="userId"></param> /// <returns></returns> public bool EditUdf(DicEnum.UDF_CATE cate, UserDefinedFieldDto udf, long userId) { if (udf.id == 0) { return(AddUdf(cate, udf, userId)); } var dal = new sys_udf_field_dal(); var field = dal.FindNoDeleteById(udf.id); if (field == null) { return(false); } field.col_comment = udf.name; field.description = udf.description; field.data_type_id = udf.data_type; field.default_value = udf.default_value; field.is_protected = udf.is_protected; field.is_required = udf.required; field.is_encrypted = udf.is_encrypted; field.is_visible_in_portal = udf.is_visible_in_portal; field.crm_to_project_udf_id = udf.crm_to_project; field.sort_order = udf.sort_order; field.is_active = udf.is_active; field.display_format_id = udf.display_format; field.decimal_length = udf.decimal_length; field.update_user_id = userId; field.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); var fieldOld = dal.FindById(field.id); var desc = OperLogBLL.CompareValue <sys_udf_field>(fieldOld, field); if (!string.IsNullOrEmpty(desc)) { dal.Update(field); OperLogBLL.OperLogUpdate(desc, field.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SYS_UDF_FILED, "编辑自定义字段"); } var listDal = new sys_udf_list_dal(); var list = dal.FindListBySql <sys_udf_list>($"select * from sys_udf_list where udf_field_id={field.id} and status_id=0 and delete_time=0"); //var find=udf.list.Find(_=>_.is_default==1) foreach (var ufv in udf.list) { var find = list.Find(_ => _.id == ufv.id); if (find == null) { sys_udf_list val = new sys_udf_list(); val.id = listDal.GetNextIdCom(); val.is_default = ufv.is_default; val.name = ufv.name; val.sort_order = ufv.sort_order; val.udf_field_id = udf.id; val.status_id = 0; val.create_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); val.update_time = val.create_time; val.create_user_id = field.create_user_id; val.update_user_id = val.create_user_id; listDal.Insert(val); OperLogBLL.OperLogAdd <sys_udf_list>(val, val.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SYS_UDF_FILED_LIST, "新增自定义字段值"); } else { if (find.is_default != ufv.is_default) { find.is_default = ufv.is_default; find.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); find.update_user_id = userId; var old = listDal.FindById(find.id); listDal.Update(find); OperLogBLL.OperLogUpdate(OperLogBLL.CompareValue <sys_udf_list>(old, find), find.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SYS_UDF_FILED_LIST, "编辑自定义字段值"); } list.Remove(find); } } foreach (var ufv in list) { ufv.delete_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); ufv.delete_user_id = userId; listDal.Update(ufv); OperLogBLL.OperLogDelete <sys_udf_list>(ufv, ufv.id, userId, DicEnum.OPER_LOG_OBJ_CATE.SYS_UDF_FILED_LIST, "删除自定义字段值"); } return(true); }