public without sharing class LexConsumableController { /*****************検索用******************/ public static Consumable_order__c coc { get; set; } // FIMXE Consumable_order__c のインスタンス、sql多すぎ public static String category1 { get; set; } public static String category5 { get; set; } public static String category4 { get; set; } public static String category3 { get; set; } public static String category_Goods { get; set; } public static Boolean specialCampaign { get; set; } public static Boolean cansee { get; set; } //经销商合同名称 public static String contractName { get; set; } //经销商合同ID public static String contractId { get; set; } //经销商定价查看权限 public static Boolean dealerPricesee { get; set; } /*****************画面初始化用********************************/ /******20160313_add**************/ //public String idCheck {get;set;} public static Boolean editAble { get; set; } public static Boolean edoffersPrice { get; set; } public static String statusEdit { get; set; } public static Boolean returnOrder { get; set; } public static String searchDone { get; set; } //暂用20160323 public static Decimal disCount = 0; //总价格计算结果 public static Decimal sumPrice { get; set; } //自定义特价金额 public static Decimal bargainPrice { get; set; } //产品上下限 public static String[] proLimitAndDate = new List{}; /*****************画面表示Bean******************/ private static List consumableorderdetailsRecords = new List(); public static List consumableorderdetailsRecordsview { get; set; } public static Integer ConsumableorderdetailsCount { get { return consumableorderdetailsRecords == null ? 0 : consumableorderdetailsRecords.size(); } } public static Integer ConsumableorderdetailsviewCount { get { return consumableorderdetailsRecordsview == null ? 0 : consumableorderdetailsRecordsview.size(); } } public static List lower = new List(); //附件 public static List attachmentRecoeds { get; set; } public static List DealerProductId { get; set; } public static Boolean editDelCommitBtnDisabled { get; private set; } public static Boolean saveBtnDisabled { get; private set; } public static Boolean sorderBtnDisabled { get; private set; } public static String decisionCode { get; set; } // 保存后动作: 1.检索 2.排序 public static String baseUrl { get; private set; } public static String sortKey { get; set; } public static String preSortKey { get; private set; } public static Boolean sortOrderAsc { get; private set; } public static String[] sortOrder { get; private set; } private static List contactDealer = new List(); private static String[] columus = new List{ 'Consumable_Product__r.Name', 'Consumable_Product__r.Asset_Model_No__c', 'Consumable_Product__r.Intra_Trade_List_RMB__c', '', '', 'Consumable_Product__r.Category3__c', 'Consumable_Product__r.Category4__c', 'Consumable_Product__r.Category5__c' }; private static String[] columus_no = new List{ 'Product2__c.Name', 'Product2__c.Asset_Model_No__c', 'Product2__c.Intra_Trade_List_RMB__c', '', '', 'Category3__c', 'Category4__c', 'Category5__c' }; // 已选择产品明细 private static List attachmentinfo = new List(); /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/ private static String cate1ForSort = null; private static String accountid = null; private static String accountName = null; // 产品 ID public static String ESetId { get; set; } private static String userId = ''; //private String[] ProidListAll = new String[]{}; public static List categoryOptionList { get; set; } public static List category4OptionList { get; set; } public static List category5OptionList { get; set; } public static List category3Option { get; set; } public static List category4Option { get; set; } public static List category5Option { get; set; } private static Map DealerProductMap = new Map(); public static List orderzaikuId = new List(); //分页功能 public static Integer size { get; set; } public static Integer pageLimit { get; set; } public static Integer noOfRecords { get; set; } public static ApexPages.StandardSetController con { get; set; } public static String soql { get; set; } // 登录者工作地 private static String userWorkLocation; public static String agencyProType { get; set; } public static String agencyProType1 {get;set;} //lt 20230526 安徽两票制 add private static Boolean OSHFLG;//lt 20230517 安徽两票制 add public static String methodType { get; set; } public static String hospitalName { get; set; } public static String hospitalId { get; set; } public static String tempidHp { get; set; } public static String tempidPp { get; set; } private static List hpids = new List(); private static Boolean isfirst = false; //报错和警告信息 public static List errorMsgList = new List(); public static List warningMsgList = new List(); //构造方法 public LexConsumableController() { baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); consumableorderdetailsRecords = new List(); DealerProductId = new List(); attachmentRecoeds = new List(); consumableorderdetailsRecordsview = new List(); editAble = false; edoffersPrice = false; returnOrder = false; categoryOptionList = new List(); category4OptionList = new List(); category5OptionList = new List(); size = Integer.valueOf(System.Label.orderdetLimitsize); pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); } private static void initStandardController() { con = new ApexPages.StandardSetController(Database.getQueryLocator(soql)); con.setPageSize(size); noOfRecords = con.getResultSize(); } public static List product2s() { return (List) con.getRecords(); } private static List getPageInfo() { List reSet = new List(); Map selectedIdMap = new Map(); for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { if (ass.check == true) { selectedIdMap.put(ass.Prod.id, ass.Prod.id); reSet.add(ass); } } consumableorderdetailsRecordsview = new List(); if (editAble) { consumableorderdetailsRecordsview = reSet; } Integer pagestartNo = (con.getPageNumber() * size) - size; Integer pageendNo = (con.getPageNumber() * size) > noOfRecords ? noOfRecords : (con.getPageNumber() * size - 1); Integer addNo = 0; for (Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++) { Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); if (selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)) { addNo++; //continue; } // else if (consumableorderdetailsRecordsview.size() >= pageLimit + size) { // break; // } else { if (consumableorderdetailsRecords[i].check == false) { consumableorderdetailsRecords[i].esd = orderdetails1; } //consumableorderdetailsRecords[i].esd.Dealer_Custom_Price__c = consumableorderdetailsRecords[i].Prod.Intra_Trade_List_RMB__c * disCount / 100; consumableorderdetailsRecordsview.add(consumableorderdetailsRecords[i]); addNo++; } // if (addNo >= size) // break; } return consumableorderdetailsRecordsview; } @AuraEnabled public static Results init(String type, String esetId, String keywordStr) { Results results = new Results(); results.isNoteStay = LexUtility.getIsNoteStay(); errorMsgList = new List(); warningMsgList = new List(); baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); consumableorderdetailsRecords = new List(); DealerProductId = new List(); attachmentRecoeds = new List(); consumableorderdetailsRecordsview = new List(); editAble = false; edoffersPrice = false; returnOrder = false; categoryOptionList = new List(); category4OptionList = new List(); category5OptionList = new List(); size = Integer.valueOf(System.Label.orderdetLimitsize); pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); ESetId = esetId; methodType = type; if(String.isBlank(methodType) && String.isNotBlank(ESetId)){ List oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid]; methodType = oclist.get(0).orderPattern__c; } statusEdit = keywordStr; System.debug('Param:'+ESetId+'---'+methodType+'---'+statusEdit); try { sortKey = '1'; preSortKey = '1'; sortOrderAsc = false; sortOrder = new String[8]; sortOrder = new List{ ' ', ' ', ' ', ' ', '↓', '', '', '' }; cate1ForSort = ''; decisionCode = ''; sumPrice = 0; specialCampaign = false; if (ESetId != null && ESetId != '' && statusEdit == '' && statusEdit == null) { editAble = false; } else if ((ESetId == null || ESetId == '') && (statusEdit == '' || statusEdit == null)) { editAble = true; } else if (ESetId != null && ESetId != '' && statusEdit != '' && statusEdit != null) { editAble = true; } userId = UserInfo.getUserId(); List Useracc = new List(); //lt 20230517 安徽两票制 add ,OSHFLG__c Useracc = [SELECT accountid, Work_Location__c,UserPro_Type__c,OSHFLG__c FROM user WHERE id = :userId ]; accountid = Useracc[0].accountid; userWorkLocation = Useracc[0].Work_Location__c; agencyProType = Useracc[0].UserPro_Type__c; agencyProType1 = Useracc[0].UserPro_Type__c; //lt 20230526 安徽两票制 add //lt 20230526 安徽两票制 start OSHFLG = Useracc[0].OSHFLG__c; //lt 20230517 安徽两票制 add if(OSHFLG){ agencyProType1 = 'OSH'; } else if(String.isBlank(Useracc[0].UserPro_Type__c)){ agencyProType1 = 'ET'; } //lt 20230526 安徽两票制 end if (String.isBlank(Useracc[0].UserPro_Type__c)) { agencyProType = 'ET'; } //错误信息提示 if (String.isNotBlank(methodType) && methodType.equals('hospitalorder') && agencyProType == 'ET') { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '您没有订货医院特价产品的权限!')); errorMsgList.add('您没有订货医院特价产品的权限!'); } contactDealer = new List(); Date dateToday = Date.today(); //查该经销商下所有有效合同 List contractList = [ SELECT Id, Name, RecordType.DeveloperName FROM Account WHERE RecordType.DeveloperName = 'AgencyContract' AND Contract_Decide_Start_Date__c <= :dateToday AND Contract_Decide_End_Date__c >= :dateToday and Contact_Type__c like :agencyProType1//lt 20230517 安徽两票制 add 1 and Agent_Ref__c =:accountid and OSH_Dealer__c =: OSHFLG //lt 20230517 安徽两票制 add ]; for (Account contract : contractList) { contactDealer.add(contract.Id); } DealerProductMap = new Map(); DealerProductId = getDealerProductId(); Account accountInfo = [ SELECT Name, Dealer_discount__c, Product_Limit_Date__c, Product_Limit_DateENG__c FROM account WHERE id = :accountid ]; accountName = accountInfo.Name; String product_Limit; if (agencyProType == 'ET') { product_Limit = accountInfo.Product_Limit_Date__c; } else { product_Limit = accountInfo.Product_Limit_DateENG__c; } if (product_Limit != null && product_Limit != '') { proLimitAndDate = product_Limit.split(','); } saveBtnDisabled = false; sorderBtnDisabled = false; coc = new Consumable_order__c(); consumableorderdetailsRecords = new List(); if (String.isBlank(agencyProType)) { //return ; } List Product2Selected = new List(); Map MidMap = new Map(); //经销商在库数据 List countDel = [ SELECT Id, Bar_Code__c, Name, Inventory_date__c, Consumable_Product__c, Consumable_Product__r.Asset_Model_No__c, Recordtypeid, Box_Piece__c, hospitalSpecialOffer__c, promotionorder__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Dealer_Returned__c = FALSE AND Lose_Flag__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c != NULL AND Isoverdue__c = 1 AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Dealer_Info_text__c = :accountName ]; if (ESetId == null || ESetId == '') { //获取经销商默认的一个合同 List contract = [ SELECT id, Name, State_Master__c, State_Master__r.Name FROM Account WHERE ParentId = :accountid AND Contact_Type__c like :agencyProType1 //lt 20230517 安徽两票制 add 1 AND Contract_Decide_Start_Date__c <= :Date.Today() AND Contract_Decide_End_Date__c >= :Date.Today() AND OSH_Dealer__c =: OSHFLG //lt 20230517 安徽两票制 add ]; if (contract.size() == 1) { contractName = contract[0].Name; contractId = contract[0].Id; } editDelCommitBtnDisabled = true; List DealerProductId = new List(); soql = makeSoql('', '', '', '', '', false, DealerProductId); size = Integer.valueOf(System.Label.orderdetLimitsize); initStandardController(); product2Selected = Database.query(soql); for (Integer i = 0; i < product2Selected.size(); i++) { consumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(product2Selected[i])); MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } //只有在协议订货时会走这个for循环 其他两种订货模式都走的searchorderdetails方法 if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { for (Integer i = 0; i < countDel.size(); i++) { if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } } consumableorderdetailsRecords = new List(); //经销商定价 计算 for (ConsumableorderdetailsInfo bss : MidMap.values()) { bss.sortBy = sortOrderAsc; bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; if (DealerProductMap.containsKey(bss.Prod.Id)) { bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; } consumableorderdetailsRecords.add(bss); } consumableorderdetailsRecords.sort(); if (methodType != null && methodType != '' && (methodType.equals('hospitalorder') || methodType.equals('promotionorder'))) { searchorderdetails(methodType,accountid,hospitalId,contractId,userWorkLocation,accountName,proLimitAndDate,editAble); isfirst = true; } getPageInfo(); } else { if (methodType != null && methodType.equals('hospitalorder')) { List oclist = [ SELECT orderPattern__c, Order_ForHospital__c, Order_ForHospital__r.Name FROM Consumable_order__c WHERE id = :ESetid ]; if (oclist.get(0).orderPattern__c.equals('hospitalorder')) { hospitalName = oclist.get(0).Order_ForHospital__r.Name; hospitalId = oclist.get(0).Order_ForHospital__c; } } List ConsumableorderdetailsSelected = new List(); //修改 List qs = new List(); qs = [ SELECT Id, Name, Order_status__c, Consumable_pdf_insert_day__c, Dealer_Info__c, Deliver_date__c, Order_Reason__c, Order_date__c, Contract_application_decision__c, Total_amount__c, Offers_Price__c, Order_effective_contact__c, Order_effective_contact__r.Name FROM Consumable_order__c WHERE Id = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation ]; if (qs.size() > 0) { coc = qs[0]; decisionCode = coc.Contract_application_decision__c; contractName = coc.Order_effective_contact__r.Name; contractId = coc.Order_effective_contact__r.Id; } if (qs[0].Order_status__c == '已提交' || qs[0].Order_status__c == '批准' || qs[0].Order_status__c == '附件上传完成') { saveBtnDisabled = true; sorderBtnDisabled = true; editDelCommitBtnDisabled = false; } // 選択済みの明细を取得 ConsumableorderdetailsSelected = [ SELECT Id, Name, Consumable_order__c, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Count__c, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Consumable_Product__r.Intra_Trade_List_RMB__c, Consumable_Product__r.Asset_Model_No__c, Sum_of_money__c, Consumable_Product__r.SFDA_Status__c, Consumable_Product__r.Product2__r.Packing_list_manual__c, Consumable_Product__r.Product2__r.SFDA_Approbation_No__c, Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c FROM Consumable_Orderdetails__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail1_Order AND Consumable_order__c = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation AND Consumable_order__r.Dealer_Info__c = :accountid ]; for (Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected) { if(cdc1.Consumable_Product__c != null){ orderzaikuId.add(cdc1.Consumable_Product__c); } } soql = makeSoqlorderdet(); System.debug('soql:'+soql); size = orderzaikuId.size(); initStandardController(); product2Selected = Database.query(soql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } for (Integer i = 0; i < countDel.size(); i++) { //add by rentx 2020-12-09 if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { if (countDel[i].hospitalSpecialOffer__c == true) { //然后循环CountDel去修改map里的allnumber if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { if (countDel[i].promotionorder__c == true) { if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } else if ( String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder')) ) { if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } } consumableorderdetailsRecords = new List(); //再把map里的值从新赋给ConsumableorderdetailsRecords for (ConsumableorderdetailsInfo bss : MidMap.values()) { bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; if (DealerProductMap.containsKey(bss.Prod.Id)) { bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; } consumableorderdetailsRecords.add(bss); } for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { ass.sortBy = sortOrderAsc; for (Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected) { sumPrice += cdc1.Sum_of_money__c; if (ass.prod.Id == cdc1.Consumable_Product__c) { ass.check = true; ass.esd = cdc1; } } } //附件 // attachmentinfo = [SELECT Id, Name, OwnerId, Owner.Name FROM Attachment WHERE parentid = :ESetId]; // if (attachmentinfo.size() > 0) { // for (Integer i = 0; i < attachmentinfo.size(); i++) { // attachmentRecoeds.add(new ConsumableorderdetailsInfo(attachmentinfo[i])); // } // } List cvInfo = [SELECT Id, Title, OwnerId,Owner.Name, CreatedDate,ContentDocumentId FROM ContentVersion WHERE FirstPublishLocationId = :ESetId]; if (cvInfo.size() > 0) { for (Integer i = 0; i < cvInfo.size(); i++) { attachmentRecoeds.add(new ConsumableorderdetailsInfo(cvInfo[i])); } } // consumableorderdetailsRecords.sort(); getPageInfo(); } //计算库存上、下限 productLimtAndDate(); lowerRecord(); //明细排序 List upper = new List(); if (String.isNotBlank(ESetid)) { for (ConsumableorderdetailsInfo bss : consumableorderdetailsRecords) { if(bss.esd.Consumable_count__c != null && bss.allnumber != null && bss.upperlimit != null){ if (bss.esd.Consumable_count__c + bss.allnumber > bss.upperlimit) { upper.add(bss.esd.Consumable_Product__r.Name__c); } } } } if (upper.size() > 0) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '存在以下产品订货数量超出库存上限!')); warningMsgList.add('存在以下产品订货数量超出库存上限!'); for (Integer i = 0; i < upper.size(); i++) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, upper[i])); warningMsgList.add(upper[i]); } } if (lower.size() > 0) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '存在以下产品订货数量低于库存下限!')); warningMsgList.add('存在以下产品订货数量低于库存下限!'); for (Integer i = 0; i < lower.size(); i++) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, lower[i])); warningMsgList.add(lower[i]); } } //价格查看权限 Schema.DescribeFieldResult dfr = Product2__c.Intra_Trade_List_RMB__c.getDescribe(); cansee = dfr.isAccessible(); AggregateResult[] categoryList = [ SELECT Count(id), Category3_text__c c3c FROM Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c LIKE :agencyProType AND Category3_text__c != NULL GROUP BY Category3_text__c ]; //categoty3 // categoryOptionList = new List(); category3Option = new List(); // categoryOptionList.add(new SelectOption('', '-无-')); category3Option.add(new CusOption('-无-','')); for (AggregateResult category3Search : categoryList) { String deliverycnt = String.valueOf(category3Search.get('c3c')); // categoryOptionList.add(new SelectOption(deliverycnt, deliverycnt)); category3Option.add(new CusOption(deliverycnt,deliverycnt)); } //categoty4 // category4OptionList = new List(); category4Option = new List(); // category4OptionList.add(new SelectOption('', '-无-')); category4Option.add(new CusOption('-无-','')); //categoty5 // category5OptionList = new List(); category5Option = new List(); // category5OptionList.add(new SelectOption('', '-无-')); category5Option.add(new CusOption('-无-','')); //return msg consumableorderdetailsRecordsview = consumableorderdetailsRecords; getConsumableShowTableFieldValue(); results.result = 'Success'; results.coc = coc; results.editAble = editAble; results.edoffersPrice = edoffersPrice; results.editDelCommitBtnDisabled = EditDelCommitBtnDisabled; results.category3Option = category3Option; results.category4Option = category4Option; results.category5Option = category5Option; results.hospitalName = hospitalName; results.contractName = contractName; results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; results.attachmentRecoeds = attachmentRecoeds; results.cansee = cansee; results.agencyProType = agencyProType; results.agencyProType1 = agencyProType1; results.OSHFLG = OSHFLG; results.userWorkLocation = userWorkLocation; results.accountName = accountName; results.category_Goods = category_Goods; results.specialCampaign = specialCampaign; results.dealerProductId = DealerProductId; results.accountid = accountid; results.hospitalId = hospitalId; results.contractId = contractId; results.contactDealer = contactDealer; results.errorMsgList = errorMsgList; results.warningMsgList = warningMsgList; results.methodType = methodType; results.proLimitAndDate = proLimitAndDate; } catch (Exception e) { results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } @AuraEnabled public static Results categoryAllload(String agencyProTypeStr, String category3Str){ Results results = new Results(); agencyProType = agencyProTypeStr; category3 = category3Str; try { AggregateResult[] category4List = [ SELECT Count(id), Category4_text__c c4c FROM Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c LIKE :agencyProType AND Category3_text__c = :category3 AND Category4_text__c != NULL AND Category5_text__c != NULL GROUP BY Category4_text__c ]; // category4OptionList = new List(); category4Option = new List(); // category4OptionList.add(new SelectOption('', '-无-')); category4Option.add(new CusOption('-无-', '')); for (AggregateResult category4Search : category4List) { String deliverycnt4 = String.valueOf(category4Search.get('c4c')); // category4OptionList.add(new SelectOption(deliverycnt4, deliverycnt4)); category4Option.add(new CusOption(deliverycnt4, deliverycnt4)); } AggregateResult[] category5List = [ SELECT Count(id), Category5_text__c c5c FROM Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c LIKE :agencyProType AND Category3_text__c = :category3 AND Category4_text__c != NULL AND Category5_text__c != NULL GROUP BY Category5_text__c ]; // category5OptionList = new List(); category5Option = new List(); // category5OptionList.add(new SelectOption('', '-无-')); category5Option.add(new CusOption('-无-', '')); for (AggregateResult category5Search : category5List) { String deliverycnt5 = String.valueOf(category5Search.get('c5c')); // category5OptionList.add(new SelectOption(deliverycnt5, deliverycnt5)); category5Option.add(new CusOption(deliverycnt5, deliverycnt5)); } results.category4Option = category4Option; results.category5Option = category5Option; results.result = 'Success'; } catch (Exception e) { results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } @AuraEnabled public static Results categoryload(String agencyProTypeStr, String category3Str, String category4Str){ Results results = new Results(); agencyProType = agencyProTypeStr; category3 = category3Str; category4 = category4Str; try { AggregateResult[] category4List = [ SELECT Count(id), Category4_text__c c4c FROM Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c LIKE :agencyProType AND Category3_text__c = :category3 AND Category4_text__c != NULL AND Category5_text__c != NULL GROUP BY Category4_text__c ]; // category4OptionList = new List(); category4Option = new List(); // category4OptionList.add(new SelectOption('', '-无-')); category4Option.add(new CusOption('-无-', '')); for (AggregateResult category4Search : category4List) { String deliverycnt4 = String.valueOf(category4Search.get('c4c')); // category4OptionList.add(new SelectOption(deliverycnt4, deliverycnt4)); category4Option.add(new CusOption(deliverycnt4, deliverycnt4)); } AggregateResult[] category5List = [ SELECT Count(id), Category5_text__c c5c FROM Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c LIKE :agencyProType AND Category3_text__c = :category3 AND Category4_text__c = :category4 AND Category5_text__c != NULL GROUP BY Category5_text__c ]; // category5OptionList = new List(); category5Option = new List(); // category5OptionList.add(new SelectOption('', '-无-')); category5Option.add(new CusOption('-无-', '')); for (AggregateResult category5Search : category5List) { String deliverycnt5 = String.valueOf(category5Search.get('c5c')); // category5OptionList.add(new SelectOption(deliverycnt5, deliverycnt5)); category5Option.add(new CusOption(deliverycnt5, deliverycnt5)); } results.category4Option = category4Option; results.category5Option = category5Option; results.result = 'Success'; } catch (Exception e) { results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } // 画面初始化 public static void lowerRecord() { List lowerRecord = new List(); //库存明细取得 Map midMaprecord = new Map(); List product2Selected = [ SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c FROM Product2__c WHERE Pro2_Dealer_Object__c = TRUE AND Estimation_Entry_Possibility__c = '○' ]; for (Integer i = 0; i < product2Selected.size(); i++) { lowerRecord.add(new ConsumableorderdetailsInfo(product2Selected[i])); //先把ConsumableorderdetailsRecords 做成map midMaprecord.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } List countDel = [ SELECT Id, Bar_Code__c, Name, Inventory_date__c, Consumable_Product__c, Consumable_Product__r.Asset_Model_No__c, Recordtypeid, Guarantee_period_for_products__c, Isoverdue__c, Box_Piece__c, hospitalSpecialOffer__c, promotionorder__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Dealer_Returned__c = FALSE AND Lose_Flag__c = FALSE AND Bar_Code__c != NULL AND Isoverdue__c = 1 AND Arrive_Owner_Work_Location__c = :userWorkLocation //AND Consumable_order_minor__r.Dealer_Info__c = :accountid AND Dealer_Info_text__c = :accountName ]; for (Integer i = 0; i < countDel.size(); i++) { //add by rentx 2020-12-09 if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { if (countDel[i].hospitalSpecialOffer__c == true) { //然后循环CountDel去修改map里的allnumber if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); } } } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { if (countDel[i].promotionorder__c == true) { if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); } } } else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); } } } } lowerRecord = new List(); //再把map里的值从新赋给ConsumableorderdetailsRecords for (ConsumableorderdetailsInfo bss : midMaprecord.values()) { lowerRecord.add(bss); } allProductLimt(lowerRecord); for (ConsumableorderdetailsInfo bss : lowerRecord) { if (bss.allnumber < bss.lowerlimit) { lower.add(bss.Prod.Name__c); } } } //库存上下限 public static void productLimtAndDate() { String nowName = null, nowRightAsstModelNo = null; Map productLimt = new Map(); for (Integer i = 0; i < proLimitAndDate.size(); i++) { nowName = proLimitAndDate[i]; if (nowName.indexOf('|') >= 0) { nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|')); nowName = nowName.subString(nowName.indexOf('|') + 1); } productLimt.put(nowRightAsstModelNo, nowName); } for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) { ass.lowerlimit = decimal.valueOf( productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|')) ); ass.upperlimit = decimal.valueOf( productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1) ); } } } //全部库存上下限 private static void allProductLimt(List lowerRecord) { String nowName = null, nowRightAsstModelNo = null; Map productLimt = new Map(); for (Integer i = 0; i < proLimitAndDate.size(); i++) { nowName = proLimitAndDate[i]; if (nowName.indexOf('|') >= 0) { nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|')); nowName = nowName.subString(nowName.indexOf('|') + 1); } productLimt.put(nowRightAsstModelNo, nowName); } for (ConsumableorderdetailsInfo ass : lowerRecord) { if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) { ass.lowerlimit = decimal.valueOf( productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|')) ); ass.upperlimit = decimal.valueOf( productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1) ); } } } @AuraEnabled public static Results searchConsumableorderdetails( String userWorkLocationStr, String agencyProTypeStr, String accountNameStr, String accountIdStr, String hospitalIdStr, String contractIdStr, String category1Str, String category3Str, String category4Str, String category5Str, String category_GoodStr, Boolean specialCampaignStr, String dealerProductIdStr, String methodTypeStr, String consumableorderdetailsRecordsviewStr, Boolean editAbleStr, List proLimitAndDateList ){ Results results = new Results(); errorMsgList = new List(); warningMsgList = new List(); userWorkLocation = userWorkLocationStr; agencyProType = agencyProTypeStr; accountName = accountNameStr; accountid = accountIdStr; hospitalId = hospitalIdStr; contractId = contractIdStr; category1 = category1Str; category3 = category3Str; category4 = category4Str; category5 = category5Str; category_Goods = category_GoodStr; specialCampaign = specialCampaignStr; methodType = methodTypeStr; editAble = editAbleStr; proLimitAndDate = proLimitAndDateList; dealerProductId = (List)JSON.deserialize(dealerProductIdStr, List.class); consumableorderdetailsRecordsview = (List)JSON.deserialize(consumableorderdetailsRecordsviewStr, List.class); size = Integer.valueOf(System.Label.orderdetLimitsize); pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); try { searchDone = 'searchDone'; sortKey = '1'; preSortKey = '1'; sortOrderAsc = false; sortOrder = new String[7]; sortOrder = new List{ ' ', ' ', ' ', ' ', '↓', '', '', '' }; Map selectedIdMap = new Map(); List derdetailsRecords = new List(); Map MidMap = new Map(); List reSet = new List(); List countDel = [ SELECT Id, Bar_Code__c, Name, Inventory_date__c, Consumable_Product__c, Consumable_Product__r.Asset_Model_No__c, Recordtypeid, Box_Piece__c, //add by rentx 2020-12-09 hospitalSpecialOffer__c, promotionorder__c //add by rentx 2020-12-09 FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Dealer_Returned__c = FALSE AND Lose_Flag__c = FALSE AND Bar_Code__c != NULL AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Dealer_Info_text__c = :accountName ]; List product2Selected = new List(); consumableorderdetailsRecords = new List(); soql = makeSoql(category1, category_Goods, category3, category4, category5, specialCampaign, DealerProductId); size = Integer.valueOf(System.Label.orderdetLimitsize); initStandardController(); System.debug('soql:'+soql); product2Selected = Database.query(soql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } for (Integer i = 0; i < countDel.size(); i++) { //然后循环CountDel去修改map里的allnumber if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { if (countDel[i].hospitalSpecialOffer__c == true) { if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { if (countDel[i].promotionorder__c == true) { if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } } //再把map里的值从新赋给ConsumableorderdetailsRecordsa0l0l0000000byXAAQ for (ConsumableorderdetailsInfo bss : MidMap.values()) { if (selectedIdMap.containsKey(bss.Prod.id)) { continue; } else { if (DealerProductMap.containsKey(bss.Prod.Id)) { bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; } bss.sortBy = sortOrderAsc; bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; consumableorderdetailsRecords.add(bss); } } consumableorderdetailsRecords.sort(); productLimtAndDate(); getPageInfo(); sortKey = '1'; preSortKey = '1'; sortOrderAsc = false; sortOrder = new String[7]; sortOrder = new List{ ' ', ' ', ' ', '', '', '', '', '' }; cate1ForSort = category1; // 显示数据条数信息 // makeMessage(); results.errorMsgList = errorMsgList; results.warningMsgList = warningMsgList; if(consumableorderdetailsRecords.size() > 0){ getConsumableShowTableFieldValue(); results.result = 'Success'; results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; results.errorMsg = '搜索到' + consumableorderdetailsRecords.size() + '件产品'; }else { getConsumableShowTableFieldValue(); results.result = 'Fail'; results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; results.errorMsg = '没有搜索到相关数据'; } } catch (Exception e) { results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } //医院--检索 @AuraEnabled public static Results searchorderdetails( String methodTypeStr, String accountIdStr, String hospitalIdStr, String contractIdStr, String userWorkLocationStr, String accountNameStr, List proLimitAndDateList, Boolean editAbleStr ){ Results results = new Results(); methodType = methodTypeStr; accountId = accountIdStr; hospitalId = hospitalIdStr; contractId = contractIdStr; userWorkLocation = userWorkLocationStr; accountName = accountNameStr; proLimitAndDate = proLimitAndDateList; editAble = editAbleStr; size = Integer.valueOf(System.Label.orderdetLimitsize); pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); try { soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; if (methodType.equals('hospitalorder')) { //医院id 有值 List hplist = [ SELECT id, product__c FROM hospitalprice__c WHERE account__c = :accountid AND hospital__c = :hospitalId ]; if (hplist != null && hplist.size() > 0) { List hpids = new List(); for (hospitalprice__c hc : hplist) { hpids.add(hc.product__c); } if (hpids != null && hpids.size() > 0) { soql += ' AND Id in : hpids '; } } else { //该医院下没有符合医院特价的产品 soql += ' AND Id = null '; } } else if (methodType.equals('promotionorder')) { List dpclist = [ SELECT Id, Dealer_Product2__c FROM Dealer_Product__c WHERE Dealer_Contact__c = :contractId AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL) ]; if (dpclist != null && dpclist.size() > 0) { String ids = '('; for (Dealer_Product__c hc : dpclist) { hpids.add(hc.Dealer_Product2__c); ids += '\'' + hc.Dealer_Product2__c + '\','; } ids = ids.substring(0, ids.length() - 1) + ')'; if (hpids != null && hpids.size() > 0) { // soql += ' AND Id in : hpids '; soql += ' AND Id in ' + ids; } } else { //该经销商下没有促销价格的产品 soql += ' AND Id = null '; } } size = Integer.valueOf(System.Label.orderdetLimitsize); initStandardController(); List product2Selected = new List(); Map MidMap = new Map(); Map selectedIdMap = new Map(); consumableorderdetailsRecords = new List(); product2Selected = Database.query(soql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } List countDel = [ SELECT Id, Bar_Code__c, Name, Inventory_date__c, Consumable_Product__c, Consumable_Product__r.Asset_Model_No__c, Recordtypeid, Box_Piece__c, hospitalSpecialOffer__c, promotionorder__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Dealer_Returned__c = FALSE AND Lose_Flag__c = FALSE AND Bar_Code__c != NULL AND Arrive_Owner_Work_Location__c = :userWorkLocation //AND Consumable_order_minor__r.Dealer_Info__c = :accountid AND Dealer_Info_text__c = :accountName ]; for (Integer i = 0; i < countDel.size(); i++) { if (methodType.equals('hospitalorder')) { if (countDel[i].hospitalSpecialOffer__c == true) { //然后循环CountDel去修改map里的allnumber if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } else if (methodType.equals('promotionorder')) { if (countDel[i].promotionorder__c == true) { //然后循环CountDel去修改map里的allnumber if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒') { Jstage.allnumber = Jstage.allnumber + 1; } else { Jstage.allnumber_piece = Jstage.allnumber_piece + 1; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } } //再把map里的值从新赋给ConsumableorderdetailsRecordsa0l0l0000000byXAAQ for (ConsumableorderdetailsInfo bss : MidMap.values()) { if (selectedIdMap.containsKey(bss.Prod.id)) { continue; } else { if (DealerProductMap.containsKey(bss.Prod.Id)) { bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; } bss.sortBy = sortOrderAsc; bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; consumableorderdetailsRecords.add(bss); } } consumableorderdetailsRecords.sort(); productLimtAndDate(); getPageInfoForHos(); sortKey = '1'; preSortKey = '1'; sortOrderAsc = false; sortOrder = new String[7]; sortOrder = new List{ ' ', ' ', ' ', '', '', '', '', '' }; cate1ForSort = category1; // 显示数据条数信息 noOfRecords = consumableorderdetailsRecords.size(); getConsumableShowTableFieldValue(); results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; if(consumableorderdetailsRecordsview.size() > 0){ results.result = 'Success'; results.errorMsg = '共搜索到'+consumableorderdetailsRecordsview.size()+'条数据'; }else { results.result = 'Fail'; results.errorMsg = '没有搜索到相关数据'; } } catch (Exception e) { results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } //用户切换医院时取消选中的产品 private static List getPageInfoForHos() { List reSet = new List(); Map selectedIdMap = new Map(); consumableorderdetailsRecordsview = new List(); if (editAble) { consumableorderdetailsRecordsview = reSet; } Integer pagestartNo = (con.getPageNumber() * size) - size; Integer pageendNo = (con.getPageNumber() * size) > noOfRecords ? noOfRecords : (con.getPageNumber() * size - 1); Integer addNo = 0; for (Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++) { Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); if (selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)) { addNo++; //continue; } // else if (consumableorderdetailsRecordsview.size() >= pageLimit + size) { // break; // } else { if (consumableorderdetailsRecords[i].check == false) { consumableorderdetailsRecords[i].esd = orderdetails1; } consumableorderdetailsRecordsview.add(consumableorderdetailsRecords[i]); addNo++; } // if (addNo >= size){ // break; // } } return consumableorderdetailsRecordsview; } //add by rentx 2020-12-03 end ===================================================================================================================== //特价 public static void OffersPrice() { edoffersPrice = true; } //得到促销产品Id private static List getDealerProductId() { List ProductId = new List(); Map DealerProductIdMap = new Map(); Date dateToday = Date.today(); List DealerProductList = [ SELECT Id, Name, Dealer_Product2__c, Special_Campaign_Price__c, Campaign_StartDate__c, Campaign_EndDate__c, Dealer_Contact__c, OrderGoods_Limit__c FROM Dealer_Product__c WHERE Dealer_Contact__c IN :contactDealer AND Campaign_StartDate__c <= :dateToday AND Campaign_EndDate__c >= :dateToday AND Special_Campaign_Price__c != NULL ]; for (Dealer_Product__c dealerProduct : DealerProductList) { if (DealerProductIdMap.containsKey(dealerProduct.Dealer_Product2__c)) { continue; } else { ProductId.add(dealerProduct.Dealer_Product2__c); DealerProductIdMap.put(dealerProduct.Dealer_Product2__c, dealerProduct.Dealer_Product2__c); } } return ProductId; } private static String makeSoql( String CateName, String CateCode, String Category3, String Category4, String Category5, Boolean specialCampaign, List DealerProductId ) { String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; // add begin ================================================================================================ if (methodType != null && methodType.equals('hospitalorder')) { //如果是医院特价 //1.判断 医院id是否有值 如果有值 则根据医院id去 医院特价表中获取产品id //医院id 有值 if (hospitalId == null || hospitalId == '') { soql += ' and id = null '; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请选择医院')); warningMsgList.add('请选择医院'); } else { List hplist = [ SELECT id, product__c FROM hospitalprice__c WHERE account__c = :accountid AND hospital__c = :hospitalId ]; if (hplist != null && hplist.size() > 0) { hpids = new List(); for (hospitalprice__c hc : hplist) { hpids.add(hc.product__c); } if (hpids != null && hpids.size() > 0) { soql += ' AND Id in : hpids '; } } else { //该医院下没有符合医院特价的产品 soql += ' AND Id = null '; return soql; } } } //促销订货 if (methodType != null && methodType.equals('promotionorder')) { if (contractId == null || contractId == '') { soql += ' and id = null '; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请选择合同')); warningMsgList.add('请选择合同'); } else { //1.查询所有经销商产品 List dpclist = [ SELECT Id, Dealer_Product2__c FROM Dealer_Product__c WHERE Dealer_Contact__c = :contractId AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL) ]; if (dpclist != null && dpclist.size() > 0) { hpids = new List(); for (Dealer_Product__c hc : dpclist) { hpids.add(hc.Dealer_Product2__c); } if (hpids != null && hpids.size() > 0) { soql += ' AND Id in : hpids '; } } else { //该经销商下没有促销价格的产品 soql += ' AND Id = null '; return soql; } } } //add end =================================================================================================== if (!String.isBlank(CateName)) { soql += ' AND (Name__c like \'%' + String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) + '%\' or Asset_Model_No__c like \'%' + String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) + '%\')'; } if (!String.isBlank(Category3)) { soql += ' AND Category3__c = \'' + Category3 + '\''; } if (!String.isBlank(Category4)) { soql += ' AND Category4__c = \'' + Category4 + '\''; } if (!String.isBlank(Category5)) { soql += ' AND Category5__c = \'' + Category5 + '\''; } if (agencyProType == 'ET') { soql += ' AND Pro2_Dealer_Object__c = true'; } if (agencyProType == 'ENG') { soql += ' AND Pro2_Dealer_ENG__c = true'; } soql += ' AND Intra_Trade_List_RMB__c > 0 '; System.debug('soql +++++++++++ ' + soql); return soql; } private static String makeSoqlorderdet() { String sqlTail = '(\''; for (Integer i = 0; i < orderzaikuId.size(); i++) { if (i < orderzaikuId.size() - 1) { sqlTail += orderzaikuId[i] + '\',\''; } else { sqlTail += orderzaikuId[i] + '\')'; } } String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; System.debug('sqlTail:'+sqlTail); System.debug('orderzaikuId:'+orderzaikuId); if (orderzaikuId.size() > 0) { soql += ' AND Id in' + sqlTail; } return soql; } // 编辑按钮 @AuraEnabled public static Results setEditAble(String eSetidStr){ Results results = new Results(); ESetId = eSetidStr; try { statusEdit = 'Redirect'; List oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid]; String url = '/lexconsumable?ESetid=' + ESetid + '&KeyWords=' + statusEdit + '&type=' + oclist.get(0).orderPattern__c; results.result = 'Success'; results.url = url; } catch (Exception e) { results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } // 再申请 @AuraEnabled public static Results backOrder(String eSetidStr) { Results results = new Results(); ESetId = eSetidStr; statusEdit = 'Redirect'; returnOrder = true; try { statusEdit = 'Redirect'; List oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid]; String url = '/lexconsumable?ESetid=' + ESetid + '&KeyWords=' + statusEdit + '&type=' + oclist.get(0).orderPattern__c; results.result = 'Success'; results.url = url; } catch (Exception e) { results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } //上传附件 @AuraEnabled public static Results filesUpload(String pId, String fileName, String base64Data) { Results results = new Results(); try { base64Data = EncodingUtil.urlDecode(base64Data, 'UTF-8'); ContentVersion cv = new ContentVersion(); cv.Title = fileName; cv.PathOnClient = '/' + fileName; cv.FirstPublishLocationId = pId; cv.VersionData = EncodingUtil.base64Decode(base64Data); cv.IsMajorVersion = true; insert cv; Consumable_order__c c = [SELECT Id FROM Consumable_order__c WHERE Id =:pId]; c.Consumable_pdf_insert_day__c = Date.today(); update c; results.result = 'Success'; } catch (Exception e) { results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } //删除按钮 @AuraEnabled public static Results delConsumable(String eSetidStr){ Results results = new Results(); ESetId = eSetidStr; try { Consumable_order__c cord = new Consumable_order__c(Id = ESetId); List orderdetails1 = [ SELECT Id FROM Consumable_Orderdetails__c WHERE Consumable_order__c = :EsetId ]; delete orderdetails1; delete cord; results.result = 'Success'; results.url = '/lexconsumableordermanage'; } catch (Exception e) { results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } // 提交按钮 @AuraEnabled public static Results sorder(String eSetidStr,String accountidStr){ Results results = new Results(); errorMsgList = new List(); warningMsgList = new List(); ESetId = eSetidStr; accountid = accountidStr; Savepoint sp = Database.setSavepoint(); try { Map prodMap = new Map(); Consumable_order__c P = new Consumable_order__c(); P = new Consumable_order__c(); p.Id = ESetId; p.Order_date__c = Date.today(); p.Order_status__c = '附件上传完成'; for (Consumable_Orderdetails__c cod1 : [ SELECT Consumable_product__r.Product2__c, Consumable_product__r.Name__c FROM Consumable_Orderdetails__c WHERE Consumable_order__c = :ESetId ]) { prodMap.put(cod1.Consumable_product__r.Product2__c, cod1.Consumable_product__r.Name__c); } // GZW 提交产品无效 出错误消息 System.debug(prodMap); Map chkMap = OpportunityWebService.MapCheckProRegisterDecide(prodMap, accountid, ''); System.debug(chkMap); if (chkMap.size() > 0) { if (chkMap.containsKey('agency')) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '第一经销商没有有效的医疗器械经营许可证。')); errorMsgList.add('第一经销商没有有效的医疗器械经营许可证。'); } for (String proId : prodMap.keySet()) { if (chkMap.containsKey(proId)) { if (chkMap.get(proId) == '1') { // ApexPages.addmessage( // new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 没有有效的注册证。') // ); errorMsgList.add('产品 ' + prodMap.get(proId) + ' 没有有效的注册证。'); } else if (chkMap.get(proId) == '2') { // ApexPages.addmessage( // new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。') // ); errorMsgList.add('产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。'); } } } results.result = 'Fail'; results.errorMsg = ''; results.errorMsgList = errorMsgList; results.warningMsgList = warningMsgList; return results; } update p; Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest(); psr.setObjectId(ESetId); Approval.ProcessResult submitResult = Approval.process(psr); results.result = 'Success'; results.url = '/lexconsumableordermanage'; } catch (Exception e) { Database.rollback(sp); results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } // 驳回订单copy @AuraEnabled public static Results ordrCopy( String contractNameStr, String cocStr, String agencyProTypeStr, String accountidStr, String consumableorderdetailsRecordsviewStr, String contactDealerStr, String methodTypeStr, String hospitalIdStr, String contractIdStr, String agencyProType1Str, Boolean OSHFLGStr ) { ESetId = ''; return save(contractNameStr,cocStr,agencyProTypeStr,accountidStr,consumableorderdetailsRecordsviewStr,contactDealerStr,methodTypeStr,ESetId,hospitalIdStr,contractIdStr,agencyProType1Str,OSHFLGStr); } //保存按钮 @AuraEnabled public static Results save( String contractNameStr, String cocStr, String agencyProTypeStr, String accountidStr, String consumableorderdetailsRecordsviewStr, String contactDealerStr, String methodTypeStr, String eSetIdStr, String hospitalIdStr, String contractIdStr, String agencyProType1Str, Boolean OSHFLGStr ){ Results results = new Results(); errorMsgList = new List(); warningMsgList = new List(); contractName = contractNameStr; agencyProType = agencyProTypeStr; accountid = accountidStr; methodType = methodTypeStr; ESetId = eSetIdStr; hospitalId = hospitalIdStr; contractId = contractIdStr; agencyProType1 = agencyProType1Str; OSHFLG = OSHFLGStr; coc = (Consumable_order__c)JSON.deserialize(cocStr, Consumable_order__c.class); contactDealer = (List)JSON.deserialize(contactDealerStr, List.class); consumableorderdetailsRecordsview = (List)JSON.deserialize(consumableorderdetailsRecordsviewStr, List.class); if(coc.Offers_Price__c != null){ String offerStr = String.valueOf(coc.Offers_Price__c); bargainPrice = Decimal.valueOf(offerStr.replace(',','')); } Savepoint sp = Database.setSavepoint(); try { if (String.isEmpty(contractName)) { // coc.Order_effective_contact__c.addError('请选择合同'); results.result = 'Fail'; results.errorMsg = '请选择合同'; return results; } List contract = [ SELECT Id, Name, Contract_Department_Class__c, Contract_Quote_Decide_Flag__c FROM account WHERE Name = :contractName AND Id =: contractId //lt 20230517 安徽两票制 add AND Contract_Decide_Start_Date__c <= :Date.Today() AND Contract_Decide_End_Date__c >= :Date.Today() AND Contact_Type__c like :agencyProType1 //lt 20230517 安徽两票制 add 1 AND Agent_Ref__c =:accountid AND OSH_Dealer__c =: OSHFLG //lt 20230517 安徽两票制 add ]; if (contract.size() <= 0) { // coc.Order_effective_contact__c.addError('不存在的合同,请重新确认。'); results.result = 'Fail'; results.errorMsg = '不存在的合同,请重新确认。'; return results; } else { if (String.isEmpty(contract[0].Contract_Quote_Decide_Flag__c)) { // coc.Order_effective_contact__c.addError('合同无效,请重新确认。'); results.result = 'Fail'; results.errorMsg = '合同无效,请重新确认。'; return results; } } Integer FLG = 0; Integer Count = 0; //add by rentx 2020-11-25 List tpids = new List(); //add by rentx 2020-11-25 for (ConsumableorderdetailsInfo CheckCount : consumableorderdetailsRecordsview) { FLG = FLG + 1; if (CheckCount.check == false) { Count = Count + 1; } if (CheckCount.check == true) { //add by rentx 2020-11-25 tpids.add(CheckCount.Prod.Id); //add by rentx 2020-11-25 if (CheckCount.esd.Consumable_Count__c == null || CheckCount.esd.Consumable_Count__c == 0) { // CheckCount.esd.Consumable_Count__c.addError('请输入采购数量'); results.result = 'Fail'; results.errorMsg = '请输入采购数量'; return results; } if ( CheckCount.orderGoods_Limit > 0 && math.mod(Integer.valueOf(CheckCount.esd.Consumable_Count__c), Integer.valueOf(CheckCount.orderGoods_Limit)) > 0 ) { // CheckCount.esd.Consumable_Count__c.addError('请输入促销数量的倍数'); results.result = 'Fail'; results.errorMsg = '请输入促销数量的倍数'; return results; } } } if (Count == FLG) { results.result = 'Fail'; results.errorMsg = '请选择所需消耗品'; return results; } //=======================================医院特价,有金额的话取金额 Map dealerHospitalmMap = new Map(); List hplist = [select Id,hospital__c,mPrice__c,pPrice__c,product__c,account__c from hospitalprice__c where product__c in :tpids and mPrice__c <> null and account__c=:accountid ]; for (hospitalprice__c dealerProduct : hplist) { if (dealerProduct.mPrice__c != null) { dealerHospitalmMap.put('' + dealerProduct.hospital__c + dealerProduct.product__c,dealerProduct.mPrice__c); } } //促销订货 根据经销商产品中的数据计算金额 //=======================================产品特殊折扣 Map dealerPDiscountMap = new Map(); Map dealerMPDiscountMap = new Map(); //1.获取有开始结束日的产品 Date dateToday = Date.today(); List haveDateList = [ SELECT Id, Name, Dealer_Product2__c, Special_Campaign_Price__c, Campaign_StartDate__c, Campaign_EndDate__c, Dealer_Contact__c, OrderGoods_Limit__c, Special_Discount__c FROM Dealer_Product__c WHERE Dealer_Contact__c IN :contactDealer AND Campaign_StartDate__c <= :dateToday AND Campaign_EndDate__c >= :dateToday AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL) ]; //2.获取没有开始结束日的产品 List DealerProductList = [ SELECT Id, Name, Dealer_Product2__c, Special_Campaign_Price__c, Campaign_StartDate__c, Campaign_EndDate__c, Dealer_Contact__c, Special_Discount__c, OrderGoods_Limit__c FROM Dealer_Product__c WHERE Dealer_Contact__c IN :contactDealer AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL) ]; for (Dealer_Product__c dealerProduct : DealerProductList) { //如果促销价格为null 则设置特殊折扣(百分比)到集合 if (dealerProduct.Special_Campaign_Price__c == null) { dealerPDiscountMap.put( '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c, dealerProduct.Special_Discount__c ); } else { dealerMPDiscountMap.put( '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c, dealerProduct.Special_Campaign_Price__c ); } } //这样做是为了计算促销价格时 优先计算促销开始结束日不为空的产品 //如果该集合有值 则说明需要根据当前的金额或者折扣来计算 if (haveDateList != null && haveDateList.size() > 0) { for (Dealer_Product__c dealerProduct : haveDateList) { if (dealerProduct.Special_Campaign_Price__c == null) { dealerPDiscountMap.put( '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c, dealerProduct.Special_Discount__c ); dealerMPDiscountMap.remove('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c); } else { dealerMPDiscountMap.put( '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c, dealerProduct.Special_Campaign_Price__c ); dealerPDiscountMap.remove('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c); } } } //=======================================经销商合同折扣 List at = [ SELECT id, Name, State_Master__c, State_Master__r.Name, Sales_Section__c, Dealer_discount__c FROM Account WHERE Name = :contractName AND Id =: contractId //lt 20230517 安徽两票制 add AND Contact_Type__c like :agencyProType1 //lt 20230517 安徽两票制 add 1 AND Contact_Type__c LIKE :agencyProType AND Contract_Decide_Start_Date__c <= :Date.Today() AND Contract_Decide_End_Date__c >= :Date.Today() AND Contract_Decide_End_Date__c >= :Date.Today() AND OSH_Dealer__c =: OSHFLG //lt 20230517 安徽两票制 add ]; if (at.size() > 0 && at[0].Dealer_discount__c != null) { disCount = at[0].Dealer_discount__c; } else { disCount = 100; } Consumable_order__c P = new Consumable_order__c(); List Ins = new List(); //新建订单时 if (String.isBlank(ESetId)) { Integer i = 1; Integer Roll = 0; p.Name = '*'; p.Order_status__c = '草案中'; p.Dealer_Info__c = accountid; p.Order_ProType__c = agencyProType; p.Offers_Price__c = coc.Offers_Price__c; p.Order_date__c = coc.Order_date__c; p.Order_effective_contact__c = contract[0].Id; p.Order_Reason__c = coc.Order_Reason__c; p.RecordTypeid = System.Label.RT_ConOrder_Order; p.Overrule_order__c = coc.Id; if (String.isNotBlank(methodType)) { p.orderPattern__c = methodType; } insert p; List Consumable_order = [SELECT Name, orderPattern__c FROM Consumable_order__c WHERE id = :p.id]; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { Roll = Roll + 1; if (ass.check == true) { if (ass.esd.Consumable_Count__c == null || ass.esd.Consumable_Count__c == 0) { // ass.esd.Consumable_Count__c.addError('请输入采购数量'); results.result = 'Fail'; results.errorMsg = '请输入采购数量'; return results; } else { Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c(); String str = string.valueOf(i); if (str.length() == 1) { str = '0' + str; } InsAfterDel.Name = Consumable_order[0].Name + '-' + str; InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c; InsAfterDel.Consumable_order__c = p.id; InsAfterDel.Consumable_Product__c = ass.Prod.id; InsAfterDel.Box_Piece__c = '盒'; //协议订货 if (methodType.equals('agreementorder')) { Consumable_order[0].orderPattern__c = 'agreementorder'; InsAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c * disCount / 100; //=====================================================================================update by rentx 2020-11-25 } else if (methodType.equals('promotionorder')) { Consumable_order[0].orderPattern__c = 'promotionorder'; //促销订货 //如果促销价格不为null 则直接使用促销价格来计算金额 if (dealerMPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) { InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get('' + contract[0].Id + ass.Prod.Id); system.debug('cai 0' + InsAfterDel.Intra_Trade_List_RMB__c); } else if (dealerPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) { InsAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c * dealerPDiscountMap.get('' + contract[0].Id + ass.Prod.Id) / 100; system.debug('cai 00' + InsAfterDel.Intra_Trade_List_RMB__c); } //=====================================================================================update by rentx 2020-11-25 } else if (methodType.equals('hospitalorder')) { //医院特价 Consumable_order[0].Order_ForHospital__c = hospitalId; Consumable_order[0].orderPattern__c = 'hospitalorder'; if (dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null) { //直接根据促销金额计算 InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(''+ hospitalId + ass.Prod.Id); } } else if (DealerProductMap.containsKey(ass.Prod.Id)) { InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; system.debug('cai 2' + InsAfterDel.Intra_Trade_List_RMB__c); InsAfterDel.Purchase_Unitprtprice_From__c = '促销'; InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; } InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; i++; Ins.add(InsAfterDel); } } } ESetId = p.id; if (Consumable_order.size() > 0) { update Consumable_order; } } //修改之后 保存订单 if (Ins.size() > 0) { insert Ins; } else { //修改,获取消耗品订单 List cocinfo = new List(); cocinfo = [ SELECT Id, Name, Order_status__c, Dealer_Info__c, Deliver_date__c, Order_Reason__c, Offers_Price__c FROM Consumable_order__c WHERE Id = :ESetId ]; if (cocinfo.size() > 0) { p = cocinfo[0]; } p.Name = coc.Name; p.Dealer_Info__c = accountid; p.Order_ProType__c = agencyProType; p.Order_date__c = coc.Order_date__c; p.Order_effective_contact__c = contract[0].Id; p.Order_Reason__c = coc.Order_Reason__c; if (bargainPrice != null) { p.Offers_Price__c = bargainPrice; } update p; List Consumable_order = [SELECT Name, orderPattern__c FROM Consumable_order__c WHERE id = :p.id]; List qs = new List(); qs = [ SELECT Id FROM Consumable_Orderdetails__c WHERE Consumable_order__c = :ESetId AND Consumable_order__r.Dealer_Info__c = :accountid ]; if (qs.size() > 0) { delete qs; } Integer i = 1; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { if (ass.check == true) { Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c(); if (ass.esd.Consumable_Count__c == null || ass.esd.Consumable_Count__c == 0) { // ass.esd.Consumable_Count__c.addError('请输入采购数量'); results.result = 'Fail'; results.errorMsg = '请输入采购数量'; return results; } else { String str = string.valueOf(i); if (str.length() == 1) { str = '0' + str; } InsAfterDel.Name = Consumable_order[0].Name + '-' + str; InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c; InsAfterDel.Consumable_order__c = ESetId; InsAfterDel.Consumable_Product__c = ass.Prod.id; InsAfterDel.Box_Piece__c = '盒'; //协议订货 if (methodType.equals('agreementorder')) { Consumable_order[0].orderPattern__c = 'agreementorder'; InsAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c * disCount / 100; } else if (methodType.equals('promotionorder')) { Consumable_order[0].orderPattern__c = 'promotionorder'; //促销订货 if (dealerMPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) { InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get('' + contract[0].Id + ass.Prod.Id); } else if (dealerPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) { InsAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c * dealerPDiscountMap.get('' + contract[0].Id + ass.Prod.Id) / 100; } } else if (methodType.equals('hospitalorder')) { Consumable_order[0].orderPattern__c = 'hospitalorder'; //医院特价 Consumable_order[0].Order_ForHospital__c = hospitalId; if (dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null) { //直接根据促销金额计算 InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(''+ hospitalId + ass.Prod.Id); } } else if (DealerProductMap.containsKey(ass.Prod.Id)) { InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; InsAfterDel.Purchase_Unitprtprice_From__c = '促销'; InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; } // ==================================================之前的促销订货的逻辑 InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; i++; Ins.add(InsAfterDel); } } } if (Ins.size() > 0) { insert Ins; } } results.result = 'Success'; results.eSetId = ESetId; } catch (Exception e) { Database.rollback(sp); results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } //删除附件 @AuraEnabled public static Results deleteAtt(String contentVersionId){ Results results = new Results(); try { ContentVersion conVersion = [SELECT ContentDocumentId FROM ContentVersion WHERE Id = :contentVersionId]; String contentDocumentId = conVersion.ContentDocumentId; ContentDocument conDocument = [SELECT Id FROM ContentDocument where Id = :contentDocumentId]; delete conDocument; results.result = 'Success'; } catch (Exception e) { results.result = 'Fail'; results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); } return results; } public static void getConsumableShowTableFieldValue(){ for(ConsumableorderdetailsInfo con :consumableorderdetailsRecordsview){ if(con.Prod != null){ con.recordId = con.Prod.Id; if(!con.oldCheck){ con.prodName = con.Prod.Name__c; // System.debug('ProdName:'+con.Prod.Id+'---'+con.Prod.Name__c); } con.prodSFDAStatus = con.Prod.SFDA_Status__c; con.prodCategory3 = con.Prod.Category3__c; con.prodCategory4 = con.Prod.Category4__c; con.prodCategory5 = con.Prod.Category5__c; con.prodIntraTradeList = con.Prod.Intra_Trade_List_RMB__c; } if(con.esd != null){ // if(con.oldCheck){ // con.prodName = con.esd.Consumable_Product__r.Name__c; // } con.consumableCount = con.esd.Consumable_count__c; } } } class ConsumableorderdetailsInfo implements Comparable { @AuraEnabled public Boolean check { get; set; } @AuraEnabled public Boolean oldCheck { get; set; } @AuraEnabled public Consumable_Orderdetails__c esd { get; set; } @AuraEnabled public Product2__c Prod { get; set; } @AuraEnabled public Integer packing_list { get; set; } @AuraEnabled public Date expiration_Date { get; set; } @AuraEnabled public String approbation_No { get; set; } @AuraEnabled public Decimal allnumber { get; set; } @AuraEnabled public Decimal allnumber_piece { get; set; } @AuraEnabled public Decimal oldConsumableCount { get; set; } @AuraEnabled public Boolean canSelect { get; set; } @AuraEnabled public ContentVersion Concc { get; set; } @AuraEnabled public Boolean sortBy { get; set; } @AuraEnabled public Decimal upperlimit { get; set; } @AuraEnabled public Decimal lowerlimit { get; set; } @AuraEnabled public Decimal SpecialCampaignPrice { get; set; } @AuraEnabled public Decimal orderGoods_Limit { get; set; } @AuraEnabled public Date Campaign_EndDate { get; set; } @AuraEnabled public String recordId { get; set; } @AuraEnabled public String prodName { get; set; } @AuraEnabled public String prodSFDAStatus { get; set; } @AuraEnabled public String prodCategory3 { get; set; } @AuraEnabled public String prodCategory4 { get; set; } @AuraEnabled public String prodCategory5 { get; set; } @AuraEnabled public Decimal prodIntraTradeList { get; set; } @AuraEnabled public Decimal consumableCount { get; set; } // 已存产品明细 public ConsumableorderdetailsInfo(Consumable_Orderdetails__c e) { check = true; oldCheck = true; esd = e; Prod = e.Consumable_Product__r; oldConsumableCount = e.Consumable_Count__c; canSelect = true; allnumber = 0; allnumber_piece = 0; } public ConsumableorderdetailsInfo(Product2__c e) { check = false; oldCheck = false; esd = new Consumable_Orderdetails__c(); Prod = e; oldConsumableCount = null; canSelect = true; allnumber = 0; allnumber_piece = 0; } //附件 public ConsumableorderdetailsInfo(ContentVersion e) { Concc = e; } // 排序Consumable_order__c public Integer compareTo(Object compareTo) { ConsumableorderdetailsInfo compareToesd = (ConsumableorderdetailsInfo) compareTo; Integer returnValue = 0; if (check == true) { if (sortBy == false) { if (allnumber > compareToesd.allnumber) { returnValue = -1; } else if (allnumber < compareToesd.allnumber) { returnValue = 1; } return returnValue; } else { if (allnumber > compareToesd.allnumber) { returnValue = 1; } else if (allnumber < compareToesd.allnumber) { returnValue = -1; } return returnValue; } } else { if (sortBy == false) { if (allnumber > compareToesd.allnumber) { returnValue = -1; } else if (allnumber < compareToesd.allnumber) { returnValue = 1; } return returnValue; } else { if (allnumber > compareToesd.allnumber) { returnValue = 1; } else if (allnumber < compareToesd.allnumber) { returnValue = -1; } return returnValue; } } } } public class Results { @AuraEnabled public String result; @AuraEnabled public String errorMsg; @AuraEnabled public String eSetId; @AuraEnabled public String agencyProType; @AuraEnabled public String userWorkLocation; @AuraEnabled public String accountName; @AuraEnabled public String accountid; @AuraEnabled public String hospitalId; @AuraEnabled public String contractId; @AuraEnabled public String category_Goods; @AuraEnabled public Consumable_order__c coc; @AuraEnabled public Boolean edoffersPrice; @AuraEnabled public Boolean editDelCommitBtnDisabled; @AuraEnabled public Boolean editAble; @AuraEnabled public String hospitalName; @AuraEnabled public String contractName; @AuraEnabled public List category3Option; @AuraEnabled public List category4Option; @AuraEnabled public List category5Option; @AuraEnabled public List consumableorderdetailsRecordsview; @AuraEnabled public List attachmentRecoeds; @AuraEnabled public Boolean cansee; @AuraEnabled public List errorMsgList; @AuraEnabled public List warningMsgList; @AuraEnabled public Boolean hasWarning; @AuraEnabled public Boolean hasError; @AuraEnabled public Boolean specialCampaign; @AuraEnabled public List dealerProductId; @AuraEnabled public List contactDealer; @AuraEnabled public String url; @AuraEnabled public String methodType; @AuraEnabled public List proLimitAndDate; @AuraEnabled public Boolean isNoteStay; @AuraEnabled public Boolean OSHFLG; @AuraEnabled public String agencyProType1; } public class CusOption { CusOption(String label, String value) { this.label = label; this.value = value; } @AuraEnabled public String label; @AuraEnabled public String value; } }