using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using EmitMapper; namespace BLL { /// /// 物质出门服务类 /// public static class APIGoodsManageService { #region 根据主键获取物质出门详细信息 /// /// 根据主键获取物质出门详细信息 /// /// 物质出门ID /// 物质出门详细 public static Model.GoodsManageItem getGoodsManageById(string id) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { Model.GoodsManageItem getGoodsItem = new Model.GoodsManageItem(); var getData = db.CostGoods_GoodsManage.FirstOrDefault(x => x.GoodsManageId == id); if (getData != null) { getGoodsItem.GoodsManageId = getData.GoodsManageId; getGoodsItem.ProjectId = getData.ProjectId; getGoodsItem.ApplyUnitId = getData.ApplyUnitId; getGoodsItem.ApplyUnitName = UnitService.GetUnitNameByUnitId(getData.ApplyUnitId); getGoodsItem.ApplyManId = getData.ApplyManId; getGoodsItem.ApplyManName = UserService.GetUserNameByUserId(getData.ApplyManId); getGoodsItem.ApplyTime = string.Format("{0:yyyy-MM-dd}", getData.ApplyTime); getGoodsItem.OutReasons = getData.OutReasons; getGoodsItem.CarNum = getData.CarNum; getGoodsItem.BeBack = getData.BeBack ?? false; getGoodsItem.BackTime = string.Format("{0:yyyy-MM-dd}", getData.BackTime); getGoodsItem.States = getData.States; getGoodsItem.AttachUrl = APIUpLoadFileService.getFileUrl(id, null); getGoodsItem.GoodsManageItemItemList = getItemList(getData.GoodsManageId); getGoodsItem.FlowOperateItemList= getFlowOperateItemList(getData.GoodsManageId); var getNow = getFlowOperate(getData.GoodsManageId); if (getNow != null) { getGoodsItem.OperateName = getNow.OperateName; getGoodsItem.SortIndex = getNow.SortIndex ?? 0; getGoodsItem.OperaterManId = getNow.OperaterId; getGoodsItem.OperaterManName = UserService.GetUserNameByUserId(getNow.OperaterId); getGoodsItem.IsAgree = getNow.IsAgree ?? true; getGoodsItem.Opinion = getNow.Opinion; var getNext= getNextFlowOperate(getData.GoodsManageId,getNow.SortIndex ?? 0); if (getNext != null) { getGoodsItem.NextOperateName = getNext.OperateName; getGoodsItem.NextSortIndex = getNext.SortIndex ?? 1; getGoodsItem.NextOperaterManId = getNext.OperaterId; getGoodsItem.NextUnitId = getNext.UnitIds; } } } return getGoodsItem; } } #region 获取物资明细 /// /// 获取物资明细 /// /// public static List getItemList(string goodsManageId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { return (from x in db.CostGoods_GoodsManageItem where x.GoodsManageId == goodsManageId orderby x.GoodsName select new Model.GoodsManageItemItem { GoodsManageItemId = x.GoodsManageItemId, GoodsManageId = x.GoodsManageId, GoodsName = x.GoodsName, GoodsCounts = x.GoodsCounts, CountingUnit = x.CountingUnit, }).ToList(); } } #endregion #region 获取审核记录 /// /// 获取物资明细 /// /// public static List getFlowOperateItemList(string goodsManageId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { return (from x in db.CostGoods_GoodsManageFlowOperate where x.GoodsManageId == goodsManageId orderby x.SortIndex select new Model.FlowOperateItem { FlowOperateId = x.FlowOperateId, DataId = x.GoodsManageId, SortIndex = x.SortIndex ?? 0, AuditFlowName = x.OperateName, OperaterId = x.OperaterId, OperaterName=UserService.GetUserNameByUserId(x.OperaterId), OperaterTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.OperaterTime), IsAgree=x.IsAgree, Opinion=x.Opinion, }).ToList(); } } #endregion #region 获取当前办理步骤 /// /// 获取当前办理步骤 /// /// /// public static Model.CostGoods_GoodsManageFlowOperate getFlowOperate(string goodsManageId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { return (from x in db.CostGoods_GoodsManageFlowOperate where x.GoodsManageId == goodsManageId && !x.OperaterTime.HasValue orderby x.SortIndex select x).FirstOrDefault(); } } #endregion #region 获取下一步办理步骤 /// /// 获取下一步办理步骤 /// /// /// public static Model.CostGoods_GoodsManageFlowOperate getNextFlowOperate(string goodsManageId,int sortIndex) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { return (from x in db.CostGoods_GoodsManageFlowOperate where x.GoodsManageId == goodsManageId && x.SortIndex == sortIndex +1 orderby x.SortIndex select x).FirstOrDefault(); } } #endregion #endregion #region 根据projectId获取物质出门列表 /// /// 记录数 /// public static int getGoodsManageListCount { get; set; } /// /// 根据projectId获取物质出门列表 /// /// /// 状态(0-待提交;1-审核中;2-审核完成;-1:作废) /// public static List getGoodsManageByProjectIdStates(string projectId, string states, int pageIndex) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getData = from x in db.CostGoods_GoodsManage where x.ProjectId == projectId select x; if (!string.IsNullOrEmpty(states)) { getData = getData.Where(x => x.States == states); } getGoodsManageListCount = getData.Count(); if (getGoodsManageListCount == 0) { return null; } else { var getDataItem = from x in getData orderby x.ApplyTime descending select new Model.GoodsManageItem { GoodsManageId = x.GoodsManageId, ProjectId = x.ProjectId, ApplyUnitId = x.ApplyUnitId, ApplyUnitName = db.Base_Unit.First(u => u.UnitId == x.ApplyUnitId).UnitName, ApplyManId = x.ApplyManId, ApplyManName = db.Sys_User.First(u => u.UserId == x.ApplyManId).UserName, ApplyTime = string.Format("{0:yyyy-MM-dd}", x.ApplyTime), OutReasons = x.OutReasons, CarNum = x.CarNum, BeBack = x.BeBack ?? false, BackTime = string.Format("{0:yyyy-MM-dd}", x.BackTime), }; if (pageIndex > 0) { return getDataItem.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } else { return getDataItem.ToList(); } } } } #endregion #region 保存GoodsManage /// /// 保存GoodsManage /// /// 物质出门信息 /// public static void SaveGoodsManage(Model.GoodsManageItem goodsManage) { Model.SGGLDB db = Funs.DB; Model.CostGoods_GoodsManage newGoods = new Model.CostGoods_GoodsManage { GoodsManageId = goodsManage.GoodsManageId, ProjectId = goodsManage.ProjectId, ApplyUnitId = goodsManage.ApplyUnitId == "" ? null : goodsManage.ApplyUnitId, ApplyManId = goodsManage.ApplyManId == "" ? null : goodsManage.ApplyManId, ApplyTime = Funs.GetNewDateTime(goodsManage.ApplyTime), OutReasons = goodsManage.OutReasons, CarNum = goodsManage.CarNum, BeBack = goodsManage.BeBack, BackTime = Funs.GetNewDateTime(goodsManage.BackTime), States = goodsManage.States, NextManId = goodsManage.NextOperaterManId, }; var updateDate = db.CostGoods_GoodsManage.FirstOrDefault(x => x.GoodsManageId == goodsManage.GoodsManageId); if (updateDate == null) { newGoods.States = "1"; goodsManage.GoodsManageId = newGoods.GoodsManageId = SQLHelper.GetNewID(); db.CostGoods_GoodsManage.InsertOnSubmit(newGoods); db.SubmitChanges(); var getSets = from x in db.CostGoods_GoodsManageFlowOperateSet select x; foreach (var setItem in getSets) { Model.CostGoods_GoodsManageFlowOperate newFlowOperate = new Model.CostGoods_GoodsManageFlowOperate { FlowOperateId = SQLHelper.GetNewID(), GoodsManageId = goodsManage.GoodsManageId, SortIndex = setItem.SortIndex, OperateName=setItem.OperateName, }; if (setItem.UnitType == "1") { newFlowOperate.UnitIds = Const.UnitId_TCC; } else { newFlowOperate.UnitIds = newGoods.ApplyUnitId; } if (newFlowOperate.SortIndex == 0) { newFlowOperate.OperaterId = newGoods.ApplyManId; newFlowOperate.OperaterTime = newGoods.ApplyTime; newFlowOperate.IsAgree = true; } else if (newFlowOperate.SortIndex == 1) { newFlowOperate.OperaterId = newGoods.NextManId; } db.CostGoods_GoodsManageFlowOperate.InsertOnSubmit(newFlowOperate); db.SubmitChanges(); } } else { if (goodsManage.IsAgree == false) { newGoods.States = "-1"; newGoods.NextManId = null; } else if (!goodsManage.NextSortIndex.HasValue) { newGoods.States = "2"; newGoods.NextManId = null; } GoodsManageService.UpdateGoodsManage(newGoods); var getNow = db.CostGoods_GoodsManageFlowOperate.FirstOrDefault(x => x.GoodsManageId == newGoods.GoodsManageId && x.SortIndex ==goodsManage.SortIndex); if (getNow != null) { getNow.OperaterTime = DateTime.Now; getNow.IsAgree = goodsManage.IsAgree; getNow.Opinion = goodsManage.Opinion; db.SubmitChanges(); } if (goodsManage.NextSortIndex.HasValue) { var getNext = db.CostGoods_GoodsManageFlowOperate.FirstOrDefault(x => x.GoodsManageId == newGoods.GoodsManageId && x.SortIndex ==goodsManage.NextSortIndex); if (getNext != null) { getNext.OperaterId = goodsManage.NextOperaterManId; db.SubmitChanges(); } } } ////删除明细 var gItems = from x in db.CostGoods_GoodsManageItem where x.GoodsManageId == goodsManage.GoodsManageId select x; if (gItems.Count() > 0) { db.CostGoods_GoodsManageItem.DeleteAllOnSubmit(gItems); db.SubmitChanges(); } ///// 新增明细 var getItemList = goodsManage.GoodsManageItemItemList; if (goodsManage.GoodsManageItemItemList != null && getItemList.Count() > 0) { foreach (var item in getItemList) { Model.CostGoods_GoodsManageItem newGItem = new Model.CostGoods_GoodsManageItem { GoodsManageItemId = SQLHelper.GetNewID(), GoodsManageId = goodsManage.GoodsManageId, GoodsName = item.GoodsName, GoodsCounts = item.GoodsCounts, CountingUnit = item.CountingUnit, }; db.CostGoods_GoodsManageItem.InsertOnSubmit(newGItem); db.SubmitChanges(); } } if (!string.IsNullOrEmpty(goodsManage.AttachUrl)) { APIUpLoadFileService.SaveAttachUrl(Const.GoodsManageMenuId, newGoods.GoodsManageId, goodsManage.AttachUrl, "0"); } } #endregion } }