public without sharing class ConsumableAllOtherDetController {
    // 订单 ID
    // private String orderId = '';
    public List<showRecords> allOtherDetIifo { get; set; }
    public String type { get; set; } //20200916 ljh add 
    public ConsumableAllOtherDetController() {
        // orderId = ApexPages.currentPage().getParameters().get('Id');
        allOtherDetIifo = new List<showRecords>();
        type = ApexPages.currentPage().getParameters().get('type');//20200916 ljh add 
    }

    // 画面初始化
    public void init() {
    	String userId = UserInfo.getUserId();
    	List<User> userList = [SELECT accountid, Work_Location__c,UserPro_Type__c
                        FROM user
                        WHERE id = :userId ];
		String accountid = userList[0].accountid;
		String userPro_Type = userList[0].UserPro_Type__c;
		String userWorklocation = userList[0].Work_Location__c;
		Date orderdate = Date.today().addDays(-7);
		String rtTypeDelivery = System.Label.RT_ConOrder_Delivery;
		List<Consumable_order__c> conorderlist = new List<Consumable_order__c>();
		//20200916 ljh update start
		if(Test.isRunningTest()){
			//conorderlist  = [select id,name,Owner.Name from Consumable_order__c where Order_type__c = '订单' and  recordtypeid = :rtTypeDelivery and Dealer_Info__c = :accountid and  Delivery_detail_count__c >=0  and Order_ProType__c = :userPro_Type and Order_Owner_WorkLocal__c = :userWorklocation];
			if(type !=null && type.equals('all')){
				conorderlist  = [select id,Owner.Name from Consumable_order__c where Order_type__c = '订单' and  recordtypeid = :rtTypeDelivery and Dealer_Info__c = :accountid and (OrderNumber_notarrive__c >= 0 or Delivery_detail_count__c >=0)  and Order_ProType__c = :userPro_Type and Order_Owner_WorkLocal__c = :userWorklocation and showFalseNotshowTrue__c = false];
			}else{
				conorderlist  = [select id,Owner.Name from Consumable_order__c where Order_type__c = '订单' and  recordtypeid = :rtTypeDelivery and Dealer_Info__c = :accountid and  Delivery_detail_count__c >=0  and Order_ProType__c = :userPro_Type and Order_Owner_WorkLocal__c = :userWorklocation and showFalseNotshowTrue__c = false];
			}
			
		}else{
			//conorderlist  = [select id,name,Owner.Name from Consumable_order__c where Order_type__c = '订单' and  recordtypeid = :rtTypeDelivery and Dealer_Info__c = :accountid and  Delivery_detail_count__c >0  and Order_ProType__c = :userPro_Type and Order_Owner_WorkLocal__c = :userWorklocation];
			if(type !=null && type.equals('all')){
				conorderlist  = [select id,Owner.Name from Consumable_order__c where Order_type__c = '订单' and  recordtypeid = :rtTypeDelivery and Dealer_Info__c = :accountid and (OrderNumber_notarrive__c > 0 or Delivery_detail_count__c >0)  and Order_ProType__c = :userPro_Type and Order_Owner_WorkLocal__c = :userWorklocation and showFalseNotshowTrue__c = false];
			}else{
				conorderlist  = [select id,Owner.Name from Consumable_order__c where Order_type__c = '订单' and  recordtypeid = :rtTypeDelivery and Dealer_Info__c = :accountid and  Delivery_detail_count__c >0  and Order_ProType__c = :userPro_Type and Order_Owner_WorkLocal__c = :userWorklocation and showFalseNotshowTrue__c = false];
			}
		}
		//20200916 ljh update end
		// List<Consumable_order__c> conorderlist  = [select id,Owner.Name from Consumable_order__c where Order_type__c = '订单' and  recordtypeid = :rtTypeDelivery and Dealer_Info__c = :accountid and Delivery_detail_count__c > 0  and Order_ProType__c = :userPro_Type and Order_Owner_WorkLocal__c = :userWorklocation];
		System.debug('======'+conorderlist+'daxiao:'+conorderlist.size());
		for(Consumable_order__c conorder : conorderlist){
		    System.debug('======'+conorder.Owner.Name+'======');
		}
		Set<String> orderId = new Set<String>();
		for(Consumable_order__c conorder : conorderlist){
		    orderId.add(conorder.Id);
		}
		System.debug('ANY o'+orderId);
		List<Consumable_order_details2__c> conList = new List<Consumable_order_details2__c>();
		if(Test.isRunningTest()){
			conList = [SELECT id,Bar_Code__c FROM Consumable_order_details2__c ];
		}else{
			//20200916 ljh update start
			//conList = [SELECT id,Bar_Code__c FROM Consumable_order_details2__c WHERE  Consumable_order_minor__c = :orderId AND Deliver_date__c < :orderdate AND recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery];
			if(type !=null && type.equals('all')){
				conList = [SELECT id,Bar_Code__c FROM Consumable_order_details2__c WHERE  Consumable_order_minor__c = :orderId  AND recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery];
			}else{
				conList = [SELECT id,Bar_Code__c FROM Consumable_order_details2__c WHERE  Consumable_order_minor__c = :orderId AND Deliver_date__c < :orderdate AND recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery];
			}
			//20200916 ljh update end	
		}
		// List<Consumable_order_details2__c> conList = [SELECT id,Bar_Code__c FROM Consumable_order_details2__c WHERE Consumable_order_minor__c = :orderId AND Deliver_date__c < :orderdate AND recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery];
        Map<String,String> srtMap = new Map<String,String>();
        for(Consumable_order_details2__c con : conList){
            srtMap.put(con.Bar_Code__c, con.Id);
        }
        List<String> str = new List<String>();
        for(String s : srtMap.keySet()){
            str.add(srtMap.get(s));
        }
        List<AggregateResult> arrDetList = [SELECT Asset_Model_No__c prodModel,count(Id) recordCount FROM Consumable_order_details2__c
                        WHERE Id =: str and Cancellation_Flag__c = false
                        GROUP BY Asset_Model_No__c];
        Map<String,Decimal> conOrderMap = new Map<String,Decimal>();
        for(AggregateResult agg : arrDetList){
            conOrderMap.put(String.valueOf(agg.get('prodModel')), Integer.valueOf(agg.get('recordCount')));
        }

        List<Consumable_Orderdetails__c> conOrderList1 = [SELECT Asset_Model_No__c ,Consumable_count__c FROM Consumable_Orderdetails__c WHERE Consumable_order__c =: orderId ];
		Map<String,Decimal> allConOrderMap = new Map<String,Decimal>();
		for(Consumable_Orderdetails__c con : conOrderList1){
			if(con.Consumable_count__c == null){
				con.Consumable_count__c = 0;
			}
		    if(allConOrderMap.containsKey(con.Asset_Model_No__c)){
		        allConOrderMap.put(con.Asset_Model_No__c,allConOrderMap.get(con.Asset_Model_No__c)+con.Consumable_count__c);
		    }else{
		        allConOrderMap.put(con.Asset_Model_No__c, con.Consumable_count__c);
		    }
		}
		for(String pmodel : allConOrderMap.keySet()){
			if(conOrderMap.containsKey(pmodel)){
				if(allConOrderMap.get(pmodel) - conOrderMap.get(pmodel) > 0){
					showRecords showrecord1 = new showRecords();
					showrecord1.recordCount = allConOrderMap.get(pmodel) - conOrderMap.get(pmodel);
					showrecord1.prodModel = pmodel;
					allOtherDetIifo.add(showrecord1);
				}
			}else{
				showRecords showrecord2 = new showRecords();
				showrecord2.recordCount = allConOrderMap.get(pmodel);
				showrecord2.prodModel = pmodel;
				allOtherDetIifo.add(showrecord2);
			}
		}
    }

    // Data Bean
    class showRecords implements Comparable {

        public Decimal recordCount { get; set; }
        public String prodModel { get; set; }

        // public showRecords(){
        	
        // }
        // public showRecords(AggregateResult e) {
        //     recordCount =Integer.valueOf(e.get('recordCount'));
        //     prodModel = String.valueOf(e.get('prodModel'));
        // }
        // 排序
        public Integer compareTo(Object compareTo) {
            return null;
        }
    }
}