public without sharing class AccountDelayApplyHandler extends Oly_TriggerHandler {
|
private Map<Id, Account_Delay_Apply__c> newMap;
|
private Map<Id, Account_Delay_Apply__c> oldMap;
|
private List<Account_Delay_Apply__c> newList;
|
private List<Account_Delay_Apply__c> oldList;
|
|
public AccountDelayApplyHandler() {
|
this.newMap = (Map<Id, Account_Delay_Apply__c>) Trigger.newMap;
|
this.oldMap = (Map<Id, Account_Delay_Apply__c>) Trigger.oldMap;
|
this.newList = (List<Account_Delay_Apply__c>) Trigger.new;
|
this.oldList = (List<Account_Delay_Apply__c>) Trigger.old;
|
}
|
|
protected override void beforeInsert(){
|
// OpenWindow();
|
|
OpenWindow1();
|
}
|
protected override void afterInsert(){
|
MultiOption();
|
}
|
protected override void beforeUpdate(){
|
MultiOption();
|
setColumn();
|
// OpenWindow();
|
CustomizePageJudge();
|
}
|
protected override void afterUpdate(){
|
MultiOption();
|
setAccColumn();
|
}
|
|
//多选项数据统计
|
private void MultiOption(){
|
//创建参数 key:Sobject对象 value:发生改变的选项列表字段集合 (哪个选项列表发生变化就把哪个当做参数)
|
Map<SObject,List<String>> data = new Map<SObject,List<String>>();
|
for (Account_Delay_Apply__c ada : newList) {
|
List<String> columsList = new List<String>();
|
Account_Delay_Apply__c oldada = null;
|
if (Trigger.isUpdate) {
|
oldada = oldMap.get(ada.Id);
|
}
|
|
//变更理由(可多选)
|
if (oldada == null || oldada.ChangeReason__c != ada.ChangeReason__c) {
|
columsList.add('ChangeReason__c');
|
}
|
|
data.put(ada, columsList);
|
}
|
|
SplitOptionListUtil util = new SplitOptionListUtil();
|
util.makeObject(data);
|
|
}
|
|
// //营业窗口
|
// private void OpenWindow(){
|
// Map<String, OCM_Management_Province__c> mpMap = new Map<String, OCM_Management_Province__c>();
|
// Set<String> accOCSMset = new Set<String>();
|
|
// for(Account_Delay_Apply__c ada1 : newList){
|
// Account_Delay_Apply__c oldada1 = null;
|
// if(Trigger.isUpdate){
|
|
// oldada1 = oldMap.get(ada1.Id);
|
|
// if(ada1.OCM_man_province_HP__c != oldada1.OCM_man_province_HP__c){
|
// accOCSMset.add(ada1.OCM_man_province_HP__c);
|
// }
|
// }
|
// if(Trigger.isInsert){
|
// accOCSMset.add(ada1.OCM_man_province_HP__c);
|
// }
|
|
// }
|
|
// if(null !=accOCSMset){
|
// List<OCM_Management_Province__c> mpList =
|
// [select id, Name, Window1__c from OCM_Management_Province__c where Name =: accOCSMset];
|
|
// for (OCM_Management_Province__c mp : mpList) {
|
// mpMap.put(mp.Name, mp);
|
// }
|
// }
|
|
// for(Account_Delay_Apply__c ada2 : newList){
|
// if(Trigger.isInsert || Trigger.isUpdate){
|
// if(null!=mpMap && mpMap.containsKey(ada2.OCM_man_province_HP__c)){
|
// OCM_Management_Province__c omp = mpMap.get(ada2.OCM_man_province_HP__c);
|
// if (omp != null) {
|
// ada2.OpenWindow__c = omp.Window1__c;
|
// }
|
// }
|
// }
|
|
// }
|
|
// }
|
|
//营业窗口
|
private void OpenWindow1(){
|
Map<String, OCM_Management_Province__c> mpMap = new Map<String, OCM_Management_Province__c>();
|
List<OCM_Management_Province__c> mpList = new List<OCM_Management_Province__c>();
|
Set<String> accId = new Set<String>();
|
Set<String> accOCSMset = new Set<String>();
|
|
for(Account_Delay_Apply__c ada1 : newList){
|
Account_Delay_Apply__c oldada1 = null;
|
if(Trigger.isInsert){
|
accId.add(ada1.Hospital__c);
|
}
|
|
}
|
|
if(accId.size() > 0){
|
List<Account> accList = [SELECT Id, Name, OCM_man_province_HP__c
|
FROM Account
|
WHERE id in :accId];
|
for(Account acc : accList){
|
accOCSMset.add(acc.OCM_man_province_HP__c);
|
}
|
|
}
|
|
if(null !=accOCSMset){
|
mpList = [select id, Name, Window1__c from OCM_Management_Province__c where Name =: accOCSMset];
|
}
|
|
for(Account_Delay_Apply__c ada2 : newList){
|
for(OCM_Management_Province__c omp : mpList){
|
if(Trigger.isInsert){
|
ada2.OpenWindow__c = omp.Window1__c;
|
}
|
}
|
}
|
|
}
|
|
//提交时设置old字段的值
|
private void setColumn(){
|
|
List<String> accIds = new List<String>();
|
List<Account_Delay_Apply__c> alist = new List<Account_Delay_Apply__c>();
|
|
for (Account_Delay_Apply__c ada :newList ) {
|
//判断更新前后的状态(是否有效)是否不同 若不同,则判断更新后的状态是否为'审批中'
|
if ((ada.Is_Active__c != oldMap.get(ada.Id).Is_Active__c) && ada.Is_Active__c == '申请中' ) {
|
alist.add(ada);
|
accIds.add(ada.Hospital__c);
|
}
|
}
|
if (accIds.size() == 0) {
|
return;
|
}else{
|
Map<String,Account> accMap = new Map<String,Account>();
|
List<Account> statusList = [SELECT Id, Name, Website, Site,
|
Is_Active__c, Feature__c, Attribute_Type__c, Speciality_Type__c,
|
Abbreviation__c, Street__c, City_Master__c, Field3_companyname__c,
|
State_Master__c, Grade__c, Address__c, Alias_Name2__c,
|
// Including_departments__c,
|
// 2023-12-14 WYL add start
|
Sparepartsdeliveryaddress1__c,Sparepartsdeliveryaddress2__c,Sparepartsdeliveryaddress3__c,Sparepartsdeliveryaddress4__c,Sparepartsdeliveryaddress5__c,
|
Sparepartsdeliveryaddress6__c,Sparepartsdeliveryaddress7__c,Sparepartsdeliveryaddress8__c,Sparepartsdeliveryaddress9__c,Sparepartsdeliveryaddress10__c,
|
// 2023-12-14 WYL add end
|
Town__c, Postal_Code__c
|
FROM Account
|
WHERE id in :accIds];
|
|
for (Account acc :statusList ) {
|
accMap.put(acc.Id, acc);
|
}
|
|
for (Account_Delay_Apply__c ada : alist) {
|
ada.Feature_old__c = accMap.get(ada.Hospital__c).Feature__c;
|
ada.Attribute_Type_old__c = accMap.get(ada.Hospital__c).Attribute_Type__c;
|
ada.Speciality_Type_old__c = accMap.get(ada.Hospital__c).Speciality_Type__c;
|
ada.Abbreviation_old__c = accMap.get(ada.Hospital__c).Abbreviation__c;
|
ada.Street_old__c = accMap.get(ada.Hospital__c).Street__c;
|
ada.HospitalName_old__c = accMap.get(ada.Hospital__c).Name;
|
ada.City_Master_old__c = accMap.get(ada.Hospital__c).City_Master__c;
|
ada.Field3_companyname_old__c = accMap.get(ada.Hospital__c).Field3_companyname__c;
|
ada.State_Master_old__c = accMap.get(ada.Hospital__c).State_Master__c;
|
ada.Grade_old__c = accMap.get(ada.Hospital__c).Grade__c;
|
//ada.Address_Together_old__c = accMap.get(ada.Hospital__c).Address__c;
|
ada.Website_old__c = accMap.get(ada.Hospital__c).Website;
|
ada.Site_old__c = accMap.get(ada.Hospital__c).Site;
|
ada.Alias_Name2_old__c = accMap.get(ada.Hospital__c).Alias_Name2__c;
|
ada.Town_old__c = accMap.get(ada.Hospital__c).Town__c;
|
ada.Postal_Code_old__c = accMap.get(ada.Hospital__c).Postal_Code__c;
|
// ada.Including_departments_old__c = accMap.get(ada.Hospital__c).Including_departments__c;
|
// 2023-12-14 WYL add start
|
ada.Sparepartsdeliveryaddress1_old__c = accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress1__c;
|
ada.Sparepartsdeliveryaddress2_old__c = accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress2__c;
|
ada.Sparepartsdeliveryaddress3_old__c = accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress3__c;
|
ada.Sparepartsdeliveryaddress4_old__c = accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress4__c;
|
ada.Sparepartsdeliveryaddress5_old__c = accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress5__c;
|
ada.Sparepartsdeliveryaddress6_old__c = accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress6__c;
|
ada.Sparepartsdeliveryaddress7_old__c = accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress7__c;
|
ada.Sparepartsdeliveryaddress8_old__c = accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress8__c;
|
ada.Sparepartsdeliveryaddress9_old__c = accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress9__c;
|
ada.Sparepartsdeliveryaddress10_old__c = accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress10__c;
|
// 2023-12-14 WYL add end
|
}
|
|
// for (Account acc : statusList) {
|
// acc.Status = '申请中';
|
// }
|
system.debug('更新客戶1');
|
update statusList;
|
}
|
|
}
|
|
//变更有效时反写客户
|
private void setAccColumn(){
|
|
List<String> accIds = new List<String>();
|
List<String> adaIds = new List<String>();
|
// List<Account_Delay_Apply__c> alist = new List<Account_Delay_Apply__c>();
|
// List<Account> acclist = new List<Account>();
|
List<Account> updacclist = new List<Account>();
|
|
for (Account_Delay_Apply__c ada :newList ) {
|
//判断更新前后的状态(是否有效)是否不同 若不同,则判断更新后的状态是否为'审批中'
|
if ((ada.Is_Active__c != oldMap.get(ada.Id).Is_Active__c) && ada.Is_Active__c == '审批通过' ) {
|
// alist.add(ada);
|
adaIds.add(ada.Id);
|
accIds.add(ada.Hospital__c);
|
}
|
}
|
if (accIds.size() == 0) {
|
return;
|
}else{
|
Map<String,Account> accMap = new Map<String,Account>();
|
List<Account> statusList = [SELECT Id, Name, Website, Site,
|
Is_Active__c, Feature__c, Attribute_Type__c, Speciality_Type__c,
|
Abbreviation__c, Street__c, City_Master__c, Field3_companyname__c,
|
State_Master__c, Grade__c, Address__c, Alias_Name2__c,
|
//2023-10-15 新增 WYL DB202306499625 start
|
// Including_departments__c,
|
// BF_owner__c,
|
// GYN_owner__c,
|
// SP_Main__c,
|
// URO_owner_ID__c,
|
// GI_Main__c,
|
// ENT_owner_ID__c,
|
//2023-10-15 新增 WYL DB202306499625 end
|
// 2023-12-14 WYL add start
|
Sparepartsdeliveryaddress1__c,Sparepartsdeliveryaddress2__c,Sparepartsdeliveryaddress3__c,Sparepartsdeliveryaddress4__c,Sparepartsdeliveryaddress5__c,
|
Sparepartsdeliveryaddress6__c,Sparepartsdeliveryaddress7__c,Sparepartsdeliveryaddress8__c,Sparepartsdeliveryaddress9__c,Sparepartsdeliveryaddress10__c,
|
//2023-12-14 WYL add end
|
Town__c, Postal_Code__c, HospitalType__c, InstitutionalType__c,WhetherRiskPassing__c,IsUnlock__c
|
FROM Account
|
WHERE id in :accIds];
|
|
List<Account_Delay_Apply__c> adastatusList = [SELECT Id, Name, Website__c, Site__c,
|
Is_Active__c, Feature__c, Attribute_Type__c, Speciality_Type__c,
|
Abbreviation__c, Street__c, City_Master__c, Field3_companyname__c,
|
State_Master__c, Grade__c, Alias_Name2__c,
|
Town__c, Postal_Code__c, HospitalName__c, Hospital__c,
|
HospitalType__c, InstitutionalType__c,WhetherRiskPassing__c
|
// Including_departments__c
|
// 2023-12-14 WYL add start
|
,Sparepartsdeliveryaddress1__c,Sparepartsdeliveryaddress2__c,Sparepartsdeliveryaddress3__c,Sparepartsdeliveryaddress4__c,Sparepartsdeliveryaddress5__c
|
,Sparepartsdeliveryaddress6__c,Sparepartsdeliveryaddress7__c,Sparepartsdeliveryaddress8__c,Sparepartsdeliveryaddress9__c,Sparepartsdeliveryaddress10__c
|
//2023-12-14 WYL add end
|
FROM Account_Delay_Apply__c
|
WHERE id in :adaIds];
|
|
for (Account acc :statusList ) {
|
accMap.put(acc.Id, acc);
|
}
|
|
for (Account_Delay_Apply__c ada : adastatusList) {
|
accMap.get(ada.Hospital__c).Feature__c = ada.Feature__c;
|
accMap.get(ada.Hospital__c).Attribute_Type__c = ada.Attribute_Type__c;
|
accMap.get(ada.Hospital__c).Speciality_Type__c = ada.Speciality_Type__c;
|
accMap.get(ada.Hospital__c).Abbreviation__c = ada.Abbreviation__c;
|
accMap.get(ada.Hospital__c).Street__c = ada.Street__c;
|
accMap.get(ada.Hospital__c).Name = ada.HospitalName__c;
|
accMap.get(ada.Hospital__c).City_Master__c = ada.City_Master__c;
|
accMap.get(ada.Hospital__c).Field3_companyname__c = ada.Field3_companyname__c;
|
accMap.get(ada.Hospital__c).State_Master__c = ada.State_Master__c;
|
accMap.get(ada.Hospital__c).Grade__c = ada.Grade__c;
|
// accMap.get(ada.Hospital__c).Address__c = ada.Address_Together__c;
|
accMap.get(ada.Hospital__c).Website = ada.Website__c;
|
accMap.get(ada.Hospital__c).Site = ada.Site__c;
|
accMap.get(ada.Hospital__c).Alias_Name2__c = ada.Alias_Name2__c;
|
accMap.get(ada.Hospital__c).Town__c = ada.Town__c;
|
accMap.get(ada.Hospital__c).Postal_Code__c = ada.Postal_Code__c;
|
accMap.get(ada.Hospital__c).HospitalType__c = ada.HospitalType__c;
|
accMap.get(ada.Hospital__c).InstitutionalType__c = ada.InstitutionalType__c;
|
accMap.get(ada.Hospital__c).WhetherRiskPassing__c= ada.WhetherRiskPassing__c;
|
// 2023-10-15 医院担当 WYL DB202306499625 start
|
// accMap.get(ada.Hospital__c).Including_departments__c = ada.Including_departments__c;
|
// accMap.get(ada.Hospital__c).BF_owner__c=Includes_department_user_authentication(ada.Including_departments__c, 'BF',accMap.get(ada.Hospital__c).BF_owner__c);
|
// accMap.get(ada.Hospital__c).GYN_owner__c=Includes_department_user_authentication(ada.Including_departments__c, 'GYN',accMap.get(ada.Hospital__c).GYN_owner__c);
|
// accMap.get(ada.Hospital__c).SP_Main__c=Includes_department_user_authentication(ada.Including_departments__c, 'SP',accMap.get(ada.Hospital__c).SP_Main__c);
|
// accMap.get(ada.Hospital__c).URO_owner_ID__c=Includes_department_user_authentication(ada.Including_departments__c, 'URO',accMap.get(ada.Hospital__c).URO_owner_ID__c);
|
// accMap.get(ada.Hospital__c).GI_Main__c=Includes_department_user_authentication(ada.Including_departments__c, 'GI',accMap.get(ada.Hospital__c).GI_Main__c);
|
// accMap.get(ada.Hospital__c).ENT_owner_ID__c = Includes_department_user_authentication(ada.Including_departments__c, 'ENT',accMap.get(ada.Hospital__c).ENT_owner_ID__c);
|
// 2023-10-15 医院担当 WYL DB202306499625 end
|
// 2023-12-14 WYL add start
|
accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress1__c = ada.Sparepartsdeliveryaddress1__c;
|
accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress2__c = ada.Sparepartsdeliveryaddress2__c;
|
accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress3__c = ada.Sparepartsdeliveryaddress3__c;
|
accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress4__c = ada.Sparepartsdeliveryaddress4__c;
|
accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress5__c = ada.Sparepartsdeliveryaddress5__c;
|
accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress6__c = ada.Sparepartsdeliveryaddress6__c;
|
accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress7__c = ada.Sparepartsdeliveryaddress7__c;
|
accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress8__c = ada.Sparepartsdeliveryaddress8__c;
|
accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress9__c = ada.Sparepartsdeliveryaddress9__c;
|
accMap.get(ada.Hospital__c).Sparepartsdeliveryaddress10__c = ada.Sparepartsdeliveryaddress10__c;
|
// 2023-12-14 WYL add end
|
accMap.get(ada.Hospital__c).IsUnlock__c= true; //跳过验证规则
|
system.debug('原数据==='+accMap.get(ada.Hospital__c).IsUnlock__c);
|
updacclist.add(accMap.get(ada.Hospital__c));
|
|
}
|
//if(updacclist.size() > 0){
|
// update updacclist;
|
//}
|
if(updacclist.size()>0){
|
//一个客户更新失败
|
List<String> failedaccList = new List<String>();
|
system.debug('更新客戶3');
|
Database.SaveResult[] saveAccResults = Database.update(updacclist,false);
|
for(Integer i = 0;i<saveAccResults.size();i++) {
|
if(!saveAccResults.get(i).isSuccess() ){
|
//将更新失败的客户添加到集合中
|
failedaccList.add(String.valueOf( updacclist.get(i).id ).substring(0,15));
|
}
|
}
|
|
//更新成功后,清除客户上的 是否解锁
|
List<Account> successAccList = new List<Account>();
|
for(Account statusacc:statusList){
|
if(failedaccList.contains( String.valueOf( statusacc.id ).substring(0,15) )){
|
system.debug('更新失败=='+saveAccResults);
|
//更新失败,则不清除标识
|
}else {
|
system.debug('清除标识==='+statusacc.IsUnlock__c);
|
//更新成功,清除标识
|
statusacc.IsUnlock__c = false;
|
successAccList.add(statusacc);
|
}
|
}
|
|
//清除标识
|
if(successAccList.size()>0){
|
system.debug('更新客戶2');
|
update successAccList;
|
}
|
|
}
|
|
}
|
|
}
|
|
public void CustomizePageJudge(){
|
|
for (Account_Delay_Apply__c ada : newList){
|
System.debug('lt123-----new审批步骤-----'+ada.ApprovalSteps__c);
|
System.debug('lt123-----old审批步骤-----'+oldMap.get(ada.Id).ApprovalSteps__c);
|
if(ada.ApprovalSteps__c != oldMap.get(ada.Id).ApprovalSteps__c){
|
System.debug('lt123-----审批步骤改变-----');
|
if(ada.CustomizePageFlg__c == true){
|
System.debug('lt123-----ada.CustomizePageFlg__c-----'+ada.CustomizePageFlg__c);
|
ada.CustomizePageFlg__c = false;
|
}else{
|
System.debug('lt123-----else,ada.CustomizePageFlg__c-----'+ada.CustomizePageFlg__c);
|
// ada.addError('请点击进入客户详情页面,在‘批准历史’栏目下进行批准或拒绝操作');
|
ada.addError('请点击链接(相关项)确认具体信息后审批。');
|
}
|
}
|
}
|
}
|
// 2023-10-15 WYL 新增 DB202306499625 start
|
// public String Includes_department_user_authentication(String Including_departments,String ksdd,String user_Id){
|
// Map<String, String> ddMaps = new Map<String, String>();
|
// ddMaps.put('GI', '消化科');
|
// ddMaps.put('BF', '呼吸科');
|
// ddMaps.put('SP', '普外科');
|
// ddMaps.put('URO', '泌尿科');
|
// ddMaps.put('GYN', '妇科');
|
// ddMaps.put('ENT', '耳鼻喉科');
|
// if (Including_departments.contains(ddMaps.get(ksdd))) {
|
// return user_Id;
|
// }
|
// return '00510000000fSYI';
|
// }
|
// 2023-10-15 WYL 新增 DB202306499625 end
|
}
|