zhangzhengmei
2023-04-17 fdef1f682351a5311fe96c5f0f1770a9623b985f
force-app/main/default/classes/ReportController.cls
@@ -1,4 +1,8 @@
/*
用于给lwc的js初始化数据和对记录进行dml操作,此controller属于报告书
*/
public with sharing class ReportController {
    //给VOC完毕相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForVOCFinishButton (String recordId) {
        InitData res = new initData();
@@ -12,6 +16,7 @@
        } 
        return res;
    }
    //给VOC判定相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForVOCCheckButton (String recordId) {
        InitData res = new initData();
@@ -27,7 +32,7 @@
        } 
        return res;
    }
    //给VOC提出相应的js提供初始化数据
    @AuraEnabled
    public static Initdata initForVOCSubmitButton(String recordId){
        InitData res = new InitData();
@@ -44,7 +49,7 @@
    }
    //给VOC回答相应的js提供初始化数据
    @AuraEnabled
    public static Initdata initForVOCAnswerButton(String recordId){
        InitData res = new InitData();
@@ -57,7 +62,7 @@
        }
        return res;
    }
    //给VOC结果确认相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForVOCConfirmButton (String recordId) {
        InitData res = new initData();
@@ -73,7 +78,7 @@
        return res;
    }
    //给取消相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForCancelButton(String recordId){
        InitData res = new InitData();
@@ -86,7 +91,7 @@
        return res;
    }
    //给OCSM不要报告相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForOCSMNoToReportButton(String recordId){
        InitData res = new InitData();
@@ -100,8 +105,7 @@
        }
        return res;
    }
    //给SIStoOPD相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForSIStoOPDButton(String recordId){
        InitData res = new InitData();
@@ -116,7 +120,7 @@
        return res;
    }
    //给OCSM要报告相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForOCSMToReportButton(String recordId){
        InitData res = new InitData();
@@ -130,7 +134,7 @@
        return res;
    }
    //给完毕相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForCompleteButton(String recordId){
        InitData res = new InitData();
@@ -143,13 +147,13 @@
        }
        return res;
    }
    //给Intake universal code编辑相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForASRCEditorButton(String recordId){
        InitData res = new InitData();
        String recordTypeId = 'ASRCDecision';
        String developerName = LightingButtonConstant.DEVELOPER_NAME_ASRC_DECISION;
        try {
            PAE_DecisionRecord__c[] report = [SELECT LastModifiedDate, Id, Name, LastModifiedById,RecordType.DeveloperName FROM PAE_DecisionRecord__c where PAE_Report__c =  :recordId  And RecordType.DeveloperName = :recordTypeId Order by LastModifiedDate desc];
            PAE_DecisionRecord__c[] report = [SELECT LastModifiedDate, Id, Name, LastModifiedById,RecordType.DeveloperName FROM PAE_DecisionRecord__c where PAE_Report__c =  :recordId  And RecordType.DeveloperName = :developerName Order by LastModifiedDate desc];
            if (report != null && !report.isEmpty()) {
                res.LastModifiedDate = report[0].LastModifiedDate;
                res.Id = report[0].Id;
@@ -164,11 +168,11 @@
    }
    //给Final universal code编辑相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForASACEditorButton(String recordId){
        InitData res = new InitData();
        String recordTypeId = 'ASACDecision';
        String recordTypeId = LightingButtonConstant.DEVELOPER_NAME_ASAC_DECISION;
        try {
            PAE_DecisionRecord__c[] report = [SELECT LastModifiedDate, Id, Name, LastModifiedById,RecordType.DeveloperName FROM PAE_DecisionRecord__c where PAE_Report__c =  :recordId  And RecordType.DeveloperName = :recordTypeId Order by LastModifiedDate desc];
            if (report != null && !report.isEmpty()) {
@@ -185,7 +189,7 @@
    }
    //给OPDtoSIS相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForOPDtoSISButton(String recordId){
        InitData res = new InitData();
@@ -200,7 +204,7 @@
        return res;
    }
    //给提交(对手活动报告)相应的js提供初始化数据
    @AuraEnabled
    public static InitData initForSubmitCompetitorReportButton(String recordId){
        InitData res = null;
@@ -212,134 +216,170 @@
        return res;
    }
    //给提交相应的js提供初始化数据
    @AuraEnabled
    public static void updateForSubmitButton(String reocrdId){
    public static String updateForSubmitButton(String reocrdId){
        try {
            Report__c rac = new Report__c();
            rac.Id = reocrdId;
            rac.Status__c = '提交';
            rac.Status__c = LightingButtonConstant.RECORD_TYPE_NAME_BY_SUBMIT;
            rac.Submit_time__c = Datetime.now();
            rac.Submit_report_day__c = Date.today();
            update rac;
            return null;
        } catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',') + 1;
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    //OPDtoSIS操作更新相应数据
    @AuraEnabled
    public static void updateForOPDtoSISButton(String recordId){
    public static String updateForOPDtoSISButton(String recordId){
        try {
            Report__c rac = new Report__c();
            rac.Id = recordId;
            rac.RecordTypeId = '01210000000RLTi';
            rac.RecordTypeId = Schema.SObjectType.Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_BY_OPD).getRecordTypeId();
            update rac;
            return null;
        } catch (Exception e) {
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',') + 1;
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    //取消提交操作更新相应数据
    @AuraEnabled
    public static void updateForCancelSubmitReportButton(String recordId){
    public static String updateForCancelSubmitReportButton(String recordId){
        try {
            Report__c rac = new Report__c();
            rac.Id = recordId;
            rac.Status__c = '草案中';
            rac.Status__c = LightingButtonConstant.STATUS_DRAFT;
            rac.Submit_report_day__c = null;
            rac.Submit_time__c = null;
            update rac;
            return null;
        } catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',') + 1;
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    //完毕操作更新相应数据
    @AuraEnabled
    public static void updateForCompleteButton(String recordId){
    public static String updateForCompleteButton(String recordId){
        Report__c rac = new Report__c();
        try {
            rac.Id = recordId;
            rac.Status__c = '完毕';
            rac.RecordTypeId = '01210000000Qeky';
            rac.Status__c = LightingButtonConstant.STATUS_COMPLETE;
            rac.RecordTypeId = Schema.SObjectType.Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.VOC_NAME).getRecordTypeId();
            update rac;
            return null;
        } catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',') + 1;
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    //OCSM要报告操作更新相应数据
    @AuraEnabled
    public static void updateForOCSMToReportButton(String recordId){
    public static String updateForOCSMToReportButton(String recordId){
        try {
            Report__c rac = new Report__c();
            rac.Id = recordId;
            rac.OCSMAdministrativeReportStatus__c = '待报告';
            rac.OCSMAdministrativeReportStatus__c = LightingButtonConstant.STATUS_TO_BE_REPORTED;
            update rac;
            return null;
        } catch (Exception e) {
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',') + 1;
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    //SIStoOPD操作更新相应数据
    @AuraEnabled
    public static void updateForSIStoOPDButton(String recordId){
    public static String updateForSIStoOPDButton(String recordId){
        Report__c rac = new Report__c();
        try {
            rac.Id = recordId;
            rac.RecordTypeId = '01210000000Qekj';
            rac.RecordTypeId = Schema.SObjectType.Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_BY_FOLLOW_THE_STAGE).getRecordTypeId();
            update rac;
            return null;
        } catch (Exception e) {
            throw new AuraHandledException(e.getMessage());
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',') + 1;
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    //DispatchOCSMQARA操作更新相应数据
    @AuraEnabled
    public static void updateForDispatchOCSMQARAButton(String recordId){
    public static String updateForDispatchOCSMQARAButton(String recordId){
        try {
            Report__c rac = new Report__c();
            rac.Id = recordId;
            rac.Dispatch_OCSM_QARA__c = true;
            update rac;
            return null;
        } catch (Exception e) {
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',');
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    //OCSM不要报告操作更新相应数据
    @AuraEnabled
    public static void updateForOCSMNoToReportButton(String recordId){
    public static String updateForOCSMNoToReportButton(String recordId){
        try {
            Report__c rac = new Report__c();
            rac.Id = recordId;
            rac.OCSMAdministrativeReportStatus__c  = '无需报告';
            rac.OCSMAdministrativeReportStatus__c  = LightingButtonConstant.STATUS_TO_NOT_REPORT;
            update rac;
            return null;
        } catch (Exception e) {
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',');
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    //取消操作更新相应数据
    @AuraEnabled
    public static void updateForCancelButton(String recordId){
    public static String updateForCancelButton(String recordId){
        try {
            Report__c rac = new Report__c();
            rac.Id = recordId;
            rac.Status__c = '取消';
            rac.Status__c = LightingButtonConstant.STATUS_CANCEL;
            update rac;
            return null;
        } catch (Exception e) {
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',');
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    
    //VOC结果确认更新相应数据
    @AuraEnabled
    public static void updateForVOCConfirmButton(String recordId,String Satisfy,String Satisfy1){
    public static String updateForVOCConfirmButton(String recordId,String Satisfy,String Satisfy1){
        try {
            Report__c rac = new Report__c();
            rac.Id = recordId;
            if (Satisfy == '是') {
                rac.Status__c = '结果确认完毕';
                } else if (Satisfy == '否') {
            if (Satisfy == LightingButtonConstant.CN_YES) {
                rac.Status__c = LightingButtonConstant.STATUS_VOC_CONFIRMED;
                } else if (Satisfy == LightingButtonConstant.CN_NO) {
                // 対応結果(一回目)に値なければ、一回目の「否」と見なす
                if (Satisfy1 != '否') {
                if (Satisfy1 != LightingButtonConstant.CN_NO) {
                Report__c[] records = [SELECT Id, VOC_Satisfy__c, VOC_Unsatisfy_Reason__c, VOC_follow_up_result__c, VOC_solution_category__c FROM Report__c WHERE Id = :recordId];
                rac.VOC_Satisfy__c = null;
                rac.VOC_Unsatisfy_Reason__c = null;
@@ -349,91 +389,107 @@
                rac.VOC_Unsatisfy_Reason1__c = records[0].VOC_Unsatisfy_Reason__c;
                rac.VOC_follow_up_result1__c = records[0].VOC_follow_up_result__c;
                rac.VOC_solution_category1__c = records[0].VOC_solution_category__c;
                rac.Status__c = '草案中';
                rac.Status__c = LightingButtonConstant.STATUS_DRAFT;
                }
                // 対応結果(一回目)に値あれば、二回目の「否」と見なす
                else {
                rac.Status__c = '结果确认完毕';
                rac.Status__c = LightingButtonConstant.STATUS_VOC_CONFIRMED;
                }
                }
            update rac;
            return null;
        } catch (Exception e) {
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',');
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    //VOC回答更新相应数据
    @AuraEnabled
    public static String updateForVOCAnswerButton(String recordId){
        try {
            Report__c rac = [select Status__c from Report__c where Id = :recordId];
            rac.Status__c = '回答完毕';
            rac.Status__c = LightingButtonConstant.STATUS_VOC_END_OF_ANSWER;
            update rac;
            return null;
        } catch (Exception e) {
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            String exc = '' + e.getMessage();
            return exc;
            Integer left = exc.indexOf(':') + 1;
            Integer right = exc.lastIndexOf(':');
            String str = exc.substring(left,right);
            left = str.indexOf(',') +  1;
            String newStr = str.substring(left);
            return newStr;
        }
    }
    //提交竞争对手报告更新相应数据
    @AuraEnabled
    public static void updateForSubmitCompetitorReportButton(String recordId){
    public static String updateForSubmitCompetitorReportButton(String recordId){
        try {
            Report__c rac = new Report__c();
            rac.Id = recordId;
            rac.Status__c = '申請中';
            rac.Status__c = LightingButtonConstant.STATUS_VOC_APPLYING;
            rac.Submit_time__c = Datetime.now();
            rac.Submit_report_day__c = Date.today();
            rac.Date__c = Date.today();
            update rac;
            return null;
        } catch (Exception e) {
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',');
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    //VOC回答更新相应数据
    @AuraEnabled
    public static void updateForVOCSubmitButton(String recordId ,String createdById){
    public static String updateForVOCSubmitButton(String recordId ,String createdById){
        try {
            Report__c rac = [select Status__c,JingliApprovalManager__r.Id,BuchangApprovalManager__r.Id,SalesManager__r.Id,BuchangApprovalManagerSales__r.Id,ZongjianApprovalManager__c,Submit_time__c,Submit_report_day__c,Owner.Id from Report__c where Id = :recordId];
            // share
            rac.Id = recordId;
            User[] records = [SELECT  Job_Category__c FROM User WHERE Id = :createdById];
            List<String> userAccess = new List<String>();
            if (records[0].Job_Category__c == '销售服务') {
            userAccess.add(rac.JingliApprovalManager__c + '_Read');
            userAccess.add(rac.BuchangApprovalManager__c + '_Read');
            if (records[0].Job_Category__c == LightingButtonConstant.TYPE_OF_SALES_SERVICES) {
            userAccess.add(rac.JingliApprovalManager__c + LightingButtonConstant.USER_ACCESS_READ);
            userAccess.add(rac.BuchangApprovalManager__c + LightingButtonConstant.USER_ACCESS_READ);
            rac.VOC_CreatedBy_jingli__c = rac.JingliApprovalManager__c;
            rac.VOC_CreatedBy_buzhang__c = rac.BuchangApprovalManager__c;
            } else {
            userAccess.add(rac.SalesManager__c + '_Read');
            userAccess.add(rac.BuchangApprovalManagerSales__c + '_Read');
            userAccess.add(rac.SalesManager__c + LightingButtonConstant.USER_ACCESS_READ);
            userAccess.add(rac.BuchangApprovalManagerSales__c + LightingButtonConstant.USER_ACCESS_READ);
            rac.VOC_CreatedBy_jingli__c = rac.SalesManager__c;
            rac.VOC_CreatedBy_buzhang__c = rac.BuchangApprovalManagerSales__c;
            }
            userAccess.add(rac.ZongjianApprovalManager__c + '_Read');
            String rtn = ControllerUtil.setSObjectShare('Report__Share','VOCShare__c',recordId,userAccess,rac.Owner.Id);
            if (rtn != 'OK') {
            return;
            userAccess.add(rac.ZongjianApprovalManager__c + LightingButtonConstant.USER_ACCESS_READ);
            String rtn = ControllerUtil.setSObjectShare(LightingButtonConstant.SOBJECT_NAME_OF_REPORT_SHARE,LightingButtonConstant.SOBJECT_NAME_OF_VOC_SHARE,recordId,userAccess,rac.Owner.Id);
            if (rtn != LightingButtonConstant.OK) {
            return null;
            }
            rac.Status__c = '填写完毕';
            rac.Status__c = LightingButtonConstant.STATUS_VOC_WRITE_OVER;
            rac.Submit_time__c = Date.today();
            rac.Submit_report_day__c = Date.today();
            update rac;
            return null;
        } catch (Exception e) {
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',');
            Integer right = eMessage.length();
            return eMessage.substring(left, right);
        }
    }
    //VOC判定更新相应数据
    @AuraEnabled
    public static String updateForVOCCheckButton (String recordId,String isVOC,String personId) {          
        try {
            Report__c rac = [select Owner.Id,VOC_jingli__r.Id,VOC_buzhang__r.Id,VOC_zongjian__r.Id,VOC_Finish__c,VOC_share_date__c,Responsible_Person__r.Id from Report__c where Id = :recordId];
            if (isVOC == 'VOC') {
            if (isVOC == LightingButtonConstant.VOC_NAME) {
                // VOC対応者の経理部長総監を設定
                User[] records = [SELECT Id, Job_Category__c, JingliApprovalManager__c, SalesManager__c, BuchangApprovalManager__c, BuchangApprovalManagerSales__c, ZongjianApprovalManager__c FROM User WHERE Id = :personId];
                if (records[0].job_Category__c == '销售服务') {
                if (records[0].job_Category__c == LightingButtonConstant.TYPE_OF_SALES_SERVICES) {
                    rac.VOC_jingli__c = records[0].JingliApprovalManager__c == null ? '' : records[0].JingliApprovalManager__c;
                    rac.VOC_buzhang__c = records[0].BuchangApprovalManager__c == null ? '' : records[0].BuchangApprovalManager__c;
                } else {
@@ -441,23 +497,23 @@
                    rac.VOC_buzhang__c = records[0].BuchangApprovalManagerSales__c == null ? '' : records[0].BuchangApprovalManagerSales__c;
                }
                rac.VOC_zongjian__c = records[0].ZongjianApprovalManager__c == null ? '' : records[0].ZongjianApprovalManager__c;
                rac.Status__c = '判定完毕';
                rac.Status__c = LightingButtonConstant.STATUS_VOC_CHECK_OVER;
                rac.VOC_Finish__c = false;
                Date serverTimestamp = Date.today();
                rac.VOC_share_date__c = serverTimestamp;
                // share
                List<String> userAccess = new List<String>();
                userAccess.add(rac.Responsible_Person__c + '_Edit');
                userAccess.add(rac.VOC_jingli__c + '_Read');
                userAccess.add(rac.VOC_buzhang__c + '_Read');
                userAccess.add(rac.VOC_zongjian__c + '_Read');
                String rtn = ControllerUtil.setSObjectShare('Report__Share','VOCShare__c',recordId,userAccess,rac.Owner.Id);
                if (rtn != 'OK') {
                userAccess.add(rac.Responsible_Person__c + LightingButtonConstant.USER_ACCESS_EDIT);
                userAccess.add(rac.VOC_jingli__c + LightingButtonConstant.USER_ACCESS_READ);
                userAccess.add(rac.VOC_buzhang__c + LightingButtonConstant.USER_ACCESS_READ);
                userAccess.add(rac.VOC_zongjian__c + LightingButtonConstant.USER_ACCESS_READ);
                String rtn = ControllerUtil.setSObjectShare(LightingButtonConstant.SOBJECT_NAME_OF_REPORT_SHARE,LightingButtonConstant.SOBJECT_NAME_OF_VOC_SHARE,recordId,userAccess,rac.Owner.Id);
                if (rtn != LightingButtonConstant.OK) {
                    return null;
                }
                update rac;
                } else {
                    rac.Status__c = '完毕';
                    rac.Status__c = LightingButtonConstant.STATUS_VOC_FINISH;
                    rac.VOC_Finish__c = true;
                    update rac;
                }
@@ -468,14 +524,19 @@
            return exc;
        }
    }
    //VOC完毕操作更新相应数据
    @AuraEnabled
    public static void updateForVOCFinishButton (String recordId) {
    public static String updateForVOCFinishButton (String recordId) {
        try {
            Report__c report = [select Id,Status__C from Report__c where Id = :recordId];
            report.Status__c = '完毕';
            report.Status__c = LightingButtonConstant.STATUS_VOC_FINISH;
            update report;
            return null;
        } catch (Exception e) {
            System.debug(LoggingLevel.INFO, '*** e: ' + e);
            String eMessage = e.getMessage();
            Integer left = eMessage.indexOf(',');
            Integer right = eMessage.length();
            return eMessage.substring(left,right);
        }
    }
    public class InitData{