Beispiel #1
0
        /// <summary>
        /// 待审批信息
        /// </summary>
        /// <param name="sendAppMessageModel"></param>
        private void GetWaitAuditMessage(SendAppMessageModel sendAppMessageModel)
        {
            if (sendAppMessageModel.OrderType == OrderSourceTypeEnum.AduitOrder &&
                sendAppMessageModel.SendType == SendAppMessageTypeEnum.WaitAuditNotice)
            {
                List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities =
                    _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(
                        n => n.AduitOrderId == sendAppMessageModel.OrderId, true).ToList();
                if (corpAduitOrderDetailEntities == null || corpAduitOrderDetailEntities.Count == 0)
                {
                    return;
                }
                string orderType = corpAduitOrderDetailEntities[0].OrderType.ValueToDescription <OrderSourceTypeEnum>();
                string orderId   = corpAduitOrderDetailEntities[0].OrderId.ToString();
                if (corpAduitOrderDetailEntities[0].OrderType == (int)OrderSourceTypeEnum.FltModApply ||
                    corpAduitOrderDetailEntities[0].OrderType == (int)OrderSourceTypeEnum.FltRetApply)
                {
                    FltRetModApplyEntity fltRetModApplyEntity =
                        base.Context.Set <FltRetModApplyEntity>().Find(corpAduitOrderDetailEntities[0].OrderId);
                    orderId = fltRetModApplyEntity?.OrderId.ToString();
                }

                sendAppMessageModel.SendContent = string.Format("{0}{1}{2}需要您进行审批", orderType,
                                                                (orderType.Contains("申请") ? "" : "订单"), orderId);
            }
        }
        public CorpAduitOrderInfoModel GetAduitOrderInfoById(int aduitOrderId)
        {
            CorpAduitOrderEntity corpAduitOrderEntity = _corpAduitOrderDal.Find <CorpAduitOrderEntity>(aduitOrderId);

            CorpAduitOrderInfoModel corpAduitOrderInfoModel =
                Mapper.Map <CorpAduitOrderEntity, CorpAduitOrderInfoModel>(corpAduitOrderEntity);

            //审批单与订单关联信息
            List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities =
                _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(
                    n => n.AduitOrderId == corpAduitOrderEntity.AduitOrderId, true).ToList();

            corpAduitOrderInfoModel.OrderDetailList =
                Mapper.Map <List <CorpAduitOrderDetailEntity>, List <CorpAduitOrderDetailModel> >(
                    corpAduitOrderDetailEntities);
            //审批环节信息
            List <CorpAduitOrderFlowEntity> corpAduitOrderFlowEntities =
                _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>(
                    n => n.AduitOrderId == corpAduitOrderEntity.AduitOrderId, true).ToList();

            corpAduitOrderInfoModel.FlowList =
                Mapper.Map <List <CorpAduitOrderFlowEntity>, List <CorpAduitOrderFlowModel> >(
                    corpAduitOrderFlowEntities);
            //审批日志信息
            List <CorpAduitOrderLogEntity> corpAduitOrderLogEntities =
                _corpAduitOrderLogDal.Query <CorpAduitOrderLogEntity>(
                    n => n.AduitOrderId == corpAduitOrderEntity.AduitOrderId, true).ToList();

            corpAduitOrderInfoModel.LogList =
                Mapper.Map <List <CorpAduitOrderLogEntity>, List <CorpAduitOrderLogModel> >(
                    corpAduitOrderLogEntities);

            List <CustomerModel> customerModels =
                _getCustomerBll.GetCustomerByCidList(corpAduitOrderInfoModel.AduitCidList);

            if (corpAduitOrderInfoModel.FlowList != null && corpAduitOrderInfoModel.FlowList.Count > 0)
            {
                corpAduitOrderInfoModel.FlowList.ForEach(n =>
                {
                    n.FlowCustomerName = customerModels?.Find(x => x.Cid == n.FlowCid)?.RealName;
                });
            }


            if (corpAduitOrderInfoModel.LogList != null && corpAduitOrderInfoModel.LogList.Count > 0)
            {
                corpAduitOrderInfoModel.LogList.ForEach(n =>
                {
                    if (n.DealCid.HasValue)
                    {
                        n.DealCustomerName = customerModels?.Find(x => x.Cid == n.DealCid.Value)?.RealName;
                    }
                });
            }

            return(corpAduitOrderInfoModel);
        }
Beispiel #3
0
        public bool CheckAduitCidHasOrderId(int cid, int orderId)
        {
            List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities =
                _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(
                    n => n.OrderId == orderId, true).ToList();

            if (corpAduitOrderDetailEntities == null || corpAduitOrderDetailEntities.Count == 0)
            {
                return(false);
            }
            List <int> aduitOrderIdList = new List <int>();

            corpAduitOrderDetailEntities.ForEach(n =>
            {
                aduitOrderIdList.Add(n.AduitOrderId);
            });

            int count =
                _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>(
                    n => aduitOrderIdList.Contains(n.AduitOrderId) && n.FlowCid == cid, true).Count();

            if (count > 0)
            {
                return(true);
            }
            return(false);
        }
        /// <summary>
        /// 获取待审批信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public AuditOrderListModel GetWaitCorpAduitOrderList(AuditOrderListQueryModel query)
        {
            AuditOrderListModel resultModel = new AuditOrderListModel();

            #region 分页查询
            var select = from aduitOrder in Context.Set <CorpAduitOrderEntity>().AsNoTracking()
                         join
                         flow in Context.Set <CorpAduitOrderFlowEntity>().AsNoTracking()
                         on new { AduitOrderId = aduitOrder.AduitOrderId, CurrentFlow = aduitOrder.CurrentFlow } equals
            new { AduitOrderId = flow.AduitOrderId, CurrentFlow = flow.Flow }
            into a
            from flow in a.DefaultIfEmpty()
            where aduitOrder.CurrentFlow > 0 && flow.FlowCid == query.AuditCid && !flow.DealResult.HasValue &&
            aduitOrder.Status != 7 && aduitOrder.Status != 6 && (aduitOrder.IsDel ?? 0) == 0
            select new AuditOrderListDataModel()
            {
                Id              = aduitOrder.AduitOrderId,
                AuditStatusInt  = aduitOrder.Status,
                CurrentAuditCid = flow.FlowCid,
                CreateTime      = aduitOrder.CreateTime,
                CurrentFlow     = aduitOrder.CurrentFlow
            };

            if (query.AllowShowDataBeginTime.HasValue)
            {
                select = select.Where(n => n.CreateTime > query.AllowShowDataBeginTime.Value);
            }

            resultModel.TotalCount = select.Count();//查询所有结果的数量
            select =
                select.OrderByDescending(n => n.CreateTime).Skip(query.PageSize * (query.PageIndex - 1)).Take(query.PageSize);
            resultModel.DataList = select.ToList();//分页结果
            if (resultModel.DataList == null || resultModel.DataList.Count == 0)
            {
                return(resultModel);
            }

            #endregion

            List <int> aduitOrderIdList = new List <int>();
            resultModel.DataList.ForEach(n =>
            {
                aduitOrderIdList.Add(n.Id);
            });

            List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities =
                _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(
                    n => aduitOrderIdList.Contains(n.AduitOrderId),
                    true).ToList();

            List <AuditOrderDetailModel> auditOrderDetailModels = new List <AuditOrderDetailModel>();
            foreach (var detail in corpAduitOrderDetailEntities)
            {
                AuditOrderDetailModel model = new AuditOrderDetailModel()
                {
                    OrderId   = detail.OrderId,
                    Id        = detail.AduitOrderId,
                    OrderType = detail.OrderType.ValueToEnum <OrderSourceTypeEnum>()
                };
                auditOrderDetailModels.Add(model);
            }

            foreach (var aduitOrder in resultModel.DataList)
            {
                aduitOrder.DetailList = auditOrderDetailModels.FindAll(n => n.Id == aduitOrder.Id);
            }

            return(resultModel);
        }
Beispiel #5
0
        /// <summary>
        /// 审批
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public BaseDealAduitResultModel DoAduit(BaseDealAduitModel model)
        {
            CorpAduitOrderEntity corpAduitOrderEntity = _corpAduitOrderDal.Find <CorpAduitOrderEntity>(model.AduitOrderId);
            List <int>           statusList           = new List <int>()
            {
                (int)CorpAduitOrderStatusEnum.W,
                (int)CorpAduitOrderStatusEnum.P,
                (int)CorpAduitOrderStatusEnum.W1,
                (int)CorpAduitOrderStatusEnum.P1,
                (int)CorpAduitOrderStatusEnum.P2
            };

            if (corpAduitOrderEntity.Status == (int)CorpAduitOrderStatusEnum.J)
            {
                throw new Exception("当前审批已被拒绝");
            }

            if (!statusList.Contains(corpAduitOrderEntity.Status))
            {
                throw new Exception("当前审批单状态异常");
            }

            if (corpAduitOrderEntity.CurrentFlow != model.CurrentFlow)
            {
                throw new Exception("当前审批环节异常");
            }


            //获取当前环节信息
            List <CorpAduitOrderFlowEntity> flowList =
                _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>(n => n.AduitOrderId == model.AduitOrderId)
                .ToList();

            //判断当前审批单订单是否已经被取消
            if (!CheckOrderIsCancel(corpAduitOrderEntity))
            {
                throw new MojoryException(MojoryApiResponseCode.AduitCancelOrder, "审批单中的订单已经被取消,系统自动设置审批单过期",
                                          flowList.Find(n => n.Flow == -1).FlowCid);
            }

            List <CorpAduitOrderFlowEntity> corpAduitOrderFlowEntities =
                flowList.FindAll(n => n.Flow == corpAduitOrderEntity.CurrentFlow);

            List <int> nextFlowCidList = new List <int>();

            if (corpAduitOrderFlowEntities.Count == 1)
            {
                SingleAduit(model, corpAduitOrderEntity, corpAduitOrderFlowEntities[0], ref nextFlowCidList);
            }
            else if (corpAduitOrderFlowEntities.Count > 1)
            {
                TogetherAduit(model, corpAduitOrderEntity, corpAduitOrderFlowEntities, ref nextFlowCidList);
            }

            List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities =
                _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(n => n.AduitOrderId == model.AduitOrderId,
                                                                            true).ToList();

            BaseDealAduitResultModel resultModel = new BaseDealAduitResultModel()
            {
                AduitOrderId        = model.AduitOrderId,
                IsSuccessed         = true,
                DetailList          = new List <BaseDealAduitResultDetailModel>(),
                CreateAduitOrderCid = flowList.Find(n => n.Flow == -1).FlowCid,
                IsFinished          =
                    (corpAduitOrderEntity.Status == (int)CorpAduitOrderStatusEnum.F ||
                     corpAduitOrderEntity.Status == (int)CorpAduitOrderStatusEnum.J),
                NextFlowCidList  = nextFlowCidList,
                AduitOrderStatus = corpAduitOrderEntity.Status.ValueToEnum <CorpAduitOrderStatusEnum>()
            };

            corpAduitOrderDetailEntities.ForEach(n =>
            {
                resultModel.DetailList.Add(new BaseDealAduitResultDetailModel()
                {
                    OrderId         = n.OrderId,
                    OrderSourceType = n.OrderType.ValueToEnum <OrderSourceTypeEnum>()
                });
            });

            return(resultModel);
        }
        public int Copy(int copyFromOrderId, int newOrderId)
        {
            CorpAduitOrderDetailEntity copyAduitOrderDetailEntity =
                _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(
                    n => n.OrderId == copyFromOrderId, true).FirstOrDefault();

            if (copyAduitOrderDetailEntity != null)
            {
                #region 获取原始审批单
                CorpAduitOrderEntity copyCorpAduitOrderEntity =
                    _corpAduitOrderDal.Find <CorpAduitOrderEntity>(copyAduitOrderDetailEntity.AduitOrderId);

                List <CorpAduitOrderDetailEntity> copyCorpAduitOrderDetailEntities =
                    _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(
                        n => n.AduitOrderId == copyCorpAduitOrderEntity.AduitOrderId, true).ToList();

                List <CorpAduitOrderFlowEntity> copyCorpAduitOrderFlowEntities =
                    _corpAduitOrderFlowDal.Query <CorpAduitOrderFlowEntity>(
                        n => n.AduitOrderId == copyCorpAduitOrderEntity.AduitOrderId, true).ToList();

                List <CorpAduitOrderLogEntity> copyCorpAduitOrderLogEntities =
                    _corpAduitOrderLogDal.Query <CorpAduitOrderLogEntity>(
                        n => n.AduitOrderId == copyCorpAduitOrderEntity.AduitOrderId, true).ToList();
                #endregion

                #region  制原始审批单
                CorpAduitOrderEntity corpAduitOrderEntity =
                    Mapper.Map <CorpAduitOrderEntity, CorpAduitOrderEntity>(copyCorpAduitOrderEntity);
                corpAduitOrderEntity = _corpAduitOrderDal.Insert(corpAduitOrderEntity);

                List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities =
                    Mapper.Map <List <CorpAduitOrderDetailEntity>, List <CorpAduitOrderDetailEntity> >(
                        copyCorpAduitOrderDetailEntities);
                foreach (var corpAduitOrderDetailEntity in corpAduitOrderDetailEntities)
                {
                    corpAduitOrderDetailEntity.AduitOrderId = corpAduitOrderEntity.AduitOrderId;
                    corpAduitOrderDetailEntity.OrderId      = newOrderId;
                    _corpAduitOrderDetailDal.Insert(corpAduitOrderDetailEntity);
                }

                List <CorpAduitOrderFlowEntity> corpAduitOrderFlowEntities =
                    Mapper.Map <List <CorpAduitOrderFlowEntity>, List <CorpAduitOrderFlowEntity> >(
                        copyCorpAduitOrderFlowEntities);
                foreach (var corpAduitOrderFlowEntity in corpAduitOrderFlowEntities)
                {
                    corpAduitOrderFlowEntity.AduitOrderId = corpAduitOrderEntity.AduitOrderId;
                    _corpAduitOrderFlowDal.Insert(corpAduitOrderFlowEntity);
                }

                List <CorpAduitOrderLogEntity> corpAduitOrderLogEntities =
                    Mapper.Map <List <CorpAduitOrderLogEntity>, List <CorpAduitOrderLogEntity> >(
                        copyCorpAduitOrderLogEntities);
                foreach (var corpAduitOrderLogEntity in corpAduitOrderLogEntities)
                {
                    corpAduitOrderLogEntity.AduitOrderId = corpAduitOrderEntity.AduitOrderId;
                    _corpAduitOrderLogDal.Insert(corpAduitOrderLogEntity);
                }
                #endregion

                return(corpAduitOrderEntity.AduitOrderId);
            }

            return(0);
        }