From 928399eceec50e3d37ea08669a12789a9410a9d2 Mon Sep 17 00:00:00 2001
From: 沙世明 <shashiming@prec-tech.com>
Date: 星期二, 22 十一月 2022 16:51:16 +0800
Subject: [PATCH] 111
---
force-app/main/default/classes/AssetWhereabouts.cls | 119 +++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 91 insertions(+), 28 deletions(-)
diff --git a/force-app/main/default/classes/AssetWhereabouts.cls b/force-app/main/default/classes/AssetWhereabouts.cls
index ae91fe2..a8ec2d7 100644
--- a/force-app/main/default/classes/AssetWhereabouts.cls
+++ b/force-app/main/default/classes/AssetWhereabouts.cls
@@ -1,64 +1,114 @@
global class AssetWhereabouts implements Database.Batchable<sObject>,Database.Stateful {
public String query;
public BatchIF_Log__c iflog ;
- public Date toDay = Date.today().addYears(-1);
+ public Date toDay = Date.today();
+ public List < String > assetIdList;
global AssetWhereabouts() {
this.query = query;
}
-
+ global AssetWhereabouts(List < String > assetIdList) {
+ this.query = query;
+ this.assetIdList = assetIdList;
+ }
global Database.QueryLocator start(Database.BatchableContext bc) {
iflog = new BatchIF_Log__c();
iflog.Type__c = 'PushNotification';
iflog.Log__c = 'AssetWhereabouts start\n';
iflog.ErrorLog__c = '';
insert iflog;
- query = 'select id,Asset__c,Maintenance_Contract__c,Asset__r.CurrentContract__r.RecordType_Name__c,Asset__r.CurrentContract__r.Status__c'
- +' from Maintenance_Contract_Asset__c where Asset__r.AssetWhereabouts__c = null ';
+ query = 'select id,Asset__r.AssetWhereabouts__c,Maintenance_Contract__r.status__c ,Asset__r.id,Maintenance_Contract__r.id,endDateGurantee_Text__c '
+ +' from Maintenance_Contract_Asset__c where Maintenance_Contract__r.RecordType_Name__c =\'澶氬勾淇濅慨鍚堝悓\' and endDateGurantee_Text__c < :toDay and Asset__r.AssetWhereabouts__c!=\'鏈嶅姟鍚堝悓\'';
+ if (assetIdList != null && assetIdList.size() > 0) {
+ query += ' and Asset__c in :assetIdList ';
+ }
+ query += ' order by CreatedDate ';
return Database.getQueryLocator(query);
}
global void execute(Database.BatchableContext BC, list<Maintenance_Contract_Asset__c> mcaList) {
- List<Asset> Asslist = new List<Asset>();
- List<String> mcList = new List<String>();
- List<Repair__c> reList = [select id,Maintenance_Contract__c,Status1__c,DateReceiptQuestions__c
- from Repair__c
- where DateReceiptQuestions__c >= :toDay and Status1__c != '0.鍙栨秷' and Status1__c != '0.鍒犻櫎' and Maintenance_Contract__c != null];
- System.debug('reList=='+reList);
- for (Repair__c re: reList) {
- mcList.add(re.Maintenance_Contract__c);
+ Map<String,Asset> assMap = new Map<String,Asset>();
+ // 鐢ㄤ綔鏌ヨ鍚堝悓涓殑鏈嶅姟鍚堝悓
+ Set<String> assSet = new Set<String>();
+ Set<String> fuwuSet = new Set<String>();
+ // 鐢ㄤ綔鏌ヨ涓�鑸淮淇�
+ Set<String> weixiuSet = new Set<String>();
+ Map<String,Repair__c> mcMap = new Map<String,Repair__c>();
+ for (Maintenance_Contract_Asset__c mca: mcaList) {
+ assSet.add(mca.Asset__r.id);
+ weixiuSet.add(mca.Asset__r.id);
}
- System.debug('mcaList=='+mcaList );
+
+ // 鏌ヨ绗﹀悎鏉′欢鐨勪慨鐞�
+ List<Repair__c> reList = [select id,Maintenance_Contract__r.id,Status1__c,Failure_Occurrence_Date__c,CreatedDate,Delivered_Product__c
+ from Repair__c
+ where Status1__c != '0.鍙栨秷' and Status1__c != '0.鍒犻櫎' and Status2__c != '00.鍒犻櫎' and Status2__c != '00.鍙栨秷'
+ and Maintenance_Contract__c = null and Delivered_Product__c in :weixiuSet order by CreatedDate ];
+ for (Repair__c re: reList) {
+ if ( mcMap.get(re.Delivered_Product__c)==null) {
+ mcMap.put(re.Delivered_Product__c,re);
+ }
+ // 鍙栨渶杩戜竴鏈熺殑淇悊璁板綍
+ if( mcMap.get(re.Delivered_Product__c)!=null && re.CreatedDate>mcMap.get(re.Delivered_Product__c).CreatedDate){
+ mcMap.remove(re.Delivered_Product__c);
+ mcMap.put(re.Delivered_Product__c,re);
+ }
+ }
+ // 鏌ヨ鏄惁鏈夊悎鍚屼腑鐨勬湇鍔″悎鍚�
+ list<Maintenance_Contract_Asset__c> mcaList2 = [select Id,Asset__r.id from Maintenance_Contract_Asset__c
+ where Maintenance_Contract__r.RecordType_Name__c ='鏈嶅姟鍚堝悓'
+ and Maintenance_Contract__r.status__c ='濂戠磩' and Asset__c in :assSet];
+ for (Maintenance_Contract_Asset__c mca: mcaList2) {
+ fuwuSet.add(mca.Asset__r.id);
+ }
+
+
for (Maintenance_Contract_Asset__c mca: mcaList) {
Asset ass = new Asset();
- // System.debug('mca.Maintenance_Contract__r.RecordType_Name__c=='+mca.Maintenance_Contract__r.RecordType_Name__c);
- // System.debug('mca.Maintenance_Contract__r.Status__c=='+mca.Maintenance_Contract__r.Status__c);
- if (mca.Asset__r.CurrentContract__r.RecordType_Name__c == '鏈嶅姟鍚堝悓' && mca.Asset__r.CurrentContract__r.Status__c == '濂戠磩') {
- ass.id = mca.Asset__c;
+ Date PassDay = mca.endDateGurantee_Text__c.addyears(1);
+ Boolean isXiuli = false;
+ // 鍒ゆ柇淇悊鏄惁鏄湭鏉�1骞村唴
+ if (mcMap.get(mca.Asset__r.id)!=null &&mcMap.get(mca.Asset__r.id).Failure_Occurrence_Date__c>mca.endDateGurantee_Text__c && mcMap.get(mca.Asset__r.id).Failure_Occurrence_Date__c < PassDay) {
+ isXiuli = true;
+ }
+ // 鍘诲悜锛氭湇鍔″悎鍚� 鍏宠仈鐨勬墽琛屼腑鍚堝悓璁板綍涓恒�愭湇鍔″悎鍚屻�戠姸鎬佷负濂戠害
+ if (fuwuSet.contains(mca.Asset__r.id)) {
+ ass.id = mca.Asset__r.id;
ass.AssetWhereabouts__c = '鏈嶅姟鍚堝悓';
- if (!Asslist.contains(ass)) {
- Asslist.add(ass);
+ if (assMap.containsKey(ass.id)&&assMap.get(ass.id).AssetWhereabouts__c =='鍏朵粬') {
+ assMap.remove(ass.id);
+ assMap.put(ass.id,ass);
+ }else{
+ assMap.put(ass.id,ass);
}
}
- else if(mca.Asset__r.CurrentContract__r.Status__c != '濂戠磩' && mcList.contains(mca.Maintenance_Contract__c)){
+ // 鍘诲悜锛氫竴鑸淮淇�
+ else if(mca.Maintenance_Contract__r.status__c != '濂戠磩' && isXiuli){
ass.id = mca.Asset__c;
ass.AssetWhereabouts__c = '涓�鑸淮淇�';
- if (!Asslist.contains(ass)) {
- Asslist.add(ass);
- }
- } else{
+ if (assMap.containsKey(ass.id)&&assMap.get(ass.id).AssetWhereabouts__c =='鍏朵粬') {
+ assMap.remove(ass.id);
+ assMap.put(ass.id,ass);
+ }else{
+ assMap.put(ass.id,ass);
+ }
+ } else {
+ // 鍘诲悜锛氬叾浠�
ass.id = mca.Asset__c;
ass.AssetWhereabouts__c = '鍏朵粬';
- if (!Asslist.contains(ass)) {
- Asslist.add(ass);
+
+ if (!assMap.containsKey(ass.id)) {
+ assMap.put(ass.id,ass);
}
}
}
- if (Asslist!=null && Asslist.size()!= 0) {
- update Asslist;
+ system.debug('鏇存柊鏁版嵁='+assMap.values());
+ if (assMap.values()!=null && assMap.values().size()!= 0) {
+ update assMap.values();
}
}
global void finish(Database.BatchableContext BC) {
+
iflog.Log__c += '\nAssetWhereabouts end';
String tmp = iflog.ErrorLog__c;
integer i=0;
@@ -70,6 +120,19 @@
}
i++;
i++;
+ i++;
+ i++;
+ i++;
+ i++;
+ i++;
+ i++;
+ i++;
+ i++;
+ i++;
+ i++;
+ i++;
+ i++;
+ i++;
update iflog;
}
}
\ No newline at end of file
--
Gitblit v1.9.1