public without sharing class InventoryViewController { /*****************画面表示Bean******************/ public List consumableorderdetailsRecords = new List(); public List> consumableorderdetailsRecordsview = new List>(); //page public Integer pagesize { get; set; } public Integer totalcount { get; set; } public Integer pagecount { get; set; } public Integer currentpage { get; set; } public Boolean hasPrevious { get; set; } public Boolean hasNext { get; set; } public List pageRecords { get; set; } public String soql { get; set; } public String sortKey { get; set; } public String preSortKey { get; private set; } public Boolean sortOrderAsc { get; private set; } public String[] sortOrder { get; private set; } private String[] columus = new List{ 'Product2__c.Name__c', 'Asset_Model_No__c', '', 'Category3__c', 'Category4__c', 'Category5__c', '' }; String[] proLimitAndDate = new List{}; private Map productkucun = new Map(); public List categoryOptionList { get; set; } public List category4OptionList { get; set; } public List category5OptionList { get; set; } public String category5 { get; set; } public String category4 { get; set; } public String category3 { get; set; } public String category_Goods { get; set; } public String category1 { get; set; } public Boolean editAble { get; set; } // 经销商在库产品ID List orderDetZaikuList = new List(); // 产品 ID public String ESetId { get; set; } public String idCheck { get; set; } /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/ private String accountid = null; public String accountName { get; set; } // 查看产品 //private String[] ProidListAll = new String[]{}; // 登录者工作地 private String userWorkLocation; //经销商用户产品分类(ET、ENG) public String agencyProType { get; set; } String sqlagencyProType; //add by rentx 2021-3-10 public Boolean hasHos { get; set; } //add by rentx 2021-3-10 public InventoryViewController() { consumableorderdetailsRecords = new List(); consumableorderdetailsRecordsview = new List>(); editAble = false; categoryOptionList = new List(); category4OptionList = new List(); category5OptionList = new List(); //page pagesize = Integer.valueof(system.label.orderdetLimitsize); currentpage = 0; } // 画面初始化 public void init() { this.sortKey = '2'; this.preSortKey = '2'; this.sortOrderAsc = false; this.sortOrder = new String[8]; this.sortOrder = new List{ ' ', '', ' ', ' ', '', '', '', '↓' }; //取用户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(); 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'))); } 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 ]; 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 ]; for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, product2Selected[i]); } /////////////////////====================================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 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')); } } /////////////////////====================================update by rentx /*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 == '盒'){ if(newMidBoxMap.containsKey(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c)){ ConsumableorderdetailsInfo Jstage = newMidBoxMap.get(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c).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, 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; newMidBoxMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, Jstage); } }else if(MidMap.containsKey(CountDel[i].Consumable_Product__c) && CountDel[i].Box_Piece__c == '个'){ if(newMidPieceMap.containsKey(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c)){ ConsumableorderdetailsInfo Jstage = newMidPieceMap.get(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c).clone(); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Isoverdue__c == 1){ Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; newMidPieceMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, 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; newMidPieceMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, Jstage); } } } consumableorderdetailsRecords = new List(); //把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; } } for(ConsumableorderdetailsInfo bss : boxRecords){ consumableorderdetailsRecords.add(bss); if(newMidPieceMap.containsKey(bss.Prod.Id + '个')){ consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); //newMidPieceMap移除已经添加的Piece newMidPieceMap.remove(bss.Prod.Id + '个'); } } for(ConsumableorderdetailsInfo bss : newMidPieceMap.values()){ consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); }*/ //update by rentx 2021-01-27 end 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('', '-无-')); for (AggregateResult category3Search : categoryList) { String deliverycnt = String.valueOf(category3Search.get('c3c')); categoryOptionList.add(new SelectOption(deliverycnt, deliverycnt)); } category4OptionList = new List(); category4OptionList.add(new SelectOption('', '-无-')); category5OptionList = new List(); category5OptionList.add(new SelectOption('', '-无-')); //总件数 totalcount = consumableorderdetailsRecords.size(); //页数 pagecount = (totalcount + pagesize - 1) / pagesize; //显示第一页 moveToFirst(); makeCurrentPageRecords(); } public void categoryAllload() { 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 != NULL 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)); } } public 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)); } } // 检索 public void searchConsumableorderdetails() { this.sortKey = '2'; this.preSortKey = '2'; this.sortOrderAsc = false; this.sortOrder = new String[8]; this.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 Bar_Code__c != NULL AND Product_Type__c LIKE :sqlagencyProType AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ]; List boxRecords = new List(); Map MidMap = new Map(); Map newMidBoxMap = new Map(); Map newMidPieceMap = new Map(); // 所有产品取得 String soql = this.makeSoql(category1, category_Goods, category3, category4, category5); System.debug('====>soql11' + soql); //soql += ' ORDER BY ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.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, queryList[i]); } /*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 == '盒'){ if(newMidBoxMap.containsKey(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c)){ ConsumableorderdetailsInfo Jstage = newMidBoxMap.get(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c).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, 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; newMidBoxMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, Jstage); } }else if(MidMap.containsKey(CountDel[i].Consumable_Product__c) && CountDel[i].Box_Piece__c == '个'){ if(newMidPieceMap.containsKey(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c)){ ConsumableorderdetailsInfo Jstage = newMidPieceMap.get(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c).clone(); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Isoverdue__c == 1){ Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; newMidPieceMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, 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; newMidPieceMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, Jstage); } } } 注释by rentx */ Map newHosMidBoxMap = new Map(); Map newHosMidPieceMap = new Map(); /*for(Integer i = 0 ; i< CountDel.size();i++){ //如果是 医院特价创建的明细2 则 update and add by rentx 2020-11-26 start if (MidMap.containsKey(CountDel[i].Consumable_Product__c) && CountDel[i].hospitalSpecialOffer__c) { //如果是 盒 if (CountDel[i].Box_Piece__c == '盒') { if (newHosMidBoxMap.containsKey(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c)) { ConsumableorderdetailsInfo Jstage = newHosMidBoxMap.get(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c).clone(); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Isoverdue__c == 1){ Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; Jstage.hospitalSpecialOffer = true; newHosMidBoxMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, 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; Jstage.hospitalSpecialOffer = true; newHosMidBoxMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, Jstage); } }else if (CountDel[i].Box_Piece__c == '个') { if(newHosMidPieceMap.containsKey(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c)){ ConsumableorderdetailsInfo Jstage = newHosMidPieceMap.get(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c).clone(); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Isoverdue__c == 1){ Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; Jstage.hospitalSpecialOffer = true; newHosMidPieceMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, 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; Jstage.hospitalSpecialOffer = true; newHosMidPieceMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, Jstage); } } }else{ if (MidMap.containsKey(CountDel[i].Consumable_Product__c) && CountDel[i].hospitalSpecialOffer__c == false) { //不是 医院特价 //如果是 盒 if (CountDel[i].Box_Piece__c == '盒') { if (newMidBoxMap.containsKey(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c)) { ConsumableorderdetailsInfo Jstage = newMidBoxMap.get(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c).clone(); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Isoverdue__c == 1){ Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; System.debug(Jstage+'61333333333333333333'); Jstage.hospitalSpecialOffer = false; newMidBoxMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, 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; Jstage.hospitalSpecialOffer = false; System.debug(Jstage + '624444444444444444'); newMidBoxMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, Jstage); } }else if (CountDel[i].Box_Piece__c == '个') { if(newMidPieceMap.containsKey(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c)){ ConsumableorderdetailsInfo Jstage = newMidPieceMap.get(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c).clone(); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Isoverdue__c == 1){ Jstage.limitCount = Jstage.limitCount + 1; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; Jstage.hospitalSpecialOffer = false; newMidPieceMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, 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; Jstage.hospitalSpecialOffer = false; newMidPieceMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c, Jstage); } } } } }*/ 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 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')); } } /////////////////////====================================update by rentx /*//把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; } } for(ConsumableorderdetailsInfo bss : boxRecords){ consumableorderdetailsRecords.add(bss); if(newMidPieceMap.containsKey(bss.Prod.Id + '个')){ consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); //newMidPieceMap移除已经添加的Piece newMidPieceMap.remove(bss.Prod.Id + '个'); } } for(ConsumableorderdetailsInfo bss : newMidPieceMap.values()){ consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); }注释 by rentx 2020-12-09*/ productLimtAndDate(); datelimitSearch(); for (ConsumableorderdetailsInfo bss : consumableorderdetailsRecords) { if (productkucun.get(bss.Prod.Id) != null) { bss.guaranteeperiod = productkucun.get(bss.Prod.Id); } } //listCut(); this.sortKey = '2'; this.preSortKey = '2'; this.sortOrderAsc = false; this.sortOrder = new String[8]; this.sortOrder = new List{ ' ', '', ' ', ' ', '', '', '', '↓' }; //总件数 totalcount = consumableorderdetailsRecords.size(); //页数 pagecount = (totalcount + pagesize - 1) / pagesize; //显示第一页 currentpage = 0; moveToFirst(); makeCurrentPageRecords(); } //库存上下限 public 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 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 void SortLimited() { Map MidMap = new Map(); Map newMap = new Map(); if (this.sortKey == this.preSortKey) { // 方向が変わるのみ this.sortOrderAsc = !this.sortOrderAsc; this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); } else { this.sortOrderAsc = true; this.sortOrder[Integer.valueOf(this.preSortKey)] = ' '; this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); } this.preSortKey = this.sortKey; // 所有产品取得 String soql = this.makeSoql(null, null, null, null, null); soql += ' ORDER BY ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.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); } } } //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(); // 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); } } //再把map里的值从新赋给CpageRecords // for(ConsumableorderdetailsInfo bss : MidMap.values()){ // if(bss != null){ // pageRecords.add(bss); // } // } //update by rentx 2020-12-29 } //库存排序 public void SortStore() { if (this.sortKey == this.preSortKey) { // 方向が変わるのみ this.sortOrderAsc = !this.sortOrderAsc; this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); } else { this.sortOrderAsc = true; this.sortOrder[Integer.valueOf(this.preSortKey)] = ' '; this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); } this.preSortKey = this.sortKey; for (ConsumableorderdetailsInfo ass : pageRecords) { ass.sortBy = this.sortOrderAsc; } pageRecords.sort(); } //检索sql文做成 private String makeSoql(String CateName, String CateCode, String Category3, String Category4, String Category5) { 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 + '\''; } System.debug('====>soql' + soql); return soql; } //首页 public void moveToFirst() { if (currentpage == 1) return; currentpage = 1; canMove(); } //尾页 public void moveToLast() { if (currentpage >= pagecount) return; currentpage = pagecount; canMove(); } //上一页 public void moveToPrevious() { if (currentpage == 1) return; currentpage = currentpage - 1; canMove(); } //下一页 public void moveToNext() { if (currentpage >= pagecount) return; currentpage = currentpage + 1; canMove(); } //判断是否可翻页 public void canMove() { hasPrevious = false; hasNext = false; if (pagecount > 1 && currentpage > 1) hasPrevious = true; if (pagecount > 1 && currentpage < pagecount) hasNext = true; } //刷新当前页 public PageReference refreshPageSize() { makeCurrentPageRecords(); return null; } //编辑当前页内容 public void makeCurrentPageRecords() { Integer startIdx; Integer endIdx; pageRecords = new List(); startIdx = (currentpage - 1) * pagesize; endIdx = (currentpage - 1) * pagesize + pagesize; if (endIdx > consumableorderdetailsRecords.size()) { endIdx = consumableorderdetailsRecords.size(); } for (Integer i = startIdx; i < endIdx; i++) { pageRecords.add(consumableorderdetailsRecords.get(i)); } } // Data Bean class ConsumableorderdetailsInfo implements Comparable { public Consumable_order_details2__c esd { get; set; } public Product2__c Prod { get; set; } public Decimal allnumber { get; set; } public Integer packing_list { get; set; } public Date expiration_Date { get; set; } public String approbation_No { get; set; } public Consumable_order__c Concc { get; set; } public Boolean sortBy { get; set; } public Decimal upperlimit { get; set; } public Decimal lowerlimit { get; set; } public String BoxPiece { get; set; } public Date guaranteeperiod { get; set; } public Decimal limitCount { get; set; } public Decimal overlimitCount { get; set; } 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; } } } }