package com.iamberry.rst.utils; import com.iamberry.rst.core.cm.SalesOrder; import com.iamberry.rst.core.page.PagedResult; import com.iamberry.rst.faces.cm.SalesOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.LinkedList; /** * 查询订单物流公司 */ @Component public class SeleOrdeCompUtil { @Autowired private SalesOrderService salesOrderService; @Autowired private KuaiDi100 kuaiDi100; // 仓库最大存储量 private final int MAX_SIZE = 20; private static int NODE_NUM = 1710; // 仓库存储的载体 private LinkedList list = new LinkedList(); // 生产产品 public void produce(String producer) { synchronized (list) { // 如果仓库已满 while (list.size() == MAX_SIZE) { try { // 由于条件不满足,生产阻塞 list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } // 生产产品 SalesOrder salesOrder = new SalesOrder(); PagedResult salesOrderPagedResult = salesOrderService.listSalesOrderPage(NODE_NUM, 1, salesOrder, false); ArrayList array = (ArrayList) salesOrderPagedResult.getDataList(); if(array==null || array.size() <1){ return; } System.out.println("======shengchan"+producer+";订单号"+array.get(0).getSalesId()+"交易号"+array.get(0).getSalesDealCode()); System.out.println("=====查询订单数/节点"+NODE_NUM); NODE_NUM++; list.add(array.get(0)); list.notifyAll(); } } // 消费产品 public void consume(String consumer) { synchronized (list) { //如果仓库存储量不足 while (list.size()==0) { try { // 由于条件不满足,消费阻塞 list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } SalesOrder so = list.get(0); System.out.println("======xiaofei"+consumer+"当前执行到订单编号:"+so.getSalesId()+"交易号:"+so.getSalesDealCode()); String salesPostNum = so.getSalesPostNum(); //salesPostNum if(salesPostNum == null || "".equals(salesPostNum)){ System.out.println("----------该订单无物流编号,订单编号:" + so.getSalesId()+"----------"); }else{ String company = ""; if("00000000".equals(salesPostNum)){ company = "02"; }else if("0".equals(salesPostNum)){ company = "02"; }else if(salesPostNum.length() == 1){ company = "02"; }else{ String beginTwo = salesPostNum.substring(0,2); if("71".equals(beginTwo)){ company = "yto"; }else if("33".equals(beginTwo)){ company = "STO"; }else if("95".equals(beginTwo)){ company = "STO"; }else if("97".equals(beginTwo)){ company = "YZBK"; }else if("11".equals(beginTwo)){ company = "EMS"; }else if("22".equals(beginTwo)){ company = "STO"; }else if("21".equals(beginTwo)){ company = "01"; }else if("25".equals(beginTwo)){ company = "SF"; }else if("83".equals(beginTwo)){ company = "DBL"; }else if("26".equals(beginTwo)){ company = "SF"; }else{ company = kuaiDi100.selectCourierCompany(salesPostNum); } } if(company != null && !"".equals(company)){ so.setSalesPostFirm(company); Integer flag = salesOrderService.distributionExpress(so); if(flag < 1){ System.out.println("*********修改订单物流方式出错,物流编号:"+ salesPostNum +";订单编号:" + so.getSalesId()+"***********"); } }else{ System.out.println("*********物流公司为空,物流编号:"+ salesPostNum +";订单编号:" + so.getSalesId()+"***********"); } } list.remove(0); list.notifyAll(); } } public LinkedList getList() { return list; } public void setList(LinkedList list) { this.list = list; } public int getMAX_SIZE() { return MAX_SIZE; } }