public with sharing class LexContractAuthorizeController {
|
public LexContractAuthorizeController() {
|
}
|
@AuraEnabled
|
public static Opportunity init(String recordId){
|
try{
|
Opportunity item=[select
|
id,Estimation_Decision__c,Contract_DB_complite_day__c,Contract_Authorize__c,Contract_Authorize_Lock__c,If_Need_Authorize__c,
|
Authorized_DB_No__c,SPO_URL__c,Estimation_No__c,Closing_Bid_Date__c,Bid_Date__c,
|
Cnt_Lost_cancel_Draft__c,Cnt_Lost_cancel_report__c,IF_Submit__c,Agency1__c,Trade__c,Sales_Root__c,Is_Corrosion__c,AccDealerBlacklist__c,
|
Agency2__c,Hospital__c,OwnerId,Sales_assistant_name_text__c
|
//zzm 贸易合规2期 20231120 add start
|
,Hospital__r.TradeComplianceStatus__c
|
,Estimation_Id__c
|
,AccDealerBlacklist2__c
|
//zzm 贸易合规2期 20231120 add end
|
from Opportunity
|
where id = :recordId];
|
return item;
|
|
}catch(Exception e){
|
System.debug('LexStockCancelController init error: '+e.getMessage());
|
}
|
return null;
|
}
|
//zzm 贸易合规2期 20231120 add start
|
//获取询价上最新报价的产品的贸易合规状态
|
@AuraEnabled
|
public static String getProTradeComplianceStatus(String eId) {
|
List<QuoteLineItem> quoteLineItemList = [SELECT
|
Id
|
,QuoteId
|
,Product2Id
|
,PricebookEntry.Product2.USRatio_US__c
|
,PricebookEntry.Product2.USRatio_US_OUT10__c
|
,PricebookEntry.Product2.CountryOfOrigin__c
|
,PricebookEntry.Product2.ProTradeComplianceStatus__c
|
|
from QuoteLineItem where QuoteId= :eId];
|
for(QuoteLineItem qlt: quoteLineItemList) {
|
// String flag = ControllerUtil.tradeComplianceStatusFlag(qlt.PricebookEntry.Product2.CountryOfOrigin__c,qlt.PricebookEntry.Product2.USRatio_US_OUT10__c);
|
String flag = qlt.PricebookEntry.Product2.ProTradeComplianceStatus__c;
|
if(flag == '0') {
|
return '0';
|
}
|
}
|
return '1';
|
|
}
|
|
//贸易合规 20230307 you start
|
//营业拦截提醒
|
@AuraEnabled
|
public static Boolean accSendEmail(String AccDealerBlacklist,String accname,String angency1,String angency2,String ownerids,String ddid,String oppid) {
|
//发送邮件
|
List<Messaging.SingleEmailMessage> sendMails = new List<Messaging.SingleEmailMessage>();
|
List<String> MailsList = new List<String>();
|
List<String> userIdList = new List<String>();
|
if(String.isNotBlank(ownerids)){
|
userIdList.add(ownerids);
|
}
|
if(String.isNotBlank(ddid)){
|
userIdList.add(ddid);
|
}
|
//询价所有人,产品担当,发邮件
|
List<User> UsrList = [SELECT email FROM user WHERE id in :userIdList];
|
//获取各个用户的email
|
for (User u : UsrList){
|
MailsList.add(u.email);
|
}
|
MailsList.add('olympus@prec-tech.com'); //zzm 20231218 合规2期
|
MailsList.add(System.Label.LegalDepartmentEmail); //zzm 20231218 合规2期
|
system.debug('111===:'+MailsList);
|
if (MailsList!=null&&MailsList.size()>0){
|
String title = '';
|
String body = '';
|
//zzm 20240111 合规2期 start
|
String tmpMsg = '黑名单';
|
title = ' 【贸易合规】询价医院/经销商涉及';
|
if(AccDealerBlacklist=='123'){
|
body += '黑名单的客户为:' + accname+ '<br/>';
|
body += '黑名单的经销商1为:' + angency1+ '<br/>';
|
body += '黑名单的经销商2为:' + angency2+ '<br/>';
|
}else if(AccDealerBlacklist=='12'){
|
body += '黑名单的客户为:' + accname+ '<br/>';
|
body += '黑名单的经销商1为:' + angency1+ '<br/>';
|
}else if(AccDealerBlacklist=='23'){
|
body += '黑名单的经销商1为:' + angency1+ '<br/>';
|
body += '黑名单的经销商2为:' + angency2+ '<br/>';
|
}else if(AccDealerBlacklist=='13'){
|
body += '黑名单的客户为:' + accname+ '<br/>';
|
body += '黑名单的经销商2为:' + angency2+ '<br/>';
|
}else if(AccDealerBlacklist=='1'){
|
body += '黑名单的客户为:' + accname+ '<br/>';
|
}else if(AccDealerBlacklist=='2'){
|
body += '黑名单的经销商1为:' + angency1+ '<br/>';
|
}else if(AccDealerBlacklist=='3'){
|
body += '黑名单的经销商2为:' + angency2+ '<br/>';
|
}
|
|
if(AccDealerBlacklist=='890'){
|
tmpMsg = '冻结审核中';
|
body += '冻结审核中的客户为:' + accname+ '<br/>';
|
body += '冻结审核中的经销商1为:' + angency1+ '<br/>';
|
body += '冻结审核中的经销商2为:' + angency2+ '<br/>';
|
}else if(AccDealerBlacklist=='89'){
|
tmpMsg = '冻结审核中';
|
body += '冻结审核中的客户为:' + accname+ '<br/>';
|
body += '冻结审核中的经销商1为:' + angency1+ '<br/>';
|
}else if(AccDealerBlacklist=='90'){
|
tmpMsg = '冻结审核中';
|
body += '冻结审核中的经销商1为:' + angency1+ '<br/>';
|
body += '冻结审核中的经销商2为:' + angency2+ '<br/>';
|
}else if(AccDealerBlacklist=='80'){
|
tmpMsg = '冻结审核中';
|
body += '冻结审核中的客户为:' + accname+ '<br/>';
|
body += '冻结审核中的经销商2为:' + angency2+ '<br/>';
|
}else if(AccDealerBlacklist=='8'){
|
tmpMsg = '冻结审核中';
|
body += '冻结审核中的客户为:' + accname+ '<br/>';
|
}else if(AccDealerBlacklist=='9'){
|
tmpMsg = '冻结审核中';
|
body += '冻结审核中的经销商1为:' + angency1+ '<br/>';
|
}else if(AccDealerBlacklist=='0'){
|
tmpMsg = '冻结审核中';
|
body += '冻结审核中的经销商2为:' + angency2+ '<br/>';
|
}
|
|
body += '<a href="' + System.Label.Environment_Url + oppid + '">'
|
+ System.Label.Environment_Url+ oppid +'</a><br/>';
|
body += '谢谢!';
|
|
Messaging.SingleEmailMessage messageNEW = new Messaging.SingleEmailMessage();
|
messageNEW.setSubject(title + tmpMsg);
|
//zzm 20240111 合规2期 end
|
|
messageNEW.setHtmlBody(body);
|
messageNEW.setCharset('UTF-8');
|
messageNEW.setToAddresses(MailsList);
|
|
//List<String> toCcMailsList = new List<String>();
|
//toCcMailsList.add('youchang@prec-tech.com');
|
//messageNEW.setCcAddresses(toCcMailsList);
|
|
sendMails.add(messageNEW);
|
|
}
|
|
boolean rs = true;
|
if (sendMails.size() > 0) {
|
Messaging.Email[] allMails = new Messaging.Email[]{};
|
for(Integer j = 0; j < sendMails.size(); j++) {
|
allMails.add(sendMails.get(j));
|
}
|
system.debug('222===:'+allMails);
|
|
Messaging.SendEmailResult[] results = Messaging.sendEmail(allMails);
|
System.debug('results 结果 :'+results);
|
for (Integer i = 0; i < results.size(); i++) {
|
if (results[i].success == false) {
|
system.debug('=====send mail error:' + results[i].errors[0].message);
|
rs = false;
|
}
|
}
|
}
|
return rs;
|
}
|
//合规2期警示名单发邮件
|
@AuraEnabled
|
public static Boolean proTradeComplianceSendEmail(String oppid,String btnType) {
|
boolean rs = true;
|
try{
|
Opportunity item=[select
|
id,Estimation_Decision__c,Contract_DB_complite_day__c,Contract_Authorize__c,Contract_Authorize_Lock__c,If_Need_Authorize__c,
|
Authorized_DB_No__c,SPO_URL__c,Estimation_No__c,Closing_Bid_Date__c,Bid_Date__c,
|
Cnt_Lost_cancel_Draft__c,Cnt_Lost_cancel_report__c,IF_Submit__c,Agency1__c,Trade__c,Sales_Root__c,Is_Corrosion__c,AccDealerBlacklist__c,
|
Agency2__c,Hospital__c,OwnerId,Sales_assistant_name_text__c
|
,Hospital__r.Name
|
,Hospital__r.TradeComplianceStatus__c
|
,Agency1__r.Name
|
,Agency1__r.TradeComplianceStatus__c
|
,Agency2__r.Name
|
,Agency2__r.TradeComplianceStatus__c
|
,Sales_assistant_name_text__r.Alias
|
,Estimation_Id__c
|
from Opportunity
|
where id = :oppid];
|
//得到不合格的产品
|
List<QuoteLineItem> ProTradeComplianceList = new List<QuoteLineItem>();
|
List<QuoteLineItem> quoteLineItemList = [SELECT
|
Id
|
,QuoteId
|
,Product2Id
|
,PricebookEntry.Product2.Name
|
,PricebookEntry.Product2.ProTradeComplianceStatus__c
|
|
from QuoteLineItem where QuoteId= :item.Estimation_Id__c];
|
for(QuoteLineItem qlt: quoteLineItemList) {
|
String flag = qlt.PricebookEntry.Product2.ProTradeComplianceStatus__c;
|
if(flag == '0') {
|
ProTradeComplianceList.add(qlt);
|
}
|
}
|
|
|
|
//发送邮件
|
String AccDealerBlacklist = item.AccDealerBlacklist__c;
|
List<Messaging.SingleEmailMessage> sendMails = new List<Messaging.SingleEmailMessage>();
|
List<String> MailsList = new List<String>();
|
List<String> toCcMailsList = new List<String>();
|
|
//询价所有人,产品担当,发邮件
|
User ownerUser = [SELECT email,Alias FROM user WHERE id = :item.OwnerId];
|
toCcMailsList.add('olympus@prec-tech.com');
|
MailsList.add(System.Label.LegalDepartmentEmail);
|
|
//当前操作人发邮件
|
// User currentUser = [SELECT email,Alias FROM user WHERE id = :userinfo.getUserId()];
|
|
User lidongFengIdEmail = [SELECT email,Alias FROM user WHERE id = :System.Label.lidongFengId];
|
if(btnType=='授权申请') {
|
MailsList.add(lidongFengIdEmail.email);
|
}
|
// MailsList.add(currentUser.email);
|
system.debug('111===:'+MailsList);
|
if (MailsList!=null&&MailsList.size()>0){
|
String title = '';
|
String body = '';
|
title = ' 【贸易合规】--询价'+btnType+'涉及警示产品';
|
if(AccDealerBlacklist=='567'){
|
body += '警示名单的客户为:' + item.Hospital__r.Name+' ,状态为:' +item.Hospital__r.TradeComplianceStatus__c + '<br/>';
|
body += '警示名单的经销商1为:' + item.Agency1__r.Name+' ,状态为:' +item.Agency1__r.TradeComplianceStatus__c+ '<br/>';
|
body += '警示名单的经销商2为:' + item.Agency2__r.Name+' ,状态为:' +item.Agency2__r.TradeComplianceStatus__c+ '<br/>';
|
}else if(AccDealerBlacklist=='56'){
|
body += '警示名单的客户为:' + item.Hospital__r.Name+' ,状态为:' +item.Hospital__r.TradeComplianceStatus__c+ '<br/>';
|
body += '警示名单的经销商1为:' + item.Agency1__r.Name+' ,状态为:' +item.Agency1__r.TradeComplianceStatus__c+ '<br/>';
|
}else if(AccDealerBlacklist=='67'){
|
body += '警示名单的经销商1为:' + item.Agency1__r.Name+' ,状态为:' +item.Agency1__r.TradeComplianceStatus__c+ '<br/>';
|
body += '警示名单的经销商2为:' + item.Agency2__r.Name+' ,状态为:' +item.Agency2__r.TradeComplianceStatus__c+ '<br/>';
|
}else if(AccDealerBlacklist=='57'){
|
body += '警示名单的客户为:' + item.Hospital__r.Name+' ,状态为:' +item.Hospital__r.TradeComplianceStatus__c+ '<br/>';
|
body += '警示名单的经销商2为:' + item.Agency2__r.Name+' ,状态为:' +item.Agency2__r.TradeComplianceStatus__c+ '<br/>';
|
}else if(AccDealerBlacklist=='5'){
|
body += '警示名单的客户为:' + item.Hospital__r.Name+' ,状态为:' +item.Hospital__r.TradeComplianceStatus__c+ '<br/>';
|
}else if(AccDealerBlacklist=='6'){
|
body += '警示名单的经销商1为:' + item.Agency1__r.Name+' ,状态为:' +item.Agency1__r.TradeComplianceStatus__c+ '<br/>';
|
}else if(AccDealerBlacklist=='7'){
|
body += '警示名单的经销商2为:' + item.Agency2__r.Name+' ,状态为:' +item.Agency2__r.TradeComplianceStatus__c+ '<br/>';
|
}
|
body += '询价所有人是:' +ownerUser.Alias +',询价助理是:' + item.Sales_assistant_name_text__r.Alias +'<br/>';
|
body += '涉及的警示产品:' ;
|
for(QuoteLineItem qlt: ProTradeComplianceList) {
|
body += '<a href="' + System.Label.Environment_Url + qlt.Product2Id + '">'
|
+ qlt.PricebookEntry.Product2.Name +'</a><br/>';
|
}
|
|
body += '谢谢!';
|
|
Messaging.SingleEmailMessage messageNEW = new Messaging.SingleEmailMessage();
|
messageNEW.setSubject(title);
|
messageNEW.setHtmlBody(body);
|
messageNEW.setCharset('UTF-8');
|
messageNEW.setToAddresses(MailsList);
|
messageNEW.setCcAddresses(toCcMailsList);
|
|
sendMails.add(messageNEW);
|
|
}
|
|
|
if (sendMails.size() > 0) {
|
Messaging.Email[] allMails = new Messaging.Email[]{};
|
for(Integer j = 0; j < sendMails.size(); j++) {
|
allMails.add(sendMails.get(j));
|
}
|
system.debug('222===:'+allMails);
|
|
Messaging.SendEmailResult[] results = Messaging.sendEmail(allMails);
|
System.debug('results 结果 :'+results);
|
for (Integer i = 0; i < results.size(); i++) {
|
if (results[i].success == false) {
|
system.debug('=====send mail error:' + results[i].errors[0].message);
|
rs = false;
|
}
|
}
|
}
|
}catch(Exception e){
|
System.debug('LexStockCancelController proTradeComplianceSendEmail error: '+e.getMessage());
|
rs = false;
|
}
|
return rs;
|
}
|
//zzm 贸易合规2期 20231120 add end
|
@AuraEnabled
|
public static UpdateResult updateOppotunity(
|
String recordId
|
) {
|
UpdateResult result = new UpdateResult();
|
result.recordId = recordId;
|
try{
|
Opportunity opp=new Opportunity(id=recordId);
|
opp.Contract_Authorize__c = true;
|
|
opp.If_Interface_Lock__c=true;
|
|
opp.IF_Submit__c = true;
|
update opp;
|
result.success = true;
|
result.errors = new List<String>();
|
return result;
|
}catch(Exception e){
|
result.success = false;
|
result.errors = new List<String>();
|
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);
|
result.errors.add(mes);
|
}else{
|
result.errors.add(e.getMessage());
|
}
|
System.debug(LoggingLevel.INFO,'updateOppotunity Error : ' + e);
|
}
|
return result;
|
}
|
@AuraEnabled
|
public static String submitApprovalRequest(String recordId) {
|
try{
|
Approval.ProcessSubmitRequest req = new Approval.ProcessSubmitRequest();
|
req.setObjectId(recordId);
|
Approval.ProcessResult result = Approval.process(req);
|
if(result!=null&&result.getErrors()!=null&&result.getErrors().size()>0) return result.getErrors().get(0).getMessage();
|
}catch(Exception e){
|
System.debug('LexStockCancelController submitApprovalRequest error: '+e.getMessage());
|
return e.getMessage();
|
}
|
return null;
|
}
|
|
@AuraEnabled
|
public static String getProfileId(){
|
return UserInfo.getProfileId();
|
}
|
@AuraEnabled
|
public static boolean queryProfileId(){
|
List<Profile> res=[select id,name from profile where name in
|
('2J3_特约店窗口','2M4_市场产品本部担当(询价)','系统管理员','2S6-2_营业助理','2S7_销售本部合同管理窗口','2S6-1_销售本部窗口')
|
];
|
for(Profile p:res){
|
if (UserInfo.getProfileId()==p.id) {
|
return true;
|
}
|
}
|
return false;
|
}
|
@AuraEnabled
|
public static Boolean judgeIsAssistantAppliedOutTime(String Quoteid) {
|
List<PromotionSales__c> PromotionSalesList = [select id,IsAssistantAppliedOutTime__c from PromotionSales__c where Quote__r.Quote_No__c =:Quoteid];
|
for(PromotionSales__c pro : PromotionSalesList){
|
if(pro.IsAssistantAppliedOutTime__c){
|
return false;
|
}
|
}
|
return true;
|
}
|
@AuraEnabled
|
public static Opportunity searchOpportunity(String oppid) {
|
try{
|
Opportunity res=[select Id,Contract_Authorize_Lock__c from Opportunity where Id =:oppid];
|
return res;
|
}catch(Exception e){
|
System.debug('LexStockCancelController submitApprovalRequest error: '+e.getMessage());
|
}
|
return null;
|
}
|
@AuraEnabled
|
// LHJ 阿西赛多检查 Start
|
public static String checkDangerItem(String agency1) {
|
//没有危化品证照的提示信息
|
String licenseStr = '第一经销商没有有效的危险化学品经营许可证。';
|
//没有阿西赛多经销商协议的提示信息
|
String accStr = '第一经销商没有阿西赛多经销商协议。';
|
|
//检查是否有证照
|
List<License_Information__c> licenseList = [SELECT Id
|
FROM License_Information__c
|
WHERE LicenseAndAccount__c = :agency1
|
AND LicenseType__c = '危险化学品经营许可证'
|
AND Is_Active_Formula__c = true
|
|
];
|
//检查是否有阿西赛多协议
|
List<Account> accountList = [SELECT Id
|
FROM Account
|
WHERE Parent.id = :agency1
|
//阿西赛多 增加检索阿西赛多协议 以及 可以做报价(复选框) 精琢技术 wql 2021/01/04 start
|
AND Contract_Quote_Decide_Flag_checkbox__c =true
|
AND Assiesedo_Dealer__c = true
|
//阿西赛多 增加检索阿西赛多协议 以及 可以做报价(复选框) 精琢技术 wql 2021/01/04 end
|
];
|
|
system.debug('licenseList:'+licenseList.size());
|
system.debug('agency1:'+agency1);
|
//①既没有危化品证也没有阿西赛多协议
|
if(licenseList.size() == 0 && accountList.size() ==0){
|
return licenseStr+accStr;
|
}
|
//②没有危化品证
|
else if(licenseList.size() ==0){
|
return licenseStr;
|
}
|
//②没有阿西赛多经销商协议
|
else if(accountList.size() ==0){
|
return accStr;
|
}
|
//③全都有
|
else{
|
return 'OK';
|
}
|
}
|
@AuraEnabled
|
public static String oppCheck(String oppid, String saveFlg) {
|
|
Map<Id, String> proMap= new Map<Id, String>();
|
List<OpportunityLineItem> OppItemList = [select PricebookEntry.Product2Id, PricebookEntry.Product2.Name
|
From OpportunityLineItem
|
Where OpportunityId = :oppid];
|
|
if (OppItemList.size() > 0) {
|
for (OpportunityLineItem opl : OppItemList) {
|
proMap.put(opl.PricebookEntry.Product2Id, opl.PricebookEntry.Product2.Name);
|
}
|
}
|
|
List<Opportunity> oppList = [select Agency1__c from Opportunity where id = :oppid];
|
String angencyId = oppList[0].Agency1__c;
|
String strRet = '';
|
|
if (saveFlg == '1') {
|
strRet = checkProRegisterDecide(proMap, angencyId, oppid);
|
} else {
|
strRet = checkProRegisterDecide(proMap, angencyId, '');
|
}
|
return strRet;
|
}
|
public static String checkProRegisterDecide(Map<Id, String> proMap, String agency1, String OppId) {
|
|
String errormessage = '';
|
Boolean error = false;
|
|
Map<String, String> CheckMap = new Map<String, String>();
|
CheckMap = MapCheckProRegisterDecide(proMap, agency1, OppId);
|
if (CheckMap.isEmpty()) {
|
return 'OK';
|
} else {
|
return '有不可销售产品或超出经销商经营范围,请更新报价单' + CheckMap;
|
}
|
|
}
|
@AuraEnabled
|
public static String updReg(String oppid) {
|
|
List<OpportunityLineItem> updList = new List<OpportunityLineItem>();
|
List<OpportunityLineItem> OppItemList = [select id, Id__c, Register_alleffective__c,
|
PricebookEntry.Product2.RegisterNo_ALL__c
|
From OpportunityLineItem
|
Where OpportunityId = :oppid];
|
for (OpportunityLineItem ol : OppItemList) {
|
ol.Register_alleffective__c = ol.PricebookEntry.Product2.RegisterNo_ALL__c;
|
updList.add(ol);
|
}
|
if (updList.size() > 0) update updList;
|
return 'OK';
|
}
|
public static Map<String, String> MapCheckProRegisterDecide(Map<Id, String> proMap, String agency1, String OppId) {
|
|
Map<String, String> retMap = new Map<String, String>();
|
String errormessage = '';
|
Boolean error = false;
|
Map<String,List<String>> proAllBSstrMap;
|
List<String> proNotNeedList = new List<String>();
|
|
Map<String,List<String>> old_newMap = new Map<String,List<String>>();
|
Map<String,List<String>> new_oldMap = new Map<String,List<String>>();
|
|
// 取得 经营范围对应产品关系
|
List<String> midStr = new List<String>();
|
List<String> midStrO = new List<String>();
|
|
// List<Product_Register_contrast__c> rrList = Product_Register_contrast__c.getall().values();
|
|
// for (Product_Register_contrast__c rr : rrList) {
|
|
// midStr = new List<String>();
|
// midStrO = new List<String>();
|
|
// // 经营范围对应产品关系 Map作成 旧-新对照
|
// if (old_newMap.containsKey(rr.Register_old__c)) {
|
// old_newMap.get(rr.Register_old__c).add(rr.Register_new__c);
|
// } else {
|
// midStrO.add(rr.Register_new__c);
|
// old_newMap.put(rr.Register_old__c, midStrO.clone());
|
// }
|
|
// // 经营范围对应产品关系 Map作成 新-旧对照
|
// if (new_oldMap.containsKey(rr.Register_new__c)) {
|
// new_oldMap.get(rr.Register_new__c).add(rr.Register_old__c);
|
// } else {
|
// midStr.add(rr.Register_old__c);
|
// new_oldMap.put(rr.Register_new__c, midStr.clone());
|
// }
|
|
// }
|
// 取得经销商 医疗器械经营许可证
|
List<License_Information__c> licenseList = [SELECT Id,
|
ScopeKey__c,
|
LicenseType__c
|
FROM License_Information__c
|
WHERE LicenseAndAccount__c = :agency1
|
AND (LicenseType__c = '医疗器械经营许可证'
|
OR LicenseType__c = '第二类医疗器械经营备案凭证')
|
AND Is_Active_Formula__c = true
|
];
|
// 判断 医疗器械经营许可证 是否存在
|
if (licenseList.size() == 0) {
|
error = true;
|
errormessage = '第一经销商没有有效的医疗器械经营许可证。';
|
retMap.put('agency', '0');
|
|
} else {
|
//经销商经营范围
|
List<String> agListA = new List<String>();
|
List<String> agListTemp = new List<String>();
|
List<String> agList = new List<String>();
|
|
//取经销商下 所有医疗器械经营许可证、第二类医疗器械经营备案凭证
|
for (License_Information__c li : licenseList) {
|
if (li.ScopeKey__c != null) {
|
agListA.addAll(li.ScopeKey__c.split(';'));
|
agListTemp.addAll(li.ScopeKey__c.split(';'));
|
}
|
}
|
for (String a : agListTemp) {
|
if (a.length() >= 6) {
|
agList.add(a.substring(0, a.length() - 1));
|
} else {
|
agList.add(a.trim());
|
}
|
}
|
|
//产品注册证
|
Map<String,Map<String,String>> proBSMap = new Map<String,Map<String,String>>();
|
|
Map<String,String> proMidMap = null;
|
//产品所有有效注册证(可以和经销商匹配)
|
proAllBSstrMap = new Map<String,List<String>>();
|
set<Id> proIdList = new set<Id>();
|
|
for (String qli : proMap.keySet()) {
|
proIdList.add(qli);
|
proBSMap.put(qli, proMidMap);
|
List<String> empList = new List<String>();
|
proAllBSstrMap.put(qli, empList);
|
|
}
|
|
List<Product_Register_Link__c> prls = [
|
Select Product2__c,
|
Product2__r.Asset_Model_No__c,
|
Product2__r.SFDA_Approbated_Status__c,
|
Product2__r.SFDA_Status_New__c, // 产品的CFDA最终状态 20181225
|
Product_Register__r.Name,
|
Product_Register__r.BusinessScopeKey__c,
|
Product_Register__r.RegisterNoStatus__c,
|
Product_Register__r.MedPrdClass__c
|
From Product_Register_Link__c
|
where Product2__c in :proIdList
|
];
|
|
// LHJ 20190102 增加跳过逻辑 Start
|
List<Product2> productList = [select ID,SFDA_Status__c from Product2 where id in :proIdList];
|
for (Product2 pro : productList) {
|
if (pro.SFDA_Status__c == '不要') {
|
proNotNeedList.add(pro.ID);
|
}
|
}
|
// LHJ 20190102 增加跳过逻辑 End
|
|
for (Product_Register_Link__c prl : prls) {
|
|
// 设置产品类别MAP
|
if (String.isNotBlank(prl.Product_Register__r.BusinessScopeKey__c)) {
|
system.debug('Product2 +++++++' + prl.Product2__c);
|
if (proBSMap.get(prl.Product2__c) != null) {
|
proBSMap.get(prl.Product2__c).put(prl.Product_Register__r.Name, prl.Product_Register__r.BusinessScopeKey__c);
|
|
} else {
|
Map<String,String> toooMap = new Map<String,String>();
|
toooMap.put(prl.Product_Register__r.Name, prl.Product_Register__r.BusinessScopeKey__c);
|
proBSMap.put(prl.Product2__c, toooMap.clone());
|
}
|
}
|
|
// 产品的产品注册证是"不要"状态 不需要匹配注册证 20181225
|
if (prl.Product2__r.SFDA_Approbated_Status__c == '不要'
|
|
|| prl.Product_Register__r.MedPrdClass__c == '1') {
|
proNotNeedList.add(prl.Product2__c);
|
}
|
}
|
system.debug('proBSMap +++++++' + proBSMap);
|
for (String qli : proMap.keySet()) {
|
|
String proId = qli;
|
String proName = proMap.get(proId);
|
|
if (proId != null) {
|
Boolean haveBS = false;
|
|
// 产品属于非医疗,不用判断经营范围
|
if (proNotNeedList.contains(proId)) {
|
haveBS = true;
|
continue;
|
}
|
|
if (proBSMap.get(proId) == null) {
|
error = true;
|
errormessage += '产品"' + proName + '"没有有效的产品注册证。\n';
|
retMap.put(proId, '1');
|
continue;
|
}
|
|
|
if (proBSMap.get(proId) != null) {
|
system.debug('111 +++++++' + proBSMap);
|
Map<String,String> midMap = new Map<String,String>();
|
midMap = proBSMap.get(proId);
|
|
for (String str : midMap.keySet()) {
|
// LHJ 20200711 Start
|
String strMidMap = midMap.get(str);
|
List<String> proRegList = new List<String>();
|
proRegList.addAll(strMidMap.split(';'));
|
// LHJ 20200711 End
|
for(String strReg:proRegList){
|
// 被定义为"6815A"的产品类别,经营范围中必须有6815或者6815A外才可以匹配。
|
if (strReg.length() == 6) {
|
|
for(String strAg:agListA){
|
if(strAg.length() >= 5 && midMap.get(str.substring(0, str.length() - 1)) == strAg.substring(0,5)){
|
proAllBSstrMap.get(proId).add(str.substring(0, str.length() - 1));
|
haveBS = true;
|
break;
|
}
|
}
|
|
/*if (agListA.contains(midMap.get(str.substring(0, str.length() - 1)))) {
|
proAllBSstrMap.get(proId).add(str.substring(0, str.length() - 1));
|
haveBS = true;
|
}*/
|
} else {
|
system.debug('agList +++++++' + agList);
|
system.debug('midMap +++++++' + strReg);
|
|
if (agList.contains(strReg)) {
|
|
//产品类别,匹配到经销商类别
|
proAllBSstrMap.get(proId).add(str);
|
haveBS = true;
|
break;
|
}
|
}
|
}
|
|
|
}
|
}
|
|
if (!haveBS) {
|
error = true;
|
errormessage += '第一经销商的经营范围中不包含产品" ' + proName + '"。\n';
|
retMap.put(proId, '2');
|
}
|
}
|
}
|
}
|
|
if (retMap.isEmpty() == false) {
|
//return errormessage;
|
|
} else {
|
if (OppId != '') {
|
// 更新所有注册证信息
|
String strRegister_alleffective;
|
List<Product2> pro2List = new List<Product2>();
|
Map<String, Product2> pro2Map = new Map<String, Product2>();
|
List<OpportunityLineItem> updList = new List<OpportunityLineItem>();
|
List<OpportunityLineItem> OppItemList = [select id, Id__c, Register_alleffective__c,PricebookEntry.Product2Id
|
From OpportunityLineItem
|
Where OpportunityId = :OppId];
|
// 非医疗或1类产品,取得
|
if (proNotNeedList != null && proNotNeedList.size() > 0) {
|
pro2List = [select id, SFDA_Approbated_Status__c, RegisterNo_ALL__c from Product2 where Id in :proNotNeedList];
|
}
|
for (Product2 pro2 : pro2List) {
|
pro2Map.put(pro2.Id, pro2);
|
}
|
|
for (OpportunityLineItem ol : OppItemList) {
|
if (proAllBSstrMap.containsKey(ol.PricebookEntry.Product2Id)) {
|
ol.Register_alleffective__c = '';
|
for(String str: proAllBSstrMap.get(ol.PricebookEntry.Product2Id)) {
|
|
if (String.isNotBlank(ol.Register_alleffective__c)) {
|
ol.Register_alleffective__c += ';' + str;
|
} else {
|
ol.Register_alleffective__c = str;
|
}
|
}
|
// 非医疗或1类产品
|
if (pro2Map.containskey(ol.PricebookEntry.Product2Id)) {
|
if (pro2Map.get(ol.PricebookEntry.Product2Id).SFDA_Approbated_Status__c == '不要') {
|
ol.Register_alleffective__c = 'FYL';
|
} else {
|
ol.Register_alleffective__c = pro2Map.get(ol.PricebookEntry.Product2Id).RegisterNo_ALL__c;
|
}
|
}
|
}
|
updList.add(ol);
|
}
|
if (updList.size() > 0) update updList;
|
}
|
}
|
//如果不满足阿西赛多的条件,进入这个变量 20200821 ljh
|
return retMap;
|
}
|
public class UpdateResult {
|
@AuraEnabled public String recordId {get;set;}
|
@AuraEnabled public Boolean success {get;set;}
|
@AuraEnabled public List<String> errors {get;set;}
|
}
|
public class InitData{
|
|
|
}
|
// @AuraEnabled
|
// public static void test(){
|
// 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++;
|
|
// }
|
}
|