public with sharing class RepPAEDecisionRecordController {
    public PAE_DecisionRecord__c rdRecord {
        get;
        set;
    }
    //PAE判定记录的Id
    public String Id {
        get;
        set;
    }
    //PAE判定记录的记录类型Id
    public String RecordTypeId;
    public String RecordTypeIdD;
    public String RecordTypeName {
        get;
        set;
    }
    public String ASac_ASrc;
    public Boolean editAble {
        get;
        set;
    }
    // 保存按钮 需要考虑再现/不再现的更新了。
    // 简档：2F4_技术推进部，2F4_技术推进部_非SSO，2F2B_服务管理，系统管理员的人操作的时候，需要允许操作【保存】。
    public Boolean savebuton {
        get;
        set;
    }
    public Integer CancelineFlag {
        get;
        set;
    }
    public String OCSM_QARA {
        get;
        set;
    } //20200310
    public String OCSM_Cording {
        get;
        set;
    } //20200310
    public String intakePAEReappearConfirm {
        get;
        set;
    }
    // 如果Repair__c     中DOJ_Status__c       的字段值为待EtQ Response 或者
    //     Report__c 中ComplaintStatus__c  的字段值为待EtQ Response 将标记改为true
    // 影响至对应页面中的按钮是否可用
    public Boolean editFlag {
        get;
        set;
    }
    // 当前报告书
    public Report__c repa {
        get;
        set;
    }
    // 是否是OSH
    public Boolean isOSH {
        get;
        set;
    }
    public String ReportId {
        get;
        set;
    }
    public String productIdx {
        get;
        set;
    }
    //页面的明细
    public List < PAE_DecisionRecordDetailInfo > paedRecordDetailView {
        get;
        set;
    }
    public Integer paedRecordDetailViewCount {
        get {
            return paedRecordDetailView == null ? 0 : paedRecordDetailView.size();
        }
    }
    public RepPAEDecisionRecordController(ApexPages.StandardController stdController) {
        Id = ApexPages.currentPage().getParameters().get('Id');
        String profileId = UserInfo.getProfileId();
        // 当前用户是否在 OSH自定义标签中
        isOSH = System.label.OSH.contains(profileId);
        System.debug('isOSH+' + isOSH);
        // 判断Report__c的ComplaintStatus__c字段值是否为待EtQ Response
        ReportId = ApexPages.currentPage().getParameters().get('ReportId');
        List < Report__c > Rep = [select id, name, ComplaintStatus__c, AsyncData__c from Report__c where id = : ReportId];
        //精琢科技  zxk  2021-11-03 根据修理进行的修改   start 
         if (Rep.size() > 0){
              repa = Rep.get(0);
              system.debug('+++++++++++++++++'+repa);
                if ('待EtQ Response'.equals(Rep.get(0).ComplaintStatus__c)) {
                    editFlag = true;
                }
            } 
        //精琢科技  zxk  2021-11-03 根据修理进行的修改   end 

        // if (Rep.size() > 0 && '待EtQ Response'.equals(Rep.get(0).ComplaintStatus__c)) {
        //     editFlag = true;
        // }
        paedRecordDetailView = new List < PAE_DecisionRecordDetailInfo > ();
        editAble = false;
        CancelineFlag = 2;
        productIdx = '';
        // PAE_DecisionRecord__c 记录类型 ASRCDecision ASACDecision
        // ASRCDecision --> Intake
        // ASACDecision --> Final
        RecordTypeName = ApexPages.currentPage().getParameters().get('RecordTypeIds');
    }
    public void init() {
        editAble = true;
        //当前登录着的ProfileId
        String profileId = UserInfo.getProfileId().substring(0, 15);
        //118_CFDA（质量法规本部）担当 简档ID和 118_CFDA（质量法规本部）窗口 简档ID和管理员
        if (profileId.equals(System.Label.ProfileId_OCSM_QARA1) || profileId.equals(System.Label.ProfileId_OCSM_QARA2) || UserInfo.getProfileId().equals(System.Label.ProfileId_SystemAdmin)) {
            OCSM_QARA = '1';
        } else {
            OCSM_QARA = '0';
        }
        //ProfileId 2F2B_2F4
        if (System.Label.ProfileId2F2B_2F4.contains(profileId)) {
            OCSM_Cording = '1';
        } else {
            OCSM_Cording = '0';
        }
        if (System.Label.ProfileId2F2B_2F4.contains(profileId) || UserInfo.getProfileId() == System.Label.ProfileId_SystemAdmin) {
            savebuton = true;
        } else {
            savebuton = false;
        }
        if (String.isNotBlank(RecordTypeName)) {
            RecordTypeId = Schema.SObjectType.PAE_DecisionRecord__c.getRecordTypeInfosByDeveloperName().get(RecordTypeName).getRecordTypeId();
        } else {
            List < PAE_DecisionRecord__c > paedRdList = [select Id, PAE_Report__c, RecordTypeId, PAEDetail_DetermineResults__c, RecordType.DeveloperName from PAE_DecisionRecord__c where Id = : Id];
            if (paedRdList.size() > 0) {
                RecordTypeName = paedRdList[0].RecordType.DeveloperName;
                RecordTypeId = paedRdList[0].PAE_Report__c;
            }
        }
        if ('ASRCDecision' == RecordTypeName) {
            ASac_ASrc = 'Intake';
            RecordTypeIdD = Schema.SObjectType.PAE_DecisionRecordDetail__c.getRecordTypeInfosByDeveloperName().get('intake').getRecordTypeId();
        } else if ('ASACDecision' == RecordTypeName) {
            ASac_ASrc = 'Final';
            RecordTypeIdD = Schema.SObjectType.PAE_DecisionRecordDetail__c.getRecordTypeInfosByDeveloperName().get('final').getRecordTypeId();
        }
        rdRecord = new PAE_DecisionRecord__c();
        Report__c repair1OrQIS1;
        if (!string.isBlank(ReportId)) {
            repair1OrQIS1 = [select id, PAE_codez__c, PAE_temp_final_code__c, PAE_reappear_confirm__c from Report__c where id = : ReportId];
        }
        Map < String, PAE_DecisionRecordDetailInfo > MidMap = new Map < String, PAE_DecisionRecordDetailInfo > ();
        if (Id == NULL || Id == '') {
            if (string.isnotBlank(ReportId)) {
                rdRecord.PAE_reappear_confirm__c = repair1OrQIS1.PAE_reappear_confirm__c;
            }
            //预留一行
            PAE_DecisionRecordDetail__c paedrd = new PAE_DecisionRecordDetail__c();
            paedrd.PAED_Status__c = '有效';
            paedrd.RecordTypeId = RecordTypeIdD;
            paedRecordDetailView.add(new PAE_DecisionRecordDetailInfo(paedrd));
            //预留一行
        } else {
            List < PAE_DecisionRecord__c > rdRecordList = new List < PAE_DecisionRecord__c > ();
            List < PAE_DecisionRecordDetail__c > rdRecordDetailList = new List < PAE_DecisionRecordDetail__c > ();
            rdRecordList = [SELECT Id, Name, CurrencyIsoCode, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById,
                SystemModstamp, PAE_DetermineResults__c, PAE_ConfirmationDate__c,
                PAE_Authenticator__c, PAE_reappear_confirm__c,
                PAEDetail_DetermineResults__c, PAE_DetermineResults_Text__c
                FROM PAE_DecisionRecord__c where Id = : Id
            ];
            if (rdRecordList.size() > 0) {
                rdRecord = rdRecordList[0];
            }
            //PAE_reappear_confirm__c  再现结果确认
            if (string.isnotBlank(ReportId)) {
                rdRecord.PAE_reappear_confirm__c = repair1OrQIS1.PAE_reappear_confirm__c;
            }
            rdRecordDetailList = [SELECT Id, IsDeleted, Name, CurrencyIsoCode, CreatedDate, CreatedById,
                LastModifiedDate, LastModifiedById, SystemModstamp, PAE_DecisionRecordD__c,
                PAED_ManagementCode__c, PAE_Judge__c, PAED_Reappear_Result__c, PAED_ResultAffirmant__r.Name,
                PAED_ResultConfirmationDate__c, Final_universal_code__c,
                PAED_Status__c, PAED_ConfirmationDate__c, PAED_Affirmant__c, PAE_is_save__c,
                PAED_Affirmant__r.Name, PAED_RCAC__c, PAED_CancellationDate__c, PAED_Nullifier__c,
                PAED_Nullifier__r.Name, isInterfaceCreate__c, Location__c, LocationGroup__c, FinalUniversalDesc__c,
                Phenomenon__c, IntakeUniversalDesc__c, PhenomenonDesc__c,
                // NFM109信息获取，Gzw add 20200826
                Description__c, Cause__c, EtqPart__c, EtqAsAnalyzed__c, EtqCause__c,
                InspectionCategory109__c, PAED_Affirmant_F__c, PAED_ConfirmationDate_F__c,
                //课题94 add by rentongxiao 2020-10-10 start
                PAED_ResultAffirmant_new__c
                //add by rentx 2020-11-04 
                , isedit__c, RecordTypeId
                // RVS005信息获取 gzw add 20201126 start
                , RVSDetailNo__c, RVS_Date__c, RVS_Time__c, RVS_Decision_Person__c, Monitor_PAE__c
                // RVS005信息获取 gzw add 20201126 end
                FROM PAE_DecisionRecordDetail__c
                where PAE_DecisionRecordD__c = : Id Order by PAED_Status__c, PAED_ManagementCode__c ASC
            ];      
            for (Integer i = 0; i < rdRecordDetailList.size(); i++) {
                MidMap.put(rdRecordDetailList[i].Id, new PAE_DecisionRecordDetailInfo(rdRecordDetailList[i]));
            }
            for (PAE_DecisionRecordDetailInfo paeDrd: MidMap.values()) {
                paedRecordDetailView.add(paeDrd);
            }
        }
    }
    //保存并关闭
    public PageReference SaveAndClose() {
        // 取消行
        if (CancelineFlag == 3) {
            Integer FLG = 0;
            Integer Count = 0;
            for (PAE_DecisionRecordDetailInfo CheckCount: paedRecordDetailView) {
                FLG = FLG + 1;
                if (CheckCount.check == false) {
                    Count = Count + 1;
                }
            }
            if (Count == FLG) {
                ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请选择要取消的行'));
                return null;
            }
        }
        List < PAE_DecisionRecordDetail__c > insertPaeDRDList = new List < PAE_DecisionRecordDetail__c > ();
        Savepoint sp = Database.setSavepoint();
        PAE_DecisionRecord__c paedRecord = new PAE_DecisionRecord__c();
        String paedRecordId = '';
        //明细有效状态此记录的总数量
        //明细有效状态此记录的PAE数量
        //明细有效状态此记录的Unknown数量
        //明细有效状态此记录的NonPAE数量
        Integer PAE_Judge_num = 0;
        Integer PAE_Judge_num_PAE = 0;
        Integer PAE_Judge_num_Unknown = 0;
        Integer PAE_Judge_num_nonPAE = 0;
        String PAE_DetermineResults = null;
        String prevDetermineResults = null;
        // try {
            //明细有效状态此记录的总数量
            //明细有效状态此记录的PAE数量
            //明细有效状态此记录的Unknown数量
            //明细有效状态此记录的NonPAE数量
            //如果Code包含汉字或超过15字数的化，需要提醒。【Intake universal code不可以使用汉字，不可以超过15字数】
            for (PAE_DecisionRecordDetailInfo rdRecorddl: paedRecordDetailView) {
                if (!(rdRecorddl.check && CancelineFlag == 3) && rdRecorddl.paedrdd.PAED_Status__c != '取消') {
                    PAE_Judge_num++;
                    if (rdRecorddl.paedrdd.PAE_Judge__c == 'PAE') {
                        PAE_Judge_num_PAE++;
                    }
                    if (rdRecorddl.paedrdd.PAE_Judge__c == 'Unknown') {
                        PAE_Judge_num_Unknown++;
                    }
                    if (rdRecorddl.paedrdd.PAE_Judge__c == 'nonPAE') {
                        PAE_Judge_num_nonPAE++;
                    }
                    // gzw 20210409 修改参数为空时，表达式判断出错问题
                    if (Schema.SObjectType.PAE_DecisionRecordDetail__c.getRecordTypeInfosByDeveloperName().get('intake').getRecordTypeId() == rdRecorddl.paedrdd.RecordTypeId && (containsChineseCharacters(rdRecorddl.paedrdd.PAED_ManagementCode__c) || (String.isNotBlank(rdRecorddl.paedrdd.PAED_ManagementCode__c) && rdRecorddl.paedrdd.PAED_ManagementCode__c.length() > 15))) {
                        rdRecorddl.paedrdd.PAED_ManagementCode__c.adderror('Intake universal code不可以使用汉字，不可以超过15字数。');
                        return null;
                    }
                }
                System.debug('rdRecorddl.paedrdd.Location__c' + rdRecorddl.paedrdd.Location__c);
            }
            if (PAE_Judge_num_PAE > 0) {
                PAE_DetermineResults = 'PAE';
            } else if (PAE_Judge_num_Unknown > 0) {
                PAE_DetermineResults = 'Unknown';
            } else if (PAE_Judge_num_nonPAE == PAE_Judge_num && PAE_Judge_num_nonPAE > 0) {
                PAE_DetermineResults = 'nonPAE';
            } else {
                PAE_DetermineResults = null;
            }
            rdRecord.PAE_DetermineResults_Text__c = PAE_DetermineResults;
            //System.debug('-----------------------:' + PAE_DetermineResults);
            //新增PAE判定
            if (String.isBlank(Id)) {
                //检查明细的编码是否为空---20200107 add 检查明细的PAE判定是否必填
                if (IsEmptyManagementCode(paedRecordDetailView)) {
                    return null;
                }
                paedRecord.PAE_Report__c = ReportId;
                paedRecord.PAE_reappear_confirm__c = rdRecord.PAE_reappear_confirm__c; // 20200908 Gzw Final 再现结果丢失问题 add
                paedRecord.RecordTypeId = RecordTypeId;
                insert paedRecord;
                paedRecordId = paedRecord.Id;
                UpsertPAE_DecisionRecordDetail(null, paedRecordDetailView, paedRecordId, false, prevDetermineResults);
            } else {
                //修改PAE变更
                List < PAE_DecisionRecord__c > paedRecordList = [select Id, PAE_DetermineResults__c, PAE_DetermineResults_Text__c, PAE_reappear_confirm__c from PAE_DecisionRecord__c where Id = : Id];
                List < PAE_DecisionRecordDetail__c > rdRecordDetailList = new List < PAE_DecisionRecordDetail__c > ();
                //存在的明细Map
                Map < Id, PAE_DecisionRecordDetail__c > paedRecordStatusMap = new Map < Id, PAE_DecisionRecordDetail__c > ();
                rdRecordDetailList = [SELECT Id, IsDeleted, Name, CurrencyIsoCode, CreatedDate, CreatedById,
                    LastModifiedDate, LastModifiedById, SystemModstamp, PAE_DecisionRecordD__c,
                    PAED_ManagementCode__c, PAE_Judge__c, PAED_Reappear_Result__c, PAED_ResultAffirmant__r.Name,
                    PAED_ResultConfirmationDate__c, Final_universal_code__c,
                    PAED_Status__c, PAED_ConfirmationDate__c, PAED_Affirmant__c, PAE_is_save__c,
                    PAED_Affirmant__r.Name, PAED_RCAC__c, PAED_CancellationDate__c, PAED_Nullifier__c,
                    PAED_Nullifier__r.Name, isInterfaceCreate__c, Location__c, LocationGroup__c, FinalUniversalDesc__c,
                    Phenomenon__c, IntakeUniversalDesc__c, PhenomenonDesc__c,
                    // NFM109信息获取，Gzw add 20200826
                    Description__c, Cause__c, EtqPart__c, EtqAsAnalyzed__c, EtqCause__c,
                    InspectionCategory109__c, PAED_Affirmant_F__c, PAED_ConfirmationDate_F__c,
                    //课题94 add by rentongxiao 2020-10-10 start
                    PAED_ResultAffirmant_new__c
                    //add by rentx
                    , isedit__c, RecordTypeId
                    // RVS005信息获取 gzw add 20201126 start
                    , RVSDetailNo__c, RVS_Date__c, RVS_Time__c, RVS_Decision_Person__c, Monitor_PAE__c
                    // RVS005信息获取 gzw add 20201126 end
                    FROM PAE_DecisionRecordDetail__c
                    where PAE_DecisionRecordD__c = : Id Order by PAED_Status__c, PAED_ManagementCode__c
                ];
                if (rdRecordDetailList.size() > 0) {
                    for (PAE_DecisionRecordDetail__c paedrd: rdRecordDetailList) {
                        paedRecordStatusMap.put(paedrd.Id, paedrd);
                    }
                }
                system.debug('paedRecordStatusMap===========>'+paedRecordStatusMap);
                if (paedRecordList.size() > 0) {
                    //PAE判定的Id
                    paedRecordId = paedRecordList[0].Id;
                    //PAE判定记录的状态不变
                    prevDetermineResults = paedRecordList[0].PAE_DetermineResults_Text__c;
                    if (paedRecordList[0].PAE_DetermineResults_Text__c == PAE_DetermineResults) {
                        //检查明细的编码是否为空---20200107 add 检查明细的PAE判定是否必填
                        if (IsEmptyManagementCode(paedRecordDetailView)) {
                            return null;
                        }
                        UpsertPAE_DecisionRecordDetail(paedRecordStatusMap, paedRecordDetailView, paedRecordId, false, prevDetermineResults);
                    } else if (paedRecordList[0].PAE_DetermineResults_Text__c != PAE_DetermineResults) {
                        //PAE判定记录的状态改变
                        //检查明细的编码是否为空---20200107 add 检查明细的PAE判定是否必填
                        if (IsEmptyManagementCode(paedRecordDetailView)) {
                            return null;
                        }
                        insertPaeDRDList = new List < PAE_DecisionRecordDetail__c > ();
                        paedRecord.PAE_DetermineResults_Text__c = PAE_DetermineResults;
                        paedRecord.PAE_Report__c = ReportId;
                        paedRecord.RecordTypeId = RecordTypeId;
                        insert paedRecord;
                        paedRecordId = paedRecord.Id;
                        UpsertPAE_DecisionRecordDetail(paedRecordStatusMap, paedRecordDetailView, paedRecordId, true, prevDetermineResults);
                    }
                }
            }
        // } catch (Exception e) {
        //     ApexPages.addMessages(e);
        //     Database.rollback(sp);
        //     return null;
        // }
        if (CancelineFlag != 2) {
            return RefreshOriginalInterface(paedRecordId);
        } else {
            return ReturnReportInterface();
        }
    }
    //返回报告书页面
    public PageReference ReturnReportInterface() {
        PageReference ref;
        system.debug('啦啦啦ReportId1' + ReportId);
        if (String.isnotBlank(ReportId)) {
            ref = new Pagereference('/' + ReportId);
        }
        //PageReference ref = new Pagereference('/' + ReportId);
        ref.setRedirect(true);
        return ref;
    }
    //留在当前页面
    public PageReference RefreshOriginalInterface(String paedRecordId) {
        PageReference ref;
        if (String.isnotBlank(ReportId)) {
            ref = new Pagereference('/apex/RepPAEDecisionRecord?Id=' + paedRecordId + '&ReportId=' + ReportId + '&RecordTypeIds=' + RecordTypeName);
        }
        ref.setRedirect(true);
        return ref;
    }
    //返回Intake页面
    public PageReference toIntake() {
        String url = null;
        if (String.isnotBlank(ReportId)) {
            List < PAE_DecisionRecord__c > pAE_DecisionRecord = [SELECT LastModifiedDate, Id, Name, LastModifiedById, RecordType.DeveloperName FROM PAE_DecisionRecord__c where PAE_Report__c = : ReportId And RecordType.DeveloperName = 'ASRCDecision'
                Order by LastModifiedDate desc
            ];
            if (pAE_DecisionRecord.size() > 0) {
                url = '/apex/RepPAEDecisionRecord?Id=' + pAE_DecisionRecord[0].Id + '&ReportId=' + ReportId + '&RecordTypeIds=ASRCDecision';
            } else {
                url = '/apex/RepPAEDecisionRecord?ReportId=' + ReportId + '&RecordTypeIds=ASRCDecision';
            }
        }
        PageReference ref = new Pagereference(url);
        ref.setRedirect(true);
        return ref;
    }
   //插入空行
    public PageReference InsertRow() {
        // 2021-12-08  zxk  精琢科技   手动赋值逻辑  start
        List < String > codeNumDataList = new List < String > ();
        for (PAE_DecisionRecordDetailInfo pdrdInFoCode: paedRecordDetailView) {
            String managementCodeStr = pdrdInFoCode.paedrdd.PAED_ManagementCode__c;
            if (String.isBlank(pdrdInFoCode.paedrdd.id) && String.isNotBlank(managementCodeStr)) {
                codeNumDataList.add(managementCodeStr);
            }
        }
        Map < String, String > strMapData = updateIsPae(codeNumDataList);
        for (PAE_DecisionRecordDetailInfo pdrdInFoCode: paedRecordDetailView) {
            String managementCodeStr = pdrdInFoCode.paedrdd.PAED_ManagementCode__c;
            if (String.isBlank(pdrdInFoCode.paedrdd.Id)) {
                if (String.isNotBlank(managementCodeStr)) {
                    if (pdrdInFoCode.paedrdd.PAE_Judge__c != strMapData.get(managementCodeStr) || String.isBlank(strMapData.get(managementCodeStr))) {
                        pdrdInFoCode.monitorPAE = true;
                    } else {
                        pdrdInFoCode.monitorPAE = false;
                    }
                }
            }
        }
        // 2021-12-08  zxk  精琢科技   手动赋值逻辑  end
        PAE_DecisionRecordDetail__c paedrd = new PAE_DecisionRecordDetail__c();
        paedrd.PAED_Status__c = '有效';
        paedrd.RecordTypeId = RecordTypeIdD;
        // Integer styNum = paedRecordDetailView.size();
        paedRecordDetailView.add(new PAE_DecisionRecordDetailInfo(paedrd));
        return null;
    }
    //批量插入空行字符串
    public void InsertMoreRows() {
        // 精琢科技   zxk  2021-10-21  start  给PAE判定记录赋值
        List < String > codeNumDataList = new List < String > ();
        for (PAE_DecisionRecordDetailInfo pdrdInFoCode: paedRecordDetailView) {
            String managementCodeStr = pdrdInFoCode.paedrdd.PAED_ManagementCode__c;
            if (String.isBlank(pdrdInFoCode.paedrdd.id) && String.isNotBlank(managementCodeStr)) {
                // && pdrdInFoCode.paedrdd.PAE_is_save__c != '1'
                for (String codeStr: managementCodeStr.split(',')) {
                    if (String.isNotBlank(codeStr)) {
                        codeNumDataList.add(codeStr);
                    }
                }
            }
        }
        Map < String, String > strMapData = updateIsPae(codeNumDataList);
        // 精琢科技   zxk  2021-10-21  end  给PAE判定记录赋值
        List < PAE_DecisionRecordDetailInfo > paedRecordDetailViewTemporary = new List < PAE_DecisionRecordDetailInfo > ();
        List < String > codeList = new List < String > ();
        for (PAE_DecisionRecordDetailInfo paedRDInfo: paedRecordDetailView) {
            String managementCode = paedRDInfo.paedrdd.PAED_ManagementCode__c;
            String finalUniversalCode = paedRDInfo.paedrdd.Final_universal_code__c;
            Date confirmationDate = paedRDInfo.paedrdd.PAED_ConfirmationDate__c;
            String pStatus = paedRDInfo.paedrdd.PAED_Status__c;
            PAE_DecisionRecordDetail__c paedrd = new PAE_DecisionRecordDetail__c();
            // 20210719 gzw LJPH-C4Y57Q start
            if (managementCode == '000' && paedRDInfo.paedrdd.PAE_Judge__c == null) {
                paedRDInfo.paedrdd.PAE_Judge__c = 'Unknown';
            }
            // 20210719 gzw LJPH-C4Y57Q end
            if (paedRDInfo.paedrdd.PAED_Status__c != '取消') {
                if (String.isBlank(finalUniversalCode) && confirmationDate == null) {
                    if (String.isNotBlank(managementCode)) {
                        if (managementCode.indexof(',') != -1) {
                            Integer q = 1;
                            for (String code: managementCode.split(',')) {
                                 // 2021-12-08  zxk  精琢科技   手动赋值逻辑  start
                                PAE_DecisionRecordDetailInfo info = new PAE_DecisionRecordDetailInfo();
                                // 2021-12-08  zxk  精琢科技   手动赋值逻辑  end
                                // bug fix gzw 已有的空code数据，数据数据时，会新建  20201214 start
                                PAE_DecisionRecordDetail__c paedrdtemp;
                                if (q == 1) {
                                    paedrdtemp = paedRDInfo.paedrdd;
                                } else {
                                    paedrdtemp = new PAE_DecisionRecordDetail__c();
                                }
                                paedrd = ReproduceResult(paedrdtemp, paedRDInfo); //20200106 add
                                // bug fix gzw 已有的空code数据，数据数据时，会新建  20201214 start
                                paedrd.PAED_Status__c = '有效';
                                paedrd.PAED_ManagementCode__c = code;
                                if (code == '000') {
                                    paedrd.PAE_Judge__c = 'Unknown';
                                }
                                paedrd.RecordTypeId = RecordTypeIdD;
                                paedrd.PAE_is_save__c = '';
                                  // 精琢科技   zxk  2021-10-21  start  给PAE判定记录赋值 
                                if (strMapData.containsKey(code)) {
                                    paedrd.PAE_Judge__c = strMapData.get(code);
                                    info.strJudge = strMapData.get(code);
                                    info.monitorPAE = false;
                                    paedrd.Monitor_PAE__c = false;
                                } else if (managementCode.indexof(code) != -1) {
                                        paedrd.PAE_Judge__c = null;
                                        info.strJudge = paedRDInfo.strJudge;
                                        info.monitorPAE = true;
                                }
                                if (paedrd.PAE_Judge__c == null || paedrd.PAE_Judge__c == '') {
                                    paedrd.Monitor_PAE__c = true;
                                    info.monitorPAE = true;
                                }
                                info.paedrdd = paedrd;
                                paedRecordDetailViewTemporary.add(info);
                                // 精琢科技   zxk  2021-10-21  end  给PAE判定记录赋值
                                q++;
                            }
                        } else {
                             // 2021-12-08  zxk  精琢科技   手动赋值逻辑  start
                            PAE_DecisionRecordDetailInfo info = new PAE_DecisionRecordDetailInfo();
                            // 2021-12-08  zxk  精琢科技   手动赋值逻辑  end
                            // bug fix gzw 已有的空code数据，数据数据时，会新建  20201214 start
                            PAE_DecisionRecordDetail__c paedrdtemp = paedRDInfo.paedrdd;
                            paedrd = ReproduceResult(paedrdtemp, paedRDInfo); //20200106 add
                            // bug fix gzw 已有的空code数据，数据数据时，会新建  20201214 end
                            paedrd.PAED_Status__c = '有效';
                            paedrd.RecordTypeId = RecordTypeIdD;
                            paedrd.PAED_ManagementCode__c = managementCode;
                             // 精琢科技   zxk  2021-10-21  start  给PAE判定记录赋值 
                            if (strMapData.containsKey(managementCode) && productIdx == managementCode) {
                                paedrd.PAE_Judge__c = strMapData.get(managementCode);
                                info.strJudge = strMapData.get(managementCode);
                                info.monitorPAE = false;
                                paedrd.Monitor_PAE__c = false;
                            } else {
                                 info.strJudge = paedRDInfo.strJudge;
                                if (strMapData.get(managementCode) != paedRDInfo.paedrdd.PAE_Judge__c || (paedrd.PAE_Judge__c == null || paedrd.PAE_Judge__c == '')) {
                                   
                                    info.monitorPAE = true;
                                }
                            }
                            if (paedrd.PAE_Judge__c == null || paedrd.PAE_Judge__c == '') {
                                paedrd.Monitor_PAE__c = true;
                                // info.monitorPAE = true;
                            }
                            info.paedrdd = paedrd;
                            paedRecordDetailViewTemporary.add(info);
                            // 精琢科技   zxk  2021-10-21  end  给PAE判定记录赋值 
                        }
                    } else {
                        // Gzw 20201215 编辑页面空白行失去焦点后行消失 对应
                        paedRecordDetailViewTemporary.add(paedRDInfo);
                    }
                } else {
                    paedRecordDetailViewTemporary.add(paedRDInfo);
                }
            } else {
                paedRecordDetailViewTemporary.add(paedRDInfo);
            }
        }
        if (paedRecordDetailViewTemporary != null) {
            paedRecordDetailView = new List < PAE_DecisionRecordDetailInfo > ();
            paedRecordDetailView.addAll(paedRecordDetailViewTemporary);
            if (paedRecordDetailView.size() == 0) {
                PAE_DecisionRecordDetail__c paedrd = new PAE_DecisionRecordDetail__c();
                paedrd.PAED_Status__c = '有效';
                paedrd.RecordTypeId = RecordTypeIdD;
                paedRecordDetailView.add(new PAE_DecisionRecordDetailInfo(paedrd));
            }
        }
    }
    //检查明细的编码是否为空---20200107 add 检查明细的PAE判定是否必填
    public Boolean IsEmptyManagementCode(List < PAE_DecisionRecordDetailInfo > paedRecordDetailView) {
        String isEmpty = '';
        if (paedRecordDetailView.size() == 0) {
            return true;
        }
        // gzw 20201215 取消时不需要判断编码和状态 追加 && CancelineFlag != 3
        for (PAE_DecisionRecordDetailInfo paedRDInfo: paedRecordDetailView) {
            // gzw 20201215 取消时,不判断报错
            if (paedRDInfo.paedrdd.PAED_Status__c == '取消') {
                continue;
            }
            if (paedRDInfo.paedrdd != null) {
                system.debug('paedRDInfo.paedrdd.PAED_ManagementCode__c==========>'+paedRDInfo.paedrdd.PAED_ManagementCode__c);
                system.debug('CancelineFlag=========>'+CancelineFlag);
                system.debug('paedRDInfo.paedrdd.PAE_Judge__c==========>'+paedRDInfo.paedrdd.PAE_Judge__c);
                
                if (String.isBlank(paedRDInfo.paedrdd.PAED_ManagementCode__c) && CancelineFlag != 3) {
                    isEmpty = 'PAE判定记录明细的编码不能为空';
                }
                if (String.isBlank(paedRDInfo.paedrdd.PAE_Judge__c) && CancelineFlag != 3) {
                    isEmpty = 'PAE判定记录明细的PAE判定不能为空';
                }
            } else {
                if (String.isBlank(paedRDInfo.paedrdd.PAED_ManagementCode__c) && CancelineFlag != 3) {
                    isEmpty = 'PAE判定记录明细的编码不能为空';
                }
                if (String.isBlank(paedRDInfo.paedrdd.PAE_Judge__c) && CancelineFlag != 3) {
                    isEmpty = 'PAE判定记录明细的PAE判定不能为空';
                }
            }
            // gzw 20210409 修改参数为空时，表达式判断出错问题
            if (Schema.SObjectType.PAE_DecisionRecordDetail__c.getRecordTypeInfosByDeveloperName().get('intake').getRecordTypeId() == paedRDInfo.paedrdd.RecordTypeId && (containsChineseCharacters(paedRDInfo.paedrdd.PAED_ManagementCode__c) || (String.isNotBlank(paedRDInfo.paedrdd.PAED_ManagementCode__c) && paedRDInfo.paedrdd.PAED_ManagementCode__c.length() > 15))) {
                isEmpty = 'Intake universal code不可以使用汉字，不可以超过15字数。';
                paedRDInfo.paedrdd.PAED_ManagementCode__c.adderror('Intake universal code不可以使用汉字，不可以超过15字数。');
                return true;
            }
        }
        if (String.isNotBlank(isEmpty)) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '包含无效数据:' + isEmpty));
            return true;
        }
        return false;
    }
    //更新PAE明细
    public void UpsertPAE_DecisionRecordDetail(Map < Id, PAE_DecisionRecordDetail__c > paedRecordStatusMap, List < PAE_DecisionRecordDetailInfo > paedRecordDetailView, String paedRecordId, Boolean updateStatusFlag, String prevDetermineResults) {
         system.debug('paedRecordStatusMap.size()===============>'+paedRecordStatusMap);
        List < PAE_DecisionRecordDetail__c > upsertPaedrDetailList = new List < PAE_DecisionRecordDetail__c > ();
        String repair_PAED_ManagementCodes = '';
        String repair_PAED_ManagementCodesZ = '';
        String PAE_codez = '';
        String reappear_confirm = null;
        Integer PAED_Reappear_Result_noSelect_num = 0;
        Integer valid_num = 0;
         // 精琢科技   zxk  2021-10-21  start  给PAE判定记录赋值
        List < String > codeNumDataList = new List < String > ();
        for (PAE_DecisionRecordDetailInfo pdrdInFoCode: paedRecordDetailView) {
            String managementCodeStr = pdrdInFoCode.paedrdd.PAED_ManagementCode__c;
            if (String.isBlank(pdrdInFoCode.paedrdd.id) && String.isNotBlank(managementCodeStr)) {
                for (String codeStr: managementCodeStr.split(',')) {
                    if (String.isNotBlank(codeStr)) {
                        codeNumDataList.add(codeStr);
                    }
                }
            }
        }
        Map < String, String > strMapData = updateIsPae(codeNumDataList);
        // 精琢科技   zxk  2021-10-21  end  给PAE判定记录赋值
        System.debug('paedRecordDetailView ++++++++ ' + paedRecordDetailView.size());
        for (PAE_DecisionRecordDetailInfo paedRDInfo: paedRecordDetailView) {
            PAE_DecisionRecordDetail__c paedrd = new PAE_DecisionRecordDetail__c();
            if (paedRDInfo.paedrdd != null) {
                paedrd.PAED_Report__c = ReportId;
                paedrd.PAED_RCAC__c = ASac_ASrc;
                paedrd.PAE_DecisionRecordD__c = paedRecordId;
                paedrd.RecordTypeId = RecordTypeIdD;
                paedrd.PAE_is_save__c = '1'; //20200319 add 
                system.debug('paedRecordStatusMap.containsKey(paedRDInfo.paedrdd.Id)===============>'+paedRDInfo.paedrdd.Id);
               

                if (paedRecordStatusMap != null && paedRecordStatusMap.size() > 0 && paedRecordStatusMap.containsKey(paedRDInfo.paedrdd.Id)) {
                    // Gzw add 20200821 PAE结果变化时，保存接口信息字段 start
                    paedrd.isInterfaceCreate__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).isInterfaceCreate__c;
                    paedrd.LocationGroup__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).LocationGroup__c;
                    paedrd.Location__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).Location__c;
                    paedrd.Phenomenon__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).Phenomenon__c;
                    paedrd.Description__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).Description__c;
                    paedrd.Cause__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).Cause__c;
                    paedrd.EtqPart__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).EtqPart__c;
                    paedrd.EtqAsAnalyzed__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).EtqAsAnalyzed__c;
                    paedrd.EtqCause__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).EtqCause__c;
                    paedrd.FinalUniversalDesc__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).FinalUniversalDesc__c;
                    paedrd.InspectionCategory109__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).InspectionCategory109__c;
                    // Gzw add 20200821 PAE结果变化时，保存接口信息字段 end
                    // Gzw add 20200821 PAE结果变化时，保存RVS005接口信息字段 start
                    paedrd.RVSDetailNo__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).RVSDetailNo__c;
                    paedrd.PhenomenonDesc__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).PhenomenonDesc__c;
                    paedrd.RVS_Date__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).RVS_Date__c;
                    paedrd.RVS_Time__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).RVS_Time__c;
                    paedrd.RVS_Decision_Person__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).RVS_Decision_Person__c;
                    // Gzw add 20200821 PAE结果变化时，保存RVS005接口信息字段 start
                    paedrd.PAED_Affirmant__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).PAED_Affirmant__c;
                    paedrd.PAED_ConfirmationDate__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).PAED_ConfirmationDate__c;
                     // 精琢科技  zxk  为Monitor_PAE__c赋值   start
                    paedrd.Monitor_PAE__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).Monitor_PAE__c;
                    // 精琢科技  zxk  为Monitor_PAE__c赋值   end
                    paedrd = ReproduceResult(paedrd, paedRDInfo);
                    if (CancelineFlag == 3 && paedRDInfo.check && paedRDInfo.paedrdd.PAED_Status__c != '取消') {
                        //有效变成取消
                        paedrd.PAED_ManagementCode__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).PAED_ManagementCode__c;
                        paedrd.PAED_Status__c = '取消';
                        paedrd.PAED_CancellationDate__c = Date.toDay();
                        paedrd.PAED_Nullifier__c = UserInfo.getUserId();
                    } else if (paedRDInfo.paedrdd.PAED_Status__c == '有效') {
                        //有效PAE明细编码
                        paedrd.PAED_Status__c = '有效';
                        paedrd.PAED_ManagementCode__c = paedRDInfo.paedrdd.PAED_ManagementCode__c;
                        if (String.isBlank(repair_PAED_ManagementCodes)) {
                            repair_PAED_ManagementCodes = paedRDInfo.paedrdd.PAED_ManagementCode__c;
                        } else {
                            repair_PAED_ManagementCodes += ',' + paedRDInfo.paedrdd.PAED_ManagementCode__c;
                        }
                        if (paedRDInfo.paedrdd.PAED_Reappear_Result__c == '不再現' && !paedRDInfo.paedrdd.PAED_ManagementCode__c.equals('000')) {
                            // WLIG-BWMB4S gzw start
                            String pmcode = paedRDInfo.paedrdd.PAED_ManagementCode__c.trim();
                            if (pmcode.length() == 3 && (pmcode.endsWith('V') || pmcode.endsWith('W') || pmcode.endsWith('X') || pmcode.endsWith('Y'))) {
                                PAE_codez = pmcode.substring(0, pmcode.length() - 1) + 'Z';
                            } else {
                                PAE_codez = pmcode + 'Z';
                            }
                            // WLIG-BWMB4S gzw end
                            if (String.isBlank(repair_PAED_ManagementCodesZ)) {
                                repair_PAED_ManagementCodesZ = PAE_codez;
                            } else {
                                repair_PAED_ManagementCodesZ += ',' + PAE_codez;
                            }
                        }
                        valid_num++;
                        if (paedrd.PAED_Reappear_Result__c == null) {
                            PAED_Reappear_Result_noSelect_num++;
                        }
                    } else if (paedRDInfo.paedrdd.PAED_Status__c == '取消') {
                        paedrd.PAED_Status__c = '取消';
                        paedrd.PAED_ManagementCode__c = paedRDInfo.paedrdd.PAED_ManagementCode__c;
                        paedrd.PAED_Nullifier__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).PAED_Nullifier__c; //UserInfo.getUserId();
                        paedrd.PAED_CancellationDate__c = paedRecordStatusMap.get(paedRDInfo.paedrdd.Id).PAED_CancellationDate__c; //Date.toDay();
                    }
                } else if ((paedRecordStatusMap != null && paedRecordStatusMap.size() > 0 && !paedRecordStatusMap.containsKey(paedRDInfo.paedrdd.Id)) || paedRecordStatusMap == null) {
                    paedrd = ReproduceResult(paedrd, paedRDInfo);
                    if (paedRDInfo.check && CancelineFlag == 3) {
                        //新增取消PAE判定明细
                        paedrd.PAED_CancellationDate__c = Date.toDay();
                        paedrd.PAED_Nullifier__c = UserInfo.getUserId();
                        paedrd.PAED_Status__c = '取消';
                    } else {
                        paedrd.PAED_Affirmant__c = UserInfo.getUserId();
                        paedrd.PAED_ConfirmationDate__c = Date.toDay();
                        paedrd.PAED_Status__c = paedRDInfo.paedrdd.PAED_Status__c;
                        if (String.isBlank(repair_PAED_ManagementCodes)) {
                            repair_PAED_ManagementCodes = paedRDInfo.paedrdd.PAED_ManagementCode__c;
                        } else {
                            repair_PAED_ManagementCodes += ',' + paedRDInfo.paedrdd.PAED_ManagementCode__c;
                        }
                        //20191217 add 
                        if (paedRDInfo.paedrdd.PAED_Reappear_Result__c == '不再現' && !paedRDInfo.paedrdd.PAED_ManagementCode__c.equals('000')) {
                            // WLIG-BWMB4S gzw start
                            String pmcode = paedRDInfo.paedrdd.PAED_ManagementCode__c.trim();
                            if (pmcode.length() == 3 && (pmcode.endsWith('V') || pmcode.endsWith('W') || pmcode.endsWith('X') || pmcode.endsWith('Y'))) {
                                PAE_codez = pmcode.substring(0, pmcode.length() - 1) + 'Z';
                            } else {
                                PAE_codez = pmcode + 'Z';
                            }
                            // WLIG-BWMB4S gzw end
                            if (String.isBlank(repair_PAED_ManagementCodesZ)) {
                                repair_PAED_ManagementCodesZ = PAE_codez;
                            } else {
                                repair_PAED_ManagementCodesZ += ',' + PAE_codez;
                            }
                        }
                        valid_num++;
                        if (paedrd.PAED_Reappear_Result__c == null) {
                            PAED_Reappear_Result_noSelect_num++;
                        }
                    }
                    paedrd.PAED_ManagementCode__c = paedRDInfo.paedrdd.PAED_ManagementCode__c;
                    // 精琢科技   zxk   2021-11-15  为Monitor_PAE__c赋值   start
                    if (String.isBlank(strMapData.get(paedrd.PAED_ManagementCode__c))) {
                        paedrd.Monitor_PAE__c = true;
                    } else {
                        if (strMapData.get(paedrd.PAED_ManagementCode__c) != paedrd.PAE_Judge__c) {
                            paedrd.Monitor_PAE__c = true;
                        }
                    }
                    // 精琢科技   zxk   2021-11-15  为Monitor_PAE__c赋值   end
                    // Gzw add 20200821 PAE结果变化时，保存接口信息字段 start
                    paedrd.isInterfaceCreate__c = paedRDInfo.paedrdd.isInterfaceCreate__c;
                    paedrd.LocationGroup__c = paedRDInfo.paedrdd.LocationGroup__c;
                    paedrd.Location__c = paedRDInfo.paedrdd.Location__c;
                    paedrd.Phenomenon__c = paedRDInfo.paedrdd.Phenomenon__c;
                    paedrd.Description__c = paedRDInfo.paedrdd.Description__c;
                    paedrd.Cause__c = paedRDInfo.paedrdd.Cause__c;
                    // paedrd.PAE_Judge__c = paedRDInfo.paedrdd.PAE_Judge__c;
                    paedrd.EtqPart__c = paedRDInfo.paedrdd.EtqPart__c;
                    paedrd.EtqAsAnalyzed__c = paedRDInfo.paedrdd.EtqAsAnalyzed__c;
                    paedrd.EtqCause__c = paedRDInfo.paedrdd.EtqCause__c;
                    paedrd.FinalUniversalDesc__c = paedRDInfo.paedrdd.FinalUniversalDesc__c;
                    // paedrd.PAED_RCAC__c = paedRDInfo.paedrdd.PAED_RCAC__c;
                    paedrd.InspectionCategory109__c = paedRDInfo.paedrdd.InspectionCategory109__c;
                    // Gzw add 20200821 PAE结果变化时，保存接口信息字段 end
                }
                //20191216 ljh start
                //状态是否改变
                System.debug('+++++++++++++++++++++: ' + updateStatusFlag);
                if (updateStatusFlag) {
                    //改变状态--->复制新的更新需要更新的
                    upsertPaedrDetailList.add(paedrd);
                } else {
                    //更新需要更新的
                    paedrd.Id = paedRDInfo.paedrdd.Id;
                    upsertPaedrDetailList.add(paedrd);
                }
            }
        }
        if (upsertPaedrDetailList.size() > 0) {
            upsert upsertPaedrDetailList;
        }
        System.debug('PAED_Reappear_Result_noSelect_num' + PAED_Reappear_Result_noSelect_num);
        if (PAED_Reappear_Result_noSelect_num > 0) {
            reappear_confirm = '未确认';
        } else if (valid_num > 0 && PAED_Reappear_Result_noSelect_num == 0) {
            reappear_confirm = '已确认';
        }
        AssignValuesOtherObjects(repair_PAED_ManagementCodes, paedRecordId, repair_PAED_ManagementCodesZ, reappear_confirm, prevDetermineResults);
    }
    //为PAE判定和相关的修理赋值
    public void AssignValuesOtherObjects(String stitchingCode, String paedRecordId, String stitchingCodeZ, String reappear_confirm, String prevDetermineResults) {
        if (String.isNotBlank(stitchingCode) && stitchingCode.contains(',')) {
            String[] stitchingCodeArr = stitchingCode.split(',');
            stitchingCodeArr.sort();
            String stitchingCode1 = '';
            for (Integer i = 0; i < stitchingCodeArr.size(); i++) {
                if (i < (stitchingCodeArr.size() - 1)) {
                    stitchingCode1 += stitchingCodeArr[i] + ',';
                } else {
                    stitchingCode1 += stitchingCodeArr[i] + '';
                }
            }
            stitchingCode = stitchingCode1;
        }
        //报告书相关
        if (!string.isBlank(ReportId)) {
            Report__c Report = [select id, PAE_DetermineAC__c, PAE_Determine__c, PAE_codez__c, PAE_temp_final_code__c, PAE_reappear_confirm__c,
                PAE_intakePrevDetermineResults__c, PAE_finalPrevDetermineResults__c, Repair_Authenticator__c, OCSM_RC_CordingUser__c
                from Report__c where id = : ReportId
            ];
            List < PAE_DecisionRecord__c > rdRecordList = [SELECT Id, Name, PAE_DetermineResults__c, PAE_DetermineResults_Text__c, PAE_ConfirmationDate__c,
                PAE_Authenticator__c
                FROM PAE_DecisionRecord__c where Id = : paedRecordId
            ];
            PAE_DecisionRecord__c paedRecord = new PAE_DecisionRecord__c();
            paedRecord.Id = paedRecordId;
            if (ASac_ASrc == 'Intake') {
                paedRecord.PAE_reappear_confirm__c = reappear_confirm;
                Report.PAE_reappear_confirm__c = reappear_confirm;
            } else {
                paedRecord.PAE_reappear_confirm__c = Report.PAE_reappear_confirm__c;
            }
            if (rdRecordList[0].PAE_ConfirmationDate__c == null) {
                paedRecord.Id = paedRecordId;
                paedRecord.PAE_ConfirmationDate__c = Date.toDay();
                paedRecord.PAE_Authenticator__c = UserInfo.getUserId();
            }
            if (paedRecord != null) {
                update paedRecord;
            }
            List < Report__c > repList;
            if (ASac_ASrc == 'Intake') {
                repList = [select Id, Name, RC_PAED__c, AC_PAED__c from Report__c where RC_PAED__c = : paedRecordId];
                if (repList.size() == 0) {
                    if (String.isBlank(Report.Repair_Authenticator__c)) {
                        Report.Repair_ConfirmationDate__c = Date.toDay();
                        Report.Repair_Authenticator__c = UserInfo.getName();
                    }
                    Report.RC_PAED__c = paedRecordId;
                } else {
                    if (String.isBlank(Report.Repair_Authenticator__c)) {
                        Report.Repair_ConfirmationDate__c = rdRecord.PAE_ConfirmationDate__c;
                        Report.Repair_Authenticator__c = rdRecord.PAE_Authenticator__c;
                    }
                    Report.RC_PAED__c = paedRecordId;
                }
            } else {
                repList = [select Id, Name, RC_PAED__c, AC_PAED__c from Report__c where AC_PAED__c = : paedRecordId];
                if (repList.size() == 0) {
                    if (String.isBlank(Report.OCSM_RC_CordingUser__c)) {
                        Report.OCSM_RC_CordingDate__c = Date.toDay();
                        Report.OCSM_RC_CordingUser__c = UserInfo.getName();
                    }
                    Report.AC_PAED__c = paedRecordId;
                } else {
                    if (String.isBlank(Report.OCSM_RC_CordingUser__c)) {
                        Report.OCSM_RC_CordingDate__c = rdRecord.PAE_ConfirmationDate__c;
                        Report.OCSM_RC_CordingUser__c = rdRecord.PAE_Authenticator__c;
                    }
                    Report.AC_PAED__c = paedRecordId;
                }
            }
            if (String.isNotBlank(stitchingCode)) {
                if (ASac_ASrc == 'Intake') {
                    Report.ASReportedCode__c = stitchingCode;
                    // 2020/08/04 taoqz modify
                    Report.PAE_Determine__c = rdRecord.PAE_DetermineResults_Text__c;
                    Report.PAE_intakePrevDetermineResults__c = prevDetermineResults;
                    //如果有不在现 则更新repair.ASReportedCodeAC__c 
                    if (String.isNotBlank(stitchingCodeZ)) {
                        if (String.isNotBlank(Report.PAE_temp_final_code__c)) {
                            Report.ASReportedCodeAC__c = Report.PAE_temp_final_code__c + ',' + stitchingCodeZ;
                        } else {
                            Report.ASReportedCodeAC__c = stitchingCodeZ;
                        }
                        Report.PAE_codez__c = stitchingCodeZ;
                    } else {
                        //202003224 add 如果没有有不在现 则更新repair.ASReportedCodeAC__c
                        Report.ASReportedCodeAC__c = Report.PAE_temp_final_code__c;
                        Report.PAE_codez__c = stitchingCodeZ;
                    }
                } else {
                    if (String.isNotBlank(Report.PAE_codez__c)) {
                        Report.ASReportedCodeAC__c = stitchingCode + ',' + Report.PAE_codez__c;
                    } else {
                        Report.ASReportedCodeAC__c = stitchingCode;
                    }
                    Report.PAE_temp_final_code__c = stitchingCode;
                    // 2020/08/04 taoqz modify
                    Report.PAE_DetermineAC__c = rdRecord.PAE_DetermineResults_Text__c;
                    Report.PAE_finalPrevDetermineResults__c = prevDetermineResults;
                }
            } else {
                if (ASac_ASrc == 'Intake') {
                    Report.ASReportedCode__c = stitchingCode;
                    Report.PAE_codez__c = stitchingCodeZ;
                    Report.ASReportedCodeAC__c = Report.PAE_temp_final_code__c;
                    // 2020/08/04 taoqz modify
                    Report.PAE_Determine__c = rdRecord.PAE_DetermineResults_Text__c;
                    Report.PAE_intakePrevDetermineResults__c = prevDetermineResults;
                } else {
                    Report.ASReportedCodeAC__c = stitchingCode;
                    Report.PAE_temp_final_code__c = stitchingCode;
                    // 2020/08/04 taoqz modify
                    Report.PAE_DetermineAC__c = rdRecord.PAE_DetermineResults_Text__c;
                    Report.PAE_finalPrevDetermineResults__c = prevDetermineResults;
                    Report.OCSM_RC_CordingDate__c = null;
                    Report.OCSM_RC_CordingUser__c = null;
                }
            }
            update Report;
        }
    }
    //20191209 ljh 新字段添加 start
    public static PAE_DecisionRecordDetail__c ReproduceResult(PAE_DecisionRecordDetail__c paedrd, PAE_DecisionRecordDetailInfo paedRDInfo) {
        paedrd.PAE_Judge__c = paedRDInfo.paedrdd.PAE_Judge__c;
        // 20201126 gzw 获取RVS005接口信息数据 start
        paedrd.RVSDetailNo__c = paedRDInfo.paedrdd.RVSDetailNo__c;
        paedrd.LocationGroup__c = paedRDInfo.paedrdd.LocationGroup__c;
        paedrd.Location__c = paedRDInfo.paedrdd.Location__c;
        paedrd.PhenomenonDesc__c = paedRDInfo.paedrdd.PhenomenonDesc__c;
        paedrd.RVS_Date__c = paedRDInfo.paedrdd.RVS_Date__c;
        paedrd.RVS_Time__c = paedRDInfo.paedrdd.RVS_Time__c;
        paedrd.RVS_Decision_Person__c = paedRDInfo.paedrdd.RVS_Decision_Person__c;
        // 20201126 gzw 获取RVS005接口信息数据 end
        if (paedRDInfo.paedrdd.PAED_Reappear_Result__c == '不再現') {
            paedrd.PAED_Reappear_Result__c = '不再現';
            paedrd.PAED_ResultAffirmant__c = UserInfo.getUserId();
            paedrd.PAED_ResultConfirmationDate__c = Date.toDay();
        } else {
            paedrd.PAED_Reappear_Result__c = paedRDInfo.paedrdd.PAED_Reappear_Result__c;
            paedrd.PAED_ResultAffirmant__c = null;
            paedrd.PAED_ResultConfirmationDate__c = null;
        }
        return paedrd;
    }
    // 正则表达式 判断是否包含汉字
    // gzw 20210409 修改参数为空时，表达式判断出错问题
    public static Boolean containsChineseCharacters(String InputString) {
        if (String.isNotblank(InputString)) {
            Pattern p = Pattern.compile('\\p{IsHan}');
            Matcher m = p.matcher(InputString);
            return m.find();
        } else {
            return false;
        }
    }
    // 精琢科技   zxk  2021-10-21  start  给PAE判定记录赋值
    public Map < String, String > updateIsPae(List < String > codeNumDataList) {
        Map < String, String > paeStrMap = new Map < String, String > ();
        String sql = 'select RSS_CODE__C, IS_INTAKE_ESTIMATION__C, IS_PAE__c, IS_INACTIVE__C FROM RSA_master_data__c  WHERE RSS_CODE__C in: codeNumDataList AND IS_INACTIVE__C = \'No\'';
        if ('ASRCDecision' == RecordTypeName) {
            sql += ' AND IS_INTAKE_ESTIMATION__C like \'%Intake%\'';
        }
        if ('ASACDecision' == RecordTypeName) {
            sql += ' AND IS_INTAKE_ESTIMATION__C like \'%Estimation%\'';
        }
        List < RSA_master_data__c > rsaMasterDataSqlList = DataBase.query(sql);
        String result = null;
        for (RSA_master_data__c rsaMaster: rsaMasterDataSqlList) {
            if ('ASRCDecision' == RecordTypeName) {
                if (rsaMaster.IS_PAE__c == 'YES') {
                    result = 'PAE';
                }
                if (rsaMaster.IS_PAE__c == 'No') {
                    result = 'nonPAE';
                }
                if (rsaMaster.IS_PAE__c == 'Unknown') {
                    result = 'Unknown';
                }
            }
            if ('ASACDecision' == RecordTypeName) {
                if (rsaMaster.IS_PAE__c == 'YES') {
                    result = 'PAE';
                }
                if (rsaMaster.IS_PAE__c == 'No') {
                    result = 'nonPAE';
                }
                if (rsaMaster.IS_PAE__c == 'Unknown') {
                    result = 'Unknown';
                }
            }
            paeStrMap.put(rsaMaster.RSS_CODE__C, result);
        }
        return paeStrMap;
    }
    // 精琢科技   zxk  2021-10-21  start  给PAE判定记录赋值

    //20191209 ljh 新字段添加 end
    class PAE_DecisionRecordDetailInfo {
         public Boolean check {
            get;
            set;
        }
        public Boolean oldCheck {
            get;
            set;
        }
        public Boolean canSelect {
            get;
            set;
        }
        public String strJudge {
            get;
            set;
        }
        public Boolean monitorPAE {
            get;
            set;
        }
        public PAE_DecisionRecordDetail__c paedrdd {
            get;
            set;
        }
        public PAE_DecisionRecordDetailInfo() {
            paedrdd = new PAE_DecisionRecordDetail__c();
            check = false;
            oldCheck = false;
            canSelect = false;
        }
        public PAE_DecisionRecordDetailInfo(PAE_DecisionRecordDetail__c paedrd) {
            check = false;
            oldCheck = false;
            paedrdd = paedrd;
            if (String.isNotBlank(paedrd.Id)) {
                monitorPAE = paedrd.Monitor_PAE__c;
            }
            strJudge = paedrd.PAE_Judge__c;
            //IISE来的明细允许删除。
            canSelect = false;
        }
    }
}