李彤
2023-05-18 49dfe80719274f1548737d2e73f78d0604081ccc
force-app/main/default/classes/SetProvinceTargetController.cls
@@ -61,16 +61,20 @@
    // 金额分类
    //private static String[] amountCategory = new String[] {'GI','ET','BF','GS','URO','GYN','ENT','OTH'};
    //省目标(SetProvinceTarget):隐藏OTH。追加ENG。
    // private static String[] amountCategory = new String[] {'GI','ET','BF','GS','URO','GYN','ENT','ENG'};
    private static String[] amountCategory = new String[] {'GI','ET','BF','GS','URO','GYN','ENT','ENG'};
    //SWAG-C9YDDE  2021/12/28 fy start
    private static String[] amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG'};
    // private static String[] amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG'};
    //SWAG-C9YDDE  2021/12/28 fy end
    //CHAN-BDQBLX  20210129 you start
    public string csvAsString {get; set;}
    public String[] csvFileLines {get; set;}
    // private static String[] titlepage = new String[] {'销售本部', '省', '担当','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT', 'ENG'};
    //fy 修改 start
    public String users6_ID = System.Label.s6_ID;
    public boolean JianDangfalg { get; set; }
    //fy 修改 end
    private static String[] titlepage = new String[] {'销售本部', '省','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT', 'ENG'};
    //SWAG-C9YDDE  2021/12/28 fy start
    private static String[] titlepage = new String[] {'销售本部', '省', '担当','GDP','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT', 'ENG'};
    // private static String[] titlepage = new String[] {'销售本部', '省', '担当','GDP','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT', 'ENG'};
    //SWAG-C9YDDE  2021/12/28 fy end
    public Integer detailCountLimit{get;private set;}
    private Map<String, Opportunity> oppsMap1;
@@ -79,6 +83,31 @@
    //CHAN-BDQBLX  20210129 you end
    // 画面初始化
    public Pagereference init() {
        JianDangfalg=false;
        //fy 修改 20220412
        System.debug('users6_ID:  '+users6_ID);
        System.debug('当前用户简档:  '+UserInfo.getProfileId());
        String userProfileId = UserInfo.getProfileId();
        if(!String.isBlank(userProfileId)){
            userProfileId=userProfileId.substring(0,15);
        }
        System.debug('当前用户简档截取:  '+userProfileId);
        List<String> user6IdList = users6_ID.split(',');
        for(String user6id : user6IdList){
            if(user6id==userProfileId){
            // if(user6id=='00e10000000xnpR'){
                JianDangfalg=true;
                break;
            }
        }
        System.debug('user6IdList:  '+user6IdList);
        System.debug('JianDangfalg:  '+JianDangfalg);
        if(JianDangfalg){
            amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG'};
            titlepage = new String[] {'销售本部', '省','GDP','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT', 'ENG'};
        }
        System.debug('amountCategory===:  '+amountCategory);
        //fy 修改 20220412
        //CHAN-BDQBLX  20210129 you start
        oppsMap1 = new Map<String, Opportunity>();
        detailCountLimit = 10000;
@@ -206,7 +235,7 @@
        }
        // 数据赋值
        setBean(iYear);
        system.debug('dataBeans+++'+dataBeans[0]);
        return null;
    }
     //SWAG-BB48QB 判断当前时间是否是4月15日之后 start
@@ -307,6 +336,9 @@
     //导入方法
    public PageReference importCSVFile() {
        try{
            if(JianDangfalg){
                titlepage = new String[] {'销售本部', '省','GDP','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT', 'ENG'};
            }
            String csvData = ApexPages.currentPage().getParameters().get('csvData');
            // 将内容转换成为中文
            if(!Test.isRunningTest()){
@@ -324,12 +356,17 @@
            if (csvFileLines.size() > 0) {
                string[] titlecsv = csvFileLines[0].trim().split(',');//
                system.debug(titlecsv + '==titlepage==' + titlepage);
                for (integer j = 0; j < titlecsv.size(); j++) {
                    if (!titlepage.contains(titlecsv[j])) {
                        system.debug('表头不一致得列===' + titlecsv[j]);
                        ValFlag = true;
                        exportByVal = '表头不一致,请严格按照导出模板填写';
                        break;
                if(titlepage.size()!=titlecsv.size()){
                    ValFlag = true;
                    exportByVal = '表头不一致,请严格按照导出模板填写';
                }else{
                    for (integer j = 0; j < titlecsv.size(); j++) {
                        if (!titlepage.contains(titlecsv[j])) {
                            system.debug('表头不一致得列===' + titlecsv[j]);
                            ValFlag = true;
                            exportByVal = '表头不一致,请严格按照导出模板填写';
                            break;
                        }
                    }
                }
            }
@@ -370,17 +407,38 @@
                // for (User userl : userList) {
                //     userMap.put(userl.Alias, userl);
                // }
                //2021/12/28 中间表寄存数据 by ld fy
                Integer GDP_Number = 2;
                //2021/12/28 中间表寄存数据 by ld fy
                Integer GI_Number = 3;
                Integer ET_Number = 4;
                Integer BF_Number = 5;
                Integer GS_Number = 6;
                Integer URO_Number = 7;
                Integer GYN_Number = 8;
                Integer ENT_Number = 9;
                Integer ENG_Number = 10;
                //fy 修改 20220412
                Integer GDP_Number = 0;
                Integer GI_Number = 0;
                Integer ET_Number = 0;
                Integer BF_Number = 0;
                Integer GS_Number = 0;
                Integer URO_Number = 0;
                Integer GYN_Number = 0;
                Integer ENT_Number = 0;
                Integer ENG_Number = 0;
                if(JianDangfalg){
                    //2021/12/28 中间表寄存数据 by ld fy
                    GDP_Number = 2;
                    //2021/12/28 中间表寄存数据 by ld fy
                    GI_Number = 3;
                    ET_Number = 4;
                    BF_Number = 5;
                    GS_Number = 6;
                    URO_Number = 7;
                    GYN_Number = 8;
                    ENT_Number = 9;
                    ENG_Number = 10;
                }else{
                    GI_Number = 2;
                    ET_Number = 3;
                    BF_Number = 4;
                    GS_Number = 5;
                    URO_Number = 6;
                    GYN_Number = 7;
                    ENT_Number = 8;
                    ENG_Number = 9;
                }
                upsertPGSIList = new List<Provincial_Goal_Setting_Input__c>();//初始化,解决重复导入数据 id重复得问题
                for (String key : szMap.keySet()) {
                    //取用户的Id
@@ -414,9 +472,12 @@
                    //2021/12/28 中间表寄存数据 by ld fy
                    Provincial_Goal_Setting_Input__c upsertPGSI = new Provincial_Goal_Setting_Input__c();
                    //获取导入数量
                    Decimal GDP_Amount = String.isNotBlank(csvRecordData[GDP_Number]) ? Decimal.valueOf(csvRecordData[GDP_Number]) : 0.00;
                    DataSplicing(GDP_Amount,key_shengfen + '_GDP',Provincial_Goal_Setting_InputMap1,GIassistant,csvRecordData);
                    //fy 修改 20220412
                    if(JianDangfalg){
                        Decimal GDP_Amount = String.isNotBlank(csvRecordData[GDP_Number]) ? Decimal.valueOf(csvRecordData[GDP_Number]) : 0.00;
                        DataSplicing(GDP_Amount,key_shengfen + '_GDP',Provincial_Goal_Setting_InputMap1,GIassistant,csvRecordData);
                    }
                    //fy 修改 20220412
                    Decimal GI_Amount = String.isNotBlank(csvRecordData[GI_Number]) ? Decimal.valueof(csvRecordData[GI_Number]) : 0.00;
                     
                    DataSplicing(GI_Amount,key_shengfen + '_GI',Provincial_Goal_Setting_InputMap1,GIassistant,csvRecordData);
@@ -436,7 +497,7 @@
                        
                    Decimal GYN_Amount = String.isNotBlank(csvRecordData[GYN_Number]) ? Decimal.valueOf(csvRecordData[GYN_Number]) : 0.00;
                    DataSplicing(GYN_Amount,key_shengfen + '_GYN',Provincial_Goal_Setting_InputMap1,SPassistant,csvRecordData);
                    system.debug('ENG_Number--->'+csvRecordData[ENG_Number]);
                    Decimal ENT_Amount = String.isNotBlank(csvRecordData[ENT_Number]) ? Decimal.valueOf(csvRecordData[ENT_Number]) : 0.00;
                    DataSplicing(ENT_Amount,key_shengfen + '_ENT',Provincial_Goal_Setting_InputMap1,SPassistant,csvRecordData);
                    system.debug('ENG_Number--->'+csvRecordData[ENG_Number]);
@@ -562,6 +623,9 @@
    
    // 数据赋值
    private void setBean(Integer year) {
        if(JianDangfalg){
            amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG'};
        }
        // 取得当前年度目标数据
        Opportunity[] opportunitys = [select
                        Id, OwnerId, Opportunity_Category__c, Proportion__c, CloseDate,
@@ -589,7 +653,7 @@
            //20210225 ljh WLIG-BV8CHF update  财年 end
            isPast = false;
            if (iYear < currentYear) {
                isPast = true;
                isPast = true;
            } else if (iYear == currentYear) {
                if (Date.today().month() == 3) {
                    isPast = true;
@@ -624,6 +688,7 @@
            // 2020/12/28 与既有中间表数据进行对比 fy by ld end
            dataBeans.add(dataBean);
        }
        system.debug('dataBeans+++='+dataBeans);
    }
    
    //获取本部-省对应关系
@@ -933,7 +998,10 @@
        List<OCM_Management_Province__c> OCM_MpList = [select Id,Province__c,GI_assistant__c,SP_assistant__c,Name from OCM_Management_Province__c where Province__c in :AllOwnerSystem ];
        for ( OCM_Management_Province__c OCM_Mp : OCM_MpList ) {
            //过滤掉不符合条件的数据 fy
            if(OCM_Mp.Name!='集采课'&&OCM_Mp.Name!='青岛'){
            // 20230329 ljh start
            // if(OCM_Mp.Name!='集采课'&&OCM_Mp.Name!='青岛'){
            if(OCM_Mp.Name!='集采课'){
            // 20230329 ljh end
                OCM_MpMap.put(OCM_Mp.Province__c, OCM_Mp);
            }
        }
@@ -942,6 +1010,7 @@
        system.debug('=====UpdateBtn-1');
        boolean rs = saveLogic();
        setBean(iYear);
        system.debug('rs+++'+rs);
        Database.executeBatch(new SetProvinceTargetBatch(), 10);
        if (rs) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, '反映到目标成功'));
@@ -988,7 +1057,11 @@
    private Boolean saveLogic() {
        List<Opportunity> saveList = new List<Opportunity>();
        List<Opportunity> deleteList = new List<Opportunity>();
        //fy 修改 20220412
        if(JianDangfalg){
            amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG'};
        }
        //fy 修改 20220412
        Savepoint sp = Database.setSavepoint();
        try {
            List<Provincial_Goal_Setting_Input__c> InsertProvincial_Goal_Setting_Input = new list<Provincial_Goal_Setting_Input__c>();
@@ -1096,12 +1169,30 @@
        //CHAN-BDQBLX  20210129 you end 
        // 构造方法
        DataBean(String salesDpt, String province, Map<String, Opportunity> oppMap, Integer iYear) {
            boolean JianDangfalg = false;
            this.opportunity = new Opportunity();
            this.amount = new List<Opportunity>();
            this.opportunity.SAP_Province__c = province;
            this.department = salesDpt;
            this.isChanged = '0';
            //fy 20220418
            String userProfileId = UserInfo.getProfileId();
            if(!String.isBlank(userProfileId)){
                userProfileId=userProfileId.substring(0,15);
            }
            System.debug('当前用户简档截取:  '+userProfileId);
            List<String> user6IdList = System.Label.s6_ID.split(',');
            for(String user6id : user6IdList){
                if(user6id==userProfileId){
                // if(user6id=='00e10000000xnpR'){
                    JianDangfalg=true;
                    break;
                }
            }
            if(JianDangfalg){
                amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG'};
            }
            //fy 20220418
            // 按金额分类,查找数据,并设值
            for (Integer i = 0; i < amountCategory.size(); i++) {
                String amountC = amountCategory[i];