public with sharing class ImprovedForecastTimeController { @AuraEnabled public static String GetOppinformationcData(String ParamIdStr) { //获取数据 List 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 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 oppMap = (Map)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 '成功'; } }