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 String[]{ 'Product2__c.Name__c','Asset_Model_No__c','','Category3__c','Category4__c','Category5__c',''}; String[] proLimitAndDate =new String[]{}; 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 String[]{' ','',' ',' ','','','','↓'}; //取用户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 String[]{' ','',' ',' ','','','','↓'}; 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); //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 String[]{' ','',' ',' ','','','','↓'}; //总件数 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= 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; } } } }