public ResultModel Update(UserModel user, int repoApplyId, List<int> stockIds, string memo, int deptId) { ResultModel result = new ResultModel(); //获取质押申请 try { DAL.StockDAL stockDAL = new StockDAL(); DAL.RepoApplyDetailDAL detailDAL = new RepoApplyDetailDAL(); NFMT.Operate.DAL.ApplyDAL applyDAL = new Operate.DAL.ApplyDAL(); using (System.Transactions.TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { //验证质押申请 result = repoapplyDAL.Get(user, repoApplyId); if (result.ResultStatus != 0) return result; Model.RepoApply repoApply = result.ReturnValue as Model.RepoApply; if (repoApply == null || repoApply.RepoApplyId <= 0) { result.ResultStatus = -1; result.Message = "质押申请获取失败"; return result; } //获取主申请 result = applyDAL.Get(user, repoApply.ApplyId); if (result.ResultStatus != 0) return result; NFMT.Operate.Model.Apply apply = result.ReturnValue as NFMT.Operate.Model.Apply; if (apply == null || apply.ApplyId <= 0) { result.ResultStatus = -1; result.Message = "主申请获取失败"; return result; } //更新主申请 NFMT.User.Model.Department dept = NFMT.User.UserProvider.Departments.FirstOrDefault(temp => temp.DeptId == deptId); if (dept == null || dept.DeptId <= 0) { result.ResultStatus = -1; result.Message = "申请部门不存在"; return result; } apply.ApplyDesc = memo; apply.ApplyDept = dept.DeptId; //apply.ApplyDeptName = dept.DeptName; result = applyDAL.Update(user, apply); if (result.ResultStatus != 0) return result; //获了质押申请明细 result = detailDAL.Load(user, repoApply.RepoApplyId); if (result.ResultStatus != 0) return result; List<Model.RepoApplyDetail> details = result.ReturnValue as List<Model.RepoApplyDetail>; if (details == null) { result.ResultStatus = -1; result.Message = "明细获取失败"; return result; } //作废明细 foreach (Model.RepoApplyDetail detail in details) { if (detail.DetailStatus == StatusEnum.已生效) detail.DetailStatus = StatusEnum.已录入; result = detailDAL.Invalid(user, detail); if (result.ResultStatus != 0) return result; } //获取库存 foreach (int stockId in stockIds) { result = stockDAL.Get(user, stockId); if (result.ResultStatus != 0) return result; Model.Stock stock = result.ReturnValue as Model.Stock; if (stock == null || stock.StockId <= 0) { result.ResultStatus = -1; result.Message = "库存获取失败"; return result; } if (stock.StockStatus != StockStatusEnum.质押库存) { result.ResultStatus = -1; result.Message = "库存非质押状态,不能进行回购操作"; return result; } //添加明细 Model.RepoApplyDetail detail = new RepoApplyDetail(); detail.DetailStatus = StatusEnum.已生效; detail.RepoApplyId = repoApply.RepoApplyId; detail.StockId = stock.StockId; result = detailDAL.Insert(user, detail); if (result.ResultStatus != 0) return result; } scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } return result; }
public ResultModel RepoApplyUpdateHandle(UserModel user, NFMT.Operate.Model.Apply apply, int repoApplyId, List<Model.RepoApplyDetail> details) { ResultModel result = new ResultModel(); try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { NFMT.Operate.DAL.ApplyDAL applyDAL = new Operate.DAL.ApplyDAL(); result = applyDAL.Get(user, apply.ApplyId); if (result.ResultStatus != 0) return result; NFMT.Operate.Model.Apply applyRes = result.ReturnValue as NFMT.Operate.Model.Apply; if (applyRes == null) { result.ResultStatus = -1; result.Message = "获取申请失败"; return result; } applyRes.ApplyTime = apply.ApplyTime; applyRes.EmpId = apply.EmpId; applyRes.ApplyDept = apply.ApplyDept; applyRes.ApplyCorp = apply.ApplyCorp; applyRes.ApplyDesc = apply.ApplyDesc; result = applyDAL.Update(user, applyRes); if (result.ResultStatus != 0) return result; NFMT.WareHouse.DAL.RepoApplyDetailDAL repoApplyDetailDAL = new RepoApplyDetailDAL(); result = repoApplyDetailDAL.InvalidAll(user, repoApplyId); if (result.ResultStatus != 0) return result; foreach (Model.RepoApplyDetail detail in details) { result = repoApplyDetailDAL.Insert(user, detail); if (result.ResultStatus != 0) return result; } scope.Complete(); } } catch (Exception ex) { result.Message = ex.Message; } finally { if (result.ResultStatus != 0) log.ErrorFormat("{0} {1},类型序号:{2}", user.EmpName, result.Message, result.ReturnValue); else if (log.IsInfoEnabled) log.InfoFormat("{0} {1},类型序号:{2}", user.EmpName, result.Message, result.ReturnValue); } return result; }
public ResultModel Update(UserModel user, NFMT.Operate.Model.Apply apply, NFMT.DoPrice.Model.PricingApply pricingApply, List<NFMT.DoPrice.Model.PricingApplyDetail> pricingApplyDetails) { ResultModel result = new ResultModel(); NFMT.Operate.DAL.ApplyDAL applyDAL = new Operate.DAL.ApplyDAL(); DAL.PricingApplyDAL pricingApplyDAL = new PricingApplyDAL(); DAL.PricingApplyDetailDAL pricingApplyDetailDAL = new PricingApplyDetailDAL(); NFMT.Contract.DAL.ContractSubDAL subDAL = new Contract.DAL.ContractSubDAL(); NFMT.Contract.DAL.ContractDAL contractDAL = new Contract.DAL.ContractDAL(); try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = applyDAL.Get(user, apply.ApplyId); if (result.ResultStatus != 0) return result; NFMT.Operate.Model.Apply getApply = result.ReturnValue as NFMT.Operate.Model.Apply; if (getApply == null || getApply.ApplyId <= 0) { result.ResultStatus = -1; result.Message = "获取申请错误"; return result; } NFMT.User.Model.Department dept = NFMT.User.UserProvider.Departments.FirstOrDefault(temp => temp.DeptId == apply.ApplyDept); if (dept == null || dept.DeptId <= 0) { result.ResultStatus = -1; result.Message = "申请部门不存在"; return result; } getApply.EmpId = user.EmpId; getApply.ApplyTime = DateTime.Now; getApply.ApplyDept = apply.ApplyDept; getApply.ApplyCorp = apply.ApplyCorp; getApply.ApplyDesc = apply.ApplyDesc; result = applyDAL.Update(user, getApply); if (result.ResultStatus != 0) return result; result = pricingApplyDAL.Get(user, pricingApply.PricingApplyId); if (result.ResultStatus != 0) return result; NFMT.DoPrice.Model.PricingApply getPricingApply = result.ReturnValue as NFMT.DoPrice.Model.PricingApply; if (getPricingApply == null || getPricingApply.PricingApplyId <= 0) { result.ResultStatus = -1; result.Message = "获取点价申请错误"; return result; } getPricingApply.StartTime = pricingApply.StartTime; getPricingApply.EndTime = pricingApply.EndTime; getPricingApply.MinPrice = pricingApply.MinPrice; getPricingApply.MaxPrice = pricingApply.MaxPrice; getPricingApply.CurrencyId = pricingApply.CurrencyId; getPricingApply.PricingCorpId = pricingApply.PricingCorpId; getPricingApply.PricingWeight = pricingApply.PricingWeight; getPricingApply.MUId = pricingApply.MUId; getPricingApply.AssertId = pricingApply.AssertId; getPricingApply.PricingPersoinId = pricingApply.PricingPersoinId; //验证子合约 result = subDAL.Get(user, pricingApply.SubContractId); if (result.ResultStatus != 0) return result; NFMT.Contract.Model.ContractSub sub = result.ReturnValue as NFMT.Contract.Model.ContractSub; if (sub == null || sub.SubId <= 0) { result.ResultStatus = -1; result.Message = "子合约不存在"; return result; } if (sub.SubStatus != StatusEnum.已生效) { result.ResultStatus = -1; result.Message = "子合约状态非已生效,不能进行点价申请"; return result; } //获取合约 result = contractDAL.Get(user, sub.ContractId); if (result.ResultStatus != 0) return result; NFMT.Contract.Model.Contract contract = result.ReturnValue as NFMT.Contract.Model.Contract; if (contract == null || contract.ContractId <= 0) { result.ResultStatus = -1; result.Message = "关联合约不存在"; return result; } if (contract.TradeDirection == (int)NFMT.Contract.TradeDirectionEnum.Buy) getPricingApply.PricingDirection = (int)NFMT.DoPrice.PricingDirection.空头; else getPricingApply.PricingDirection = (int)NFMT.DoPrice.PricingDirection.多头; result = pricingApplyDAL.Update(user, getPricingApply); if (result.ResultStatus != 0) return result; //作废明细 result = pricingApplyDetailDAL.InvalidAll(user, getPricingApply.PricingApplyId); if (result.ResultStatus != 0) return result; //写入明细 foreach (Model.PricingApplyDetail detail in pricingApplyDetails) { detail.PricingApplyId = getPricingApply.PricingApplyId; detail.DetailStatus = StatusEnum.已生效; result = pricingApplyDetailDAL.Insert(user, detail); if (result.ResultStatus != 0) return result; } scope.Complete(); } } catch (Exception e) { result.ResultStatus = -1; result.Message = e.Message; } return result; }
public ResultModel UpdateStockOutApply(UserModel user, int stockOutApplyId, List<Model.StockOutApplyDetail> details, int deptId, string memo, int corpId, int buyCorpId) { ResultModel result = new ResultModel(); NFMT.Operate.DAL.ApplyDAL applyDAL = new Operate.DAL.ApplyDAL(); NFMT.Contract.DAL.ContractSubDAL subDAL = new Contract.DAL.ContractSubDAL(); NFMT.WareHouse.DAL.StockOutApplyDAL outApplyDAL = new DAL.StockOutApplyDAL(); NFMT.WareHouse.DAL.StockOutApplyDetailDAL detailDAL = new DAL.StockOutApplyDetailDAL(); NFMT.WareHouse.DAL.StockExclusiveDAL exclusiveDAL = new DAL.StockExclusiveDAL(); NFMT.WareHouse.DAL.StockDAL stockDAL = new StockDAL(); NFMT.Contract.DAL.ContractDAL contractDAL = new Contract.DAL.ContractDAL(); try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { //验证分配库存 if (details == null || details.Count == 0) { result.ResultStatus = -1; result.Message = "未分配任务库存"; return result; } //验证出库申请 result = outApplyDAL.Get(user, stockOutApplyId); if (result.ResultStatus != 0) return result; NFMT.WareHouse.Model.StockOutApply stockOutApply = result.ReturnValue as NFMT.WareHouse.Model.StockOutApply; if (stockOutApply == null || stockOutApply.StockOutApplyId <= 0) { result.ResultStatus = -1; result.Message = "出库申请不存在"; return result; } //验证子合约 result = subDAL.Get(user, stockOutApply.SubContractId); if (result.ResultStatus != 0) return result; NFMT.Contract.Model.ContractSub sub = result.ReturnValue as NFMT.Contract.Model.ContractSub; if (sub == null || sub.SubId <= 0) { result.ResultStatus = -1; result.Message = "子合约不存在"; return result; } //验证合约 result = contractDAL.Get(user, sub.ContractId); if (result.ResultStatus != 0) return result; NFMT.Contract.Model.Contract contract = result.ReturnValue as NFMT.Contract.Model.Contract; if (contract == null || contract.ContractId <= 0) { result.ResultStatus = -1; result.Message = "合约不存在"; return result; } //获取部门信息 NFMT.User.Model.Department dept = User.UserProvider.Departments.Single(temp => temp.DeptId == deptId); if (dept == null || dept.DeptId <= 0) { result.ResultStatus = -1; result.Message = "部门不存在"; return result; } //更新主申请表 result = applyDAL.Get(user, stockOutApply.ApplyId); if (result.ResultStatus != 0) return result; NFMT.Operate.Model.Apply apply = result.ReturnValue as NFMT.Operate.Model.Apply; if (apply == null || apply.ApplyId <= 0) { result.ResultStatus = -1; result.Message = "主申请不存在"; return result; } apply.ApplyDept = dept.DeptId; apply.ApplyCorp = corpId; apply.ApplyDesc = memo; apply.ApplyId = stockOutApply.ApplyId; apply.EmpId = user.EmpId; result = applyDAL.Update(user, apply); if (result.ResultStatus != 0) return result; //更新出库申请表 decimal sumGrossAmount = details.Sum(temp => temp.GrossAmount); decimal sumNetAmount = details.Sum(temp => temp.NetAmount); int sumBundles = details.Sum(temp => temp.Bundles); stockOutApply.GrossAmount = sumGrossAmount; stockOutApply.NetAmount = sumNetAmount; stockOutApply.Bundles = sumBundles; stockOutApply.Status = StatusEnum.已录入; stockOutApply.BuyCorpId = buyCorpId; result = this.stockoutapplyDAL.Update(user, stockOutApply); if (result.ResultStatus != 0) return result; //作废出库申请明细表 result = detailDAL.Load(user, stockOutApply.StockOutApplyId); if (result.ResultStatus != 0) return result; List<NFMT.WareHouse.Model.StockOutApplyDetail> resultDetails = result.ReturnValue as List<NFMT.WareHouse.Model.StockOutApplyDetail>; if (resultDetails == null) { result.ResultStatus = -1; result.Message = "出库申请明细获取失败"; return result; } foreach (NFMT.WareHouse.Model.StockOutApplyDetail d in resultDetails) { d.DetailStatus = StatusEnum.已录入; result = detailDAL.Invalid(user, d); if (result.ResultStatus != 0) return result; } //作废排他表 result = exclusiveDAL.Load(user, stockOutApply.ApplyId); if (result.ResultStatus != 0) return result; List<NFMT.WareHouse.Model.StockExclusive> exculsives = result.ReturnValue as List<NFMT.WareHouse.Model.StockExclusive>; if (exculsives == null) { result.ResultStatus = -1; result.Message = "排他表获取失败"; return result; } foreach (NFMT.WareHouse.Model.StockExclusive e in exculsives) { e.ExclusiveStatus = StatusEnum.已录入; result = exclusiveDAL.Invalid(user, e); if (result.ResultStatus != 0) return result; } //新增出库申请明细表 foreach (Model.StockOutApplyDetail detail in details) { //验证库存 result = stockDAL.Get(user, detail.StockId); if (result.ResultStatus != 0) return result; NFMT.WareHouse.Model.Stock stock = result.ReturnValue as NFMT.WareHouse.Model.Stock; if (stock == null || stock.StockId <= 0) { result.ResultStatus = -1; result.Message = "库存不存在"; return result; } //判断库存品种是否与合约品种相同 if (stock.AssetId != contract.AssetId) { result.ResultStatus = -1; result.Message = "分配库存的品种与合约品种不一致"; return result; } //不允许配货库存 int planStockInStatus = (int)NFMT.WareHouse.StockStatusEnum.预入库存; int planCustomsStatus = (int)NFMT.WareHouse.StockStatusEnum.预报关库存; int stockStatus = (int)stock.StockStatus; if (stockStatus > planCustomsStatus || stockStatus < planStockInStatus) { result.ResultStatus = -1; result.Message = "访笔库存不能进行出库申请分配"; return result; } detail.ContractId = sub.ContractId; detail.DetailStatus = StatusEnum.已生效; detail.SubContractId = sub.SubId; detail.StockOutApplyId = stockOutApply.StockOutApplyId; if (contract.TradeBorder == (int)NFMT.Contract.TradeBorderEnum.ForeignTrade) detail.GrossAmount = stock.GrossAmount; else detail.GrossAmount = detail.NetAmount; result = detailDAL.Insert(user, detail); if (result.ResultStatus != 0) return result; int detailApplyId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out detailApplyId) || detailApplyId <= 0) { result.ResultStatus = -1; result.Message = "库存明细添加失败"; return result; } //排他表校验 result = exclusiveDAL.LoadByStockId(user, stock.StockId); if (result.ResultStatus != 0) return result; List<Model.StockExclusive> excs = result.ReturnValue as List<Model.StockExclusive>; if (excs == null) { result.ResultStatus = -1; result.Message = "获取排他库存信息失败"; return result; } decimal excAmount = excs.Sum(temp => temp.ExclusiveAmount); if (excAmount >= stock.CurNetAmount) { result.ResultStatus = -1; result.Message = "该笔库存剩余净重不足,配货失败"; return result; } //排他表新增 NFMT.WareHouse.Model.StockExclusive exculsive = new StockExclusive(); exculsive.ApplyId = apply.ApplyId; exculsive.DetailApplyId = detailApplyId; exculsive.ExclusiveStatus = StatusEnum.已生效; exculsive.StockApplyId = stockOutApply.StockOutApplyId; exculsive.StockId = stock.StockId; exculsive.ExclusiveAmount = detail.NetAmount; result = exclusiveDAL.Insert(user, exculsive); if (result.ResultStatus != 0) return result; } //验证出库申请与子合约签订数量 if (sumNetAmount > sub.SignAmount) { result.ResultStatus = -1; result.Message = "出库申请数量不能大于子合约签订数量"; return result; } //获取当前子合约下所有出库申请明细 result = detailDAL.LoadBySubId(user, sub.SubId, NFMT.Common.StatusEnum.已生效); if (result.ResultStatus != 0) return result; List<Model.StockOutApplyDetail> ds = result.ReturnValue as List<Model.StockOutApplyDetail>; sumNetAmount = ds.Sum(temp => temp.NetAmount); if (sumNetAmount > sub.SignAmount) { result.ResultStatus = -1; result.Message = "出库申请数量不能大于子合约可分配数量"; return result; } scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } finally { if (result.ResultStatus != 0) log.ErrorFormat("{0} {1},序号:{2}", user.EmpName, result.Message, result.ReturnValue); else if (log.IsInfoEnabled) log.InfoFormat("{0} {1},序号:{2}", user.EmpName, result.Message, result.ReturnValue); } // return result; }
/// <summary> /// 修改止损申请 /// </summary> /// <param name="user"></param> /// <param name="apply"></param> /// <param name="stopLossApply"></param> /// <param name="details"></param> /// <returns></returns> public ResultModel Update(UserModel user, NFMT.Operate.Model.Apply apply, NFMT.DoPrice.Model.StopLossApply stopLossApply, List<NFMT.DoPrice.Model.StopLossApplyDetail> details) { ResultModel result = new ResultModel(); NFMT.Operate.DAL.ApplyDAL applyDAL = new Operate.DAL.ApplyDAL(); DAL.StopLossApplyDetailDAL stopLossApplyDetailDAL = new StopLossApplyDetailDAL(); try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = applyDAL.Get(user, apply.ApplyId); if (result.ResultStatus != 0) return result; NFMT.Operate.Model.Apply applyResult = result.ReturnValue as NFMT.Operate.Model.Apply; applyResult.ApplyDept = apply.ApplyDept; applyResult.ApplyCorp = apply.ApplyCorp; applyResult.ApplyDesc = apply.ApplyDesc; result = applyDAL.Update(user, applyResult); if (result.ResultStatus != 0) return result; //修改止损申请 result = stoplossapplyDAL.Get(user, stopLossApply.StopLossApplyId); if (result.ResultStatus != 0) return result; NFMT.DoPrice.Model.StopLossApply stopLossApplyResult = result.ReturnValue as NFMT.DoPrice.Model.StopLossApply; stopLossApplyResult.StopLossPrice = stopLossApply.StopLossPrice; stopLossApplyResult.StopLossWeight = stopLossApply.StopLossWeight; stopLossApplyResult.Status = StatusEnum.已录入; result = stoplossapplyDAL.Update(user, stopLossApplyResult); if (result.ResultStatus != 0) return result; if (details.Any()) { result = stopLossApplyDetailDAL.InvalidAll(user, stopLossApply.StopLossApplyId); if (result.ResultStatus != 0) return result; foreach (Model.StopLossApplyDetail detail in details) { detail.StopLossApplyId = stopLossApply.StopLossApplyId; detail.ApplyId = apply.ApplyId; result = stopLossApplyDetailDAL.Insert(user, detail); if (result.ResultStatus != 0) return result; } } scope.Complete(); } } catch (Exception e) { result.ResultStatus = -1; result.Message = e.Message; } return result; }
public ResultModel Update(UserModel user, NFMT.Operate.Model.Apply apply, Model.CustomsClearanceApply customsClearanceApply, List<Model.CustomsApplyDetail> details) { ResultModel result = new ResultModel(); NFMT.Operate.DAL.ApplyDAL applyDAL = new Operate.DAL.ApplyDAL(); DAL.CustomsApplyDetailDAL customsApplyDetailDAL = new CustomsApplyDetailDAL(); try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = applyDAL.Get(user, apply.ApplyId); if (result.ResultStatus != 0) return result; NFMT.Operate.Model.Apply applyResult = result.ReturnValue as NFMT.Operate.Model.Apply; if (applyResult == null) { result.ResultStatus = -1; result.Message = "获取数据失败"; return result; } applyResult.ApplyType = apply.ApplyType; applyResult.EmpId = user.EmpId; applyResult.ApplyTime = DateTime.Now; applyResult.ApplyDept = apply.ApplyDept; applyResult.ApplyDesc = apply.ApplyDesc; result = applyDAL.Update(user, applyResult); if (result.ResultStatus != 0) return result; result = customsclearanceapplyDAL.Get(user, customsClearanceApply.CustomsApplyId); if (result.ResultStatus != 0) return result; NFMT.WareHouse.Model.CustomsClearanceApply customsClearanceApplyResult = result.ReturnValue as NFMT.WareHouse.Model.CustomsClearanceApply; if (customsClearanceApplyResult == null) { result.ResultStatus = -1; result.Message = "获取数据失败"; return result; } customsClearanceApplyResult.ApplyId = customsClearanceApply.ApplyId; customsClearanceApplyResult.AssetId = customsClearanceApply.AssetId; customsClearanceApplyResult.GrossWeight = customsClearanceApply.GrossWeight; customsClearanceApplyResult.NetWeight = customsClearanceApply.NetWeight; customsClearanceApplyResult.UnitId = customsClearanceApply.UnitId; customsClearanceApplyResult.OutCorpId = customsClearanceApply.OutCorpId; customsClearanceApplyResult.InCorpId = customsClearanceApply.InCorpId; customsClearanceApplyResult.CustomsCorpId = customsClearanceApply.CustomsCorpId; customsClearanceApplyResult.CustomsPrice = customsClearanceApply.CustomsPrice; customsClearanceApplyResult.CurrencyId = customsClearanceApply.CurrencyId; customsClearanceApplyResult.Status = Common.StatusEnum.已录入; result = customsclearanceapplyDAL.Update(user, customsClearanceApplyResult); if (result.ResultStatus != 0) return result; result = customsApplyDetailDAL.Load(user, customsClearanceApply.CustomsApplyId); if (result.ResultStatus != 0) return result; List<Model.CustomsApplyDetail> customsApplyDetails = result.ReturnValue as List<Model.CustomsApplyDetail>; if (customsApplyDetails == null || !customsApplyDetails.Any()) { result.ResultStatus = -1; result.Message = "获取数据失败"; return result; } foreach (Model.CustomsApplyDetail detail in customsApplyDetails) { if (detail.DetailStatus == Common.StatusEnum.已生效) detail.DetailStatus = Common.StatusEnum.已录入; result = customsApplyDetailDAL.Invalid(user, detail); if (result.ResultStatus != 0) return result; } if (details != null && details.Any()) { foreach (Model.CustomsApplyDetail detail in details) { detail.CustomsApplyId = customsClearanceApply.CustomsApplyId; result = customsApplyDetailDAL.Insert(user, detail); if (result.ResultStatus != 0) return result; } } if (result.ResultStatus == 0) result.ReturnValue = customsClearanceApply.CustomsApplyId; scope.Complete(); } } catch (Exception e) { result.Message = e.Message; result.ResultStatus = -1; } return result; }