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> CreateReport([FromBody] CreateReportRequest requestDto)
        {
            //简单过滤SqlStr  格式必须是  select @ColumnStr from table
            if (!IsRightPreviewSql(requestDto.Sqlstr))
            {
                return(Failed(ErrorCode.DataBaseError, "SQL格式有误,请检查!"));
            }
            var result          = false;
            var commonReportBiz = new CommonReportThemeBiz();
            //新申请
            var themeModel = new ReportThemeModel()
            {
                ThemeGuid       = Guid.NewGuid().ToString("N"),
                ApplyUserName   = requestDto.ApplyUserName,
                Name            = requestDto.ReportName,
                Demand          = requestDto.Demand,
                SQLStr          = requestDto.Sqlstr,
                RecordStatus    = requestDto.RecordStatus,
                Sort            = requestDto.Sort,
                CreatedBy       = UserID,
                CreationDate    = DateTime.Now,
                LastUpdatedBy   = UserID,
                LastUpdatedDate = DateTime.Now,
                PlatformType    = string.IsNullOrWhiteSpace(requestDto.PlatformType) ? "CloudDoctor" : requestDto.PlatformType,
                OrgGuid         = string.Empty,
                Enable          = true
            };
            var conditionAndColumnList = new List <ReportConditionModel>();

            foreach (var item in requestDto.CreateConditionInfoList)
            {
                var conditionModel = new ReportConditionModel()
                {
                    ConditionGuid   = Guid.NewGuid().ToString("N"),
                    ThemeGuid       = themeModel.ThemeGuid,
                    Name            = item.ConditionName,
                    FieldCode       = item.FieldCode,
                    FieldValueSql   = string.Empty,
                    IsRightSql      = true,
                    ValueType       = item.ValueType,
                    ValueRange      = string.IsNullOrWhiteSpace(item.ValueRange) ? "{}" : item.ValueRange,
                    ExtensionField  = string.Empty,
                    CreatedBy       = UserID,
                    CreationDate    = DateTime.Now,
                    LastUpdatedBy   = UserID,
                    LastUpdatedDate = DateTime.Now,
                    RecordType      = RecordTypeEnum.Condition.ToString(),
                    Required        = item.Required,
                    Sort            = item.Sort,
                    OrgGuid         = string.Empty,
                    Enable          = true
                };
                conditionAndColumnList.Add(conditionModel);
            }
            foreach (var item in requestDto.CreateColumnInfoList)
            {
                var conditionModel = new ReportConditionModel()
                {
                    ConditionGuid   = Guid.NewGuid().ToString("N"),
                    ThemeGuid       = themeModel.ThemeGuid,
                    Name            = item.ColumnName,
                    FieldCode       = item.FieldCode,
                    FieldValueSql   = string.Empty,
                    IsRightSql      = true,
                    ValueType       = item.ValueType,
                    ValueRange      = string.IsNullOrWhiteSpace(item.ValueRange) ? "{}" : item.ValueRange,
                    ExtensionField  = string.Empty,
                    CreatedBy       = UserID,
                    CreationDate    = DateTime.Now,
                    LastUpdatedBy   = UserID,
                    LastUpdatedDate = DateTime.Now,
                    RecordType      = RecordTypeEnum.Column.ToString(),
                    Required        = item.Required,
                    Sort            = item.Sort,
                    OrgGuid         = string.Empty,
                    Enable          = true
                };
                conditionAndColumnList.Add(conditionModel);
            }
            result = await commonReportBiz.ApplyCreateReport(themeModel, conditionAndColumnList);

            return(Success(result));
        }