trigger RentalApplyOtherTrigger on Rental_Apply__c (before insert, before update, after insert, after update, after delete) {
|
public static Boolean tempCheck = false;
|
if(((!Test.isRunningTest()) && UserInfo.getUserId() == System.Label.ByPassTrigger) || FixtureUtil.isRepairRenewal) {
|
return;
|
}
|
//SWAG-B3U63C 2018/8/21 更新学会培训的申请备品申请单数 start
|
if (Trigger.isAfter) {
|
list<id> CampaignID = new list<id>();
|
if (Trigger.isInsert || Trigger.isUndelete ) {
|
for (Rental_Apply__c local : Trigger.New) {
|
//20231124 sx add 备品智能化添加
|
if (String.isNotEmpty(local.Campaign__c) && !local.Is_Auto__c){
|
CampaignID.add(local.Campaign__c);
|
}
|
}
|
}
|
// 2023-10-31 zyh 智能化 start
|
if (Trigger.isInsert) {
|
List<String> reIdList = new List<String>();
|
List<String> opdRaIdList = new List<String>();
|
for (Rental_Apply__c inRa : Trigger.new){
|
//Rental_Apply__c oldRa = Trigger.oldMap.get(inRa.Id);
|
System.debug('zyhtest====cfq'+inRa.Demo_purpose1__c+'--'+inRa.Split_Apply_Reason__c +'--' +inRa.Root_Rental_Apply__c);
|
// 不是分单的,维修代用的申请单需要创建配套,分单的不需要
|
if (inRa.Demo_purpose1__c == '维修代用' && inRa.Demo_purpose2__c != '故障排查' && inRa.Demo_purpose2__c != '索赔QIS' && inRa.Repair__c != null && String.isBlank(inRa.Split_Apply_Reason__c) && String.isBlank(inRa.Root_Rental_Apply__c)){
|
reIdList.add(inRa.Repair__c);
|
} // else {
|
//return; // 不是修理创建的申请单不需要自动建配套/明细
|
// }
|
//2023/11/22 sx add 产品试用手动创建也需要配套
|
if(inRa.Demo_purpose1__c == '产品试用' && inRa.OPDPlan__c != null && !inRa.Is_Auto__c && String.isBlank(inRa.Split_Apply_Reason__c) && String.isBlank(inRa.Root_Rental_Apply__c)){
|
opdRaIdList.add(inRa.OPDPlan__c);
|
}
|
}
|
if (reIdList.size() > 0) {
|
// 查询申请单的修理
|
List<Repair__c> repList = [SELECT Id,Name,Delivered_Product__c,Delivered_Product__r.Salesdepartment__c,Delivered_Product__r.Fixture_Model_No_F__c,Delivered_Product__r.Equipment_Type__c,Delivered_Product__r.Product_category__c FROM Repair__c WHERE Id IN :reIdList];
|
// 查询配套
|
if (repList.size() > 0) {
|
List<Fixture_Set__c> fsList = [SELECT Id,Name,Fixture_Set_Body_Model_No__c FROM Fixture_Set__c WHERE Fixture_Set_Body_Model_No__c = :repList[0].Delivered_Product__r.Fixture_Model_No_F__c];
|
if (fsList.size() > 0) {
|
// 新建配套一览
|
Rental_Apply_Equipment_Set__c raes = new Rental_Apply_Equipment_Set__c();
|
raes.Name = '*';
|
raes.Rental_Apply__c = Trigger.new[0].Id;
|
raes.Fixture_Set__c = fsList[0].Id;
|
raes.IndexFromUniqueKey__c = 1;
|
upsert raes;
|
List<Fixture_Set_Detail__c> fsdList = [SELECT Id,Name,SortInt__c,Is_Body__c,Fixture_Set__c FROM Fixture_Set_Detail__c WHERE Fixture_Set__c = :fsList[0].Id AND Is_Body__c = true];
|
System.debug('zyhtest======fsdList'+fsdList+'========111;;;');
|
// 配套明细有数据新建备品一览明细
|
if (fsdList.size() > 0) {
|
System.debug('zyhtest======fsdList'+fsdList+'========;;;');
|
Rental_Apply_Equipment_Set_Detail__c raesd = new Rental_Apply_Equipment_Set_Detail__c();
|
raesd.Name = '*';
|
raesd.Rental_Apply__c = Trigger.new[0].Id;
|
raesd.Fixture_Set_Detail__c = fsdList[0].Id;
|
raesd.Rental_Num__c = 1;
|
raesd.Rental_Apply_Equipment_Set__c = raes.Id;
|
raesd.Is_Body__c = true;
|
raesd.Equipment_Type_text__c = repList[0].Delivered_Product__r.Equipment_Type__c;
|
raesd.Product_category_text__c = repList[0].Delivered_Product__r.Product_category__c;
|
raesd.IndexFromUniqueKey__c = 1;
|
raesd.IndexFromUniqueKey_Text__c = '0'+fsdList[0].SortInt__c + '';
|
raesd.Salesdepartment_before__c = repList[0].Delivered_Product__r.Salesdepartment__c;
|
// raesd.Repair__c = reList[0].Id;
|
upsert raesd;
|
// 第一条备品配套一览明细赋值-2023-11-15
|
raes.First_RAESD__c = raesd.Id;
|
update raes;
|
}
|
}
|
}
|
// List<Fixture_Set__c> fsList = [SELECT Id,Name,Fixture_Set_Body_Model_No__c FROM Fixture_Set__c WHERE Fixture_Set_Body_Model_No__c = :repList[0].Delivered_Product__r.Fixture_Model_No_F__c];
|
|
}
|
if(opdRaIdList.size()>0){
|
//查询所有的OPD的 计划中借出备品 再申请的OPD不走这里逻辑
|
Map<Id, OPDPlan__c> opdMap = new Map<Id, OPDPlan__c>([SELECT Id,PlanProdDetail__c,Reapply__c FROM OPDPlan__c WHERE Id IN :opdRaIdList AND Reapply__c = false]);
|
//所有的配套型号全部取出来
|
List<String> fixtureModels = new List<String>();
|
//所有OPD涉及到的配套
|
for(OPDPlan__c opd : opdMap.values()){
|
if(opd.PlanProdDetail__c != null){
|
List<String> fixSetStrings = opd.PlanProdDetail__c.split(';');
|
if(fixSetStrings.size() > 0){
|
for(String fixSet : fixSetStrings){
|
String tempString = fixSet.trim();
|
if(tempString.indexOf('*')!= -1){
|
fixtureModels.add(tempString.substring(0, tempString.indexOf('*')));
|
}
|
}
|
}
|
}
|
}
|
// 借用机会可视化-判断空 2023-12-29 zyh start
|
if (fixtureModels.size() > 0) {
|
List<Fixture_Set__c> fixSets = [SELECT Id, Fixture_Set_Body_Model_No__c FROM Fixture_Set__c WHERE Fixture_Set_Body_Model_No__c IN :fixtureModels];
|
if (fixSets.size() > 0) {// 借用机会可视化-判断空 2023-12-29 zyh
|
Map<String, Fixture_Set__c> fixBodyModelMap = new Map<String, Fixture_Set__c>();
|
for(Fixture_Set__c fs : fixSets){
|
if(!fixBodyModelMap.containsKey(fs.Fixture_Set_Body_Model_No__c)){
|
fixBodyModelMap.put(fs.Fixture_Set_Body_Model_No__c, fs);
|
}
|
}
|
System.debug('fixBodyModelMap====='+fixBodyModelMap);
|
Map<Id,Fixture_Set__c> fixMap = new Map<Id,Fixture_Set__c>([SELECT Id,Fixture_Set_Body_Model_No__c FROM Fixture_Set__c WHERE Fixture_Set_Body_Model_No__c IN :fixtureModels ORDER BY Name]);
|
List<Fixture_Set_Detail__c> fixSetDetails = [SELECT Id, SortInt__c, Fixture_Set__c FROM Fixture_Set_Detail__c WHERE Is_Body__c = true AND Fixture_Set__c IN :fixSets];
|
//配套和配套明细的关系 <配套Id, List<明细>>
|
Map<Id, List<Fixture_Set_Detail__c>> setDetalMap = new Map<Id,List<Fixture_Set_Detail__c>>();
|
for(Fixture_Set_Detail__c fixDetail : fixSetDetails){
|
if(setDetalMap.containsKey(fixDetail.Fixture_Set__c)){
|
setDetalMap.get(fixDetail.Fixture_Set__c).add(fixDetail);
|
}else{
|
List<Fixture_Set_Detail__c> temp = new List<Fixture_Set_Detail__c>();
|
temp.add(fixDetail);
|
setDetalMap.put(fixDetail.Fixture_Set__c,temp);
|
}
|
}
|
|
List<Rental_Apply_Equipment_Set__c> insertRaSet = new List<Rental_Apply_Equipment_Set__c>();
|
List<Rental_Apply_Equipment_Set_Detail__c> insertRaSetDetail = new List<Rental_Apply_Equipment_Set_Detail__c>();
|
//给各个申请单分配一览和一览明细
|
for(Rental_Apply__c ra : Trigger.new){
|
if(opdMap.containsKey(ra.OPDPlan__c)){
|
//一览 添加
|
//每一单对应的配套
|
// 借用机会可视化-空判断 2023-12-29 zyh start
|
List<String> tempfixSetStrings = new List<String>();
|
if (String.isNotBlank(opdMap.get(ra.OPDPlan__c).PlanProdDetail__c)) {
|
tempfixSetStrings = opdMap.get(ra.OPDPlan__c).PlanProdDetail__c.split(';');
|
}
|
// List<String> tempfixSetStrings = opdMap.get(ra.OPDPlan__c).PlanProdDetail__c.split(';');
|
// 借用机会可视化-空判断 2023-12-29 zyh end
|
if(tempfixSetStrings.size()>0){
|
for(String s : tempfixSetStrings){
|
String tempString = s.trim();
|
System.debug('tempString====='+tempString);
|
if(tempString.indexOf('*')!= -1 && fixBodyModelMap.containskey(tempString.substring(0, tempString.indexOf('*'))) ){
|
Rental_Apply_Equipment_Set__c raeSet = new Rental_Apply_Equipment_Set__c();
|
raeSet.Name = '*';
|
raeSet.Rental_Apply__c = ra.Id;
|
raeSet.Fixture_Set__c = fixBodyModelMap.get(tempString.substring(0, tempString.indexOf('*'))).Id;
|
raeSet.IndexFromUniqueKey__c = 1;
|
insertRaSet.add(raeSet);
|
}
|
}
|
}
|
}
|
}
|
System.debug('insertRaSet===='+insertRaSet);
|
//先Insert 一览 再创建一览明细
|
if(insertRaSet.size()>0){
|
INSERT insertRaSet;
|
|
//一览明细添加
|
for(Rental_Apply_Equipment_Set__c rae : insertRaSet){
|
if(fixMap.containsKey(rae.Fixture_Set__c)){
|
Rental_Apply_Equipment_Set_Detail__c raesdel = new Rental_Apply_Equipment_Set_Detail__c();
|
raesdel.Name = '*';
|
raesdel.Rental_Apply__c = rae.Rental_Apply__c;
|
raesdel.Fixture_Set_Detail__c = setDetalMap.get(rae.Fixture_Set__c)[0].Id;
|
raesdel.Rental_Num__c = 1;
|
raesdel.Rental_Apply_Equipment_Set__c = rae.Id;
|
raesdel.Is_Body__c = true;
|
raesdel.IndexFromUniqueKey__c = 1;
|
raesdel.IndexFromUniqueKey_Text__c = setDetalMap.get(rae.Fixture_Set__c)[0].SortInt__c + '';
|
insertRaSetDetail.add(raesdel);
|
}
|
}
|
//插入一览明细
|
if(insertRaSetDetail.size()>0){
|
INSERT insertRaSetDetail;
|
//更新一览的第一条备品配套明细
|
for(Rental_Apply_Equipment_Set__c rae : insertRaSet){
|
for(Rental_Apply_Equipment_Set_Detail__c raesd : insertRaSetDetail){
|
if(rae.Id == raesd.Rental_Apply_Equipment_Set__c){
|
rae.First_RAESD__c = raesd.Id;
|
}
|
}
|
}
|
UPDATE insertRaSet;
|
}
|
}
|
}
|
}
|
// List<Fixture_Set__c> fixSets = [SELECT Id, Fixture_Set_Body_Model_No__c FROM Fixture_Set__c WHERE Fixture_Set_Body_Model_No__c IN :fixtureModels];
|
// 借用机会可视化-判断空 2023-12-29 zyh end
|
}
|
}
|
// 2023-10-31 zyh 智能化 end
|
// 2023-10-26 zyh 智能化 start
|
System.debug('tempCheck=start=='+tempCheck);
|
System.debug('StaticParameter.EscapeRaTrigger=start=='+StaticParameter.EscapeRaTrigger);
|
if (Trigger.isUpdate) {
|
List<String> raIdList = new List<String>();
|
List<String> ra614List = new List<String>();
|
for (Rental_Apply__c upRa : Trigger.new){
|
Rental_Apply__c oldRa = Trigger.oldMap.get(upRa.Id);
|
// 有修理,满足触发条件推送接口数据
|
if ((upRa.Shippment_loaner_time__c != oldRa.Shippment_loaner_time__c || // 备品中心出库日,发生变化
|
// upRa.QueueShippmentDate__c != oldRa.QueueShippmentDate__c || // 排队备品预计出库时间,发生变化
|
upRa.Return_dadeline_final__c != oldRa.Return_dadeline_final__c || // 最新预定归还日,发生变化
|
// (upRa.Rental_Status__c == '已分配' && oldRa.Rental_Status__c == '已批准') ||
|
upRa.QueueShippmentDate__c != oldRa.QueueShippmentDate__c ||
|
upRa.Rental_Status__c != oldRa.Rental_Status__c ||
|
upRa.Cancel_time__c != oldRa.Cancel_time__c) && // 备品申请取消日,发生变化
|
upRa.Repair__c != null && upRa.Demo_purpose1__c == '维修代用' &&
|
upRa.Rental_Status__c != '草案中' &&
|
upRa.Rental_Status__c != '申请中' &&
|
upRa.Rental_Status__c != '审批中(OPD未通过)') {
|
System.debug('QueueShippmentDate__c=' + upRa.QueueShippmentDate__c + '///' + oldRa.QueueShippmentDate__c
|
+ ';;Shippment_loaner_time__c=' + upRa.Shippment_loaner_time__c + '///' + oldRa.Shippment_loaner_time__c
|
+ ';;Return_dadeline_final__c=' + upRa.Return_dadeline_final__c + '///' + oldRa.Return_dadeline_final__c
|
+ ';;Cancel_time__c=' + upRa.Cancel_time__c + '///' + oldRa.Cancel_time__c);
|
System.debug('QueueShippmentDate__c=' + (upRa.QueueShippmentDate__c == oldRa.QueueShippmentDate__c)
|
+ ';;Shippment_loaner_time__c=' + (upRa.Shippment_loaner_time__c == oldRa.Shippment_loaner_time__c)
|
+ ';;Return_dadeline_final__c=' + (upRa.Return_dadeline_final__c == oldRa.Return_dadeline_final__c)
|
+ ';;Cancel_time__c=' + (upRa.Cancel_time__c == oldRa.Cancel_time__c));
|
ra614List.add(upRa.Id);
|
}
|
// 使用目的1是维修待用和协议借用的,或者使用目的2是已购待货,批准通过后推送分单Request_approval_time__c
|
// if (upRa.Rental_Status__c == '已批准' && oldRa.Rental_Status__c != '已批准' && (upRa.Demo_purpose1__c == '维修代用' || upRa.Demo_purpose1__c == '协议借用' || upRa.demo_purpose2__c == '已购待货')){
|
System.debug('zyetest===upRa.Status__c' + upRa.Status__c + 'oldRa.Status__c' + oldRa.Status__c);
|
String RecordTypeId = Schema.SObjectType.Rental_Apply__c.getRecordTypeInfosByDeveloperName().get('AgencyRequest').getRecordTypeId(); // 记录类型
|
if (RecordTypeId != upRa.RecordTypeId && upRa.Status__c == '已批准' && oldRa.Status__c != '已批准' && (upRa.Demo_purpose1__c == '维修代用' || upRa.Demo_purpose1__c == '协议借用' || upRa.demo_purpose2__c == '已购待货')){
|
raIdList.add(upRa.Id);
|
}
|
}
|
// 智能化接口推送
|
if (ra614List.size() > 0 && StaticParameter.EscapeRaTrigger == false) {
|
System.debug('NFM614====' + ra614List);
|
BatchIF_Log__c iflog = new BatchIF_Log__c();
|
iflog.Type__c = 'NFM614';
|
iflog.Log__c = 'callout start\n';
|
System.debug('NFM614===RentalApplyToApp====callout start' + ra614List);
|
System.debug('NFM614===RentalApplyToApp====callout start' + Datetime.now());
|
System.debug('NFM614===RentalApplyToApp====callout start' + ra614List.size());
|
insert iflog;
|
// 2023-12-2 zyh 跳过Batch用户 start
|
// NFM614Controller.callout(iflog.Id, ra614List);
|
String uid = UserInfo.getUserId();
|
String BUid = System.Label.Batch_User_Id;
|
String OLYid = System.Label.OlympusSystem_ID;
|
System.debug('zheli');
|
if (System.isBatch()) {
|
// if (uid.substring(0,15) == BUid.substring(0,15) || uid.substring(0,15) == OLYid.substring(0,15)) {
|
NFM614Controller.executefuture(iflog, ra614List);
|
}else{
|
NFM614Controller.callout(iflog.Id, ra614List);
|
}
|
// 2023-12-2 zyh 跳过Batch用户 end
|
tempCheck = true;
|
StaticParameter.EscapeRaTrigger = true;
|
System.debug('tempCheck=end=='+tempCheck);
|
System.debug('StaticParameter.EscapeRaTrigger=end=='+StaticParameter.EscapeRaTrigger);
|
}
|
|
if (raIdList.size() > 0) {
|
System.debug('zyhtest=====Trigger=raIdList:'+raIdList);
|
// 调用Batch进行分单/分配——同步进行 20231209 zyh start
|
// AuthRentalApplySplitBatch.toSplitRentalApply(raIdList,true);
|
AuthRentalApplySplitBatch.toSplitRentalApply(raIdList,true);
|
// Database.executeBatch(new AuthRentalApplySplitBatch(raIdList),1);
|
// AuthRentalApplySplitController arasc = new AuthRentalApplySplitController();
|
// arasc.init(raIdList);
|
// 调用Batch进行分单/分配——同步进行 20231209 zyh end
|
}
|
}
|
// 2023-10-26 zyh 智能化 end
|
if (Trigger.isUpdate || Trigger.isDelete) {
|
for (Rental_Apply__c local : Trigger.old) {
|
// 2020/11/3 songxiaoqi start 更新申请时,更新前不是取消,然后更新成取消的时候计算
|
Rental_Apply__c news =null;
|
if (Trigger.isUpdate) {
|
news = Trigger.newMap.get( local.Id );
|
}
|
// 两种情况需要更新:
|
// 1、删除并且 old包含学会培训;
|
// 2、更新,new 或 old 中包含学会培训,并且状态发生变化 ;
|
//20231123 sx 备品智能化项目 自动创建申请单跳过 !local.Is_Auto__c 手工分单分单申请单该字段(Is_Auto__c)默认为false会正常走进逻辑
|
if (
|
Trigger.isUpdate && String.isNotEmpty( news.Campaign__c ) && news.Is_Auto__c != null && !news.Is_Auto__c
|
||
|
(Trigger.isDelete &&
|
String.isNotEmpty( local.Campaign__c )
|
)
|
||
|
(Trigger.isUpdate &&
|
(String.isNotEmpty(local.Campaign__c) ||
|
String.isNotEmpty(news.Campaign__c)
|
) &&
|
(
|
(local.RA_Status__c !=news.RA_Status__c
|
&& news.RA_Status__c=='取消')||
|
(local.Request_approval_day__c != news.Request_approval_day__c) ||
|
(local.Campaign__c != news.Campaign__c )
|
)
|
)
|
){
|
// 2020/11/3 songxiaoqi end
|
// 如果老的备品借出申请的学会不为空,加入
|
if( String.isNotEmpty( local.Campaign__c ) ){
|
CampaignID.add( local.Campaign__c );
|
}
|
// 如果新的备品借出申请的学会不为空,加入
|
if( String.isNotEmpty( news.Campaign__c ) ){
|
CampaignID.add( news.Campaign__c );
|
}
|
}
|
}
|
}
|
System.debug('CampaignID==='+ CampaignID);
|
if (CampaignID.size () > 0) {
|
List<AggregateResult> TemRentalApplies =
|
[select Count(Id) Cnt_Id, Campaign__c, min(Request_approval_day__c) RADay
|
from Rental_Apply__c
|
where Campaign__c in: CampaignID
|
and RA_Status__c != '取消'
|
group by Campaign__c
|
];
|
map<id, list<string>> TemRentalAppliesMap = new map<id, list<string>>();
|
for (AggregateResult TemRentalApply : TemRentalApplies) {
|
list<string> temStringList = new list<string>();
|
temStringList.add(string.valueOf( TemRentalApply.get('Cnt_Id')));
|
if (TemRentalApply.get('RADay') != null) {
|
temStringList.add(((Date)TemRentalApply.get('RADay')).format());
|
}
|
TemRentalAppliesMap.put( (ID) TemRentalApply.get('Campaign__c'),
|
temStringList);
|
}
|
list<Campaign> UpdateCampaignList = new list<Campaign>();
|
for (Campaign TemCampaign : [select id, Number_Rental_Apply__c
|
from Campaign where id in: CampaignID
|
//2020/11/3 songxiaoqi start 创建申请后,草案中的时候计算单数
|
and Status != '取消'
|
//2020/11/3 songxiaoqi end
|
]) {
|
list<string> temStringList = TemRentalAppliesMap.get(TemCampaign.id);
|
if (temStringList != null) {
|
integer RentalApplyNumber = integer.valueof(temStringList[0]);
|
TemCampaign.Number_Rental_Apply__c = RentalApplyNumber;
|
if (temStringList.size() > 1) {
|
Date tempRADay = date.parse(temStringList[1]);
|
TemCampaign.Request_approval_day_RA__c = tempRADay;
|
} else {
|
TemCampaign.Request_approval_day_RA__c = null;
|
}
|
} else {
|
TemCampaign.Number_Rental_Apply__c = 0;
|
TemCampaign.Request_approval_day_RA__c = null;
|
}
|
UpdateCampaignList.add(TemCampaign);
|
}
|
if (UpdateCampaignList.size() > 0) {
|
upsert UpdateCampaignList;
|
}
|
}
|
//SWAG-B3U63C 2018/8/21 更新学会培训的申请备品申请单数 end
|
}
|
}
|