/// <summary> /// 插入清单项 /// </summary> /// <param name="BoqNo"></param> /// <param name="Detail"></param> /// <param name="OperationBy">操作人</param> /// <returns>No信息</returns> private ContractBoqChangeDetail InsertDetail(ContractBoqChangeDetail Detail, String OperationBy, SqlTransaction Tran = null) { List <CmdParameter> cmds = new List <CmdParameter>(); cmds.Add(new CmdParameter("@ProjectNo", Detail.ProjectNo)); cmds.Add(new CmdParameter("@ChangeNo", Detail.ChangeNo)); cmds.Add(new CmdParameter("@Type", Detail.Type)); cmds.Add(new CmdParameter("@IsUpInfo", Detail.IsUpInfo)); cmds.Add(new CmdParameter("@IsUpQty", Detail.IsUpQty)); cmds.Add(new CmdParameter("@IsUpPrice", Detail.IsUpPrice)); cmds.Add(new CmdParameter("@ItemNo", Detail.ItemNo)); cmds.Add(new CmdParameter("@ItemCode", Detail.ItemCode)); cmds.Add(new CmdParameter("@IItemCoe", Detail.IItemCoe)); cmds.Add(new CmdParameter("@ItemName", Detail.ItemName)); cmds.Add(new CmdParameter("@ParentCode", Detail.ParentCode)); cmds.Add(new CmdParameter("@Currency", Detail.Currency)); cmds.Add(new CmdParameter("@CurrencyCode", Detail.CurrencyCode)); cmds.Add(new CmdParameter("@ExchangeRate", Detail.ExchangeRate)); cmds.Add(new CmdParameter("@Uom", Detail.Uom)); cmds.Add(new CmdParameter("@BefQty", Detail.BefQty)); cmds.Add(new CmdParameter("@BefPrjPrice", Detail.BefPrjPrice)); cmds.Add(new CmdParameter("@BefAmount", Detail.BefAmount)); cmds.Add(new CmdParameter("@AfQty", Detail.AfQty)); cmds.Add(new CmdParameter("@AfPrice", Detail.AfPrice)); cmds.Add(new CmdParameter("@AfAmount", Detail.AfAmount)); cmds.Add(new CmdParameter("@ChangeQty", Detail.ChangeQty)); cmds.Add(new CmdParameter("@ChangePrice", Detail.ChangePrice)); cmds.Add(new CmdParameter("@ChangeAmount", Detail.ChangeAmount)); cmds.Add(new CmdParameter("@Description", Detail.Description)); cmds.Add(new CmdParameter("@Remark", Detail.Remark)); cmds.Add(new CmdParameter("@OperationBy", OperationBy)); cmds.Add(new CmdParameter("@Id", 0, System.Data.ParameterDirection.Output)); cmds.Add(new CmdParameter("@ChangeDetailNo", "", System.Data.ParameterDirection.Output)); cmds.Add(new CmdParameter("@Infor", "", System.Data.ParameterDirection.Output)); cmds.Add(new CmdParameter("@Ok", 0, System.Data.ParameterDirection.Output)); ParameterResult pResult = new ParameterResult() { Parameters = cmds.ToArray() }; HdDbCmdManager.GetInstance().Execute("ERP_BoQ.dbo.Gl_Cntrct_ChangeDetail_Add", CommandType.StoredProcedure, pResult.Parameters, Tran); if (!Convert.ToBoolean(pResult["@Ok"])) { throw new FaultException <ApplicationServiceError>(new ApplicationServiceError() { ErrorMessage = pResult["@Infor"].ToString() }); } Detail.ChangeDetailNo = pResult["@ChangeDetailNo"].ToString(); return(Detail); }
public ContractBoqChange Save(ContractBoqChange BoqChange) { if (String.IsNullOrEmpty(BoqChange.ChangeNo)) { //新增 HdDbCmdManager.GetInstance().ExecuteTran(Tran => { Insert(BoqChange, ServiceContext.LoginName, Tran); BoqChange.Details.ForEach(m => { m.ChangeNo = BoqChange.ChangeNo; InsertDetail(m, ServiceContext.LoginName, Tran); }); }); } else { //临时变量 ContractBoqChangeDetail temp = null; //修改 ContractBoqChange oldData = Get(BoqChange.ChangeNo); HdDbCmdManager.GetInstance().ExecuteTran(Tran => { Update(BoqChange, ServiceContext.LoginName, Tran); List <ContractBoqChangeDetail> lstDelete = oldData.Details.FindAll(m => !BoqChange.Details.Exists(n => n.ChangeDetailNo == m.ChangeDetailNo)); List <ContractBoqChangeDetail> lstAdd = BoqChange.Details.FindAll(m => String.IsNullOrEmpty(m.ChangeDetailNo)); List <ContractBoqChangeDetail> lstDisable = BoqChange.Details.FindAll(m => (temp = oldData.Details.FirstOrDefault(n => n.ChangeDetailNo == m.ChangeDetailNo)) != null && temp.StatId == 1 && m.StatId == 0); List <ContractBoqChangeDetail> lstEnable = BoqChange.Details.FindAll(m => (temp = oldData.Details.FirstOrDefault(n => n.ChangeDetailNo == m.ChangeDetailNo)) != null && temp.StatId == 0 && m.StatId == 1); List <ContractBoqChangeDetail> lstUpdate = BoqChange.Details.FindAll(m => (temp = oldData.Details.FirstOrDefault(n => n.ChangeDetailNo == m.ChangeDetailNo)) != null && temp.StatId == m.StatId); lstDelete.ForEach(m => { DeleteDetail(m.ChangeDetailNo, ServiceContext.LoginName, Tran); }); lstAdd.ForEach(m => { m.ChangeNo = BoqChange.ChangeNo; InsertDetail(m, ServiceContext.LoginName, Tran); }); lstUpdate.ForEach(m => { UpdateDetail(m, ServiceContext.LoginName, Tran); }); lstEnable.ForEach(m => { ChangeDataStat(m.ChangeDetailNo, 1, ServiceContext.LoginName, Tran); }); lstDisable.ForEach(m => { ChangeDataStat(m.ChangeDetailNo, 0, ServiceContext.LoginName, Tran); }); }); } return(Get(BoqChange.ChangeNo)); }
/// <summary> /// 保存数据 /// </summary> public void Save() { ContractBoqChange changeData = new ContractBoqChange(); ObjectHelper.CopyOneToTwo(BoqChangeEx, changeData); changeData.Details = new List <ContractBoqChangeDetail>(); changeData.Details.AddRange(BoqChangeEx.DetailExList.ToList().ConvertAll <ContractBoqChangeDetail>(m => { ContractBoqChangeDetail detail = new ContractBoqChangeDetail(); ObjectHelper.CopyOneToTwo(m, detail); return(detail); })); ContractBoqChange result = projectBoqChangeService.Save(changeData); if (String.IsNullOrEmpty(changeData.ChangeNo)) { ContractBoqChangeInfo info = HDAutoMapper.DynamicMap <ContractBoqChangeInfo>(result); BoqChangeEx.ChangeNo = result.ChangeNo; BoqChangeEx.ChangeInfo = info; ChangedList.Add(info); } ObjectHelper.CopyOneToTwo <ContractBoqChangeInfo>(HDAutoMapper.DynamicMap <ContractBoqChangeInfo>(result), BoqChangeEx.ChangeInfo); }