public without sharing class NFM603Controller {
|
|
private static final String LOG_TYPE = 'NFM603';
|
// private static final String API = '/admin/api/scd/save';
|
private static final String API = '/admin/api/repair/save';
|
|
public static Integer status;
|
public static String message;
|
public class RepairOrderInfo {
|
//修理信息
|
public String repairOrderNo; //报修单号
|
public String repairOrderNo2; //报修子单号
|
public String SAPrepairNo; //SAP修理单号(new)
|
public String repairNo; //修理单号
|
public String hospitalCd; //医院编号
|
public String strategicDepartmenCd; //战略科室编码
|
public String departmentCd; //科室编码
|
public String region; //大区
|
public String province; //省市
|
public String city; //市
|
public String repairApplicant; //修理委托人
|
public String repairApplicantID; //修理委托人统一ID(new)===预留
|
|
public String FSERepairOrderCreateDate; //FSE申请修理时间(new)
|
public String SAPRepairOrderCreateDate; //SAP申请修理时间(new)
|
public String equipmentModel; //设备型号
|
public String equipmentCd; //机身编码
|
public String On_site_repair; //服务方式
|
public String ContractName; //维修合同名称(new)
|
public String ContractData; //维修合同记录类型(new)
|
public String ContractNo; //维修合同号码
|
public String ContractStartDate; //维修合同开始日
|
public String ContractEndDate; //维修合同结束日
|
public String MultiYearContractName; //多年保合同名称(new)
|
public String MultiYearContractNo; //多年保合同编号
|
public String MultiYearContractStartDate; //多年保合同开始日
|
public String MultiYearContractEndDate; //多年保合同结束日
|
public String MultiYearContractData; //多年保合同记录类型(new)
|
public Boolean isRepairWarrantyObj; //再修理保修对象
|
public String RepairType; //修理区分-------------------
|
public String QuotationGread; //报价等级(new)
|
public String detectionResult; //检测结果
|
public String cus_dn; //DN号
|
//送修物流
|
public String deliveryLogisticsMode; //送修物流方式
|
public String engineerSendDate; //工程师修理品寄送日
|
public String deliveryLogisticsNo; //送修物流单号
|
public String DeliveryLogisticsAnnotation; //送修物流信息备注
|
public String returnLogisticsMode; //返送物流方式
|
public String returnLogisticsNo; //返送物流单号
|
public String returnLogisticsRemark; //返送物流备注信息
|
public String returnStage; //维修品返送所处阶段
|
public String returnLogisticsSendTime; //返送物流发送时间+++++++++++++
|
public String returnLogisticsReceiveTime; //返送物流签收时间++++++++++++
|
//服务进程-进修
|
public String repairproductsRevDate; //故障品接收日
|
public String FSErepairApplyDate; //FSE修理申请日
|
public String logisticsSendDate; //物流发送日
|
public String logisticsReceiveDate; //物流接收日
|
public String SAPrepairApplyDate; //SAP修理申请日
|
public String RCacceptanceDate; //修理品RC受理日
|
public String inspectionDate; //修理检测日
|
public String FirstQuotationDate; //初次报价日
|
public String planQuotationDate; //计划上门报价日
|
public String ActualQuotationDate; //实际上门报价日
|
public String quotationDate; //报价日
|
public String priceApprovalDate; //减价申请批准日
|
public Decimal finalQuotationPrice; //最终报价金额-----------------
|
public String userAgreeDAte; //用户同意日
|
public String partsCompleteDate; //零件齐备完毕日
|
public String repairStartDate; //修理开始日
|
public String repairCompleteExpectedDate; //修理完成预计日
|
public String repairCompleteDate; //修理完成日
|
public String finalTestDate; //最终检测日
|
public String RCreturnDate; //RC修理品返送日
|
public String ReturnsProductWay; //返品方式
|
public String officeLogisticsReceiveDate; //办事处物流接收日
|
public String invoiceDate; //开发票日
|
public String userReturnDate; //修理品用户返送日
|
public String acceptanceFormSendDate; //验收单现场寄送日
|
public String acceptanceFormReceivedDate; //验收单收到日
|
public String invoiceReceiveDate; //发票接收日
|
public String latestPayDate; //最新回款日
|
public String payCompleteDate; //回款完毕日
|
public String incomeReckoninDate; //收入计入日
|
public String abandonPayDate; //放弃回款日
|
public String cancelRepairDate; //修理取消日
|
public String repairOrderCompleteDate; //修理单完成日
|
public Boolean applySpareEquip; //是否申请备品
|
public String supplySpareEquip; //是否提供备品
|
public FaultDesc[] FaultDesc;
|
public SparePartsLendingRecord[] SparePartsLendingRecord;
|
//===================================================
|
public String RcSorcDate; //RC转SORC日
|
public String SorcAcceptDate; //SORC受理日
|
public String SorcOgzDate; //SORC转OGZ日
|
public String OgzAcceptDate; //OGZ受理日
|
|
}
|
public class FaultDesc {
|
//故障描述
|
public String repairPosition; //修理部位
|
public String faultDescription; //故障描述
|
//修理内容
|
public String repairContentDesc; //修理内容描述
|
}
|
public class SparePartsLendingRecord {
|
//备品出借记录
|
public String spareEquipapplicationNo; //备品申请编号
|
public String spareEquipLendingDate; //备品出借日期
|
public String spareEquipMode; //出借备品型号
|
}
|
@future(callout = true)
|
public static void callout(String iflog_Id, List < String > repairOrderIdList) {
|
//BatchIF_Log__c iflog = [Select Id, Name, Log__c, ErrorLog__c from BatchIF_Log__c where Id = :iflog_Id];
|
String sql = 'Select Id, Name, Log__c, ErrorLog__c from BatchIF_Log__c where Id = \'' + iflog_Id + '\'';
|
List < BatchIF_Log__c > iflogs = DataBase.query(sql);
|
if (iflogs == null || iflogs.size() == 0) {
|
executefuture(null, repairOrderIdList);
|
} else {
|
executefuture(iflogs.get(0), repairOrderIdList);
|
}
|
|
}
|
|
public static void executefuture(BatchIF_Log__c iflog, List < String > repairOrderIdList) {
|
Datetime nowDT = Datetime.now();
|
String nowStr = nowDT.format('yyyyMMddHHmm');
|
if (iflog != null) {
|
iflog.ErrorLog__c = '';
|
} else {
|
iflog = new BatchIF_Log__c();
|
iflog.Type__c = LOG_TYPE;
|
iflog.ErrorLog__c = '';
|
iflog.Log__c = 'callout start \n';
|
iflog.MessageGroupNumber__c = nowStr;
|
}
|
List < RepairOrderInfo > repairs = new List < RepairOrderInfo > ();
|
BatchIF_Log__c rowData = null;
|
List < Repair__c > repairList = new List < Repair__c > ();
|
if (repairOrderIdList != null && repairOrderIdList.size() > 0) {
|
repairList = [select id, Name,
|
RepairSubOrder__r.RepairOrderNo__c,
|
RepairSubOrder__r.RepairSubOrderNo__c,
|
Hospital__r.Management_Code__c,
|
SAP_Service_Repair_No__c,
|
Account__r.Management_Code__c,
|
Department_Name__c,
|
Account_Management_Code__c,
|
Hospital__r.Salesdepartment_HP__c,
|
State_Hospital__c,
|
Hospital__r.City_Master__r.Name,
|
Incharge_Staff__r.Employee_No__c,
|
CreatedBy.Employee_No__c,
|
FSE_ApplyForRepair_time__c,
|
SAP_Transfer_time__c,
|
Delivered_Product__r.Product_Name__c,
|
Delivered_Product__r.SerialNumber,
|
Maintenance_Contract__r.Name,
|
Maintenance_Contract__r.RecordType.Name,
|
Management_Code__c,
|
Contract_Start_Date__c,
|
Contract_End_Date__c,
|
VM_Maintenance_Contract__r.Name,
|
VM_Maintenance_Contract__r.Management_Code__c,
|
VM_Maintenance_Contract__r.startDateGurantee__c,
|
VM_Maintenance_Contract__r.endDateGurantee__c,
|
VM_Maintenance_Contract__r.RecordType.Name,
|
ReRepairObject_result__c,
|
Repair_Severity_Rank__c,
|
Repair_Rank__c,
|
InspectionResultFlag__c,
|
DeliveryLogisticsMode__c,
|
engineerSendDate__c,
|
DeliveryLogisticsNo__c,
|
ReturnLogisticsMode__c,
|
ReturnLogisticsNo__c,
|
ReturnLogisticsRemark__c,
|
ReturnStage__c,
|
ReturnOrderSendTime__c,
|
ReturnLogisticsReceiveTime__c,
|
On_Site_Repair_Order_Date__c,
|
FSE_ApplyForRepair_Day__c,
|
LogisticsSendTime__c,
|
LogisticsReceiveTime__c,
|
SAP_Transfer_day__c,
|
Repair_Ordered_Date__c,
|
Repair_Inspection_Date__c,
|
Repair_Firstestimated_Date_formula__c,
|
PlanQuotationTime__c,
|
ActualQuotationStartTime__c,
|
Repair_Quotation_date__c,
|
Repair_Discount_approval_Date_formula__c,
|
Discount_Price_formula__c,
|
Agreed_Date__c,
|
part_arrangement_complete__c,
|
Repair_Start_Date__c,
|
Planned_Repair_Completed_Date__c,
|
Repair_Completed_Date__c,
|
Repair_Final_Inspection_Date__c,
|
Repair_Shipped_Date__c,
|
OfficeLogisticsReceiveDate__c,
|
Invoice_Date__c,
|
Repair_Returned_To_HP_Date__c,
|
Facility_Return_Receipt_Collection_reque__c,
|
Receipt_received_date__c,
|
Billing_Received_Date__c,
|
Latest_Collect_Date_Priority__c,
|
Received_Date__c,
|
Facility_Return_Receipt_Collection_Date__c,
|
BaddebtsDate__c,
|
repair_cancel_date__c,
|
RepairOrder_Complete_Day__c,
|
if_Rental_Apply__c, On_site_repair__c,
|
Offer_Rental_New__c,
|
RcSorcDate__c,
|
SorcAcceptDate__c,
|
SorcOgzDate__c,
|
Returns_Product_waySAP__c,
|
DnNO__c,
|
OgzAcceptDate__c,
|
DeliveryLogisticsAnnotation__c,
|
Department_Class__r.Management_Code__c,
|
Repair_Ordered_DateTime__c,
|
Repair_Inspection_DateTime__c,
|
repair_cancel_dateTime__c,
|
RcSorcDateTime__c,
|
SorcAcceptDateTime__c,
|
OgzAcceptDateTime__c,
|
part_arrangement_complete_DateTime__c,
|
Repair_Start_DateTime__c,
|
Repair_Completed_DateTime__c,
|
Repair_Final_Inspection_DateTime__c,
|
Repair_Shipped_DateTime__c,
|
Repair_Discount_approval_DateTime_form__c,
|
Agreed_DateTime__c
|
from Repair__c where id in: repairOrderIdList
|
];
|
}
|
String logstr = iflog.Log__c + ' ' + 'NumberOfRecord=' + repairList.size() + '\n';
|
try {
|
List < Id > repairIdList = new List < Id > ();
|
for (Repair__c repair: repairList) {
|
repairIdList.add(repair.Id);
|
}
|
// 故障描述
|
Map < id, List < FaultDesc >> reasonMap = getFaultDescMap(repairOrderIdList);
|
// 备品出借记录 查找备品出借一览明细的 产品型号
|
Map < id, List < SparePartsLendingRecord >> rentalMap = getrentalMap(repairIdList);
|
|
|
|
for (Repair__c repair: repairList) {
|
RepairOrderInfo info = new RepairOrderInfo();
|
info.repairOrderNo = repair.RepairSubOrder__r.RepairOrderNo__c;
|
info.repairOrderNo2 = repair.RepairSubOrder__r.RepairSubOrderNo__c;
|
info.repairNo = repair.Name; //修理单号
|
info.hospitalCd = repair.Hospital__r.Management_Code__c; //医院编码
|
info.SAPrepairNo = repair.SAP_Service_Repair_No__c; //SAP修理单号
|
info.strategicDepartmenCd = repair.Department_Class__r.Management_Code__c; //战略科室编码
|
info.departmentCd = repair.Account_Management_Code__c; //科室编码
|
info.region = repair.Hospital__r.Salesdepartment_HP__c; //大区
|
info.province = repair.State_Hospital__c; //省
|
info.city = repair.Hospital__r.City_Master__r.Name; //--------------市
|
info.repairApplicant = repair.Incharge_Staff__r.Employee_No__c; //---------修理委託人
|
info.repairApplicantID = repair.Incharge_Staff__r.Employee_No__c; //修理委托人统一ID
|
info.FSERepairOrderCreateDate = NFMUtil.formatDateTime2Str(repair.FSE_ApplyForRepair_time__c); // FSE申请修理时间
|
info.SAPRepairOrderCreateDate = NFMUtil.formatDateTime2Str(repair.SAP_Transfer_time__c); //SAP修理申请时间
|
info.equipmentModel = repair.Delivered_Product__r.Product_Name__c; //设备型号
|
info.equipmentCd = repair.Delivered_Product__r.SerialNumber; //----------机身编码
|
info.On_site_repair = repair.On_site_repair__c; //================服务方式=============待定
|
info.ContractName = repair.Maintenance_Contract__r.Name; //维修合同名称
|
info.ContractData = repair.Maintenance_Contract__r.RecordType.Name; //维修合同记录类型
|
info.ContractNo = repair.Management_Code__c; //维修合同编码
|
info.ContractStartDate = NFMUtil.formatDate2StrDateTime(repair.Contract_Start_Date__c); //维修合同开始日期
|
info.ContractEndDate = NFMUtil.formatDate2StrDateTime(repair.Contract_End_Date__c); //维修合同结束日期
|
info.MultiYearContractName = repair.VM_Maintenance_Contract__r.Name; //多年保合同名称
|
info.MultiYearContractNo = repair.VM_Maintenance_Contract__r.Management_Code__c; //-------多年保合同编号
|
info.MultiYearContractStartDate = NFMUtil.formatDate2StrDateTime(repair.VM_Maintenance_Contract__r.startDateGurantee__c); //多年保合同开始日
|
info.MultiYearContractEndDate = NFMUtil.formatDate2StrDateTime(repair.VM_Maintenance_Contract__r.endDateGurantee__c); //多年保合同结束日
|
info.MultiYearContractData = repair.VM_Maintenance_Contract__r.RecordType.Name; //多年保记录类型
|
info.isRepairWarrantyObj = repair.ReRepairObject_result__c; //再修理保修对象
|
info.RepairType = repair.Repair_Severity_Rank__c; //修理区分----------
|
info.QuotationGread = repair.Repair_Rank__c; //报价等级
|
info.detectionResult = repair.InspectionResultFlag__c; //检测结果
|
info.FaultDesc = reasonMap.get(repair.id); //故障描述List
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
info.deliveryLogisticsMode = repair.DeliveryLogisticsMode__c; //送修物流方式======自己写字段
|
//update wangweipeng 2022/02/16 start
|
//info.engineerSendDate = NFMUtil.formatDate2StrDateTime(repair.engineerSendDate__c); // 工程师修理品寄送日
|
info.engineerSendDate = NFMUtil.formatDateTime2Str(repair.engineerSendDate__c); // 工程师修理品寄送日
|
//update wangweipeng 2022/02/16 end
|
info.deliveryLogisticsNo = repair.DeliveryLogisticsNo__c; //送修物流单号======自己写字段
|
info.returnLogisticsMode = repair.ReturnLogisticsMode__c; //返送物流方式======自己写字段
|
info.DeliveryLogisticsAnnotation = repair.DeliveryLogisticsAnnotation__c; //送修物流信息备注
|
info.returnLogisticsNo = repair.ReturnLogisticsNo__c; //返送物流单号======自己写字段
|
info.returnLogisticsRemark = repair.ReturnLogisticsRemark__c; //返送物流备注信息======自己写字段
|
info.returnStage = repair.ReturnStage__c; //维修品返送所处阶段======自己写字段
|
info.returnLogisticsSendTime = NFMUtil.formatDateTime2Str(repair.ReturnOrderSendTime__c); //返送物流发送时间======自己写字段
|
info.returnLogisticsReceiveTime = NFMUtil.formatDateTime2Str(repair.ReturnLogisticsReceiveTime__c); //返送物流签收时间======自己写字段
|
info.repairproductsRevDate = NFMUtil.formatDate2StrDateTime(repair.On_Site_Repair_Order_Date__c); //故障品接收日
|
//update wangweipeng 2022/02/16 start
|
//info.FSErepairApplyDate = NFMUtil.formatDate2StrDateTime(repair.FSE_ApplyForRepair_Day__c); //FSE修理申请日======自己写字段
|
info.FSErepairApplyDate = NFMUtil.formatDateTime2Str(repair.FSE_ApplyForRepair_time__c); // FSE修理申请时间
|
//update wangweipeng 2022/02/16 end
|
info.logisticsSendDate = NFMUtil.formatDateTime2Str(repair.LogisticsSendTime__c); //物流发送日======自己写字段
|
info.logisticsReceiveDate = NFMUtil.formatDateTime2Str(repair.LogisticsReceiveTime__c); //物流接收日======自己写字段
|
//update wangweipeng 2022/02/16 start
|
//info.SAPrepairApplyDate = NFMUtil.formatDate2StrDateTime(repair.SAP_Transfer_day__c); //SAP修理申请日======自己写字段
|
info.SAPrepairApplyDate = NFMUtil.formatDateTime2Str(repair.SAP_Transfer_time__c); // SAP修理申请时间
|
//info.RCacceptanceDate = NFMUtil.formatDate2StrDateTime(repair.Repair_Ordered_Date__c); //修理品RC受理日
|
info.RCacceptanceDate = NFMUtil.formatDateTime2Str(repair.Repair_Ordered_DateTime__c); //4.修理品RC受理日(小程序)
|
//info.inspectionDate = NFMUtil.formatDate2StrDateTime(repair.Repair_Inspection_Date__c); //修理检测日
|
info.inspectionDate = NFMUtil.formatDateTime2Str(repair.Repair_Inspection_DateTime__c); //5.修理检测日(小程序)
|
info.FirstQuotationDate = NFMUtil.formatDate2StrDateNewTime(repair.Repair_Firstestimated_Date_formula__c); //初次报价日
|
//info.priceApprovalDate = NFMUtil.formatDate2StrDateTime(repair.Repair_Discount_approval_Date_formula__c); //减价申请批准日
|
info.priceApprovalDate = NFMUtil.formatDateTime2Str(repair.Repair_Discount_approval_DateTime_form__c); //减价申请批准日(小程序)
|
info.quotationDate = NFMUtil.formatDate2StrDateNewTime(repair.Repair_Quotation_date__c); //报价日
|
//info.cancelRepairDate = NFMUtil.formatDate2StrDateTime(repair.repair_cancel_date__c); //修理取消日
|
info.cancelRepairDate = NFMUtil.formatDateTime2Str(repair.repair_cancel_dateTime__c); //修理取消日(小程序)
|
//info.userAgreeDAte = NFMUtil.formatDate2StrDateTime(repair.Agreed_Date__c); //用户同意日
|
info.userAgreeDAte = NFMUtil.formatDateTime2Str(repair.Agreed_DateTime__c); //7.用户同意日(小程序)
|
//info.partsCompleteDate = NFMUtil.formatDate2StrDateTime(repair.part_arrangement_complete__c); //零件齐备完毕日
|
info.partsCompleteDate = NFMUtil.formatDateTime2Str(repair.part_arrangement_complete_DateTime__c); //零件齐备完毕日
|
//info.repairStartDate = NFMUtil.formatDate2StrDateTime(repair.Repair_Start_Date__c); //修理开始日
|
info.repairStartDate = NFMUtil.formatDateTime2Str(repair.Repair_Start_DateTime__c); //8.修理开始日(小程序)
|
//info.repairCompleteDate = NFMUtil.formatDate2StrDateTime(repair.Repair_Completed_Date__c); //修理完成日
|
info.repairCompleteDate = NFMUtil.formatDateTime2Str(repair.Repair_Completed_DateTime__c); //9.修理完成日(小程序)
|
//info.finalTestDate = NFMUtil.formatDate2StrDateTime(repair.Repair_Final_Inspection_Date__c); //最终检测日
|
info.finalTestDate = NFMUtil.formatDateTime2Str(repair.Repair_Final_Inspection_DateTime__c); //10.最终检测日(小程序)
|
//update wangweipeng 2022/02/16 end
|
info.planQuotationDate = NFMUtil.formatDateTime2Str(repair.PlanQuotationTime__c); //计划报价日======自己写字段
|
info.ActualQuotationDate = NFMUtil.formatDateTime2Str(repair.ActualQuotationStartTime__c); //实际报价日======自己写字段
|
info.finalQuotationPrice = repair.Discount_Price_formula__c; //最终报价金额======自己写字段
|
info.repairCompleteExpectedDate = NFMUtil.formatDate2StrDateTime(repair.Planned_Repair_Completed_Date__c); //修理完成预计日
|
|
info.RCreturnDate = null; //RC修理品返送日
|
info.ReturnsProductWay = null; //返品方式
|
if (repair.Repair_Shipped_Date__c != null && String.isNotBlank(repair.Returns_Product_waySAP__c)) {
|
//info.RCreturnDate = NFMUtil.formatDate2StrDateTime(repair.Repair_Shipped_Date__c); //RC修理品返送日
|
info.RCreturnDate = NFMUtil.formatDateTime2Str(repair.Repair_Shipped_DateTime__c); //RC修理品返送日 wangweipeng 2022/02/16
|
info.ReturnsProductWay = repair.Returns_Product_waySAP__c; //返品方式
|
}
|
|
info.officeLogisticsReceiveDate = NFMUtil.formatDateTime2Str(repair.OfficeLogisticsReceiveDate__c); //办事处物流接收日======自己写字段-SAP提供物流信息
|
info.invoiceDate = NFMUtil.formatDate2StrDateTime(repair.Invoice_Date__c); //开发票日
|
info.userReturnDate = NFMUtil.formatDate2StrDateTime(repair.Repair_Returned_To_HP_Date__c); //修理品用户返送日
|
info.acceptanceFormSendDate = NFMUtil.formatDate2StrDateTime(repair.Facility_Return_Receipt_Collection_reque__c); //验收单现场寄送日
|
info.acceptanceFormReceivedDate = NFMUtil.formatDate2StrDateTime(repair.Receipt_received_date__c); //验收单收到日
|
info.invoiceReceiveDate = NFMUtil.formatDate2StrDateTime(repair.Billing_Received_Date__c); //发票接收日
|
info.latestPayDate = NFMUtil.formatDate2StrDateTime(repair.Latest_Collect_Date_Priority__c); //最新回款日
|
info.payCompleteDate = NFMUtil.formatDate2StrDateTime(repair.Received_Date__c); //回款完毕日
|
info.incomeReckoninDate = NFMUtil.formatDate2StrDateTime(repair.Facility_Return_Receipt_Collection_Date__c); //收入计入日
|
info.abandonPayDate = NFMUtil.formatDate2StrDateTime(repair.BaddebtsDate__c); //放弃回款日
|
info.repairOrderCompleteDate = NFMUtil.formatDate2StrDateTime(repair.RepairOrder_Complete_Day__c); //修理单完成日
|
info.applySpareEquip = repair.if_Rental_Apply__c; //是否申请备品======自己写字段
|
info.supplySpareEquip = repair.Offer_Rental_New__c + ''; //是否提供备品
|
info.SparePartsLendingRecord = rentalMap.get(repair.Id);
|
|
//update wangweipeng 2022/02/16 start
|
//info.RcSorcDate = NFMUtil.formatDate2StrDateTime(repair.RcSorcDate__c);//RC转SORC日
|
info.RcSorcDate = NFMUtil.formatDateTime2Str(repair.RcSorcDateTime__c);//RC转SORC日(小程序)
|
//info.SorcAcceptDate = NFMUtil.formatDate2StrDateTime(repair.SorcAcceptDate__c);//SORC受理日
|
info.SorcAcceptDate = NFMUtil.formatDateTime2Str(repair.SorcAcceptDateTime__c);//SORC受理日(小程序)
|
//info.OgzAcceptDate = NFMUtil.formatDate2StrDateTime(repair.OgzAcceptDate__c);//OGZ受理日
|
info.OgzAcceptDate = NFMUtil.formatDateTime2Str(repair.OgzAcceptDateTime__c);//OGZ受理日(小程序)
|
//update wangweipeng 2022/02/16 end
|
|
info.SorcOgzDate = NFMUtil.formatDate2StrDateTime(repair.SorcOgzDate__c);
|
|
info.cus_dn = repair.DnNO__c;
|
repairs.add(info);
|
}
|
logstr += '\nend';
|
if (repairs.size() > 0) {
|
rowData = NFMUtil.makeRowData(iflog, LOG_TYPE, repairs);
|
execute(rowData, iflog);
|
}
|
} catch (Exception e) {
|
// 发生错误时
|
System.debug(Logginglevel.ERROR, LOG_TYPE + iflog.Name + ':' + e.getMessage());
|
System.debug(Logginglevel.ERROR, LOG_TYPE + iflog.Name + ':' + e.getStackTraceString());
|
logstr += e.getMessage();
|
iflog.ErrorLog__c += e.getMessage() + '\n';
|
iflog.ErrorLog__c += e.getStackTraceString() + '\n';
|
iflog.Log__c = iflog.Log__c + logstr;
|
upsert iflog;
|
}
|
if (rowData != null) {
|
upsert rowData;
|
}
|
|
}
|
/**
|
* 接口发送失败 根据BatchLogId进行手动发送
|
* @Author XHL
|
* @DateTime 2021-07-22
|
* @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 XHL
|
* @DateTime 2021-07-22
|
* @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();
|
iflog.Type__c = LOG_TYPE;
|
iflog.MessageGroupNumber__c = rowDataSFDC.MessageGroupNumber__c;
|
iflog.Log__c = logstr;
|
iflog.ErrorLog__c = '';
|
|
} else {
|
iflog.Type__c = LOG_TYPE;
|
iflog.MessageGroupNumber__c = rowDataSFDC.MessageGroupNumber__c;
|
logstr = iflog.Log__c;
|
}
|
|
try {
|
String data = NFMUtil.getRowDataStr(rowDataSFDC);
|
String status = NFMUtil.sendToAWS(data, API);
|
System.debug('NFM603Log--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
|
// 错误发生时
|
logstr += ex.getMessage();
|
iflog.ErrorLog__c += ex.getMessage() + '\n';
|
iflog.ErrorLog__c += ex.getStackTraceString() + '\n';
|
rowDataSFDC = NFMUtil.LogAutoSend(rowDataSFDC, ex, null);
|
}
|
iflog.Log__c = logstr;
|
upsert iflog;
|
upsert rowDataSFDC;
|
|
}
|
|
// 故障描述
|
private static Map < id, List < FaultDesc >> getFaultDescMap(List < String > repairOrderIdList) {
|
List < Repair_reason__c > reasonList =
|
[SELECT Id, DescriptionName__c, LocationName__c, ActivityDescription__c, Repair__c
|
FROM Repair_reason__c
|
WHERE Repair__c
|
IN: repairOrderIdList
|
];
|
Map < id, List < FaultDesc >> reasonMap = new Map < id, List < FaultDesc >> ();
|
for (Repair_reason__c reason: reasonList) {
|
List < FaultDesc > temp = reasonMap.get(reason.Repair__c);
|
if (temp == null) {
|
temp = new List < FaultDesc > ();
|
}
|
FaultDesc faulDesc = new FaultDesc();
|
faulDesc.repairPosition = reason.LocationName__c; //修理部位
|
faulDesc.faultDescription = reason.DescriptionName__c; //故障描述
|
faulDesc.repairContentDesc = reason.ActivityDescription__c; //修理内容描述
|
temp.add(faulDesc);
|
reasonMap.put(reason.Repair__c, temp);
|
}
|
|
return reasonMap;
|
|
|
}
|
|
// 备品出借记录
|
private static Map < id, List < SparePartsLendingRecord >> getrentalMap(List < Id > repairIdList) {
|
List < Rental_Apply_Equipment_Set_Detail__c > equipList = [
|
SELECT Name, Repair__c, Bollow_Date__c, Fixture_Model_No__c, Fixture_Model_No_F__c, Cancel_Select__c,
|
Rental_Apply_Equipment_Set__r.Rental_Apply__r.Name,
|
Rental_Apply_Equipment_Set__r.Bollow_Date__c,
|
Rental_Apply_Equipment_Set__r.Rental_Apply__r.Repair__c
|
FROM Rental_Apply_Equipment_Set_Detail__c WHERE Cancel_Select__c = false AND Rental_Apply_Equipment_Set__r.Rental_Apply__r.Repair__c IN: repairIdList
|
];
|
Map < id, List < SparePartsLendingRecord >> rentalMap = new Map < id, List < SparePartsLendingRecord >> ();
|
|
for (Rental_Apply_Equipment_Set_Detail__c detail: equipList) {
|
String repairId = detail.Rental_Apply_Equipment_Set__r.Rental_Apply__r.Repair__c;
|
List < SparePartsLendingRecord > renList = rentalMap.get(repairId);
|
if (renList == null) {
|
renList = new List < SparePartsLendingRecord > ();
|
}
|
SparePartsLendingRecord splr = new SparePartsLendingRecord();
|
splr.spareEquipapplicationNo = detail.Rental_Apply_Equipment_Set__r.Rental_Apply__r.Name; //备品申请编号
|
splr.spareEquipLendingDate = NFMUtil.formatDate2StrDateTime(detail.Rental_Apply_Equipment_Set__r.Bollow_Date__c); //备品出借日期
|
splr.spareEquipMode = detail.Fixture_Model_No_F__c;
|
renList.add(splr);
|
rentalMap.put(repairId, renList);
|
}
|
return rentalMap;
|
}
|
|
public static Set < Id > NFM603_Ids = new Set < Id > ();
|
// public static Map<Id,Id> rprIdMap = new Map<Id,Id>();
|
|
public static void NFM603Trigger(List < Repair__c > newList, Map < Id, Repair__c > newMap, List < Repair__c > oldList, Map < Id, Repair__c > oldMap) {
|
List < String > rprIds = new List < String > ();
|
Map < Id, Id > rprIdMap = new Map < Id, Id > ();
|
if (Trigger.isAfter) {
|
if (Trigger.isInsert) {
|
for (Repair__c rpr: newList) {
|
if (rpr.status__c == '1.受理完毕') {
|
if (NFM603Controller.NFM603_Ids.contains(rpr.Id) == false) {
|
if (String.isNotBlank(rpr.RepairSubOrder__c)) {
|
NFM603Controller.NFM603_Ids.add(rpr.Id);
|
rprIdMap.put(rpr.Id, rpr.Id);
|
}
|
|
}
|
}
|
}
|
}
|
|
|
if (Trigger.isUpdate) {
|
for (Repair__c rpr: newList) {
|
Repair__c oldrpr = oldMap.get(rpr.Id);
|
// 修理有报修子单号,并且 待发送AWS为false 发送给AWS
|
if (String.isNotBlank(rpr.RepairSubOrder__c) && !rpr.AwaitToSendAWS__c) {
|
if (((rpr.status__c == '0.申请完毕' || rpr.status__c == '1.受理完毕') && (oldrpr.SAP_Transfer_time__c == null && rpr.SAP_Transfer_time__c != null)) || (rpr.Address_type__c == 'X' && (rpr.Address_Type_Index__c != oldrpr.Address_Type_Index__c))) {
|
|
if (NFM603Controller.NFM603_Ids.contains(rpr.Id) == false) {
|
NFM603Controller.NFM603_Ids.add(rpr.Id);
|
rprIdMap.put(rpr.Id, rpr.Id);
|
}
|
}
|
// 测试环境测试用,上线前请注掉
|
if (rpr.Repair_Firstestimated_Date__c != oldrpr.Repair_Firstestimated_Date__c) {
|
if (NFM603Controller.NFM603_Ids.contains(rpr.Id) == false) {
|
NFM603Controller.NFM603_Ids.add(rpr.Id);
|
// rprIds.add(rpr.Id);
|
rprIdMap.put(rpr.Id, rpr.Id);
|
}
|
}
|
if (rpr.Repair_Shipped_Date__c != oldrpr.Repair_Shipped_Date__c) {
|
if (NFM603Controller.NFM603_Ids.contains(rpr.Id) == false) {
|
NFM603Controller.NFM603_Ids.add(rpr.Id);
|
rprIdMap.put(rpr.Id, rpr.Id);
|
}
|
}
|
// 测试环境测试用,上线前请注掉
|
}
|
|
}
|
}
|
|
rprIds = rprIdMap.values();
|
|
if (rprIds.size() > 0) {
|
BatchIF_Log__c iflog = new BatchIF_Log__c();
|
iflog.Type__c = LOG_TYPE;
|
iflog.Log__c = 'callout start\n';
|
insert iflog;
|
NFM603Controller.callout(iflog.Id, rprIds);
|
}
|
} else {
|
if (Trigger.isUpdate) {
|
for (Repair__c rpr: newList) {
|
Repair__c oldrpr = oldMap.get(rpr.Id);
|
// 修理的报修子单字段有值,修理单状态编号变更 需 发送AWS
|
if (String.isNotBlank(rpr.RepairSubOrder__c) && rpr.RepairOrderStatusCode__c != oldrpr.RepairOrderStatusCode__c) {
|
rpr.AwaitToSendAWS__c = true;
|
}
|
}
|
}
|
}
|
}
|
}
|