public without sharing class LexInventoryViewController { /*****************画面表示Bean******************/ public static List consumableorderdetailsRecords = new List(); public static List> consumableorderdetailsRecordsview = new List>(); // page public static Integer pagesize { get; set; } public static Integer pageToken { get; set; } public static String sortField { get; set; } public static String sortOrder { get; set; } public static Integer totalcount { get; set; } // public static Integer pagecount { get; set; } // public static Integer currentpage { get; set; } // public static Boolean hasPrevious { get; set; } // public static Boolean hasNext { get; set; } public static List pageRecords { get; set; } public static String soql { get; 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 String[] columus = new List{ // 'Product2__c.Name__c', // 'Asset_Model_No__c', // '', // 'Category3__c', // 'Category4__c', // 'Category5__c', // '' // }; public static String[] proLimitAndDate = new List{}; public static Map productkucun = new Map(); public static List categoryOptionList { get; set; } @AuraEnabled public static Map categoryOptionMap { get; set; } public static List category4OptionList { get; set; } @AuraEnabled public static Map category4OptionMap { get; set; } public static List category5OptionList { get; set; } @AuraEnabled public static Map category5OptionMap { 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 String category1 { get; set; } public static Boolean editAble { get; set; } // 经销商在库产品ID public static List orderDetZaikuList{set;get;} // 产品 ID public static String ESetId { get; set; } public static String idCheck { get; set; } /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/ private static String accountid = null; public static String accountName { get; set; } // 查看产品 // private String[] ProidListAll = new String[]{}; // 登录者工作地 private static String userWorkLocation; // 经销商用户产品分类(ET、ENG) public static String agencyProType { get; set; } public static String sqlagencyProType; // add by rentx 2021-3-10 public static Boolean hasHos { get; set; } // add by rentx 2021-3-10 public LexInventoryViewController() { orderDetZaikuList = new List(); consumableorderdetailsRecords = new List(); consumableorderdetailsRecordsview = new List>(); editAble = false; categoryOptionList = new List(); category4OptionList = new List(); category5OptionList = new List(); categoryOptionMap = new Map(); category4OptionMap = new Map(); category5OptionMap = new Map(); // page // pagesize = Integer.valueof(system.label.orderdetLimitsize); // currentpage = 0; } @AuraEnabled public static ResponseBodyLWC init(Integer pageSizeLWC, Integer pageTokenLWC, String sortFieldLWC, String sortOrderLWC) { pageSize = pageSizeLWC; pageToken = pageTokenLWC; sortField = sortFieldLWC; sortOrder = sortOrderLWC; ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; categoryOptionMap = new Map(); category4OptionMap = new Map(); category5OptionMap = new Map(); // 取用户ID String userId = UserInfo.getUserId(); User useracc = [SELECT Accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :userId]; accountid = useracc.accountid; userWorkLocation = useracc.Work_Location__c; agencyProType = Useracc.UserPro_Type__c; if (String.isBlank(Useracc.UserPro_Type__c)) { agencyProType = 'ET'; } Account accountInfo = [SELECT Name, Dealer_discount__c, Product_Limit_Date__c FROM account WHERE id = :accountid]; accountName = accountInfo.Name; // 经销商查看产品 String product_Limit = accountInfo.Product_Limit_Date__c; if (product_Limit != null && product_Limit != '') { proLimitAndDate = product_Limit.split(','); } List boxRecords = new List(); Map MidMap = new Map(); Map newMidBoxMap = new Map(); Map newMidPieceMap = new Map(); // 库存明细取得 sqlagencyProType = '%' + agencyProType + '%'; orderDetZaikuList = new List(); System.debug('sqlagencyProType = ' + sqlagencyProType); System.debug('accountName = ' + accountName); System.debug('userWorkLocation = ' + userWorkLocation); List orderDetZaiku = [ SELECT count(Id), Consumable_Product__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 Product_Type__c LIKE :sqlagencyProType AND Dealer_Info_text__c = :accountName AND Cancellation_Flag__c = FALSE AND Arrive_Owner_Work_Location__c = :userWorkLocation GROUP BY Consumable_Product__c ]; for (AggregateResult zaikuId : orderDetZaiku) { orderDetZaikuList.add(String.valueOf(zaikuId.get('Consumable_Product__c'))); } System.debug('orderDetZaikuList = ' + orderDetZaikuList); List CountDel = [ SELECT Id, Bar_Code__c, Name, Inventory_date__c, Consumable_Product__c, Recordtypeid, Guarantee_period_for_products__c, Isoverdue__c, Box_Piece__c, hospitalSpecialOffer__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 Product_Type__c LIKE :sqlagencyProType AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ]; System.debug('MidMap = ' + MidMap); System.debug('CountDel111 = ' + CountDel); System.debug('orderDetZaikuList = ' + orderDetZaikuList); List product2Selected = [ SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, Category3__c, Category4__c, Category5__c, SFDA_Status__c, Product2__r.SFDA_Approbation_No__c, Product2__r.SFDA_Expiration_Date__c, Product2__r.Packing_list_manual__c FROM Product2__c WHERE Id IN :orderDetZaikuList ]; System.debug('product2Selected = ' + product2Selected); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, product2Selected[i]); } System.debug('MidMap = ' + MidMap); /////////////////////====================================update by rentx Map newHosMidBoxMap = new Map(); Map newHosMidPieceMap = new Map(); // update by rentx 2021-01-27 start for (Integer i = 0; i < CountDel.size(); i++) { // 然后循环CountDel做Box和piece2个map if (MidMap.containsKey(CountDel[i].Consumable_Product__c) && CountDel[i].Box_Piece__c == '盒') { String tex = 'A'; if (CountDel[i].hospitalSpecialOffer__c) { tex = 'B'; } if (newMidBoxMap.containsKey(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex)) { ConsumableorderdetailsInfo Jstage = newMidBoxMap.get(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex) .clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; newMidBoxMap.put(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex, Jstage); } else { ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(CountDel[i].Consumable_Product__c)); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } newMidBoxMap.put(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex, Jstage); } } else if (MidMap.containsKey(CountDel[i].Consumable_Product__c) && CountDel[i].Box_Piece__c == '个') { String tex = 'A'; if (CountDel[i].hospitalSpecialOffer__c) { tex = 'B'; } if (newMidPieceMap.containsKey(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex)) { ConsumableorderdetailsInfo Jstage = newMidPieceMap.get( CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex ) .clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } newMidPieceMap.put(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex, Jstage); } else { ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(CountDel[i].Consumable_Product__c)); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } newMidPieceMap.put(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex, Jstage); } } } consumableorderdetailsRecords = new List(); // 把Boxmap里的值从新赋给boxRecords System.debug('newMidBoxMap = ' + newMidBoxMap); for (ConsumableorderdetailsInfo bss : newMidBoxMap.values()) { if (bss.allnumber > 0) { bss.sortBy = false; 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; bss.overlimitCount = bss.allnumber - bss.limitCount; boxRecords.add(bss); } } boxRecords.sort(); for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { if (bss.allnumber > 0) { 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; bss.overlimitCount = bss.allnumber - bss.limitCount; } } for (ConsumableorderdetailsInfo bss : boxRecords) { consumableorderdetailsRecords.add(bss); // 该产品是医院特价产品 if (bss.hospitalSpecialOffer && newMidPieceMap.containsKey(bss.Prod.Id + '个B')) { if (newMidPieceMap.get(bss.Prod.Id + '个B').hospitalSpecialOffer) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个B')); newMidPieceMap.remove(bss.Prod.Id + '个B'); } } if (!bss.hospitalSpecialOffer && newMidPieceMap.containsKey(bss.Prod.Id + '个A')) { // if (newMidPieceMap.get(bss.Prod.Id+'个A')) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个A')); newMidPieceMap.remove(bss.Prod.Id + '个A'); // } } } for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { if (newMidPieceMap.containsKey(bss.Prod.Id + '个B')) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个B')); } } for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { if (newMidPieceMap.containsKey(bss.Prod.Id + '个A')) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个A')); } } productLimtAndDate(); datelimitSearch(); // add by rentx 2021-3-10 start Integer hosnum = 0; // add by rentx 2021-3-10 end for (ConsumableorderdetailsInfo bss : consumableorderdetailsRecords) { if (productkucun.get(bss.Prod.Id) != null) { bss.guaranteeperiod = productkucun.get(bss.Prod.Id); } // add by rentx 2021-3-10 start if (bss.hospitalSpecialOffer) { hosnum = hosnum + 1; } } if (hosnum > 0) { hasHos = true; } else { hasHos = false; } // add by rentx 2021-3-10 end // listCut(); 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 ]; categoryOptionList = new List(); categoryOptionList.add(new SelectOption('', '-无-')); categoryOptionMap.put('', '-无-'); for (AggregateResult category3Search : categoryList) { String deliverycnt = String.valueOf(category3Search.get('c3c')); categoryOptionList.add(new SelectOption(deliverycnt, deliverycnt)); categoryOptionMap.put(deliverycnt, deliverycnt); } category4OptionList = new List(); category4OptionList.add(new SelectOption('', '-无-')); category4OptionMap.put('', '-无-'); category5OptionList = new List(); category5OptionList.add(new SelectOption('', '-无-')); category5OptionMap.put('', '-无-'); System.debug('categoryOptionList===>' + category4OptionList); System.debug('category4OptionList===>' + category4OptionList); System.debug('category5OptionList===>' + category4OptionList); //// 总件数 totalcount = consumableorderdetailsRecords.size(); //// 页数 // pagecount = (totalcount + pagesize - 1) / pagesize; //// 显示第一页 // moveToFirst(); makeCurrentPageRecords(); // data.put('categoryOptionList',categoryOptionList); PaginatedAccounts paginatedAccounts = new PaginatedAccounts(); paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null; paginatedAccounts.recordStart = pageToken + 1; paginatedAccounts.pageNumber = pageToken / pageSize + 1; Integer recordEnd = pageSize * paginatedAccounts.pageNumber; paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount; paginatedAccounts.totalRecords = totalCount; data.put('paginatedAccounts', paginatedAccounts); data.put('categoryOptionMap', categoryOptionMap); data.put('category4OptionMap', category4OptionMap); data.put('category5OptionMap', category5OptionMap); data.put('agencyProType', agencyProType); data.put('orderDetZaikuList', orderDetZaikuList); data.put('accountid', accountid); data.put('accountName', accountName); data.put('sqlagencyProType', accountName); data.put('userWorkLocation', userWorkLocation); data.put('agencyProType', agencyProType); data.put('pageRecords', pageRecords); data.put('consumableorderdetailsRecords', consumableorderdetailsRecords); data.put('hasHos', hasHos); data.put('productLimtAndDate',proLimitAndDate); data.put('productkucun',productkucun); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); System.debug('productkucun = ' + productkucun); return res; } @AuraEnabled public static ResponseBodyLWC categoryAllload(String category3LWC,String agencyProTypeLWC) { ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; category3 = category3LWC; agencyProType = '%' + agencyProTypeLWC + '%'; System.debug('category3LWC===>'+category3LWC); System.debug('agencyProType===>'+agencyProType); AggregateResult[] category4List = [ SELECT Count(id), Category4_text__c c4c FROM Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Category3_text__c = :category3 AND Product_Type__c LIKE :agencyProType AND Category4_text__c != NULL AND Category5_text__c != NULL GROUP BY Category4_text__c ]; category4OptionList = new List(); category4OptionList.add(new SelectOption('', '-无-')); category4OptionMap = new Map(); category4OptionMap.put('', '-无-'); for (AggregateResult category4Search : category4List) { String deliverycnt4 = String.valueOf(category4Search.get('c4c')); category4OptionList.add(new SelectOption(deliverycnt4, deliverycnt4)); category4OptionMap.put(deliverycnt4, deliverycnt4); } AggregateResult[] category5List = [ SELECT Count(id), Category5_text__c c5c FROM Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Category3_text__c = :category3 AND Product_Type__c LIKE :agencyProType AND Category4_text__c != NULL AND Category5_text__c != NULL GROUP BY Category5_text__c ]; category5OptionList = new List(); category5OptionList.add(new SelectOption('', '-无-')); category5OptionMap = new Map(); category5OptionMap.put('', '-无-'); for (AggregateResult category5Search : category5List) { String deliverycnt5 = String.valueOf(category5Search.get('c5c')); category5OptionList.add(new SelectOption(deliverycnt5, deliverycnt5)); category5OptionMap.put(deliverycnt5, deliverycnt5); } System.debug('类别4'+category4OptionList); System.debug('类别5'+category5OptionList); data.put('category4OptionMap', category4OptionMap); data.put('category5OptionMap', category5OptionMap); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } public static void categoryload() { AggregateResult[] category4List = [ SELECT Count(id), Category4_text__c c4c FROM Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Category3_text__c = :category3 AND Product_Type__c LIKE :agencyProType AND Category4_text__c != NULL AND Category5_text__c != NULL GROUP BY Category4_text__c ]; category4OptionList = new List(); category4OptionList.add(new SelectOption('', '-无-')); for (AggregateResult category4Search : category4List) { String deliverycnt4 = String.valueOf(category4Search.get('c4c')); category4OptionList.add(new SelectOption(deliverycnt4, deliverycnt4)); } AggregateResult[] category5List = [ SELECT Count(id), Category5_text__c c5c FROM Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Category3_text__c = :category3 AND Product_Type__c LIKE :agencyProType AND Category4_text__c = :category4 AND Category5_text__c != NULL GROUP BY Category5_text__c ]; category5OptionList = new List(); category5OptionList.add(new SelectOption('', '-无-')); for (AggregateResult category5Search : category5List) { String deliverycnt5 = String.valueOf(category5Search.get('c5c')); category5OptionList.add(new SelectOption(deliverycnt5, deliverycnt5)); } } // 检索 @AuraEnabled public static ResponseBodyLWC searchConsumableorderdetails( String category1, String Category3, String Category4, String Category5, List orderDetZaikuListLWC, String accountName, string agencyProType, string userWorkLocation, Integer pageSizeLWC, Integer pageTokenLWC, String sortFieldLWC, String sortOrderLWC, Map productkucunLWC ) { try { System.debug('orderDetZaikuListLWC===>'+orderDetZaikuListLWC); System.debug('productkucun===>'+productkucun); pageSize = pageSizeLWC; pageToken = pageTokenLWC; sortField = sortFieldLWC; sortOrder = sortOrderLWC; productkucun = new Map(); orderDetZaikuList = new List(); productkucun = productkucunLWC; orderDetZaikuList = orderDetZaikuListLWC; sqlagencyProType = '%' + agencyProType + '%'; ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; System.debug('====>accountName' + accountName); System.debug('====>sqlagencyProType' + sqlagencyProType); System.debug('====>userWorkLocation' + userWorkLocation); System.debug('====>category1' + category1); System.debug('====>Category3' + Category3); System.debug('====>Category4' + Category4); System.debug('====>Category5' + Category5); // sortKey = '2'; // preSortKey = '2'; // sortOrderAsc = false; // sortOrder = new List(8); // sortOrder = new List{ ' ', '', ' ', ' ', '', '', '', '↓' }; List reSet = new List(); List CountDel = [ SELECT Id, Bar_Code__c, Name, Inventory_date__c, Consumable_Product__c, Recordtypeid, Guarantee_period_for_products__c, Isoverdue__c, Box_Piece__c, hospitalSpecialOffer__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 Product_Type__c LIKE :sqlagencyProType AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ]; System.debug('CountDel = ' + CountDel); List boxRecords = new List(); Map MidMap = new Map(); Map newMidBoxMap = new Map(); Map newMidPieceMap = new Map(); // 所有产品取得 String soql = makeSoql(category1, category_Goods, category3, category4, category5); //orderDetZaikuList System.debug('orderDetZaikuList = ' + orderDetZaikuList); System.debug('accountName = ' + accountName); System.debug('soql====>' + soql); //排序 // if (String.isNotBlank(sortField) && String.isNotBlank(sortOrder)) { // if(sortFieldLWC != 'limitCount'){ // soql += ' ORDER BY ' + sortField + ' ' + sortOrder; // } // } System.debug('soql = ' + soql); //soql += ' ORDER BY ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last'); List queryList = Database.query(soql); System.debug('queryList = ' + queryList); for (Integer i = 0; i < queryList.size(); i++) { MidMap.put(queryList[i].Id, queryList[i]); } System.debug('MidMap = ' + MidMap); Map newHosMidBoxMap = new Map(); Map newHosMidPieceMap = new Map(); System.debug('CountDel = ' + CountDel); for (Integer i = 0; i < CountDel.size(); i++) { //然后循环CountDel做Box和piece2个map if (MidMap.containsKey(CountDel[i].Consumable_Product__c) && CountDel[i].Box_Piece__c == '盒') { String tex = 'A'; if (CountDel[i].hospitalSpecialOffer__c) { tex = 'B'; } if (newMidBoxMap.containsKey(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex)) { ConsumableorderdetailsInfo Jstage = newMidBoxMap.get( CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex ) .clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; newMidBoxMap.put(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex, Jstage); } else { ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(CountDel[i].Consumable_Product__c)); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } newMidBoxMap.put(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex, Jstage); } } else if (MidMap.containsKey(CountDel[i].Consumable_Product__c) && CountDel[i].Box_Piece__c == '个') { String tex = 'A'; if (CountDel[i].hospitalSpecialOffer__c) { tex = 'B'; } if (newMidPieceMap.containsKey(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex)) { ConsumableorderdetailsInfo Jstage = newMidPieceMap.get( CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex ) .clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } newMidPieceMap.put(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex, Jstage); } else { ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(CountDel[i].Consumable_Product__c)); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } newMidPieceMap.put(CountDel[i].Consumable_Product__c + CountDel[i].Box_Piece__c + tex, Jstage); } } } consumableorderdetailsRecords = new List(); System.debug('newMidBoxMap = ' + newMidBoxMap); //把Boxmap里的值从新赋给boxRecords for (ConsumableorderdetailsInfo bss : newMidBoxMap.values()) { if (bss.allnumber > 0) { bss.sortBy = false; 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; bss.overlimitCount = bss.allnumber - bss.limitCount; boxRecords.add(bss); } } boxRecords.sort(); for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { if (bss.allnumber > 0) { 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; bss.overlimitCount = bss.allnumber - bss.limitCount; } } System.debug('boxRecords = ' + boxRecords); for (ConsumableorderdetailsInfo bss : boxRecords) { consumableorderdetailsRecords.add(bss); //该产品是医院特价产品 if (bss.hospitalSpecialOffer && newMidPieceMap.containsKey(bss.Prod.Id + '个B')) { if (newMidPieceMap.get(bss.Prod.Id + '个B').hospitalSpecialOffer) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个B')); newMidPieceMap.remove(bss.Prod.Id + '个B'); } } if (!bss.hospitalSpecialOffer && newMidPieceMap.containsKey(bss.Prod.Id + '个A')) { // if (newMidPieceMap.get(bss.Prod.Id+'个A')) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个A')); newMidPieceMap.remove(bss.Prod.Id + '个A'); // } } } for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { if (newMidPieceMap.containsKey(bss.Prod.Id + '个B')) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个B')); } } for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { if (newMidPieceMap.containsKey(bss.Prod.Id + '个A')) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个A')); } } productLimtAndDate(); datelimitSearch(); System.debug('consumableorderdetailsRecords zzz = ' + consumableorderdetailsRecords); for (ConsumableorderdetailsInfo bss : consumableorderdetailsRecords) { if (productkucun.get(bss.Prod.Id) != null) { bss.guaranteeperiod = productkucun.get(bss.Prod.Id); } } //listCut(); // sortKey = '2'; // preSortKey = '2'; // sortOrderAsc = false; // sortOrder = new List(8); // sortOrder = new List{ ' ', '', ' ', ' ', '', '', '', '↓' }; // //总件数 totalcount = consumableorderdetailsRecords.size(); // //页数 // pagecount=(totalcount + pagesize - 1) / pagesize; //显示第一页 //currentpage = 0; //moveToFirst(); makeCurrentPageRecords(); PaginatedAccounts paginatedAccounts = new PaginatedAccounts(); paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null; paginatedAccounts.recordStart = pageToken + 1; paginatedAccounts.pageNumber = pageToken / pageSize + 1; Integer recordEnd = pageSize * paginatedAccounts.pageNumber; paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount; paginatedAccounts.totalRecords = totalCount; List pageRecordsCompare = new List(); System.debug('queryList = ' + JSON.serialize(queryList)); for (Integer i = 0; i < queryList.size(); i++) { for(ConsumableorderdetailsInfo ci : pageRecords){ if(queryList[i].Id == ci.Prod.Id){ System.debug('queryList[i].Id =' + queryList[i].Id); System.debug('ci.Prod.Id =' + queryList[i].Id); pageRecordsCompare.add(ci); } } } data.put('paginatedAccounts', paginatedAccounts); data.put('accountid', accountid); data.put('userWorkLocation', userWorkLocation); data.put('agencyProType', agencyProType); data.put('pageRecords', pageRecordsCompare); data.put('hasHos', hasHos); system.debug('===========>pageRecords' + pageRecordsCompare); system.debug('===========>data' + data); if (pageRecords.isEmpty()) { res.msg = '未搜索到相关消耗品订单!'; res.status = 'fail'; res.code = 500; } else { res.status = 'Success'; res.msg = '共有' + pageRecords.size() + '条数据'; res.code = 200; System.debug('res = ' + res); } return res; } catch (Exception e) { return new ResponseBodyLWC('Error', 500, e.getStackTraceString(), ''); } } 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) ); } } } public static void datelimitSearch() { List barcodekucun = new List(); List orderkucun = [ SELECT Id, Bar_Code__c, Name, Consumable_Product__c, Recordtypeid, Guarantee_period_for_products__c, Sterilization_limit__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 Product_Type__c LIKE :sqlagencyProType AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Consumable_Product__c, Sterilization_limit__c ASC ]; for (Integer i = 0; i < orderkucun.size(); i++) { if (productkucun.containsKey(orderkucun[i].Consumable_Product__c)) { continue; } else { productkucun.put(orderkucun[i].Consumable_Product__c, orderkucun[i].Sterilization_limit__c); } } } //名称排序 // public static void SortLimited() { // Map MidMap = new Map(); // Map newMap = new Map(); // if (sortKey == preSortKey) { // // 方向が変わるのみ // sortOrderAsc = !sortOrderAsc; // sortOrder[Integer.valueOf(sortKey)] = (sortOrderAsc == true ? '↑' : '↓'); // } else { // sortOrderAsc = true; // sortOrder[Integer.valueOf(preSortKey)] = ' '; // sortOrder[Integer.valueOf(sortKey)] = (sortOrderAsc == true ? '↑' : '↓'); // } // preSortKey = sortKey; // // 所有产品取得 // String soql = makeSoql(null, null, null, null, null); // soql += ' ORDER BY ' + columus[Integer.valueOf(sortKey)] + ' ' + (sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last'); // List queryList = Database.query(soql); // for (Integer i = 0; i < queryList.size(); i++) { // MidMap.put(queryList[i].Id + '盒', null); // MidMap.put(queryList[i].Id + '个', null); // } // //update by rentx 2020-12-29 // for (Integer i = 0; i < pageRecords.size(); i++) { // if (MidMap.containsKey(pageRecords[i].prod.Id + pageRecords[i].BoxPiece)) { // ConsumableorderdetailsInfo Jstage = pageRecords[i].clone(); // if (Jstage.hospitalSpecialOffer == true) { // newMap.put(pageRecords[i].prod.id + pageRecords[i].BoxPiece, Jstage); // } else { // MidMap.put(pageRecords[i].prod.id + pageRecords[i].BoxPiece, Jstage); // } // } // } // pageRecords = new List(); // //update byr entx 2020-12-29 // //再把map里的值从新赋给CpageRecords // for (ConsumableorderdetailsInfo bss : MidMap.values()) { // if (bss != null) { // pageRecords.add(bss); // if (newMap.get(bss.Prod.Id + bss.BoxPiece) != null) { // pageRecords.add(newMap.get(bss.Prod.Id + bss.BoxPiece)); // newMap.remove(bss.Prod.Id + bss.BoxPiece); // } // } // } // for (ConsumableorderdetailsInfo bss : newMap.values()) { // if (bss != null) { // pageRecords.add(bss); // } // } // } //库存排序 // public static void SortStore() { // if (sortKey == preSortKey) { // // 方向が変わるのみ // sortOrder = !sortOrder; // sortOrder[Integer.valueOf(sortKey)] = (sortOrderAsc == true ? '↑' : '↓'); // } else { // sortOrderAsc = true; // sortOrder[Integer.valueOf(preSortKey)] = ' '; // sortOrder[Integer.valueOf(sortKey)] = (sortOrderAsc == true ? '↑' : '↓'); // } // preSortKey = sortKey; // for (ConsumableorderdetailsInfo ass : pageRecords) { // ass.sortBy = sortOrderAsc; // } // pageRecords.sort(); // } //检索sql文做成 private static String makeSoql(String CateName, String CateCode, String Category3, String Category4, String Category5) { System.debug('orderDetZaikuList = ' + orderDetZaikuList); String sqlTail = '(\''; for (Integer i = 0; i < orderDetZaikuList.size(); i++) { if (i < orderDetZaikuList.size() - 1) { sqlTail += orderDetZaikuList[i] + '\',\''; } else { sqlTail += orderDetZaikuList[i] + '\')'; } } String soql = 'select Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,Category3__c,Category4__c,Category5__c,'; soql += ' SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c FROM Product2__c '; soql += ' WHERE Id in' + sqlTail; 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 + '\''; } return soql; } //首页 // public static void moveToFirst() { // if (currentpage == 1) // return; // currentpage = 1; // canMove(); // } // //尾页 // public static void moveToLast() { // if (currentpage >= pagecount) // return; // currentpage = pagecount; // canMove(); // } // //上一页 // public static void moveToPrevious() { // if (currentpage == 1) // return; // currentpage = currentpage - 1; // canMove(); // } // //下一页 // public static void moveToNext() { // if (currentpage >= pagecount) // return; // currentpage = currentpage + 1; // canMove(); // } // //判断是否可翻页 // public static void canMove() { // hasPrevious = false; // hasNext = false; // if (pagecount > 1 && currentpage > 1) // hasPrevious = true; // if (pagecount > 1 && currentpage < pagecount) // hasNext = true; // } //刷新当前页 // public static PageReference refreshPageSize() { // makeCurrentPageRecords(); // return null; // } //编辑当前页内容 public static void makeCurrentPageRecords() { // pageRecords = new List(); // System.debug('consumableorderdetailsRecords =' + consumableorderdetailsRecords); // for (Integer i = 0; i < consumableorderdetailsRecords.size(); i++) { // pageRecords.add(consumableorderdetailsRecords.get(i)); // } Integer startIdx; Integer endIdx; pageRecords = new List(); startIdx = pageToken; endIdx = pageToken + pageSize; if (endIdx > consumableorderdetailsRecords.size()) { endIdx = consumableorderdetailsRecords.size(); } for (Integer i = startIdx; i < endIdx; i++) { pageRecords.add(consumableorderdetailsRecords.get(i)); } } //分页Bean public class PaginatedAccounts { @AuraEnabled public Integer nextPageToken; @AuraEnabled public Integer pageNumber { get; set; } @AuraEnabled public Integer totalRecords { get; set; } @AuraEnabled public Integer recordStart { get; set; } @AuraEnabled public Integer recordEnd { get; set; } } // Data Bean @TestVisible class ConsumableorderdetailsInfo implements Comparable { @AuraEnabled public Consumable_order_details2__c esd { get; set; } @AuraEnabled public Product2__c Prod { get; set; } @AuraEnabled public Decimal allnumber { 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 Consumable_order__c Concc { get; set; } @AuraEnabled public Boolean sortBy { get; set; } @AuraEnabled public Decimal upperlimit { get; set; } @AuraEnabled public Decimal lowerlimit { get; set; } @AuraEnabled public String BoxPiece { get; set; } @AuraEnabled public Date guaranteeperiod { get; set; } @AuraEnabled public Decimal limitCount { get; set; } @AuraEnabled public Decimal overlimitCount { get; set; } @AuraEnabled public Boolean hospitalSpecialOffer { get; set; } public ConsumableorderdetailsInfo(Product2__c e) { esd = new Consumable_order_details2__c(); Prod = e; allnumber = 0; limitCount = 0; overlimitCount = 0; } // 排序 public Integer compareTo(Object compareTo) { ConsumableorderdetailsInfo compareToesd = (ConsumableorderdetailsInfo) compareTo; Integer returnValue = 0; 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; } } } }