@RestResource(urlMapping='/NFM205/*')
|
global with sharing class NFM205Rest {
|
|
global class GeDatas {
|
public NFMUtil.Monitoring Monitoring;
|
public GeData[] GeData;
|
}
|
|
global class GeData {
|
public String Opportunity_Code; // 询价编码
|
public String Authorized_DB_No; // 授权申请编码
|
public String Authorized_Finish_Sales; // 授权的经销商code
|
public String Authorized_Date; // 授权日
|
public String Autholization_Activated_Date; // 授权截至日
|
//public String Bidding_Company;
|
public String Bid_Project_Name;
|
public String Bidding_Content;
|
public String Bid_Date;
|
public String Bidding_No;
|
public String Authorized_Status; // 授权结果 0:提交 1:成功 2:终止 3:解除授权申请的限制
|
//报价试算 授权 start
|
public String IsFranchised; //是否特约授权
|
//报价试算 授权 end
|
}
|
|
@HttpPost
|
global static void execute() {
|
String strData = RestContext.request.requestBody.toString();
|
|
// 取得接口传输内容
|
GeDatas ges = (GeDatas) JSON.deserializeStrict(strData, GeDatas.class);
|
|
if (ges == null ) {
|
return;
|
}
|
|
NFMUtil.Monitoring Monitoring = ges.Monitoring;
|
if (Monitoring == null) {
|
return;
|
}
|
|
BatchIF_Log__c rowData = NFMUtil.saveRowData(Monitoring, 'NFM205', ges.GeData);
|
if (String.isBlank(rowData.Log__c) == false) {
|
executefuture(rowData.Id);
|
}
|
|
// JSONを戻す
|
RestResponse res = RestContext.response;
|
res.addHeader('Content-Type', 'application/json');
|
res.statusCode = 200;
|
//String jsonResponse = '{"status": "Success", "Message":' + gedata + '}';
|
String jsonResponse = '{"status": "Success", "Message":""}';
|
res.responseBody = blob.valueOf(jsonResponse);
|
return;
|
}
|
|
@future
|
global static void executefuture(String rowData_Id) {
|
main(rowData_Id);
|
}
|
|
global static void main (String rowData_Id) {
|
|
Integer batch_retry_max_cnt = Integer.valueOf(System.Label.batch_retry_max_cnt);
|
BatchIF_Log__c rowData = [Select Id, Name, retry_cnt__c, Log__c, ErrorLog__c, Log2__c, Log3__c, Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c, Log11__c, Log12__c, MessageGroupNumber__c from BatchIF_Log__c where RowDataFlg__c = true and Id = :rowData_Id];
|
String logstr = rowData.MessageGroupNumber__c + ' start\n';
|
BatchIF_Log__c iflog = new BatchIF_Log__c();
|
iflog.Type__c = 'NFM205';
|
iflog.MessageGroupNumber__c = rowData.MessageGroupNumber__c;
|
iflog.Log__c = logstr;
|
iflog.ErrorLog__c = '';
|
insert iflog;
|
|
String rowDataStr = NFMUtil.getRowDataStr(rowData);
|
List<GeData> geDataList = (List<GeData>) JSON.deserialize(rowDataStr, List<GeData>.class);
|
|
if (geDataList == null || geDataList.size() == 0) {
|
return;
|
}
|
|
Savepoint sp = Database.setSavepoint();
|
|
try {
|
List<Opportunity> oppUpList = new List<Opportunity>();
|
Map<id, Opportunity> oppUpdateMap = new Map<id, Opportunity>();
|
|
// 将询价CODE与ID存入MAP
|
List<String> oppNoList = new List<String>();
|
List<String> agencyList = new List<String>();
|
|
for(GeData geData : geDataList) {
|
oppNoList.add(geData.Opportunity_Code);
|
if (String.isNotBlank(geData.Authorized_Finish_Sales)) {
|
agencyList.add(geData.Authorized_Finish_Sales);
|
}
|
|
}
|
|
List<Opportunity> oppList = [select id,
|
Opportunity_No__c,
|
Agency1__r.Management_FormulaCode__c,
|
Agency1__r.name,
|
Agency2__r.Management_FormulaCode__c,
|
Agency2__r.name
|
from Opportunity where Opportunity_No__c in :oppNoList];
|
Map<String, Opportunity> oppInfoMap = new Map<String, Opportunity>();
|
for (Opportunity oppInfo : oppList) {
|
oppInfoMap.put(oppInfo.Opportunity_No__c, oppInfo);
|
}
|
|
List<Account> accList = [select Name, Management_FormulaCode__c from Account where Management_FormulaCode__c in :agencyList];
|
Map<String, String> accInfoMap = new Map<String, String>();
|
for (Account accInfo : accList) {
|
accInfoMap.put(accInfo.Management_FormulaCode__c, accInfo.Name);
|
}
|
|
// 将XML各数据项更新到报价对象中
|
for (GeData geData : geDataList) {
|
if (geData.Opportunity_Code == null || geData.Opportunity_Code == '') {
|
// 必須項目がない場合、処理と飛ばす
|
iflog.ErrorLog__c += '询价编码不能为空。\n';
|
continue;
|
}
|
|
Opportunity opp = oppInfoMap.get(geData.Opportunity_Code);
|
|
if (opp == null) {
|
// 如果当前询价编码不存在
|
iflog.ErrorLog__c += geData.Opportunity_Code + ':询价编码不存在。\n';
|
continue;
|
}
|
|
if (oppUpdateMap.get(opp.Id) == null) {
|
oppUpList.add(opp);
|
oppUpdateMap.put(opp.Id, opp);
|
logstr += opp.Opportunity_No__c + ':';
|
} else {
|
opp = oppUpdateMap.get(opp.ID);
|
}
|
|
// 授权成功的场合
|
if (geData.Authorized_Status == '1') {
|
opp.Authorized_Finish_Sales__c = accInfoMap.get(geData.Authorized_Finish_Sales); // 授权的经销商
|
opp.Authorized_DB_No__c = geData.Authorized_DB_No; // 授权申请编码
|
opp.Authorized_Date__c = NFMUtil.parseStr2Date(geData.Authorized_Date); // 授权日
|
opp.Autholization_Activated_Date__c =
|
NFMUtil.parseStr2Date(geData.Autholization_Activated_Date); // 授权截至日
|
opp.Bidding_Content__c = geData.Bidding_Content; // 招标内容
|
opp.Bid_Date__c = NFMUtil.parseStr2Date(geData.Bid_Date); // 招标日
|
opp.Bidding_No__c = geData.Bidding_No; // 招标编码
|
opp.Bidding_Project_Name__c = geData.Bid_Project_Name; // 招标项目名
|
opp.If_Authorizing_Lock__c = false;
|
// CHAN-BBW576 LHJ 20190508 Start
|
opp.if_Interface_Lock__c = false;
|
// CHAN-BBW576 LHJ 20190508 End
|
//报价试算 授权 start
|
if(String.isNotBlank(geData.IsFranchised)){
|
if(geData.IsFranchised.equals('是')){
|
opp.IsAuthorized__c = true;
|
}else if(geData.IsFranchised.equals('否')){
|
opp.IsAuthorized__c = false;
|
}
|
}
|
//报价试算 授权 end
|
logstr += ' 授权成功。\n';
|
|
} else if(geData.Authorized_Status == '0') {
|
// SPO授权提交的场合
|
opp.If_Authorizing_Lock__c = true;
|
logstr += ' 授权申请提交。\n';
|
|
} else if(geData.Authorized_Status == '3') {
|
//解除授权申请的限制
|
opp.IF_Submit__c = false;
|
logstr += ' 解除授权申请的限制\n';
|
|
} else {
|
opp.If_Authorizing_Lock__c = false;
|
// CHAN-BBW576 LHJ 20190508 Start
|
opp.if_Interface_Lock__c = false;
|
// CHAN-BBW576 LHJ 20190508 End
|
//报价试算 更新是否特约授权 false
|
opp.IsAuthorized__c = false;
|
//报价试算 end
|
logstr += ' 授权中止。\n';
|
}
|
opp.IF_Submit__c = false;
|
// 更新是否授权中状态
|
//opp.If_Authorizing__c = false;
|
}
|
|
if (oppUpList.size() > 0) {
|
update oppUpList;
|
}
|
logstr += '\nend';
|
rowData.retry_cnt__c=0;
|
} catch(Exception ex) {
|
// エラーが発生した場合
|
Database.rollback(sp);
|
System.debug(Logginglevel.ERROR, 'NFM205_' + rowData.MessageGroupNumber__c + ':' + ex.getMessage());
|
System.debug(Logginglevel.ERROR, 'NFM205_' + rowData.MessageGroupNumber__c + ':' + ex.getStackTraceString());
|
logstr += '\n' + ex.getMessage();
|
iflog.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + iflog.ErrorLog__c;
|
if (rowData.retry_cnt__c == null) rowData.retry_cnt__c = 0;
|
if (rowData.retry_cnt__c < batch_retry_max_cnt){
|
rowData.retry_cnt__c++;
|
LogAutoSendSchedule.assignOneMinute();
|
}
|
if (rowData.retry_cnt__c >= batch_retry_max_cnt){
|
rowData.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + rowData.ErrorLog__c+'错误次数已经超过自动收信设定的最大次数,请手动收信';
|
}
|
}
|
|
update rowData;
|
iflog.Log__c = logstr;
|
if (iflog.Log__c.length() > 131072) {
|
iflog.Log__c = iflog.Log__c.subString(0, 131065) + ' ...';
|
}
|
if (iflog.ErrorLog__c.length() > 32768) {
|
iflog.ErrorLog__c = iflog.ErrorLog__c.subString(0, 32760) + ' ...';
|
}
|
update iflog;
|
|
}
|
}
|