| force-app/main/default/classes/RentalApplyFaultHandler.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/RentalApplyFaultHandler.cls-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/RentalApplyFaultHandlerTest.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/RentalApplyFaultHandlerTest.cls-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/RentalApplyFaultReportController.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/RentalApplyFaultReportController.cls-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
force-app/main/default/classes/RentalApplyFaultHandler.cls
New file @@ -0,0 +1,797 @@ public without sharing class RentalApplyFaultHandler extends Oly_TriggerHandler { private Map<Id, Rental_Apply_Fault__c> newMap; private Map<Id, Rental_Apply_Fault__c> oldMap; private List<Rental_Apply_Fault__c> newList; private List<Rental_Apply_Fault__c> oldList; public RentalApplyFaultHandler(){ this.newMap = (Map<Id, Rental_Apply_Fault__c>) Trigger.newMap; this.oldMap = (Map<Id, Rental_Apply_Fault__c>) Trigger.oldMap; this.newList = (List<Rental_Apply_Fault__c>) Trigger.new; this.oldList = (List<Rental_Apply_Fault__c>) Trigger.old; 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++; } protected override void beforeInsert() { //List 备品借出申请 List<String> raListIds = new List<String>(); Set<String> radListIds = new Set<String>(); //申请单Id, List<故障报告> Map<Id, List<Rental_Apply_Fault__c>> raMap = new Map<Id, List<Rental_Apply_Fault__c>>(); //Name 规则 : 备品借出申请单 + 001 ~999 for(Rental_Apply_Fault__c raf: newList){ //获取所有的申请单Id radListIds.add(raf.Rental_Apply_Equipment_Set_Detail__c); } // 获取申请单下所有明细的Id List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [SELECT Id,Rental_Apply__c from Rental_Apply_Equipment_Set_Detail__c WHERE Id in :radListIds]; for(Rental_Apply_Equipment_Set_Detail__c rae : raesdList){ raListIds.add(rae.Rental_Apply__c); } raesdList = [SELECT Id,Rental_Apply__c from Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply__c in :raListIds]; for(Rental_Apply_Equipment_Set_Detail__c rea : raesdList){ radListIds.add(rea.Id); } system.debug('radListIds===='+radListIds); //查出 申请单下全部的检测报告 List<Rental_Apply_Fault__c> raList = [SELECT Id, Rental_Apply_Equipment_Set_Detail__c, Rental_Apply_Equipment_Set_Detail__r.Rental_Apply__r.Id,Rental_Apply_Equipment_Set_Detail__r.Rental_Apply__r.Name from Rental_Apply_Fault__c where Rental_Apply_Equipment_Set_Detail__c in :radListIds]; //查出 所有申请单明细 Map<Id,Rental_Apply_Equipment_Set_Detail__c> radMap = new Map<Id,Rental_Apply_Equipment_Set_Detail__c>([ Select Id,Rental_Apply__r.Name, Rental_Apply__r.Id, Rental_Apply__r.Person_In_Charge__c, Rental_Apply__r.demo_purpose2__c, Rental_Apply__r.Rental_Assistant__c, Rental_Apply__r.Rental_Assistant2__c, Rental_Apply__r.Loaner_Storage_mail_address__c, Rental_Apply__r.ZongjianApprovalManager__c, Rental_Apply__r.BuchangApprovalManagerSales__c, SerialNumber_F__c, Rental_Apply__r.SalesManager__c, Rental_Apply__r.Loaner_centre_mail_address__c, Rental_Apply__r.Hospital__c, Fixture_Model_No__c, Rental_Apply__r.OCM_dept_category__c, Rental_Apply__r.WorkPlace__c from Rental_Apply_Equipment_Set_Detail__c where id in :radListIds]); system.debug('radMap===='+radMap); for (Rental_Apply_Fault__c raf : raList) { system.debug('raf.Rental_Apply_Equipment_Set_Detail__c==='+raf.Rental_Apply_Equipment_Set_Detail__c); system.debug('radMap.get(raf.Rental_Apply_Equipment_Set_Detail__c).Rental_Apply__r.Id===' + radMap.get(raf.Rental_Apply_Equipment_Set_Detail__c).Rental_Apply__r.Id); if(raMap.containsKey(radMap.get(raf.Rental_Apply_Equipment_Set_Detail__c).Rental_Apply__r.Id)){ raMap.get(radMap.get(raf.Rental_Apply_Equipment_Set_Detail__c).Rental_Apply__r.Id).add(raf); } else { List<Rental_Apply_Fault__c> tempList = new List<Rental_Apply_Fault__c>(); tempList.add(raf); raMap.put(radMap.get(raf.Rental_Apply_Equipment_Set_Detail__c).Rental_Apply__r.Id,tempList); } } system.debug('raMap===='+raMap); for(Rental_Apply_Fault__c raf : newList){ //当前借出明细Id String radId = raf.Rental_Apply_Equipment_Set_Detail__c; //当前申请单Id String raId = radMap.get(radId).Rental_Apply__r.Id; if(raMap.containsKey(raId)){ Integer rafSize = raMap.get(raId).size() + 1; system.debug('rafSize===='+rafSize); String rafSizeString = '000' + rafSize; String cutString = rafSizeString.substring(rafSizeString.length()-3, rafSizeString.length()); if(rafSize == 0) { raf.Name = radMap.get(radId).Rental_Apply__r.Name + '-JCBG-001'; }else{ raf.Name = radMap.get(radId).Rental_Apply__r.Name + '-JCBG-' + cutString; } }else{ raf.Name = radMap.get(radId).Rental_Apply__r.Name + '-JCBG-001'; } raf.RentalApplyNo__c = radMap.get(radId).Rental_Apply__r.Name; raf.demo_purpose2__c = radMap.get(radId).Rental_Apply__r.demo_purpose2__c; raf.Hospital__c = radMap.get(radId).Rental_Apply__r.Hospital__c; raf.Repair_product_body_number__c = radMap.get(radId).SerialNumber_F__c; raf.Fixture_Model_No__c = radMap.get(radId).Fixture_Model_No__c; raf.OCM_dept_category__c = radMap.get(radId).Rental_Apply__r.OCM_dept_category__c; raf.WorkPlace__c = radMap.get(radId).Rental_Apply__r.WorkPlace__c; raf.Person_In_Charge_User__c = radMap.get(radId).Rental_Apply__r.Person_In_Charge__c; raf.Rental_Assistant__c = radMap.get(radId).Rental_Apply__r.Rental_Assistant__c; raf.Rental_Assistant2__c = radMap.get(radId).Rental_Apply__r.Rental_Assistant2__c; raf.ZongjianApprovalManager__c = radMap.get(radId).Rental_Apply__r.ZongjianApprovalManager__c; raf.BuchangApprovalManagerSales__c = radMap.get(radId).Rental_Apply__r.BuchangApprovalManagerSales__c; raf.SalesManager__c = radMap.get(radId).Rental_Apply__r.SalesManager__c; raf.Loaner_centre_mail_address__c = radMap.get(radId).Rental_Apply__r.Loaner_centre_mail_address__c; raf.Loaner_Storage_mail_address__c = radMap.get(radId).Rental_Apply__r.Loaner_Storage_mail_address__c; raf.status__c = '草案中'; } } protected override void afterInsert() { // 给备品出借担当增加读写权限 List<Rental_Apply_Fault__Share> rafShareList = new List<Rental_Apply_Fault__Share>(); for (Rental_Apply_Fault__c raf: newList) { // 备品出借担当 if (raf.Person_In_Charge_User__c != null) { Rental_Apply_Fault__Share rafShare = new Rental_Apply_Fault__Share(); rafShare.AccessLevel = 'Edit'; rafShare.UserOrGroupId = raf.Person_In_Charge_User__c; rafShare.ParentID = raf.Id; rafShareList.add(rafShare); } Rental_Apply_Fault__c tempRaf = [select id, ZongjianApprovalManager__r.isActive, BuchangApprovalManagerSales__r.isActive, SalesManager__r.isActive from Rental_Apply_Fault__c where Id =:raf.id ]; System.debug('-------------temp.ZongjianApprovalManager__r.isActive-------------' + tempRaf.ZongjianApprovalManager__r.isActive); System.debug('-------------raf.ZongjianApprovalManager__r.isActive--------------' + raf.ZongjianApprovalManager__r.isActive); // CL4 高级总监 if (raf.ZongjianApprovalManager__c != null && tempRaf.ZongjianApprovalManager__r.isActive) { Rental_Apply_Fault__Share rafShare = new Rental_Apply_Fault__Share(); rafShare.AccessLevel = 'READ'; rafShare.UserOrGroupId = raf.ZongjianApprovalManager__c; rafShare.ParentID = raf.Id; rafShareList.add(rafShare); } // CL5 总监级 if (raf.BuchangApprovalManagerSales__c != null && tempRaf.BuchangApprovalManagerSales__r.isActive) { Rental_Apply_Fault__Share rafShare = new Rental_Apply_Fault__Share(); rafShare.AccessLevel = 'READ'; rafShare.UserOrGroupId = raf.BuchangApprovalManagerSales__c; rafShare.ParentID = raf.Id; rafShareList.add(rafShare); } // CL6 经理级 if (raf.SalesManager__c != null && tempRaf.SalesManager__r.isActive) { Rental_Apply_Fault__Share rafShare = new Rental_Apply_Fault__Share(); rafShare.AccessLevel = 'READ'; rafShare.UserOrGroupId = raf.SalesManager__c; rafShare.ParentID = raf.Id; rafShareList.add(rafShare); } } if (!rafShareList.isEmpty()) { insert rafShareList; } } protected override void beforeUpdate() { Date today = Date.today(); List<Rental_Apply_Fault__c> deleteAttachmentIds = new List<Rental_Apply_Fault__c>(); Set<Id> deleteIds = new Set<Id>(); for(Rental_Apply_Fault__c raf: newList){ Rental_Apply_Fault__c oldRaf = oldMap.get(raf.Id); if (raf.status__c == '已发送' && oldRaf.status__c != '已发送') { raf.SendDate__c = today; } if (raf.status__c == '已反馈' && oldRaf.status__c != '已反馈') { raf.LoanerFeedback_date__c = today; if (raf.UseExplain__c == null) { raf.adderror('【备品使用情况说明】不能为空'); return; } } if ((String.isBlank(raf.AttachmentId1__c) && !String.isBlank(oldRaf.AttachmentId1__c)) || (String.isBlank(raf.AttachmentId2__c) && !String.isBlank(oldRaf.AttachmentId2__c))) { deleteAttachmentIds.add(raf); if (String.isBlank(raf.AttachmentId1__c) && !String.isBlank(oldRaf.AttachmentId1__c)) { deleteIds.add(oldRaf.AttachmentId1__c); } if (String.isBlank(raf.AttachmentId2__c) && !String.isBlank(oldRaf.AttachmentId2__c)) { deleteIds.add(oldRaf.AttachmentId2__c); } } } if (!deleteAttachmentIds.isEmpty()) { List<Attachment> attList = [SELECT Id,ParentId FROM Attachment WHERE ParentId IN: deleteAttachmentIds Order by ParentId,Id]; Map<String, List<Attachment>> parentMap = new Map<String, List<Attachment>>(); for (Attachment att : attList) { if (!deleteIds.contains(att.Id)) { if (!parentMap.isEmpty() && parentMap.containskey(att.ParentId)) { List<Attachment> attTemp = parentMap.get(att.ParentId); attTemp.add(att); parentMap.put(att.ParentId, attTemp); } else { List<Attachment> attTemp = new List<Attachment>(); attTemp.add(att); parentMap.put(att.ParentId, attTemp); } } } for (Rental_Apply_Fault__c raf : deleteAttachmentIds) { if (!parentMap.isEmpty() && parentMap.containskey(raf.Id)) { Rental_Apply_Fault__c oldObj = oldMap.get(raf.Id); List<Attachment> attTemp = parentMap.get(raf.Id); System.debug('========================================' + attTemp); if (attTemp.size() == 1) { raf.AttachmentId1__c = attTemp[0].Id; raf.AttachmentId2__c = null; } else { raf.AttachmentId1__c = attTemp[0].Id; raf.AttachmentId2__c = attTemp[1].Id; } } } } } protected override void afterUpdate() { Set<Id> feedbackIds = new Set<Id>(); Set<Id> sendReportIds = new Set<Id>(); for(Rental_Apply_Fault__c raf: newList){ Rental_Apply_Fault__c oldRaf = oldMap.get(raf.Id); if (raf.status__c == '已发送' && oldRaf.status__c != '已发送') { sendReportIds.add(raf.Id); } if (raf.status__c == '已反馈' && oldRaf.status__c != '已反馈') { feedbackIds.add(raf.Id); } } if (!sendReportIds.isEmpty()) { //备品中心推送邮件给现场 sendEmail(sendReportIds, '1'); } if (!feedbackIds.isEmpty()) { //现场回复后推送的邮件 sendEmail(feedbackIds, '2'); } } //推送邮件处理 public void sendEmail(Set<Id> rafIds, String flag) { List<Rental_Apply_Fault__c> rafList = [ SELECT Id, Person_In_Charge_User__r.Email, Owner.Email, Rental_Assistant__r.Email, Rental_Assistant2__r.Email, Loaner_centre_mail_address__c, Loaner_Storage_mail_address__c, ZongjianApprovalManager__r.Email, BuchangApprovalManagerSales__r.Email, SalesManager__r.Email, Salesdept__c, StorageCheckEmail__c FROM Rental_Apply_Fault__c WHERE Id IN: rafIds]; EmailTemplate et = null; if (flag == '1') { et = [Select id from EmailTemplate where name = '备品检测分析报告' limit 1]; } else if (flag == '2') { et = [Select id from EmailTemplate where name = '备品检测分析报告操作不当提醒已回复' limit 1]; } else { return; } List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>(); for (Rental_Apply_Fault__c raf : rafList) { String[] toAddresses = new String[]{}; String[] ccAddresses = new String[]{}; if (flag == '1') { //To 申请人 toAddresses.add(raf.Person_In_Charge_User__r.Email); //To 备品跟进助理 if(raf.Rental_Assistant__r.Email != null) { toAddresses.add(raf.Rental_Assistant__r.Email); } if(raf.Rental_Assistant2__r.Email != null){ toAddresses.add(raf.Rental_Assistant2__r.Email); } //CC 部外 备品审批流人员及所属总监---cl4总监邮箱 备品总窗口 //部内 白总、古部长,林部长 白科,古芳丽,林芳 // ocmasset公共邮箱 // 检测仓库公共邮箱 ccAddresses = System.Label.RentalApplyFaultReplyToBuNei.split(';'); //cc 部外 备品审批流人员及所属总监---cl4总监邮箱 备品总窗口 setEmailAddress(raf, ccAddresses); ccAddresses.add(raf.Loaner_Storage_mail_address__c); ccAddresses.add(raf.Loaner_centre_mail_address__c); //ccAddresses.add(raf.StorageCheckEmail__c); } else if (flag == '2') { //To ocmasset公共邮箱 检测仓库公共邮箱 检测担当 toAddresses.add(raf.Loaner_centre_mail_address__c); toAddresses.add(raf.Loaner_Storage_mail_address__c); //toAddresses.add(raf.StorageCheckEmail__c); toAddresses.add(raf.Owner.Email); //部内 白总、古部长,林部长 ccAddresses = System.Label.RentalApplyFaultReplyToBuNei.split(';'); //cc 部外 备品审批流人员及所属总监---cl4总监邮箱 备品总窗口 setEmailAddress(raf, ccAddresses); //Cc 备品跟进助理 if(raf.Rental_Assistant__r.Email != null) { ccAddresses.add(raf.Rental_Assistant__r.Email); } if(raf.Rental_Assistant2__r.Email != null){ ccAddresses.add(raf.Rental_Assistant2__r.Email); } } Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail = Messaging.renderStoredEmailTemplate(et.Id, null, raf.Id); mail.setSaveAsActivity(false); mail.setToAddresses(toAddresses); mail.setCcAddresses(ccAddresses); emails.add(mail); } Messaging.sendEmail(emails); } public void setEmailAddress(Rental_Apply_Fault__c rafObj, String[] ccAddr) { //本部 窗口 CL5总监(备品审批) CL4高级总监(备品审批) 建议抄送人1 建议抄送人2 备注 //华北 赵靖苹 是 否 慕海霞 李鸷 //东北 关贝妮 是 否 赵志成 李鸷 //西北 张媛媛 是 否 颜大庆 宋琰 //西南 赵雯雯 是 是 //华东 徐明楠 是 否 宋真 杨剑清 //华南 夏俊洁 是 是 俞澜 严蕊芳 //MA 无 是 否 陆吉 //SOLUTION 殷佳骊 是 否 //医疗服务本部 无 是 陆吉(理论上没有) //外科事业本部 李海红 是 否 //市场企划本部 无 是 陆吉(理论上没有) //消化.呼吸内镜事业本部 无 是 否 陆吉 //消化.呼吸领域解决方案本部 无 是 陆吉(理论上没有) if (rafObj.Salesdept__c == '医疗华北营业本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Huabei) && System.Label.RentalApplyFaultReplyTo_Huabei != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Huabei.split(';')); } } else if (rafObj.Salesdept__c == '医疗东北营业本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Dongbei) && System.Label.RentalApplyFaultReplyTo_Dongbei != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Dongbei.split(';')); } } else if (rafObj.Salesdept__c == '医疗西北营业本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Xibei) && System.Label.RentalApplyFaultReplyTo_Xibei != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Xibei.split(';')); } } else if (rafObj.Salesdept__c == '医疗西南营业本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (rafObj.ZongjianApprovalManager__c != null) { ccAddr.add(rafObj.ZongjianApprovalManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Xinan) && System.Label.RentalApplyFaultReplyTo_Xinan != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Xinan.split(';')); } } else if (rafObj.Salesdept__c == '医疗华东营业本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Huadong) && System.Label.RentalApplyFaultReplyTo_Huadong != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Huadong.split(';')); } } else if (rafObj.Salesdept__c == '医疗华南营业本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (rafObj.ZongjianApprovalManager__c != null) { ccAddr.add(rafObj.ZongjianApprovalManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Huanan) && System.Label.RentalApplyFaultReplyTo_Huanan != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Huanan.split(';')); } } else if (rafObj.Salesdept__c == 'MA本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_MA) && System.Label.RentalApplyFaultReplyTo_MA != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_MA.split(';')); } } else if (rafObj.Salesdept__c == 'Solution本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_SOLUTION) && System.Label.RentalApplyFaultReplyTo_SOLUTION != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_SOLUTION.split(';')); } } else if (rafObj.Salesdept__c == '医疗服务本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Yiliao) && System.Label.RentalApplyFaultReplyTo_Yiliao != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Yiliao.split(';')); } } else if (rafObj.Salesdept__c == '外科事业本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Waike) && System.Label.RentalApplyFaultReplyTo_Waike != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Waike.split(';')); } } else if (rafObj.Salesdept__c == '市场企划本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Shichang) && System.Label.RentalApplyFaultReplyTo_Shichang != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Shichang.split(';')); } } else if (rafObj.Salesdept__c == '消化·呼吸内镜事业本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_HXNJ) && System.Label.RentalApplyFaultReplyTo_HXNJ != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_HXNJ.split(';')); } } else if (rafObj.Salesdept__c == '消化·呼吸领域解决方案本部') { if (rafObj.BuchangApprovalManagerSales__c != null) { ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); } if (rafObj.SalesManager__c != null) { ccAddr.add(rafObj.SalesManager__r.Email); } if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_HXLY) && System.Label.RentalApplyFaultReplyTo_HXLY != 'null') { ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_HXLY.split(';')); } } } } force-app/main/default/classes/RentalApplyFaultHandler.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>55.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/classes/RentalApplyFaultHandlerTest.cls
New file @@ -0,0 +1,721 @@ @isTest public class RentalApplyFaultHandlerTest{ @testSetup static void setupTestData() { //前置数据 System.runAs(new User(Id = Userinfo.getUserId())) { Oly_TriggerHandler.bypass(Product2Handler.Class.getName()); Oly_TriggerHandler.bypass(ContactTriggerHandler.Class.getName()); String flag='NG2'; String d1='产品试用'; String dept='医疗华北营业本部'; User user = new User(Test_staff__c = true); user.LastName = '_サンブリッジ'; user.FirstName = 'う'; user.Alias = 'う'; user.Email = 'olympusTest03@sunbridge.com'; user.Username = 'olympusTest03@sunbridge.com'; user.CommunityNickname = 'う'; user.IsActive = true; user.EmailEncodingKey = 'ISO-2022-JP'; user.TimeZoneSidKey = 'Asia/Tokyo'; user.LocaleSidKey = 'ja_JP'; user.LanguageLocaleKey = 'ja'; user.ProfileId = System.Label.ProfileId_SystemAdmin; user.Province__c = '北京'; user.Dept__c = dept; user.Use_Start_Date__c = Date.today().addMonths(-6); insert user; // 省 Address_Level__c al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-99'; al.Level1_Sys_No__c = '999999'; insert al; // 市 Address_Level2__c al2 = new Address_Level2__c(); al2.Level1_Code__c = 'CN-99'; al2.Level1_Sys_No__c = '999999'; al2.Level1_Name__c = '東京'; al2.Name = '渋谷区'; al2.Level2_Code__c = 'CN-9999'; al2.Level2_Sys_No__c = '9999999'; al2.Address_Level__c = al.id; insert al2; // 病院を作る Account hospital = new Account(); String rtId = [SELECT ID FROM RecordType WHERE DeveloperName = 'HP'].Id; hospital.recordtypeId = rtId; hospital.Name = 'test hospital'; hospital.Is_Active__c = '有効'; hospital.Attribute_Type__c = '卫生部'; hospital.Speciality_Type__c = '综合医院'; hospital.Grade__c = '一级'; hospital.OCM_Category__c = 'SLTV'; hospital.Is_Medical__c = '医疗机构'; hospital.State_Master__c = al.id; hospital.City_Master__c = al2.id; hospital.Town__c = '东京'; insert hospital; Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH']; // 診療科を作る Account dep = new Account(); String rtId1 = [SELECT ID FROM RecordType WHERE DeveloperName = 'Department_OTH'].Id; dep.recordtypeId = rtId1; dep.Name = 'test dep1'; dep.AgentCode_Ext__c = '9999999'; dep.ParentId = strategicDep[0].Id; dep.Department_Class__c = strategicDep[0].Id; dep.Hospital__c = hospital.Id; insert dep; Contact contact2 = new Contact(); contact2.AccountId = dep.Id; contact2.FirstName = '責任者'; contact2.LastName = 'test1经销商'; insert contact2; Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI', Fixture_Model_No__c='n01',Serial_Lot_No__c='S/N tracing', Fixture_Model_No_T__c = 'n01', Asset_Model_No__c = 'Pro1', ProductCode_Ext__c='pc01',Manual_Entry__c=false); Product2 pro2 = new Product2(Name='name02',IsActive=true,Family='GI', Fixture_Model_No__c='n02',Serial_Lot_No__c='Lot tracing', Fixture_Model_No_T__c = 'n02', Asset_Model_No__c = 'Pro2', ProductCode_Ext__c='pc02',Manual_Entry__c=false); Product2 pro3 = new Product2(Name='name03',IsActive=true,Family='GI', Fixture_Model_No__c='n03',Serial_Lot_No__c='Lot tracing', Fixture_Model_No_T__c = 'n03', Asset_Model_No__c = 'Pro3', ProductCode_Ext__c='pc03',Manual_Entry__c=false); Product2 pro4 = new Product2(Name='name04',IsActive=true,Family='GI', Fixture_Model_No__c='n04',Serial_Lot_No__c='Lot tracing', Fixture_Model_No_T__c = 'n04', Asset_Model_No__c = 'Pro4', ProductCode_Ext__c='pc04',Manual_Entry__c=false); insert new Product2[] {pro1, pro2, pro3, pro4}; //备品借出申请 List<Rental_Apply__c> raObjls=new List<Rental_Apply__c>(); Rental_Apply__c raObj = new Rental_Apply__c(); raObj.Name = 'testra'; raObj.OwnerId = user.Id; raObj.Product_category__c = 'GI'; raObj.Demo_purpose1__c ='产品试用'; raObj.demo_purpose2__c = '试用(无询价)'; raObj.direct_send__c = '医疗机构'; raObj.Loaner_received_staff__c = '王五'; raObj.Loaner_received_staff_phone__c = '110'; raObj.direct_shippment_address__c = '北京市'; raObj.Hospital__c = hospital.Id; raObj.Strategic_dept__c = strategicDep[0].Id; raObj.Account__c = dep.Id; raObj.Request_shipping_day__c = Date.toDay(); raObj.Hope_Lonaer_date_Num__c = 16; //raObj.Request_return_day__c = Date.toDay(); raObj.Phone_number__c = '1234567890'; raObj.Request_approval_time__c = Datetime.newInstance(1970, 1, 1); raObj.Loaner_medical_Staff__c = contact2.Id; if ('协议借用' == d1) { raObj.DB_loaner_request__c = '123'; raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(10); if (false) { raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(-1); } } raObjls.add(raObj); Rental_Apply__c raObj2= new Rental_Apply__c(); raObj2.Name = 'fuckyou'; raObj2.OwnerId = user.Id; raObj2.Product_category__c = 'SP'; raObj2.Demo_purpose1__c ='产品试用'; raObj2.demo_purpose2__c = '试用(无询价)'; raObj2.direct_send__c = '医疗机构'; raObj2.Loaner_received_staff__c = 'van'; raObj2.Loaner_received_staff_phone__c = '110'; raObj2.direct_shippment_address__c = '昆明市'; raObj2.Hospital__c = hospital.Id; raObj2.Strategic_dept__c = strategicDep[0].Id; raObj2.Account__c = dep.Id; raObj2.Request_shipping_day__c = Date.toDay(); raObj2.Hope_Lonaer_date_Num__c = 17; //raObj.Request_return_day__c = Date.toDay(); raObj2.Phone_number__c = '1234567880'; raObj2.Request_approval_time__c = Datetime.newInstance(1970, 1, 1); raObj2.Loaner_medical_Staff__c = contact2.Id; if ('协议借用' == d1) { raObj2.DB_loaner_request__c = '123'; raObj2.AgreementBorrowingExtensionDate__c = Date.today().addDays(10); if (false) { raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(-1); } } raObjls.add(raObj2); insert raObjls; // 备品配套 List<Fixture_Set__c> fsObjls=new List<Fixture_Set__c>(); Fixture_Set__c fsObj1 = new Fixture_Set__c(); fsObj1.Name = 'set1'; fsObj1.Fixture_Set_Body_Model_No__c = 'modelNo1'; fsObj1.Loaner_name__c = 'name1'; fsObjls.add(fsObj1); Fixture_Set__c fsObj2 = new Fixture_Set__c(); fsObj2.Name = 'set2'; fsObj2.Fixture_Set_Body_Model_No__c = 'modelNo2'; fsObj2.Loaner_name__c = 'name'; fsObjls.add(fsObj2); insert fsObjls; //备品配套明细 List<Fixture_Set_Detail__c> fsdObjAls=new List<Fixture_Set_Detail__c>(); Fixture_Set_Detail__c fsdObjA1 = new Fixture_Set_Detail__c(); // 备品配套明细 fsdObjA1.Name = '备品配套明细名1'; fsdObjA1.Name_CHN_Created__c = '中文名称1'; fsdObjA1.Product2__c = pro1.Id; fsdObjA1.Fixture_Set__c = fsObj1.Id; fsdObjA1.Is_Body__c = true; fsdObjA1.Is_Optional__c = false; fsdObjA1.UniqueKey__c = fsObj1.Id + ':' + pro1.Id; fsdObjA1.SortInt__c = 1; fsdObjA1.Quantity__c = 1; fsdObjAls.add(fsdObjA1); Fixture_Set_Detail__c fsdObjA2 = new Fixture_Set_Detail__c(); fsdObjA2.Name = '备品配套明细名2'; fsdObjA2.Name_CHN_Created__c = '中文名称2'; fsdObjA2.Product2__c = pro2.Id; fsdObjA2.Fixture_Set__c = fsObj1.Id; fsdObjA2.Is_Body__c = false; fsdObjA2.Is_Optional__c = true; fsdObjA2.UniqueKey__c = fsObj1.Id + ':' + pro2.Id; fsdObjA2.SortInt__c = 2; fsdObjA2.Quantity__c = 1; fsdObjA2.Is_OneToOne__c = true; fsdObjAls.add(fsdObjA2); insert fsdObjAls; Rental_Apply_Equipment_Set__c raesObj = new Rental_Apply_Equipment_Set__c(); // 借出备品配套一览 raesObj.Rental_Apply__c = raObj.Id; raesObj.Fixture_Set__c = fsObj1.Id; raesObj.Cancel_Select__c = false; raesObj.Rental_Start_Date__c = Date.toDay(); raesObj.Rental_End_Date__c = Date.toDay(); raesObj.IndexFromUniqueKey__c = 1; raesObj.UniqueKey__c = '1:'+ fsObj1.Id + ':1'; insert raesObj; // 保有设备C (只有附属品 个体管理) Asset assetC1 = new Asset(Asset_Owner__c = 'Olympus'); assetC1.RecordTypeId = System.Label.Asset_RecordType; assetC1.SerialNumber = 'assetC1'; assetC1.Name = 'assetC1'; assetC1.AccountId = dep.Id; assetC1.Department_Class__c = strategicDep[0].Id; assetC1.Hospital__c = hospital.Id; assetC1.Product2Id = pro4.Id; assetC1.Quantity = 1; assetC1.Status = '有库存'; assetC1.Manage_type__c = '个体管理'; assetC1.Internal_asset_location__c = '北京 备品中心'; assetC1.Loaner_accsessary__c = true; assetC1.Delete_Flag__c = false; assetC1.Freeze_sign__c = false; assetC1.Out_of_wh__c = 0; // 保有设备 Asset asset = new Asset(Asset_Owner__c = 'Olympus'); asset.RecordTypeId = System.Label.Asset_RecordType; asset.SerialNumber = 'asset'; asset.Name = 'asset'; asset.AccountId = dep.Id; asset.Department_Class__c = strategicDep[0].Id; asset.Hospital__c = hospital.Id; asset.Product2Id = pro4.Id; asset.Quantity = 1; asset.Status = '有库存'; asset.Manage_type__c = '个体管理'; asset.Internal_asset_location__c = '北京 备品中心'; asset.Loaner_accsessary__c = true; asset.Delete_Flag__c = false; asset.Freeze_sign__c = false; asset.Out_of_wh__c = 0; insert new Asset[] {assetC1, asset}; List<Rental_Apply_Equipment_Set_Detail__c> reasll=new List<Rental_Apply_Equipment_Set_Detail__c>(); Rental_Apply_Equipment_Set_Detail__c raesdObj1 = new Rental_Apply_Equipment_Set_Detail__c(); raesdObj1.Rental_Apply__c = raObj.Id; raesdObj1.Fixture_Set_Detail__c = fsdObjA1.Id; raesdObj1.Rental_Num__c = 1; raesdObj1.Queue_Number__c = 2; raesdObj1.Is_Body__c = true; raesdObj1.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj1.IndexFromUniqueKey__c = 1; raesdObj1.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA1.Id + ':1'; raesdObj1.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj1.FSD_Is_Optional__c = false; raesdObj1.FSD_Is_OneToOne__c = false; raesdObj1.ApplyPersonAppended__c = false; raesdObj1.FSD_Fixture_Model_No__c = 'n01'; raesdObj1.Fixture_Model_No_text__c = 'n01'; raesdObj1.Salesdepartment_before__c = '1.华北营业本部'; raesdObj1.Internal_asset_location_before__c = '北京 备品中心'; raesdObj1.Product_category_text__c = 'GI'; raesdObj1.Equipment_Type_text__c = '产品试用'; raesdObj1.Cancel_Select__c=false; raesdObj1.IsAdjust__c=true; raesdObj1.DataMigration_Flag__c=false; raesdObj1.Inspection_result__c='NG'; raesdObj1.Inspection_result_NG__c='维修'; raesdObj1.Asset__c=asset.id; reasll.add(raesdObj1); Rental_Apply_Equipment_Set_Detail__c raesdObj2 = new Rental_Apply_Equipment_Set_Detail__c(); raesdObj2.Rental_Apply__c = raObj.Id; raesdObj2.Fixture_Set_Detail__c = fsdObjA2.Id; raesdObj2.Rental_Num__c = 1; raesdObj2.Queue_Number__c = 3; raesdObj2.Is_Body__c = true; raesdObj2.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj2.IndexFromUniqueKey__c = 2; raesdObj2.UniqueKey__c = '2:'+ raesObj.Id + ':' + fsdObjA2.Id + ':2'; raesdObj2.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj2.FSD_Is_Optional__c = false; raesdObj2.FSD_Is_OneToOne__c = true; raesdObj2.ApplyPersonAppended__c = false; raesdObj2.FSD_Fixture_Model_No__c = 'n02'; raesdObj2.Fixture_Model_No_text__c = 'n02'; raesdObj2.Salesdepartment_before__c = '1.华北营业本部'; raesdObj2.Internal_asset_location_before__c = '北京 备品中心'; raesdObj2.Product_category_text__c = 'GI'; raesdObj2.Equipment_Type_text__c = '学会展会'; raesdObj2.Cancel_Select__c = false; raesdObj2.IsAdjust__c=true; raesdObj2.DataMigration_Flag__c=false; raesdObj2.Inspection_result__c='NG'; raesdObj2.Inspection_result_NG__c='维修'; raesdObj2.Asset__c=assetC1.id; reasll.add(raesdObj2); Rental_Apply_Equipment_Set_Detail__c raesdObj3 = new Rental_Apply_Equipment_Set_Detail__c(); raesdObj3.Rental_Apply__c = raObj2.Id; raesdObj3.Fixture_Set_Detail__c = fsdObjA2.Id; raesdObj3.Rental_Num__c = 1; raesdObj3.Queue_Number__c = 4; raesdObj3.Is_Body__c = true; raesdObj3.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj3.IndexFromUniqueKey__c = 3; raesdObj3.UniqueKey__c = '3:'+ raesObj.Id + ':' + fsdObjA2.Id + ':3'; raesdObj3.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj3.FSD_Is_Optional__c = false; raesdObj3.FSD_Is_OneToOne__c = true; raesdObj3.ApplyPersonAppended__c = false; raesdObj3.FSD_Fixture_Model_No__c = 'n02'; raesdObj3.Fixture_Model_No_text__c = 'n02'; raesdObj3.Salesdepartment_before__c = '1.华北营业本部'; raesdObj3.Internal_asset_location_before__c = '北京 备品中心'; raesdObj3.Product_category_text__c = 'GI'; raesdObj3.Equipment_Type_text__c = '学会展会'; raesdObj3.Cancel_Select__c = false; raesdObj3.IsAdjust__c=true; raesdObj3.DataMigration_Flag__c=false; raesdObj3.Inspection_result__c='NG'; raesdObj3.Inspection_result_NG__c='维修'; raesdObj3.Asset__c=assetC1.id; reasll.add(raesdObj3); Rental_Apply_Equipment_Set_Detail__c raesdObj4 = new Rental_Apply_Equipment_Set_Detail__c(); raesdObj4.Rental_Apply__c = raObj.Id; raesdObj4.Fixture_Set_Detail__c = fsdObjA2.Id; raesdObj4.Rental_Num__c = 1; raesdObj4.Queue_Number__c = 4; raesdObj4.Is_Body__c = true; raesdObj4.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj4.IndexFromUniqueKey__c = 4; raesdObj4.UniqueKey__c = '4:'+ raesObj.Id + ':' + fsdObjA2.Id + ':4'; raesdObj4.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj4.FSD_Is_Optional__c = false; raesdObj4.FSD_Is_OneToOne__c = true; raesdObj4.ApplyPersonAppended__c = false; raesdObj4.FSD_Fixture_Model_No__c = 'n02'; raesdObj4.Fixture_Model_No_text__c = 'n02'; raesdObj4.Salesdepartment_before__c = '1.华北营业本部'; raesdObj4.Internal_asset_location_before__c = '北京 备品中心'; raesdObj4.Product_category_text__c = 'GI'; raesdObj4.Equipment_Type_text__c = '学会展会'; raesdObj4.Cancel_Select__c = false; raesdObj4.IsAdjust__c=false; raesdObj4.DataMigration_Flag__c=false; raesdObj4.Inspection_result__c='SP'; raesdObj4.Inspection_result_NG__c='维修'; raesdObj4.Asset__c=assetC1.id; reasll.add(raesdObj4); Rental_Apply_Equipment_Set_Detail__c raesdObj5 = new Rental_Apply_Equipment_Set_Detail__c(); raesdObj5.Rental_Apply__c = raObj.Id; raesdObj5.Fixture_Set_Detail__c = fsdObjA2.Id; raesdObj5.Rental_Num__c = 1; raesdObj5.Queue_Number__c = 4; raesdObj5.Is_Body__c = true; raesdObj5.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj5.IndexFromUniqueKey__c = 5; raesdObj5.UniqueKey__c = '5:'+ raesObj.Id + ':' + fsdObjA2.Id + ':5'; raesdObj5.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj5.FSD_Is_Optional__c = false; raesdObj5.FSD_Is_OneToOne__c = true; raesdObj5.ApplyPersonAppended__c = false; raesdObj5.FSD_Fixture_Model_No__c = 'n02'; raesdObj5.Fixture_Model_No_text__c = 'n02'; raesdObj5.Salesdepartment_before__c = '1.华北营业本部'; raesdObj5.Internal_asset_location_before__c = '北京 备品中心'; raesdObj5.Product_category_text__c = 'SP'; raesdObj5.Equipment_Type_text__c = '学会展会'; raesdObj5.Cancel_Select__c = false; raesdObj5.IsAdjust__c=false; raesdObj5.DataMigration_Flag__c=false; raesdObj5.Inspection_result__c='SP'; raesdObj5.Inspection_result_NG__c='维修'; raesdObj5.Asset__c=assetC1.id; reasll.add(raesdObj5); insert reasll; } } static List<User> setQueueData() { StaticParameter.EscapeNFM001AgencyContractTrigger = true; StaticParameter.EscapeNFM001Trigger = true; Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName()); Rental_Apply__c raObj; List<Fixture_Set__c> fsObjs; List<Fixture_Set_Detail__c> fsdObjs; Rental_Apply_Equipment_Set__c raesObj; Test.startTest(); List<User> us = getUser(); //系统管理员创建数据 system.runAs(us[0]) { //创建数据 // setupTestData(us[0], us[1]); //备品配套明细check fsdObjs = [select Id FROM Fixture_Set_Detail__c]; System.assertEquals(fsdObjs.size(), 2); //备品配套check fsObjs = [select Id FROM Fixture_Set__c]; System.assertEquals(fsObjs.size(), 1); //备品借出申请check List<Rental_Apply__c> raObjs = [SELECT Id, Status__c, RA_Status__c, RA_Status_Text__c, Name, Phone_number__c, Loaner_medical_Staff__c FROM Rental_Apply__c]; System.assertEquals(raObjs.size(), 1); raObj = raObjs[0]; //备品借出一览check List<Rental_Apply_Equipment_Set__c> raesObjs = [select Id, First_RAESD__c, Fixture_Set__c FROM Rental_Apply_Equipment_Set__c]; System.assertEquals(raesObjs.size(), 1); System.assertNotEquals(raesObjs[0].First_RAESD__c, null); raesObj = raesObjs[0]; //申请状态check System.assertEquals(raObj.Status__c, '草案中'); System.assertEquals(raObj.RA_Status__c, '草案中'); System.assertEquals(raObj.RA_Status__c, raObj.RA_Status_Text__c); //申请状态更新 raObj.Status__c = '已批准'; raObj.Add_Approval_Status__c = '草案中'; Datetime d1 = Datetime.now().AddDays(-2); Datetime d2 = Datetime.now().AddDays(-1); //设置申请审批时间 raObj.Request_demo_time__c = d1; raObj.Request_approval_time__c = d2; update raObj; raObjs = [SELECT Id, Request_approval_time__c, Request_demo_time__c, Status__c, RA_Status__c, RA_Status_Text__c, Name, Product_category__c, Demo_purpose1__c, demo_purpose2__c, direct_send__c, Loaner_received_staff__c, Loaner_received_staff_phone__c, direct_shippment_address__c, Hospital__c, Strategic_dept__c, Account__c, Request_shipping_day__c, Request_return_day__c, Phone_number__c, Loaner_medical_Staff__c FROM Rental_Apply__c]; System.assertEquals(raObjs.size(), 1); raObj = raObjs[0]; System.assertEquals(raObj.RA_Status__c, raObj.RA_Status_Text__c); System.assertEquals(raObj.Request_demo_time__c, d1); System.assertEquals(raObj.Request_approval_time__c, d2); List<Rental_Apply_Equipment_Set_Detail__c> raesds = [Select Id, Is_Body__c, Fixture_Model_No_F__c, Is_First_RAESD_F__c, Fixture_Set_Detail__c From Rental_Apply_Equipment_Set_Detail__c Order By Is_Body__c DESC]; System.assertEquals(raesds.size(), 2); List<Asset> ass = [Select Id, Fixture_Model_No_F__c From Asset order by Loaner_accsessary__c DESC]; System.assertEquals(ass.size(), 2); //分配 for (Rental_Apply_Equipment_Set_Detail__c raesd : raesds) { for (Asset asse : ass) { if (raesd.Fixture_Model_No_F__c == asse.Fixture_Model_No_F__c) { raesd.Asset__c = asse.Id; raesd.Select_Time__c = Datetime.now(); } } } update raesds; ass = [Select Id, Last_Reserve_RAES_Detail__c, Fixture_Model_No_F__c From Asset order by Loaner_accsessary__c]; System.assertEquals(ass.size(), 2); System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id); System.assertEquals(ass[1].Last_Reserve_RAES_Detail__c, null); Rental_Apply__c ra = raObj.clone(false); Rental_Apply__c ra1 = raObj.clone(false); ra.Status__c = '草案中'; ra1.Status__c = '草案中'; ra.Hope_Lonaer_date_Num__c = 1; ra1.Hope_Lonaer_date_Num__c = 1; insert new Rental_Apply__c[]{ra, ra1}; Map<Id, Rental_Apply__c> raMap = new Map<Id, Rental_Apply__c>([select Id, Status__c, RA_Status__c, RequestNoJoinStr2__c FROM Rental_Apply__c]); Rental_Apply_Equipment_Set__c raes = raesObj.clone(false); raes.Rental_Apply__c = ra.Id; raes.Rental_End_Date__c = Date.today().AddDays(4); raes.Rental_Start_Date__c = Date.today(); raes.Rental_Start_Date__c = Date.today(); raes.IndexFromUniqueKey__c = 2; // raes.UniqueKey__c = raMap.get(ra.Id).RequestNoJoinStr2__c + ':'+ raes.Fixture_Set__c + ':'+ 1; Rental_Apply_Equipment_Set__c raes1 = raesObj.clone(false); raes1.Rental_Apply__c = ra1.Id; raes1.Rental_End_Date__c = Date.today().AddDays(4); raes1.Rental_Start_Date__c = Date.today(); raes1.IndexFromUniqueKey__c = 3; insert new Rental_Apply_Equipment_Set__c[]{raes, raes1}; Rental_Apply_Equipment_Set_Detail__c raesd1 = raesds[0].clone(false); raesd1.Rental_Apply__c = ra.Id; raesd1.Rental_Apply_Equipment_Set__c = raes.Id; raesd1.Asset__c = null; raesd1.Select_Time__c = null; raesd1.IndexFromUniqueKey__c = 1; // raesd1.Queue_Number__c = 1; // raesd1.Queue_Day__c = Date.today(); Rental_Apply_Equipment_Set_Detail__c raesd2 = raesds[1].clone(false); raesd2.Rental_Apply__c = ra.Id; raesd2.Rental_Apply_Equipment_Set__c = raes.Id; raesd2.Asset__c = null; raesd2.Select_Time__c = null; raesd2.IndexFromUniqueKey__c = 2; Rental_Apply_Equipment_Set_Detail__c raesd11 = raesds[0].clone(false); raesd11.Rental_Apply__c = ra1.Id; raesd11.Rental_Apply_Equipment_Set__c = raes1.Id; raesd11.Asset__c = null; raesd11.Select_Time__c = null; raesd11.IndexFromUniqueKey__c = 1; // raesd1.Queue_Number__c = 2; // raesd1.Queue_Day__c = Date.today(); Rental_Apply_Equipment_Set_Detail__c raesd12 = raesds[1].clone(false); raesd12.Rental_Apply__c = ra1.Id; raesd12.Asset__c = null; raesd12.Select_Time__c = null; raesd12.Rental_Apply_Equipment_Set__c = raes1.Id; raesd12.IndexFromUniqueKey__c = 2; insert new Rental_Apply_Equipment_Set_Detail__c[]{raesd1, raesd2, raesd11, raesd12}; MainFixtureSelectController.queue(raes.Id, ass[0].Id); MainFixtureSelectController.queue(raes1.Id, ass[0].Id); raes.First_RAESD__c = raesd1.Id; raes1.First_RAESD__c = raesd11.Id; update new Rental_Apply_Equipment_Set__c[]{raes, raes1}; List<Rental_Apply_Equipment_Set_Detail__c> raesds1 = [Select Id, Is_Body__c, Fixture_Model_No_F__c, Is_First_RAESD_F__c, Queue_Number__c From Rental_Apply_Equipment_Set_Detail__c Where Queue_Number__c > 0 Order By Is_Body__c DESC , Queue_Number__c]; System.assertEquals(raesds1.size(), 2); for (Integer i = 0; i < raesds1.size(); i ++) { Rental_Apply_Equipment_Set_Detail__c raesd = raesds1[i]; System.assertEquals(raesd.Queue_Number__c, i+1); if (i == 0) { System.assertEquals(raesd.Id, raesd1.Id); } else { System.assertEquals(raesd.Id, raesd11.Id); } } } return us; } private static List<User> getUser() { List<User> us = new List<User>(); // MIXED_DML_OPERATION, DML operation on setup object is not permitted Error System.runAs(new User(Id = Userinfo.getUserId())) { String timenow = Datetime.now().format('yyyyMMddHHmmss'); User user1 = new User(Test_staff__c = true, LastName = 'TestMao', FirstName = 'TestMaoF', Alias = 'hp', CommunityNickname = 'TestMao', Email = 'Test@sunbridge.com', Username = 'Test' + timenow + '@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = System.Label.ProfileId_SystemAdmin, Dept__c = '医疗华北营业本部', Province__c = '北京'); List<Profile> p = [Select Id From Profile Where Name = '2S1_销售医院担当']; System.assertEquals(p.size(), 1); User user2 = new User(Test_staff__c = true, LastName = 'TestMao1', FirstName = 'TestMaoF1', Alias = 'hp', CommunityNickname = 'TestMao1', Email = 'Test1@sunbridge.com', Username = 'Test1' + timenow + '@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p[0].Id, Dept__c = '医疗华北营业本部', Province__c = '北京'); us.add(user1); us.add(user2); insert us; } return us; } static Rental_Apply__c raObj { get { List<Rental_Apply__c> raObjs = [select Id FROM Rental_Apply__c]; System.assertEquals(raObjs.size(), 1); Rental_Apply__c raObj = raObjs[0]; return raObj; }} static String recid { get { return 'pt_recid='+raObj.Id; }} @IsTest static void testMethoud1(){ List<Rental_Apply_Equipment_Set_Detail__c> l1 = [SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c WHERE Is_Body__c=true]; Test.startTest(); Rental_Apply_Fault__c fa1 = new Rental_Apply_Fault__c(); fa1.FaultDesc__c = '测试故障描述'; fa1.Reply_message__c = '损坏原因分析及预防建议'; fa1.Rental_Apply_Equipment_Set_Detail__c = l1[0].Id; Rental_Apply_Fault__c fa2 = new Rental_Apply_Fault__c(); fa2.FaultDesc__c = '测试故障描述'; fa2.Reply_message__c = '损坏原因分析及预防建议'; fa2.status__c = '已发送'; fa2.Rental_Apply_Equipment_Set_Detail__c = l1[0].Id; insert fa1; insert fa2; Test.stopTest(); } @IsTest static void testMethoud2(){ List<Rental_Apply_Equipment_Set_Detail__c> l1 = [SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c WHERE Is_Body__c=true]; Test.startTest(); Rental_Apply_Fault__c fa1 = new Rental_Apply_Fault__c(); fa1.FaultDesc__c = '测试故障描述'; fa1.Reply_message__c = '损坏原因分析及预防建议'; fa1.Rental_Apply_Equipment_Set_Detail__c = l1[0].Id; insert fa1; try { fa1.status__c = '已发送'; update fa1; } catch(Exception ex){} Test.stopTest(); } @IsTest static void testMethoud3(){ List<Rental_Apply_Equipment_Set_Detail__c> l1 = [SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c WHERE Is_Body__c=true]; Test.startTest(); Rental_Apply_Fault__c fa1 = new Rental_Apply_Fault__c(); fa1.FaultDesc__c = '测试故障描述'; fa1.Reply_message__c = '损坏原因分析及预防建议'; fa1.UseExplain__c = '损坏原因分析及预防建议'; fa1.Rental_Apply_Equipment_Set_Detail__c = l1[0].Id; insert fa1; try { fa1.status__c = '已反馈'; update fa1; } catch(Exception ex){} Test.stopTest(); } @IsTest static void testMethoud4(){ List<Rental_Apply_Equipment_Set_Detail__c> l1 = [SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c WHERE Is_Body__c=true]; Test.startTest(); Rental_Apply_Fault__c fa1 = new Rental_Apply_Fault__c(); fa1.FaultDesc__c = '测试故障描述'; fa1.Reply_message__c = '损坏原因分析及预防建议'; fa1.Rental_Apply_Equipment_Set_Detail__c = l1[0].Id; insert fa1; Attachment att = new Attachment( Name = 'test', ParentId = fa1.Id, Body = EncodingUtil.base64Decode('test') ); insert att; Attachment att1 = new Attachment( Name = 'test', ParentId = fa1.Id, Body = EncodingUtil.base64Decode('test') ); insert att1; Attachment att2 = new Attachment( Name = 'test', ParentId = fa1.Id, Body = EncodingUtil.base64Decode('test') ); insert att2; delete att; Test.stopTest(); } } force-app/main/default/classes/RentalApplyFaultHandlerTest.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>55.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/classes/RentalApplyFaultReportController.cls
New file @@ -0,0 +1,83 @@ public with sharing class RentalApplyFaultReportController{ public String raId {get; set;} public List<Rental_Apply_Equipment_Set_Detail__c> eList { get; set;} public Rental_Apply__c raObj { get; set;} public List<RetObject> retObject { get; set; } public RentalApplyFaultReportController(){ raId = ApexPages.currentPage().getParameters().get('ra_id'); if (String.isBlank(this.raId)) { throw new ControllerUtil.myException('参数错误:请指定Id。'); } } public Pagereference init() { retObject = new List<RetObject>(); raObj = [SELECT Id, Name, OCM_dept_category__c, Hospital__c, Hospital__r.Name, Person_In_Charge__c, Person_In_Charge__r.Name, WorkPlace__c, demo_purpose2__c FROM Rental_Apply__c WHERE Id =: raId]; //备品借出申请一览明细 eList = [ SELECT Id, Name, Rental_Apply__c, Rental_Apply_Equipment_Set__r.Name, Rental_Apply__r.OCM_dept_category__c, Loaner_asset_no__c, AssetName__c, Fixture_Model_No__c, SerialNumber_F__c, Inspection_result_after__c, Inspection_result_after_NG__c, SerialNumber__c FROM Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply__c = :raId AND Inspection_result_after__c = 'NG' AND Is_Body__c = true ORDER BY Id]; List<Id> eIds = new List<Id>(); for(Rental_Apply_Equipment_Set_Detail__c e :eList){ eIds.add(e.Id); } //查当前明细下有多少故障报告 // 0 没有报告 // Id 有 最新一条为草案中 // 2 有很多条 List<Rental_Apply_Fault__c> faultReportsList = [SELECT Id ,status__c ,Rental_Apply_Equipment_Set_Detail__c from Rental_Apply_Fault__c where Rental_Apply_Equipment_Set_Detail__c in :eIds Order By CreatedDate DESC]; Map<Id, List<Rental_Apply_Fault__c>> radetail_rentalApplyFault_Map = new Map<Id, List<Rental_Apply_Fault__c>>(); for(Rental_Apply_Fault__c raf : faultReportsList){ if(!radetail_rentalApplyFault_Map.containsKey(raf.Rental_Apply_Equipment_Set_Detail__c)){ List<Rental_Apply_Fault__c> tempList = new List<Rental_Apply_Fault__c>(); tempList.add(raf); radetail_rentalApplyFault_Map.put(raf.Rental_Apply_Equipment_Set_Detail__c, tempList); } } system.debug('radetail_rentalApplyFault_Map==='+radetail_rentalApplyFault_Map); for(Rental_Apply_Equipment_Set_Detail__c rae : eList){ RetObject temp = new RetObject(); temp.Id = rae.Id; temp.Name = rae.Name; temp.rae = rae; if( radetail_rentalApplyFault_Map.containsKey(rae.Id) && radetail_rentalApplyFault_Map.get(rae.Id).size() > 0 ){ temp.flag = radetail_rentalApplyFault_Map.get(rae.Id)[0].Id ; }else{ temp.flag = '不存在故障报告单'; } retObject.add(temp); } return null; } public class RetObject { public String Id { get; set; } public String Name { get; set; } public Rental_Apply_Equipment_Set_Detail__c rae { get; set; } public String flag { get; set; } } } force-app/main/default/classes/RentalApplyFaultReportController.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>55.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls
New file @@ -0,0 +1,590 @@ @isTest public class RentalApplyFaultReportControllerTest{ // 医院已装机确认 节点的数据 @testSetup static void setupTestData() { StaticParameter.EscapeNFM001AgencyContractTrigger = true; StaticParameter.EscapeNFM001Trigger = true; Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName()); Rental_Apply__c raObj = new Rental_Apply__c(); Fixture_Set_Detail__c fsdObjA1 = new Fixture_Set_Detail__c(); Fixture_Set_Detail__c fsdObjA2 = new Fixture_Set_Detail__c(); Fixture_Set_Detail__c fsdObjA3 = new Fixture_Set_Detail__c(); Fixture_Set_Detail__c fsdObjA4 = new Fixture_Set_Detail__c(); Rental_Apply_Equipment_Set__c raesObj = new Rental_Apply_Equipment_Set__c(); Asset asset1 = new Asset(Asset_Owner__c = 'Olympus'); Asset asset2 = new Asset(Asset_Owner__c = 'Olympus'); Asset asset3 = new Asset(Asset_Owner__c = 'Olympus'); Asset asset4 = new Asset(Asset_Owner__c = 'Olympus'); //Fixture_OneToOne_Link__c foLink1 = new Fixture_OneToOne_Link__c(); //Fixture_OneToOne_Link__c foLink2 = new Fixture_OneToOne_Link__c(); // MIXED_DML_OPERATION, DML operation on setup object is not permitted Error System.runAs(new User(Id = Userinfo.getUserId())) { StaticParameter.EscapeNFM001AgencyContractTrigger = true; StaticParameter.EscapeNFM001Trigger = true; Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName()); // システム管理者 User user = new User(Test_staff__c = true); user.LastName = '_サンブリッジ'; user.FirstName = 'う'; user.Alias = 'う'; user.Email = 'olympusTest03@sunbridge.com'; user.Username = 'olympusTest03@sunbridge.com'; user.CommunityNickname = 'う'; user.IsActive = true; user.EmailEncodingKey = 'ISO-2022-JP'; user.TimeZoneSidKey = 'Asia/Tokyo'; user.LocaleSidKey = 'ja_JP'; user.LanguageLocaleKey = 'ja'; user.ProfileId = System.Label.ProfileId_SystemAdmin; user.Province__c = '北京'; user.Dept__c = '医疗华北营业本部'; user.Use_Start_Date__c = Date.today().addMonths(-6); insert user; // 省 Address_Level__c al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-99'; al.Level1_Sys_No__c = '999999'; insert al; // 市 Address_Level2__c al2 = new Address_Level2__c(); al2.Level1_Code__c = 'CN-99'; al2.Level1_Sys_No__c = '999999'; al2.Level1_Name__c = '東京'; al2.Name = '渋谷区'; al2.Level2_Code__c = 'CN-9999'; al2.Level2_Sys_No__c = '9999999'; al2.Address_Level__c = al.id; insert al2; // 病院を作る Account hospital = new Account(); hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id; hospital.Name = 'test hospital'; hospital.Is_Active__c = '有効'; hospital.Attribute_Type__c = '卫生部'; hospital.Speciality_Type__c = '综合医院'; hospital.Grade__c = '一级'; hospital.OCM_Category__c = 'SLTV'; hospital.Is_Medical__c = '医疗机构'; hospital.State_Master__c = al.id; hospital.City_Master__c = al2.id; hospital.Town__c = '东京'; insert hospital; StaticParameter.EscapeAccountTrigger = true; // 戦略科室を得る Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH']; // 診療科を作る Account dep = new Account(); dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_OTH'].id; dep.Name = 'test dep1'; dep.AgentCode_Ext__c = '9999999'; dep.ParentId = strategicDep[0].Id; dep.Department_Class__c = strategicDep[0].Id; dep.Hospital__c = hospital.Id; insert dep; Contact contact2 = new Contact(); contact2.AccountId = dep.Id; contact2.FirstName = '責任者'; contact2.LastName = 'test1经销商'; insert contact2; // 产品 Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI', Fixture_Model_No__c='n01',Serial_Lot_No__c='S/N tracing', Fixture_Model_No_T__c = 'n01', Asset_Model_No__c = 'Pro1', ProductCode_Ext__c='pc01',Manual_Entry__c=false); Product2 pro2 = new Product2(Name='name02',IsActive=true,Family='GI', Fixture_Model_No__c='n02',Serial_Lot_No__c='Lot tracing', Fixture_Model_No_T__c = 'n02', Asset_Model_No__c = 'Pro2', ProductCode_Ext__c='pc02',Manual_Entry__c=false); Product2 pro3 = new Product2(Name='name03',IsActive=true,Family='GI', Fixture_Model_No__c='n03',Serial_Lot_No__c='Lot tracing', Fixture_Model_No_T__c = 'n03', Asset_Model_No__c = 'Pro3', ProductCode_Ext__c='pc03',Manual_Entry__c=false); Product2 pro4 = new Product2(Name='name04',IsActive=true,Family='GI', Fixture_Model_No__c='n04',Serial_Lot_No__c='Lot tracing', Fixture_Model_No_T__c = 'n04', Asset_Model_No__c = 'Pro4', ProductCode_Ext__c='pc04',Manual_Entry__c=false); insert new Product2[] {pro1, pro2, pro3, pro4}; //备品借出申请 raObj.Name = 'testra'; raObj.OwnerId = user.Id; raObj.Product_category__c = 'GI'; raObj.Demo_purpose1__c = '产品试用'; raObj.demo_purpose2__c = FixtureUtil.raDemo_purpose2MAP.get('shiyongwuxunjia'); raObj.direct_send__c = '医疗机构'; raObj.Loaner_received_staff__c = '王五'; raObj.Loaner_received_staff_phone__c = '110'; raObj.direct_shippment_address__c = '北京市'; raObj.Hospital__c = hospital.Id; raObj.Strategic_dept__c = strategicDep[0].Id; raObj.Account__c = dep.Id; raObj.Request_shipping_day__c = Date.toDay(); raObj.Hope_Lonaer_date_Num__c = 1; //raObj.Request_return_day__c = Date.toDay(); raObj.Phone_number__c = '1234567890'; raObj.Loaner_medical_Staff__c = contact2.Id; insert raObj; // 保有设备 asset1.RecordTypeId = System.Label.Asset_RecordType; asset1.SerialNumber = 'asset1'; asset1.Name = 'asset1'; asset1.AccountId = dep.Id; asset1.Department_Class__c = strategicDep[0].Id; asset1.Hospital__c = hospital.Id; asset1.Product2Id = pro1.Id; asset1.Quantity = 1; asset1.Status = '不明'; asset1.Manage_type__c = '个体管理'; asset1.Loaner_accsessary__c = false; asset1.Out_of_wh__c = 0; asset1.Salesdepartment__c = '1.华北营业本部'; asset1.Internal_asset_location__c = '北京 备品中心'; asset1.Product_category__c = 'GI'; asset1.Equipment_Type__c = '产品试用'; asset1.SalesProvince__c = '北京'; asset1.CompanyOfEquipment__c = '北京'; asset1.Internal_Asset_number__c = '0001'; asset1.WH_location__c = '货架号1'; asset2.RecordTypeId = System.Label.Asset_RecordType; asset2.SerialNumber = 'asset2'; asset2.Name = 'asset2'; asset2.AccountId = dep.Id; asset2.Department_Class__c = strategicDep[0].Id; asset2.Hospital__c = hospital.Id; asset2.Product2Id = pro2.Id; asset2.Quantity = 1; asset2.Status = '不明'; asset2.Manage_type__c = '个体管理'; asset2.Loaner_accsessary__c = true; asset2.Out_of_wh__c = 0; asset2.Salesdepartment__c = '1.华北营业本部'; asset2.Internal_asset_location__c = '北京 备品中心'; asset2.Product_category__c = 'GI'; asset2.Equipment_Type__c = '产品试用'; asset2.SalesProvince__c = '北京'; asset2.CompanyOfEquipment__c = '北京'; asset2.Internal_Asset_number__c = '0002'; asset2.WH_location__c = '货架号2'; asset3.RecordTypeId = System.Label.Asset_RecordType; asset3.SerialNumber = 'asset3'; asset3.Name = 'asset3'; asset3.AccountId = dep.Id; asset3.Department_Class__c = strategicDep[0].Id; asset3.Hospital__c = hospital.Id; asset3.Product2Id = pro3.Id; asset3.Quantity = 5; asset3.Status = '不明'; asset3.Manage_type__c = '数量管理'; asset3.Loaner_accsessary__c = true; asset3.Out_of_wh__c = 0; asset3.Salesdepartment__c = '1.华北营业本部'; asset3.Internal_asset_location__c = '北京 备品中心'; asset3.Product_category__c = 'GI'; asset3.Equipment_Type__c = '产品试用'; asset3.SalesProvince__c = '北京'; asset3.CompanyOfEquipment__c = '北京'; asset3.Internal_Asset_number__c = '0003'; asset3.WH_location__c = '货架号3'; asset4.RecordTypeId = System.Label.Asset_RecordType; asset4.SerialNumber = 'asset4'; asset4.Name = 'asset4'; asset4.AccountId = dep.Id; asset4.Department_Class__c = strategicDep[0].Id; asset4.Hospital__c = hospital.Id; asset4.Product2Id = pro4.Id; asset4.Quantity = 10; asset4.Status = '不明'; asset4.Manage_type__c = '数量管理'; asset4.Loaner_accsessary__c = true; asset4.Out_of_wh__c = 0; asset4.Salesdepartment__c = '1.华北营业本部'; asset4.Internal_asset_location__c = '北京 备品中心'; asset4.Product_category__c = 'GI'; asset4.Equipment_Type__c = '产品试用'; asset4.SalesProvince__c = '北京'; asset4.CompanyOfEquipment__c = '北京'; asset4.Internal_Asset_number__c = '0004'; asset4.WH_location__c = '货架号4'; insert new Asset[] {asset1, asset2, asset3, asset4}; // 备品一对一Link表 //foLink1.Main_Asset__c = asset1.Id; //foLink1.Accessory_Asset__c = asset2.Id; //foLink1.Quantity__c = 1; //foLink2.Main_Asset__c = asset1.Id; //foLink2.Accessory_Asset__c = asset3.Id; //foLink2.Quantity__c = 1; //insert new Fixture_OneToOne_Link__c[] {foLink1, foLink2}; // 备品配套 Fixture_Set__c fsObj1 = new Fixture_Set__c(); fsObj1.Name = 'set1'; fsObj1.Fixture_Set_Body_Model_No__c = 'modelNo1'; fsObj1.Loaner_name__c = 'name1'; insert fsObj1; // 备品配套明细 fsdObjA1.Name = '备品配套明细名1'; fsdObjA1.Name_CHN_Created__c = '中文名称1'; fsdObjA1.Product2__c = pro1.Id; fsdObjA1.Fixture_Set__c = fsObj1.Id; fsdObjA1.Is_Body__c = true; fsdObjA1.Is_Optional__c = false; fsdObjA1.UniqueKey__c = fsObj1.Id + ':' + pro1.Id; fsdObjA1.SortInt__c = 1; fsdObjA1.Quantity__c = 1; fsdObjA2.Name = '备品配套明细名2'; fsdObjA2.Name_CHN_Created__c = '中文名称2'; fsdObjA2.Product2__c = pro2.Id; fsdObjA2.Fixture_Set__c = fsObj1.Id; fsdObjA2.Is_Body__c = false; fsdObjA2.Is_Optional__c = true; fsdObjA2.UniqueKey__c = fsObj1.Id + ':' + pro2.Id; fsdObjA2.SortInt__c = 2; fsdObjA2.Quantity__c = 1; fsdObjA2.Is_OneToOne__c = true; fsdObjA3.Name = '备品配套明细名3'; fsdObjA3.Name_CHN_Created__c = '中文名称3'; fsdObjA3.Product2__c = pro3.Id; fsdObjA3.Fixture_Set__c = fsObj1.Id; fsdObjA3.Is_Body__c = false; fsdObjA3.Is_Optional__c = true; fsdObjA3.UniqueKey__c = fsObj1.Id + ':' + pro3.Id; fsdObjA3.SortInt__c = 3; fsdObjA3.Quantity__c = 2; fsdObjA3.Is_OneToOne__c = true; fsdObjA4.Name = '备品配套明细名4'; fsdObjA4.Name_CHN_Created__c = '中文名称4'; fsdObjA4.Product2__c = pro4.Id; fsdObjA4.Fixture_Set__c = fsObj1.Id; fsdObjA4.Is_Body__c = false; fsdObjA4.Is_Optional__c = true; fsdObjA4.UniqueKey__c = fsObj1.Id + ':' + pro4.Id; fsdObjA4.SortInt__c = 4; fsdObjA4.Quantity__c = 2; fsdObjA4.Is_OneToOne__c = false; fsdObjA4.Is_Optional__c = true; insert new Fixture_Set_Detail__c[] {fsdObjA1, fsdObjA2, fsdObjA3, fsdObjA4}; // 借出备品配套一览 raesObj.Rental_Apply__c = raObj.Id; raesObj.Fixture_Set__c = fsObj1.Id; raesObj.Cancel_Select__c = false; raesObj.Rental_Start_Date__c = Date.toDay(); raesObj.Rental_End_Date__c = Date.toDay(); raesObj.IndexFromUniqueKey__c = 1; raesObj.UniqueKey__c = '1:'+ fsObj1.Id + ':1'; insert raesObj; } Rental_Apply_Equipment_Set_Detail__c raesdObj1 = new Rental_Apply_Equipment_Set_Detail__c(); Rental_Apply_Equipment_Set_Detail__c raesdObj2 = new Rental_Apply_Equipment_Set_Detail__c(); Rental_Apply_Equipment_Set_Detail__c raesdObj3 = new Rental_Apply_Equipment_Set_Detail__c(); Rental_Apply_Equipment_Set_Detail__c raesdObj4 = new Rental_Apply_Equipment_Set_Detail__c(); Rental_Apply_Equipment_Set_Detail__c raesdObj5 = new Rental_Apply_Equipment_Set_Detail__c(); Rental_Apply_Equipment_Set_Detail__c raesdObj6 = new Rental_Apply_Equipment_Set_Detail__c(); System.runAs(new User(Id = Userinfo.getUserId())) { // 借出备品配套一览明细 raesdObj1.Rental_Apply__c = raObj.Id; raesdObj1.Fixture_Set_Detail__c = fsdObjA1.Id; raesdObj1.Rental_Num__c = 1; raesdObj1.Queue_Number__c = null; raesdObj1.Is_Body__c = true; raesdObj1.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj1.IndexFromUniqueKey__c = 1; raesdObj1.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA1.Id + ':1'; raesdObj1.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj1.FSD_Is_Optional__c = false; raesdObj1.FSD_Is_OneToOne__c = false; raesdObj1.ApplyPersonAppended__c = false; raesdObj1.FSD_Fixture_Model_No__c = 'n01'; raesdObj1.Fixture_Model_No_text__c = 'n01'; raesdObj1.Salesdepartment_before__c = '1.华北营业本部'; raesdObj1.Internal_asset_location_before__c = '北京 备品中心'; raesdObj1.Product_category_text__c = 'GI'; raesdObj1.Equipment_Type_text__c = '产品试用'; raesdObj1.Inspection_result_after__c = 'NG'; raesdObj1.Inspection_result_after_NG__c = '废弃'; raesdObj2.Rental_Apply__c = raObj.Id; raesdObj2.Fixture_Set_Detail__c = fsdObjA2.Id; raesdObj2.Rental_Num__c = 1; raesdObj2.Queue_Number__c = null; raesdObj2.Is_Body__c = false; raesdObj2.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj2.IndexFromUniqueKey__c = 2; raesdObj2.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA2.Id + ':2'; raesdObj2.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj2.FSD_Is_Optional__c = false; raesdObj2.FSD_Is_OneToOne__c = true; raesdObj2.ApplyPersonAppended__c = false; raesdObj2.FSD_Fixture_Model_No__c = 'n02'; raesdObj2.Fixture_Model_No_text__c = 'n02'; raesdObj2.Salesdepartment_before__c = '1.华北营业本部'; raesdObj2.Internal_asset_location_before__c = '北京 备品中心'; raesdObj2.Product_category_text__c = 'GI'; raesdObj2.Equipment_Type_text__c = '产品试用'; raesdObj3.Rental_Apply__c = raObj.Id; raesdObj3.Fixture_Set_Detail__c = fsdObjA3.Id; raesdObj3.Rental_Num__c = 2; raesdObj3.Queue_Number__c = null; raesdObj3.Is_Body__c = false; raesdObj3.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj3.IndexFromUniqueKey__c = 3; raesdObj3.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA3.Id + ':3'; raesdObj3.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj3.FSD_Is_Optional__c = false; raesdObj3.FSD_Is_OneToOne__c = true; raesdObj3.ApplyPersonAppended__c = false; raesdObj3.FSD_Fixture_Model_No__c = 'n03'; raesdObj3.Fixture_Model_No_text__c = 'n03'; raesdObj3.Salesdepartment_before__c = '1.华北营业本部'; raesdObj3.Internal_asset_location_before__c = '北京 备品中心'; raesdObj3.Product_category_text__c = 'GI'; raesdObj3.Equipment_Type_text__c = '产品试用'; raesdObj4.Rental_Apply__c = raObj.Id; raesdObj4.Fixture_Set_Detail__c = fsdObjA3.Id; raesdObj4.Rental_Num__c = 2; raesdObj4.Queue_Number__c = null; raesdObj4.Is_Body__c = false; raesdObj4.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj4.IndexFromUniqueKey__c = 4; raesdObj4.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA3.Id + ':4'; raesdObj4.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj4.FSD_Is_Optional__c = false; raesdObj4.FSD_Is_OneToOne__c = true; raesdObj4.ApplyPersonAppended__c = false; raesdObj4.FSD_Fixture_Model_No__c = 'n03'; raesdObj4.Fixture_Model_No_text__c = 'n03'; raesdObj4.Salesdepartment_before__c = '1.华北营业本部'; raesdObj4.Internal_asset_location_before__c = '北京 备品中心'; raesdObj4.Product_category_text__c = 'GI'; raesdObj4.Equipment_Type_text__c = '产品试用'; raesdObj5.Rental_Apply__c = raObj.Id; raesdObj5.Fixture_Set_Detail__c = fsdObjA4.Id; raesdObj5.Rental_Num__c = 2; raesdObj5.Queue_Number__c = null; raesdObj5.Is_Body__c = false; raesdObj5.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj5.IndexFromUniqueKey__c = 5; raesdObj5.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA4.Id + ':5'; raesdObj5.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj5.FSD_Is_Optional__c = true; raesdObj5.FSD_Is_OneToOne__c = false; raesdObj5.ApplyPersonAppended__c = false; raesdObj5.FSD_Fixture_Model_No__c = 'n04'; raesdObj5.Fixture_Model_No_text__c = 'n04'; raesdObj5.Salesdepartment_before__c = '1.华北营业本部'; raesdObj5.Internal_asset_location_before__c = '北京 备品中心'; raesdObj5.Product_category_text__c = 'GI'; raesdObj5.Equipment_Type_text__c = '产品试用'; raesdObj6.Rental_Apply__c = raObj.Id; raesdObj6.Fixture_Set_Detail__c = fsdObjA4.Id; raesdObj6.Rental_Num__c = 2; raesdObj6.Queue_Number__c = null; raesdObj6.Is_Body__c = false; raesdObj6.Rental_Apply_Equipment_Set__c = raesObj.Id; raesdObj6.IndexFromUniqueKey__c = 6; raesdObj6.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA4.Id + ':6'; raesdObj6.FSD_OneToOneAccessory_Cnt__c = 2; raesdObj6.FSD_Is_Optional__c = true; raesdObj6.FSD_Is_OneToOne__c = false; raesdObj6.ApplyPersonAppended__c = false; raesdObj6.FSD_Fixture_Model_No__c = 'n04'; raesdObj6.Fixture_Model_No_text__c = 'n04'; raesdObj6.Salesdepartment_before__c = '1.华北营业本部'; raesdObj6.Internal_asset_location_before__c = '北京 备品中心'; raesdObj6.Product_category_text__c = 'GI'; raesdObj6.Equipment_Type_text__c = '产品试用'; insert new Rental_Apply_Equipment_Set_Detail__c[] {raesdObj1,raesdObj2,raesdObj3,raesdObj4,raesdObj5,raesdObj6}; } System.runAs(new User(Id = Userinfo.getUserId())) { // 申请单 raObj.Status__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Pi_Zhun.ordinal()); raObj.Status_Text__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Pi_Zhun.ordinal()); raObj.NotWatch_RA_Status__c = true; raObj.HP_received_sign_day__c = Date.toDay(); raObj.HP_received_sign_rich__c = 'OK'; raObj.AssetManageConfirm__c = true; update raObj; // 申请者收货操作 raesObj.Received_Confirm__c = 'OK'; raesObj.Loaner_received_time__c = Datetime.now(); update raesObj; FixtureDeliverySlip__c fdsObj = new FixtureDeliverySlip__c(); fdsObj.Name = '00001'; fdsObj.DeliveryCompany__c = '利讯'; fdsObj.Distributor_method__c = '陆运'; fdsObj.DeliveryType__c = '发货'; fdsObj.Shippment_loaner_time__c = System.now(); insert fdsObj; // 出库前点检操作 raesdObj1.Select_Time__c = Date.toDay(); raesdObj1.Asset__c = asset1.Id; raesdObj1.Loaner_accsessary__c = false; raesdObj1.FSD_Name_CHN__c = 'name01'; raesdObj1.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); raesdObj2.Select_Time__c = Date.toDay(); raesdObj2.Asset__c = asset2.Id; raesdObj2.Loaner_accsessary__c = true; //raesdObj2.Fixture_OneToOne_Link_Id__c = foLink1.Id; raesdObj2.FSD_Name_CHN__c = 'name02'; raesdObj2.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); raesdObj3.Select_Time__c = Date.toDay(); raesdObj3.Asset__c = asset3.Id; raesdObj3.Loaner_accsessary__c = true; //raesdObj3.Fixture_OneToOne_Link_Id__c = foLink2.Id; raesdObj3.FSD_Name_CHN__c = 'name03'; raesdObj3.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); raesdObj4.Select_Time__c = Date.toDay(); raesdObj4.Asset__c = asset3.Id; raesdObj4.Loaner_accsessary__c = true; raesdObj4.FSD_Name_CHN__c = 'name03'; raesdObj4.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); raesdObj5.Select_Time__c = Date.toDay(); raesdObj5.Asset__c = asset4.Id; raesdObj5.Loaner_accsessary__c = true; raesdObj5.FSD_Name_CHN__c = 'name04'; raesdObj5.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); raesdObj6.Select_Time__c = Date.toDay(); raesdObj6.Asset__c = asset4.Id; raesdObj6.Loaner_accsessary__c = true; raesdObj6.FSD_Name_CHN__c = 'name04'; raesdObj6.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); raesdObj1.Shipment_request_time2__c = Date.toDay(); raesdObj1.Shipment_request__c = true; raesdObj1.StockDown__c = true; raesdObj1.StockDown_time__c = Date.toDay(); raesdObj1.StockDown_staff__c = Userinfo.getUserId(); raesdObj1.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); raesdObj2.Shipment_request_time2__c = Date.toDay(); raesdObj2.Shipment_request__c = true; raesdObj2.StockDown__c = true; raesdObj2.StockDown_time__c = Date.toDay(); raesdObj2.StockDown_staff__c = Userinfo.getUserId(); raesdObj2.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); raesdObj3.Shipment_request_time2__c = Date.toDay(); raesdObj3.Shipment_request__c = true; raesdObj3.StockDown__c = true; raesdObj3.StockDown_time__c = Date.toDay(); raesdObj3.StockDown_staff__c = Userinfo.getUserId(); raesdObj3.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); raesdObj4.Shipment_request_time2__c = Date.toDay(); raesdObj4.Shipment_request__c = true; raesdObj4.StockDown__c = true; raesdObj4.StockDown_time__c = Date.toDay(); raesdObj4.StockDown_staff__c = Userinfo.getUserId(); raesdObj4.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); raesdObj5.Shipment_request_time2__c = Date.toDay(); raesdObj5.Shipment_request__c = true; raesdObj5.StockDown__c = true; raesdObj5.StockDown_time__c = Date.toDay(); raesdObj5.StockDown_staff__c = Userinfo.getUserId(); raesdObj5.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); raesdObj6.Shipment_request_time2__c = Date.toDay(); raesdObj6.Shipment_request__c = true; raesdObj6.StockDown__c = true; raesdObj6.StockDown_time__c = Date.toDay(); raesdObj6.StockDown_staff__c = Userinfo.getUserId(); raesdObj6.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); raesdObj1.Inspection_result__c = 'OK'; raesdObj1.Pre_inspection_time__c = System.now(); raesdObj1.Inspection_staff__c = Userinfo.getUserId(); raesdObj2.Inspection_result__c = 'OK'; raesdObj2.Pre_inspection_time__c = System.now(); raesdObj2.Inspection_staff__c = Userinfo.getUserId(); raesdObj3.Inspection_result__c = 'OK'; raesdObj3.Pre_inspection_time__c = System.now(); raesdObj3.Inspection_staff__c = Userinfo.getUserId(); raesdObj4.Inspection_result__c = 'OK'; raesdObj4.Pre_inspection_time__c = System.now(); raesdObj4.Inspection_staff__c = Userinfo.getUserId(); raesdObj5.Inspection_result__c = 'OK'; raesdObj5.Pre_inspection_time__c = System.now(); raesdObj5.Inspection_staff__c = Userinfo.getUserId(); raesdObj6.Inspection_result__c = 'OK'; raesdObj6.Pre_inspection_time__c = System.now(); raesdObj6.Inspection_staff__c = Userinfo.getUserId(); // 发货操作 raesdObj1.DeliverySlip__c = fdsObj.Id; raesdObj2.DeliverySlip__c = fdsObj.Id; raesdObj3.DeliverySlip__c = fdsObj.Id; raesdObj4.DeliverySlip__c = fdsObj.Id; raesdObj5.DeliverySlip__c = fdsObj.Id; raesdObj6.DeliverySlip__c = fdsObj.Id; update new Rental_Apply_Equipment_Set_Detail__c[] {raesdObj1,raesdObj2,raesdObj3,raesdObj4,raesdObj5,raesdObj6}; // 分配后修改asset里面的数据 asset1.Last_Reserve_RAES_Detail__c = raesdObj1.Id; asset1.Out_of_wh__c = 1; asset1.Lei_Ji_Jie_Chu_Shu_Jia__c = 1; asset2.Last_Reserve_RAES_Detail__c = raesdObj2.Id; asset2.Out_of_wh__c = 1; asset2.Lei_Ji_Jie_Chu_Shu_Jia__c = 1; asset3.Last_Reserve_RAES_Detail__c = null; asset3.Out_of_wh__c = 2; asset3.Lei_Ji_Jie_Chu_Shu_Jia__c = 2; asset4.Last_Reserve_RAES_Detail__c = null; asset4.Out_of_wh__c = 2; asset4.Lei_Ji_Jie_Chu_Shu_Jia__c = 2; update new Asset[] {asset1,asset2,asset3,asset4}; } // Rental_Apply_Fault__c raf1 = new Rental_Apply_Fault__c(); // raf1.Rental_Apply_Equipment_Set_Detail__c = raesdObj1.Id; // raf1.status__c = '草案中'; // insert raf1; } static testMethod void testMethod1() { System.runAs(new User(Id = Userinfo.getUserId())) { CreateRelationListPagingCmpCtrl cmp; PageReference ref; List<Rental_Apply__c> raObjs; Rental_Apply__c raObj; List<Rental_Apply_Equipment_Set__c> raesObjs; Rental_Apply_Equipment_Set__c raesObj; List<Rental_Apply_Equipment_Set_Detail__c> raesdObjs; raObjs = [select Id, Name, RA_Status__c FROM Rental_Apply__c]; Test.startTest(); // 回寄操作 ref = new PageReference('/apex/RentalApplyFaultReportController?ra_id=' + raObjs[0].Id); Test.setCurrentPage(ref); RentalApplyFaultReportController rafController = new RentalApplyFaultReportController(); rafController.init(); Test.stopTest(); } } } force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>55.0</apiVersion> <status>Active</status> </ApexClass>