public async Task <IActionResult> GetRecondReportList([FromBody] GetRecondReportListRequest requestDto)
        {
            var commonReportBiz = new CommonReportThemeBiz();
            var approveModel    = await commonReportBiz.GetReportApproveModelByGuid(requestDto.ApproveGuid);

            if (approveModel == null)
            {
                return(Failed(ErrorCode.DataBaseError, "无数据,请检查!"));
            }
            if (!IsRightStatusForOperation(approveModel))
            {
                return(Failed(ErrorCode.DataBaseError, "该申请状态暂无权限查看列表,请检查!"));
            }
            var themeModel = await commonReportBiz.GetReportThemeModelByThemeGuid(approveModel.ThemeGuid);

            if (themeModel == null)
            {
                return(Failed(ErrorCode.DataBaseError, "无主题数据,请检查!"));
            }
            if (string.IsNullOrWhiteSpace(themeModel.SQLStr))
            {
                return(Failed(ErrorCode.DataBaseError, "主题SQL语句为空,请检查!"));
            }

            GetReportListRequest request = new GetReportListRequest
            {
                SqlStr = themeModel.SQLStr //暂时不分页
                                           //PageIndex = requestDto.PageIndex,
                                           //PageSize = requestDto.PageSize
            };

            try
            {
                if (!IsRightSQLStr(request.SqlStr))
                {
                    return(Failed(ErrorCode.DataBaseError, "SQL语句有误,请检查!"));
                }
                var responseDto = commonReportBiz.GetReportList(request);
                if (responseDto == null)
                {
                    return(Failed(ErrorCode.DataBaseError, "获取报表数据失败,请检查!"));
                }
                //foreach (var item in responseDto.CurrentPage)
                //{
                //    item.Phone = Regex.Replace(item.Phone, "(\\d{3})\\d{4}(\\d{4})", "$1****$2");
                //}

                return(Success(responseDto));
            }
            catch (Exception ex)
            {
                return(Failed(ErrorCode.DataBaseError, "SQL语句执行错误,请检查!"));
            }
        }
        public async Task <IActionResult> ITApproveSql([FromBody] ITApproveSqlRequest requestDto)
        {
            //var currentUserGuid = "f071f4959e9a4f118095f58de3ce548a";//zhikai
            //if (!UserID.Equals(currentUserGuid))
            //{
            //    return Failed(ErrorCode.DataBaseError, "您不是SQL审核人,无法操作!");
            //}
            var commonReportBiz = new CommonReportThemeBiz();
            var approveModel    = await commonReportBiz.GetReportApproveModelByGuid(requestDto.ApproveGuid);

            if (approveModel == null)
            {
                return(Failed(ErrorCode.DataBaseError, "无审批数据,请检查!"));
            }
            if (approveModel.SQLWriterGuid.Equals(UserID))
            {
                return(Failed(ErrorCode.DataBaseError, "无法审批,SQL审批需要不同的人操作!"));
            }
            var themeModel = await commonReportBiz.GetReportThemeModelByThemeGuid(approveModel.ThemeGuid);

            if (themeModel == null)
            {
                return(Failed(ErrorCode.DataBaseError, "无主题数据,请检查!"));
            }

            if (IsITSQLRightStatusForOperation(approveModel))
            {
                approveModel.ApprovedReason   = requestDto.ApprovedReason;
                approveModel.ApprovedDatetime = DateTime.Now;
                approveModel.SQLApproverGuid  = UserID;
                approveModel.LastUpdatedBy    = UserID;
                approveModel.LastUpdatedDate  = DateTime.Now;
                var result = false;
                if (requestDto.ApproveStatus.ToString().Equals(ReportApproveStatusEnum.Adopt.ToString()))
                {
                    if (!IsRightSQLStr(requestDto.ThemeSqlStr))
                    {
                        return(Failed(ErrorCode.UserData, "SQL有误,请检查!"));
                    }
                    themeModel.SQLStr          = requestDto.ThemeSqlStr;
                    themeModel.LastUpdatedBy   = UserID;
                    themeModel.LastUpdatedDate = DateTime.Now;

                    approveModel.ApproveScheduleEnum = ReportApproveScheduleEnums.Approve.ToString();
                    approveModel.ApproveStatus       = ReportApproveStatusEnum.Pending.ToString();

                    result = await commonReportBiz.UpdateThemeAndApproveModel(themeModel, approveModel);
                }
                if (requestDto.ApproveStatus.ToString().Equals(ReportApproveStatusEnum.Reject.ToString()))
                {
                    if (string.IsNullOrWhiteSpace(requestDto.ApprovedReason))
                    {
                        return(Failed(ErrorCode.UserData, "审核驳回,原因不能为空!"));
                    }
                    approveModel.ApproveScheduleEnum = ReportApproveScheduleEnums.SqlWrite.ToString();
                    approveModel.ApproveStatus       = ReportApproveStatusEnum.Reject.ToString();
                    result = await commonReportBiz.UpdateApproveModel(approveModel);
                }
                return(Success(result));
            }
            else
            {
                return(Failed(ErrorCode.DataBaseError, "该申请状态不是可审批状态,请检查!"));
            }
        }
        public async Task <IActionResult> ITSubmitSqlOrRefuseDemand([FromBody] ITSubmitSqlOrRefuseDemandRequest requestDto)
        {
            //var currentUserGuid = "942c0c1db7794095ac9e2abfe6bde264";//zhiliang 942c0c1db7794095ac9e2abfe6bde264
            //if (!UserID.Equals(currentUserGuid))
            //{
            //    return Failed(ErrorCode.DataBaseError, "您不是SQL撰写人,无法操作!");
            //}
            var commonReportBiz = new CommonReportThemeBiz();
            var approveModel    = await commonReportBiz.GetReportApproveModelByGuid(requestDto.ApproveGuid);

            if (approveModel == null)
            {
                return(Failed(ErrorCode.DataBaseError, "无审批数据,请检查!"));
            }
            var themeModel = await commonReportBiz.GetReportThemeModelByThemeGuid(approveModel.ThemeGuid);

            if (themeModel == null)
            {
                return(Failed(ErrorCode.DataBaseError, "无主题数据,请检查!"));
            }
            if (IsITRightStatusForOperation(approveModel))
            {
                approveModel.ApprovedReason   = requestDto.ApprovedReason;
                approveModel.ApprovedDatetime = DateTime.Now;
                approveModel.SQLWriterGuid    = UserID;
                approveModel.LastUpdatedBy    = UserID;
                approveModel.LastUpdatedDate  = DateTime.Now;
                var result = false;
                if (requestDto.ApproveStatus.ToString().Equals(ReportApproveStatusEnum.Adopt.ToString()))
                {
                    if (!IsRightSQLStr(requestDto.Sqlstr))
                    {
                        return(Failed(ErrorCode.UserData, "SQL有误,请检查!"));
                    }
                    themeModel.SQLStr          = requestDto.Sqlstr;
                    themeModel.LastUpdatedBy   = UserID;
                    themeModel.LastUpdatedDate = DateTime.Now;

                    approveModel.ApproveScheduleEnum = ReportApproveScheduleEnums.SqlWrite.ToString();
                    approveModel.ApproveStatus       = ReportApproveStatusEnum.Pending.ToString();

                    var conditionModelList = new List <ReportConditionModel>();
                    foreach (var item in requestDto.ConditionInfoList)
                    {
                        if (!IsRightConditionSQLStr(item.FieldValueSql))
                        {
                            return(Failed(ErrorCode.UserData, "条件SQL有误,请检查!"));
                        }
                        var model = new ReportConditionModel
                        {
                            ConditionGuid   = Guid.NewGuid().ToString("N"),
                            ThemeGuid       = approveModel.ThemeGuid,
                            Name            = item.Name,
                            FieldCode       = item.FieldCode,
                            FieldValueSql   = item.FieldValueSql,//需要加验证
                            IsRightSql      = item.IsRightSql,
                            ValueType       = item.ValueType,
                            ValueRange      = item.ValueRange,
                            ExtensionField  = "",
                            Sort            = item.Sort,
                            CreatedBy       = UserID,
                            CreationDate    = DateTime.Now,
                            LastUpdatedBy   = UserID,
                            LastUpdatedDate = DateTime.Now,
                            OrgGuid         = "..",
                            Enable          = true
                        };
                        conditionModelList.Add(model);
                    }
                    result = await commonReportBiz.UpdateThemeAndApproveModel(themeModel, approveModel, conditionModelList);
                }

                if (requestDto.ApproveStatus.ToString().Equals(ReportApproveStatusEnum.Reject.ToString()))
                {
                    if (string.IsNullOrWhiteSpace(requestDto.ApprovedReason))
                    {
                        return(Failed(ErrorCode.UserData, "审核驳回,原因不能为空!"));
                    }
                    approveModel.ApproveScheduleEnum = ReportApproveScheduleEnums.Apply.ToString();
                    approveModel.ApproveStatus       = ReportApproveStatusEnum.Reject.ToString();
                    result = await commonReportBiz.UpdateApproveModel(approveModel);
                }
                return(Success(result));
            }
            else
            {
                return(Failed(ErrorCode.DataBaseError, "该申请状态不是可审批状态,请检查!"));
            }
        }
        public async Task <IActionResult> ApplyCreateReport([FromBody] ApplyCreateReportRequest requestDto)
        {
            var result          = false;
            var commonReportBiz = new CommonReportThemeBiz();

            if (string.IsNullOrWhiteSpace(requestDto.ApproveGuid))
            {
                //新申请
                var themeModel = new ReportThemeModel()
                {
                    ThemeGuid = Guid.NewGuid().ToString("N"),
                    Name      = requestDto.Name,
                    Demand    = requestDto.Demand,
                    //ConditionDemand = requestDto.ConditionDemand,
                    CreatedBy       = UserID,
                    CreationDate    = DateTime.Now,
                    LastUpdatedBy   = UserID,
                    LastUpdatedDate = DateTime.Now,
                    //PlatformType = requestDto.PlatformType,
                    Enable = true
                };
                var approveModel = new ReportApproveModel()
                {
                    ApproveGuid   = Guid.NewGuid().ToString("N"),
                    ThemeGuid     = themeModel.ThemeGuid,
                    ApplyUserGuid = UserID,//申请提交人
                    //SQLWriterGuid = "",//需求审批人
                    //SQLApproverGuid = "",//sql审核人
                    //ListApproverGuid="",//列表审核人
                    //ApprovedReason= null,
                    //ApprovedDatetime = null,
                    ApproveScheduleEnum = ReportApproveScheduleEnums.Apply.ToString(),
                    ApproveStatus       = ReportApproveStatusEnum.Pending.ToString(),
                    CreatedBy           = UserID,
                    CreationDate        = DateTime.Now,
                    LastUpdatedBy       = UserID,
                    LastUpdatedDate     = DateTime.Now,
                    OrgGuid             = "test",
                    Enable = true
                };
                result = await commonReportBiz.ApplyCreateReport(themeModel, approveModel);
            }
            else
            {
                //重新申请
                var approveModel = await commonReportBiz.GetReportApproveModelByGuid(requestDto.ApproveGuid);

                if (approveModel == null)
                {
                    return(Failed(ErrorCode.DataBaseError, "审批记录为空!"));
                }
                //驳回状态才可重新申请
                if (!approveModel.ApproveStatus.Equals(ReportApproveStatusEnum.Reject.ToString()))
                {
                    return(Failed(ErrorCode.DataBaseError, "该审批没有被驳回!"));
                }

                var themeModel = await commonReportBiz.GetReportThemeModelByThemeGuid(approveModel.ThemeGuid);

                if (approveModel == null)
                {
                    return(Failed(ErrorCode.DataBaseError, "查询不到该审批记录的申请信息!"));
                }
                themeModel.Name   = requestDto.Name;
                themeModel.Demand = requestDto.Demand;
                //themeModel.ConditionDemand = requestDto.ConditionDemand;
                themeModel.LastUpdatedBy   = UserID;
                themeModel.LastUpdatedDate = DateTime.Now;

                approveModel.ApproveScheduleEnum = ReportApproveScheduleEnums.Apply.ToString();
                approveModel.ApproveStatus       = ReportApproveStatusEnum.Pending.ToString();
                approveModel.LastUpdatedBy       = UserID;
                approveModel.LastUpdatedDate     = DateTime.Now;
                result = await commonReportBiz.UpdateThemeAndApproveModel(themeModel, approveModel);
            }
            return(Success(result));
        }