FUYU
2023-05-19 559771a80cf779dc13a84ecd2f178e6ca5a8353a
force-app/main/default/classes/SetProvinceTargetController.cls
@@ -28,9 +28,14 @@
        salesDpt.add(new SelectOption('1.华北','1.华北'));
        salesDpt.add(new SelectOption('2.东北','2.东北'));
        salesDpt.add(new SelectOption('3.西北','3.西北'));
        salesDpt.add(new SelectOption('4.华东','4.华东'));
        salesDpt.add(new SelectOption('5.华南','5.华南'));
        salesDpt.add(new SelectOption('6.西南','6.西南'));
        // DB202305259561 fy 20230517 start
        // salesDpt.add(new SelectOption('4.华东','4.华东'));
        // salesDpt.add(new SelectOption('5.华南','5.华南'));
        // salesDpt.add(new SelectOption('6.西南','6.西南'));
        salesDpt.add(new SelectOption('4.西南','4.西南'));
        salesDpt.add(new SelectOption('5.华东','5.华东'));
        salesDpt.add(new SelectOption('6.华南','6.华南'));
        // DB202305259561 fy 20230517 end
        return salesDpt;
    }
    
@@ -49,14 +54,42 @@
    
    // 既存目标数据
    private Map<String, Opportunity> oppsMap;
    //2021/12/28 中间表寄存数据 by ld fy
    private Map<String,Provincial_Goal_Setting_Input__c> Provincial_Goal_Setting_InputMap;
    public Provincial_Goal_Setting_Input__c[] Existed_Provincial_Goal_Setting_Input;
    private List<Provincial_Goal_Setting_Input__c> upsertPGSIList;
    private Map<String, Provincial_Goal_Setting_Input__c> Provincial_Goal_Setting_InputMap1;
    private Map<String, OCM_Management_Province__c> OCM_MpMap;
    private List<String> AllOwnerSystem;
    private static String[] CIfromass = new String[] {'GI','ET','BF','GDP'};
    //DB202305277681 fy 20230517 start
    // private static String[] SPfromass = new String[] {'GS','URO','GYN','ENT','ENG'};
    private static String[] SPfromass = new String[] {'GS','URO','GYN','ENT','ENG1','ENG2'};
    //DB202305277681 fy 20230517 end
    // 金额分类
    //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'};
    //DB202305277681 fy 20230517 start
    // 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','ENG1','ENG2'};
    //DB202305277681 fy 20230517 end
    //SWAG-C9YDDE  2021/12/28 fy start
    // 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
    //DB202305277681 fy 20230517 start
    // private static String[] titlepage = new String[] {'销售本部', '省','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT', 'ENG'};
    private static String[] titlepage = new String[] {'销售本部', '省','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT','ENG1','ENG2'};
    //DB202305277681 fy 20230517 start
    //SWAG-C9YDDE  2021/12/28 fy start
    // 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;
    private List<Opportunity> upsertAMPList ;
@@ -64,12 +97,45 @@
    //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){
            //DB202305277681 fy 20230517 start
            // amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG'};
            // titlepage = new String[] {'销售本部', '省','GDP','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT', 'ENG'};
            amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG1','ENG2'};
            titlepage = new String[] {'销售本部', '省','GDP','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT','ENG1','ENG2'};
            //DB202305277681 fy 20230517 end
        }
        System.debug('amountCategory===:  '+amountCategory);
        //fy 修改 20220412
        //CHAN-BDQBLX  20210129 you start
        oppsMap1 = new Map<String, Opportunity>();
        detailCountLimit = 10000;
        upsertAMPList = new List<Opportunity>();
        deleteAMPList = new List<Opportunity>();
        //CHAN-BDQBLX  20210129 you end
        //SWAG-C9YDDE  2021/12/28 fy start
        Provincial_Goal_Setting_InputMap1 = new Map<String, Provincial_Goal_Setting_Input__c>();
        upsertPGSIList = new List<Provincial_Goal_Setting_Input__c>();
        //SWAG-C9YDDE  2021/12/28 fy end
        // 现在时间
        Date dateNow = Date.today();
        Integer year = dateNow.year();
@@ -159,15 +225,33 @@
                doubleOTH.add(Double.valueOf(strOTH));
            }
            proportion.put('OTH', doubleOTH);
            String strObjectiveProportionENG = System.Label.ObjectiveProportionENG;
            List<String> objectiveProportionENG = strObjectiveProportionENG.split(',');
            List<Double> doubleENG = new List<Double>();
            for (String strENG : objectiveProportionENG) {
                doubleENG.add(Double.valueOf(strENG));
            //DB202305277681 fy 20230517 start
            // String strObjectiveProportionENG = System.Label.ObjectiveProportionENG;
            // List<String> objectiveProportionENG = strObjectiveProportionENG.split(',');
            // List<Double> doubleENG = new List<Double>();
            // for (String strENG : objectiveProportionENG) {
            //     doubleENG.add(Double.valueOf(strENG));
            // }
            // proportion.put('ENG', doubleENG);
            // proportion.put('_ENG', doubleENG);
            String strObjectiveProportionENG1 = System.Label.ObjectiveProportionENG;
            List<String> objectiveProportionENG1 = strObjectiveProportionENG1.split(',');
            List<Double> doubleENG1 = new List<Double>();
            for (String strENG1 : objectiveProportionENG1) {
                doubleENG1.add(Double.valueOf(strENG1));
            }
            proportion.put('ENG', doubleENG);
            proportion.put('_ENG', doubleENG);
            proportion.put('ENG1', doubleENG1);
            proportion.put('_ENG1', doubleENG1);
            String strObjectiveProportionENG2 = System.Label.ObjectiveProportionENG;
            List<String> objectiveProportionENG2 = strObjectiveProportionENG2.split(',');
            List<Double> doubleENG2 = new List<Double>();
            for (String strENG2 : objectiveProportionENG2) {
                doubleENG2.add(Double.valueOf(strENG2));
            }
            proportion.put('ENG2', doubleENG2);
            proportion.put('_ENG2', doubleENG2);
            //DB202305277681 fy 20230517 end
        }
        // 当前用户信息
        if (loginUser == null) {
@@ -187,7 +271,7 @@
        }
        // 数据赋值
        setBean(iYear);
        system.debug('dataBeans+++'+dataBeans[0]);
        return null;
    }
     //SWAG-BB48QB 判断当前时间是否是4月15日之后 start
@@ -287,7 +371,14 @@
    }
     //导入方法
    public PageReference importCSVFile() {
        String csvData = ApexPages.currentPage().getParameters().get('csvData');
        try{
            if(JianDangfalg){
                //DB202305277681 fy 20230517 start
                // titlepage = new String[] {'销售本部', '省','GDP','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT', 'ENG'};
                titlepage = new String[] {'销售本部', '省','GDP','GI', 'ET', 'BF', 'GS', 'URO', 'GYN', 'ENT', 'ENG1','ENG2'};
                //DB202305277681 fy 20230517 end
            }
            String csvData = ApexPages.currentPage().getParameters().get('csvData');
            // 将内容转换成为中文
            if(!Test.isRunningTest()){
                //csvAsString = bitToString(csvFileBody, 'gb2312');
@@ -304,213 +395,246 @@
            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;
                        }
                    }
                }
            }
            if (ValFlag) {
                successMsg = new ApexPages.Message(ApexPages.severity.INFO, exportByVal);
                ApexPages.addMessage(successMsg);
            } else {
                List<String> UserInfoList = new List<String>();
                // List<String> UserInfoList = new List<String>();
                Map<String, List<String>> szMap = new Map<String, List<String>>();
                Set<String> sfs = new Set<String>();//省份
                getOCMManagementProvince();
                for (Integer i = 1; i < csvFileLines.size(); i++) {
                    string[] csvRecordData = csvFileLines[i].split(',');
                    if (csvRecordData.size() > 0) {
                        String bu = csvRecordData[0].replace(' ', '');//销售本部
                        String sf = csvRecordData[1].replace(' ', '');//省
                        String dandang = csvRecordData[2].replace(' ', '');//担当
                        if(String.isNotBlank(dandang)){
                            UserInfoList.add(dandang);//根据 担当查user
                        }
                        szMap.put(bu+'_'+ sf + '_'+ dandang, csvRecordData);
                            sfs.add(sf);//把省份放进去
                        // String dandang = csvRecordData[2].replace(' ', '');//担当
                        // if(String.isNotBlank(dandang)){
                        //     UserInfoList.add(dandang);//根据 担当查user
                        // }
                        // szMap.put(bu+'_'+ sf + '_'+ dandang, csvRecordData);
                        // fy 20220107
                        szMap.put(bu+'_'+ sf, csvRecordData);
                        sfs.add(sf);//把省份放进去
                    }
                }
                if (null != sfs && sfs.size() > 0) {
                    this.getOppprtunity_List(sfs);//根据省份年份,获取当前系统中已经存在得数据 放到map中
                    // this.getOppprtunity_List(sfs);
                    this.getProvincial_Goal_Setting_Input(sfs);//根据省份年份,获取当前系统中已经存在得数据 放到map中
                }
                List<User> userList  = new List<User>();
                System.debug('==UserInfoList=='+UserInfoList);
                if (null != UserInfoList && UserInfoList.size() > 0) {
                    userList = this.getUserList(UserInfoList);//返回用户得一些信息
                // List<User> userList  = new List<User>();
                // // System.debug('==UserInfoList=='+UserInfoList);
                // if (null != UserInfoList && UserInfoList.size() > 0) {
                //     userList = this.getUserList(UserInfoList);//返回用户得一些信息
                // }
                // Map<String, User> userMap = new Map<String, User>();
                // for (User userl : userList) {
                //     userMap.put(userl.Alias, userl);
                // }
                //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;
                //DB202305277681 fy 20230517 start
                // Integer ENG_Number = 0;
                Integer ENG1_Number = 0;
                Integer ENG2_Number = 0;
                //DB202305277681 fy 20230517 end
                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;
                    //DB202305277681 fy 20230517 start
                    // ENG_Number = 10;
                    ENG1_Number = 10;
                    ENG2_Number = 11;
                    //DB202305277681 fy 20230517 end
                }else{
                    GI_Number = 2;
                    ET_Number = 3;
                    BF_Number = 4;
                    GS_Number = 5;
                    URO_Number = 6;
                    GYN_Number = 7;
                    ENT_Number = 8;
                    //DB202305277681 fy 20230517 start
                    // ENG_Number = 9;
                    ENG1_Number = 9;
                    ENG2_Number = 10;
                    //DB202305277681 fy 20230517 end
                }
                Map<String, User> userMap = new Map<String, User>();
                for (User userl : userList) {
                    userMap.put(userl.Alias, userl);
                }
                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;
                upsertAMPList = new List<Opportunity>();//初始化,解决重复导入数据 id重复得问题
                deleteAMPList = new List<Opportunity>();
                upsertPGSIList = new List<Provincial_Goal_Setting_Input__c>();//初始化,解决重复导入数据 id重复得问题
                for (String key : szMap.keySet()) {
                    //取用户的Id
                    String userid = '';
                    // String userid = '';
                    OCM_Management_Province__c userid = new OCM_Management_Province__c();
                    String key_shengfen=key.split('_')[1];//省份
                    String key_dandang= '';
                    if(key.split('_').size()>=3){
                         key_dandang=key.split('_')[2];//把担当取出来
                    }
                    if (userMap.containskey(key_dandang)) {
                        userid = userMap.get(key_dandang).Id;
                    //GI助理
                    String GIassistant='';
                    //SP助理
                    String SPassistant='';
                    // String key_dandang= '';
                    // if(key.split('_').size()>=3){
                    //      key_dandang=key.split('_')[2];//把担当取出来
                    // }
                    if (OCM_MpMap.containskey(key_shengfen)) {
                        // userid = userMap.get(key_shengfen);
                        userid = OCM_MpMap.get(key_shengfen);
                        if(userid.GI_assistant__c!=null){
                            GIassistant=userid.GI_assistant__c;
                        }
                        if(userid.SP_assistant__c!=null){
                            SPassistant=userid.SP_assistant__c;
                        }
                    } else {
                        System.debug('==key==='+key);
                        //用户不存在要提醒
                        continue;
                    }
                        system.debug('==userid=='+userid+'\n');
                        List<String> csvRecordData = szMap.get(key);
                        //获取导入数量
                        Decimal GI_Amount = String.isNotBlank(csvRecordData[GI_Number]) ? Decimal.valueof(csvRecordData[GI_Number]) : 0.00;
                        DataSplicing(GI_Amount,key_shengfen + '_GI',oppsMap1,userid);
                    system.debug('==userid=='+userid+'\n');
                    List<String> csvRecordData = szMap.get(key);
                    //2021/12/28 中间表寄存数据 by ld fy
                    Provincial_Goal_Setting_Input__c upsertPGSI = new Provincial_Goal_Setting_Input__c();
                    //获取导入数量
                    //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);
                        
                        Decimal ET_Amount = String.isNotBlank(csvRecordData[ET_Number]) ? Decimal.valueOf(csvRecordData[ET_Number]) : 0.00;
                        DataSplicing(ET_Amount,key_shengfen + '_ET',oppsMap1,userid);
                    Decimal ET_Amount = String.isNotBlank(csvRecordData[ET_Number]) ? Decimal.valueOf(csvRecordData[ET_Number]) : 0.00;
                    DataSplicing(ET_Amount,key_shengfen + '_ET',Provincial_Goal_Setting_InputMap1,GIassistant,csvRecordData);
                        
                        Decimal BF_Amount = String.isNotBlank(csvRecordData[BF_Number]) ? Decimal.valueOf(csvRecordData[BF_Number]) : 0.00;
                        DataSplicing(BF_Amount,key_shengfen + '_BF',oppsMap1,userid);
                    Decimal BF_Amount = String.isNotBlank(csvRecordData[BF_Number]) ? Decimal.valueOf(csvRecordData[BF_Number]) : 0.00;
                    DataSplicing(BF_Amount,key_shengfen + '_BF',Provincial_Goal_Setting_InputMap1,GIassistant,csvRecordData);
                        
                        Decimal GS_Amount = String.isNotBlank(csvRecordData[GS_Number]) ? Decimal.valueOf(csvRecordData[GS_Number]) : 0.00;
                        DataSplicing(GS_Amount,key_shengfen + '_GS',oppsMap1,userid);
                    Decimal GS_Amount = String.isNotBlank(csvRecordData[GS_Number]) ? Decimal.valueOf(csvRecordData[GS_Number]) : 0.00;
                    DataSplicing(GS_Amount,key_shengfen + '_GS',Provincial_Goal_Setting_InputMap1,SPassistant,csvRecordData);
                       
                        Decimal URO_Amount = String.isNotBlank(csvRecordData[URO_Number]) ? Decimal.valueOf(csvRecordData[URO_Number]) : 0.00;
                        DataSplicing(URO_Amount,key_shengfen + '_URO',oppsMap1,userid);
                    Decimal URO_Amount = String.isNotBlank(csvRecordData[URO_Number]) ? Decimal.valueOf(csvRecordData[URO_Number]) : 0.00;
                    DataSplicing(URO_Amount,key_shengfen + '_URO',Provincial_Goal_Setting_InputMap1,SPassistant,csvRecordData);
                        
                        Decimal GYN_Amount = String.isNotBlank(csvRecordData[GYN_Number]) ? Decimal.valueOf(csvRecordData[GYN_Number]) : 0.00;
                        DataSplicing(GYN_Amount,key_shengfen + '_GYN',oppsMap1,userid);
                        Decimal ENT_Amount = String.isNotBlank(csvRecordData[ENT_Number]) ? Decimal.valueOf(csvRecordData[ENT_Number]) : 0.00;
                        DataSplicing(ENT_Amount,key_shengfen + '_ENT',oppsMap1,userid);
                        system.debug('ENG_Number--->'+csvRecordData[ENG_Number]);
                        //因为最后一列数据有空格,所以加.trim()
                        Decimal ENG_Amount = String.isNotBlank(csvRecordData[ENG_Number]) ? Decimal.valueOf(csvRecordData[ENG_Number].trim()) : 0.00;
                        // Decimal.valueOf(String str)
                        DataSplicing(ENG_Amount,key_shengfen + '_ENG',oppsMap1,userid);
                    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);
                    
                    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);
                    //因为最后一列数据有空格,所以加.trim()
                    //DB202305277681 fy 20230517 start
                    // Decimal ENG_Amount = String.isNotBlank(csvRecordData[ENG_Number]) ? Decimal.valueOf(csvRecordData[ENG_Number].trim()) : 0.00;
                    // // Decimal.valueOf(String str)
                    // DataSplicing(ENG_Amount,key_shengfen + '_ENG',Provincial_Goal_Setting_InputMap1,SPassistant,csvRecordData);
                    system.debug('ENG1_Number--->'+csvRecordData[ENG1_Number]);
                    Decimal ENG1_Amount = String.isNotBlank(csvRecordData[ENG1_Number]) ? Decimal.valueOf(csvRecordData[ENG1_Number]) : 0.00;
                    DataSplicing(ENG1_Amount,key_shengfen + '_ENG1',Provincial_Goal_Setting_InputMap1,SPassistant,csvRecordData);
                    system.debug('ENG2_Number--->'+csvRecordData[ENG2_Number]);
                    Decimal ENG2_Amount = String.isNotBlank(csvRecordData[ENG2_Number]) ? Decimal.valueOf(csvRecordData[ENG2_Number].trim()) : 0.00;
                    DataSplicing(ENG2_Amount,key_shengfen + '_ENG2',Provincial_Goal_Setting_InputMap1,SPassistant,csvRecordData);
                    //DB202305277681 fy 20230517 end
                    //拼接Key
            }
                if(null!=upsertAMPList && upsertAMPList.size()>0){
                    system.debug('upsertAMPList=='+upsertAMPList.size()+'=upsertAMPList=='+upsertAMPList+'\n');
                    upsert upsertAMPList;
                }
                if(null!=deleteAMPList && deleteAMPList.size()>0){
                    delete deleteAMPList;
                if(null!=upsertPGSIList && upsertPGSIList.size()>0){
                upsert upsertPGSIList;
                }
                // if(null!=upsertAMPList && upsertAMPList.size()>0){
                //     system.debug('upsertAMPList=='+upsertAMPList.size()+'=upsertAMPList=='+upsertAMPList+'\n');
                //     upsert upsertAMPList;
                // }
                // if(null!=deleteAMPList && deleteAMPList.size()>0){
                //     delete deleteAMPList;
                // }
                setBean(iYear);
                successMsg = new ApexPages.Message(ApexPages.severity.INFO, '导入成功');
                ApexPages.addMessage(successMsg);
    }
            }
        } catch (Exception e) {
            ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.severity.ERROR, e.getLineNumber() + ':'+ e.getMessage());
            ApexPages.addMessage(errorMessage);
       }
    return null; 
}
    // 最终得数据处理,
    private void DataSplicing(Decimal amount, String key, Map<String, Opportunity> ampMap, String userid) {//去进行最终数据得插入,更新或删除操作
        //system.debug('==amount=='+amount+'==key=='+key+'==ampMap=='+ampMap+'\n');
        for (Integer i = 0; i < 12; i++) {
            Integer y = iYear;
            Integer m = 4 + i;
            if (m > 12) {
                y += 1;
                m -= 12;
            }
            String syear = String.valueOf(y);
            String smonth = String.valueOf(m);
            if (m < 10) {
                smonth = '0' + smonth;
            }
            String sTargetDay = syear + '-' + smonth + '-01';
            Date targetDay = Date.valueOf(sTargetDay);
            String key_shengfen=key.split('_')[0];//省
            String key_ksfl=key.split('_')[1];//科室分类
             Opportunity upsertAMP = new Opportunity();
            if (ampMap.containskey(key+'_' + sTargetDay)) {
               upsertAMP = ampMap.get(key+'_' + sTargetDay);
    private void DataSplicing(Decimal amount, String key, Map<String, Provincial_Goal_Setting_Input__c> ampMap, String userid,List<String> csvRecordData) {//去进行最终数据得插入,更新或删除操作
        Provincial_Goal_Setting_Input__c upsertPGSI = new Provincial_Goal_Setting_Input__c();
        //system.debug('==amount=='+amount+'==key=='+key+'==ampMap=='+ampMap+'\n');
            if (ampMap.containskey(key)) {
                upsertPGSI = ampMap.get(key);
                if (amount > 0) {
                    if(amount!=upsertAMP.Amount || upsertAMP.Owner_System__c !=userid){
                        system.debug('有数据==='+'==key=='+key+'_' + sTargetDay+'==upsertAMP=='+upsertAMP+'==amount=='+amount+'\n');
                        upsertAMP.Name = upsertAMP.SAP_Province__c+ ' 省目标';
                        upsertAMP.StageName = '目標';
                        upsertAMP.OwnerId = userid;
                        upsertAMP.Owner_System__c = userid;
                        upsertAMP.Opportunity_Category__c = key_ksfl;
                        upsertAMP.Proportion__c = proportion.get(key_ksfl)[i];
                        upsertAMP.CloseDate = targetDay;
                        upsertAMP.Amount = amount;
                        upsertAMP.Target_category__c = target_category;
                        upsertAMP.SAP_Province__c = upsertAMP.SAP_Province__c;
                        upsertAMP.RecordTypeId = rt.Id;
                        upsertAMP.Target_Source__c = 'SetProvinceTarget';
                        //20210225 ljh WLIG-BV8CHF update  财年 start
                        //upsertAMP.OCM_Target_period__c = currentPeriod;
                        upsertAMP.OCM_Target_period__c = currentPeriodOld;
                        //20210225 ljh WLIG-BV8CHF update  财年 start
                        upsertAMPList.add(upsertAMP);
                        //更新
                    if(amount != upsertPGSI.Amount__c){
                        upsertPGSI.Amount__c = amount;
                        upsertPGSI.Owner_System__c = userId;
                        upsertPGSI.Is_Processing__c = true;
                        upsertPGSIList.add(upsertPGSI);
                    }
                } else {
                    //删除
                    system.debug('需要删除得数据'+'==key=='+key+'_' + sTargetDay+'==amount=='+amount+'\n');
                    deleteAMPList.add(upsertAMP);
                    //不用删除了,允许 数据是空的存在
                    upsertPGSI.Amount__c = null;
                    upsertPGSI.Is_Processing__c = true;
                    upsertPGSI.Owner_System__c = userId;
                    upsertPGSIList.add(upsertPGSI);
                }
            } else {
                system.debug('无数据'+'==key=='+key+'_' + sTargetDay+'==amount=='+amount+'\n');
                if (amount > 0) {
                    upsertAMP.Name = key_shengfen + ' 省目标';
                    upsertAMP.StageName = '目標';
                    upsertAMP.OwnerId = userid;
                    upsertAMP.Owner_System__c = userid;
                    upsertAMP.Opportunity_Category__c = key_ksfl;
                    upsertAMP.Proportion__c = proportion.get(key_ksfl)[i];
                    upsertAMP.CloseDate = targetDay;
                    upsertAMP.Amount = amount;
                    upsertAMP.Target_category__c = target_category;
                    upsertAMP.SAP_Province__c = key_shengfen;
                    upsertAMP.RecordTypeId = rt.Id;
                    upsertAMP.Target_Source__c = 'SetProvinceTarget';
                    //20210225 ljh WLIG-BV8CHF update  财年 start
                    //upsertAMP.OCM_Target_period__c = currentPeriod;
                    upsertAMP.OCM_Target_period__c = currentPeriodOld;
                    //20210225 ljh WLIG-BV8CHF update  财年 start
                    upsertAMPList.add(upsertAMP);
                    system.debug('=upsertAMPList=='+upsertAMPList+'\n');
                    upsertPGSI.Amount__c = amount;
                    upsertPGSI.key__c = key;
                    upsertPGSI.Owner_System__c = userId;
                    upsertPGSI.SAP_Province__c = csvRecordData[1];
                    upsertPGSI.Department__c = csvRecordData[0];
                    upsertPGSI.iYear__c = iYear;
                    upsertPGSI.Is_Processing__c = true;
                    upsertPGSI.Target_Source__c = 'SetProvinceTarget';
                    upsertPGSIList.add(upsertPGSI);
                } else {
                    system.debug('无效得数据');
                   // deleteAMPList.add(upsertAMP);
                    //允许 数据是空的存在
                    upsertPGSI.Amount__c = null;
                    upsertPGSI.key__c = key;
                    upsertPGSI.Owner_System__c = userId;
                    upsertPGSI.SAP_Province__c = csvRecordData[1];
                    upsertPGSI.Department__c = csvRecordData[0];
                    upsertPGSI.iYear__c = iYear;
                    upsertPGSI.Is_Processing__c = true;
                    upsertPGSI.Target_Source__c = 'SetProvinceTarget';
                    upsertPGSIList.add(upsertPGSI);
                }
            }
        }
    }
    private List<User> getUserList(List<String> UserInfoList) {//根据上传文件中得本部,省份,担当,职位 得到了user 信息
        String soql = 'select Id,Alias from User where IsActive = true'
@@ -518,7 +642,7 @@
        System.debug('==soql==' + soql);
        return Database.query(soql);
    }
     private void getOppprtunity_List(Set<String> sfs) {// 取得当前年度目标数据
     /*private void getOppprtunity_List(Set<String> sfs) {// 取得当前年度目标数据
        oppsMap1 = new Map<String, Opportunity>();
        Opportunity[] opportunitys = [select
                        Id, OwnerId, Opportunity_Category__c, Proportion__c, CloseDate,
@@ -540,7 +664,7 @@
                oppsMap1.put(key, opp);
            }
        }
    }
    }*/
   //CHAN-BDQBLX  20210129 you end 
    // 点击保存按钮
    public Pagereference saveBtn() {
@@ -562,6 +686,11 @@
    
    // 数据赋值
    private void setBean(Integer year) {
        if(JianDangfalg){
            //DB202305277681 fy 20230517 start
            amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG1','ENG2'};
            //DB202305277681 fy 20230517 end
        }
        // 取得当前年度目标数据
        Opportunity[] opportunitys = [select
                        Id, OwnerId, Opportunity_Category__c, Proportion__c, CloseDate,
@@ -589,7 +718,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;
@@ -607,12 +736,24 @@
                oppsMap.put(key, opp);
            }
        }
        getProvincial_Goal_Setting_InputMap();
        dataBeans = new List<DataBean>();
        List<String> provinces = salesDptMap.get(salesDpt);
        for (String pro : provinces) {
            DataBean dataBean = new DataBean(provinceMap.get(pro), pro, oppsMap, iYear);
            // 2020/12/28 与既有中间表数据进行对比 fy by ld start
            for (Integer j = 0; j < amountCategory.size(); j++) {
                String key = dataBean.Opportunity.SAP_Province__c + '_' + amountCategory[j];
                if (Provincial_Goal_Setting_InputMap.containsKey(key)){
                    Provincial_Goal_Setting_Input__c Provincial_Goal_Setting_Input = Provincial_Goal_Setting_InputMap.get(key);
                    dataBean.opportunity.Owner_System__c = Provincial_Goal_Setting_Input.Owner_System__c;
                    dataBean.amount[j].Amount = Provincial_Goal_Setting_Input.Amount__c;
                }
            }
            // 2020/12/28 与既有中间表数据进行对比 fy by ld end
            dataBeans.add(dataBean);
        }
        system.debug('dataBeans+++='+dataBeans);
    }
    
    //获取本部-省对应关系
@@ -637,6 +778,11 @@
        provinceList.add('宁夏自治区');
        provinceList.add('甘肃省');
        provinceList.add('新疆自治区');
        provinceList.add('四川省');
        provinceList.add('重庆市');
        provinceList.add('云南省');
        provinceList.add('贵州省');
        provinceList.add('西藏自治区');
        provinceList.add('上海市');
        provinceList.add('江苏省');
        provinceList.add('浙江省');
@@ -649,11 +795,8 @@
        provinceList.add('湖北省');
        provinceList.add('湖南省');
        provinceList.add('深圳市');
        provinceList.add('四川省');
        provinceList.add('重庆市');
        provinceList.add('云南省');
        provinceList.add('贵州省');
        provinceList.add('西藏自治区');
        AllOwnerSystem = provinceList;
        salesDptMap.put('0.无',provinceList);
        
        provinceList = new List<String>();
@@ -681,6 +824,18 @@
        provinceList.add('甘肃省');
        provinceList.add('新疆自治区');
        salesDptMap.put('3.西北',provinceList);
        provinceList = new List<String>();
        provinceList.add('四川省');
        provinceList.add('重庆市');
        provinceList.add('云南省');
        provinceList.add('贵州省');
        provinceList.add('西藏自治区');
    // DB202305259561 fy 20230517 start
        // salesDptMap.put('6.西南',provinceList);
        salesDptMap.put('4.西南',provinceList);
    // DB202305259561 fy 20230517 end
        
        provinceList = new List<String>();
        provinceList.add('上海市');
@@ -689,7 +844,10 @@
        provinceList.add('福建省');
        provinceList.add('安徽省');
        provinceList.add('江西省');
        salesDptMap.put('4.华东',provinceList);
    // DB202305259561 fy 20230517 start
        // salesDptMap.put('4.华东',provinceList);
        salesDptMap.put('5.华东',provinceList);
    // DB202305259561 fy 20230517 end
        
        provinceList = new List<String>();
        provinceList.add('广东省');
@@ -698,15 +856,11 @@
        provinceList.add('湖北省');
        provinceList.add('湖南省');
        provinceList.add('深圳市');
        salesDptMap.put('5.华南',provinceList);
    // DB202305259561 fy 20230517 start
        // salesDptMap.put('5.华南',provinceList);
        salesDptMap.put('6.华南',provinceList);
    // DB202305259561 fy 20230517 end
        
        provinceList = new List<String>();
        provinceList.add('四川省');
        provinceList.add('重庆市');
        provinceList.add('云南省');
        provinceList.add('贵州省');
        provinceList.add('西藏自治区');
        salesDptMap.put('6.西南',provinceList);
        
        provinceMap = new Map<string,string>();
        
@@ -729,26 +883,49 @@
        provinceMap.put('宁夏自治区','3.西北');
        provinceMap.put('甘肃省','3.西北');
        provinceMap.put('新疆自治区','3.西北');
    // DB202305259561 fy 20230517 start
        // provinceMap.put('上海市','4.华东');
        // provinceMap.put('江苏省','4.华东');
        // provinceMap.put('浙江省','4.华东');
        // provinceMap.put('福建省','4.华东');
        // provinceMap.put('安徽省','4.华东');
        // provinceMap.put('江西省','4.华东');
        
        provinceMap.put('上海市','4.华东');
        provinceMap.put('江苏省','4.华东');
        provinceMap.put('浙江省','4.华东');
        provinceMap.put('福建省','4.华东');
        provinceMap.put('安徽省','4.华东');
        provinceMap.put('江西省','4.华东');
        // provinceMap.put('广东省','5.华南');
        // provinceMap.put('广西自治区','5.华南');
        // provinceMap.put('海南省','5.华南');
        // provinceMap.put('湖北省','5.华南');
        // provinceMap.put('湖南省','5.华南');
        // provinceMap.put('深圳市','5.华南');
        
        provinceMap.put('广东省','5.华南');
        provinceMap.put('广西自治区','5.华南');
        provinceMap.put('海南省','5.华南');
        provinceMap.put('湖北省','5.华南');
        provinceMap.put('湖南省','5.华南');
        provinceMap.put('深圳市','5.华南');
        // provinceMap.put('四川省','6.西南');
        // provinceMap.put('重庆市','6.西南');
        // provinceMap.put('云南省','6.西南');
        // provinceMap.put('贵州省','6.西南');
        // provinceMap.put('西藏自治区','6.西南');
        provinceMap.put('四川省','4.西南');
        provinceMap.put('重庆市','4.西南');
        provinceMap.put('云南省','4.西南');
        provinceMap.put('贵州省','4.西南');
        provinceMap.put('西藏自治区','4.西南');
        provinceMap.put('上海市','5.华东');
        provinceMap.put('江苏省','5.华东');
        provinceMap.put('浙江省','5.华东');
        provinceMap.put('福建省','5.华东');
        provinceMap.put('安徽省','5.华东');
        provinceMap.put('江西省','5.华东');
        
        provinceMap.put('四川省','6.西南');
        provinceMap.put('重庆市','6.西南');
        provinceMap.put('云南省','6.西南');
        provinceMap.put('贵州省','6.西南');
        provinceMap.put('西藏自治区','6.西南');
        provinceMap.put('广东省','6.华南');
        provinceMap.put('广西自治区','6.华南');
        provinceMap.put('海南省','6.华南');
        provinceMap.put('湖北省','6.华南');
        provinceMap.put('湖南省','6.华南');
        provinceMap.put('深圳市','6.华南');
    // DB202305259561 fy 20230517 end
    }
    
    // 是否删除整行数据
@@ -783,7 +960,7 @@
    }
    
    // 実際の保存ロジック
    private void saveLogic() {
/*private void saveLogic() {
        List<Opportunity> saveList = new List<Opportunity>();
        List<Opportunity> deleteList = new List<Opportunity>();
        
@@ -828,13 +1005,13 @@
                continue;
            }
            User u = new User();
/*************************Update 20160413 Start*************************/
            if (db.opportunity.Owner_System__c == null) {
            //Update 20160413 Start/
           if (db.opportunity.Owner_System__c == null) {
                if (isDelete(db) == false) {
                    continue;
                }
            }
/*************************Update 20160413 End***************************/
            //Update 20160413 End/
            // 一年分成12条数据
            for (Integer i = 0; i < 12; i++) {
                Integer y = iYear;
@@ -864,10 +1041,10 @@
                            deleteList.add(opp);
                            continue;
                        }
/*************************Update 20160531 Start*************************/
                        opp.OwnerId = db.opportunity.Owner_System__c;
                    //Update 20160531 Start/
                       opp.OwnerId = db.opportunity.Owner_System__c;
                        opp.Owner_System__c = db.opportunity.Owner_System__c;
/*************************Update 20160531 End***************************/
                    //Update 20160531 End/
                        opp.Proportion__c = proportion.get(amountC)[i];
                        opp.Amount = db.amount[j].Amount;
                    } else {
@@ -876,11 +1053,11 @@
                        }
                        opp.Name = db.opportunity.SAP_Province__c + ' 省目标';
                        opp.StageName = '目標';
/*************************Update 20160531 Start*************************/
                    //Update 20160531 Start/
                        opp.OwnerId = db.opportunity.Owner_System__c;
                        //トリガをスルーのため、ここでやります
                        opp.Owner_System__c = db.opportunity.Owner_System__c;
/*************************Update 20160531 End***************************/
                    //Update 20160531 End/
                        opp.Opportunity_Category__c = amountC;
                        opp.Proportion__c = proportion.get(amountC)[i];
                        opp.CloseDate = targetDay;
@@ -912,8 +1089,175 @@
        // 更新数据库
        if (saveList.size() > 0) upsert saveList;
        if (deleteList.size() > 0) delete deleteList;
    }*/
    //反映到目标 fy 2021/12/28 SWAG-C9YDDE
    //查询OCSM管理省 fy
    private void getOCMManagementProvince(){
        OCM_MpMap = new Map<String, OCM_Management_Province__c>();
        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
            // 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);
            }
        }
    }
    public Pagereference UpdateBtn() {
        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, '反映到目标成功'));
        }
        return null;
    }
    private void getProvincial_Goal_Setting_Input(Set<String> sfs) {//根据省份年份,获取当前系统中已经存在得数据
        Provincial_Goal_Setting_InputMap1 = new Map<String, Provincial_Goal_Setting_Input__c>();
        list<Provincial_Goal_Setting_Input__c> Existed_Provincial_Goal_Setting_Input = [select id,Is_Processing__c, key__c,Target_Source__c,Amount__c,Department__c,SAP_Province__c,Owner_System__c,iYear__c
                                                                                FROM Provincial_Goal_Setting_Input__c where iYear__c = : iYear and SAP_Province__c in :sfs];
    
        for ( Provincial_Goal_Setting_Input__c Provincial_Goal_Setting_Input : Existed_Provincial_Goal_Setting_Input ) {
            if (String.isBlank(Provincial_Goal_Setting_Input.key__c)) {
                continue;
            }
            Provincial_Goal_Setting_InputMap1.put(Provincial_Goal_Setting_Input.key__c, Provincial_Goal_Setting_Input);
        }
    }
    // 2021/12/28 从中间表获取既有数据 fy
    private boolean getProvincial_Goal_Setting_InputMap() {
        Provincial_Goal_Setting_InputMap = new Map<String,Provincial_Goal_Setting_Input__c>();
        Existed_Provincial_Goal_Setting_Input = [select id,Is_Processing__c, key__c,Target_Source__c,Amount__c,Department__c,SAP_Province__c,Owner_System__c,iYear__c
                                                                FROM Provincial_Goal_Setting_Input__c where iYear__c = : iYear ];
        if (Existed_Provincial_Goal_Setting_Input.size() <= 0) {
            return false;
        }
        // 将所数据存入map中
        for ( Provincial_Goal_Setting_Input__c Provincial_Goal_Setting_Input : Existed_Provincial_Goal_Setting_Input ){
            if (String.isBlank(Provincial_Goal_Setting_Input.key__c)) {
                continue;
            }
            Provincial_Goal_Setting_InputMap.put(Provincial_Goal_Setting_Input.key__c,Provincial_Goal_Setting_Input);
        }
        return true;
    }
    //保存逻辑 fy 2021/12/28 SWAG-C9YDDE
    private Boolean saveLogic() {
        List<Opportunity> saveList = new List<Opportunity>();
        List<Opportunity> deleteList = new List<Opportunity>();
        //fy 修改 20220412
        system.debug('JianDangfalg+++'+JianDangfalg);
        if(JianDangfalg){
            //DB202305277681 fy 20230517 start
            // amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG'};
            amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG1','ENG2'};
            //DB202305277681 fy 20230517 end
        }
        //fy 修改 20220412
        Savepoint sp = Database.setSavepoint();
        try {
            List<Provincial_Goal_Setting_Input__c> InsertProvincial_Goal_Setting_Input = new list<Provincial_Goal_Setting_Input__c>();
            List<Provincial_Goal_Setting_Input__c> UpdateProvincial_Goal_Setting_Input = new list<Provincial_Goal_Setting_Input__c>();
            // 只处理当前本部数据
            //查询OCSM管理省 fy
            getOCMManagementProvince();
            system.debug('OCM_MpList+++'+OCM_MpMap);
            for (Integer d = 0; d < dataBeans.size(); d++){
                DataBean db = dataBeans[d];
                system.debug('db+++++++ ' + db);
                system.debug('amountCategory+++++++ ' + amountCategory);
                system.debug('Provincial_Goal_Setting_InputMap+++++++ ' + Provincial_Goal_Setting_InputMap);
                // if(String.isBlank(db.Opportunity.Owner_System__c))continue;
                for (Integer j = 0; j < amountCategory.size(); j++) {
                    // 数据检索Key
                    String key = db.Opportunity.SAP_Province__c + '_' + amountCategory[j];
                    system.debug('++++++++1+++++++ '+Provincial_Goal_Setting_InputMap.containsKey(key));
                    if(Provincial_Goal_Setting_InputMap.containsKey(key)) {
                        system.debug('++++++++2+++++++ ');
                        //临时表已经有了
                        Provincial_Goal_Setting_Input__c Provincial_Goal_Setting_Input = Provincial_Goal_Setting_InputMap.get(key);
                        if(Provincial_Goal_Setting_Input.Amount__c == db.amount[j].Amount) {
                            continue;
                        }else {
                            system.debug('++++++++5+++++++ '+OCM_MpMap.get('山东省'));
                            // system.debug('++++++++x+++++++ '+db.Opportunity.SAP_Province__c);
                            Provincial_Goal_Setting_Input.Amount__c = db.amount[j].Amount;
                            Provincial_Goal_Setting_Input.Department__c = db.department;
                            Provincial_Goal_Setting_Input.SAP_Province__c = db.Opportunity.SAP_Province__c;
                            String OWS='';
                            if(OCM_MpMap.containsKey(db.Opportunity.SAP_Province__c)){
                                if(CIfromass.contains(amountCategory[j])){
                                    OWS=OCM_MpMap.get(db.Opportunity.SAP_Province__c).GI_assistant__c;
                                }else if(SPfromass.contains(amountCategory[j])){
                                    OWS=OCM_MpMap.get(db.Opportunity.SAP_Province__c).SP_assistant__c;
                                }
                            }else{
                                continue;
                            }
                            Provincial_Goal_Setting_Input.Owner_System__c = OWS;
                            Provincial_Goal_Setting_Input.iYear__c = iYear;
                            Provincial_Goal_Setting_Input.Is_Processing__c = true;
                            Provincial_Goal_Setting_Input.Target_Source__c = 'SetProvinceTarget';
                            UpdateProvincial_Goal_Setting_Input.add(Provincial_Goal_Setting_Input);
                        }
                    }else {
                        system.debug('++++++++3+++++++ '+db.amount[j]);
                        system.debug('++++++++4+++++++ '+db.amount[j].Amount);
                        if (db.amount[j].Amount == null || db.amount[j].Amount == 0) {
                            continue;
                        }
                        Provincial_Goal_Setting_Input__c Provincial_Goal_Setting_Input = new Provincial_Goal_Setting_Input__c();
                        Provincial_Goal_Setting_Input.key__c = key;
                        Provincial_Goal_Setting_Input.Amount__c = db.amount[j].Amount;
                        Provincial_Goal_Setting_Input.Department__c = db.department;
                        Provincial_Goal_Setting_Input.SAP_Province__c = db.Opportunity.SAP_Province__c;
                        String OWS='';
                        if(OCM_MpMap.containsKey(db.Opportunity.SAP_Province__c)){
                            if(CIfromass.contains(amountCategory[j])){
                                OWS=OCM_MpMap.get(db.Opportunity.SAP_Province__c).GI_assistant__c;
                            }else if(SPfromass.contains(amountCategory[j])){
                                OWS=OCM_MpMap.get(db.Opportunity.SAP_Province__c).SP_assistant__c;
                            }
                        }else{
                            continue;
                        }
                        system.debug('++++++++9+++++++ '+OCM_MpMap.get(db.Opportunity.SAP_Province__c));
                        Provincial_Goal_Setting_Input.Owner_System__c = OWS;
                        Provincial_Goal_Setting_Input.iYear__c = iYear;
                        Provincial_Goal_Setting_Input.Is_Processing__c = true;
                        Provincial_Goal_Setting_Input.Target_Source__c = 'SetProvinceTarget';
                        InsertProvincial_Goal_Setting_Input.add(Provincial_Goal_Setting_Input);
                        system.debug('db.amount[j].Amount__c+++++++ ' + db.amount[j].Amount__c);
                    }
                }
            }
            system.debug('InsertProvincial_Goal_Setting_Input+++++++ ' + InsertProvincial_Goal_Setting_Input);
            if(InsertProvincial_Goal_Setting_Input.size() > 0) {
                insert InsertProvincial_Goal_Setting_Input;
            }
            if(UpdateProvincial_Goal_Setting_Input.size() > 0) {
                update UpdateProvincial_Goal_Setting_Input;
            }
            return true;
        } catch (Exception e) {
            system.debug('=====saveLogic-e' + e.getMessage());
            Database.rollback(sp);
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, e.getLineNumber() + ':' + e.getMessage()));
            return false;
        }
    }
    // 数据类
    class DataBean {
        // 担当者信息
@@ -929,12 +1273,33 @@
        //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){
                //DB202305277681 fy 20230517 start
                // amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG'};
                amountCategory = new String[] {'GDP','GI','ET','BF','GS','URO','GYN','ENT','ENG1','ENG2'};
                //DB202305277681 fy 20230517 end
            }
            //fy 20220418
            // 按金额分类,查找数据,并设值
            for (Integer i = 0; i < amountCategory.size(); i++) {
                String amountC = amountCategory[i];