黄千龙
2023-03-08 962519811b7c4be07f30d09e791798b0ea79d3ae
force-app/main/default/classes/ChoiceAssetController.cls
@@ -57,6 +57,9 @@
                ActualVisitTimeThird__c, ResponseResultDesc__c, ProcessResult__c, Status__c,
                Department__r.Name, Department__r.Id,ActualVisitDateThird__c,
                EndTimeFirst__c,RepairsReportDate__c,ActualVisitDateFirst__c,ActualVisitDateSecon__c,
                // 2023-3-6   zyh   add   start
                DateReceiptQuestions__c,IfDeadHurt__c,ProblemOccurred__c,ProblemOccurredSelect__c,ReportAdverseEvents__c,WhatProject__c,OperationOrExaminationName__c,BreakORFallOff__c,UseFailProductFinish__c,SupportingProducts__c,AfterFailureInformation__c,Delay15Min__c,InformationFrom__c,FailureQInHospital__c,DelayReportReason__c,IsProductFaultRelated__c,IsOts__c,SenderOrgCode__c,SenderCompany__c,SenderName__c,SenderMobilePhone__c,SenderAddress__c,RecepientCompany__c,RecepientName__c,RecepientMobilePhone__c,RecepientAddress__c,ReturnWayType__c,OrderNumber__c,FailureReason__c,LogisticsSendDate__c,Item0010__c,Item0020__c,Item0030__c,Item0040__c,Item0050__c,
                // 2023-3-6   zyh   add   end
                OwnerId,Owner.Name  
                FROM RepairSubOrder__c
                WHERE Id =: RepairSubOrderId
@@ -72,12 +75,21 @@
        //1.只查找100条保有设备数据
        String fuselageNumberTrim = String.isNotBlank(FuselageNumber)?FuselageNumber.trim():'';
        String serialNumber = '%' + String.escapeSingleQuotes(fuselageNumberTrim.replaceAll('%', '\\%')) + '%';
        List < Asset > assetListed =    [SELECT Id,name,SerialNumber,InstallDate,Information_From__c,Asset_situation__c,
        List < Asset > assetListed =    [SELECT Id,name,SerialNumber,InstallDate,
                                            // Information_From__c,// 20220927 ljh XLIU-CJN62G
                                            Asset_situation__c,
                                            Order_No__c,Account.Name,Status,Department_Class__c,Hospital__r.Owner.Name,
                                            Hospital__r.Owner.Phone,Installation_Site__c,CurrentContract__c,
                                            Product2.Asset_Model_No__c,Hospital__r.Name,Department_Class__r.Name ,
                                            Department_Class__r.Id,Ji_Zhong_Guan_Li_Ku_Cun__c
                                            Department_Class__r.Id,
                                            // Ji_Zhong_Guan_Li_Ku_Cun__c,// 20220927 ljh XLIU-CJN62G
                                            Posting_Date__c,Extend_Gurantee_DateTo__c,CurrentContract_End_Date__c,// 20220927 ljh XLIU-CJN62G
                                            Account.RecordTypeId
                                            ,Account.Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c
                                            ,Account.Parent.FSE_SP_Main_Leader__r.Work_Location__c
                                            //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221012 start
                                            ,NoPartRiskDate_F__c
                                            //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221012 end
                                        FROM Asset where Id != null AND Repairing_Count__c >= 0 AND SerialNumber like :serialNumber LIMIT 100
                                        ];
@@ -85,7 +97,6 @@
        for (Asset ast: assetListed) {
            choiceAssetInfoRecordsview.add(new ChoiceAssetInfo(ast));
        }
    }
    // 检索
@@ -126,6 +137,10 @@
            if (info.check) {
                ast = info.ast;
                quantity += 1;
                // if (info.ast.Ji_Zhong_Guan_Li_Ku_Cun__c <= 0){
                //     ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '设备集中管理库存不足'));
                //     return null;
                // }
            }
        }
        if (quantity == 0) {
@@ -135,17 +150,39 @@
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '只能选择一个保有设备'));
            return null;
        }
        //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221012 start
        List<Asset> ass = [select id,Product_ID__c from Asset where ID = :ast.Id];
        List<Product2> p2 = [select id,Name,Can_Repair__c
                        from Product2 where
                        ID = :ass[0].Product_ID__c];
        String canRepair = p2[0].Can_Repair__c;
        if (canRepair=='第三方'){
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '非我司修理对象,无法新建修理,如有不明请咨询CIC'));
            return null;
        }
        if (canRepair=='不' || String.isBlank(canRepair)){
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '本设备无法新建修理'));
            return null;
        }
        //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221012 end
        return createData(ast);
    }
    public PageReference createData(Asset ast) {
        String url = '/';
        String joint_1 = '=';
        String joint_2 = '_lkid=';
        String joint_3 = '&CF';
        String joint_4 = '&';
        //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221110 start
        List<Asset> ass = [select id,Product_ID__c from Asset where ID = :ast.Id];
        List<Product2> p2 = [select id,Name,Can_Repair__c
                        from Product2 where
                        ID = :ass[0].Product_ID__c];
        String canRepair = p2[0].Can_Repair__c;
        system.debug('1111111111111111111'+canRepair);
        //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221110 end
        if ('Repair'.equals(dataType)) {
            String Delivered_Product_Id = '00N10000002Dx1X'; //设备型号 
            String Account_Id = '00N10000002Dx5n'; //科室
@@ -177,23 +214,68 @@
            String  ActualVisitDateThird_Id= '';//三次上门日
            String  SubOrderCompleteDate_Id= '';//报修单处理完成日
            String  SubOrderCreatedDate_Id= '';//报修单申请修理日
            //LLIU-CGX5E9 LY 20220812 start
            String  DateReceiptQuestions_Id = '';//问题联络收到日
            //LLIU-CGX5E9 LY 20220812 end
            //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221110 start
            String  Excwork_location_Id = '';//跳过维修中心
            //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221110 end
            // 2023-3-6   zyh   add   start
            // String dateReceiptQuestions;已存在
            String SupportingProducts = '00N10000008rsW4';//配套使用产品SupportingProducts__c
            String IfDeadHurt = '00N10000008rsW7';//是否有死亡、伤害、感染
            String ProblemOccurred = '00N10000008rsVv';//问题发生时间情况
            String ProblemOccurredSelect = '00N10000009hsvI';//问题发生时间情况 其它
            String ReportAdverseEvents = '00N10000008rsW2';//医院有没有向政府机关报告不良事件或疑似不良事件
            String WhatProject = '00N10000008rsW6';//做的是哪个项目
            String OperationOrExaminationName = '00N10000008rsVk';//手术/检查名称
            String BreakORFallOff = '00N10000008rsVN';//是否有发生断裂或脱落
            String UseFailProductFinish = '00N10000008rsW5';//是否用该产品完成了手术/检查
            // String SupportingProducts = '00N10000008rsW4';//配套使用产品
            String AfterFailureInformation = '00N10000008rsVL';//发现故障后,医院对患者的处理情况
            String Delay15Min = '00N10000008rsVR';//发现故障现象后,有延误15分钟以上的手术实施的情况发生吗
            String InformationFrom = '00N10000008rsVZ';//信息是从医院的谁那里得到的
            String FailureQInHospital = '00N10000008rsVT';//在医院,故障发生的频率是多少
            String DelayReportReason = '00N10000008rsVS';//超时报告理由
            String IsProductFaultRelated = '00N10000008rsVw';//是否和这次的产品故障有关
            String IsOts = '';
            String SenderOrgCode = '';
            String SenderCompany = '';
            String SenderName = '';
            String SenderMobilePhone = '';
            String SenderAddress = '';
            String RecepientCompany = '';
            String RecepientName = '';
            String RecepientMobilePhone = '';
            String RecepientAddress = '';
            String ReturnWayType = '';
            String OrderNumber = '';
            String FailureReason = '';
            String LogisticsSendDate = '';
            String Item0010 = '';
            String Item0020 = '';
            String Item0030 = '';
            String Item0040 = '';
            String Item0050 = '';
            // 2023-3-6   zyh   add   end
            String  engineerSendDate_Id= '';//工程师修理品寄送日
            if (NFMUtil.isSandbox()) { //测试环境
                RepairApplicant_Id = '00N1m0000054ufW'; //报修人
                // RepairApplicantPosition_Id = '00N1m0000054ufV'; //报修人岗位
                RepairApplicantHospital_Id = '00N1m0000054ufU'; //报修人医院
                RepairApplicantDepartment_Id = '00N1m0000054ufT'; //报修人科室
                baoxiuzidan = '00N1m0000054ufZ'; //报修子单
                faqiri = '00N1m0000054ufa'; //报修发起日
                shouliri = '00N1m0000054ufS'; //工程师受理日
            // if (NFMUtil.isSandbox()) { //测试环境
            //     RepairApplicant_Id = '00N1m0000054ufW'; //报修人
            //     // RepairApplicantPosition_Id = '00N1m0000054ufV'; //报修人岗位
            //     RepairApplicantHospital_Id = '00N1m0000054ufU'; //报修人医院
            //     RepairApplicantDepartment_Id = '00N1m0000054ufT'; //报修人科室
            //     //baoxiuzidan = '00N1m0000054ufZ'; //报修子单
            //     baoxiuzidan = '00N10000009H1rR'; //报修子单
            //     faqiri = '00N1m0000054ufa'; //报修发起日
            //     shouliri = '00N1m0000054ufS'; //工程师受理日
                
                PlannedVisitDay_Id= '00N1m000005SRiF';//计划上门日
                ActualVisitDateFirst_Id= '00N1m000005SRiK';//一次上门日
                ActualVisitDateSecond_Id= '00N1m000005SRiP';//二次上门日
                ActualVisitDateThird_Id= '00N1m000005SRiU';//三次上门日
                SubOrderCompleteDate_Id= '00N1m000005SRmg';//报修单处理完成日
                SubOrderCreatedDate_Id= '00N1m000005SRmW';//报修单申请修理日
            } else { //正式环境
            //     PlannedVisitDay_Id= '00N1m000005SRiF';//计划上门日
            //     ActualVisitDateFirst_Id= '00N1m000005SRiK';//一次上门日
            //     ActualVisitDateSecond_Id= '00N1m000005SRiP';//二次上门日
            //     ActualVisitDateThird_Id= '00N1m000005SRiU';//三次上门日
            //     SubOrderCompleteDate_Id= '00N1m000005SRmg';//报修单处理完成日
            //     SubOrderCreatedDate_Id= '00N1m000005SRmW';//报修单申请修理日
            // } else { //正式环境
                RepairApplicant_Id = '00N10000009H1rQ'; //报修人
                // RepairApplicantPosition_Id = ''; //报修人岗位  
                RepairApplicantHospital_Id = '00N10000009H1rP'; //报修人医院  
@@ -209,9 +291,20 @@
                ActualVisitDateThird_Id= '00N10000009H1r8';//三次上门日
                SubOrderCompleteDate_Id= '00N10000009H1ri';//报修单处理完成日
                SubOrderCreatedDate_Id= '00N10000009H1rj';//报修单申请修理日
            }
                //LLIU-CGX5E9 LY 20220812 start
                DateReceiptQuestions_Id= '00N10000008rsVQ';//问题联络收到日
                //LLIU-CGX5E9 LY 20220812 end
                //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221110 start
                Excwork_location_Id = '00N10000009HAJl';//跳过维修中心
                //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221110 end
            //}
            url += 'a0J/e?retURL=%2F';
            //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221110 start
            if (canRepair=='RC送修'){
                url += joint_4 + Excwork_location_Id + joint_1 + true;
            }
            //XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221110 end
            url += joint_3 + Delivered_Product_Id + joint_1 + ast.Name;
            url += joint_3 + Delivered_Product_Id + joint_2 + ast.Id;
@@ -235,8 +328,8 @@
            url += joint_4 + RepairApplicantHospital_Id + joint_1 + repairSubOrder.Hospital__r.Name;//报修人医院
            url += joint_4 + RepairApplicantDepartment_Id + joint_1 + repairSubOrder.Department__r.Name;//报修人科室
            if (repairSubOrder.ProblemDescription__c != null) {
                url += joint_4 + Repair_Detail_Id + joint_1 + repairSubOrder.ProblemDescription__c;
            if (repairSubOrder.ResponseResultDesc__c != null) { //2022/04/07   zhangyuheng  ProblemDescription__c>ResponseResultDesc__c
                url += joint_4 + Repair_Detail_Id + joint_1 + repairSubOrder.ResponseResultDesc__c;
            }
            url += joint_4 + guzhang + joint_1 + NFMUtil.formatDateTime2StrSprit(repairSubOrder.FaultTime__c);
            //add         wangweipeng                 2022/02/11              start
@@ -248,16 +341,100 @@
            url += joint_4 +  ActualVisitDateSecond_Id+ joint_1 + NFMUtil.formatDateTime2StrSprit(repairSubOrder.ActualVisitDateSecon__c);//二次上门日
            url += joint_4 +  ActualVisitDateThird_Id+ joint_1 + NFMUtil.formatDateTime2StrSprit(repairSubOrder.ActualVisitDateThird__c);//三次上门日
            url += joint_4 +  SubOrderCompleteDate_Id+ joint_1 + NFMUtil.formatDateTime2StrSprit(repairSubOrder.ApplicationTime__c);//报修单处理完成日
            //LLIU-CGX5E9 LY 20220812 start
            url += joint_4 +  DateReceiptQuestions_Id+ joint_1 + NFMUtil.formatDateTime2StrSprit(repairSubOrder.ApplicationTime__c);//问题联络收到日
            //LLIU-CGX5E9 LY 20220812 end
            url += joint_4 +  SubOrderCreatedDate_Id+ joint_1 + NFMUtil.formatDateTime2StrSprit(Date.today());//报修单申请修理日
            url += joint_4 + shouliri + joint_1 + NFMUtil.formatDateTime2StrSprit(repairSubOrder.ReceiverTime__c);
            //add     wangweipeng        2022/01/26       start
            url += joint_4 +  SalesOfficeCode_selection_Id+ joint_1 + ast.Account.Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c;//修理品返送地
            // url += joint_4 +  SalesOfficeCode_selection_Id+ joint_1 + ast.Account.Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c;//修理品返送地      //2022/4/7  zhangyuheng 注释
            //add     wangweipeng        2022/01/26       end
            //add     zhangyuheng        2022/04/07       start
            if (String.isNotBlank(ast.Account.RecordTypeId)) {
                if (ast.Account.RecordTypeId == '01210000000QemQAAS' || //战略科室 ET
                    ast.Account.RecordTypeId == '01210000000QemL' || //战略科室 消化科
                    ast.Account.RecordTypeId == '01210000000Qezy' || //战略科室 其他
                    ast.Account.RecordTypeId == '01210000000Qf03' || //战略科室 不明
                    ast.Account.RecordTypeId == '01210000000QezZ' || //战略科室 呼吸科
                    ast.Account.RecordTypeId == '01210000000Qezo' || //战略科室 妇科
                    ast.Account.RecordTypeId == '01210000000Qeze' || //战略科室 普外科
                    ast.Account.RecordTypeId == '01210000000Qezj' || //战略科室 泌尿科
                    ast.Account.RecordTypeId == '01210000000Qezt'    //战略科室 耳鼻喉科
                    ) { //战略科室
                    if (String.isNotBlank(ast.Account.Parent.FSE_SP_Main_Leader__r.Work_Location__c)) {
                        url += joint_4 +  SalesOfficeCode_selection_Id+ joint_1 + ast.Account.Parent.FSE_SP_Main_Leader__r.Work_Location__c;//修理品返送地
                    }else {
                        // continue;
                    }
                }
                if (ast.Account.RecordTypeId == '01210000000QfmRAAS' || //科室 呼吸科
                    ast.Account.RecordTypeId == '01210000000QfmH' || //科室 普外科
                    ast.Account.RecordTypeId == '01210000000Qfmb' || //科室 其他
                    ast.Account.RecordTypeId == '01210000000QfmM' || //科室 妇科
                    ast.Account.RecordTypeId == '01210000000QfmC' || //科室 泌尿科
                    ast.Account.RecordTypeId == '01210000000Qfm7' || //科室 消化科
                    ast.Account.RecordTypeId == '01210000000Qfm2'    //科室 耳鼻喉科
                    ) { //科室
                    if (String.isNotBlank(ast.Account.Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c)) {
                        url += joint_4 +  SalesOfficeCode_selection_Id+ joint_1 + ast.Account.Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c;//修理品返送地
                    }else {
                        // continue;
                    }
                }
            }
            //add     zhangyuheng        2022/04/07       end
            
            url += joint_3 + Incharge_Staff_Id + joint_1 + repairSubOrder.Owner.Name;
            url += joint_3 + Incharge_Staff_Id + joint_2 + repairSubOrder.OwnerId;
            // 2023-3-7   zyh   add   start
            if(repairSubOrder.SupportingProducts__c != null){
                url += joint_3 + SupportingProducts + joint_2 + repairSubOrder.SupportingProducts__c;//配套使用产品
            }
            if(repairSubOrder.IfDeadHurt__c != null){
                url += joint_3 + IfDeadHurt + joint_2 + repairSubOrder.IfDeadHurt__c;//是否有死亡、伤害、感染
            }
            if(repairSubOrder.ProblemOccurred__c != null){
                url += joint_3 + ProblemOccurred + joint_2 + repairSubOrder.ProblemOccurred__c;//问题发生时间情况
            }
            if(repairSubOrder.ProblemOccurredSelect__c != null){
                url += joint_3 + ProblemOccurredSelect + joint_2 + repairSubOrder.ProblemOccurredSelect__c;//问题发生时间情况 其它
            }
            if(repairSubOrder.ReportAdverseEvents__c != null){
                url += joint_3 + ReportAdverseEvents + joint_2 + repairSubOrder.ReportAdverseEvents__c;//医院有没有向政府机关报告不良事件或疑似不良事件
            }
            if(repairSubOrder.WhatProject__c != null){
                url += joint_3 + WhatProject + joint_2 + repairSubOrder.WhatProject__c;//做的是哪个项目
            }
            if(repairSubOrder.OperationOrExaminationName__c != null){
                url += joint_3 + OperationOrExaminationName + joint_2 + repairSubOrder.OperationOrExaminationName__c;//手术/检查名称
            }
            if(repairSubOrder.BreakORFallOff__c != null){
                url += joint_3 + BreakORFallOff + joint_2 + repairSubOrder.BreakORFallOff__c;//是否有发生断裂或脱落
            }
            if(repairSubOrder.UseFailProductFinish__c != null){
                url += joint_3 + UseFailProductFinish + joint_2 + repairSubOrder.UseFailProductFinish__c;//是否用该产品完成了手术/检查
            }
            if(repairSubOrder.AfterFailureInformation__c != null){
                url += joint_3 + AfterFailureInformation + joint_2 + repairSubOrder.AfterFailureInformation__c;//发现故障后,医院对患者的处理情况
            }
            if(repairSubOrder.Delay15Min__c != null){
                url += joint_3 + Delay15Min + joint_2 + repairSubOrder.Delay15Min__c;//发现故障现象后,有延误15分钟以上的手术实施的情况发生吗
            }
            if(repairSubOrder.InformationFrom__c != null){
                url += joint_3 + InformationFrom + joint_2 + repairSubOrder.InformationFrom__c;//信息是从医院的谁那里得到的
            }
            if(repairSubOrder.FailureQInHospital__c != null){
                url += joint_3 + FailureQInHospital + joint_2 + repairSubOrder.FailureQInHospital__c;//在医院,故障发生的频率是多少
            }
            if(repairSubOrder.DelayReportReason__c != null){
                url += joint_3 + DelayReportReason + joint_2 + repairSubOrder.DelayReportReason__c;//超时报告理由
            }
            if(repairSubOrder.IsProductFaultRelated__c != null){
                url += joint_3 + IsProductFaultRelated + joint_2 + repairSubOrder.IsProductFaultRelated__c;//是否和这次的产品故障有关
            }
            // 2023-3-7   zyh   add   start
        } else if ('QIS'.equals(dataType)) {
            String Delivered_Product_Id = '00N10000002FHFK'; //设备型号 
@@ -272,11 +449,11 @@
            String Generation_Source_Id = '00N10000002FHF6';//QIS来源
            String Name_Id = 'Name';//QIS管理号码
            if (NFMUtil.isSandbox()) {
                baoxiuzidan = '00N1m000005STFv'; //报修子单
            } else {
            // if (NFMUtil.isSandbox()) {
            //     baoxiuzidan = '00N1m000005STFv'; //报修子单
            // } else {
                baoxiuzidan = '00N10000009H22X'; //报修子单
            }
            // }
            url += 'a0f/e?retURL=%2Fa0f%2Fo&RecordType=01210000000RLWc&ent=01I10000000T5b1';
            url += joint_3 + Delivered_Product_Id + joint_1 + ast.Name;
@@ -313,10 +490,12 @@
    private String makeSoql() {
        String start = '';
        String soql = 'select Id,name,SerialNumber,InstallDate,Information_From__c,Asset_situation__c,Order_No__c,Account.Name,Status,Department_Class__c, ';
        String soql = 'select Id,name,SerialNumber,InstallDate,Asset_situation__c,Order_No__c,Account.Name,Status,Department_Class__c, ';
        soql += 'Hospital__r.Owner.Name,Hospital__r.Owner.Phone,Installation_Site__c,CurrentContract__c,Product2.Asset_Model_No__c,Hospital__r.Name,Department_Class__r.Name ,Department_Class__r.Id,';
        soql += 'Ji_Zhong_Guan_Li_Ku_Cun__c,Account.Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c';
        soql += 'Account.Parent.Parent.FSE_SP_Main_Leader__r.Work_Location__c,Account.RecordTypeId';
        soql += ',Posting_Date__c,Extend_Gurantee_DateTo__c,CurrentContract_End_Date__c  ';// 20220927 ljh XLIU-CJN62G
        soql += ',NoPartRiskDate_F__c ';//XLIU-CJM7Z9 【委托】新建修理提示信息(停产及非修理对象品)LY 20221012
        soql += ' from Asset where Id != null AND Repairing_Count__c = 0 ';
        if (String.isNotBlank(FuselageNumber) || String.isNotBlank(AssetModel) || String.isNotBlank(HospitalName)) {
            soql += ' AND (';