package com.topsun.posclient.webservice; import java.net.SocketTimeoutException; import java.util.List; import org.apache.axis2.AxisFault; import org.apache.axis2.client.Options; import com.topsun.posclient.common.LoggerUtil; import com.topsun.posclient.common.POSClientApp; import com.topsun.posclient.common.POSException; import com.topsun.posclient.common.ProjectUtil; import com.topsun.posclient.datamodel.Item; import com.topsun.posclient.datamodel.OldGold; import com.topsun.posclient.datamodel.RetailFP; import com.topsun.posclient.datamodel.RetailM; import com.topsun.posclient.datamodel.RetailMP; import com.topsun.posclient.datamodel.RetailP; import com.topsun.posclient.datamodel.UnSalePart; import com.topsun.posclient.webservice.dto.ArrayOfbackWarehouseItem; import com.topsun.posclient.webservice.dto.ArrayOfitem; import com.topsun.posclient.webservice.dto.ArrayOfretail_FPE; import com.topsun.posclient.webservice.dto.ArrayOfretail_M; import com.topsun.posclient.webservice.dto.ArrayOfretail_MP; import com.topsun.posclient.webservice.dto.ArrayOfretail_OldGold; import com.topsun.posclient.webservice.dto.ArrayOfretail_P; import com.topsun.posclient.webservice.dto.ArrayOfretail_UnSalePart; import com.topsun.posclient.webservice.dto.HelloWorld; import com.topsun.posclient.webservice.dto.HelloWorldResponse; import com.topsun.posclient.webservice.dto.Retail_FPE; import com.topsun.posclient.webservice.dto.Retail_M; import com.topsun.posclient.webservice.dto.Retail_MP; import com.topsun.posclient.webservice.dto.Retail_OldGold; import com.topsun.posclient.webservice.dto.Retail_P; import com.topsun.posclient.webservice.dto.Retail_UnSalePart; import com.topsun.posclient.webservice.dto.UserCredential; /** * POSServer调用 * * @author Dong * */ public class POSServerCaller { public static final String SUCCESS = "0";//=0,表示执行成功 public static final String NO_USERNAME = "1";//=1,表示未提供用户名 public static final String NO_PASSWORD = "2";//=2,表示未提供密码 public static final String ERROR_USERNAME = "3";//=3,表示提供的用户名,无此用户 public static final String ERROR_PASSWORD = "4";//=4,表示提供的用户密码,密码错误 public static final String NO_JURISDICTION= "5"; //表示提供的用户凭据无此操作权限 public static final String OTHER_ERROR = "10";//=10,服务端返回其它错误 public static final String DOUBLEDOCNUM_ERROR = "15";//=15,服务端返回单据号重复 static ServicesStub servicesStub; public static ServicesStub getWebService() throws Exception { servicesStub = new ServicesStub(null, POSClientApp.get().getSysConfig().getServerIp(), POSClientApp.get().getSysConfig().getServerPort()); return servicesStub; } public static ServicesStub getWebService(long timeout) throws Exception { servicesStub = new ServicesStub(null, POSClientApp.get().getSysConfig().getServerIp(), POSClientApp.get().getSysConfig().getServerPort()); Options options = servicesStub._getServiceClient().getOptions(); options.setTimeOutInMilliSeconds(timeout); return servicesStub; } public static ServicesStub getWebService(String ipAddress, String port) throws Exception { servicesStub = new ServicesStub(null, ipAddress, port); Options options = servicesStub._getServiceClient().getOptions(); return servicesStub; } public static UserCredential getDefaultUserCredential(){ UserCredential userCredential = new UserCredential(); String cdKey = POSClientApp.get().getSysConfig().getCdKey(); // userCredential.setCdKey((null == cdKey || "".equals(cdKey))?null:cdKey); userCredential.setCdKey(null); userCredential.setUserName(POSClientApp.get().getLoginUser().getUserCode()); userCredential.setPassWord(POSClientApp.get().getLoginUser().getPassWord()); return userCredential; } /** * 判断是否联机 * @return * @throws POSException */ public static boolean isConnected() throws POSException { boolean isConn = false; HelloWorld helloWorld30 = new HelloWorld(); helloWorld30.setInputPara("conn"); try { HelloWorldResponse response = getWebService().helloWorld(helloWorld30); String result = response.getHelloWorldResult(); if(null != result){ isConn = true; }else{ isConn = false; } }catch(SocketTimeoutException e){ LoggerUtil.logError(WsActivator.PLUGIN_ID, e.getMessage()); isConn = false; }catch (Exception e) { try{ AxisFault af = (AxisFault)e; LoggerUtil.logError(WsActivator.PLUGIN_ID, af.getMessage()); isConn = false; }catch(Exception ee){ isConn = false; } } return isConn; } /** * 判断是否联机 * @return * @throws POSException */ public static boolean testConnect(String ipAddress, String port) throws POSException { boolean isConn = false; HelloWorld helloWorld30 = new HelloWorld(); helloWorld30.setInputPara("conn"); try { HelloWorldResponse response = getWebService(ipAddress, port).helloWorld(helloWorld30); String result = response.getHelloWorldResult(); if(null != result){ isConn = true; }else{ isConn = false; } }catch(SocketTimeoutException e){ LoggerUtil.logError(WsActivator.PLUGIN_ID, e.getMessage()); isConn = false; }catch (Exception e) { try{ AxisFault af = (AxisFault)e; LoggerUtil.logError(WsActivator.PLUGIN_ID, af.getMessage()); isConn = false; }catch(Exception ee){ isConn = false; } } return isConn; } /** * @param itemList * @return */ public static ArrayOfitem getItemArray(List<Item> itemList){ ArrayOfitem arrayOfitem = new ArrayOfitem(); com.topsun.posclient.webservice.dto.Item[] itemArray = new com.topsun.posclient.webservice.dto.Item[itemList.size()];; for(int i=0; i<itemList.size(); i++){ Item ee = itemList.get(i); com.topsun.posclient.webservice.dto.Item iii = new com.topsun.posclient.webservice.dto.Item(); iii.setItemId(ee.getId()); iii.setLineNum(Integer.valueOf(ee.getItemCode())); itemArray[i] = iii; } arrayOfitem.setItem(itemArray); return arrayOfitem; } /** * @param itemList * @return */ public static ArrayOfbackWarehouseItem getBackWarehouseItemArray(List<Item> itemList){ ArrayOfbackWarehouseItem arrayOfitem = new ArrayOfbackWarehouseItem(); com.topsun.posclient.webservice.dto.BackWarehouseItem[] itemArray = new com.topsun.posclient.webservice.dto.BackWarehouseItem[itemList.size()];; for(int i=0; i<itemList.size(); i++){ Item ee = itemList.get(i); com.topsun.posclient.webservice.dto.BackWarehouseItem iii = new com.topsun.posclient.webservice.dto.BackWarehouseItem(); iii.setItemID(ee.getId()); iii.setLineNum(Integer.valueOf(ee.getItemCode())); itemArray[i] = iii; } arrayOfitem.setBackWarehouseItem(itemArray); return arrayOfitem; } /** * 贴近调换,旧金列表 * @param oldGoldList * @return */ public static ArrayOfretail_OldGold getArrayOfRetail_OldGold(List<OldGold> oldGoldList){ ArrayOfretail_OldGold aorog = new ArrayOfretail_OldGold(); if(null == oldGoldList || oldGoldList.size() <= 0){ return aorog; } Retail_OldGold[] ogs = new Retail_OldGold[oldGoldList.size()]; for(int i=0; i<oldGoldList.size(); i++){ OldGold og = oldGoldList.get(i); Retail_OldGold rog = new Retail_OldGold(); rog.setIdfCode(og.getIdfCode()); ogs[i] = rog; } aorog.setRetail_OldGold(ogs); return aorog; } /** * 断料数据转换 * @param unSalePartList * @return */ public static ArrayOfretail_UnSalePart getArrayOfRetail_UnSalePart(List<UnSalePart> unSalePartList){ ArrayOfretail_UnSalePart aomp = new ArrayOfretail_UnSalePart(); if(null == unSalePartList || unSalePartList.size() <= 0){ return aomp; } Retail_UnSalePart[] ruspArray = new Retail_UnSalePart[unSalePartList.size()]; for(int i=0; i<unSalePartList.size(); i++){ UnSalePart usp = unSalePartList.get(i); Retail_UnSalePart rusp = new Retail_UnSalePart(); rusp.setIdfCode(usp.getIdfCode()); rusp.setItemCode(usp.getItemCode()); rusp.setPalAccount(usp.getPalAccount()); rusp.setPalAmount(usp.getPalAmount()); rusp.setPalWeight(usp.getPalWeight()); rusp.setPrice_A(usp.getPrice_A()); rusp.setPrice_G(usp.getPrice_G()); rusp.setSourceCode(usp.getSourceCode()); rusp.setWeight(usp.getWeight()); rusp.setWeight_F(usp.getWeight_F()); ruspArray[i] = rusp; } aomp.setRetail_UnSalePart(ruspArray); return aomp; } /** * 拆分到每个商品的结算金额 * @param mpList * @return */ public static ArrayOfretail_MP getArrayOfRetail_MP(List<RetailMP> mpList){ if(null == mpList || mpList.size() <= 0){ return null; } Retail_MP[] mps = new Retail_MP[mpList.size()]; for(int i=0; i<mpList.size(); i++){ RetailMP mp = mpList.get(i); Retail_MP rmp = new Retail_MP(); rmp.setPayModeID(mp.getPayModeID()); rmp.setSum(mp.getSum()); rmp.setPoundage(mp.getPoundage()); rmp.setPoundageRate(mp.getPoundageRate()); rmp.setIsPrint(mp.getIsPrint()); rmp.setItemCode(mp.getItemCode()); rmp.setItemID(mp.getItemID()); mps[i] = rmp; } ArrayOfretail_MP aomp = new ArrayOfretail_MP(); aomp.setRetail_MP(mps); return aomp; } /** * 零售数据结算方式(零售结算方式)数据转换 * 转换成调用WebService时需要的参数数据类型 * @param pscList * @return ArrayOfRetail_P */ public static ArrayOfretail_P getArrayOfRetail_P(List<RetailP> rpList){ if(null == rpList || rpList.size() <= 0){ return null; } Retail_P[] rps = new Retail_P[rpList.size()]; for(int i=0; i<rpList.size(); i++){ RetailP psc = rpList.get(i); Retail_P rp = new Retail_P(); rp.setPayModeID(psc.getPayModeID()); rp.setSum(psc.getSum()); rp.setPoundage(psc.getPoundage()); rp.setPoundageRate(psc.getPoundageRate()); rp.setMakeup(psc.getMakeup()); rps[i] = rp; } ArrayOfretail_P aop = new ArrayOfretail_P(); aop.setRetail_P(rps); return aop; } /** * 零售数据明细(商品列表)数据转换 * 转换成调用WebService时需要的参数数据类型 * @param itemList * @return ArrayOfRetail_M */ public static ArrayOfretail_M getArrayOfRetail_M(List<RetailM> retailMs){ if(null == retailMs || retailMs.size() <= 0){ return null; } Retail_M[] rms = new Retail_M[retailMs.size()]; for(int i=0; i<retailMs.size(); i++){ RetailM item = retailMs.get(i); Retail_M rm = new Retail_M(); rm.setAccountType(item.getAccountType()); rm.setEmployeeID(item.getEmployeeID()); rm.setFactAmount(item.getFactAmount()); rm.setInvoceCode(item.getInvoiceCode()); rm.setInvoiceAmount(item.getInvoiceAmount()); rm.setIsReplace(item.getIsReplace()); rm.setItemCode(item.getItemCode()); rm.setItemID(item.getItemId()); rm.setItemType(item.getItemType()); rm.setMATNR(item.getMATNR()); rm.setOldAmount(item.getOldAmount()); rm.setPalAmount(item.getPalAmount()); rm.setPalWeight(item.getPalWeight()); rm.setPayAmount(item.getPayAmount()); rm.setPointAmount(item.getPointAmount()); rm.setPrice_G(item.getPrice_G()); rm.setProcessFee(item.getProcessFee()); rm.setProcessFee_S(item.getProcessFee_S()); rm.setPromotionID(item.getPromotionID()); rm.setPromotionName(item.getPromotionName()); rm.setReplaceAmount(item.getReplaceAmount()); rm.setSalesAmount(item.getSalesAmount()); rm.setSalesWeight(item.getSalesWeight()); rm.setSourceCode(item.getSourceCode()); rm.setUnSalesWeight(item.getUnSalesWeight()); rm.setWeight(item.getWeight()); rm.setMatkl(item.getMatkl()); rm.setLineNum(0); rm.setMatkl(item.getMatkl()); rm.setSettlementPrice_G(item.getSettlementPrice_G()); rm.setSettlementPrice(item.getSettlementPrice()); rms[i] = rm; } ArrayOfretail_M aom = new ArrayOfretail_M(); aom.setRetail_M(rms); return aom; } /** * 本地发票数据转换成为ws接口使用发票数据 * @param retailFPs * @return */ public static ArrayOfretail_FPE getArrayOfRetail_FP(List<RetailFP> retailFPs){ if(null == retailFPs || retailFPs.size() <= 0){ return null; } Retail_FPE[] fpArray = new Retail_FPE[retailFPs.size()]; for(int i=0; i<retailFPs.size(); i++){ RetailFP fp = retailFPs.get(i); Retail_FPE retail_FPE = new Retail_FPE(); retail_FPE.setFPDM(fp.getFPDM()); retail_FPE.setFPH(fp.getFPH()); retail_FPE.setFPMSID(Integer.valueOf(fp.getFPMSID())); retail_FPE.setInvoiceAmount(ProjectUtil.formatString(fp.getInvoiceAmount())); retail_FPE.setItemCode(fp.getItemCode()); retail_FPE.setItemID(Integer.valueOf(fp.getItemID())); retail_FPE.setKPRID(fp.getKPRID()); retail_FPE.setOldFPH(fp.getOldFPH()); retail_FPE.setPOS(fp.getPOS()); retail_FPE.setShopID(Integer.valueOf(fp.getShopID())); retail_FPE.setType(fp.getType()); retail_FPE.setUsedDate(ProjectUtil.getCalendar(ProjectUtil.getDate(fp.getUsedDate()))); fpArray[i] = retail_FPE; } ArrayOfretail_FPE aofpe = new ArrayOfretail_FPE(); aofpe.setRetail_FP(fpArray); return aofpe; } }