public with sharing class QISReportController {
    // Final universal code编辑
   @AuraEnabled
    public static InitData initForQisUniversalFailureCodeButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public  static InitData sqlForPAE (String qisReportId){
        InitData res = new initData();
        
        String recordTypeId = LightingButtonConstant.DEVELOPER_NAME_ASAC_DECISION;
        try{
            PAE_DecisionRecord__c rCPAEDIdList = [SELECT LastModifiedDate, Id, Name, LastModifiedById,RecordType.DeveloperName FROM PAE_DecisionRecord__c where PAE_QIS__c = :qisReportId  And RecordType.DeveloperName =  :recordTypeId limit 1]; 
            res.pAEid = rCPAEDIdList.id;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    //Intake universal code编辑
    @AuraEnabled
    public static InitData initForlexQISIntakeuniversalcodeButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public  static InitData sqlForPAE1 (String qisReportId){
        InitData res = new initData();
        
        String recordTypeId = LightingButtonConstant.DEVELOPER_NAME_ASRC_DECISION;
        try{
            PAE_DecisionRecord__c aSRCDIdList = [SELECT LastModifiedDate, Id, Name, LastModifiedById,RecordType.DeveloperName FROM PAE_DecisionRecord__c where PAE_QIS__c = :qisReportId  And RecordType.DeveloperName =  :recordTypeId Limit 1]; 
            res.pAEid = aSRCDIdList.id;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }
    //OSH现品收到
    @AuraEnabled
    public static InitData initForOSHRecievedButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id,QIS_Status__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            res.QIStatus = report.QIS_Status__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updateQis (String recordId){
        String re = '成功';
        try{
            ID myUserID = UserInfo.getUserId();
            
            User tempUser = [select id,Alias,Email from user where id = : myUserID ];
            QIS_Report__c rac  = new QIS_Report__c();   
            rac.id = recordId;
            rac.QIS_Status__c = LightingButtonConstant.STATUS_QIS_OSH_TESTING;
            rac.OSHRecievedDate__c  = Date.today();
            rac.OSH_Receive_staff__c = tempUser.Alias;
            rac.OSH_staff__c = tempUser.Alias;
            rac.OSH_staff_email__c = tempUser.email;
            rac.Is_ProductGot__c = true;
            rac.OSH_GotProductPeople__c = tempUser.id;
            User resultSet = [SELECT Id, JingliApprovalManager__c, BuchangApprovalManager__c, ZongjianApprovalManager__c FROM User WHERE Id = :myUserID];
            if (resultSet!=null && resultSet.JingliApprovalManager__c != null && resultSet.BuchangApprovalManager__c != null ) {
                rac.OSH_Manager__c = resultSet.JingliApprovalManager__c;
                rac.OSH_Buzhang__c = resultSet.BuchangApprovalManager__c;
            }else{
                rac.OSH_Manager__c= myUserID;
                rac.OSH_Buzhang__c= myUserID;
            }
            Oly_TriggerHandler.bypass('QIS_ReportTrigger');
            update rac;
            
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }

    //提交待审批1
    @AuraEnabled
    public static InitData initForOSHSubmitButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id,QIS_Status__c,OSH_staff__c,OSH_staff_email__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            res.QIStatus = report.QIS_Status__c;
            res.OSHstaff = report.OSH_staff__c;
            res.OSHstaffEmail = report.OSH_staff_email__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }
    @AuraEnabled
    public static String updateQis1 (String recordId){
        String re = '成功';
        try{
            
            QIS_Report__c rac  = new QIS_Report__c();   
            rac.id = recordId;
            rac.QIS_Status__c = LightingButtonConstant.STATUS_QIS_OSH_COMPLATED;
            update rac;
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }
    //提交待审批
     @AuraEnabled
    public static InitData initForRCSubmitButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id,RC_problem_not_found__c,QIS_Reply_day__c,RC_inspection_date__c,QIS_Status__c,Cancel_QIS_Reason__c,OSH_staff__c,OSH_staff_email__c,RC__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            res.QIStatus = report.QIS_Status__c;
            res.OSHstaff = report.OSH_staff__c;
            res.OSHstaffEmail = report.OSH_staff_email__c;
            res.CancelQISReason = report.Cancel_QIS_Reason__c;
            res.RCid = report.RC__c;
            res.RCinspectionDate = report.RC_inspection_date__c;
            res.QISReplyDay = report.QIS_Reply_day__c;
            res.RCproblemnotfound = report.RC_problem_not_found__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updateQisWithRC (String recordId,String type,String oldQIStatus){
        String re = '成功';
        
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT Id, JingliApprovalManager__c, BuchangApprovalManager__c, ZongjianApprovalManager__c, BuchangApprovalManagerSales__c, SalesManager__c FROM User WHERE Id = :myUserID LIMIT 1];  
        QIS_Report__c rac  = new QIS_Report__c();  
        rac.id = recordId;
        if (type == '1') {
            QIS_Report__c report1 = [SELECT  id,RC_problem_not_found__c,RC_FixedJudgement__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            rac.QIS_Status__c = LightingButtonConstant.STATUS_QIS_RC_COMPLATED;
            if (report1.RC_problem_not_found__c == true && report1.RC_FixedJudgement__c == false) {
                QIS_Report__c qisreport = [SELECT Id, Reason_bloken__c, Special_follow__c, next_action__c, QIS_Reply_Comment__c, OCM_judgement__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
                if (qisreport != null) {
                   rac.Reason_bloken1__c       = qisreport.Reason_bloken__c;
                   rac.Special_follow1__c      = qisreport.Special_follow__c;
                   rac.next_action1__c         = qisreport.next_action__c;
                   rac.QIS_Reply_Comment1__c   = qisreport.QIS_Reply_Comment__c;
                   rac.OCM_judgement1__c       = qisreport.OCM_judgement__c;
                }
            }
        }
        if (type == '2') {
            rac.QIS_Status__c = LightingButtonConstant.STATUS_QIS_CANCEL;
            rac.QIS_Cancel_Submit_day__c  = Date.today();
        }
        try{
            if (userinfo!=null && userinfo.BuchangApprovalManagerSales__c != null) {
                rac.RC_Manager__c = userinfo.BuchangApprovalManagerSales__c;
            }else{
                rac.RC_Manager__c = myUserID;
            }
            if (userinfo!=null) {
                if (oldQIStatus == LightingButtonConstant.STATUS_QIS_RC_CHECKING) {
                    rac.RC__c = myUserID;
                }
                if (userinfo.SalesManager__c != null ) {
                    rac.ApproveManager__c  = userinfo.SalesManager__c;
                }else{
                    rac.ApproveManager__c  = myUserID;
                }
                if (userinfo.BuchangApprovalManagerSales__c != null ) {
                    rac.ApproveBuZhang__c  = userinfo.BuchangApprovalManagerSales__c ;
                }else{
                    rac.ApproveBuZhang__c  = myUserID;
                }
                if (userinfo.ZongjianApprovalManager__c != null ) {
                    rac.AppeoveZongJian__c = userinfo.ZongjianApprovalManager__c  ;
                }else{
                    rac.AppeoveZongJian__c = myUserID;
                }
            }
            update rac; 
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }
    // 提交
     @AuraEnabled
    public static InitData initForOCMSubmitButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id,is_aohui_product__c,QIS_Status__c,OCM_Manager_Mail_F__c,QISInstallDate__c,contract_number__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            res.QIStatus = report.QIS_Status__c;
            res.QISInstallDate = report.QISInstallDate__c;
            res.contractnumber = report.contract_number__c;
            res.isaohuiproduct = report.is_aohui_product__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updateQisWithOCM (String recordId){
        String re = '成功';
        QIS_Report__c report = [SELECT  id,QIS_Status__c,QISInstallDate__c,contract_number__c,OCM_Manager_Mail_F__c
                                ,OCM_Member_Mail_F__c,OCM_Repair_Mail_F__c,OCM_Repair_Mail1_F__c,FSE_Special_Mail_F__c,FSE_Special_Manager_Mail_F__c
                                    ,WorkLocation_CC_Mail_F__c,is_aohui_product__c,QuolityApproveResult__c
                                FROM QIS_Report__c WHERE Id = :recordId LIMIT 1]; 
        try{
            QIS_Report__c rac  = new QIS_Report__c();   
            rac.id = recordId;
            rac.QIS_Status__c = LightingButtonConstant.STATUS_QIS_FSE_COMPLATED;
            rac.OCM_Manager_Mail__c = report.OCM_Manager_Mail_F__c;
            rac.OCM_Member_Mail__c = report.OCM_Member_Mail_F__c;
            rac.OCM_Repair_Mail__c = report.OCM_Repair_Mail_F__c;
            rac.OCM_Repair_Mail1__c = report.OCM_Repair_Mail1_F__c;
            rac.FSE_Special_Mail__c = report.FSE_Special_Mail_F__c;
            rac.FSE_Special_Manager_Mail__c = report.FSE_Special_Manager_Mail_F__c;
            rac.WorkLocation_CC_Mail__c = report.WorkLocation_CC_Mail_F__c;
            rac.Cancel_QIS_Reason__c = null;
            if (report.is_aohui_product__c == true) {
                    rac.OCM_judgement__c = '质量问题';
                    rac.next_action__c = '无偿维修';
                    rac.RecordTypeId = Schema.SObjectType.QIS_Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_BY_OSH).getRecordTypeId();
                    rac.QIS_Status__c = LightingButtonConstant.STATUS_QIS_OSH_TESTING_APP;
            }
            if (report.QuolityApproveResult__c == null || report.QuolityApproveResult__c == '') {
                rac.QuolityApproveResult__c = '3.已审核，一般质量问题';
            }
            update rac;
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }

    // QIS结果跟进完毕
     @AuraEnabled
    public static InitData initForQisAgreeButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id ,OwnerId FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            res.ownerId = report.OwnerId;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updateQisForQisAgree (String recordId){
        String re = '成功';
        ID myUserID = UserInfo.getUserId();
        
        String answerComp = Schema.SObjectType.QIS_Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_BY_OSH_FINASH).getRecordTypeId();
        String fina = Schema.SObjectType.QIS_Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_BY_FINAL).getRecordTypeId();
        String comp = Schema.SObjectType.QIS_Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_BY_COMP).getRecordTypeId();
        // RecordType rectyp = [SELECT id ,name FROM RecordType where  id = '01210000000gFTH'];
        QIS_Report__c report = [SELECT  id,OwnerId,RecordTypeId FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
        try{
            if (report.ownerid == myUserID) {
                QIS_Report__c rac  = new QIS_Report__c();   
                rac.id = recordId;
                rac.QIS_Status__c = LightingButtonConstant.STATUS_QIS_COMPLATED;
                if (report.RecordTypeId == answerComp) {
                    rac.RecordTypeId = fina;
                }else{
                    rac.RecordTypeId = comp;
                }
                rac.QIS_Complete_Day__c  = Date.today();
                update rac;
            }
            
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }
    //OCSM服务本部CDS完毕
    @AuraEnabled
    public static InitData initForRCCDScompleteButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id ,CDS_date__c,QIS_Status__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            res.cdsdate = report.CDS_date__c;
            res.QIStatus = report.QIS_Status__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updateQisForRCCDScomplete (String recordId){
        String re = '成功';
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT id,Alias__c FROM User WHERE Id = :myUserID LIMIT 1];  
        QIS_Report__c report = [SELECT  id FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
        try{
                QIS_Report__c rac  = new QIS_Report__c();   
                rac.id = recordId;
                rac.CDS_date__c  = Date.today();
                rac.RC_CDS_staff__c  = userinfo.Alias__c;
                update rac;        
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }
    //OCSM不要报告
    @AuraEnabled
    public static InitData initForlexOCSMNoToReportLightingButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id ,OCSMAdministrativeReportNumber__c,OCSMAdministrativeReportDate__c,Aware_date__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            res.oCSMAdministrativeReportNumber = report.OCSMAdministrativeReportNumber__c;
            res.oCSMAdministrativeReportDate = report.OCSMAdministrativeReportDate__c;
            res.Awaredate = report.Aware_date__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }
    @AuraEnabled
    public static String updateQisForlexOCSMNoToReportLighting (String recordId){
        String re = '成功'; 
        QIS_Report__c report = [SELECT  id FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
        try{
                QIS_Report__c rac  = new QIS_Report__c();   
                rac.id = recordId;
                rac.OCSMAdministrativeReportStatus__c = '无需报告';
                update rac;        
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }
    //OCSM要报告
    @AuraEnabled
    public static InitData initForlexOCSMToReportLightingButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id ,OCSMAdministrativeReportStatus__c,Aware_date__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            res.oCSMAdministrativeReportStatus = report.OCSMAdministrativeReportStatus__c;
            res.Awaredate = report.Aware_date__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updateQisForlexOCSMToReportLighting (String recordId){
        String re = '成功'; 
        QIS_Report__c report = [SELECT  id FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
        try{
                QIS_Report__c rac  = new QIS_Report__c();   
                rac.id = recordId;
                rac.OCSMAdministrativeReportStatus__c  = '待报告';
                update rac;        
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }

    //发送QIS到SPO
    @AuraEnabled
    public static InitData initForlexSendQISButton (String recordId){
        InitData res = new initData();
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT id,Profile.name FROM User WHERE Id = :myUserID LIMIT 1];
        try{
            QIS_Report__c report = [SELECT  id ,RecordTypeId,IsSendQIS__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
            RecordType rec = [SELECT id,name FROM RecordType where  Id = :report.RecordTypeId];
            res.Id = report.Id;
            res.qisRecordTypeId = report.RecordTypeId;
            res.qisRecordName = rec.name;
            res.profileName = userinfo.Profile.name;
            res.IsSendQIS = report.IsSendQIS__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updateQisForSendQIS (String recordId){
        String re = '成功'; 
        QIS_Report__c report = [SELECT Id,Name,IsSendQIS__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
        if(report == null ){
            return '没有QIS：' + recordId + '的数据。';
        }
        Savepoint sp = Database.setSavepoint(); 
        try{    
                
                QIS_Report__c rac  = new QIS_Report__c();   
                rac.id = recordId;
                rac.IsSendQIS__c = true;
                update rac;
        }catch(Exception e){
            Database.rollback(sp);
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }
    // OCSM服务本部收到实物
    @AuraEnabled
    public static InitData initForlexRCRecievedButton (String recordId){
        InitData res = new initData();
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT id,Profile.name FROM User WHERE Id = :myUserID LIMIT 1];
        try{
            QIS_Report__c report = [SELECT  id ,isAE_Profile__c,QIS_Status__c,isPAE_Profile__c,is_CNBuy__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
            res.Id = report.Id;
            res.isAEProfile = report.isAE_Profile__c;
            res.isPAEProfile = report.isPAE_Profile__c;
            res.QIStatus = report.QIS_Status__c;
            res.isCNBuy = report.is_CNBuy__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updateQisForRCRecieved (String recordId){
        String re = '成功'; 
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT id,Alias,BuchangApprovalManagerSales__c,JingliApprovalManager__c, BuchangApprovalManager__c, ZongjianApprovalManager__c FROM User WHERE Id = :myUserID LIMIT 1];

        try{    
                QIS_Report__c rac  = new QIS_Report__c();   
                rac.id = recordId;

                rac.QIS_Status__c = 'RC检测中';
                rac.OCM_RC_RecievedDate__c = Date.today();
                rac.RC__c = myUserID;
                rac.RC_Receive_staff__c = userinfo.Alias;

                if (userinfo != null  && userinfo.BuchangApprovalManagerSales__c!= null) {
                    rac.RC_Manager__c = userinfo.BuchangApprovalManagerSales__c;
                } else {
                    rac.RC_Manager__c = myUserID;
                }
                update rac;
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }
    // QIS市场部意见
    @AuraEnabled
    public static InitData initForlexQISSCButton (String recordId){
        InitData res = new initData();
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT id,Profile.name FROM User WHERE Id = :myUserID LIMIT 1];
        try{
            QIS_Report__c report = [SELECT  id,name,QIS_SC_Report__c,QIS_SC_Id__c,next_action__c,QIS_Market_Category__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
            res.Id = report.Id;
            res.name = report.name;
            res.profileName = userinfo.Profile.name;
            res.qISSCId = report.QIS_SC_Id__c;
            res.qISSCReport = report.QIS_SC_Report__c;
            res.nextaction = report.next_action__c;
            res.qISMarketCategory = report.QIS_Market_Category__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }
     // 新建修理
    @AuraEnabled
    public static InitData initForlexCreateRepairButton (String recordId){
        InitData res = new initData();
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT id,RepairSalesPoint_Province_China__c FROM User WHERE Id = :myUserID LIMIT 1];
        QIS_Report__c report = [SELECT  id,Owner.name,FailureQInHospital__c,InformationFrom__c,Delay15Min__c,
                                AfterFailureInformation__c,Set_usage_product__c,BreakORFallOff__c,Opera_Name__c,
                                Which_Project__c,Report_For_Goz__c,Relation_With_The_Problem__c,Damage_For_Doc_Or_Pat__c,
                                Trable_occur_daY_collect__c,source_for_repair__c,Faliour_date__c,OwnerId,nonyushohin__c,nonyushohin__r.name,
                                Hospital_Department__c,Hospital_Department__r.name,Department_Class__c,Department_Class__r.name,Hospital__c,Hospital__r.name,name,Source_OnCall__c,Source_OnCall__r.name,
                                failuer_situation__c,Comment__c,Is_Used_For_The_Opera__c,RecordType_ID__c,
                                OCM_judgement__c,next_action__c,Special_follow__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
        Account acc = [SELECT id,ParentId,Parent.RecordTypeId, 
                        Parent.Parent.FSE_GI_Main_Leader__c,Parent.Parent.FSE_SP_Main_Leader__c,
                        Parent.Parent.FSE_GI_Main_Leader__r.Work_Location__c,
                        Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c FROM Account WHERE id = :report.Hospital_Department__c limit 1];
        try{
            
            res.Id = report.Id;
            res.qisRecordTypeId = report.RecordType_ID__c;
            res.oCMjudgement = report.OCM_judgement__c;
            res.nextaction = report.next_action__c;
            res.comment = report.Comment__c;
            res.sourceOnCall = report.Source_OnCall__c;
            res.sourceOnCallname = report.Source_OnCall__r.name;
            res.name = report.name;
            res.hospitalId = report.Hospital__c;
            res.hospitalname = report.Hospital__r.name;
            res.departmentClassId = report.Department_Class__c;
            res.departmentClassname = report.Department_Class__r.name;
            res.hospitalDepartment = report.Hospital_Department__c;
            res.hospitalDepartmentname = report.Hospital_Department__r.name;
            res.nonyushohinId = report.nonyushohin__c;
            res.nonyushohinIdname = report.nonyushohin__r.name;
            res.ownerId = report.OwnerId;
            res.faliourdate = report.Faliour_date__c;
            res.sourceforrepair = report.source_for_repair__c;
            res.repairSalesPointProvinceChina = userinfo.RepairSalesPoint_Province_China__c;
            res.trableoccurdaYcollect = report.Trable_occur_daY_collect__c;
            res.damageForDocOrPat = report.Damage_For_Doc_Or_Pat__c;
            res.relationWithTheProblem = report.Relation_With_The_Problem__c;
            res.reportForGoz = report.Report_For_Goz__c;
            res.whichProject = report.Which_Project__c;
            res.operaName = report.Opera_Name__c;
            res.breakORFallOff = report.BreakORFallOff__c;
            res.setusageproduct = report.Set_usage_product__c;
            res.afterFailureInformation = report.AfterFailureInformation__c;
            res.delay15Min = report.Delay15Min__c;
            res.informationFrom = report.InformationFrom__c;
            res.failureQInHospital = report.FailureQInHospital__c;
            res.ownername = report.Owner.name;
            res.failuerSituation = report.failuer_situation__c;
            res.isUsedForTheOpera = report.Is_Used_For_The_Opera__c;
            res.specialfollow = report.Special_follow__c;
            res.accParentId = acc.ParentId;
            res.accParentRecordTypeId = acc.Parent.RecordTypeId;
            res.accParentParentFSEGIMainLeader = acc.Parent.Parent.FSE_GI_Main_Leader__c;
            res.accParentParentFSEGIMainLeaderWorkLocation = acc.Parent.Parent.FSE_GI_Main_Leader__r.Work_Location__c;
            res.accParentParentFSESPMainLeader = acc.Parent.Parent.FSE_SP_Main_Leader__c;
            res.accParentParentFSESPMainLeaderWorkLocation = acc.Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }
     // PDF(QIS申请书)
    @AuraEnabled
    public static InitData initForlexPDFQISrequestButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
            res.Id = report.Id;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    // OCSM服务本部检测完毕
    @AuraEnabled
    public static InitData initForlexRCinspectioncompletedateButton (String recordId){
        InitData res = new initData();
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT id,Profile.name FROM User WHERE Id = :myUserID LIMIT 1];
        try{
            QIS_Report__c report = [SELECT  id ,RC_inspection_date__c,QIS_Status__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
            res.Id = report.Id;
            res.rCinspectionDate = report.RC_inspection_date__c;
            res.QIStatus = report.QIS_Status__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updateQisForRCinspectioncompletedate (String recordId){
        String re = '成功'; 
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT id,Alias FROM User WHERE Id = :myUserID LIMIT 1];

        try{    
                QIS_Report__c rac  = new QIS_Report__c();   
                rac.id = recordId;
                rac.RC_inspection_date__c  = Date.today();
                rac.RC__c = myUserID;
                rac.RC_Inspection_staff__c  = userinfo.Alias;
                update rac;
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }
    // OSH检查受理
    @AuraEnabled
    public static InitData initForlexOSHInspectButton (String recordId){
        InitData res = new initData();
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT id,Profile.name FROM User WHERE Id = :myUserID LIMIT 1];
        try{
            QIS_Report__c report = [SELECT  id ,OSHInspectionDate__c,QIS_Status__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
            res.Id = report.Id;
            res.oSHInspectionDate = report.OSHInspectionDate__c;
            res.QIStatus = report.QIS_Status__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updateQisForlexOSHInspect (String recordId){
        String re = '成功'; 
        try{    
                QIS_Report__c rac  = new QIS_Report__c();   
                rac.id = recordId;
                rac.OSHInspectionDate__c   = Date.today();
                update rac;
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }

     //     复制1
   @AuraEnabled
    public static InitData initForlexcopyQISButton (String recordId){
        InitData res = new initData();
        try{
            QIS_Report__c report = [SELECT  id,Name,QIS_Status__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
            res.Id = report.Id;
            res.name = report.Name;
            res.qIStatus = report.QIS_Status__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

     // OCSM无实物送达
    @AuraEnabled
    public static InitData initForlexOCSMNogoodsButton (String recordId){
        InitData res = new initData();
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT id,Profile.name FROM User WHERE Id = :myUserID LIMIT 1];
        try{
            QIS_Report__c report = [SELECT  id ,QIS_Status__c,isAE_Profile__c,is_CNBuy__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
            res.Id = report.Id;
            res.isAEProfile = report.isAE_Profile__c;
            res.QIStatus = report.QIS_Status__c;
            res.isCNBuy = report.is_CNBuy__c;
            System.debug(LoggingLevel.INFO, '*** res: ' + res);
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
        }
        return res;
    }

    @AuraEnabled
    public static String updatelexOCSMNogoods (String recordId){
        String re = '成功'; 
        ID myUserID = UserInfo.getUserId();
        User userinfo = [SELECT Id,Alias__c,Alias, BuchangApprovalManagerSales__c,JingliApprovalManager__c, BuchangApprovalManager__c, ZongjianApprovalManager__c FROM User WHERE Id = :myUserID LIMIT 1];

        try{    
                QIS_Report__c rac  = new QIS_Report__c();   
                rac.id = recordId;
                rac.QIS_Status__c   = 'RC检测中';
                rac.OCM_RC_RecievedDate__c    = Date.today();
                rac.RC__c = myUserID;
                if (userinfo != null) {
                    rac.RC_Receive_staff__c   = userinfo.Alias;
                }
                if (userinfo != null && userinfo.BuchangApprovalManagerSales__c !=null) {
                    rac.RC_Manager__c  = userinfo.BuchangApprovalManagerSales__c;
                }else{
                    rac.RC_Manager__c = myUserID;
                }
                rac.CDS_date__c    = Date.today();
                rac.RC_CDS_staff__c   = userinfo.Alias__c;
                rac.OCSM_Nogoods__c   = true;
                update rac;
        }catch(Exception e){
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            re = e.getMessage();
        }
         return re;
    }
    public class InitData{
        @AuraEnabled
        public String Id;
        @AuraEnabled
        public String qISSCReport;
        @AuraEnabled
        public String name;
        @AuraEnabled
        public String qISSCId;
        @AuraEnabled
        public String accParentId;
        @AuraEnabled
        public String accParentRecordTypeId;
        @AuraEnabled
        public String accParentParentFSEGIMainLeader;
        @AuraEnabled
        public String accParentParentFSEGIMainLeaderWorkLocation;
        @AuraEnabled
        public String accParentParentFSESPMainLeader;
        @AuraEnabled
        public String accParentParentFSESPMainLeaderWorkLocation;
        @AuraEnabled
        public String oCMjudgement;
        @AuraEnabled
        public String comment;
        @AuraEnabled
        public String isUsedForTheOpera;
        @AuraEnabled
        public String failuerSituation;
        @AuraEnabled
        public String sourceOnCall;
        @AuraEnabled
        public String sourceOnCallname;
        @AuraEnabled
        public String hospitalId;
        @AuraEnabled
        public String hospitalname;
        @AuraEnabled
        public String departmentClassId;
        @AuraEnabled
        public String departmentClassname;
        @AuraEnabled
        public String hospitalDepartment;
        @AuraEnabled
        public String hospitalDepartmentname;
        @AuraEnabled
        public String nonyushohinId;
        @AuraEnabled
        public String nonyushohinIdname;
        @AuraEnabled
        public String sourceforrepair;
        @AuraEnabled
        public String repairSalesPointProvinceChina;
        @AuraEnabled
        public String damageForDocOrPat;
        @AuraEnabled
        public String relationWithTheProblem;
        @AuraEnabled
        public String reportForGoz;
        @AuraEnabled
        public String whichProject;
        @AuraEnabled
        public String operaName;
        @AuraEnabled
        public String breakORFallOff;
        @AuraEnabled
        public String setusageproduct;
        @AuraEnabled
        public String afterFailureInformation;
        @AuraEnabled
        public String delay15Min;
        @AuraEnabled
        public String informationFrom;
        @AuraEnabled
        public String failureQInHospital;
        @AuraEnabled
        public String ownerId;
        @AuraEnabled
        public String ownername;
        @AuraEnabled
        public String qisRecordTypeId;
        @AuraEnabled
        public String qisRecordName;
        @AuraEnabled
        public String nextaction;
        @AuraEnabled
        public String qISMarketCategory;
        @AuraEnabled
        public String profileName;
        @AuraEnabled
        public String isAEProfile;
        @AuraEnabled
        public String isPAEProfile;
        @AuraEnabled
        public String isCNBuy;
        @AuraEnabled
        public String pAEid;
        @AuraEnabled
        public String oCSMAdministrativeReportNumber;
        @AuraEnabled
        public String oCSMAdministrativeReportStatus;
        @AuraEnabled
        public String qIStatus;
        @AuraEnabled
        public String oSHstaff;
        @AuraEnabled
        public String oSHstaffEmail;
        @AuraEnabled
        public String cancelQISReason;
        @AuraEnabled
        public String rCid;
        @AuraEnabled
        public String contractnumber;
        @AuraEnabled
        public Date rCinspectionDate;
        @AuraEnabled
        public Date qISReplyDay;
        @AuraEnabled
        public Date qISInstallDate;
        @AuraEnabled
        public Date oSHInspectionDate;
        @AuraEnabled
        public Date faliourdate;
        @AuraEnabled
        public Date trableoccurdaYcollect;
        @AuraEnabled
        public Date cdsdate;
        @AuraEnabled
        public Date awaredate;
        @AuraEnabled
        public Date oCSMAdministrativeReportDate;
        @AuraEnabled
        public Boolean rCproblemnotfound;
        @AuraEnabled
        public Boolean isaohuiproduct;
        @AuraEnabled
        public Boolean isSendQIS;
        @AuraEnabled
        public Boolean specialfollow;
        
    }

}