//lt add 20231110 DB202307367354 【招标项目】漏单计算逻辑修改 add
|
//lt 20231213 update 漏单逻辑:创建日-(项目:招标日-60天)>0 ==> 漏单数为1 DB202311665664 【重要紧急课题】询价中的“项目:招标日”和漏单数修改
|
global without sharing class TenderUtil{
|
|
public TenderUtil() {
|
}
|
|
//计算漏单逻辑: 询价关联的多条招标项目中(询价关联招标项目)
|
//询价的创建日 > 最早公告记录日-60 ==> 漏单数为1
|
//,List<Tender_Opportunity_Link__c> linkList
|
public static void UpdLeakageNum(Set<Id> oppSet){
|
//漏单数需要更新为1的询价Map
|
Map<String,Opportunity> UpdOppMap = new Map<String,Opportunity>();
|
|
//更新 询价 招标日
|
Map<String,Opportunity> UpdOpp1Map = new Map<String,Opportunity>();
|
|
//公告记录日变化导致 询价关联的的link里没有漏单 1-0 的list
|
List<Opportunity> UpdOppnullList = new List<Opportunity>();
|
|
//需要更新的询价下所有的link
|
List<Tender_Opportunity_Link__c> sLinkList = [
|
Select id,name,IsLeakage_New__c,Opportunity__c,Tender_information__c,
|
Tender_information__r.publicDate__c,Opportunity__r.Created_Day__c,
|
Opportunity__r.LeakageNumber__c,
|
Opportunity__r.DirectLossFLG__c
|
,Opportunity__r.TenderBeginDate_New__c,Tender_information__r.TenderDate__c //lt DB202311665664
|
From Tender_Opportunity_Link__c
|
Where Opportunity__c in :oppSet
|
];
|
|
for(Tender_Opportunity_Link__c slink: sLinkList){
|
Opportunity opp = new Opportunity();
|
|
//lt DB202311665664 start
|
System.debug('20231109-漏单-共通招标日'+slink.Tender_information__r.TenderDate__c);
|
if(slink.Tender_information__r.TenderDate__c != null){
|
opp.Id = slink.Opportunity__c;
|
if(!UpdOpp1Map.containsKey(slink.Opportunity__c)){
|
opp.TenderBeginDate_New__c = slink.Tender_information__r.TenderDate__c;
|
if(slink.Opportunity__r.Created_Day__c > opp.TenderBeginDate_New__c.addDays(-60)){
|
opp.LeakageNumber__c = 1;
|
}else{
|
opp.LeakageNumber__c = null;
|
}
|
UpdOpp1Map.put(slink.Opportunity__c,opp);
|
// oppSet.remove(slink.Opportunity__c);
|
}else{
|
opp = UpdOpp1Map.get(slink.Opportunity__c);
|
if(String.isNotBlank(String.valueOf(opp.TenderBeginDate_New__c))){
|
if(opp.TenderBeginDate_New__c > slink.Tender_information__r.TenderDate__c){
|
opp.TenderBeginDate_New__c = slink.Tender_information__r.TenderDate__c;
|
if(slink.Opportunity__r.Created_Day__c > opp.TenderBeginDate_New__c.addDays(-60)){
|
opp.LeakageNumber__c = 1;
|
}else{
|
opp.LeakageNumber__c = null;
|
}
|
}
|
}else{
|
opp.TenderBeginDate_New__c = slink.Tender_information__r.TenderDate__c;
|
if(slink.Opportunity__r.Created_Day__c > opp.TenderBeginDate_New__c.addDays(-60)){
|
opp.LeakageNumber__c = 1;
|
}else{
|
opp.LeakageNumber__c = null;
|
}
|
}
|
UpdOpp1Map.put(slink.Opportunity__c,opp);
|
}
|
// System.debug('20231109-漏单-共通opp招标日'+slink.Opportunity__r.TenderBeginDate_New__c);
|
// if(String.isNotBlank(String.valueOf(slink.Opportunity__r.TenderBeginDate_New__c))){
|
// if(slink.Opportunity__r.TenderBeginDate_New__c > slink.Tender_information__r.TenderDate__c){
|
// opp.TenderBeginDate_New__c = slink.Tender_information__r.TenderDate__c;
|
// }
|
// }else{
|
// opp.TenderBeginDate_New__c = slink.Tender_information__r.TenderDate__c;
|
// }
|
// System.debug('20231109-漏单-共通询价'+opp);
|
// if(!UpdOpp1Map.containsKey(slink.Opportunity__c)){
|
// UpdOpp1Map.put(slink.Opportunity__c,opp);
|
// }
|
}
|
//lt DB202311665664 end
|
|
//后台用-招标项目直接失单标记
|
//招标项目 直接点 失单 标记漏单为1 时,不对漏单进行操作
|
// if(!slink.Opportunity__r.DirectLossFLG__c){ //2023-11-22 需求,取消看直接失单
|
//link里只要有符合 漏单 逻辑 (opp创建日 > tender公告记录日-60) -- 询价漏单数为1
|
// if(slink.Tender_information__r.publicDate__c != null && slink.Opportunity__r.Created_Day__c > slink.Tender_information__r.publicDate__c.addDays(-60)){
|
//DB202311665664 20231213 update 取 创建日-(项目:招标日-60天)>0
|
// if(slink.Opportunity__r.TenderBeginDate_New__c != null && slink.Opportunity__r.Created_Day__c > slink.Opportunity__r.TenderBeginDate_New__c.addDays(-60)){
|
// opp.Id = slink.Opportunity__c;
|
// opp.LeakageNumber__c = 1;
|
|
// //可能存在 一个询价下多个link漏单 ,更一次询价
|
// if(!UpdOppMap.containsKey(slink.Opportunity__c)){
|
// UpdOppMap.put(slink.Opportunity__c,opp);
|
// oppSet.remove(slink.Opportunity__c);
|
// }
|
// }
|
// }
|
|
|
|
}
|
|
// if(oppSet.Size() > 0){
|
// List<Opportunity> oppnullList = [
|
// Select id,name
|
// From Opportunity
|
// Where id in :oppSet
|
// // And DirectLossFLG__c = false
|
// ];
|
|
// if(oppnullList.Size() > 0){
|
// for(Opportunity oppnull: oppnullList){
|
// Opportunity opp1 = new Opportunity();
|
// opp1.Id = oppnull.Id;
|
// opp1.LeakageNumber__c = null;
|
// UpdOppnullList.add(opp1);
|
// }
|
// }
|
// }
|
|
System.debug('20231109-漏单-upd共通询价1'+UpdOppMap.values());
|
System.debug('20231109-漏单-upd共通询价2'+UpdOpp1Map.values());
|
if(UpdOpp1Map.values().Size() > 0){
|
update UpdOpp1Map.values();
|
}
|
|
// if(UpdOppMap.values().Size() > 0){
|
// update UpdOppMap.values();
|
// }
|
|
// if(UpdOppnullList.size() > 0 ){
|
// update UpdOppnullList;
|
// }
|
|
}
|
|
public void testMock(){
|
Integer i = 0;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
}
|
|
}
|