public with sharing class LexOPDSupplementaryController {
|
|
public LexOPDSupplementaryController(){
|
integer i = 1;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
}
|
|
@AuraEnabled
|
public static OPDPlan__c init(String recordId){
|
try{
|
OPDPlan__c res = [SELECT id,OPDPlan_ImplementDate__c,Status__c,
|
OriginalOpdPlanRental__c,Rental_Apply2__c,Account_Laboratory__c,Related_Opportunity1_ID__c,
|
PlanProdDetail__c,Cnt_OPD_LastYear__c,Cnt_OPD_ThisYear__c,Cnt_Rentals__c,
|
lastMonth_Plan__c,SalesManager__c,OPDType__c,OriginalOpdPlanApplication__c,
|
BuchangApprovalManagerSales__c,SalesManager_Txt__c,
|
Name,supplementaryApplication__c ,OPD_DelayCancel_Last__c , EndDateTime__c ,StartDateTime__c
|
FROM OPDPlan__c
|
Where Id = : recordId];
|
return res;
|
}
|
catch(Exception e){
|
System.debug(LoggingLevel.INFO, '*** e: ' + e);
|
}
|
return null;
|
}
|
|
//获取当前登录人的 id 备品智能化add sx start
|
@AuraEnabled
|
public static UserResult UserInfo_Owner() {
|
UserResult result = new UserResult();
|
ID myUserID = UserInfo.getUserId();
|
try {
|
User tempUser =
|
[select Id,Job_Category__c,isFormal_Stuff__c,FirstName,LastName,Province__c from user where id = : myUserID ];
|
result.id = tempUser.Id;
|
result.isFormalStuff = tempUser.isFormal_Stuff__c;
|
result.firstName = tempUser.FirstName == null ? '' : tempUser.FirstName;
|
result.lastName = tempUser.LastName == null ? '' : tempUser.LastName;
|
result.userProvince = tempUser.Province__c;
|
result.userJobCategory = tempUser.Job_Category__c;
|
} catch (exception e) {
|
|
result.result = e.getMessage();
|
}
|
return result;
|
}
|
//获取当前登录人的 id 备品智能化add sx end
|
|
@AuraEnabled
|
public static List<OPDPlan__c> getTheOPDPlan(String Id){
|
try{
|
List<OPDPlan__c> res = [Select Id, Name,supplementaryApplication__c ,OriginalOpdPlanApplication__c
|
FROM OPDPlan__c
|
WHERE supplementaryApplication__c = true
|
AND OriginalOpdPlanApplication__c = :Id];
|
return res;
|
}
|
catch(Exception e){
|
System.debug(LoggingLevel.INFO, '*** e: ' + e);
|
}
|
return null;
|
}
|
|
|
@AuraEnabled
|
public static InitData init2(String recordId){
|
InitData res = new initData();
|
OPDPlan__c opdUpdate = new OPDPlan__c();
|
Set<Id> quoteIdSet = new Set<Id>();
|
Set<Id> opdIdSet = new Set<Id>();
|
Set<String> renModelSet = new Set<String>();
|
List<Product2> proModelList = new List<Product2>();
|
Integer proSameNum = 0;
|
Integer proAccSameNum = 0;
|
Integer proModelNum = 0;
|
Integer proStopNum = 0;
|
String planNotFromDetai = '';
|
String planFromDetai = '';
|
try{
|
//备品智能化 2023-10-19 update by dzk Start 验证OPD计划与询价报价行项目无一对应
|
List<OPDPlan__c> repList = [SELECT Id,OPDPlan_ImplementDate__c,Status__c,OriginalOpdPlanApplication__r.RentalReson__c,Related_Opportunity1_ID__r.Estimation_Id__c,
|
OriginalOpdPlanRental__c,Rental_Apply2__c,Account_Laboratory__c,Related_Opportunity1_ID__c,AttachmentCertificate__c,NeedReport__c,
|
PlanProdDetail__c,Cnt_OPD_LastYear__c,Cnt_OPD_ThisYear__c,Cnt_Rentals__c,HospitalID__c,NoOpp_Reason__c,RentalApplyId__c,Related_Opportunity2_ID__c,
|
lastMonth_Plan__c,SalesManager__c,OPDType__c,OriginalOpdPlanApplication__c,Campaign__c,IsJump__c,JumpCause__c,
|
Rental_Apply_Flag__c,CampaignRecodeTypeId__c,Internal_in_charge_province__c,CampaignStatus__c,OCM_category_ID__c,
|
BuchangApprovalManagerSales__c,SalesManager_Txt__c,IF_Approved__c,Approved_No__c,Approved_Status__c,OriginalOpdPlan__c,
|
Name,supplementaryApplication__c ,OPD_DelayCancel_Last__c , EndDateTime__c ,StartDateTime__c,RentalReson__c,StayOrNot__c
|
FROM OPDPlan__c
|
Where Id = : recordId];
|
List<Plan_Rental_Equipment__c> planREList = [SELECT Id,Quote__c, Rental_Quantity__c,MDM_Model_No__c,ProductCode__c
|
FROM Plan_Rental_Equipment__c
|
WHERE OPD_Plan__c =: recordId];
|
|
//备品智能化 2023-12-13 update by dzk Start 验证OPD计划与询价报价行项目无一对应
|
// 取得符合备品借出条件的产品信息
|
List<QuoteLineItem> quoteLineItemList = [SELECT Id,QuoteId, Product2.Name, Product2.Asset_Model_No__c
|
FROM QuoteLineItem
|
WHERE QuoteId =: repList[0].Related_Opportunity1_ID__r.Estimation_Id__c];
|
//备品智能化 2023-12-13 update by dzk End 验证OPD计划与询价报价行项目无一对应
|
Map<Id,Plan_Rental_Equipment__c> planRenUpdateMap = new Map<Id,Plan_Rental_Equipment__c>();
|
for(QuoteLineItem quoteItem : quoteLineItemList){
|
for(Plan_Rental_Equipment__c planRE : planREList){
|
Plan_Rental_Equipment__c planRenUpdate = new Plan_Rental_Equipment__c();
|
if(quoteItem.Product2.Asset_Model_No__c == planRE.MDM_Model_No__c){
|
proSameNum = proSameNum + 1;
|
// 备品智能化 2023-12-20 add by dzk Start
|
// 从科室创建的OPD计划,先选产品后填写询价,提交审批时
|
// 如果产品与询价最新报价的产品匹配,将报价编码重新赋值
|
planRenUpdate.Id = planRE.Id;
|
planRenUpdate.Quote__c = quoteItem.QuoteId;
|
planRenUpdateMap.put(planRenUpdate.Id,planRenUpdate);
|
}
|
}
|
}
|
List<Plan_Rental_Equipment__c> planRenUpdateList = new List<Plan_Rental_Equipment__c>(planRenUpdateMap.values());
|
Update planRenUpdateList;
|
|
List<Plan_Rental_Equipment__c> planRenNewList = [SELECT Id,Quote__c, Rental_Quantity__c,MDM_Model_No__c
|
FROM Plan_Rental_Equipment__c
|
WHERE OPD_Plan__c =: recordId];
|
|
opdUpdate.Id = repList[0].Id;
|
if(repList[0].Related_Opportunity1_ID__c != null){
|
for(Plan_Rental_Equipment__c renNew : planRenNewList){
|
if(renNew.Quote__c == null){
|
planNotFromDetai += renNew.MDM_Model_No__c + '*' + renNew.Rental_Quantity__c + '; ';
|
}else{
|
planFromDetai += renNew.MDM_Model_No__c + '*' + renNew.Rental_Quantity__c + '; ';
|
}
|
}
|
opdUpdate.EquipmentNotFromOpp__c = planNotFromDetai;
|
opdUpdate.EquipmentFromOpp__c = planFromDetai;
|
}
|
// 备品智能化 2023-12-20 add by dzk End
|
// 从科室创建的OPD计划,先选产品后填写询价,提交审批时
|
// 如果产品与询价最新报价的产品匹配,将报价编码重新赋值
|
if(repList[0].Related_Opportunity1_ID__c == null || repList[0].OriginalOpdPlanApplication__c != null){
|
proSameNum = 1;
|
}
|
// 备品智能化2023-10-19 Add by dzk End 验证OPD计划与询价报价行项目无一对应
|
// v2023-10-20 ADD by dzk Start 同一科室下,计划中的OPD计划是否包含相同产品
|
if(proSameNum != 0){
|
List<Rental_Apply__c> renList = [SELECT Id,Name
|
FROM Rental_Apply__c
|
WHERE Shippment_ng_num__c > 0
|
AND Account__c =: repList[0].Account_Laboratory__c];
|
List<Rental_Apply_Equipment_Set__c> renAppSetList = [SELECT Id,Rental_Apply__r.Name,Loaner_code_F__c
|
FROM Rental_Apply_Equipment_Set__c
|
WHERE Rental_Apply__r.Shippment_ng_num__c > 0
|
AND Rental_Apply__r.Account__c =: repList[0].Account_Laboratory__c];
|
// 备品智能化 2023-12-14 ADD by dzk Start 增加备品上所需要的重复产品信息
|
// opdUpdate.Id = repList[0].Id;
|
res.renAppName = '';
|
res.proNewNum = 0;
|
opdUpdate.RepeatRentalModel__c = '';
|
Map<String,String> renAppNameMap = new Map<String,String>();
|
Map<String,String> renAppModelMap = new Map<String,String>();
|
for(Rental_Apply_Equipment_Set__c renAppSet : renAppSetList){
|
for(Plan_Rental_Equipment__c planRE : planREList){
|
if(planRE.MDM_Model_No__c == renAppSet.Loaner_code_F__c){
|
proAccSameNum = proAccSameNum += 1;
|
if(!renAppNameMap.containsKey(renAppSet.Rental_Apply__r.Name)){
|
if(proAccSameNum == renAppSetList.size()){
|
res.renAppName += renAppSet.Rental_Apply__r.Name;
|
}else{
|
res.renAppName += renAppSet.Rental_Apply__r.Name + ',';
|
}
|
}
|
if(!renAppModelMap.containsKey(planRE.MDM_Model_No__c)){
|
opdUpdate.RepeatRentalModel__c += planRE.MDM_Model_No__c + ',';
|
}
|
renAppModelMap.put(planRE.MDM_Model_No__c,planRE.MDM_Model_No__c);
|
renAppNameMap.put(renAppSet.Rental_Apply__r.Name,renAppSet.Rental_Apply__r.Name);
|
|
}
|
}
|
}
|
if(renAppNameMap.size() == 1){
|
List<String> valuesList = new List<String>(renAppNameMap.values());
|
res.renAppName = valuesList[0];
|
}
|
// 备品智能化 2023-12-14 ADD by dzk End 增加备品上所需要的重复产品信息
|
}
|
update opdUpdate;
|
// 备品智能化 2023-10-20 ADD by dzk End 同一科室下,计划中的OPD计划是否包含相同产品
|
// 备品智能化 2023-10-27 ADD by dzk Start 防止出借目的修改,提交时OPD计划下存在不符合条件的备品数据
|
String rentalReson = repList[0].RentalReson__c;
|
for(Plan_Rental_Equipment__c reList : planREList){
|
renModelSet.add(reList.ProductCode__c);
|
}
|
String query = 'SELECT Id, Name, Loaner_categoryII__c FROM Product2 ';
|
query += ' WHERE ProductCode =: renModelSet ';
|
// 判断出借目的为追加配套
|
if(repList[0].RentalReson__c == '追加配套'){
|
rentalReson = repList[0].OriginalOpdPlanApplication__r.RentalReson__c;
|
}
|
if(rentalReson == 'OPD' || rentalReson == '对应修理' ){
|
query += ' AND (Loaner_categoryII__c IN (\'模型\') ';
|
query += ' OR (Loaner_categoryII__c NOT IN (\'台车\',\'监视器\',\'录像设备\') AND Manual_Entry__c = false AND SFDA_Status__c IN (\'停止\'))) ';
|
}else if(rentalReson == '新产品评价' ){
|
List<Product2> newProList = [SELECT Id,Name,Product_Type__c
|
FROM Product2
|
WHERE ProductCode =: renModelSet
|
AND Product_Type__c = '新产品'];
|
res.proNewNum = newProList.size();
|
query += ' AND Loaner_categoryII__c IN (\'模型\') ';
|
}else if(rentalReson == '演示'){
|
query += ' AND Loaner_categoryII__c IN (\'模型\') ';
|
}else if(rentalReson == '模型出借'){
|
query += ' AND (Loaner_categoryII__c NOT IN (\'模型\') ';
|
query += ' OR (SFDA_Status__c IN (\'停止\') AND Manual_Entry__c = false)) ';
|
}
|
system.debug('query-------------' + query);
|
|
if(String.isNotBlank(rentalReson)){
|
proModelList = Database.query(query);
|
}
|
if(proModelList.size() != 0){
|
proStopNum = 1;
|
}
|
res.proModelNum = proModelNum;
|
res.proStopNum = proStopNum;
|
res.rentalReson = rentalReson;
|
// 备品智能化 2023-11-27 ADD by dzk End 防止出借目的修改,提交时OPD计划下存在不符合条件的备品数据
|
res.opdPlanRecord = repList[0];
|
res.proAccSameNum = proAccSameNum;
|
res.proSameNum = proSameNum;
|
res.opdStatusProcessState = System.Label.StatusProcessState;
|
res.opdCampaignTypeId = Schema.SObjectType.Campaign.getRecordTypeInfosByDeveloperName().get('Service_trainig').getRecordTypeId();
|
res.opdInternalinchargeprovince = repList[0].Internal_in_charge_province__c == null ? '' : repList[0].Internal_in_charge_province__c;
|
return res;
|
}
|
catch(Exception e){
|
System.debug(LoggingLevel.INFO, '*** e: ' + e);
|
return null;
|
}
|
|
}
|
|
@AuraEnabled
|
public static String NewAndUpdateOPDStatus(String Id, Boolean RepeatRentalSign){
|
try{
|
//sx 20231109 备品智能化add start
|
Rental_Apply__c tempRa = new Rental_Apply__c();
|
List<Rental_Apply__c> raList = [SELECT Id, Status__c FROM Rental_Apply__c WHERE OPDPlan__c = :Id order by CreatedDate DESC LIMIT 1 ];
|
if(raList.size()>0){
|
if(raList[0].Status__c == '申请中(OPD未通过)'){
|
tempRa.Id = raList[0].Id;
|
tempRa.Status__c = '填写完毕';
|
UPDATE tempRa;
|
}
|
// UPDATE tempRa;
|
}
|
//sx 20231109 备品智能化add end
|
OPDPlan__c res =new OPDPlan__c();
|
res.Id = Id;
|
res.Status__c='提交';
|
//杜 智能化重复审批标识 add start
|
if(RepeatRentalSign == true){
|
res.RepeatRentalSign__c=true;
|
}
|
//杜 智能化重复审批标识 add end
|
update res;
|
return 'success';
|
}
|
catch (Exception e) {
|
String messageText='';
|
if(e.getMessage().contains(':')){
|
String eMessage =e.getMessage();
|
Integer left = eMessage.indexOf(',')+1;
|
Integer right= eMessage.lastIndexOf(':')+1;
|
if(right>eMessage.length()||right<=left){
|
right=eMessage.length();
|
}
|
String mes=eMessage.substring(left,right);
|
messageText = mes;
|
return messageText + e.getLineNumber() + '行';
|
}else{
|
messageText=e.getMessage();
|
return messageText + e.getLineNumber() + '行';
|
}
|
}
|
}
|
|
// @AuraEnabled
|
// public static String UpdateSign(String recordId){
|
// try{
|
// OPDPlan__c res =new OPDPlan__c();
|
// res.Id = recordId;
|
// res.Status__c='提交';
|
// res.RepeatRentalSign__c=true;
|
// update res;
|
// return 'success';
|
// }
|
// catch (DMLException e) {
|
// return e.getDmlMessage(0);
|
// }
|
// }
|
|
@AuraEnabled
|
public static OPDPlan__c init3(String recordId){
|
OPDPlan__c res = new OPDPlan__c();
|
try{
|
res = [SELECT Id,Name,Status__c,DelayCancel_Reason__c
|
,Account_Laboratory__c,OPDType__c,RentalReson__c,
|
Related_Opportunity1_ID__c,
|
CorrespondingRepairNo__c,AdditionalSupport__c,Campaign__c,
|
NoOpp_Reason__c,ModelLending__c,ModelLendingProduct__c,
|
PlanProdDetail__c
|
FROM OPDPlan__c WHERE Id = :recordId];
|
|
}
|
catch(Exception e){
|
System.debug(LoggingLevel.INFO, '*** e: ' + e);
|
}
|
return res;
|
|
}
|
|
@AuraEnabled
|
public static List<OPDPlan__c> reapplyFindOPD(String Id){
|
List<OPDPlan__c> res =new List<OPDPlan__c>();
|
try{
|
res =[SELECT Id, Name,Reapply__c
|
FROM OPDPlan__c
|
WHERE Reapply__c = true AND OriginalOpdPlan__c = :Id];
|
}
|
catch(Exception e){
|
System.debug(LoggingLevel.INFO, '*** e: ' + e);
|
return null;
|
}
|
return res;
|
}
|
//新建OPD计划(科室) 客户上的按钮
|
@AuraEnabled
|
public static Account initNewOPDButton(String recordId){
|
Account res = new Account();
|
try{
|
res = [SELECT Id,Is_Active__c
|
FROM Account
|
WHERE Id=:recordId];
|
return res;
|
}
|
catch(Exception e){
|
System.debug(LoggingLevel.INFO, '*** e: ' + e);
|
return null;
|
}
|
}
|
//新建OPD计划(询价) 询价上的按钮
|
@AuraEnabled
|
public static Opportunity initNewOPDButton2(String recordId){
|
Opportunity res = new Opportunity();
|
try{
|
res = [SELECT Id,AccountId,Name ,StageName
|
FROM Opportunity
|
WHERE Id=:recordId];
|
return res;
|
}
|
catch(Exception e){
|
System.debug(LoggingLevel.INFO, '*** e: ' + e);
|
return null;
|
}
|
}
|
//取消按钮
|
@AuraEnabled
|
public static OPDPlan__c initCancleSumbit(String recordId){
|
OPDPlan__c res = new OPDPlan__c();
|
try{
|
res = [SELECT Id,Status__c,Name
|
FROM OPDPlan__c
|
WHERE Id=:recordId];
|
return res;
|
}
|
catch(Exception e){
|
System.debug(LoggingLevel.INFO, '*** e: ' + e);
|
return null;
|
}
|
}
|
//OPD报告
|
@AuraEnabled
|
public static OPDPlan__c initReportSubmit(String recordId){
|
OPDPlan__c res = new OPDPlan__c();
|
try{
|
res = [SELECT Id,Status__c,Name,Rental_Apply2_Status_New__c,Rental_Apply1_Status_New__c,
|
Rental_Apply3_Status_New__c,Rental_Apply4_Status_New__c,Rental_Apply5_Status_New__c,
|
Related_Opportunity1_ID__c,Related_Opportunity2_ID__c,Activity_Type2__c,
|
Account_Laboratory__c,OCM_category_ID__c,OCM_category_Name__c,HospitalID__c,
|
HospitalName__c,Rental_Apply2__c
|
FROM OPDPlan__c
|
WHERE Id=:recordId];
|
return res;
|
}
|
catch(Exception e){
|
System.debug(LoggingLevel.INFO, '*** e: ' + e);
|
return null;
|
}
|
}
|
|
//提交审批失败发送邮件提醒
|
// @AuraEnabled
|
// public static void sendFailEmail(String recordId){
|
// try {
|
// EmailTemplate et=[Select id from EmailTemplate where name =:'OPD计划提交审批创建备品失败' limit 1];
|
// List<User> currUser = [
|
// SELECT Id, Name, Email, Default_Referable_Apply_Equipment_Center__c
|
// FROM User
|
// WHERE Id = :UserInfo.getUserId()];
|
// List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
|
// Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
|
// mail = Messaging.renderStoredEmailTemplate(et.Id, null , recordId);
|
// mail.setSaveAsActivity(false);
|
// List<String> toAddresses = new List<String>();
|
// //toAddresses.add(currUser[0].Email);
|
// toAddresses.add('@sunxia@prec-tech.com');
|
// List<String> ccAddresses = new List<String>();
|
// if (String.isNotBlank(System.Label.AuthRental_Apply_TEST)) {
|
// String[] toAddresses1 = System.Label.AuthRental_Apply_TEST.split(',');
|
// if(toAddresses1 != null) {
|
// mail.setCcAddresses(toAddresses1);
|
// }
|
// }
|
// mail.setToAddresses(toAddresses);
|
// //mail.setCcAddresses(ccAddresses);
|
// emails.add(mail);
|
// Messaging.sendEmail(emails);
|
// }
|
// catch (Exception e) {
|
// System.debug(e.getMessage());
|
// }
|
// }
|
|
//自定义模板发送邮件
|
@AuraEnabled
|
public static void sendTemperatureEmail(String opdName, String ErrorMessage, String opdId){
|
// 邮件List集合
|
try {
|
List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
|
List<User> currUser = [
|
SELECT Id, Name, Email, Default_Referable_Apply_Equipment_Center__c
|
FROM User
|
WHERE Id = :UserInfo.getUserId()];
|
System.debug('currUser==='+currUser.get(0));
|
System.debug('currUser==='+currUser[0]);
|
// 发件人
|
OrgWideEmailAddress[] owea = [select Id from OrgWideEmailAddress where Address = 'olympus@prec-tech.com'];
|
//To Cc
|
List<String> toAddresses = new List<String>();
|
toAddresses.add(currUser.get(0).Email);
|
String[] ccAddresses;
|
if (String.isNotBlank(System.Label.AuthRental_Apply_TEST)) {
|
ccAddresses = System.Label.AuthRental_Apply_TEST.split(',');
|
}
|
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
|
mail.setSaveAsActivity(false);
|
mail.setToAddresses(toAddresses);
|
mail.setCcAddresses(ccAddresses);
|
mail.setSubject('OPD计划:' + opdName + '自动新建备品借出申请失败');
|
mail.setOrgWideEmailAddressId(owea.get(0).Id);
|
String emailBody = '';
|
emailBody += '您好:<br/>';
|
emailBody += 'OPD计划自动创建备品申请失败,还请参考如下信息调整相关内容,谢谢。<br/>';
|
emailBody += ErrorMessage+'<br/>';
|
emailBody += 'OPD计划链接如下:<br/>';
|
emailBody += URL.getSalesforceBaseUrl().toExternalForm() + '/' + opdId; //地址变成获取 20240106 sx 修改
|
mail.setHtmlBody(emailBody);
|
emails.add(mail);
|
|
Messaging.sendEmail(emails);
|
|
}
|
catch (Exception e) {
|
System.debug('sendTemperatureEmail====' + e.getMessage());
|
}
|
}
|
|
@AuraEnabled
|
public static String getRecordTypeByNameAndSobject(String Name ,String SobjectType){
|
List<RecordType> res = new List<RecordType>();
|
try{
|
res = [SELECT Id
|
FROM RecordType
|
WHERE Name=:Name AND SobjectType=: SobjectType];
|
return res[0].Id;
|
}
|
catch(Exception e){
|
System.debug(LoggingLevel.INFO, '*** e: ' + e);
|
return e.getMessage();
|
}
|
}
|
@AuraEnabled
|
public static String cloneOPD(String recordId){
|
String s='';
|
try {
|
String objectName = 'OPDPlan__c'; // 要获取字段的对象名
|
Map<String, Schema.SObjectType> globalDescribe = Schema.getGlobalDescribe();
|
Schema.SObjectType objType = globalDescribe.get(objectName);
|
if (objType != null) {
|
Schema.DescribeSObjectResult objDescribe = objType.getDescribe();
|
Map<String, Schema.SObjectField> fieldMap = objDescribe.fields.getMap();
|
s+='SELECT ';
|
// 现在,fieldMap中包含了对象的所有字段信息
|
for (String fieldName : fieldMap.keySet()) {
|
if(!fieldName.equals('id'))
|
s+=fieldName+',';
|
}
|
|
s=s.removeEnd(',');
|
s+=' FROM OPDPlan__c where id=\''+recordId+'\'';
|
system.debug('SQL:'+s);
|
List<OPDPlan__c> opportunitys = Database.query(s);
|
s='';
|
if(opportunitys.size()>0){
|
system.debug('in!');
|
for (String fieldName : fieldMap.keySet()) {
|
String formaF=fieldMap.get(fieldName).getDescribe().getName();
|
if(opportunitys.get(0).get(fieldName)!=null&&!opportunitys.get(0).get(fieldName).equals('null'))
|
s+=formaF+'='+opportunitys.get(0).get(fieldName)+',';
|
}
|
s=s.removeEnd(',');
|
return s;
|
}
|
}
|
return s;
|
} catch (Exception e) {
|
System.debug('lexCopyToBaseController init error:'+e.getMessage());
|
}
|
return s;
|
}
|
|
//新建申请单 sx 备品智能化 add 20231008 start
|
@AuraEnabled
|
public static String newRentalApply(String recordId){
|
OPDPlan__c opd = [SELECT Id, Name, OriginalOpdPlan__c, OriginalOpdPlanApplication__c, OPDType__c, Campaign__c, Status__c, EquipmentFromOpp__c, EquipmentNotFromOpp__c,
|
Account_Laboratory__c, OCM_category_ID__c, HospitalID__c, IsJump__c, Related_Opportunity1_ID__c, RentalApplyId__c, RentalReson__c, OPDPlan_ImplementDate__c,
|
JumpCause__c, Approved_Status__c, Approved_No__c, Approved_No__r.Name, NoOpp_Reason__c, PlanProdDetail__c, PlanProdDetailSys__c, OwnerId, Owner.Name, OriginalOpdPlan__r.RentalApplyId__c from OPDPlan__c where Id = :recordId];
|
|
System.debug('====newRentalApply===start===' + recordId );
|
//新建备品 产品分类(GI/SP)
|
String productCategory;
|
//备品配套
|
Map<Id,Fixture_Set__c> fixMap = new Map<Id,Fixture_Set__c>();
|
List<Fixture_Set__c> fixList = new List<Fixture_Set__c>();
|
Map<String,Fixture_Set__c> fixDeduplicateMap = new Map<String,Fixture_Set__c>(); //配套去重
|
List<Fixture_Set__c> fixSets = new List<Fixture_Set__c>(); // 去重之后的配套List
|
//备品配套明细
|
List<Fixture_Set_Detail__c> fixSetDetails = new List<Fixture_Set_Detail__c>();
|
//分配配套 从OPD计划的
|
List<Rental_Apply_Equipment_Set__c> updateraesList = new List<Rental_Apply_Equipment_Set__c>();
|
list<Rental_Apply_Equipment_Set_Detail__c> updateraedelList = new List<Rental_Apply_Equipment_Set_Detail__c>();
|
//配套和配套明细的关系 <配套Id, List<明细>>
|
Map<Id, List<Fixture_Set_Detail__c>> setDetalMap = new Map<Id,List<Fixture_Set_Detail__c>>();
|
|
List<String> fixtureModels = new List<String>();
|
if(opd.PlanProdDetail__c != null){
|
List<String> fixSetStrings = opd.PlanProdDetail__c.split(';');
|
if(fixSetStrings.size() > 0){
|
for(String fixSet : fixSetStrings){
|
String tempString = fixSet.trim();
|
if(tempString.indexOf('*')!= -1){
|
fixtureModels.add(tempString.substring(0, tempString.indexOf('*')));
|
}
|
}
|
}
|
}
|
|
if(fixtureModels.size() > 0){
|
//计划出借备品的第一个产品上去判断 如果产品第一分类
|
List<Product2> firstProduct = [SELECT Id, Family FROM Product2 WHERE Fixture_Model_No_T__c = :fixtureModels];
|
if(firstProduct.size()>0){
|
if(firstProduct[0].Family == 'GI'){
|
productCategory = firstProduct[0].Family;
|
}else{
|
productCategory = 'SP';
|
}
|
}
|
|
fixList = [SELECT Id, Fixture_Set_Body_Model_No__c FROM Fixture_Set__c WHERE Fixture_Set_Body_Model_No__c IN :fixtureModels Order By Name];
|
System.debug('fixList====='+fixList);
|
for(Fixture_Set__c fix : fixList){
|
if(!fixDeduplicateMap.containsKey(fix.Fixture_Set_Body_Model_No__c)){
|
fixDeduplicateMap.put(fix.Fixture_Set_Body_Model_No__c,fix);
|
}
|
}
|
System.debug('fixDeduplicateMap====='+fixDeduplicateMap.values());
|
fixSets = fixDeduplicateMap.values();
|
|
System.debug('fixSets====='+fixSets);
|
fixMap = new Map<Id,Fixture_Set__c>([SELECT Id FROM Fixture_Set__c WHERE Fixture_Set_Body_Model_No__c IN :fixtureModels]);
|
fixSetDetails = [SELECT Id, SortInt__c, Fixture_Set__c FROM Fixture_Set_Detail__c WHERE Is_Body__c = true AND Fixture_Set__c IN :fixSets];
|
System.debug('fixMap====='+ fixMap);
|
System.debug('fixSetDetails====='+fixSetDetails);
|
//一个备品配套 对应各自明细
|
for(Fixture_Set_Detail__c fixDetail : fixSetDetails){
|
if(setDetalMap.containsKey(fixDetail.Fixture_Set__c)){
|
setDetalMap.get(fixDetail.Fixture_Set__c).add(fixDetail);
|
}else{
|
List<Fixture_Set_Detail__c> temp = new List<Fixture_Set_Detail__c>();
|
temp.add(fixDetail);
|
setDetalMap.put(fixDetail.Fixture_Set__c,temp);
|
}
|
}
|
System.debug('setDetalMap===='+setDetalMap);
|
|
}else{
|
return '该OPD计划的【计划出借备品信息】没有填写';
|
}
|
|
//新建备品借出申请
|
Rental_Apply__c newRa = new Rental_Apply__c();
|
|
try {
|
//新产品评价
|
if(opd.RentalReson__c == '新产品评价'){
|
newRa.Demo_purpose1__c = '产品试用';
|
newRa.demo_purpose2__c = '新产品评价';
|
newRa.OPDPlan__c = opd.Id;
|
newRa.Hospital__c = opd.HospitalID__c;
|
newRa.Name = '*';
|
newRa.Strategic_dept__c = opd.OCM_category_ID__c; //战略科室
|
newRa.Person_In_Charge__c = opd.OwnerId;
|
newRa.applyUser__c = opd.OwnerId;
|
newRa.Account__c = opd.Account_Laboratory__c;
|
newRa.Request_shipping_day__c = opd.OPDPlan_ImplementDate__c.addDays(-3);
|
newRa.Product_category__c = productCategory;
|
newRa.OPDProduct__c = opd.EquipmentNotFromOpp__c;
|
newRa.OppProduct__c = opd.EquipmentFromOpp__c;
|
newRa.Is_Auto__c = true;
|
//newRa.Hope_Lonaer_date_Num__c = 1;
|
INSERT newRa;
|
//分配配套 分配配套明细
|
for(Fixture_Set__c fix : fixSets){
|
Rental_Apply_Equipment_Set__c raes = new Rental_Apply_Equipment_Set__c();
|
raes.Name = '*';
|
raes.Rental_Apply__c = newRa.Id;
|
raes.Fixture_Set__c = fix.Id;
|
raes.IndexFromUniqueKey__c = 1;
|
raes.Rental_Num__c = 1;
|
updateraesList.add(raes);
|
}
|
INSERT updateraesList;
|
|
|
for(Rental_Apply_Equipment_Set__c raes : updateraesList){
|
if(fixMap.containsKey(raes.Fixture_Set__c)){
|
Rental_Apply_Equipment_Set_Detail__c raesdel = new Rental_Apply_Equipment_Set_Detail__c();
|
raesdel.Name = '*';
|
raesdel.Rental_Apply__c = newRa.Id;
|
raesdel.Fixture_Set_Detail__c = setDetalMap.get(raes.Fixture_Set__c)[0].Id;
|
raesdel.Rental_Num__c = 1;
|
raesdel.Rental_Apply_Equipment_Set__c = raes.Id;
|
raesdel.Is_Body__c = true;
|
raesdel.IndexFromUniqueKey__c = 1;
|
raesdel.IndexFromUniqueKey_Text__c = setDetalMap.get(raes.Fixture_Set__c)[0].SortInt__c + '';
|
updateraedelList.add(raesdel);
|
}
|
}
|
|
INSERT updateraedelList;
|
|
if(updateraedelList.size()>0){
|
for(Rental_Apply_Equipment_Set__c raes : updateraesList){
|
for(Rental_Apply_Equipment_Set_Detail__c raesd : updateraedelList){
|
if(raes.Id == raesd.Rental_Apply_Equipment_Set__c){
|
System.debug('更新配套第一个明细');
|
raes.First_RAESD__c = raesd.Id;
|
}
|
}
|
}
|
UPDATE updateraesList;
|
}
|
|
return '备品新建成功';
|
|
}
|
|
|
//学会
|
if(opd.OriginalOpdPlan__c == null && opd.OriginalOpdPlanApplication__c == null){
|
if(opd.OPDType__c == '学会' && opd.Campaign__c != null){
|
System.debug('学会=======' + opd.Campaign__c);
|
//决裁状态 = 草稿 发送自动生成失败提醒
|
List<String> legalString = System.Label.StatusProcessState.split(',');
|
System.debug('legalString='+legalString);
|
if(legalString.contains(opd.Approved_Status__c) && opd.Approved_Status__c != '草稿'){
|
sendTemperatureEmail(opd.Name,'已申请决裁但决裁状态不符合条件', opd.Id);
|
return '已申请决裁但决裁状态不符合条件';
|
}
|
|
newRa.Demo_purpose1__c = '产品试用';
|
newRa.demo_purpose2__c = '学会展会';
|
newRa.Campaign__c = opd.Campaign__c;
|
newRa.Account__c = opd.Account_Laboratory__c;
|
newRa.Strategic_dept__c = opd.OCM_category_ID__c;
|
newRa.Hospital__c = opd.HospitalID__c;
|
newRa.OPDPlan__c = opd.Id;
|
newRa.Person_In_Charge__c = opd.OwnerId; //备品出借担当
|
newRa.applyUser__c = opd.OwnerId; //操作者
|
newRa.Loaner_received_staff__c = opd.Owner.Name; //收件人姓名
|
newRa.IsJump__c = opd.IsJump__c;
|
newRa.JumpCause__c = opd.JumpCause__c;
|
newRa.Name = '*';
|
newRa.Approved_State_Create__c = opd.Approved_Status__c;
|
newRa.ApprovedNo_Create__c = opd.Approved_No__r.Name;
|
newRa.Product_category__c = productCategory;
|
newRa.OPDProduct__c = opd.EquipmentNotFromOpp__c;
|
newRa.OppProduct__c = opd.EquipmentFromOpp__c;
|
newRa.Is_Auto__c = true;
|
newRa.Request_shipping_day__c = opd.OPDPlan_ImplementDate__c.addDays(-3);
|
}else if(String.isNotBlank(opd.Related_Opportunity1_ID__c)){
|
newRa.Demo_purpose1__c = '产品试用';
|
newRa.demo_purpose2__c = '试用(有询价)';
|
newRa.Follow_UP_Opp__c = opd.Related_Opportunity1_ID__c;
|
newRa.Account__c = opd.Account_Laboratory__c;
|
newRa.Strategic_dept__c = opd.OCM_category_ID__c;
|
newRa.Hospital__c = opd.HospitalID__c;
|
newRa.OPDPlan__c = opd.Id;
|
newRa.Person_In_Charge__c = opd.OwnerId;
|
newRa.applyUser__c = opd.OwnerId;
|
newRa.Loaner_received_staff__c = opd.Owner.Name;
|
newRa.IsJump__c = opd.IsJump__c;
|
newRa.JumpCause__c = opd.JumpCause__c;
|
newRa.Name = '*';
|
newRa.Approved_State_Create__c = opd.Approved_Status__c;
|
newRa.ApprovedNo_Create__c = opd.Approved_No__r.Name;
|
newRa.Product_category__c = productCategory;
|
newRa.OPDProduct__c = opd.EquipmentNotFromOpp__c;
|
newRa.OppProduct__c = opd.EquipmentFromOpp__c;
|
newRa.Is_Auto__c = true;
|
//newRa.Hope_Lonaer_date_Num__c = 1;
|
newRa.Request_shipping_day__c = opd.OPDPlan_ImplementDate__c.addDays(-3);
|
}else{
|
newRa.Demo_purpose1__c = '产品试用';
|
newRa.demo_purpose2__c = '试用(无询价)';
|
newRa.NoOpp_Reason__c = opd.NoOpp_Reason__c;
|
newRa.Account__c = opd.Account_Laboratory__c;
|
newRa.Strategic_dept__c = opd.OCM_category_ID__c;
|
newRa.Hospital__c = opd.HospitalID__c;
|
newRa.OPDPlan__c = opd.Id;
|
newRa.Person_In_Charge__c = opd.OwnerId;
|
newRa.applyUser__c = opd.OwnerId;
|
newRa.Loaner_received_staff__c = opd.Owner.Name;
|
newRa.IsJump__c = opd.IsJump__c;
|
newRa.JumpCause__c = opd.JumpCause__c;
|
newRa.Name = '*';
|
newRa.Approved_State_Create__c = opd.Approved_Status__c;
|
newRa.ApprovedNo_Create__c = opd.Approved_No__r.Name;
|
newRa.Product_category__c = productCategory;
|
newRa.OPDProduct__c = opd.EquipmentNotFromOpp__c;
|
newRa.OppProduct__c = opd.EquipmentFromOpp__c;
|
newRa.Is_Auto__c = true;
|
//newRa.Hope_Lonaer_date_Num__c = 1;
|
newRa.Request_shipping_day__c = opd.OPDPlan_ImplementDate__c.addDays(-3);
|
}
|
|
//INSERT newRa;
|
Database.SaveResult insertRaResult = Database.insert(newRa, false);
|
if(!insertRaResult.isSuccess()){
|
Database.Error emsg = insertRaResult.getErrors()[0];
|
sendTemperatureEmail(opd.Name, emsg.getMessage(), opd.Id);
|
return '备品新建失败' + emsg.getMessage();
|
}
|
|
|
//分配配套 分配配套明细 如果是学会类型的 ,明细插队申请自动打开 Allow_Adjust_Queue_Flag__c
|
for(Fixture_Set__c fix : fixSets){
|
Rental_Apply_Equipment_Set__c raes = new Rental_Apply_Equipment_Set__c();
|
raes.Name = '*';
|
raes.Rental_Apply__c = newRa.Id;
|
raes.Fixture_Set__c = fix.Id;
|
raes.IndexFromUniqueKey__c = 1;
|
raes.Rental_Num__c = 1;
|
updateraesList.add(raes);
|
}
|
INSERT updateraesList;
|
|
|
for(Rental_Apply_Equipment_Set__c raes : updateraesList){
|
if(fixMap.containsKey(raes.Fixture_Set__c)){
|
Rental_Apply_Equipment_Set_Detail__c raesdel = new Rental_Apply_Equipment_Set_Detail__c();
|
raesdel.Name = '*';
|
raesdel.Rental_Apply__c = newRa.Id;
|
raesdel.Fixture_Set_Detail__c = setDetalMap.get(raes.Fixture_Set__c)[0].Id;
|
raesdel.Rental_Num__c = 1;
|
raesdel.Rental_Apply_Equipment_Set__c = raes.Id;
|
raesdel.Is_Body__c = true;
|
raesdel.IndexFromUniqueKey__c = 1;
|
raesdel.IndexFromUniqueKey_Text__c = setDetalMap.get(raes.Fixture_Set__c)[0].SortInt__c + '';
|
if(newRa.demo_purpose2__c == '学会展会'){
|
raesdel.Allow_Adjust_Queue_Flag__c = true;
|
raesdel.jumpReason__c = '默认插队标记';
|
}
|
updateraedelList.add(raesdel);
|
}
|
}
|
INSERT updateraedelList;
|
|
if(updateraedelList.size()>0){
|
for(Rental_Apply_Equipment_Set__c raes : updateraesList){
|
for(Rental_Apply_Equipment_Set_Detail__c raesd : updateraedelList){
|
if(raes.Id == raesd.Rental_Apply_Equipment_Set__c){
|
System.debug('更新配套第一个明细');
|
raes.First_RAESD__c = raesd.Id;
|
}
|
}
|
}
|
UPDATE updateraesList;
|
}
|
|
return newRa.Id+'';
|
}
|
}
|
catch (Exception e) {
|
//sendTemperatureEmail(opd.Name, e.getDmlMessage(0) , opd.Id);
|
try {
|
Integer n = e.getNumDml();
|
//System.assert(false, 'Exception 2 expected');
|
sendTemperatureEmail(opd.Name, e.getDmlMessage(0) , opd.Id);
|
return '备品新建失败' + e.getDmlMessage(0);
|
} catch (TypeException ee) {
|
System.assertEquals('Procedure is only valid for System.DmlException and System.MailException', ee.getMessage());
|
sendTemperatureEmail(opd.Name, ee.getMessage() , opd.Id);
|
return '备品新建失败' + ee.getMessage();
|
}
|
|
}
|
|
|
// 原OPD计划(再申请) OriginalOpdPlan__c 原OPD计划(补充申请) OriginalOpdPlanApplication__c
|
if(String.isNotBlank(opd.OriginalOpdPlan__c)){
|
List<String> opdIdList = new List<String>();
|
String s='';
|
List<Rental_Apply__c> OPDPlans1 = new List<Rental_Apply__c>();
|
try {
|
//获取旧的OPD计划
|
List<OPDPlan__c> opdList = [SELECT Id,Name,OriginalOpdPlan__c FROM OPDPlan__c WHERE Id = :recordId];
|
if(opdList.size() > 0){
|
for (OPDPlan__c opdId : opdList) {
|
opdIdList.add(opdId.OriginalOpdPlan__c);
|
}
|
|
String objectName = 'Rental_Apply__c'; // 要获取字段的对象名
|
Map<String, Schema.SObjectType> globalDescribe = Schema.getGlobalDescribe();
|
Schema.SObjectType objType = globalDescribe.get(objectName);
|
if(objType != null){
|
Schema.DescribeSObjectResult objDescribe = objType.getDescribe();
|
Map<String, Schema.SObjectField> fieldMap = objDescribe.fields.getMap();
|
s+='SELECT '; //跟进询价1的Name deloitte-zhj 20230921
|
// 现在,fieldMap中包含了对象的所有字段信息
|
for (String fieldName : fieldMap.keySet()) {
|
if(!fieldName.equals('id') && !fieldName.equals('createddate') && !fieldName.equals('lastmodifieddate'))
|
s+=fieldName+',';
|
|
}
|
s=s.removeEnd(',');
|
s+=' FROM Rental_Apply__c where OPDPlan__c=\''+opdIdList[0]+'\'';
|
System.debug('===sql======='+s);
|
OPDPlans1 = Database.query(s);
|
}
|
|
//Rental_Apply__c nObj = nObjList[0];
|
Rental_Apply__c newApp = new Rental_Apply__c();
|
if(OPDPlans1.size()>0){
|
newApp = OPDPlans1[0];
|
}else{
|
sendTemperatureEmail(opd.Name, '原OPD计划没有关联备品借出申请单' , opd.Id);
|
return '备品新建失败' + '原OPD计划没有关联备品借出申请单';
|
}
|
newApp.Id = null;
|
newApp.Name = '*';
|
newApp.Status__c = '草案中'; //状态
|
newApp.OPDPlan__c = opd.Id;
|
if(OPDPlans1[0].AWS_Data_Id__c == null){
|
//正常情况应该没有不存在AWDId没值的情况,为了防止报错,所以这么赋值
|
newApp.AWS_Data_Id__c = OPDPlans1[0].Name + 'X';
|
}else{
|
newApp.AWS_Data_Id__c = OPDPlans1[0].AWS_Data_Id__c + 'X';
|
}
|
|
|
//清空若干字段
|
newApp.Request_shipping_day__c = null;
|
newApp.Hope_Lonaer_date_Num__c = null;
|
newApp.Old_Rental_Apply__c = null;
|
newApp.Split_Apply_Reason__c = null;
|
newApp.Cancel_Reason__c = null;
|
newApp.Loaner_cancel_reason__c = null;
|
newApp.Loaner_cancel_request__c = null;
|
newApp.Zsq_Rental_Apply__c = opd.RentalApplyId__c;
|
|
newApp.Request_shipping_day__c = opd.OPDPlan_ImplementDate__c.addDays(-3);
|
newApp.Product_category__c = productCategory;
|
newApp.OPDProduct__c = opd.EquipmentNotFromOpp__c;
|
newApp.OppProduct__c = opd.EquipmentFromOpp__c;
|
newApp.Is_Auto__c = true;
|
System.debug('newApp===='+newApp.Is_Auto__c );
|
INSERT newApp;
|
|
//Rental_Apply__c ra = [SELECT Id]
|
System.debug('再申请 备品配套====='+fixSets);
|
//分配配套 分配配套明细
|
// for(Fixture_Set__c fix : fixSets){
|
// Rental_Apply_Equipment_Set__c raes = new Rental_Apply_Equipment_Set__c();
|
// raes.Name = '*';
|
// raes.Rental_Apply__c = newApp.Id;
|
// raes.Fixture_Set__c = fix.Id;
|
// raes.IndexFromUniqueKey__c = 1;
|
// raes.Rental_Num__c = 1;
|
// updateraesList.add(raes);
|
// }
|
// INSERT updateraesList;
|
|
|
// for(Rental_Apply_Equipment_Set__c raes : updateraesList){
|
// if(fixMap.containsKey(raes.Fixture_Set__c)){
|
// Rental_Apply_Equipment_Set_Detail__c raesdel = new Rental_Apply_Equipment_Set_Detail__c();
|
// raesdel.Name = '*';
|
// raesdel.Rental_Apply__c = newApp.Id;
|
// raesdel.Fixture_Set_Detail__c = setDetalMap.get(raes.Fixture_Set__c)[0].Id;
|
// raesdel.Rental_Num__c = 1;
|
// raesdel.Rental_Apply_Equipment_Set__c = raes.Id;
|
// raesdel.Is_Body__c = true;
|
// raesdel.IndexFromUniqueKey__c = 1;
|
// raesdel.IndexFromUniqueKey_Text__c = setDetalMap.get(raes.Fixture_Set__c)[0].SortInt__c + '';
|
// updateraedelList.add(raesdel);
|
// }
|
// }
|
// INSERT updateraedelList;
|
|
return '备品创建成功';
|
}
|
}catch (DmlException de) {
|
String errormessage = '';
|
errormessage = de.getDmlMessage(0);
|
sendTemperatureEmail(opd.Name, errormessage , opd.Id);
|
return '备品新建失败' + errormessage;
|
}catch (Exception e){
|
String errormessage = '';
|
errormessage = e.getMessage();
|
sendTemperatureEmail(opd.Name, errormessage , opd.Id);
|
return '备品新建失败' + errormessage;
|
}
|
|
}
|
|
|
if(opd.OriginalOpdPlan__c == null && opd.OriginalOpdPlanApplication__c != null){
|
System.debug('======补充申请=====' + opd.OriginalOpdPlanApplication__c);
|
List<String> opdIdList = new List<String>();
|
String s='';
|
List<Rental_Apply__c> OPDPlans = new List<Rental_Apply__c>();
|
try {
|
List<OPDPlan__c> opdList = [SELECT Id,Name,OriginalOpdPlanApplication__c FROM OPDPlan__c WHERE Id = :recordId];
|
if (opdList.size() > 0) {
|
for (OPDPlan__c opdId : opdList) {
|
opdIdList.add(opdId.OriginalOpdPlanApplication__c);
|
}
|
String objectName = 'Rental_Apply__c'; // 要获取字段的对象名
|
Map<String, Schema.SObjectType> globalDescribe = Schema.getGlobalDescribe();
|
Schema.SObjectType objType = globalDescribe.get(objectName);
|
if (objType != null) {
|
Schema.DescribeSObjectResult objDescribe = objType.getDescribe();
|
Map<String, Schema.SObjectField> fieldMap = objDescribe.fields.getMap();
|
s+='SELECT '; //跟进询价1的Name deloitte-zhj 20230921
|
// 现在,fieldMap中包含了对象的所有字段信息
|
for (String fieldName : fieldMap.keySet()) {
|
if(!fieldName.equals('id') && !fieldName.equals('createddate') && !fieldName.equals('lastmodifieddate'))
|
s+=fieldName+',';
|
}
|
|
s=s.removeEnd(',');
|
s+=' FROM Rental_Apply__c where OPDPlan__c=\''+opdIdList[0]+'\'';
|
system.debug('SQL:'+s);
|
OPDPlans = Database.query(s);
|
}
|
|
List<Rental_Apply__c> nObjList = [SELECT Id,Name,
|
Request_return_day__c, // 预定归还日
|
Request_shipping_day__c, // 希望到货日
|
Hope_Lonaer_date_Num__c, // 希望借用天数
|
Cancel_Reason__c, // 取消理由
|
Loaner_cancel_reason__c, // 备品申请取消理由
|
Loaner_cancel_request__c, // 备品申请取消理由备注
|
Request_demo_time__c, // 申请时间
|
Request_approval_time__c, // 批准时间(申请提交时间)
|
Application_accept_time__c, // 申请受理时间(回答时间)
|
Request_answer_time__c, // 备品首次分配时间
|
Response__c, // 应答沟通
|
Assign_Person__c, // 分配人
|
Old_Rental_Apply__c, // 旧借出申请
|
Loaner_medical_Staff__r.Id,
|
// Loaner_medical_Staff__r.AWS_Data_Id__c, //deloitte-zhj 科室负责人的AWSID 20230916
|
// AWS_Data_Id__c, //deloitte-zhj 备品借出申请的AWSID 20230916
|
Follow_UP_Opp__r.Id,
|
Follow_UP_Opp__r.Name, //deloitte-zhj 跟进询价1 20230922
|
repair__r.Id,
|
repair__r.Name //deloitte-zhj 修理 20230922
|
FROM Rental_Apply__c WHERE OPDPlan__c = :opdIdList[0]];
|
if (nObjList.size() > 0) {
|
//需要从原申请单再特殊赋值
|
Rental_Apply__c nObj = nObjList[0];
|
Rental_Apply__c newApp = new Rental_Apply__c();
|
if(OPDPlans.size()>0){
|
//原单赋值
|
newApp = OPDPlans[0];
|
}
|
|
newApp.Id = null;
|
newApp.Name = '*';
|
newApp.Status__c = '草案中'; //状态
|
newApp.OPDPlan__c = opd.Id;
|
// newApp.AWS_Data_Id__c = OPDPlans[0].AWS_Data_Id__c + 'X';
|
newApp.AWS_Data_Id__c ='';
|
newApp.OPDProduct__c = opd.EquipmentNotFromOpp__c;
|
newApp.OppProduct__c = opd.EquipmentFromOpp__c;
|
newApp.Is_Auto__c = true;
|
newApp.Request_shipping_day__c = opd.OPDPlan_ImplementDate__c.addDays(-3);
|
newApp.Hope_Lonaer_date_Num__c = nObjList[0].Hope_Lonaer_date_Num__c;
|
INSERT newApp;
|
|
//分配配套 分配配套明细
|
for(Fixture_Set__c fix : fixSets){
|
Rental_Apply_Equipment_Set__c raes = new Rental_Apply_Equipment_Set__c();
|
raes.Name = '*';
|
raes.Rental_Apply__c = newApp.Id;
|
raes.Fixture_Set__c = fix.Id;
|
raes.IndexFromUniqueKey__c = 1;
|
raes.Rental_Num__c = 1;
|
updateraesList.add(raes);
|
}
|
INSERT updateraesList;
|
|
|
for(Rental_Apply_Equipment_Set__c raes : updateraesList){
|
if(fixMap.containsKey(raes.Fixture_Set__c)){
|
Rental_Apply_Equipment_Set_Detail__c raesdel = new Rental_Apply_Equipment_Set_Detail__c();
|
raesdel.Name = '*';
|
raesdel.Rental_Apply__c = newApp.Id;
|
raesdel.Fixture_Set_Detail__c = setDetalMap.get(raes.Fixture_Set__c)[0].Id;
|
raesdel.Rental_Num__c = 1;
|
raesdel.Rental_Apply_Equipment_Set__c = raes.Id;
|
raesdel.Is_Body__c = true;
|
raesdel.IndexFromUniqueKey__c = 1;
|
raesdel.IndexFromUniqueKey_Text__c = setDetalMap.get(raes.Fixture_Set__c)[0].SortInt__c + '';
|
updateraedelList.add(raesdel);
|
}
|
}
|
INSERT updateraedelList;
|
|
if(updateraedelList.size()>0){
|
for(Rental_Apply_Equipment_Set__c raes : updateraesList){
|
for(Rental_Apply_Equipment_Set_Detail__c raesd : updateraedelList){
|
if(raes.Id == raesd.Rental_Apply_Equipment_Set__c){
|
System.debug('更新配套第一个明细');
|
raes.First_RAESD__c = raesd.Id;
|
}
|
}
|
}
|
UPDATE updateraesList;
|
}
|
|
return '备品创建成功';
|
}
|
}
|
}
|
catch (Exception e) {
|
sendTemperatureEmail(opd.Name, e.getDmlMessage(0) , opd.Id);
|
return '备品新建失败' + e.getMessage();
|
}
|
}
|
|
return '新建备品成功';
|
}
|
//新建申请单 sx 备品智能化 add 20231008 end
|
|
//反映维修合同 封装调用UpdateAssetToCurrentMCWebService
|
@AuraEnabled
|
public static void callUpdateAssetToCurrentMC(String targetAssetId){
|
UpdateAssetToCurrentMCWebService.UpdateAssetToCurrentMC(targetAssetId);
|
}
|
|
// public static void UpdateAssetToCurrentMC(String targetAssetId ){
|
// UpdateAssetToCurrentMCBatch u = new UpdateAssetToCurrentMCBatch();
|
// u.targetAssetId = targetAssetId;
|
// Id execBTId = Database.executeBatch(u, 50);
|
// }
|
|
public class UserResult {
|
@AuraEnabled
|
public string result;
|
public UserResult( ) {
|
result = 'Success';
|
}
|
@AuraEnabled
|
public string id;
|
@AuraEnabled
|
public Boolean isFormalStuff;
|
@AuraEnabled
|
public string firstName;
|
@AuraEnabled
|
public string lastName;
|
@AuraEnabled
|
public string userProvince;
|
@AuraEnabled
|
public string userJobCategory;
|
}
|
|
|
public class InitData{
|
@AuraEnabled
|
public Integer proNewNum;
|
@AuraEnabled
|
public Integer proSameNum;
|
@AuraEnabled
|
public Integer proAccSameNum;
|
@AuraEnabled
|
public Integer proModelNum;
|
@AuraEnabled
|
public Integer proStopNum;
|
@AuraEnabled
|
public OPDPlan__c opdPlanRecord;
|
@AuraEnabled
|
public String renAppName;
|
@AuraEnabled
|
public String opdStatusProcessState;
|
@AuraEnabled
|
public String opdCampaignTypeId;
|
@AuraEnabled
|
public String opdInternalinchargeprovince;
|
@AuraEnabled
|
public String rentalReson;
|
|
}
|
}
|