public override BaseResult Add(dynamic entity) { #region 获取参数 BaseResult br = new BaseResult(); var kspdModel = entity as KspdModel; if (kspdModel != null) { AdminAdd(br, kspdModel); return(br); } Hashtable param = entity as Hashtable; DateTime rq = DateTime.Now; if (param == null || param["id_shop"] == null || string.IsNullOrEmpty(param["id_shop"].ToString()) || param["id_masteruser"] == null || string.IsNullOrEmpty(param["id_masteruser"].ToString()) || param["json_param"] == null || string.IsNullOrEmpty(param["json_param"].ToString()) || param["id_jbr"] == null || string.IsNullOrEmpty(param["id_jbr"].ToString()) || param["id_create"] == null || string.IsNullOrEmpty(param["id_create"].ToString()) || param["rq"] == null || string.IsNullOrEmpty(param["rq"].ToString()) || !DateTime.TryParse(param["rq"].ToString(), out rq) || param["sign"] == null || string.IsNullOrEmpty(param["sign"].ToString()) ) { br.Success = false; br.Message.Add("必要参数不可以为空."); return(br); } #endregion #region 构建表体 var body = Utility.JSON.Deserialize <List <Td_Kc_Kspd_2> >(param["json_param"].ToString()); if (body == null || body.Count() <= 0) { br.Success = false; br.Message.Add("必要参数不符合要求."); return(br); } #endregion #region 构建表头 var head = new Td_Kc_Kspd_1() { id_masteruser = param["id_masteruser"].ToString(), id = GetGuid, dh = GetNewDH(param["id_masteruser"].ToString(), param["id_shop"].ToString(), Enums.FlagDJLX.DHKSPD), rq = rq, id_shop = param["id_shop"].ToString(), bm_djlx = "KC010", id_jbr = param["id_jbr"].ToString(), je_yk_mxtotal = 0, rq_sh = null, flag_sh = 0, id_user_sh = "", flag_cancel = 0, bz = param["bz"] == null ? "" : param["bz"].ToString(), id_create = param["id_create"].ToString(), rq_create = DateTime.Now, id_edit = "", rq_edit = null, flag_delete = 0 }; #endregion #region 表体验证以及赋值 foreach (var item in body) { string message = string.Empty; if (this.ParamError(item, out message) || !string.IsNullOrEmpty(message)) { br.Success = false; br.Message.Clear(); br.Message.Add(message); return(br); } else { item.id_masteruser = head.id_masteruser; item.id = GetGuid; item.id_bill = head.id; item.rq_create = head.rq_create; if (item.sl == null || item.zhl == null) { item.sl_total = null; } else { item.sl_total = item.zhl * item.sl; } } } head.je_yk_mxtotal = body.Sum(d => d.je_yk); #endregion #region 插入数据 DAL.Add(head); DAL.AddRange(body); #endregion #region 执行存储过程并返回结果 Hashtable ht = new Hashtable(); ht.Clear(); ht.Add("proname", "p_kc_kspd_sh"); ht.Add("errorid", "-1"); ht.Add("errormessage", "未知错误!"); ht.Add("id_bill", head.id); ht.Add("id_user", head.id_create); DAL.RunProcedure(ht); if (!ht.ContainsKey("errorid") || !ht.ContainsKey("errormessage")) { br.Success = false; br.Message.Clear(); br.Message.Add("审核失败,执行审核出现异常!"); throw new CySoftException(br); } if (!string.IsNullOrEmpty(ht["errorid"].ToString()) || !string.IsNullOrEmpty(ht["errormessage"].ToString())) { br.Success = false; br.Message.Clear(); br.Message.Add("审核失败, " + ht["errormessage"].ToString()); throw new CySoftException(br); } #endregion #region 返回 br.Success = true; br.Message.Clear(); br.Message.Add(string.Format("操作成功!")); br.Data = new { id = head.id, dh = head.dh }; return(br); #endregion }
private void AdminAdd(BaseResult br, KspdModel model) { #region 参数验证 if (model == null || string.IsNullOrEmpty(model.id_masteruser)) { br.Success = false; br.Message.Add("参数有误!"); return; } if (string.IsNullOrEmpty(model.dh)) { br.Success = false; br.Message.Add("单号不能为空!"); return; } if (string.IsNullOrEmpty(model.id_shop)) { br.Success = false; br.Message.Add("请选择制单门店!"); return; } if (string.IsNullOrEmpty(model.id_jbr)) { br.Success = false; br.Message.Add("请选择经办人!"); return; } if (string.IsNullOrWhiteSpace(model.json_data)) { br.Success = false; br.Message.Add("请选择商品!"); return; } #endregion Td_Kc_Kspd_1 entity = new Td_Kc_Kspd_1(); #region entity.id_masteruser = model.id_masteruser; entity.id = GetGuid; entity.dh = model.dh; entity.rq = model.rq; entity.id_shop = model.id_shop; entity.bm_djlx = Enums.Kspd.KC010.ToString(); entity.id_jbr = model.id_jbr; entity.flag_sh = (byte)Enums.FlagSh.UnSh; entity.flag_cancel = (byte)Enums.FlagCancel.NoCancel; entity.je_yk_mxtotal = model.je_yk_mxtotal; entity.bz = model.bz; entity.id_create = model.id_create; entity.rq_create = DateTime.Now; entity.flag_delete = (byte)Enums.FlagDelete.NoDelete; #endregion var kspdList2 = JSON.Deserialize <List <Td_Kc_Kspd_2> >(model.json_data); #region 验证表体数据 if (!kspdList2.Any()) { br.Success = false; br.Message.Add("请选择商品!"); return; } var sort_id = 1; kspdList2.ForEach(a => { a.id_masteruser = entity.id_masteruser; a.id_bill = entity.id; a.id = GetGuid; a.sort_id = sort_id; a.rq_create = entity.rq_create; CheckKspd2(a, br); sort_id++; }); if (br.Message.Any()) { var firstError = br.Message.FirstOrDefault(); br.Message.Clear(); br.Message.Add(firstError); return; } var groupList = kspdList2.GroupBy(a => a.id_kcsp, a => a).ToList(); if (groupList.Any()) { var item = groupList.FirstOrDefault(a => a.Count() > 1); if (item != null) { var sameSpList = kspdList2.Where(k => k.id_kcsp == item.Key).ToList(); br.Success = false; br.Message.Clear(); br.Message.Add(string.Format("第{0}行商品与第{1}行商品是同一库存商品,不能重复盘点!", sameSpList[0].sort_id, sameSpList[1].sort_id)); return; } } Hashtable param = new Hashtable(); param.Add("id_masteruser", model.id_masteruser); param.Add("id_shop", model.id_shop); var id_kcsp_list = (from k in kspdList2 select k.id_kcsp).ToArray(); param.Add("id_kcsp_list", id_kcsp_list); var list = Td_Kc_Kspd_2DAL.QureyKspd2LeftJoinKspd1(typeof(Td_Kc_Kspd_2), param); if (list.Any()) { var first = list.FirstOrDefault(); if (first != null) { var hadsp = kspdList2.FirstOrDefault(k => k.id_kcsp == first.id_kcsp); if (hadsp != null) { br.Success = false; br.Message.Clear(); br.Message.Add(string.Format("在其他未审核盘点单中已存在第{0}行商品!", hadsp.sort_id)); return; } } } #endregion DAL.Add(entity); DAL.AddRange(kspdList2); if (model.AutoAudit) { param.Clear(); param.Add("id_masteruser", model.id_masteruser); param.Add("id_user", model.id_create); param.Add("id", entity.id); Sh <Td_Kc_Kspd_1>(br, param, "p_kc_kspd_sh"); } br.Success = true; }