public override BaseResult SetCoding(object entity, Type type = null, string setPropertyName = "dh") { BaseResult br = new BaseResult(); try { if (type == null) { type = entity.GetType(); } string tableName = GetTableName(type); long xh = 1; long id_master = CySoft.Frame.Common.TypeConvert.ToInt64((entity.GetValue("id_gys") ?? "0"), 0); Hashtable param = new Hashtable(); param.Add("coding", tableName); param.Add("lx", "2"); Ts_Codingrule codingrule = DAL.GetItem <Ts_Codingrule>(typeof(Ts_Codingrule), param); if (codingrule == null) { br.Success = false; br.Message.Clear(); br.Message.Add(string.Format("对象'{0}'没有编码规则!请联系管理员!", tableName)); br.Level = ErrorLevel.Warning; return(br); } string ymd = DAL.GetDbDateTime().ToString("yyyyMMdd"); param.Clear(); param.Add("billcode", tableName); param.Add("ymd", ymd); param.Add("id_master", id_master); if (DAL.GetCount(typeof(Ts_Max_Billcode), param) > 0) { Ts_Max_Billcode model = DAL.GetItem <Ts_Max_Billcode>(typeof(Ts_Max_Billcode), param); xh = model.max_dh.Value + codingrule.step.Value; param.Add("new_max_dh", xh); DAL.UpdatePart(typeof(Ts_Max_Billcode), param); } else { Ts_Max_Billcode newItem = new Ts_Max_Billcode(); newItem.billcode = tableName; newItem.ymd = ymd; newItem.max_dh = xh; newItem.id_master = id_master; DAL.Add(newItem); } int codeLength = GetCodeLength("", codingrule.length.Value, 1) + 10; string bm = string.Empty; if (!id_master.Equals(0)) { bm = id_master.ToString().Length > 7 ? id_master.ToString() : string.Format("{0:0000000}", id_master); codeLength += bm.Length; } string format = this.GetFormat(codingrule.prefix + ymd + bm, codeLength); string coding = String.Format(format, xh); entity.SetValue(setPropertyName, coding); } catch (Exception ex) { throw ex; } br.Success = true; return(br); }
public override BaseResult SetCoding(object entity, Type type = null, string setPropertyName = "bm") { BaseResult br = new BaseResult(); try { if (type == null) { type = entity.GetType(); } string tableName = GetTableName(type); bool flag_add = true; bool flag_hasxh = false; if (entity.HasProperty("xh")) { flag_hasxh = true; } long id = Convert.ToInt64(entity.GetValue("id")); long xh = 0; Hashtable param = new Hashtable(); param.Add("id", id); if (DAL.GetCount(type, param) > 0) { flag_add = false; if (flag_hasxh) { xh = Convert.ToInt64(entity.GetValue("xh")); } } string coding = entity.GetValue(setPropertyName).ToString().Trim(); param.Clear(); param.Add("coding", tableName); param.Add("lx", "1"); Ts_Codingrule codingrule = DAL.GetItem <Ts_Codingrule>(typeof(Ts_Codingrule), param); if (codingrule == null) { br.Success = false; br.Message.Clear(); br.Message.Add(string.Format("对象'{0}'没有编码规则!请联系管理员!", tableName)); br.Level = ErrorLevel.Warning; return(br); } int codeLength = GetCodeLength(codingrule.prefix, codingrule.length.Value, 1); if (!String.IsNullOrEmpty(coding)) { if (flag_add && !coding.StartsWith(codingrule.prefix)) { coding = codingrule.prefix + coding; } if (coding.Length != codeLength) { br.Success = false; br.Message.Clear(); br.Message.Add(string.Format("本级的编码长度为 '{0}' 位,当前编码 '{1}' 不满足系统定义!请检查后再试!", codeLength, coding)); br.Level = ErrorLevel.Warning; return(br); } param.Clear(); if (!flag_add) { param.Add("not_id", id); } if (flag_hasxh) { object id_gys = entity.GetValue("id_gys"); if (id_gys != null) { param.Add("id_gys", entity.GetValue("id_gys")); } } param.Add(setPropertyName, coding); if (DAL.GetCount(type, param) >= 1) { br.Success = false; br.Message.Clear(); br.Message.Add(string.Format("编码[{0}]已存在,请使用其他编码!", coding)); br.Level = ErrorLevel.Warning; return(br); } } else if (flag_add) { if (flag_hasxh) { xh = DAL.GetNextXh(type) - 1; xh += codingrule.step.Value; } else { param.Clear(); param.Add("table_name", tableName); if (DAL.GetCount(typeof(Ts_Number_Max), param) > 0) { param.Clear(); param.Add("table_name", tableName); Ts_Number_Max model = DAL.GetItem <Ts_Number_Max>(typeof(Ts_Number_Max), param); xh = model.xh_max.Value + codingrule.step.Value; } else { Ts_Number_Max newItem = new Ts_Number_Max(); newItem.table_name = tableName; newItem.xh_max = 1; DAL.Add(newItem); xh = 1; } } string format = this.GetFormat(codingrule.prefix, codeLength); param.Clear(); if (flag_hasxh) { object id_gys = entity.GetValue("id_gys"); if (id_gys != null) { param.Add("id_gys", entity.GetValue("id_gys")); } } while (true) { coding = String.Format(format, xh); if (coding.Length != codeLength) { br.Success = false; br.Message.Clear(); br.Message.Add("系统的编码资源已用完, 请检查编码规则或手工录入编码"); br.Level = ErrorLevel.Warning; return(br); } param[setPropertyName] = coding; if (DAL.GetCount(type, param) < 1) { break; } xh += codingrule.step.Value; } } else { //br.Success = false; //br.Message.Clear(); //br.Message.Add("编码不能为空!"); //br.Level = ErrorLevel.Warning; //return br; } entity.SetValue("id", id); if (flag_hasxh) { entity.SetValue("xh", xh); } else { param.Clear(); param.Add("table_name", tableName); param.Add("new_xh_max", xh); DAL.UpdatePart(typeof(Ts_Number_Max), param); } entity.SetValue(setPropertyName, coding); } catch (Exception ex) { throw ex; } br.Success = true; return(br); }
public override BaseResult SetCoding(object entity, Type type = null, string setPropertyName = "bm") { BaseResult br = new BaseResult(); try { if (type == null) { type = entity.GetType(); } string tableName = GetTableName(type); bool flag_add = true; int id = Convert.ToInt32(entity.GetValue("id")); int xh = 0; Hashtable param = new Hashtable(); param.Add("id", id); if (DAL.GetCount(type, param) > 0) { flag_add = false; xh = Convert.ToInt32(entity.GetValue("xh")); } string coding = entity.GetValue(setPropertyName).ToString().Trim(); int fatherId = Convert.ToInt32(entity.GetValue("fatherId")); string path = string.Empty; param.Clear(); param.Add("id", fatherId); object father = DAL.GetItem(type, param) ?? new { path = "/0" }; path = father.GetValue("path") + "/" + id; param.Clear(); param.Add("coding", tableName); param.Add("lx", "1"); Ts_Codingrule codingrule = DAL.GetItem <Ts_Codingrule>(typeof(Ts_Codingrule), param); if (codingrule == null) { br.Success = false; br.Message.Clear(); br.Message.Add(string.Format("对象'{0}'没有编码规则!请联系管理员!", tableName)); br.Level = ErrorLevel.Warning; return(br); } int curlevel = path.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Length - 1; if (curlevel > codingrule.level) { br.Success = false; br.Message.Clear(); br.Message.Add(string.Format("编码规则限制为'{0}'级!请检查后再试!", codingrule.level)); br.Level = ErrorLevel.Warning; return(br); } int codeLength = GetCodeLength(codingrule.prefix, codingrule.length.Value, curlevel); if (!string.IsNullOrEmpty(coding)) { string fatherBm = (father.GetValue(setPropertyName) ?? "").ToString(); if (String.IsNullOrEmpty(fatherBm)) { fatherBm = codingrule.prefix; } if (flag_add) { coding = fatherBm + coding; } if (coding.Length != codeLength) { br.Success = false; br.Message.Clear(); br.Message.Add(string.Format("本级的编码长度为 '{0}' 位,当前编码 '{1}' 不满足系统定义!请检查后再试!", codeLength, coding)); br.Level = ErrorLevel.Warning; return(br); } param.Clear(); if (!flag_add) { param.Add("not_id", id); } object id_gys = entity.GetValue("id_gys"); if (id_gys != null) { param.Add("id_gys", entity.GetValue("id_gys")); } param.Add(setPropertyName, coding); if (DAL.GetCount(type, param) >= 1) { br.Success = false; br.Message.Clear(); br.Message.Add(string.Format("编码[{0}]已存在,请使用其他编码!", coding)); br.Level = ErrorLevel.Warning; return(br); } } else if (flag_add) { xh = DAL.GetNextXh(type, param) - 1; xh += codingrule.step.Value; string fatherBm = (father.GetValue(setPropertyName) ?? "").ToString(); if (String.IsNullOrEmpty(fatherBm)) { fatherBm = codingrule.prefix; } string format = this.GetFormat(fatherBm, codeLength); param.Clear(); object id_gys = entity.GetValue("id_gys"); if (id_gys != null) { param.Add("id_gys", entity.GetValue("id_gys")); } while (true) { coding = String.Format(format, xh); if (coding.Length != codeLength) { br.Success = false; br.Message.Clear(); br.Message.Add("系统的编码资源已用完, 请检查编码规则或手工录入编码"); br.Level = ErrorLevel.Warning; return(br); } param[setPropertyName] = coding; if (DAL.GetCount(type, param) < 1) { break; } xh += codingrule.step.Value; } } else { //br.Success = false; //br.Message.Clear(); //br.Message.Add("编码不能为空!"); //br.Level = ErrorLevel.Warning; //return br; } if (entity.GetValue("xh") is Nullable <long> ) { entity.SetValue("xh", (long?)xh); } else if (entity.GetValue("xh") is Nullable <int> ) { entity.SetValue("xh", (int?)xh); } else if (entity.GetValue("xh") is long) { entity.SetValue("xh", (long)xh); } else { entity.SetValue("xh", xh); } entity.SetValue(setPropertyName, coding); entity.SetValue("path", path); } catch (Exception ex) { throw ex; } br.Success = true; return(br); }
public ActionResult Add(string obj) { BaseResult br = new BaseResult(); try { GoodsData model = JSON.Deserialize <GoodsData>(obj); if (string.IsNullOrEmpty(model.mc)) { br.Success = false; br.Data = "sp_mc"; br.Message.Add("商品名称不能为空"); return(Json(br)); } if (model.id_spfl == 0) { br.Success = false; br.Data = "id_spfl"; br.Message.Add("商品类别不能为空"); return(Json(br)); } if (string.IsNullOrEmpty(model.unit)) { br.Success = false; br.Data = "unit"; br.Message.Add("商品单位不能为空"); return(Json(br)); } if (model.sku == null || model.sku.Count.Equals(0)) { br.Success = false; br.Data = "sku"; br.Message.Add("必须至少有一条商品数据."); return(Json(br)); } if (!string.IsNullOrWhiteSpace(model.description) && model.description.Length > 2000) { br.Success = false; br.Data = "sku"; br.Message.Add("商品介绍应在2000字以内."); return(Json(br)); } var param = new Hashtable(); var id_gys = GetLoginInfo <long>("id_supplier"); param.Clear(); param.Add("id_gys", GetLoginInfo <long>("id_supplier")); br = BusinessFactory.CustomerType.GetAll(param); if (!br.Success || br.Data == null) { br.Success = false; br.Data = "cgs_level"; br.Message.Add("没有设置客户级别."); return(Json(br)); } var cgs_level = (List <Tb_Cgs_Level>)br.Data; if (cgs_level.Count < 1) { br.Success = false; br.Data = "cgs_level"; br.Message.Add("没有设置客户级别."); return(Json(br)); } var default_level = new Tb_Cgs_Level() { flag_sys = YesNoFlag.Yes, agio = decimal.Parse("100"), id_gys = id_gys }; default_level = cgs_level.Find(m => m.flag_sys.Equals(YesNoFlag.Yes)); if (default_level == null) { default_level = cgs_level[0]; } // 生成编码规则 param.Clear(); param.Add("coding", typeof(Tb_Sp_Sku).Name.ToLower()); br = BusinessFactory.CodingRule.Get(param); Ts_Codingrule Codingrule = br.Data as Ts_Codingrule; List <string> bmlist = new List <string>(); foreach (var item in model.sku) { if (bmlist.Contains(item.bm_Interface)) { br.Success = false; br.Data = "bm"; br.Message.Add("商品编码不能重复也不能为空"); return(Json(br)); } if (string.IsNullOrEmpty(item.bm)) { long xh_max = BusinessFactory.Utilety.GetNextXh(typeof(Tb_Sp_Sku)); if (xh_max.ToString().Length < Codingrule.length - Codingrule.prefix.Length) { item.bm = Codingrule.prefix + xh_max.ToString().PadLeft(Codingrule.length.Value - Codingrule.prefix.Length, '0'); } else { br.Success = false; br.Message.Add("商品编码已超过有效范围!请联系管理员!"); return(Json(br)); } } if (string.IsNullOrEmpty(item.bm_Interface)) { item.bm_Interface = item.bm; } bmlist.Add(item.bm_Interface); foreach (var p in item.sp_dj) { if (!p.id_cgs_level.HasValue || p.id_cgs_level.Value < 1) { p.id_cgs_level = default_level.id; } } foreach (var p in cgs_level) { if (!item.sp_dj.Exists(m => m.id_cgs_level.Equals(p.id))) { item.sp_dj.Add(new Tb_Sp_Dj() { id_cgs_level = p.id, sl_dh_min = 0, dj_dh = (p.agio * item.dj_base / 100).Digit(DigitConfig.dj) }); } } } if (!model.id.HasValue || model.id.Value.Equals(0)) { model.id = BusinessFactory.Utilety.GetNextKey(typeof(Tb_Sp)); } model.rq_create = DateTime.Now; model.rq_edit = DateTime.Now; model.id_gys_create = GetLoginInfo <long>("id_supplier"); model.id_edit = GetLoginInfo <long>("id_user"); model.id_create = GetLoginInfo <long>("id_user"); if (!model.id_gys_create.HasValue || model.id_gys_create.Value < 1) { br.Success = false; br.Level = ErrorLevel.Warning; br.Message.Add("该用户没有分配供应商角色!"); return(Json(br)); } br = BusinessFactory.Goods.Add(model); } catch (CySoftException ex) { throw ex; } catch (Exception ex) { throw ex; } return(Json(br)); }