public without sharing class NFM605Controller {
|
private static final String LOG_TYPE = 'NFM605';
|
private static final String API = '/admin/api/scd/save';
|
|
//服务合同数据推送接口
|
public class ContractInfo {
|
public String contractCd; //合同编码
|
public String hospitalCd; //医院编码
|
public String strategicDepartmenCd; //战略科室编码
|
public String departmentCd; //科室编码
|
public String contractStartDate; //合同起始日期
|
public String contractEndDate; //合同结束日期
|
public String contractEquipQty; //合同设备量
|
public String reportSeason; //报告季度
|
public String reportSeasonStartDate; //报告季度开始时间
|
public String reportSeasonEndDate; //报告季度结束时间
|
public String reportSendTime; //报告发放时间
|
public Decimal CurDistributionTimes; //目前应发放次数
|
public Decimal ActDistributionTimes; //实际发放次数
|
}
|
//正常调用
|
@future(callout = true)
|
public static void callout(String iflog_Id, List < Id > reportIdList) {
|
executeNotFuture(iflog_Id, reportIdList);
|
}
|
//Batch调用
|
public static void executeNotFuture(String iflog_Id, List < Id > reportIdList) {
|
|
BatchIF_Log__c iflog = new BatchIF_Log__c();
|
Datetime nowDT = Datetime.now();
|
String nowStr = nowDT.format('yyyyMMddHHmmss');
|
if (String.isNotBlank(iflog_Id)) {
|
iflog = [Select Id, Name, Log__c, ErrorLog__c from BatchIF_Log__c where Id = : iflog_Id];
|
if (iflog == null) {
|
iflog = new BatchIF_Log__c();
|
}
|
}
|
iflog.Type__c = LOG_TYPE;
|
iflog.ErrorLog__c = '';
|
iflog.Log__c = 'callout start\n';
|
iflog.MessageGroupNumber__c = nowStr;
|
|
|
|
|
List < ContractInfo > contrs = new List < ContractInfo > ();
|
BatchIF_Log__c rowData = null;
|
List < NewMaintenanceReport_Task__c > nmtreportList = [select id,
|
NewMaintenance_Contract__r.Maintenance_Contract_No__c,
|
NewMaintenance_Contract__r.Hospital__r.Management_Code__c,
|
NewMaintenance_Contract__r.Department_Class__r.Management_Code__c,
|
NewMaintenance_Contract__r.Department_Class__r.Management_Code_Auto__c,
|
NewMaintenance_Contract__r.Department__r.Management_Code__c,
|
NewMaintenance_Contract__r.Contract_Start_Date__c,
|
NewMaintenance_Contract__r.Contract_End_Date__c,
|
NewMaintenance_Contract__r.New_equipment_quantity1__c,
|
NewMaintenance_Contract__r.Estimate_Asset_Cnt__c,
|
Distribution_Quarter__c, Distribution_Start_Date__c,
|
Distribution_End_Date__c,
|
CorrespondingPeriod__c,
|
NewMaintenance_Contract__r.NumberOfPlan_Today__c,
|
NewMaintenance_Contract__r.ActualFrequency_Formula__c
|
from NewMaintenanceReport_Task__c where id in : reportIdList
|
];
|
String logstr = iflog.Log__c + ' ' + 'NumberOfRecord=' + nmtreportList.size() + '\n';
|
try {
|
for (NewMaintenanceReport_Task__c n: nmtreportList) {
|
ContractInfo cont = new ContractInfo();
|
cont.contractCd = n.NewMaintenance_Contract__r.Maintenance_Contract_No__c; //合同编码
|
cont.hospitalCd = n.NewMaintenance_Contract__r.Hospital__r.Management_Code__c; //医院编码
|
cont.strategicDepartmenCd = n.NewMaintenance_Contract__r.Department_Class__r.Management_Code__c; //战略科室编码
|
|
cont.departmentCd = n.NewMaintenance_Contract__r.Department__r.Management_Code__c; //科室编码
|
cont.contractStartDate = NFMUtil.formatDate2StrDateTime(n.NewMaintenance_Contract__r.Contract_Start_Date__c); //合同起始日期
|
cont.contractEndDate = NFMUtil.formatDate2StrDateTime(n.NewMaintenance_Contract__r.Contract_End_Date__c); //合同结束日期
|
cont.contractEquipQty = n.NewMaintenance_Contract__r.Estimate_Asset_Cnt__c + ''; //合同设备量
|
cont.reportSeason = n.Distribution_Quarter__c; //报告季度
|
cont.reportSeasonStartDate = NFMUtil.formatDate2StrDateTime(n.Distribution_Start_Date__c); //报告季度开始时间
|
cont.reportSeasonEndDate = NFMUtil.formatDate2StrDateTime(n.Distribution_End_Date__c); //报告季度结束时间
|
cont.reportSendTime = NFMUtil.formatDate2StrDateTime(n.CorrespondingPeriod__c); //报告发放时间
|
cont.CurDistributionTimes = n.NewMaintenance_Contract__r.NumberOfPlan_Today__c; //目前应发放次数
|
cont.ActDistributionTimes = n.NewMaintenance_Contract__r.ActualFrequency_Formula__c; //实际发放次数
|
contrs.add(cont);
|
}
|
logstr += '\nend';
|
if (contrs.size() > 0) {
|
//生成BatchLog日志,记录发送情况
|
rowData = NFMUtil.makeRowData(iflog, LOG_TYPE, contrs);
|
rowData.MessageGroupNumber__c = nowStr;
|
//insert rowData;
|
execute(rowData, iflog);
|
}
|
if(Test.isRunningTest()){
|
Integer num = Integer.valueOf('TestError');
|
}
|
} catch (Exception ex) {
|
System.debug(LoggingLevel.ERROR, 'NFM_SA_SERVICECONTRACTDATE' + iflog.Name + ':' + ex.getMessage());
|
System.debug(LoggingLevel.ERROR, 'NFM_SA_SERVICECONTRACTDATE' + iflog.Name + ':' + ex.getStackTraceString());
|
logstr += ex.getMessage();
|
iflog.ErrorLog__c += ex.getMessage() + '\n';
|
iflog.ErrorLog__c += ex.getStackTraceString() + '\n';
|
}
|
if (rowData != null) {
|
upsert rowData;
|
}
|
iflog.Log__c += logstr;
|
upsert iflog;
|
}
|
/**
|
* 接口发送失败 根据BatchLogId进行手动发送
|
* @Author
|
* @DateTime
|
* @param rowDataId [BatchLogId]
|
*/
|
public static void ManualExecute(String rowDataId) {
|
List < BatchIF_Log__c > row = [select id, name, MessageGroupNumber__c, retry_cnt__c,
|
RowDataFlg__c, ErrorLog__c, Type__c,
|
Log__c, Log2__c, Log3__c, Log4__c, Log5__c, Log6__c,
|
Log7__c, Log8__c, Log9__c, Log10__c, Log11__c, Log12__c
|
from BatchIF_Log__c
|
where id = : rowDataId
|
];
|
if (row.size() > 0) execute(row[0], null);
|
}
|
/**
|
* 逻辑正常执行发送
|
* @Author
|
* @DateTime
|
* @param rowDataSFDC [BatchLogId]
|
* @param iflog [执行情况记录]
|
*/
|
public static void execute(BatchIF_Log__c rowDataSFDC, BatchIF_Log__c iflog) {
|
Integer batch_retry_max_cnt = Integer.valueOf(System.Label.batch_retry_max_cnt);
|
String logstr = rowDataSFDC.MessageGroupNumber__c + ' start\n';
|
if (iflog == null) {
|
iflog = new BatchIF_Log__c();
|
} else {
|
|
logstr += iflog.Log__c;
|
}
|
iflog.Type__c = LOG_TYPE;
|
iflog.MessageGroupNumber__c = rowDataSFDC.MessageGroupNumber__c;
|
iflog.ErrorLog__c = '';
|
try {
|
String data = NFMUtil.getRowDataStr(rowDataSFDC);
|
String status = NFMUtil.sendToAWS(data, API);
|
System.debug('NFM605Log--status->'+ status);
|
|
if ('OK'.equals(status)) {
|
logstr += status + '\n';
|
rowDataSFDC.retry_cnt__c = 0;
|
} else {
|
rowDataSFDC = NFMUtil.LogAutoSend(rowDataSFDC, null, status);
|
}
|
} catch (Exception ex) {
|
// TODO IOException
|
|
iflog.ErrorLog__c += ex.getMessage() + '\n';
|
iflog.ErrorLog__c += ex.getStackTraceString() + '\n';
|
rowDataSFDC = NFMUtil.LogAutoSend(rowDataSFDC, ex, null);
|
}
|
upsert rowDataSFDC;
|
iflog.Log__c += logstr;
|
upsert iflog;
|
}
|
}
|