/// <summary> /// 保存表单(新增、修改) /// </summary> /// <param name="keyValue">主键值</param> /// <param name="entity">实体对象</param> /// <param name="entryList">子表</param> /// <returns></returns> public void SaveForm(string keyValue, OutbillEntity entity, List <OutbillitemEntity> entryList) { try { if (string.IsNullOrEmpty(keyValue)) { OutbillEntity old = this.GetEntity(entity.foutbillid); if (old != null) { throw new Exception("编号需要唯一"); } } service.SaveForm(keyValue, entity, entryList); } catch (Exception) { throw; } }
// [HandlerAuthorize(PermissionMode.Enforce)] public ActionResult SaveForm(string keyValue, OutbillEntity entity, string strChildEntitys) { List <OutbillitemEntity> childEntitys = strChildEntitys.ToList <OutbillitemEntity>(); if (string.IsNullOrEmpty(keyValue)) { var childs = from c in childEntitys group c by c.fgoodsid into g where g.Count() > 1 select g; if (childs != null && childs.ToList().Count() > 0) { return(Error("不可以选择重复的物品")); } } #region 判断库存是否充足 if (!string.IsNullOrEmpty(keyValue)) { #region 修改时判断,要加上修改前数量 string fgoodsid = ""; if (childEntitys != null && childEntitys.Count > 0) { foreach (OutbillitemEntity item in childEntitys) { fgoodsid += item.fgoodsid + ","; } if (!string.IsNullOrEmpty(fgoodsid)) { fgoodsid = fgoodsid.Substring(0, fgoodsid.Length - 1); } //当前库存 GoodsinfoBLL bll_g = new GoodsinfoBLL(); var data = bll_g.GetLists(fgoodsid); //修改前出库 OutbillitemBLL bll_o = new OutbillitemBLL(); var data_out = bll_o.GetListByFoutbillid(keyValue); bool bl = true; if (data != null) { foreach (OutbillitemEntity item in childEntitys) { double fcount = 0; var data_out_s = data_out.Where(t => t.fgoodsid == item.fgoodsid); if (data_out_s != null && data_out_s.Count() > 0) { fcount = data_out_s.First().fnumber.ToDouble(); } var data_s = data.Where(t => t.fgoodsid == item.fgoodsid); if (data_s != null && data_s.Count() > 0) { if ((data_s.First().fcount + fcount) < item.fnumber) { bl = false; continue; } } else { bl = false; continue; } } } else { bl = false; } if (!bl) { return(Error("库存不足,请核实后重新填写!")); } } #endregion } else { #region 新增时判断,直接判断 string fgoodsid = ""; if (childEntitys != null && childEntitys.Count > 0) { foreach (OutbillitemEntity item in childEntitys) { fgoodsid += item.fgoodsid + ","; } if (!string.IsNullOrEmpty(fgoodsid)) { fgoodsid = fgoodsid.Substring(0, fgoodsid.Length - 1); } GoodsinfoBLL bll_g = new GoodsinfoBLL(); var data = bll_g.GetLists(fgoodsid); bool bl = true; if (data != null) { foreach (OutbillitemEntity item in childEntitys) { var dataWhere = data.Where(t => t.fgoodsid == item.fgoodsid); if (dataWhere != null) { if (dataWhere.First().fcount < item.fnumber) { bl = false; continue; } } else { bl = false; continue; } } } else { bl = false; } if (!bl) { return(Error("库存不足,请核实后重新填写!")); } } #endregion } #endregion outbillbll.SaveForm(keyValue, entity, childEntitys); return(Success("操作成功。")); }
/// <summary> /// 保存表单(新增、修改) /// </summary> /// <param name="keyValue">主键值</param> /// <param name="entity">实体对象</param> /// <param name="entryList">子表</param> /// <returns></returns> public void SaveForm(string keyValue, OutbillEntity entity, List <OutbillitemEntity> entryList) { IEnumerable <OutbillitemEntity> list = null; if (!string.IsNullOrEmpty(keyValue)) { //查询明细 先加库存再删除明细 OutbillitemIService dal = new OutbillitemService(); list = dal.GetListByFoutbillid(keyValue); } IRepository db = this.BaseRepository().BeginTrans(); try { if (!string.IsNullOrEmpty(keyValue)) { //主表 db.Update(entity); if (list != null && list.Count() > 0) { // 加库存 foreach (OutbillitemEntity item in list) { var strSqls = AddGoodsRepertorySql(item); db.ExecuteBySql(strSqls.ToString()); } //明细 string deletesql = " delete tb_wh_outbill_item where foutbillid='" + keyValue + "' "; db.ExecuteBySql(deletesql); } for (int i = 0; i < entryList.Count; i++) { entryList[i].foutbillid = entity.foutbillid; entryList[i].fitemid = entity.foutbillid + "-" + Utils.SupplementZero((i + 1).ToString(), 3); //生成领用单物品信息编号 // 明细 db.Insert(entryList[i]); //减库存 var strSql = RemoveGoodsRepertorySql(entryList[i]); db.ExecuteBySql(strSql.ToString()); } } else { //主表 entity.Create(); entity.finputdate = DateTime.Now; entity.foutdate = DateTime.Now; int userid = 0; int.TryParse(OperatorProvider.Provider.Current().OldSystemUserID, out userid); entity.fuserid = userid; db.Insert(entity); //明细 for (int i = 0; i < entryList.Count; i++) { entryList[i].foutbillid = entity.foutbillid; entryList[i].fitemid = entity.foutbillid + "-" + Utils.SupplementZero((i + 1).ToString(), 3); //生成领用单物品信息编号 db.Insert(entryList[i]); var strSql = RemoveGoodsRepertorySql(entryList[i]); // 减库存 db.ExecuteBySql(strSql.ToString()); } } db.Commit(); } catch (Exception) { db.Rollback(); throw; } }