public without sharing class AttachmentTriggerHandler { public static void fileCheck(List newList, Map newMap, List oldList, Map oldMap) { List orderIdList = new List(); List orderIdList2 = new List(); for (Attachment newAtt : newList) { String parentId = newAtt.parentId; String name = newAtt.Name; if (parentId.startsWith('801') && name.startsWith('ORDER-')) { orderIdList.add(newAtt.parentId); } if (parentId.startsWith('801')) { orderIdList2.add(newAtt.parentId); } } Map isUploadMap = new Map(); Map draftMap = new Map(); Map submitMap = new Map(); Map passMap = new Map(); if (orderIdList.size() > 0) { List orderList = [select id,IsUpload__c,ApproveStatus__c from Order where id = :orderIdList]; for (Order o : orderList) { if (o.IsUpload__c) { isUploadMap.put(o.Id, o.Id); } if (o.ApproveStatus__c == 'Draft' || o.ApproveStatus__c == 'Completed' || o.ApproveStatus__c == 'Reject') { draftMap.put(o.Id, o.Id); } } } if (orderIdList2.size() > 0) { List orderList2 = [select id,IsUpload__c,ApproveStatus__c,IsOrderPassed__c from Order where id = :orderIdList2]; for (Order o : orderList2) { if (o.ApproveStatus__c == 'Submit' || o.ApproveStatus__c == 'OrderSubmit') { submitMap.put(o.Id, o.Id); } if (o.IsOrderPassed__c) { passMap.put(o.Id, o.Id); } } } //新的获取人员简档ID 获取到的ID是15位 // String profileId = UserInfo.getProfileId().substring(0, 15); String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); for (Attachment newAtt : newList) { // if (UserInfo.getProfileId() != System.Label.SystemAdmin && passMap.containsKey(newAtt.parentId) // && UserInfo.getProfileId() != System.Label.Business_department) { // newAtt.addError('合同批准后不能更改附件。'); // } if (new_profileId != System.Label.Business_department && new_profileId != System.Label.SystemAdmin && submitMap.containsKey(newAtt.parentId)) { newAtt.addError('合同被锁定,不能上传附件。'); } if (isUploadMap.containsKey(newAtt.parentId)) { newAtt.addError('合同附件已经存在,不能上传多个。'); } if (draftMap.containsKey(newAtt.parentId)) { newAtt.addError('请先审批完特殊条件再提交合同文件。'); } } } //禁止上传多个收货确认单和装机确认单 public static void fileCheck5(List newList, Map newMap, List oldList, Map oldMap) { List lacIdList1 = new List(); List lacIdList2 = new List(); List lacIdList3 = new List(); List lacIdList4 = new List(); for (Attachment newAtt : newList) { String parentId = newAtt.parentId; String name = newAtt.Name; if (parentId.startsWith('a0Q') && name.startsWith('收货确认-')) { lacIdList1.add(newAtt.parentId); } if(parentId.startsWith('a0Q') && name.startsWith('装机确认')){ lacIdList2.add(newAtt.parentId); } if(parentId.startsWith('a0Q') && (name.startsWith('借用协议') || name.startsWith('借用单') || name.startsWith('DeliveryConfirmPDF'))){ lacIdList3.add(newAtt.parentId); } if(parentId.startsWith('a0Q') && name.startsWith('转借确认')){ lacIdList4.add(newAtt.parentId); } } Map isUploadMap1 = new Map(); Map isUploadMap2 = new Map(); Map isUploadMap3 = new Map(); Map isUploadMap4 = new Map(); if(lacIdList1.size()>0){ List lacList1 = [select id,Receipt_Attachment__c from loaner_application__c where id = :lacIdList1]; for(loaner_application__c lac :lacList1){ if(lac.Receipt_Attachment__c){ isUploadMap1.put(lac.Id, lac.Id); } } } if(lacIdList2.size()>0){ List lacList2 = [select id,Installation_Qualification_Attachment__c from loaner_application__c where id = :lacIdList2]; for(loaner_application__c lac : lacList2){ if(lac.Installation_Qualification_Attachment__c){ isUploadMap2.put(lac.Id, lac.Id); } } } if(lacIdList3.size()>0){ List lacList3 = [select id,Loaner_AgreementPDF__c from loaner_application__c where id = :lacIdList3]; for(loaner_application__c lac : lacList3){ if(lac.Loaner_AgreementPDF__c){ isUploadMap3.put(lac.Id, lac.Id); } } } if(lacIdList4.size()>0){ List lacList4 = [select id,Loaner_Confirm_Photo__c from loaner_application__c where id = :lacIdList4]; for(loaner_application__c lac : lacList4){ if(lac.Loaner_Confirm_Photo__c){ isUploadMap4.put(lac.Id, lac.Id); } } } for(Attachment newAtt : newList){ if(isUploadMap1.containsKey(newAtt.parentId)){ newAtt.addError('收货确认附件已经存在,不能上传多个。'); } if(isUploadMap2.containsKey(newAtt.parentId)){ newAtt.addError('装机确认附件已经存在,不能上传多个。'); } if(isUploadMap3.containsKey(newAtt.parentId)){ newAtt.addError('借用协议附件已经存在,不能上传多个。'); } if(isUploadMap4.containsKey(newAtt.parentId)){ newAtt.addError('转借确认附件已经存在,不能上传多个。'); } } } //装机确认后,禁止删除确认单 public static void fileCheck6(List newList, Map newMap, List oldList, Map oldMap) { List lacIdList = new List(); List lacIdList1 = new List(); for(Attachment oldAtt : oldList){ String parentId = oldAtt.parentId; String name = oldAtt.Name; if(parentId.startsWith('a0Q') && name.startsWith('装机确认')){ lacIdList.add(parentId); } if(parentId.startsWith('a0Q') && (name.startsWith('借用协议') || name.startsWith('借用单') || name.startsWith('DeliveryConfirmPDF'))){ lacIdList1.add(parentId); } } Map deleteMap = new Map(); Map deleteMap1 = new Map(); if(lacIdList.size()>0){ List lacList = [select id,HP_Received_Sign_Date__c from loaner_application__c where id = :lacIdList]; for(loaner_application__c lac : lacList){ if(lac.HP_Received_Sign_Date__c != null){ deleteMap.put(lac.id,lac.id); } } } if(lacIdList1.size() >0 ){ List lacList1 = [select id,Bollow_Date__c from loaner_application__c where id = :lacIdList1]; for(loaner_application__c lac: lacList1){ if(lac.Bollow_Date__c != null){ deleteMap1.put(lac.id,lac.id); } } } for(Attachment oldAtt : oldList){ if(deleteMap.containsKey(oldAtt.parentId)){ oldAtt.addError('已装机确认,不能删除装机确认附件'); } if(deleteMap1.containsKey(oldAtt.parentId)){ oldAtt.addError('已出库指示,不能删除借用协议附件'); } } } public static void uploadContract(List newList, Map newMap, List oldList, Map oldMap) { List orderList = new List(); for (Attachment newAtt : newList) { String parentId = newAtt.parentId; String name = newAtt.Name; if (parentId.startsWith('801') && name.startsWith('ORDER-')) { Order ord = new Order(); ord.Id = parentId; //ord.Name = name.substring(6, name.indexOf('.')); ord.Upload_IsChanged__c = true; ord.IsUpload__c = true; orderList.add(ord); } } if (orderList.size() > 0) { update orderList; } } // Added by HANCHAO 20170123 public static void AfterPassUpload(List newList, Map newMap, List oldList, Map oldMap) { List orderList = new List(); for (Attachment newAtt : newList) { String parentId = newAtt.parentId; if (parentId.startsWith('801')) { Order ord1 = [select id,IsUpload__c,ApproveStatus__c,IsOrderPassed__c from Order where id = :parentId]; if (ord1.IsOrderPassed__c) { Order ord = new Order(); ord.Id = parentId; ord.AfterPassAttachmentUpload__c = true; orderList.add(ord); } } } if (orderList.size() > 0) { update orderList; } } //添加确认单时添加对应标记 public static void fileCheck4(List newList, Map newMap, List oldList, Map oldMap){ List lacList = new List(); for (Attachment newAtt : newList) { String parentId = newAtt.parentId; String name = newAtt.Name; //判断是否上传收货确认附件和安装确认附件 if(parentId.startsWith('a0Q')){ if(name.startsWith('收货确认-')){ loaner_application__c lac = new loaner_application__c(); lac.id = parentId; // [select id,Receipt_Attachment__c from loaner_application__c where id = :parentId]; lac.Receipt_Attachment__c = true; lacList.add(lac); } if(name.startsWith('装机确认')){ loaner_application__c lac =new loaner_application__c(); lac.id = parentId; // [select id,Installation_Qualification_Attachment__c from loaner_application__c where id = :parentId]; lac.Installation_Qualification_Attachment__c = true; lacList.add(lac); } if(name.startsWith('借用协议') || name.startsWith('借用单') || name.startsWith('DeliveryConfirmPDF')){ loaner_application__c lac = new loaner_application__c(); lac.id = parentId; lac.Loaner_AgreementPDF__c = true; lacList.add(lac); } if(name.startsWith('转借确认')){ loaner_application__c lac = new loaner_application__c(); lac.id = parentId; lac.Loaner_Confirm_Photo__c = true; lacList.add(lac); } } } if(lacList.size() > 0){ try{ update lacList; }catch(Exception ex){ newList[0].addError(ex.getMessage().mid((ex.getMessage().indexOf('first error:') + 12),ex.getMessage().length())); } } } public static void fileCheck2(List newList, Map newMap, List oldList, Map oldMap) { List orderIdList = new List(); for (Attachment oldAtt : oldList) { String parentId = oldAtt.parentId; if (parentId.startsWith('801')) { orderIdList.add(oldAtt.parentId); } } Map submitMap = new Map(); Map passMap = new Map(); if (orderIdList.size() > 0) { List orderList = [select id,IsUpload__c,ApproveStatus__c,IsOrderPassed__c, Is_Already_Splited__c from Order where id = :orderIdList]; for (Order o : orderList) { if (o.ApproveStatus__c == 'Submit' || o.ApproveStatus__c == 'OrderSubmit') { submitMap.put(o.Id, o.Id); } if (o.IsOrderPassed__c) { passMap.put(o.Id, o); } } } //新的获取人员简档ID 获取到的ID是15位 // String profileId = UserInfo.getProfileId().substring(0, 15); String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); for (Attachment oldAtt : oldList) { /*if (UserInfo.getProfileId() != System.Label.SystemAdmin && submitMap.containsKey(oldAtt.parentId)) { oldAtt.addError('合同被锁定,不能更改附件。'); } if (UserInfo.getProfileId() != System.Label.SystemAdmin && passMap.containsKey(oldAtt.parentId) && UserInfo.getProfileId() != System.Label.Business_department && passMap.get(oldAtt.parentId).Is_Already_Splited__c == false) { oldAtt.addError('合同批准后不能更改附件。'); }*/ if (new_profileId != System.Label.SystemAdmin && submitMap.containsKey(oldAtt.parentId)) { oldAtt.addError('合同被锁定,不能更改附件。'); } if (new_profileId != System.Label.SystemAdmin && passMap.containsKey(oldAtt.parentId) && new_profileId != System.Label.Business_department && passMap.get(oldAtt.parentId).Is_Already_Splited__c == false) { oldAtt.addError('合同批准后不能更改附件。'); } } } public static void fileCheck3(List newList, Map newMap, List oldList, Map oldMap) { List orderIdList = new List(); for (Attachment newAtt : newList) { String parentId = newAtt.parentId; if (parentId.startsWith('801')) { orderIdList.add(newAtt.parentId); } } Map submitMap = new Map(); Map passMap = new Map(); if (orderIdList.size() > 0) { List orderList = [select id,IsUpload__c,ApproveStatus__c,IsOrderPassed__c, Is_Already_Splited__c from Order where id = :orderIdList]; for (Order o : orderList) { if (o.ApproveStatus__c == 'Submit' || o.ApproveStatus__c == 'OrderSubmit') { submitMap.put(o.Id, o.Id); } if (o.IsOrderPassed__c) { passMap.put(o.Id, o); } } } //新的获取人员简档ID 获取到的ID是15位 // String profileId = UserInfo.getProfileId().substring(0, 15); String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); /*for (Attachment newAtt : newList) { if (UserInfo.getProfileId() != System.Label.SystemAdmin && submitMap.containsKey(newAtt.parentId)) { newAtt.addError('合同被锁定,不能更改附件。'); } if (UserInfo.getProfileId() != System.Label.SystemAdmin && passMap.containsKey(newAtt.parentId) && UserInfo.getProfileId() != System.Label.Business_department && passMap.get(newAtt.parentId).Is_Already_Splited__c == false) { newAtt.addError('合同批准后不能更改附件。'); } }*/ for (Attachment newAtt : newList) { if (new_profileId != System.Label.SystemAdmin && submitMap.containsKey(newAtt.parentId)) { newAtt.addError('合同被锁定,不能更改附件。'); } if (new_profileId != System.Label.SystemAdmin && passMap.containsKey(newAtt.parentId) && new_profileId != System.Label.Business_department && passMap.get(newAtt.parentId).Is_Already_Splited__c == false) { newAtt.addError('合同批准后不能更改附件。'); } } } public static void deleteContract(List newList, Map newMap, List oldList, Map oldMap) { List orderList = new List(); for (Attachment oldAtt : oldList) { String parentId = oldAtt.parentId; String name = oldAtt.Name; if (parentId.startsWith('801') && name.startsWith('ORDER-')) { Order ord = new Order(); ord.Id = parentId; //ord.Name = ''; ord.Upload_IsChanged__c = true; ord.IsUpload__c = false; orderList.add(ord); } } if (orderList.size() > 0) { update orderList; } } //删除确认单时取消对应标记; public static void deleteconfirm(List newList, Map newMap, List oldList, Map oldMap){ List lacList = new List(); for (Attachment oldAtt : oldList) { String parentId = oldAtt.parentId; String name = oldAtt.Name; //判断是否删除收货确认附件和安装确认附件 if(parentId.startsWith('a0Q')){ if(name.startsWith('收货确认-')){ loaner_application__c lac = new loaner_application__c(); lac.id = parentId; // [select id,Receipt_Attachment__c from loaner_application__c where id = :parentId]; lac.Receipt_Attachment__c = false; lacList.add(lac); } if(name.startsWith('装机确认')){ loaner_application__c lac = new loaner_application__c(); lac.id = parentId; // [select id,Installation_Qualification_Attachment__c from loaner_application__c where id = :parentId]; lac.Installation_Qualification_Attachment__c = false; lacList.add(lac); } if(name.startsWith('借用协议') || name.startsWith('借用单') || name.startsWith('DeliveryConfirmPDF')){ loaner_application__c lac = new loaner_application__c(); lac.id = parentId; lac.Loaner_AgreementPDF__c = false; lacList.add(lac); } if(name.startsWith('转借确认')){ loaner_application__c lac = new loaner_application__c(); lac.id = parentId; lac.Loaner_Confirm_Photo__c = false; lacList.add(lac); } } } if(lacList.size() > 0){ update lacList; } } //业务活动上传附件完成之后将附件克隆至相关联的用户信息上面 public static void AfterUploadToUserFaultInfo(List newList, Map newMap, List oldList, Map oldMap) { List selectBAIdList = new List(); String firstThreeDigitCode= System.label.FirstThreeDigitCode; for (Attachment newAtt : newList) { String parentId = newAtt.parentId; if (parentId.startsWith(firstThreeDigitCode)) { selectBAIdList.add(parentId); } } if (selectBAIdList.size() > 0) { List businessActivityList = TSRepairUtil.GetBusinessActivityList(null,null, selectbaIdList,null,null,''); String userFaultInfoId = businessActivityList[0].User_FaultInfo__c; System.debug('userFaultInfoId---->'+userFaultInfoId); if (String.isNotBlank(userFaultInfoId)) { // 获取用户/故障信息的附件 List selectUfIdList = new List(); selectUfIdList.add(userFaultInfoId); List ufAttachmentList = TSRepairUtil.GetAttachmentList(selectUfIdList); if (ufAttachmentList.size() >0){ //删除用户/故障信息的附件 delete ufAttachmentList; } //将业务活动下的附件克隆至 用户/故障信息 TSRepairUtil.insertattachmentCloneList(selectBAIdList,userFaultInfoId); } } } //王鹏伟 贸易管理客户申请表 合同已提交 不允许修改贸易管理客户申请表附件 public static void updateTradeCustomerManagerFile(List newList, Map newMap, List oldList, Map oldMap){ for(Attachment accach : newList){ String parentId = accach.parentId; String tradeCustomerManagerStart = System.label.TradeCustomerManagerStart; if(parentId.startsWith(tradeCustomerManagerStart)){ TradeCustomerManager__c trade = [select Id,order__c,isHaveLink__c from TradeCustomerManager__c where Id =: parentId]; if(trade!=null){ Order order = [select Id,applicationForm__c,ApproveStatus__c from Order where id=:trade.order__c]; if(order !=null){ if(order.ApproveStatus__c == 'OrderPass' || order.ApproveStatus__c == 'OrderSubmit'){ accach.addError('合同已提交,申请表附件不可修改!'); return; } } } } } } //王鹏伟判断是否是 贸易管理客户申请表 下的文件 如果是 public static void DeleteTradeCustomerManagerFile(List newList, Map newMap, List oldList, Map oldMap){ for(Attachment accach : oldList){ String parentId = accach.parentId; String tradeCustomerManagerStart = System.label.TradeCustomerManagerStart; if(parentId.startsWith(tradeCustomerManagerStart)){ TradeCustomerManager__c trade = [select Id,order__c,isHaveLink__c from TradeCustomerManager__c where Id =: parentId]; if(trade!=null){ Order order = [select Id,applicationForm__c,ApproveStatus__c from Order where id=:trade.order__c]; if(order!=null){ if(order.ApproveStatus__c == 'OrderPass' || order.ApproveStatus__c == 'OrderSubmit'){ accach.addError('合同已提交,申请表附件不可删除!'); return; } if(order!=null &&(accach.Name.startsWith('军事')||(accach.Name.startsWith('个人信息') && trade.isHaveLink__c == '是'))){ order.applicationForm__c = false; update order; } } } } } } //王鹏伟新加判断 贸易管理客户申请表 一个申请表下只能有一份文件名以军事或个人信息开头的文件! public static void UploadTradeCustomerManagerFile(List newList, Map newMap, List oldList, Map oldMap){ for(Attachment accach : newList){ String parentId = accach.parentId; String tradeCustomerManagerStart = System.label.TradeCustomerManagerStart; if(parentId.startsWith(tradeCustomerManagerStart)){ List fileList = [select Id,Name from Attachment where ParentId =:parentId]; if(fileList!=null && fileList.size()!=0){ for(Attachment acc : fileList){ if(acc.Name.substring(0,2).equals('军事') && accach.Name.startsWith('军事')){ accach.addError('一个贸易管理客户申请表下,只能有一份文件名以军事开头的文件!'); return; } if(acc.Name.startsWith('个人信息') && accach.Name.startsWith('个人信息')){ accach.addError('一个贸易管理客户申请表下,只能有一份文件名以个人开头的文件!'); return; } } } } } } }