コード例 #1
0
        private async Task <Approver_BillInfoResponse> GetBillInfoMain(Approver_BillInfoRequest approver_BillInfoRequest, DbTransaction trans)
        {
            var result = new Approver_BillInfoResponse();

            approver_BillInfoRequest.BeginDate = approver_BillInfoRequest.BeginDate >= DateTime.Parse("2019-11-15") ? approver_BillInfoRequest.BeginDate : DateTime.Parse("2019-11-16");
            try
            {
                TimeSpan allTimeSpanUsed = new TimeSpan();
                string   allUsedTime     = string.Empty;
                var      mainData        = new List <Approver_BillInfo>();

                var approvalCommentsmain = _sqlserverSql.Select <ApprovalComments>()
                                           .Where(
                    app =>
                    app.ApprovalID == approver_BillInfoRequest.JobNumber
                    &&
                    app.ApprovalDate >= approver_BillInfoRequest.BeginDate
                    &&
                    app.ApprovalDate <= approver_BillInfoRequest.EndDate
                    ).WithTransaction(trans);
                //var sql = approvalCommentsmain.ToSql();
                var approvalCommentsdata = await approvalCommentsmain.ToListAsync(o => new{
                    o.ApprovalDate,
                    o.BillNo,
                    o.AType,
                    o.ApprovalStatus,
                    o.ApprovalID,
                    o.CommentsId,
                    o.BillClassid
                });

                if (approvalCommentsdata.Count == 0)
                {
                    result.code    = -1;
                    result.message = "zz";
                    return(result);
                }
                var billclasss = await _sqlserverSql.Select <BillClass>().WithTransaction(trans).ToListAsync(b => new { b.BillClassid, b.BillName });

                foreach (var item in approvalCommentsdata)
                {
                    string   UsedTime         = string.Empty;
                    TimeSpan timespanUsedTime = new TimeSpan();
                    if (item.ApprovalStatus == 0)
                    {
                        timespanUsedTime = DateTime.Now - item.ApprovalDate.Value;
                        UsedTime         = CommonHelper.GetUsedTime(timespanUsedTime);
                        mainData.Add(new Approver_BillInfo
                        {
                            ApproverType  = item.AType,
                            BillType      = billclasss.FirstOrDefault(o => o.BillClassid == item.BillClassid).BillName.Trim(),
                            BillNo        = item.BillNo,
                            UsedTime      = UsedTime,
                            TimeSpanUsed  = timespanUsedTime,
                            ApprovalState = 0
                        });
                    }
                    else //已审批
                    {
                        //之前是否计算了这个单据的时间
                        var isExistBillNo = mainData.Where(o => o.BillNo == item.BillNo);
                        if (!isExistBillNo.Any())
                        {
                            //求出这个单据流程的上一级审批时间
                            var nowBillNoInfo = await _sqlserverSql.Select <ApprovalComments>().Where(c => c.BillNo == item.BillNo).OrderBy(c => c.ApprovalDate).WithTransaction(trans).ToListAsync();

                            //zhege wanyi shifou zai diyige shenpiguo
                            if (nowBillNoInfo[0].ApprovalID == item.ApprovalID)
                            {
                                DateTime beginTime = new DateTime();
                                //求开始时间
                                if (item.BillNo.ToLower().StartsWith("cl"))
                                {
                                    var expeany = await _sqlserverSql.Select <ExpeTrav>().Where(o => o.BillNo == item.BillNo).WithTransaction(trans).ToOneAsync();

                                    if (expeany != null)
                                    {
                                        beginTime = expeany.BillDate;
                                    }
                                }
                                else if (item.BillNo.ToLower().StartsWith("zdf"))
                                {
                                    var expeany = await _sqlserverSql.Select <ExpeEnteMent>().Where(o => o.BillNo == item.BillNo).WithTransaction(trans).ToOneAsync();

                                    if (expeany != null)
                                    {
                                        beginTime = expeany.BillDate;
                                    }
                                }
                                else
                                {
                                    var expeany = await _sqlserverSql.Select <ExpeOther>().Where(o => o.BillNo == item.BillNo).WithTransaction(trans).ToOneAsync();

                                    if (expeany != null)
                                    {
                                        beginTime = expeany.BillDate;
                                    }
                                }

                                if (beginTime >= approver_BillInfoRequest.BeginDate && beginTime <= approver_BillInfoRequest.EndDate)
                                {
                                    timespanUsedTime = item.ApprovalDate.Value - beginTime;
                                    UsedTime         = CommonHelper.GetUsedTime(timespanUsedTime);
                                    if (timespanUsedTime.TotalSeconds > 2)
                                    {
                                        mainData.Add(new Approver_BillInfo
                                        {
                                            ApproverType  = item.AType,
                                            BillType      = billclasss.FirstOrDefault(o => o.BillClassid == item.BillClassid).BillName.Trim(),
                                            BillNo        = item.BillNo,
                                            UsedTime      = UsedTime,
                                            TimeSpanUsed  = timespanUsedTime,
                                            ApprovalState = 1
                                        });
                                    }
                                }
                            }
                            else //不是第一个流程
                            {
                                //求出上一个流程的审批时间
                                var tempComment = nowBillNoInfo.Where(o => o.CommentsId == item.CommentsId).First();
                                int sygLc       = nowBillNoInfo.IndexOf(tempComment);
                                timespanUsedTime = tempComment.ApprovalDate.Value - nowBillNoInfo[sygLc - 1].ApprovalDate.Value;
                                UsedTime         = CommonHelper.GetUsedTime(timespanUsedTime);
                                // I am Very irritable, do not want to get a result that this bill 是否是这个人发起又审批的了
                                // if you see this,good luck to you
                                if (timespanUsedTime.TotalSeconds > 2)
                                {
                                    mainData.Add(new Approver_BillInfo
                                    {
                                        ApproverType  = item.AType,
                                        BillType      = billclasss.FirstOrDefault(o => o.BillClassid == item.BillClassid).BillName.Trim(),
                                        BillNo        = item.BillNo,
                                        UsedTime      = UsedTime,
                                        TimeSpanUsed  = timespanUsedTime,
                                        ApprovalState = 1
                                    });
                                }
                            }
                        }
                    }

                    if (timespanUsedTime.TotalSeconds > 2)
                    {
                        allTimeSpanUsed = allTimeSpanUsed + timespanUsedTime;
                        allUsedTime     = CommonHelper.GetUsedTime(allTimeSpanUsed);
                    }
                }
                if (mainData.Count == 0)
                {
                    result.code    = -1;
                    result.message = "获取数据失败";
                    return(result);
                }
                result.code    = 0;
                result.message = "获取数据成功";
                result.data    = new Approver_BillInfoData
                {
                    Total           = mainData.Count,
                    Items           = mainData,
                    AllTimeSpanUsed = allTimeSpanUsed,
                    AllTimeUsed     = allUsedTime
                };

                return(result);
            }
            catch (Exception ex)
            {
                result.code    = -1;
                result.message = "获取数据失败" + ex.Message;
                return(result);
            }
        }
コード例 #2
0
        public async Task <Approver_BillInfoResponse> GetBillInfo(Approver_BillInfoRequest approver_BillInfoRequest)
        {
            if (approver_BillInfoRequest.Limit == 0 || approver_BillInfoRequest.Page == 0)
            {
                approver_BillInfoRequest.Limit = 10;
                approver_BillInfoRequest.Page  = 1;
            }
            var result = new Approver_BillInfoResponse();

            if (approver_BillInfoRequest == null)
            {
                result.code    = -1;
                result.message = "请检查入参";
                _ = Task.Run(() =>
                {
                    CommonHelper.TxtLog("统计审批人单据出参", JsonConvert.SerializeObject(result));
                });
                return(result);
            }
            approver_BillInfoRequest.BeginDate = approver_BillInfoRequest.BeginDate >= DateTime.Parse("2019-11-22") ? approver_BillInfoRequest.BeginDate : DateTime.Parse("2019-11-22");
            try
            {
                CommonHelper.TxtLog("统计审批人单据入参", JsonConvert.SerializeObject(approver_BillInfoRequest));
                TimeSpan allTimeSpanUsed = new TimeSpan();
                string   allUsedTime     = string.Empty;
                var      mainData        = new List <Approver_BillInfo>();

                var approvalCommentsmain = _sqlserverSql.Select <ApprovalComments>()
                                           .Where(
                    app =>
                    app.ApprovalID == approver_BillInfoRequest.JobNumber
                    &&
                    app.ApprovalDate >= approver_BillInfoRequest.BeginDate
                    &&
                    app.ApprovalDate <= approver_BillInfoRequest.EndDate
                    );

                var approvalCommentsdata = await approvalCommentsmain.ToListAsync();

                if (approvalCommentsdata.Count == 0)
                {
                    result.code    = -1;
                    result.message = "请检查入参";
                    return(result);
                }
                var billclasss = await _sqlserverSql.Select <BillClass>().ToListAsync(b => new { b.BillClassid, b.BillName });

                foreach (var item in approvalCommentsdata)
                {
                    string   UsedTime         = string.Empty;
                    TimeSpan timespanUsedTime = new TimeSpan();
                    //查询当前单号的花费时间
                    //如果是正在进行的,用当前时间减去
                    if (item.ApprovalStatus == 0)
                    {
                        timespanUsedTime = DateTime.Now - item.ApprovalDate.Value;
                        UsedTime         = CommonHelper.GetUsedTime(timespanUsedTime);
                        mainData.Add(new Approver_BillInfo
                        {
                            ApproverType  = item.AType,
                            BillType      = billclasss.FirstOrDefault(o => o.BillClassid == item.BillClassid).BillName.Trim(),
                            BillNo        = item.BillNo,
                            UsedTime      = UsedTime,
                            TimeSpanUsed  = timespanUsedTime,
                            ApprovalState = 0
                        });
                    }
                    else //已审批
                    {
                        //之前是否计算了这个单据的时间
                        var isExistBillNo = mainData.Where(o => o.BillNo == item.BillNo);
                        if (!isExistBillNo.Any())
                        {
                            //求出这个单据流程的上一级审批时间
                            var nowBillNoInfo = await _sqlserverSql.Select <ApprovalComments>().Where(c => c.BillNo == item.BillNo).OrderBy(c => c.ApprovalDate).ToListAsync();

                            //zhege wanyi shifou zai diyige shenpiguo
                            if (nowBillNoInfo[0].ApprovalID == item.ApprovalID)
                            {
                                DateTime beginTime = new DateTime();
                                //求开始时间
                                if (item.BillNo.ToLower().StartsWith("cl"))
                                {
                                    beginTime = await _sqlserverSql.Select <ExpeTrav>().Where(o => o.BillNo == item.BillNo).FirstAsync(o => o.BillDate);
                                }
                                else if (item.BillNo.ToLower().StartsWith("zdf"))
                                {
                                    beginTime = await _sqlserverSql.Select <ExpeEnteMent>().Where(o => o.BillNo == item.BillNo).FirstAsync(o => o.BillDate);
                                }
                                else
                                {
                                    beginTime = await _sqlserverSql.Select <ExpeOther>().Where(o => o.BillNo == item.BillNo).FirstAsync(o => o.BillDate);
                                }


                                if (beginTime >= approver_BillInfoRequest.BeginDate && beginTime <= approver_BillInfoRequest.EndDate)
                                {
                                    timespanUsedTime = item.ApprovalDate.Value - beginTime;
                                    UsedTime         = CommonHelper.GetUsedTime(timespanUsedTime);
                                    if (timespanUsedTime.TotalSeconds > 2)
                                    {
                                        mainData.Add(new Approver_BillInfo
                                        {
                                            ApproverType  = item.AType,
                                            BillType      = billclasss.FirstOrDefault(o => o.BillClassid == item.BillClassid).BillName.Trim(),
                                            BillNo        = item.BillNo,
                                            UsedTime      = UsedTime,
                                            TimeSpanUsed  = timespanUsedTime,
                                            ApprovalState = 1
                                        });
                                    }
                                }
                            }
                            else //不是第一个流程
                            {
                                //求出上一个流程的审批时间
                                var tempComment = nowBillNoInfo.Where(o => o.CommentsId == item.CommentsId).First();
                                int sygLc       = nowBillNoInfo.IndexOf(tempComment);
                                timespanUsedTime = tempComment.ApprovalDate.Value - nowBillNoInfo[sygLc - 1].ApprovalDate.Value;
                                UsedTime         = CommonHelper.GetUsedTime(timespanUsedTime);
                                if (timespanUsedTime.TotalSeconds > 2)
                                {
                                    mainData.Add(new Approver_BillInfo
                                    {
                                        ApproverType  = item.AType,
                                        BillType      = billclasss.FirstOrDefault(o => o.BillClassid == item.BillClassid).BillName.Trim(),
                                        BillNo        = item.BillNo,
                                        UsedTime      = UsedTime,
                                        TimeSpanUsed  = timespanUsedTime,
                                        ApprovalState = 1
                                    });
                                }
                            }

                            // I am Very irritable, do not want to get a result that this bill 是否是这个人发起又审批的了
                            // if you see this,good luck to you
                        }
                        else//那就是一个单据多个审批角色,时间忽略不计,角色上当前的
                        {
                            var existIndex = mainData.IndexOf(isExistBillNo.FirstOrDefault());
                            mainData[existIndex].ApproverType = $"{mainData[existIndex].ApproverType},{item.AType}";
                        }
                    }

                    if (timespanUsedTime.TotalSeconds > 2)
                    {
                        allTimeSpanUsed = allTimeSpanUsed + timespanUsedTime;
                        allUsedTime     = CommonHelper.GetUsedTime(allTimeSpanUsed);
                    }
                }
                if (mainData.Count == 0)
                {
                    result.code    = -1;
                    result.message = "获取数据失败";
                    return(result);
                }
                var maindatafy = mainData.Skip((approver_BillInfoRequest.Page - 1) * approver_BillInfoRequest.Limit).Take(approver_BillInfoRequest.Limit).ToList();
                result.code    = 0;
                result.message = "获取数据成功";
                result.data    = new Approver_BillInfoData
                {
                    Total           = mainData.Count,
                    Items           = maindatafy,
                    AllTimeSpanUsed = allTimeSpanUsed,
                    AllTimeUsed     = allUsedTime
                };

                return(result);
            }
            catch (Exception ex)
            {
                result.code    = -1;
                result.message = "获取数据失败" + ex.Message;
                _ = Task.Run(() =>
                {
                    CommonHelper.TxtLog("统计审批人单据出参", JsonConvert.SerializeObject(result));
                    CommonHelper.TxtLog("异常错误信息", JsonConvert.SerializeObject(ex));
                });
                return(result);
            }
        }