Пример #1
0
        /// <summary>
        /// 回滚
        /// </summary>
        /// <param name="transactionId"></param>
        /// <param name="isDel"></param>
        /// <param name="userId"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public async Task RevertAsync(Guid transactionId, int isDel, string userId, string userName)
        {
            if (State.Transactions.ContainsKey(transactionId))
            {
                if (State.Transactions[transactionId] == false)
                {
                    return;
                }

                XsLadeRimpactState xsLadeRimpactState = this.State;
                xsLadeRimpactState.IsDel        = isDel;
                xsLadeRimpactState.ModityBy     = userId;
                xsLadeRimpactState.ModityByName = userName;
                xsLadeRimpactState.ModityDate   = System.DateTime.Now;
                xsLadeRimpactState.Version++;
                XsLadeRimpactDO xsLadeRimpactDO = this.ObjectMapper.Map <XsLadeRimpactDO>(xsLadeRimpactState);
                bool            bRet            = await _xsLadeRimpactRepository.SetAsync(xsLadeRimpactDO);

                if (!bRet)
                {
                    return;
                }

                xsLadeRimpactState.Transactions[transactionId] = false;

                await this.Persist(ProcessAction.Update, xsLadeRimpactState);
            }
        }
Пример #2
0
        /// <summary>
        /// 提交发货单作废
        /// </summary>
        /// <param name="transactionId"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task SubmitAsync(Guid transactionId, SubmitDTO <XsLadeRimpactDTO> model)
        {
            if (State.Transactions.ContainsKey(transactionId))
            {
                return;
            }

            var dto = model.Data;

            //Add
            XsLadeRimpactDO xsLadeRimpactDO = this.ObjectMapper.Map <XsLadeRimpactDO>(dto);

            xsLadeRimpactDO.CreateBy     = model.UserId;
            xsLadeRimpactDO.CreateByName = model.UserName;
            xsLadeRimpactDO.CreateDate   = System.DateTime.Now;
            xsLadeRimpactDO.ModityBy     = model.UserId;
            xsLadeRimpactDO.ModityByName = model.UserName;
            xsLadeRimpactDO.ModityDate   = System.DateTime.Now;
            bool bRet = await _xsLadeRimpactRepository.AddAsync(xsLadeRimpactDO);

            if (!bRet)
            {
                return;
            }

            //更新服务状态
            XsLadeRimpactState xsLadeRimpactState = this.ObjectMapper.Map <XsLadeRimpactState>(xsLadeRimpactDO);

            xsLadeRimpactState.Transactions[transactionId] = true;//执行成功赋值

            await this.Persist(ProcessAction.Create, xsLadeRimpactState);
        }
Пример #3
0
        /// <summary>
        /// 删除发货单作废
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <ApiResult> DelAsync(SubmitDTO <XsLadeRimpactDTO> model)
        {
            var dto = model.Data;

            if (dto.Version != this.State.Version)
            {
                return(ApiResultUtil.IsFailed("数据已被修改,请重新再加载!"));
            }
            dto.Version++;

            #region  除发货单作废
            //查对应发货单
            var xsLadeBaseResult = await this.GrainFactory.GetGrain <IXsLadeBaseStateGrain>(this.State.XLR_Lade).GetAsync();

            XsLadeBaseDTO xsLadeBaseDTO = xsLadeBaseResult.Success ? this.ObjectMapper.Map <XsLadeBaseDTO>(xsLadeBaseResult.Data) : null;
            //删除发货单作废
            XsLadeRimpactState xsLadeRimpactState = this.State;
            xsLadeRimpactState.IsDel        = 1;
            xsLadeRimpactState.ModityBy     = model.UserId;
            xsLadeRimpactState.ModityByName = model.UserName;
            xsLadeRimpactState.ModityDate   = System.DateTime.Now;
            xsLadeRimpactState.Version      = dto.Version;
            XsLadeRimpactDO xsLadeRimpactDO = this.ObjectMapper.Map <XsLadeRimpactDO>(xsLadeRimpactState);
            bool            bRet            = await _xsLadeRimpactRepository.SetAsync(xsLadeRimpactDO);;
            if (!bRet)
            {
                return(ApiResultUtil.IsFailed("数据更新失败!"));
            }
            #endregion

            //查对应应收款
            IList <XsReceReceivableDO> xsReceReceivableDOs = new List <XsReceReceivableDO>();
            if (xsLadeRimpactState.XLR_Type == "101")//本月
            {
                #region 更新发货单状态
                xsLadeBaseDTO.XLB_Status = "1";
                await this.GrainFactory.GetGrain <IXsLadeBaseStateGrain>(xsLadeBaseDTO.Id).UpdateAsync(new SubmitDTO <XsLadeBaseDTO>
                {
                    Data     = xsLadeBaseDTO,
                    UserId   = model.UserId,
                    UserName = model.UserName
                });

                #endregion

                #region 还原应收款
                var xsReceReceivableResult = await this.GrainFactory.GetGrain <IXsReceReceivableGrain>(this.GrainId).GetAllSync(new XsReceReceivableDTO
                {
                    XRC_BillID  = dto.XLR_Lade,
                    XRC_Origins = { "102", "103", "104" }
                });

                if (xsReceReceivableResult.Success && xsReceReceivableResult.Data.Count > 0)
                {
                    foreach (XsReceReceivableDO xsReceReceivableDO in xsReceReceivableResult.Data)
                    {
                        xsReceReceivableDO.IsDel = 0;
                        XsReceReceivableDTO xsReceReceivableDTO = this.ObjectMapper.Map <XsReceReceivableDTO>(xsReceReceivableDO);
                        await this.GrainFactory.GetGrain <IXsReceReceivableStateGrain>(xsReceReceivableDTO.Id).UpdateAsync(new SubmitDTO <XsReceReceivableDTO>
                        {
                            Data     = xsReceReceivableDTO,
                            UserId   = model.UserId,
                            UserName = model.UserName
                        });
                    }
                }
                #endregion
            }
            else if (xsLadeRimpactState.XLR_Type == "102")//跨月
            {
                #region  除调整应收款
                var xsReceReceivableResult = await this.GrainFactory.GetGrain <IXsReceReceivableGrain>(this.GrainId).GetAllSync(new XsReceReceivableDTO
                {
                    XRC_BillID  = dto.Id,
                    XRC_Origins = { "4102", "4103", "4104" }
                });

                if (xsReceReceivableResult.Success && xsReceReceivableResult.Data.Count > 0)
                {
                    foreach (XsReceReceivableDO xsReceReceivableDO in xsReceReceivableResult.Data)
                    {
                        xsReceReceivableDO.IsDel = 1;
                        XsReceReceivableDTO xsReceReceivableDTO = this.ObjectMapper.Map <XsReceReceivableDTO>(xsReceReceivableDO);
                        await this.GrainFactory.GetGrain <IXsReceReceivableStateGrain>(xsReceReceivableDTO.Id).UpdateAsync(new SubmitDTO <XsReceReceivableDTO>
                        {
                            Data     = xsReceReceivableDTO,
                            UserId   = model.UserId,
                            UserName = model.UserName
                        });
                    }
                }
                #endregion
            }

            await this.Persist(ProcessAction.Update, xsLadeRimpactState);

            return(ApiResultUtil.IsSuccess("处理成功!"));
        }
Пример #4
0
        /// <summary>
        /// 新增发货单作废
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <ApiResult> AddAsync(SubmitDTO <XsLadeRimpactDTO> model)
        {
            var dto = model.Data;

            #region 插入发货单作废
            //查对应发货单
            ApiResult <XsLadeBaseVO> xsLadeBaseResult = await this.GrainFactory.GetGrain <IXsLadeBaseStateGrain>(dto.XLR_Lade).GetAsync();

            XsLadeBaseDTO xsLadeBaseDTO = xsLadeBaseResult.Success ? this.ObjectMapper.Map <XsLadeBaseDTO>(xsLadeBaseResult.Data) : null;
            //插入发货单作废
            XsLadeRimpactDO xsLadeRimpactDO = this.ObjectMapper.Map <XsLadeRimpactDO>(dto);
            xsLadeRimpactDO.XLR_Total    = xsLadeBaseDTO.XLB_FactTotal;
            xsLadeRimpactDO.CreateBy     = model.UserId;
            xsLadeRimpactDO.CreateByName = model.UserName;
            xsLadeRimpactDO.CreateDate   = System.DateTime.Now;
            xsLadeRimpactDO.ModityBy     = model.UserId;
            xsLadeRimpactDO.ModityByName = model.UserName;
            xsLadeRimpactDO.ModityDate   = System.DateTime.Now;
            bool bRet = await _xsLadeRimpactRepository.AddAsync(xsLadeRimpactDO);;
            if (!bRet)
            {
                return(ApiResultUtil.IsFailed("数据插入失败!"));
            }
            #endregion

            if (dto.XLR_Type == "101")//本月
            {
                #region 更新发货单状态
                xsLadeBaseDTO.XLB_Status = "2";
                await this.GrainFactory.GetGrain <IXsLadeBaseStateGrain>(xsLadeBaseDTO.Id).UpdateAsync(new SubmitDTO <XsLadeBaseDTO>
                {
                    Data     = xsLadeBaseDTO,
                    UserId   = model.UserId,
                    UserName = model.UserName
                });

                #endregion

                #region  除应收款
                var xsReceReceivableResult = await this.GrainFactory.GetGrain <IXsReceReceivableGrain>(this.GrainId).GetAllSync(new XsReceReceivableDTO
                {
                    XRC_BillID  = dto.XLR_Lade,
                    XRC_Origins = { "102", "103", "104" }
                });

                if (xsReceReceivableResult.Success && xsReceReceivableResult.Data.Count > 0)
                {
                    foreach (XsReceReceivableDO xsReceReceivableDO in xsReceReceivableResult.Data)
                    {
                        xsReceReceivableDO.IsDel = 1;
                        XsReceReceivableDTO xsReceReceivableDTO = this.ObjectMapper.Map <XsReceReceivableDTO>(xsReceReceivableDO);
                        await this.GrainFactory.GetGrain <IXsReceReceivableStateGrain>(xsReceReceivableDTO.Id).UpdateAsync(new SubmitDTO <XsReceReceivableDTO>
                        {
                            Data     = xsReceReceivableDTO,
                            UserId   = model.UserId,
                            UserName = model.UserName
                        });
                    }
                }
                #endregion
            }
            else if (dto.XLR_Type == "102")//跨月
            {
                #region 插入调整应收款
                var xsReceReceivableResult = await this.GrainFactory.GetGrain <IXsReceReceivableGrain>(this.GrainId).GetAllSync(new XsReceReceivableDTO
                {
                    XRC_BillID  = dto.XLR_Lade,
                    XRC_Origins = { "102", "103", "104" }
                });

                if (xsReceReceivableResult.Success && xsReceReceivableResult.Data.Count > 0)
                {
                    foreach (XsReceReceivableDO xsReceReceivableDO in xsReceReceivableResult.Data)
                    {
                        XsReceReceivableDTO xsReceReceivableDTO = new XsReceReceivableDTO
                        {
                            Id          = await this.GrainFactory.GetGrain <IUtcUID>(GrainIdKey.UtcUIDGrainKey).NewID(),
                            XRC_SetDate = xsLadeRimpactDO.XLR_SetDate,
                            XRC_BillID  = xsLadeRimpactDO.Id,//作废主键
                            XRC_Origin  = "4" + xsReceReceivableDO.XRC_Origin,
                            XRC_Total   = -xsReceReceivableDO.XRC_Total,
                            XRC_Firm    = xsLadeRimpactDO.XLR_Firm
                        };
                        await this.GrainFactory.GetGrain <IXsReceReceivableStateGrain>(xsReceReceivableDTO.Id).AddAsync(new SubmitDTO <XsReceReceivableDTO>
                        {
                            Data     = xsReceReceivableDTO,
                            UserId   = model.UserId,
                            UserName = model.UserName
                        });
                    }
                }
                #endregion
            }

            //更新服务状态
            XsLadeRimpactState xsLadeRimpactState = this.ObjectMapper.Map <XsLadeRimpactState>(xsLadeRimpactDO);

            await this.Persist(ProcessAction.Create, xsLadeRimpactState);

            return(ApiResultUtil.IsSuccess("处理成功!"));
        }