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 '成功';
|
}
|
}
|