public without sharing class InquiryFormHandler extends Oly_TriggerHandler {
|
private Map<Id, Inquiry_form__c> newMap;
|
private Map<Id, Inquiry_form__c> oldMap;
|
private List<Inquiry_form__c> newList;
|
private List<Inquiry_form__c> oldList;
|
|
public InquiryFormHandler(){
|
|
this.newMap = (Map<Id, Inquiry_form__c>) Trigger.newMap;
|
this.oldMap = (Map<Id, Inquiry_form__c>) Trigger.oldMap;
|
this.newList = (List<Inquiry_form__c>) Trigger.new;
|
this.oldList = (List<Inquiry_form__c>) Trigger.old;
|
|
}
|
|
protected override void beforeInsert() {
|
beforeExecute();
|
//客户人员录入后,【电话】【邮箱】自动录入 thh 20220321 start
|
// getContactInformation();
|
//客户人员录入后,【电话】【邮箱】自动录入 thh 20220321 end
|
}
|
protected override void beforeUpdate() {
|
beforeExecute();
|
//客户人员录入后,【电话】【邮箱】自动录入 thh 20220321 start
|
// getContactInformation();
|
//客户人员录入后,【电话】【邮箱】自动录入 thh 20220321 end
|
}
|
|
protected override void afterInsert() {
|
//FSE主担当共享
|
shareToFSEMain();
|
}
|
|
protected override void afterUpdate() {
|
shareToFSEMain();
|
}
|
//Before処理
|
private void beforeExecute() {
|
Map<Id,Account> accMap = new Map<Id,Account>();
|
Inquiry_form__c oObj = null;
|
List<String> depIDList = new List<String>();
|
List<Account> accList = new List<Account>();
|
|
for(Inquiry_form__c nnObj : newList) {
|
if (oldMap != null && oldMap.containsKey(nnObj.Id)) {
|
oObj = oldMap.get(nnObj.Id);
|
}
|
if (String.isNotBlank(nnObj.Hospital_Name__c) && (Trigger.isInsert || oObj.Hospital_Name__c != nnObj.Hospital_Name__c || System.Label.Inquiry_form_flag == 'True')) {
|
depIDList.add(nnObj.Hospital_Name__c);
|
}
|
if (Trigger.isUpdate && String.isBlank(nnObj.Hospital_Name__c)){
|
nnObj.Depart_Owner__c = null; //战略科室所有人
|
nnObj.OwnerId = nnObj.CreatedById; //所有人
|
nnObj.Department_Class__c = null; //战略科室
|
nnObj.HospitalName__c = null; //医院名
|
nnObj.Hospital__c = null; //医院
|
}
|
//20220419 you SWAG-CBUB2W start
|
//公式考文本 给FSE担当赋值
|
System.debug(nnObj.FSE_Owner_id__c+'==123=='+nnObj.FSE_Owner__c);
|
if(nnObj.FSE_Owner_id__c != nnObj.FSE_Owner__c){
|
nnObj.FSE_Owner__c = nnObj.FSE_Owner_id__c;
|
}
|
if(Trigger.isInsert && (nnObj.Request1__c.indexOf('服务对应') !=-1 || nnObj.ServiceCorrespond__c ==true)){
|
nnObj.Service_Status__c ='01.未跟进';
|
}
|
//20220419 you SWAG-CBUB2W end
|
}
|
|
if (depIDList.size()>0) {
|
accList = [Select Id,OwnerId,
|
Hospital__c,Hospital__r.Name,
|
Department_Class__c
|
from Account where Id =: depIDList];
|
if (accList.size()>0) {
|
for(Account acc : accList){
|
accMap.put(acc.Id, acc);
|
}
|
}
|
}
|
|
for(Inquiry_form__c nObj : newList) {
|
if (accMap.containsKey(nObj.Hospital_Name__c)){
|
nObj.Depart_Owner__c = accMap.get(nObj.Hospital_Name__c).OwnerId; //战略科室所有人
|
nObj.OwnerId = accMap.get(nObj.Hospital_Name__c).OwnerId; //所有人
|
nObj.Department_Class__c = accMap.get(nObj.Hospital_Name__c).Department_Class__c; //战略科室
|
nObj.HospitalName__c = accMap.get(nObj.Hospital_Name__c).Hospital__r.Name; //医院名
|
nObj.Hospital__c = accMap.get(nObj.Hospital_Name__c).Hospital__c; //医院
|
}
|
|
//产品信息的拼接
|
if (String.isNotBlank(nObj.Product1__c) && String.isNotBlank(nObj.Product1_Manual__c)){
|
nObj.Product1__c = nObj.Product1__c +';'+nObj.Product1_Manual__c;
|
}else if (String.isBlank(nObj.Product1__c) && String.isNotBlank(nObj.Product1_Manual__c)){
|
nObj.Product1__c = nObj.Product1_Manual__c;
|
}else if (String.isNotBlank(nObj.Product1__c) && String.isBlank(nObj.Product1_Manual__c)) {
|
nObj.Product1__c = nObj.Product1__c;
|
}else {
|
nObj.Product1__c = '';
|
}
|
|
//产品咨询单名称
|
if (String.isNotBlank(nObj.Product1__c)&& String.isNotBlank(nObj.HospitalName__c)){
|
nObj.Name = nObj.HospitalName__c+'-'+nObj.Product1__c;
|
}else if (String.isBlank(nObj.HospitalName__c)&& String.isNotBlank(nObj.Product1__c)) {
|
nObj.Name = nObj.Product1__c;
|
}else if (String.isNotBlank(nObj.HospitalName__c)&& String.isBlank(nObj.Product1__c)){
|
nObj.Name = nObj.HospitalName__c;
|
}else{
|
nObj.Name = '*';
|
}
|
|
nObj.Product1_Manual__c = '';
|
}
|
}
|
//20220419 you SWAG-CBUB2W start
|
private void shareToFSEMain() {
|
//存放用于新增的共享数据
|
List<Inquiry_form__Share> insertList = new List<Inquiry_form__Share>();
|
//存放(产品咨询单id,共享对象)
|
Map<Id,Inquiry_form__Share> insertMap = new Map<Id,Inquiry_form__Share>();
|
//存放最后需要新增的共享数据
|
List<Inquiry_form__Share> lastInsertList = new List<Inquiry_form__Share>();
|
//存放已有的相同的共享原因的数据
|
List<Id> deleteTargetAOIdList = new List<Id>();
|
//存放用于的id
|
List<Id> userIdList = new List<Id>();
|
// String rowCause = 'Manual';
|
//新增一个共享原因
|
String rowCause = Schema.Inquiry_form__Share.RowCause.FSE_Owner_c_User__c;
|
System.debug('rowCause:'+rowCause);
|
String ownerCause = 'Owner';
|
//Apex共有の理由名OCSM_Owner_c_User
|
for(Inquiry_form__c nObj : newList) {
|
Inquiry_form__c oObj = null;
|
System.debug('FSE主担当:'+nObj.FSE_Owner__c);
|
if (oldMap != null && oldMap.containsKey(nObj.Id)) {
|
oObj = oldMap.get(nObj.Id);
|
}
|
|
|
if ( nObj.FSE_Owner__c != null && (oObj == null || oObj.FSE_Owner__c != nObj.FSE_Owner__c)) {
|
Inquiry_form__Share aos = new Inquiry_form__Share(
|
RowCause = rowCause,
|
ParentId = nObj.Id,
|
UserOrGroupId = nObj.FSE_Owner__c,
|
AccessLevel = 'Edit');
|
//存放要新增的共享数据
|
insertList.add(aos);
|
System.debug('key:'+nObj.Id);
|
//存放(产品咨询单id,共享对象);
|
insertMap.put(nObj.Id,aos);
|
//存放用户id 用作检索条件
|
userIdList.add(nObj.FSE_Owner__c);
|
}
|
if(oObj != null && oObj.FSE_Owner__c != nObj.FSE_Owner__c){
|
deleteTargetAOIdList.add(nObj.Id);
|
}
|
}
|
System.debug('insertList:'+insertList);
|
System.debug('insertMap1:'+insertMap);
|
System.debug('IDlIST:'+deleteTargetAOIdList);
|
// 先 Delete 后 Insert
|
if (deleteTargetAOIdList.size() > 0) {
|
List<Inquiry_form__Share> deleteList = [SELECT Id
|
FROM Inquiry_form__Share
|
WHERE RowCause = :rowCause
|
AND ParentId IN :deleteTargetAOIdList
|
];
|
delete deleteList;
|
}
|
//判断需要共享的人 是不是创建人 如果是则说明有一条这个人的owner数据 则不新增
|
if (insertMap!= null) {
|
List<Inquiry_form__Share> ownerList = [SELECT Id,ParentId,UserOrGroupId
|
FROM Inquiry_form__Share
|
WHERE RowCause = :ownerCause
|
AND ParentId IN :insertMap.keySet()
|
AND UserOrGroupId IN :userIdList
|
];
|
System.debug('ownerList:'+ownerList);
|
if(ownerList.size() > 0){
|
for( Inquiry_form__Share inq:ownerList){
|
String id = String.valueOf(inq.ParentId);
|
System.debug('id:'+id);
|
if(insertMap.containsKey(id)){
|
insertMap.remove(inq.ParentId);
|
}
|
}
|
}
|
|
}
|
System.debug('insertMap2:'+insertMap);
|
|
if(insertMap != null){
|
for(Inquiry_form__Share inquiry : insertMap.values()){
|
lastInsertList.add(inquiry);
|
}
|
}
|
|
|
System.debug('共享内容:' +lastInsertList);
|
if(lastInsertList.size() > 0){
|
insert lastInsertList;
|
}
|
|
}
|
//20220419 you SWAG-CBUB2W end
|
|
//客户人员录入后,【电话】【邮箱】自动录入 thh 20220321 start
|
// private void getContactInformation(){
|
// List<String> ContactIdList = new List<String>();
|
// List<Contact> ContactList = new List<Contact>();
|
// Map<String, Contact> ContactMap = new Map<String, Contact>();
|
// for(Inquiry_form__c nnObj : newList) {
|
// if(String.isNotBlank(nnObj.Contact_Name__c)){
|
// ContactIdList.add(nnObj.Contact_Name__c);
|
// }
|
// }
|
// if(ContactIdList.size() > 0){
|
// ContactList = [select id, Phone, Email from Contact where Id IN :ContactIdList];
|
// for(Contact contact : ContactList){
|
// ContactMap.put(contact.Id, contact);
|
// }
|
// }
|
// for(Inquiry_form__c nnObj : newList) {
|
// if(String.isNotBlank(nnObj.Contact_Name__c)){
|
// if(String.isNotBlank(ContactMap.get(nnObj.Contact_Name__c).Phone)){
|
// nnObj.Phone__c = ContactMap.get(nnObj.Contact_Name__c).Phone;
|
// }
|
// if(String.isNotBlank(ContactMap.get(nnObj.Contact_Name__c).Email)){
|
// nnObj.Email__c = ContactMap.get(nnObj.Contact_Name__c).Email;
|
// }
|
// }
|
// }
|
// }
|
//客户人员录入后,【电话】【邮箱】自动录入 thh 20220321 end
|
|
// 战略科室的主担当 を取得、Inquiry_form__Shareに設定(Read)
|
// private void shareToOSCM() {
|
// //存放用于新增的共享数据
|
// List<Inquiry_form__Share> insertList = new List<Inquiry_form__Share>();
|
// //存放(会议询问单id,共享对象)
|
// Map<Id,Inquiry_form__Share> insertMap = new Map<Id,Inquiry_form__Share>();
|
// //存放最后需要新增的共享数据
|
// List<Inquiry_form__Share> lastInsertList = new List<Inquiry_form__Share>();
|
// //存放已有的相同的共享原因的数据
|
// List<Id> deleteTargetAOIdList = new List<Id>();
|
// //存放用于的id
|
// List<Id> userIdList = new List<Id>();
|
// // String rowCause = 'Manual';
|
// //新增一个共享原因
|
// String rowCause = Schema.Inquiry_form__Share.RowCause.OCSM_Owner_c_User__c;
|
// System.debug('rowCause:'+rowCause);
|
// String ownerCause = 'Owner';
|
// //Apex共有の理由名OCSM_Owner_c_User
|
// for(Inquiry_form__c nObj : newList) {
|
// Inquiry_form__c oObj = null;
|
// System.debug('战略科室担当:'+nObj.Depart_Owner__c);
|
// if (oldMap != null && oldMap.containsKey(nObj.Id)) {
|
// oObj = oldMap.get(nObj.Id);
|
// }
|
|
|
// if ( nObj.Depart_Owner__c != null && (oObj == null || oObj.Depart_Owner__c != nObj.Depart_Owner__c)) {
|
// Inquiry_form__Share aos = new Inquiry_form__Share(
|
// RowCause = rowCause,
|
// ParentId = nObj.Id,
|
// UserOrGroupId = nObj.Depart_Owner__c,
|
// AccessLevel = 'Edit');
|
// //存放要新增的共享数据
|
// insertList.add(aos);
|
// System.debug('key:'+nObj.Id);
|
// //存放(会议询问单id,共享对象);
|
// insertMap.put(nObj.Id,aos);
|
// //存放用户id 用作检索条件
|
// userIdList.add(nObj.Depart_Owner__c);
|
// if (oObj != null && oObj.Depart_Owner__c != nObj.Depart_Owner__c) {
|
// deleteTargetAOIdList.add(nObj.Id);
|
// }
|
// }
|
// }
|
// System.debug('insertList:'+insertList);
|
// System.debug('insertMap1:'+insertMap);
|
// System.debug('IDlIST:'+deleteTargetAOIdList);
|
// // 先 Delete 后 Insert
|
// if (deleteTargetAOIdList.size() > 0) {
|
// List<Inquiry_form__Share> deleteList = [SELECT Id
|
// FROM Inquiry_form__Share
|
// WHERE RowCause = :rowCause
|
// AND ParentId IN :deleteTargetAOIdList
|
// ];
|
// delete deleteList;
|
// }
|
// //判断需要共享的人 是不是创建人 如果是则说明有一条这个人的owner数据 则不新增
|
// if (insertMap!= null) {
|
// List<Inquiry_form__Share> ownerList = [SELECT Id,ParentId,UserOrGroupId
|
// FROM Inquiry_form__Share
|
// WHERE RowCause = :ownerCause
|
// AND ParentId IN :insertMap.keySet()
|
// AND UserOrGroupId IN :userIdList
|
// ];
|
// System.debug('ownerList:'+ownerList);
|
// if(ownerList.size() > 0){
|
// for( Inquiry_form__Share inq:ownerList){
|
// String id = String.valueOf(inq.ParentId);
|
// System.debug('id:'+id);
|
// if(insertMap.containsKey(id)){
|
// insertMap.remove(inq.ParentId);
|
// }
|
// }
|
// }
|
|
// }
|
// System.debug('insertMap2:'+insertMap);
|
|
// if(insertMap != null){
|
// for(Inquiry_form__Share inquiry : insertMap.values()){
|
// lastInsertList.add(inquiry);
|
// }
|
// }
|
|
|
// System.debug('共享内容:' +lastInsertList);
|
// if(lastInsertList.size() > 0){
|
// insert lastInsertList;
|
// }
|
|
// }
|
}
|