public without sharing class LexSaleOrderController { public static boolean isRunning = false; public static String barcode { get; set; } public static Consumable_order__c coc { get; set; } public static List consumableorderdetailsRecords { get; set; } @AuraEnabled public static List consumableorderdetails2Nobox { get; set; } @AuraEnabled public static List consumableorderdetailsRecordserror { get; set; } public static Map existIdMap { get; set; } public static Map errorIdMap { get; set; } public static Map allMap { get; set; } public static Map orderpieceorboxMap { get; set; } public static Map orderpriceMap { get; set; } public static Map orderagencypriceMap { get; set; } public static Map orderdetCountMap { get; set; } public static Map BarcodeCntMap { get; set; } public static String baseUrl { get; private set; } public static String ESetId { get; set; } public static String accountName { get; set; } public static String userWorkLocation { get; set; } public static Boolean hasSpecialHos { get; set; } public static Map msiMap { get; set; } public static List orderdetails { get; set; } public static String accountid { get; set; } @AuraEnabled public static ResponseBodyLWC GoodsDeliveryInit(String ESetId) { System.debug('LexSaleOrderController GoodsDeliveryInit'); ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; String UserName = UserInfo.getUserId(); <<<<<<< HEAD user useracc = [ SELECT Accountid, Work_Location__c FROM user WHERE id = :UserName ]; ======= user useracc = [SELECT Accountid, Work_Location__c FROM user WHERE id = :UserName]; >>>>>>> LEXCommunityLiJun accountid = useracc.Accountid; userWorkLocation = useracc.Work_Location__c; Account accountInfo = [SELECT Name FROM account WHERE id = :accountid]; accountName = accountInfo.Name; consumableorderdetailsRecords = new List(); consumableorderdetailsRecordserror = new List(); coc = new Consumable_order__c(); List arriveDat = new List(); orderpieceorboxMap = new Map(); orderdetails = new List(); orderagencypriceMap = new Map(); orderpriceMap = new Map(); orderdetCountMap = new Map(); if (String.isNotBlank(ESetId)) { coc = [ SELECT Id, Name, NoConfirmedPrice__c, Order_ForDealer__r.Name, Summons_Order_type__c, Order_status__c, Dealer_Info__c, Dealer_Info__r.Name, SummonsStatus_c__c, Deliver_date__c, Order_Reason__c, Order_date__c, Order_ForHospital__c, SummonsForDirction__c, Arrive_Order__c, Arrive_Order__r.IsShipment__c, Outbound_Date__c, Billed_Status__c, ShipmentAccount__c, Order_ForCustomerText__c, OutPattern__c FROM Consumable_order__c WHERE Id = :ESetId ]; // update end by vivek 2019-7-16 if (coc.Arrive_Order__c != null) { arriveDat = [ SELECT Id, Name, recordtypeid, Used_account__c, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, Isoverdue__c, Guarantee_period_for_products__c, Box_Piece__c, // gzw add 20210308 报错修复 hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Consumable_ZS_order__c = :ESetId ]; for (Integer j = 0; j < arriveDat.size(); j++) { consumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(arriveDat[j])); } } orderdetails = [ SELECT Id, Name, Product_Pattern__c, Consumable_product__r.Name, Shipment_Count__c, Box_Piece__c, Delivery_List_RMB__c, Unitprice_To_agency__c, isOutPattern__c FROM Consumable_orderdetails__c WHERE Consumable_order__c = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation ]; for (Integer i = 0; i < orderdetails.size(); i++) { orderpieceorboxMap.put(orderdetails[i].Product_Pattern__c, orderdetails[i].Box_Piece__c); if (orderdetails[i].Unitprice_To_agency__c != null && orderdetails[i].Unitprice_To_agency__c != 0) { orderagencypriceMap.put(orderdetails[i].Product_Pattern__c, orderdetails[i].Unitprice_To_agency__c); } orderpriceMap.put(orderdetails[i].Product_Pattern__c, orderdetails[i].Delivery_List_RMB__c); orderdetCountMap.put(orderdetails[i].Product_Pattern__c, orderdetails[i].Shipment_Count__c); } List hlist = [ SELECT id FROM hospitalprice__c WHERE hospital__c = :coc.ShipmentAccount__c AND account__c = :accountid ]; if (hlist == null || hlist.size() == 0) { hasSpecialHos = false; } else { hasSpecialHos = true; } } data.put('consumableorderdetailsRecords', consumableorderdetailsRecords); data.put('consumableorderdetailsRecordserror', consumableorderdetailsRecordserror); data.put('coc', coc); data.put('accountName', accountName); data.put('userWorkLocation', userWorkLocation); data.put('accountid', accountid); data.put('orderdetails', orderdetails); data.put('orderpieceorboxMap', orderpieceorboxMap); data.put('orderpriceMap', orderpriceMap); data.put('orderagencypriceMap', orderagencypriceMap); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } @AuraEnabled public static ResponseBodyLWC SearchPro( Consumable_order__c cocLwc, String barcodeLwc, String accountName, String userWorkLocation, String accountid, List orderdetails, Map orderpieceorboxMap ) { ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; coc = cocLwc; orderdetails = orderdetails; barcode = barcodeLwc; accountName = accountName; userWorkLocation = userWorkLocation; accountid = accountid; orderdetails = orderdetails; orderpieceorboxMap = orderpieceorboxMap; //判断是否和订单联动 if (coc.Arrive_Order__c != null) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO,'无需到货确认,请直接出库。')); // return; return new ResponseBodyLWC('Error', 500, '无需到货确认,请直接出库', ''); } //判断barcode是否为空 if (barcode == null || barcode == '') { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO,'请输BarCode号。')); // return; return new ResponseBodyLWC('Error', 500, '请输BarCode号', ''); } list exitlist = new List(); list notexitlist = new List(); existIdMap = new Map(); errorIdMap = new Map(); allMap = new Map(); consumableorderdetailsRecords = new List(); consumableorderdetailsRecordserror = new List(); List barCodeListP = new List(); List reSet = new List(); List reSet1 = new List(); //BarCodelist做成 barCodeListP = ParseBarCode(barcode); System.debug('barCodeListP:' + barCodeListP); //针对所有商品到货确认 reSet1 = [ SELECT Id, Name, recordtypeid, Used_account__c, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, ProductPacking_list_manual__c, Guarantee_period_for_products__c, hospitalSpecialOffer__c, exchangeOutPattern__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Returned__c = FALSE AND Bar_Code__c != NULL AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :barCodeListP AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY RemoveBox_No__c DESC ]; System.debug('reSet1:' + reSet1); List newdet2 = new List(); Set proIds = new Set(); for (String barcode : barCodeListP) { Integer idx = 0; for (Consumable_order_details2__c cod2 : reSet1) { if (cod2.Bar_Code__c == barcode) { System.debug('cod2.Bar_Code__c:' + cod2.Bar_Code__c); newdet2.add(cod2); reSet1.remove(idx); proIds.add(cod2.Consumable_product__c); break; } idx++; } } Map proHosMap = new Map(); Map proIdMap = new Map(); <<<<<<< HEAD List hpList = [ SELECT id, hospital__c, product__c FROM hospitalprice__c WHERE account__c = :accountid ]; ======= List hpList = [SELECT id, hospital__c, product__c FROM hospitalprice__c WHERE account__c = :accountid]; >>>>>>> LEXCommunityLiJun if (hpList != null && hpList.size() > 0) { for (hospitalprice__c hp : hpList) { if (hp.product__c != null && String.valueof(hp.product__c).length() >= 15) { proIdMap.put(('' + hp.product__c).subString(0, 15) + '是', ''); if (hp.hospital__c == coc.Order_ForHospital__c) { proHosMap.put(('' + hp.product__c).subString(0, 15) + '是', ''); } } } } for (Integer i = 0; i < orderdetails.size(); i++) { for (Integer j = 0; j < newdet2.size(); j++) { if ( newdet2[j].Product_Pattern__c == orderdetails[i].Product_Pattern__c && newdet2[j].Box_Piece__c != orderdetails[i].Box_Piece__c ) { String str = '该商品出货单位错误'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(newdet2[j], str)); errorIdMap.put(newdet2[j].Bar_Code__c, newdet2[j].Bar_Code__c); } if (coc.OutPattern__c == true) { <<<<<<< HEAD System.debug('testPattern:' + newdet2[j].Product_Pattern__c + '---' + orderdetails[i].Product_Pattern__c); ======= System.debug('testPattern:'+newdet2[j].Product_Pattern__c+'---'+orderdetails[i].Product_Pattern__c); >>>>>>> LEXCommunityLiJun if (newdet2[j].Product_Pattern__c == orderdetails[i].Product_Pattern__c) { //add by rentx 2021-03-22 start if (newdet2[j].exchangeOutPattern__c == true) { //如果当前经销商下没有维护对应的特价产品 报错 if (!proIdMap.containsKey(newdet2[j].Product_Pattern__c)) { String str = '没有维护该产品的特价医院'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(newdet2[j], str)); errorIdMap.put(newdet2[j].Bar_Code__c, newdet2[j].Bar_Code__c); } } //add by rentx 2021-03-22 end if (hpList != null && hpList.size() > 0) { if (proHosMap.containsKey(newdet2[j].Product_Pattern__c)) { continue; } else if (!proIdMap.containsKey(newdet2[j].Product_Pattern__c)) { continue; } else { String str = '该商品出库医院错误'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(newdet2[j], str)); errorIdMap.put(newdet2[j].Bar_Code__c, newdet2[j].Bar_Code__c); } } } } } } //管理编码为空时,报错 reSet1 = [ SELECT Id, Name, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Box_Piece__c, Arrive_Owner_Work_Location__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Bar_Code__c IN :barCodeListP AND Bar_Code__c != NULL AND Dealer_Arrive__c = TRUE AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation AND (TracingCode__c = NULL OR TracingCode__c = '') ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (errorIdMap.containsKey(reSet1[i].Bar_Code__c) || existIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该产品没有管理编码,无法出库,请与特约经销商管理部人员联系,修正数据'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str)); errorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } reSet1 = [ SELECT Id, Name, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Box_Piece__c, Arrive_Owner_Work_Location__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Bar_Code__c IN :barCodeListP AND Bar_Code__c != NULL AND Dealer_Arrive__c = TRUE AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Cancellation_Flag__c = TRUE ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (errorIdMap.containsKey(reSet1[i].Bar_Code__c) || existIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品已经取消'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str)); errorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //不是本出库单的出库产品 reSet1 = [ SELECT Id, Name, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Box_Piece__c, Arrive_Owner_Work_Location__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Bar_Code__c IN :barCodeListP AND Bar_Code__c != NULL AND Dealer_Arrive__c = TRUE AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (errorIdMap.containsKey(reSet1[i].Bar_Code__c) || existIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else if (!orderpieceorboxMap.containsKey(reSet1[i].Product_Pattern__c)) { String str = '不是本出库单的出库产品'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str)); errorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } reSet1 = [ SELECT Id, Name, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Box_Piece__c, Dealer_Info_text__c, Arrive_Owner_Work_Location__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Bar_Code__c IN :barCodeListP AND Bar_Code__c != NULL AND Dealer_Arrive__c = TRUE AND ((Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c != :userWorkLocation) OR Dealer_Info_text__c != :accountName) AND Cancellation_Flag__c = FALSE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Dealer_Returned__c = FALSE ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (errorIdMap.containsKey(reSet1[i].Bar_Code__c) || existIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { // 当前经销商是否存在此产品判断 boolean containsFlg = false; for (Consumable_order_details2__c cod2 : newdet2) { if (cod2.Bar_Code__c == reSet1[i].Bar_Code__c) { containsFlg = true; break; } } if (containsFlg == false) { String str = '该商品是' + reSet1[i].Arrive_Owner_Work_Location__c + '的库存'; if (reSet1[i].Dealer_Info_text__c != accountName) { str = '该商品在其他经销商库存'; } consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str)); errorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } } reSet1 = [ SELECT Id, Name, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Box_Piece__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Dealer_Saled__c = TRUE AND Box_Piece__c = '盒' AND Dealer_Info_text__c = :accountName AND Dealer_Returned__c = FALSE AND Bar_Code__c IN :barCodeListP AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (errorIdMap.containsKey(reSet1[i].Bar_Code__c) || existIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品已经销售'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str)); errorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } reSet1 = [ SELECT Id, Name, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Box_Piece__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Dealer_Shipment__c = TRUE AND Box_Piece__c = '盒' AND Dealer_Info_text__c = :accountName AND Dealer_Returned__c = FALSE AND Bar_Code__c IN :barCodeListP AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (errorIdMap.containsKey(reSet1[i].Bar_Code__c) || existIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品已经出库'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str)); errorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } reSet1 = [ SELECT Id, Name, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Box_Piece__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Lose_Flag__c = TRUE AND Box_Piece__c = '盒' AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :barCodeListP AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (errorIdMap.containsKey(reSet1[i].Bar_Code__c) || existIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品已经丢失'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str)); errorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } reSet = [ SELECT Id, Name, recordtypeid, Used_account__c, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Consumable_order_minor__r.Arrive_Order__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, ProductPacking_list_manual__c, Guarantee_period_for_products__c, TracingCode__c, Transfer_Time__c, Frist_Transfer_Agency__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Dealer_Returned__c = FALSE AND Bar_Code__c != NULL AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :barCodeListP AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY RemoveBox_No__c DESC ]; //对应录入barcode数量的检索结果 newdet2 = new List(); for (String barcode : barCodeListP) { Integer idx = 0; for (Consumable_order_details2__c cod2 : reSet) { if (cod2.Bar_Code__c == barcode) { newdet2.add(cod2); reSet.remove(idx); break; } idx++; } } Map checkBarcodeResult = new Map(); for (Integer i = 0; i < orderdetails.size(); i++) { Integer a = 0; for (Integer j = 0; j < newdet2.size(); j++) { if (newdet2[j].Product_Pattern__c == orderdetails[i].Product_Pattern__c && a < orderdetails[i].Shipment_Count__c) { if ( (existIdMap.containsKey(newdet2[j].Bar_Code__c) && newdet2[j].Bar_Code__c == '盒') || errorIdMap.containsKey(newdet2[j].Bar_Code__c) ) { // 跳过已经处理的消耗品明细 continue; } else if (newdet2[j].Isoverdue__c == 0) { String str = '该商品已经超出减菌有效期的有效范围'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(newdet2[j], str)); errorIdMap.put(newdet2[j].Bar_Code__c, newdet2[j].Bar_Code__c); } else if (newdet2[j].Box_Piece__c != orderdetails[i].Box_Piece__c) { String str = '该商品出货单位错误'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(newdet2[j], str)); errorIdMap.put(newdet2[j].Bar_Code__c, newdet2[j].Bar_Code__c); } else if (!checkBarcodeResult.containsKey(newdet2[j].Bar_Code__c)) { Matcher n = Pattern.compile('[0-9]').matcher(newdet2[j].TracingCode__c); if (n.find()) { if (newdet2[j].TracingCode__c.length() == 5) { String tr = newdet2[j].TracingCode__c; String Ctr = tr.substring(tr.length() - 3, tr.length()); String Btr = tr.substring(tr.length() - 4, tr.length() - 3); String Atr = tr.substring(tr.length() - 5, tr.length() - 4); if (Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find()) { String str = '管理编码有误,请检查条形码数据。'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(newdet2[j], str)); errorIdMap.put(newdet2[j].Bar_Code__c, newdet2[j].Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(newdet2[j], str)); // errorIdMap.put(newdet2[j].Bar_Code__c, newdet2[j].Bar_Code__c); // continue; } checkBarcodeResult.put(newdet2[j].Bar_Code__c, newdet2[j].Bar_Code__c); consumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(newdet2[j])); a++; existIdMap.put(newdet2[j].Bar_Code__c, newdet2[j].Bar_Code__c); } } else if (newdet2[j].Product_Pattern__c == orderdetails[i].Product_Pattern__c) { if (a >= orderdetails[i].Shipment_Count__c && orderdetails[i].Box_Piece__c == '个') { // 跳过超过数量的消耗品明细 continue; } else if (errorIdMap.containsKey(newdet2[j].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { //CHAN-C23BWX update by rentx 2021-04-28 start // String str = '该商品超出订货数量'; String str = '该产品超出出库单产品范围'; //CHAN-C23BWX update by rentx 2021-04-28 end consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(newdet2[j], str)); errorIdMap.put(newdet2[j].Bar_Code__c, newdet2[j].Bar_Code__c); } } } } reSet1 = [ SELECT Id, Name, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Box_Piece__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Bar_Code__c IN :barCodeListP AND Dealer_Arrive__c = FALSE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Bar_Code__c != NULL AND Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != NULL AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation) OR (Consumable_order_minor__c = NULL AND Cancellation_Flag__c = FALSE)) ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (errorIdMap.containsKey(reSet1[i].Bar_Code__c) || existIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品未到货确认'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str)); errorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } allMap.putAll(errorIdMap); allMap.putAll(existIdMap); //得到不存在的BarCode for (Integer i = 0; i < barCodeListP.size(); i++) { if (allMap.containsKey(barCodeListP[i])) { continue; } else { exitlist.add(barCodeListP[i]); } } reSet1 = [ SELECT Id, Name, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Box_Piece__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE (Dealer_Saled__c = TRUE OR Dealer_Shipment__c = TRUE) AND Dealer_Returned__c = FALSE AND Bar_Code__c IN :exitlist ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (errorIdMap.containsKey(reSet1[i].Bar_Code__c) || existIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品已经出货'; consumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str)); errorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } allMap.putAll(errorIdMap); for (Integer i = 0; i < barCodeListP.size(); i++) { if (allMap.containsKey(barCodeListP[i])) { continue; } else { notexitlist.add(barCodeListP[i]); } } if (notexitlist.size() > 0) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode号'+ notexitlist + '不存在。')); return new ResponseBodyLWC('Error', 500, 'BarCode号' + notexitlist + '不存在。', ''); } data.put('consumableorderdetailsRecords', consumableorderdetailsRecords); data.put('consumableorderdetailsRecordserror', consumableorderdetailsRecordserror); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } // 去的页面上的barcode,转换成List public static List ParseBarCode(String Code) { String[] Cache = new List{}; Cache = Code.split('\n'); List Buff = new List(); for (String A : Cache) { A = A.trim(); Buff.add(A.toUpperCase()); } return Buff; } // 出货 @AuraEnabled public static ResponseBodyLWC ProdElivery( String ESetIdLwc, Consumable_order__c cocLwc, String barcodeLwc, String accountNameLwc, String userWorkLocationLwc, String consumableorderdetailsRecordsLwc, List orderdetailsLwc, Map orderpriceMapLwc, Map orderagencypriceMapLwc ) { ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; ESetId = ESetIdLwc; coc = cocLwc; barcode = barcodeLwc; accountName = accountNameLwc; userWorkLocation = userWorkLocationLwc; consumableorderdetailsRecords = (List) JSON.deserialize( consumableorderdetailsRecordsLwc, List.class ); orderdetails = orderdetailsLwc; orderpriceMap = orderpriceMapLwc; orderagencypriceMap = orderagencypriceMap; BarcodeCntMap = new Map(); if (coc.Arrive_Order__r.IsShipment__c == true) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '订单已经出货')); // return null; return new ResponseBodyLWC('Error', 500, '订单已经出货', ''); } if (consumableorderdetailsRecords.size() < 1) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '无出货明细')); // return null; return new ResponseBodyLWC('Error', 500, '无出货明细', ''); } Getconsumableorderdetails2Nobox(); for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { String key = '' + ass.orderdetails2.Bar_Code__c; Integer deliverycnt = BarcodeCntMap.get(key); if ( ass.orderdetails2.Box_Piece__c == '个' && (ass.outboundCount == null || String.valueof(ass.outboundCount) == '' || ass.outboundCount <= 0) ) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '请输入产品 '+ ass.Prod.Name +' 的出货数量')); // return null; return new ResponseBodyLWC('Error', 500, '请输入产品 ' + ass.Prod.Name + ' 的出货数量', ''); } if (ass.outboundCount > deliverycnt) { // ass.orderdetails2.Rrturn_count__c.addError('超出出库数量'); // return null; return new ResponseBodyLWC('Error', 500, ass.orderdetails2.Name + '超出出库数量', ''); } } for (Integer i = 0; i < orderdetails.size(); i++) { Decimal a = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (ass.orderdetails2.Product_Pattern__c == orderdetails[i].Product_Pattern__c) { a = a + ass.outboundCount; } } // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'商品'+a)); if (a < orderdetails[i].Shipment_Count__c) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'商品'+orderdetails[i].Consumable_product__r.Name +'数量小于出货数量')); // return null; return new ResponseBodyLWC('Error', 500, '商品' + orderdetails[i].Consumable_product__r.Name + '数量小于出货数量', ''); } else if (a > orderdetails[i].Shipment_Count__c) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'商品'+orderdetails[i].Consumable_product__r.Name +'超出出货数量')); // return null; return new ResponseBodyLWC('Error', 500, '商品' + orderdetails[i].Consumable_product__r.Name + '超出出货数量', ''); } } List Ins = new List(); Savepoint sp = Database.setSavepoint(); List orderdetails1List = [ SELECT Id, Used_date__c FROM Consumable_orderdetails__c WHERE Consumable_order__c = :ESetId ]; try { if (orderdetails1List.size() > 0) { for (Integer i = 0; i < orderdetails1List.size(); i++) { orderdetails1List[i].RecordTypeId = System.Label.RT_ConOrderDetail1_Shipment; orderdetails1List[i].Used_date__c = Date.today(); } ControllerUtil.updateOrderDetails1Satus(orderdetails1List); } //coc.Order_type__c = '出货'; coc.RecordTypeId = System.Label.RT_ConOrder_Shipment; // update start by vivek 2019-7-15 // coc.SummonsStatus_c__c = '已完成'; if (coc.NoConfirmedPrice__c) { coc.SummonsStatus_c__c = '价格未定'; } else { coc.SummonsStatus_c__c = '已完成'; } // update start by vivek 2019-7-15 coc.Outbound_Date__c = Date.today(); update coc; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (ass.orderdetails2.Box_Piece__c == '个') { Decimal cnt = 1; for (Consumable_order_details2__c codctmp : consumableorderdetails2Nobox) { Consumable_order_details2__c insDetails = new Consumable_order_details2__c(); if (codctmp.Bar_Code__c == ass.orderdetails2.Bar_Code__c) { insDetails.Id = codctmp.Id; insDetails.Consumable_Sale_order__c = null; insDetails.Consumable_Return_order__c = null; insDetails.Consumable_ZS_order__c = ESetId; insDetails.Delivery_List_RMB__c = orderpriceMap.get(ass.orderdetails2.Product_Pattern__c); insDetails.Return_date__c = null; insDetails.Return_reason__c = null; insDetails.Consumable_Shipment_order__c = ESetId; insDetails.Send_Date__c = Date.today(); if (coc.SummonsForDirction__c == '互相调货') { insDetails.Transfer_Time__c = ass.orderdetails2.Transfer_Time__c == null ? 1 : ass.orderdetails2.Transfer_Time__c + 1; insDetails.Frist_Transfer_Agency__c = ass.orderdetails2.Frist_Transfer_Agency__c == null ? coc.Dealer_Info__r.Name : ass.orderdetails2.Frist_Transfer_Agency__c; insDetails.Agency_Transfer__c = true; } cnt++; Ins.add(insDetails); if (cnt > ass.outboundCount) break; } } } else { Consumable_order_details2__c insDetails = new Consumable_order_details2__c(); insDetails.Id = ass.orderdetails2.Id; insDetails.Consumable_Sale_order__c = null; insDetails.Consumable_Return_order__c = null; insDetails.Consumable_ZS_order__c = ESetId; insDetails.Delivery_List_RMB__c = orderpriceMap.get(ass.orderdetails2.Product_Pattern__c); insDetails.Return_date__c = null; insDetails.Return_reason__c = null; insDetails.Consumable_Shipment_order__c = ESetId; insDetails.Send_Date__c = Date.today(); if (coc.SummonsForDirction__c == '互相调货') { insDetails.Transfer_Time__c = ass.orderdetails2.Transfer_Time__c == null ? 1 : ass.orderdetails2.Transfer_Time__c + 1; insDetails.Frist_Transfer_Agency__c = ass.orderdetails2.Frist_Transfer_Agency__c == null ? coc.Dealer_Info__r.Name : ass.orderdetails2.Frist_Transfer_Agency__c; insDetails.Agency_Transfer__c = true; } Ins.add(insDetails); } } if (Ins.size() > 0) { ControllerUtil.updateOrderDetailsSatus(Ins); } if (coc.Arrive_Order__c != null) { Consumable_order__c OrderUps = new Consumable_order__c(); OrderUps.Id = coc.Arrive_Order__c; OrderUps.IsShipment__c = true; update OrderUps; } } catch (Exception ex) { Database.rollback(sp); return new ResponseBodyLWC('Error', 500, ex.getMessage(), ''); } res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } // 销售 @AuraEnabled public static ResponseBodyLWC ProSale( String ESetIdLwc, Consumable_order__c cocLwc, String barcodeLwc, String accountNameLwc, String userWorkLocationLwc, String consumableorderdetailsRecordsLwc, List orderdetailsLwc, Map orderpriceMapLwc, Map orderagencypriceMapLwc ) { System.debug('enter ProSale'); ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; ESetId = ESetIdLwc; coc = cocLwc; barcode = barcodeLwc; accountName = accountNameLwc; userWorkLocation = userWorkLocationLwc; consumableorderdetailsRecords = (List) JSON.deserialize( consumableorderdetailsRecordsLwc, List.class ); orderdetails = orderdetailsLwc; orderpriceMap = orderpriceMapLwc; orderagencypriceMap = orderagencypriceMapLwc; System.debug('ESetId = ' + ESetId); System.debug('coc = ' + coc); System.debug('barcode = ' + barcode); System.debug('accountName = ' + accountName); System.debug('userWorkLocation = ' + userWorkLocation); System.debug('consumableorderdetailsRecords = ' + consumableorderdetailsRecords); System.debug('orderdetails = ' + orderdetails); System.debug('orderpriceMap = ' + orderpriceMap); System.debug('orderagencypriceMap = ' + orderagencypriceMap); BarcodeCntMap = new Map(); if (consumableorderdetailsRecords.size() < 1) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '无销售明细')); // return null; return new ResponseBodyLWC('Error', 500, '无销售明细', ''); } if (coc.Arrive_Order__r.IsShipment__c == true) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '订单已经销售')); // return null; return new ResponseBodyLWC('Error', 500, '订单已经销售', ''); } Getconsumableorderdetails2Nobox(); System.debug('BarcodeCntMap = ' + BarcodeCntMap); for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { String key = '' + ass.orderdetails2.Bar_Code__c; Integer deliverycnt = BarcodeCntMap.get(key); if ( ass.orderdetails2.Box_Piece__c == '个' && (ass.outboundCount == null || String.valueof(ass.outboundCount) == '' || ass.outboundCount <= 0) ) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '请输入产品 '+ ass.Prod.Name +' 的出货数量')); // return null; System.debug('ass.orderdetails2.Box_Piece__c = ' + ass.orderdetails2.Box_Piece__c); System.debug('ass.outboundCount = ' + ass.outboundCount); return new ResponseBodyLWC('Error', 500, '请输入产品 ' + ass.Prod.Name + ' 的出货数量', ''); } if (ass.outboundCount > deliverycnt) { // ass.orderdetails2.Rrturn_count__c.addError('超出出库数量'); // return null; return new ResponseBodyLWC('Error', 500, ass.orderdetails2.Name + '超出出库数量', ''); } } for (Integer i = 0; i < orderdetails.size(); i++) { Decimal a = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (ass.orderdetails2.Product_Pattern__c == orderdetails[i].Product_Pattern__c) { a = a + ass.outboundCount; } } if (a < orderdetails[i].Shipment_Count__c) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'商品'+orderdetails[i].Consumable_product__r.Name +'数量小于出货数量')); // return null; return new ResponseBodyLWC('Error', 500, '商品' + orderdetails[i].Consumable_product__r.Name + '数量小于出货数量', ''); } else if (a > orderdetails[i].Shipment_Count__c) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'商品'+orderdetails[i].Consumable_product__r.Name +'超出出货数量')); // return null; return new ResponseBodyLWC('Error', 500, '商品' + orderdetails[i].Consumable_product__r.Name + '超出出货数量', ''); } } Savepoint sp = Database.setSavepoint(); List orderdetails1List = [ SELECT Id, Used_date__c FROM Consumable_orderdetails__c WHERE Consumable_order__c = :ESetId ]; try { if (orderdetails1List.size() > 0) { for (Integer i = 0; i < orderdetails1List.size(); i++) { orderdetails1List[i].RecordTypeId = System.Label.RT_ConOrderDetail1_Sale; orderdetails1List[i].Used_date__c = Date.today(); } ControllerUtil.updateOrderDetails1Satus(orderdetails1List); } //coc.Order_type__c = '销售'; coc.RecordTypeId = System.Label.RT_ConOrder_Sale; // update start by vivek 2019-7-15 // coc.SummonsStatus_c__c = '已完成'; if (coc.NoConfirmedPrice__c) { coc.SummonsStatus_c__c = '价格未定'; } else { coc.SummonsStatus_c__c = '已完成'; } // update start by vivek 2019-7-15 coc.Outbound_Date__c = Date.today(); update coc; //销售明细 List Ins = new List(); for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (ass.orderdetails2.Box_Piece__c == '个') { Decimal cnt = 1; for (Consumable_order_details2__c codctmp : consumableorderdetails2Nobox) { Consumable_order_details2__c insDetails = new Consumable_order_details2__c(); if (codctmp.Bar_Code__c == ass.orderdetails2.Bar_Code__c) { insDetails.Id = codctmp.Id; insDetails.Consumable_Shipment_order__c = null; insDetails.Consumable_Return_order__c = null; insDetails.Consumable_ZS_order__c = ESetId; insDetails.Return_date__c = null; insDetails.Delivery_List_RMB__c = orderpriceMap.get(ass.orderdetails2.Product_Pattern__c); if (orderagencypriceMap.containsKey(ass.orderdetails2.Product_Pattern__c) == true) { insDetails.Unitprice_To_agency__c = orderagencypriceMap.get(ass.orderdetails2.Product_Pattern__c); } insDetails.Return_reason__c = null; insDetails.Used_date__c = Date.today(); insDetails.Consumable_Sale_order__c = ESetId; cnt++; Ins.add(insDetails); if (cnt > ass.outboundCount) break; } } } else { Consumable_order_details2__c insDetails = new Consumable_order_details2__c(); insDetails.Id = ass.orderdetails2.Id; insDetails.Consumable_Shipment_order__c = null; insDetails.Consumable_Return_order__c = null; insDetails.Consumable_ZS_order__c = ESetId; insDetails.Return_date__c = null; insDetails.Delivery_List_RMB__c = orderpriceMap.get(ass.orderdetails2.Product_Pattern__c); if (orderagencypriceMap.containsKey(ass.orderdetails2.Product_Pattern__c) == true) { insDetails.Unitprice_To_agency__c = orderagencypriceMap.get(ass.orderdetails2.Product_Pattern__c); } insDetails.Return_reason__c = null; insDetails.Used_date__c = Date.today(); insDetails.Consumable_Sale_order__c = ESetId; Ins.add(insDetails); } } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'consumableorderdetails2Nobox +++'+consumableorderdetails2Nobox.size())); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'Ins +++'+Ins)); //return null; if (Ins.size() > 0) { ControllerUtil.updateOrderDetailsSatus(Ins); } if (coc.Arrive_Order__c != null) { Consumable_order__c orderUps = new Consumable_order__c(); orderUps.Id = coc.Arrive_Order__c; orderUps.IsShipment__c = true; update orderUps; } } catch (Exception e) { Database.rollback(sp); return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getStackTraceString(), ''); } res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; <<<<<<< HEAD } public static integer Getconsumableorderdetails2Nobox() { if (String.isBlank(barcode)) { return 0; } List barCodeListP = ParseBarCode(barcode); consumableorderdetails2Nobox = new List(); BarcodeCntMap.clear(); consumableorderdetails2Nobox = [ SELECT Id, Name, recordtypeid, Used_account__c, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, ProductPacking_list_manual__c, Guarantee_period_for_products__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Bar_Code__c != NULL AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :barCodeListP AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Box_Piece__c = '个' ORDER BY RemoveBox_No__c DESC ]; AggregateResult[] results = [ SELECT Bar_Code__c, count(Id) recordCount FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Bar_Code__c != NULL AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :barCodeListP AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Box_Piece__c = '个' GROUP BY Bar_Code__c ]; for (AggregateResult ar : results) { String key = '' + ar.get('Bar_Code__c'); BarcodeCntMap.put(key, Integer.valueOf(ar.get('recordCount'))); } return consumableorderdetails2Nobox.size(); } @TestVisible class ConsumableorderdetailsInfo implements Comparable { @AuraEnabled public Consumable_orderdetails__c orderdetails1 { get; set; } @AuraEnabled public Consumable_order_details2__c orderdetails2 { get; set; } @AuraEnabled public Product2__c Prod { get; set; } @AuraEnabled public String oldConsumableCount { get; set; } @AuraEnabled public String ErrorReason { get; set; } @AuraEnabled public Decimal outboundCount { get; set; } public ConsumableorderdetailsInfo(Consumable_order_details2__c e, string str) { orderdetails1 = new Consumable_orderdetails__c(); orderdetails2 = e; Prod = e.Consumable_Product__r; oldConsumableCount = e.name; ErrorReason = str; } public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { orderdetails1 = new Consumable_orderdetails__c(); orderdetails2 = e; Prod = e.Consumable_Product__r; if (e.Box_Piece__c == '盒') { outboundCount = 1; } oldConsumableCount = e.name; } public ConsumableorderdetailsInfo(Consumable_orderdetails__c e) { orderdetails1 = e; Prod = e.Consumable_Product__r; outboundCount = e.Shipment_Count__c; } // 排序 public Integer compareTo(Object compareTo) { return null; } } } ======= } public static integer Getconsumableorderdetails2Nobox() { if (String.isBlank(barcode)) { return 0; } List barCodeListP = ParseBarCode(barcode); consumableorderdetails2Nobox = new List(); BarcodeCntMap.clear(); consumableorderdetails2Nobox = [ SELECT Id, Name, recordtypeid, Used_account__c, Product_Pattern__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, ProductPacking_list_manual__c, Guarantee_period_for_products__c, hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Bar_Code__c != NULL AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :barCodeListP AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Box_Piece__c = '个' ORDER BY RemoveBox_No__c DESC ]; AggregateResult[] results = [ SELECT Bar_Code__c, count(Id) recordCount FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Bar_Code__c != NULL AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :barCodeListP AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Box_Piece__c = '个' GROUP BY Bar_Code__c ]; for (AggregateResult ar : results) { String key = '' + ar.get('Bar_Code__c'); BarcodeCntMap.put(key, Integer.valueOf(ar.get('recordCount'))); } return consumableorderdetails2Nobox.size(); } @TestVisible class ConsumableorderdetailsInfo implements Comparable { @AuraEnabled public Consumable_orderdetails__c orderdetails1 { get; set; } @AuraEnabled public Consumable_order_details2__c orderdetails2 { get; set; } @AuraEnabled public Product2__c Prod { get; set; } @AuraEnabled public String oldConsumableCount { get; set; } @AuraEnabled public String ErrorReason { get; set; } @AuraEnabled public Decimal outboundCount { get; set; } public ConsumableorderdetailsInfo(Consumable_order_details2__c e, string str) { orderdetails1 = new Consumable_orderdetails__c(); orderdetails2 = e; Prod = e.Consumable_Product__r; oldConsumableCount = e.name; ErrorReason = str; } public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { orderdetails1 = new Consumable_orderdetails__c(); orderdetails2 = e; Prod = e.Consumable_Product__r; if (e.Box_Piece__c == '盒') { outboundCount = 1; } oldConsumableCount = e.name; } public ConsumableorderdetailsInfo(Consumable_orderdetails__c e) { orderdetails1 = e; Prod = e.Consumable_Product__r; outboundCount = e.Shipment_Count__c; } // 排序 public Integer compareTo(Object compareTo) { return null; } } } >>>>>>> LEXCommunityLiJun