public without sharing class TopPageController { //经销商信息 public account accountInfo { get; set; } /*****************画面表示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;} // update start by vivek2020-01-15 汇总使用 public Integer Total_num {get; set;} public Integer OrderNumber_arrived {get; set;} public Integer Delivery_detail_count {get; set;} public Integer OrderNumber_notarrive {get; set;} public Integer More_than_seven_days {get; set;} // update end by vivek2020-01-15 //排序使用 public String sortKey { get; set; } public String preSortKey { get; private set; } public Boolean sortOrderAsc { get; private set; } public String[] sortOrder { get; private set; } /*****************一周未到货订单一览对应start******************/ // 订单 字段标签 public List title { get; private set; } // 订单 字段名 public List column; public List> columns { get; private set; } // 画面显示数据 public List raesList { get; private set; } /*****************一周未到货订单一览对应end******************/ //排序使用 private String[] orderby = new String[]{ 'Product2__c.Name__c'}; //产品上下限 String[] proLimitAndDate =new String[]{}; public String product_Limit { get; set; } //库存产品最早有效期限 private Map productkucun = new Map(); //消费期限小于一年的产品 public List overlimitdateorderdetails { get; set; } public String accountid { get; set; } public String accountName { get; set; } List orderDetZaikuList = new List(); // 登录者工作地 private String userWorkLocation; // 未到货订单信息(超过一周)显示控制 //public Boolean over_view { get; set; } public Boolean over_view { get { return raesList.size() > 0 ? true : false; } } // 使用期限小于一年的产品 显示控制 public Boolean overlimit { get { return overlimitdateorderdetails.size() > 0 ? true : false; } } //--------AddStart-----XHL--------------20180929------------- //用户产品区分 public String userPro_Type {get; set;} public String userPro_Typestr = null; public Boolean EngFlag = false; public Boolean ETFlag = false; //--------AddEnd-----XHL--------------20180929------------- //add by rentx start public Boolean hasHos{get;set;} //add by rentx end public TopPageController() { //over_view = false; consumableorderdetailsRecords = new List(); consumableorderdetailsRecordsview = new List>(); overlimitdateorderdetails = new List(); //page pagesize = Integer.valueof(system.label.orderdetLimitsize); currentpage = 0; } // 画面初始化 public void init() { User useracc = [SELECT accountid, Work_Location__c,UserPro_Type__c FROM user WHERE id =:UserInfo.getUserId()]; accountid = useracc.accountid; userWorkLocation = useracc.Work_Location__c; //--------AddStart-----XHL--------------20180929------------- userPro_Type = useracc.UserPro_Type__c; if(String.isBlank(userPro_Type)){ userPro_Type = 'ET'; } userPro_Typestr = '%' + userPro_Type + '%'; if(userPro_Type == 'ENG'){ EngFlag = true; }else{ ETFlag = true; } //--------AddEnd-----XHL--------------20180929------------- //经销商·基本信息获取 accountInfo = [SELECT Name,Ban_On_Use_Reason__c,Deposit_Price__c, Medical_Equipment_Num__c,Medical_Equipment_Expiration_Date__c, Ban_On_Use_Date__c,Tax_Practice_No__c,Tax_Practice_Expiration_Date__c, Business_Authorization_No__c,Business_Paper_Expiration_Date__c, Credit_Check_No__c,Dealer_discount__c, Phone,Address_Together__c,Is_Active_Formula__c, Management_Code__c,Sales_Shop_Class__c,Postal_Code__c, Fax,Address__c,Deposit_Receipt_Finished__c, Deposit_Receipt_Completion_Day__c, Product_Limit_Date__c, Product_Limit_DateENG__c FROM account WHERE id =:accountid]; accountName = accountInfo.Name; //--------UpdateStart-----XHL--------------20181008------------- if(EngFlag){ product_Limit = accountInfo.Product_Limit_DateENG__c; }else if(ETFlag){ product_Limit = accountInfo.Product_Limit_Date__c; } //--------UpdateEnd-----XHL--------------20181008------------- if(product_Limit != null && product_Limit !=''){ proLimitAndDate = product_Limit.split(','); } List boxRecords = new List(); //库存明细取得 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 Cancellation_Flag__c = false AND Bar_Code__c !=null AND Product_Type__c like : userPro_Typestr AND Dealer_Info_text__c = :accountName 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'))); } Map MidMap = new Map(); List product2Selected = [SELECT Id, Name, Name__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]); } //返品库存统计 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 : userPro_Typestr AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation]; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, 'CountDel +++++' + CountDel.size())); Map newMidBoxMap = new Map(); Map newMidPieceMap = new Map(); Map newHosMidBoxMap = new Map(); Map newHosMidPieceMap = new Map(); 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); } }*/ 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; newMidBoxMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c + tex, Jstage); }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; 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; newMidPieceMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c+ tex, Jstage); }else{ Jstage.hospitalSpecialOffer = false; newMidPieceMap.put(CountDel[i].Consumable_Product__c+CountDel[i].Box_Piece__c+ tex, Jstage); } } } //如果是 医院特价创建的明细2 则 update and add by rentx 2020-11-26 end } consumableorderdetailsRecords = new List(); List newHosMidBoxList = new List(); //把Boxmap里的值从新赋给boxRecords for(ConsumableorderdetailsInfo bss : newMidBoxMap.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; 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; } } //===========================================add by rentx 2020-11-26 start //========================================add by rentx 2020-11-26 end //排序应该是 非医院特价的盒,医院特价的盒,非医院特价的个,医院特价的个 //add by rentx 2020-11-27 先判断医院特价的盒 和 个 //2020-11-27 日 于 rentx 注释 start String temp = 'A'; 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')); } } // consumableorderdetailsRecords.addAll(newMidPieceMap.values()); //2020-11-27 日 于 rentx 注释 end notarriveorder(); productLimtAndDate(); datelimitSearch(); //add by rentx Integer ishos = 0; 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) { ishos = ishos+1; } } if (ishos > 0) { hasHos = true; }else{ hasHos = false; } //add by rentx 2021-3-10 end //consumableorderdetailsRecords.sort(); //list分割 //listCut(); this.sortKey = '0'; this.preSortKey = '0'; this.sortOrderAsc = false; this.sortOrder = new String[1]; this.sortOrder = new String[]{' ', '↓'}; //总件数 totalcount = consumableorderdetailsRecords.size(); //页数 pagecount=(totalcount + pagesize - 1) / pagesize; //显示第一页 moveToFirst(); makeCurrentPageRecords(); } public void datelimitSearch(){ Set barcodekucun = new Set(); //--------UpdateStart-----XHL--------------20180929------------- List orderkucun = [SELECT Id,Bar_Code__c, Name,Consumable_Product__c, Recordtypeid,Guarantee_period_for_products__c, Sterilization_limit__c,Box_Piece__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 :userPro_Typestr AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Consumable_Product__c, Sterilization_limit__c asc ]; //--------UpdateEnd-----XHL--------------20180929------------- 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); } } barcodekucun.clear(); for(Integer i = 0 ; i< orderkucun.size();i++){ if(orderkucun[i].Sterilization_limit__c < Date.today().addYears(1)){ if(barcodekucun.contains(orderkucun[i].Bar_Code__c)){ continue; }else{ barcodekucun.add(orderkucun[i].Bar_Code__c); } } } List overlimitdatedetails = [SELECT Asset_Model_No__c prodName , Box_Piece__c BoxPiece,count(id) countid FROM Consumable_order_details2__c WHERE Bar_Code__c in :barcodekucun AND Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Dealer_Returned__c = false AND Lose_Flag__c = false GROUP BY Asset_Model_No__c,Box_Piece__c ORDER BY Asset_Model_No__c,Box_Piece__c]; for(Integer i = 0 ; i< overlimitdatedetails.size();i++){ overlimitdateorderdetails.add(new ConsumableorderdetailsInfo(overlimitdatedetails[i])); } } //超过一周未到货订单 public void notarriveorder (){ //over_view = false; Date orderdate = Date.today().addDays(-7); List orderdetails = [SELECT Id,Name,Consumable_order_minor__c FROM Consumable_order_details2__c WHERE Deliver_date__c < :orderdate and Consumable_order_minor__c !=null and Dealer_Info_text__c = :accountName AND recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Dealer_Arrive__c = false ]; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO , 'userPro_Type——————' + userPro_Type)); Map notarriveorderMap = new Map(); List notarriveorderid = new List(); for(Integer i = 0; i < orderdetails.size(); i++){ if(notarriveorderMap.containsKey(orderdetails[i].Consumable_order_minor__c)){ continue; }else{ notarriveorderMap.put(orderdetails[i].Consumable_order_minor__c, orderdetails[i].Consumable_order_minor__c); //notarriveorderid.add('\'' + orderdetails[i].Consumable_order_minor__c +'\''); notarriveorderid.add(orderdetails[i].Consumable_order_minor__c); } } // 获得订单一览 Map fsMap = Schema.getGlobalDescribe().get('Consumable_order__c').getDescribe().fieldSets.getMap(); Schema.FieldSet fs = fsMap.get('arrive_view'); // 获得订单中的所有项目 List fsmList = fs.getFields(); // 获得字段标签和字段名 title = new List(); column = new List(); columns = new List>(); for (FieldSetMember fsm : fsmList) { title.add(fsm.getLabel()); column.add(fsm.getFieldPath()); columns.add(fsm.getFieldPath().split('\\.')); } system.debug('columns=====================>'+columns); // 获得显示数据 raesList = new List(); String soql = 'select Id'; for (String s : column) { soql += ',' + s; } soql += ' from Consumable_order__c where Order_type__c = \''+'订单'+'\' and recordtypeid =\'' + System.Label.RT_ConOrder_Delivery + '\' and Dealer_Info__c =\'' + accountid +'\' and Delivery_detail_count__c > 0 and showFalseNotshowTrue__c = false '; soql += ' and Order_ProType__c = \'' + userPro_Type + '\' ' ; soql += ' and Order_Owner_WorkLocal__c = \'' + userWorkLocation + '\' '; if(notarriveorderid.size() < 1){ soql +=' AND Id = null '; }else{ String sqlTail = '(\''; for(Integer i = 0 ; i< notarriveorderid.size();i++){ if(i 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 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 ? '↑' : '↓'); } String sqlTail = '(\''; for(Integer i = 0 ; i< orderDetZaikuList.size();i++){ if(i 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 pageRecords = new List(); //再把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); } } /* for(ConsumableorderdetailsInfo bss : MidMap.values()){ if(bss != null){ pageRecords.add(bss); } }*/ } //首页 public void moveToFirst(){ if(currentpage == 1) return; currentpage = 1; canMove(); //makeCurrentPageRecords(); } //尾页 public void moveToLast(){ if(currentpage >= pagecount) return; currentpage = pagecount; canMove(); //makeCurrentPageRecords(); } //上一页 public void moveToPrevious(){ if(currentpage == 1) return; currentpage = currentpage -1; canMove(); //makeCurrentPageRecords(); } //下一页 public void moveToNext(){ if(currentpage >= pagecount) return; currentpage = currentpage + 1; canMove(); //makeCurrentPageRecords(); } //判断是否可翻页 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 Boolean check { get; set; } //public Boolean oldCheck { get; set; } public Consumable_order_details2__c esd { get; set; } public Product2__c Prod { get; set; } public Decimal allnumber { get; set; } public Decimal oldConsumableCount { get; set; } public Integer packing_list { get; set; } public Date expiration_Date { get; set; } public String approbation_No { get; set; } public Decimal upperlimit { get; set; } public Decimal lowerlimit { get; set; } public Date guaranteeperiod { get; set; } public Decimal countid { get; set; } public String prodName { get; set; } public Decimal limitCount { get; set; } public Decimal overlimitCount { get; set; } public String BoxPiece { get; set; } public Boolean hospitalSpecialOffer { get; set ;} public ConsumableorderdetailsInfo(Product2__c e) { //check = false; //oldCheck = false; esd = new Consumable_order_details2__c(); Prod = e; oldConsumableCount = null; allnumber = 0; limitCount = 0; overlimitCount = 0; } public ConsumableorderdetailsInfo(AggregateResult e) { countid =Integer.valueOf(e.get('countid')); prodName = String.valueOf(e.get('prodname')); BoxPiece = String.valueOf(e.get('BoxPiece')); } // 排序 public Integer compareTo(Object compareTo) { ConsumableorderdetailsInfo compareToesd =(ConsumableorderdetailsInfo)compareTo; Integer returnValue = 0; if (allnumber > compareToesd.allnumber) { returnValue = -1; } else if (allnumber < compareToesd.allnumber) { returnValue = 1; } return returnValue; } } }