李彤
2022-12-30 582ab5d403a12e7ac0834dac34bc087dbbea8dc7
修改预测日
1个文件已添加
160 ■■■■■ 已修改文件
force-app/main/default/classes/ImprovedForecastTimeController.cls 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/ImprovedForecastTimeController.cls
New file
@@ -0,0 +1,160 @@
public with sharing class ImprovedForecastTimeController {
    @AuraEnabled
    public static  String GetOppinformationcData(String ParamIdStr) {
        //获取数据
        List<InquiryPredictsDateChange__c> ipdList = Database.query('Select Id,Name,Opportunity__c,Date_InAdvance_Delay__c,CloseDate__c, CloseDate_Old__c, Close_Forecasted_Date__c,Predicted_date_ChangeReason__c,Predicted_Date_Status__c,Close_Forecasted_Date_Old__c, Manager_name__c,Opportunity__r.Sales_manager_departmentID__c,Opportunity__r.Sales_assistant_ID__c,Sales_assistant_name__c From InquiryPredictsDateChange__c Where Opportunity__c = : ParamIdStr order by CreatedDate desc');
        if(ipdList.size() > 0){
            OppInfo opp = new OppInfo(ipdList[0]);
            return JSON.serialize(opp);
        }else{
            Opportunity arrays = Database.query('Select Id,Name,Opportunity_No__c,CloseDate, Close_Forecasted_Date__c,Sales_manager_departmentID__c,Sales_assistant_ID__c From Opportunity Where id = : ParamIdStr');
            System.debug('lt123arrays'+arrays);
            OppInfo opp = new OppInfo(arrays);
            return JSON.serialize(opp);
        }
    }
    public class OppInfo {
        // 询价Id
        public String Opportunity { get; set; }
        // 询价编码
        public String Opportunity_No { get; set; }
        // 询价预测表Id
        public String datechangeId { get; set; }
        // 预测KPI当前值
        public Date Close_Forecasted_Date_Old { get; set; }
        // 预测KPI目标值
        public Date Close_Forecasted_Date { get; set; }
        // 20220830  “担当”字段弃用  只用“kpi”字段判断
        // // 预测担当当前值
        // public Date Close_Forecasted_Assume_Date_Old { get; set; }
        // // 预测担当目标值
        // public Date Close_Forecasted_Assume_Date { get; set; }
        // 预测发货当前值
        public Date CloseDate_Old { get; set; }
        // 预测发货目标值
        public Date CloseDate { get; set; }
        // 提前/延后
        public String Date_InAdvance_Delay { get; set; }
        // 原因
        public String Predicted_date_ChangeReason { get; set; }
        // cl6经理
        public String Manager_name { get; set; }
        // 助理
        public String Sales_assistant_name { get; set; }
        // 状态
        public String Predicted_Date_Status { get; set; }
        // 增加一个字段 用来做判断用的
        public Date Close_Forecasted_Check { get; set; }
        // 从询价上获得数据
        public OppInfo(Opportunity opp) {
            Opportunity = opp.Id;
            Opportunity_No = opp.Opportunity_No__c;
            Close_Forecasted_Date_Old = opp.Close_Forecasted_Date__c;
            // Close_Forecasted_Assume_Date_Old = opp.Close_Forecasted_Assume_Date__c;
            CloseDate_Old = opp.CloseDate;
            Manager_name = opp.Sales_manager_departmentID__c;
            //Sales_assistant_ID__c替换Sales_assistant_name_text__c
            Sales_assistant_name = opp.Sales_assistant_ID__c;
            //20220830  “担当”字段弃用  只用“kpi”字段判断
            //Close_Forecasted_Check = opp.Close_Forecasted_Assume_Date__c != null ? opp.Close_Forecasted_Assume_Date__c : opp.Close_Forecasted_Date__c;
            Close_Forecasted_Check = opp.Close_Forecasted_Date__c;
        }
        // 从询价预测上获得数据
        public OppInfo(InquiryPredictsDateChange__c datechange) {
            // 把当前已有的值都设置上
            Opportunity = datechange.Opportunity__c;
            Opportunity_No = datechange.Name;
            datechangeId = datechange.Id;
            Close_Forecasted_Date_Old = datechange.Predicted_Date_Status__c == '已批准' ? datechange.Close_Forecasted_Date__c : datechange.Close_Forecasted_Date_Old__c;
            // Close_Forecasted_Assume_Date_Old = datechange.Predicted_Date_Status__c == '已批准' ? datechange.Close_Forecasted_Assume_Date__c : datechange.Close_Forecasted_Assume_Date_Old__c;
            Close_Forecasted_Date = datechange.Close_Forecasted_Date__c;
            // Close_Forecasted_Assume_Date = datechange.Close_Forecasted_Assume_Date__c;
            CloseDate_Old = datechange.Predicted_Date_Status__c == '已批准' ? datechange.CloseDate__c : datechange.CloseDate_Old__c;
            CloseDate = datechange.CloseDate__c;
            if(datechange.Predicted_Date_Status__c != '已批准'){
                // Close_Forecasted_Check = datechange.Close_Forecasted_Assume_Date_Old__c != null ? datechange.Close_Forecasted_Assume_Date_Old__c : datechange.Close_Forecasted_Date_Old__c;
                Close_Forecasted_Check = datechange.Close_Forecasted_Date_Old__c;
            }else {
                // Close_Forecasted_Check = datechange.Close_Forecasted_Assume_Date__c != null ? datechange.Close_Forecasted_Assume_Date__c : datechange.Close_Forecasted_Date__c;
                Close_Forecasted_Check = datechange.Close_Forecasted_Date__c;
            }
            //Sales_manager_departmentID__c替换Manager_name_text__c
            Manager_name = datechange.Opportunity__r.Sales_manager_departmentID__c;
            Sales_assistant_name = datechange.Opportunity__r.Sales_assistant_ID__c;
            Date_InAdvance_Delay = datechange.Date_InAdvance_Delay__c;
            Predicted_date_ChangeReason = datechange.Predicted_date_ChangeReason__c;
            Predicted_Date_Status = datechange.Predicted_Date_Status__c;
        }
    }
    // 把页面上的数据赋值到询价预测的对象上
    private static InquiryPredictsDateChange__c mergeInfo(Map<String, Object> oppMap) {
        InquiryPredictsDateChange__c datechange = new InquiryPredictsDateChange__c();
        if (String.isBlank(String.valueOf(oppMap.get('Predicted_Date_Status'))) || !'已批准'.equals(String.valueOf(oppMap.get('Predicted_Date_Status')))) {
            datechange.Id = String.valueOf(oppMap.get('datechangeId'));
        }
        if (String.isBlank(datechange.Id)){
            datechange.Opportunity__c = String.valueOf(oppMap.get('Opportunity'));
            datechange.Name = String.valueOf(oppMap.get('Opportunity_No'));
        }
        // 当前的日期都从对象上获取
        if(oppMap.get('Close_Forecasted_Date_Old') != null){
            datechange.Close_Forecasted_Date_Old__c = Date.valueOf(String.valueOf(oppMap.get('Close_Forecasted_Date_Old')));
        }
        // if(oppMap.get('Close_Forecasted_Assume_Date_Old') != null){
        //     datechange.Close_Forecasted_Assume_Date_Old__c = Date.valueOf(String.valueOf(oppMap.get('Close_Forecasted_Assume_Date_Old')));
        // }
        if(oppMap.get('CloseDate_Old') != null){
            datechange.CloseDate_Old__c = Date.valueOf(String.valueOf(oppMap.get('CloseDate_Old')));
        }
        // 新的日期全跟预测担当有关
        datechange.Close_Forecasted_Date__c = Date.valueOf(String.valueOf(oppMap.get('Close_Forecasted_Date')));
        // datechange.Close_Forecasted_Assume_Date__c = Date.valueOf(String.valueOf(oppMap.get('Close_Forecasted_Assume_Date')));
        datechange.CloseDate__c = Date.valueOf(String.valueOf(oppMap.get('CloseDate')));
        datechange.Manager_name__c = String.valueOf(oppMap.get('Manager_name'));
        datechange.Sales_assistant_name__c = String.valueOf(oppMap.get('Sales_assistant_name'));
        datechange.Date_InAdvance_Delay__c = String.valueOf(oppMap.get('Date_InAdvance_Delay'));
        datechange.Predicted_date_ChangeReason__c = String.valueOf(oppMap.get('Predicted_date_ChangeReason'));
        // 状态设置为已提交
        datechange.Predicted_Date_Status__c = '已提交';
        return datechange;
    }
    @AuraEnabled
    public static String getReason(){
        return System.Label.DateChangeReason;
    }
    //保存数据  JSONData 是 json格式的值
    @AuraEnabled
    public  static string  SaveData(String JsonData){
        try{
            // InquiryPredictsDateChange__c ipd = (InquiryPredictsDateChange__c)JSON.deserialize(JsonData,InquiryPredictsDateChange__c.class);
            // OppInfo opp = (OppInfo)JSON.deserializeUntyped(JsonData);
            Map<String, Object> oppMap = (Map<String, Object>)JSON.deserializeUntyped(JsonData);
            System.debug('lt123JsonData'+JsonData);
            InquiryPredictsDateChange__c ipd = mergeInfo(oppMap);
            // ipd.Predicted_Date_Status__c = '已提交';
            upsert ipd;
        }catch(Exception ex)
        {
            return  ex.getLineNumber()+'  行错误 :   '+ex.getMessage();
        }
        return  '成功';
    }
}