Java全栈开发---Java ERP系统开发:商业ERP(十三)CXF框架,物流BOS系统开发
发布日期:2021-06-29 15:03:14 浏览次数:3 分类:技术文章

本文共 28609 字,大约阅读时间需要 95 分钟。

CXF框架入门案例请看上面这篇文章

文章地址:

一、物流BOS系统开发:服务端

1、需求与思路分析

我们需要开发《物流 BOS 系统》,并提供两个功能。

1)可以通过运单号查询该运单的运单详情
2)可以在线下单预约

最终由 ERP 系统调用这两个功能

2、数据库设计

在这里插入图片描述

运单状态: 0:待发 1:在途 2:结束
数据库:mysql, 数据库名称:redsun

CREATE DATABASE redsun DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;use redsun;CREATE TABLE `waybill` (  `sn` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '运单号',  `userid` bigint(20) DEFAULT NULL COMMENT '用户ID',  `toaddress` varchar(100) DEFAULT NULL COMMENT '收货地址',  `addressee` varchar(100) DEFAULT NULL COMMENT '收货人',  `tele` varchar(100) DEFAULT NULL COMMENT '收件人电话',  `info` varchar(2000) DEFAULT NULL COMMENT '运单详情',  `state` varchar(1) DEFAULT NULL COMMENT '运单状态',  PRIMARY KEY (`sn`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;CREATE TABLE `waybilldetail` (  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',  `sn` bigint(20) DEFAULT NULL COMMENT '运单号',  `exedate` varchar(10) DEFAULT NULL COMMENT '执行日期',  `exetime` varchar(10) DEFAULT NULL COMMENT '执行时间',  `info` varchar(100) DEFAULT NULL COMMENT '执行信息',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

3、项目工程搭建

因为《物流 BOS 系统》会与《ERP》同时运行,所以需要将《物流 BOS 系统》的 pom.xml 中的 8080 端口改为9090

(1)创建父工程

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)创建子工程

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(3)创建其他子工程与步骤2相同

在这里插入图片描述

(4)创建redsun_web的时候要注意

在这里插入图片描述

在这里插入图片描述

(4)在redsun_web工程当中展开src\main\webapp目录 建立WEB-INF文件夹,并创建web.xml到文件夹WEB-INF当中

在这里插入图片描述

web.xml当中的内容
配置一些框架的内容

org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath*:applicationContext*.xml
openSessionInView
org.springframework.orm.hibernate5.support.OpenSessionInViewFilter
openSessionInView
/*
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/admin/*
cxf
org.apache.cxf.transport.servlet.CXFServlet
cxf
/ws/*
login.html
(5)在redsun_parent当中pom.xml添加依赖
4.0.0
com.itzheng
redsun_parent
0.0.1-SNAPSHOT
pom
5.0.7.Final
4.2.4.RELEASE
2.3.24
1.6.6
1.2.12
org.hibernate
hibernate-core
${hibernate.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-orm
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-web
${spring.version}
org.aspectj
aspectjweaver
1.8.7
org.apache.struts
struts2-core
${struts.version}
javassist
javassist
org.apache.struts
struts2-spring-plugin
${struts.version}
log4j
log4j
${log4j.version}
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
jstl
jstl
1.2
com.oracle
ojdbc6
11.2.0.3
mysql
mysql-connector-java
5.1.6
runtime
com.alibaba
fastjson
1.1.37
junit
junit
4.9
test
javax.servlet
servlet-api
2.5
provided
org.apache.cxf
cxf-rt-frontend-jaxws
3.1.10
org.apache.cxf
cxf-rt-transports-http
3.1.10
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
1.7
1.7
org.apache.tomcat.maven
tomcat7-maven-plugin
9090
/redsun
redsun_entity
redsun_dao
redsun_biz
redsun_web
(6)添加其他子项目的依赖关系

1)在redsun_entity当中创建对应的实体类,以及对应的映射文件

在这里插入图片描述
Waybill

package com.redsum.bos.entity;/** * 实体类 * @author Administrator * */public class Waybill {
private Long sn;//运单号 private Long userid;//用户ID private String toaddress;//收货地址 private String addressee;//收货人 private String tele;//收件人电话 private String info;//运单详情 private String state;//运单状态 public Long getSn() {
return sn; } public void setSn(Long sn) {
this.sn = sn; } public Long getUserid() {
return userid; } public void setUserid(Long userid) {
this.userid = userid; } public String getToaddress() {
return toaddress; } public void setToaddress(String toaddress) {
this.toaddress = toaddress; } public String getAddressee() {
return addressee; } public void setAddressee(String addressee) {
this.addressee = addressee; } public String getTele() {
return tele; } public void setTele(String tele) {
this.tele = tele; } public String getInfo() {
return info; } public void setInfo(String info) {
this.info = info; } public String getState() {
return state; } public void setState(String state) {
this.state = state; }}

waybill.hbm.xml

Waybilldetail

package com.redsum.bos.entity;/** * 实体类 * @author Administrator * */public class Waybilldetail {
private Long id;//ID private Long sn;//运单号 private String exedate;//执行日期 private String exetime;//执行时间 private String info;//执行信息 public Long getId() {
return id; } public void setId(Long id) {
this.id = id; } public Long getSn() {
return sn; } public void setSn(Long sn) {
this.sn = sn; } public String getExedate() {
return exedate; } public void setExedate(String exedate) {
this.exedate = exedate; } public String getExetime() {
return exetime; } public void setExetime(String exetime) {
this.exetime = exetime; } public String getInfo() {
return info; } public void setInfo(String info) {
this.info = info; }}

waybilldetail.hbm.xml

2)redsun_dao当中创建创建接口和类,并添加依赖

先添加依赖dao依赖redsun_parent
在这里插入图片描述
创建对应的接口和类
将spring配置文件中的applicationContext_datasource.xml和
applicationContext_dao.xml创建到erp_dao工程的src/main/resources下。
在这里插入图片描述
IBaseDao

package com.redsum.bos.dao;import java.util.List;public interface IBaseDao
{
/** * 条件查询 * @param t1 * @return */ List
getList(T t1,T t2,Object param); /** * 分页查询 * @param t1 * @param t2 * @param param * @param firstResult * @param maxResults * @return */ List
getListByPage(T t1,T t2,Object param,int firstResult, int maxResults); /** * 记录条件查询的总记录数 * @param t1 * @return */ long getCount(T t1,T t2,Object param); /** * 新增 * @param t */ void add(T t); /** * 删除 */ void delete(Long uuid); /** * 通过编号查询对象 * @param uuid * @return */ T get(Long uuid); /** * 更新 */ void update(T t);}

BaseDao

package com.redsum.bos.dao.impl;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.List;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.Projections;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import com.redsum.bos.dao.IBaseDao;/** * 通用数据访问层 * @author Administrator * * @param 
*/@SuppressWarnings("unchecked")public class BaseDao
extends HibernateDaoSupport implements IBaseDao
{
/** 泛型中的初阶类型 */ private Class
entityClass; public BaseDao(){
//获取对象对应的父类的类型 Type baseDaoClass = this.getClass().getGenericSuperclass(); //转成带参数,即泛型的类型 ParameterizedType pType = (ParameterizedType)baseDaoClass; //获取参数泛型类型数组 Type[] types = pType.getActualTypeArguments(); //由于我们的BaseDao
的泛型参数里只有一个类型T,因此数组的第一个元素就是类型T的实际上的类型 entityClass = (Class
)types[0]; } /** * 条件查询 */ public List
getList(T t1,T t2,Object param) { DetachedCriteria dc = getDetachedCriteria(t1,t2,param); return (List
) this.getHibernateTemplate().findByCriteria(dc); } /** * 分页查询 * @param t1 * @param t2 * @param param * @param firstResult * @param maxResults * @return */ public List
getListByPage(T t1,T t2,Object param,int firstResult, int maxResults) { DetachedCriteria dc = getDetachedCriteria(t1,t2,param); return (List
) this.getHibernateTemplate().findByCriteria(dc,firstResult, maxResults); } /** * 记录条件查询的总记录数 * @param t1 * @return */ public long getCount(T t1,T t2,Object param) { DetachedCriteria dc = getDetachedCriteria(t1,t2,param); dc.setProjection(Projections.rowCount()); List
list = (List
)getHibernateTemplate().findByCriteria(dc); return list.get(0); } /** * 新增 * @param t */ public void add(T t){ this.getHibernateTemplate().save(t); } /** * 删除 */ public void delete(Long uuid){ //让对象进入持久化状态 T t = this.getHibernateTemplate().get(entityClass, uuid); //删除持久化状态 this.getHibernateTemplate().delete(t); } /** * 通过编号查询对象 * @param uuid * @return */ public T get(Long uuid){ return getHibernateTemplate().get(entityClass, uuid); } /** * 更新 */ public void update(T t){ this.getHibernateTemplate().update(t); } /** * 由子类实现 * @param t1 * @return */ public DetachedCriteria getDetachedCriteria(T t1, T t2, Object param){ return null; }}

IWaybillDao

package com.redsum.bos.dao;import com.redsum.bos.entity.Waybill;/** * 数据访问接口 * @author Administrator * */public interface IWaybillDao extends IBaseDao
{
}

WaybillDao

package com.redsum.bos.dao.impl;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.MatchMode;import org.hibernate.criterion.Restrictions;import com.redsum.bos.dao.IWaybillDao;import com.redsum.bos.entity.Waybill;/** * 数据访问类 *  * @author Administrator * */public class WaybillDao extends BaseDao
implements IWaybillDao {
/** * 构建查询条件 * * @param dep1 * @param dep2 * @param param * @return */ public DetachedCriteria getDetachedCriteria(Waybill waybill1, Waybill waybill2, Object param) {
DetachedCriteria dc = DetachedCriteria.forClass(Waybill.class); if (waybill1 != null) {
if (null != waybill1.getToaddress() && waybill1.getToaddress().trim().length() > 0) {
dc.add(Restrictions.like("toaddress", waybill1.getToaddress(), MatchMode.ANYWHERE)); } if (null != waybill1.getAddressee() && waybill1.getAddressee().trim().length() > 0) {
dc.add(Restrictions.like("addressee", waybill1.getAddressee(), MatchMode.ANYWHERE)); } if (null != waybill1.getTele() && waybill1.getTele().trim().length() > 0) {
dc.add(Restrictions.like("tele", waybill1.getTele(), MatchMode.ANYWHERE)); } if (null != waybill1.getInfo() && waybill1.getInfo().trim().length() > 0) {
dc.add(Restrictions.like("info", waybill1.getInfo(), MatchMode.ANYWHERE)); } if (null != waybill1.getState() && waybill1.getState().trim().length() > 0) {
dc.add(Restrictions.like("state", waybill1.getState(), MatchMode.ANYWHERE)); } } return dc; }}

IWaybilldetailDao

package com.redsum.bos.dao;import com.redsum.bos.entity.Waybilldetail;/** * 数据访问接口 * @author Administrator * */public interface IWaybilldetailDao extends IBaseDao
{
}

WaybilldetailDao

package com.redsum.bos.dao.impl;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.MatchMode;import org.hibernate.criterion.Restrictions;import com.redsum.bos.dao.IWaybilldetailDao;import com.redsum.bos.entity.Waybilldetail;/** * 数据访问类 * @author Administrator * */public class WaybilldetailDao extends BaseDao
implements IWaybilldetailDao {
/** * 构建查询条件 * @param dep1 * @param dep2 * @param param * @return */ public DetachedCriteria getDetachedCriteria(Waybilldetail waybilldetail1,Waybilldetail waybilldetail2,Object param){
DetachedCriteria dc=DetachedCriteria.forClass(Waybilldetail.class); if(waybilldetail1!=null){
if(null != waybilldetail1.getExedate() && waybilldetail1.getExedate().trim().length()>0){
dc.add(Restrictions.like("exedate", waybilldetail1.getExedate(), MatchMode.ANYWHERE)); } if(null != waybilldetail1.getExetime() && waybilldetail1.getExetime().trim().length()>0){
dc.add(Restrictions.like("exetime", waybilldetail1.getExetime(), MatchMode.ANYWHERE)); } if(null != waybilldetail1.getInfo() && waybilldetail1.getInfo().trim().length()>0){
dc.add(Restrictions.like("info", waybilldetail1.getInfo(), MatchMode.ANYWHERE)); } //根据运单号查询明细 if(null != waybilldetail1.getSn()){
dc.add(Restrictions.eq("sn", waybilldetail1.getSn())); } } return dc; }}

applicationContext_dao.xml

applicationContext_datasource.xml

org.hibernate.dialect.MySQLInnoDBDialect
true
false
classpath:com/redsum/bos/entity/*.hbm.xml

3)redsun_biz当中创建创建接口和类,并添加依赖

在这里插入图片描述
在这里插入图片描述
IBaseBiz

package com.redsum.bos.biz;import java.util.List;/** * 通用业务逻辑接口 * @author Administrator * * @param 
*/public interface IBaseBiz
{
/** * 条件查询 * @param t1 * @return */ List
getList(T t1,T t2,Object param); /** * 分页查询 * @param t1 * @param t2 * @param param * @param firstResult * @param maxResults * @return */ List
getListByPage(T t1,T t2,Object param,int firstResult, int maxResults); /** * 计算总记录数 * @param t1 * @param t2 * @param param * @return */ public long getCount(T t1,T t2,Object param); /** * 新增 * @param t */ void add(T t); /** * 删除 */ void delete(Long uuid); /** * 通过编号查询对象 * @param uuid * @return */ T get(Long uuid); /** * 更新 */ void update(T t);}

BaseBiz

package com.redsum.bos.biz.impl;import java.util.List;import com.redsum.bos.biz.IBaseBiz;import com.redsum.bos.dao.IBaseDao;/** * 通用业务逻辑实现类 * @author Administrator * * @param 
*/public class BaseBiz
implements IBaseBiz
{
/** 数据访问注入*/ private IBaseDao
baseDao; public void setBaseDao(IBaseDao
baseDao) {
this.baseDao = baseDao; } /** * 条件查询 * @param t1 * @return */ public List
getList(T t1,T t2,Object param){ return baseDao.getList(t1,t2,param); } /** * 条件查询 * @param t1 * @return */ public List
getListByPage(T t1,T t2,Object param,int firstResult, int maxResults){ return baseDao.getListByPage(t1,t2,param,firstResult, maxResults); } @Override public long getCount(T t1,T t2,Object param) { return baseDao.getCount(t1,t2,param); } @Override public void add(T t) { baseDao.add(t); } /** * 删除 */ public void delete(Long uuid){ baseDao.delete(uuid); } /** * 通过编号查询对象 * @param uuid * @return */ public T get(Long uuid){ return baseDao.get(uuid); } /** * 更新 */ public void update(T t){ baseDao.update(t); }}

IWaybillBiz

package com.redsum.bos.biz;import com.redsum.bos.entity.Waybill;/** * 业务逻辑层接口 * @author Administrator * */public interface IWaybillBiz extends IBaseBiz
{
}

WaybillBiz

package com.redsum.bos.biz.impl;import com.redsum.bos.biz.IWaybillBiz;import com.redsum.bos.dao.IWaybillDao;import com.redsum.bos.entity.Waybill;/** * 业务逻辑类 * @author Administrator * */public class WaybillBiz extends BaseBiz
implements IWaybillBiz {
private IWaybillDao waybillDao; public void setWaybillDao(IWaybillDao waybillDao) {
this.waybillDao = waybillDao; super.setBaseDao(this.waybillDao); } }

IWaybilldetailBiz

package com.redsum.bos.biz;import com.redsum.bos.entity.Waybilldetail;/** * 业务逻辑层接口 * @author Administrator * */public interface IWaybilldetailBiz extends IBaseBiz
{
}

WaybilldetailBiz

package com.redsum.bos.biz.impl;import com.redsum.bos.biz.IWaybilldetailBiz;import com.redsum.bos.dao.IWaybilldetailDao;import com.redsum.bos.entity.Waybilldetail;/** * 业务逻辑类 * @author Administrator * */public class WaybilldetailBiz extends BaseBiz
implements IWaybilldetailBiz {
private IWaybilldetailDao waybilldetailDao; public void setWaybilldetailDao(IWaybilldetailDao waybilldetailDao) {
this.waybilldetailDao = waybilldetailDao; super.setBaseDao(this.waybilldetailDao); } }

applicationContext_biz.xml

applicationContext_tx.xml

4)redsun_web当中创建创建接口和类,并添加依赖

在这里插入图片描述
在这里插入图片描述

BaseAction

package com.redsum.bos.action;import java.io.IOException;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.alibaba.fastjson.JSON;import com.redsum.bos.biz.IBaseBiz;/** * 通用Action类 * @author Administrator * * @param 
*/public class BaseAction
{
private IBaseBiz
baseBiz; public void setBaseBiz(IBaseBiz
baseBiz) {
this.baseBiz = baseBiz; } //属性驱动:条件查询 private T t1; private T t2; private Object param; public T getT2() {
return t2; } public void setT2(T t2) {
this.t2 = t2; } public Object getParam() {
return param; } public void setParam(Object param) {
this.param = param; } public T getT1() {
return t1; } public void setT1(T t1) {
this.t1 = t1; } private int page;//页码 private int rows;//每页的记录数 public int getPage() {
return page; } public void setPage(int page) {
this.page = page; } public int getRows() {
return rows; } public void setRows(int rows) {
this.rows = rows; } /** * 条件查询 */ public void list(){
List
list = baseBiz.getList(t1,t2,param); //把部门列表转JSON字符串 String listString = JSON.toJSONString(list); write(listString); } public void listByPage(){
System.out.println("页码:" + page + " 记录数:" + rows); int firstResult = (page -1) * rows; List
list = baseBiz.getListByPage(t1,t2,param,firstResult, rows); long total = baseBiz.getCount(t1,t2,param); //{total: total, rows:[]} Map
mapData = new HashMap
(); mapData.put("total", total); mapData.put("rows", list); //把部门列表转JSON字符串 String listString = JSON.toJSONString(mapData); write(listString); } /**新增,修改*/ private T t; public T getT() { return t; } public void setT(T t) { this.t = t; } /** * 新增 * @param jsonString */ public void add(){ //{"success":true,"message":""} //返回前端的JSON数据 Map
rtn = new HashMap
(); try { baseBiz.add(t); rtn.put("success",true); rtn.put("message","新增成功"); } catch (Exception e) { e.printStackTrace(); rtn.put("success",false); rtn.put("message","新增失败"); } write(JSON.toJSONString(rtn)); } private long id; public long getId() { return id; } public void setId(long id) { this.id = id; } /** * 删除 * @param jsonString */ public void delete(){ try { baseBiz.delete(id); ajaxReturn(true, "删除成功"); } catch (Exception e) { e.printStackTrace(); ajaxReturn(false, "删除失败"); } } /** * 通过编辑查询对象 */ public void get(){ T t = baseBiz.get(id); String jsonString = JSON.toJSONString(t); System.out.println("转换前:" + jsonString); //{"name":"管理员组","tele":"000011","uuid":1} String jsonStringAfter = mapData(jsonString, "t"); System.out.println("转换后:" + jsonStringAfter); write(jsonStringAfter); } /** * 修改 */ public void update(){ try { baseBiz.update(t); ajaxReturn(true, "修改成功"); } catch (Exception e) { e.printStackTrace(); ajaxReturn(false, "修改失败"); } } /** * //{"name":"管理员组","tele":"000011","uuid":1} * @param jsonString JSON数据字符串 * @param prefix 要加上的前缀 * @return {"t.name":"管理员组","t.tele":"000011","t.uuid":1} */ public String mapData(String jsonString, String prefix){ Map
map = JSON.parseObject(jsonString); //存储key加上前缀后的值 Map
dataMap = new HashMap
(); //给每key值加上前缀 for(String key : map.keySet()){ dataMap.put(prefix + "." + key, map.get(key)); } return JSON.toJSONString(dataMap); } /** * 返回前端操作结果 * @param success * @param message */ public void ajaxReturn(boolean success, String message){ //返回前端的JSON数据 Map
rtn = new HashMap
(); rtn.put("success",success); rtn.put("message",message); write(JSON.toJSONString(rtn)); } /** * 输出字符串到前端 * @param jsonString */ public void write(String jsonString){ try { //响应对象 HttpServletResponse response = ServletActionContext.getResponse(); //设置编码 response.setContentType("text/html;charset=utf-8"); //输出给页面 response.getWriter().write(jsonString); } catch (IOException e) { e.printStackTrace(); } }}

WaybillAction

package com.redsum.bos.action;import com.redsum.bos.biz.IWaybillBiz;import com.redsum.bos.entity.Waybill;/** * Action  * @author Administrator * */public class WaybillAction extends BaseAction
{
private IWaybillBiz waybillBiz; public void setWaybillBiz(IWaybillBiz waybillBiz) {
this.waybillBiz = waybillBiz; super.setBaseBiz(this.waybillBiz); }}

WaybilldetailAction

package com.redsum.bos.action;import com.redsum.bos.biz.IWaybilldetailBiz;import com.redsum.bos.entity.Waybilldetail;/** * Action  * @author Administrator * */public class WaybilldetailAction extends BaseAction
{
private IWaybilldetailBiz waybilldetailBiz; public void setWaybilldetailBiz(IWaybilldetailBiz waybilldetailBiz) {
this.waybilldetailBiz = waybilldetailBiz; super.setBaseBiz(this.waybilldetailBiz); }}
(7)测试运行

http://localhost:9090/redsun/admin/waybill.html

在这里插入图片描述
http://localhost:9090/redsun/admin/waybilldetail.html
在这里插入图片描述

4、系统开发

(1)修改WaybilldetailDao

在这里插入图片描述

//根据运单号查询明细			if(null != waybilldetail1.getSn()) {
dc.add(Restrictions.eq("sn", waybilldetail1.getSn())); }
(2)创建包结构以及对应的类

在这里插入图片描述

IWaybillWS

package com.redsum.bos.ws;import java.util.List;import javax.jws.WebService;import com.redsum.bos.entity.Waybilldetail;/* * 运单服务接口 */@WebServicepublic interface IWaybillWS {
/* * 查询运单详情 */ List
waybilldetailList(Long sn); /* * 在线预约下单 */ Long addWaybill(Long id,String toAddress,String addressee,String tele,String info);}

WaybillWS

package com.redsum.bos.ws.impl;import java.util.List;import com.redsum.bos.biz.IWaybillBiz;import com.redsum.bos.biz.IWaybilldetailBiz;import com.redsum.bos.entity.Waybill;import com.redsum.bos.entity.Waybilldetail;import com.redsum.bos.ws.IWaybillWS;public class WaybillWS implements IWaybillWS {
private IWaybillBiz waybillBiz; private IWaybilldetailBiz waybilldetailBiz; public void setWaybillBiz(IWaybillBiz waybillBiz) {
this.waybillBiz = waybillBiz; } public void setWaybilldetailBiz(IWaybilldetailBiz waybilldetailBiz) {
this.waybilldetailBiz = waybilldetailBiz; } /* * 查询运单详情 */ @Override public List
waybilldetailList(Long sn) {
// 构建查询条件 Waybilldetail waybilldetail = new Waybilldetail(); waybilldetail.setSn(sn); return waybilldetailBiz.getList(waybilldetail, null, null); } /* * */ @Override public Long addWaybill(Long id, String toAddress, String addressee, String tele, String info) {
Waybill waybill = new Waybill(); waybill.setToaddress(toAddress); waybill.setInfo(info); waybill.setState("0"); waybill.setTele(tele); waybill.setUserid(id); waybill.setAddressee(addressee); waybillBiz.add(waybill); return waybill.getSn(); }}
(3)创建applicationContext_cxf.xml配置文件

在这里插入图片描述

(4)发布服务

http://localhost:9090/redsun/ws/waybill?wsdl

在这里插入图片描述
http://localhost:9090/redsun/ws/waybill?wsdl=IWaybillWS.wsdl
在这里插入图片描述

二、ERP整合物流Bos系统客户端

1、在erp_partent的基础上创建子工程

(1)创建erp_client工程

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)erp_biz给工程添加依赖

在这里插入图片描述

(3)生成客户端代码

a、查看工程的位置

在这里插入图片描述

在这里插入图片描述

b、在cmd当中执行如下代码
cd D:\ITZHENGWORKSPACE\erp_partent\erp_client\src\main\javaD:wsimport -s . http://localhost:9090/redsun/ws/waybill?wsdl

在这里插入图片描述

c、更新项目自动生成代码成功

在这里插入图片描述

d、配置对应的坐标在erp_partent对应的pom.xml当中

在这里插入图片描述

org.apache.cxf
cxf-rt-frontend-jaxws
3.1.10
org.apache.cxf
cxf-rt-transports-http
3.1.10
e、配置客户端的配置文件(在erp_client)当中的resources

resources\applicationContext_cxf.xml

在这里插入图片描述

2、通过运单号查询运单详情

(1)在IOrdersBiz当中创建waybilldatailList方法

在这里插入图片描述

/*	 * 根据运单号查询运单分析	 */	List
waybilldatailList(Long sn);

(2)在OrdersBiz当中注入IWaybillWS

a、修改OrdersBiz

在这里插入图片描述

b、修改applicationContext_biz.xml

在这里插入图片描述

(3)在OrdersBiz当中创建waybilldatailList方法通过运单号查询运单详情

在这里插入图片描述

/*	 * 通过运单号查询运单详情	 */	@Override	public List
waybilldatailList(Long sn) {
return waybillWs.waybilldetailList(sn); }

3、通过运单号查询运单详情

(1)修改OrderdetailBiz,注入对应的接口

a、编写对应的类并设置set方法

在这里插入图片描述

private IWaybillWS waybillWs;	private ISupplierDao supplierDao;	public void setWaybillWs(IWaybillWS waybillWs) {
this.waybillWs = waybillWs; } public void setSupplierDao(ISupplierDao supplierDao) {
this.supplierDao = supplierDao; }
b、设置对应的配置文件applicationContext_biz.xml

在这里插入图片描述

(2)修改OrderdetailBiz当中的doOutStore方法

在这里插入图片描述

//客户			Supplier supplier = supplierDao.get(orders.getSupplieruuid());			//在线预约下单,获取运单号			Long waybillsn = waybillWs.addWaybill(1l, supplier.getAddress(), supplier.getContact(), supplier.getTele(), "--");						//更新运单号			orders.setWaybillsn(waybillsn);

4、ERP系统当中显示物理系统的信息

(1)OrdersAction当中

在这里插入图片描述

// 根据运单号查询运单详情	public void waybilldetailList() {
List
waybilldatailList = ordersBiz.waybilldatailList(waybillSn); write(JSON.toJSONString(waybilldatailList)); }

(2)修改orders.html

在这里插入图片描述

(3)修改orders.js

在这里插入图片描述

在这里插入图片描述

(4)访问:http://localhost:8080/erp/orders.html?oper=orders&type=2

在这里插入图片描述

(5)添加按钮弹出运单详情

a、修改orders.html

在这里插入图片描述

b、修改orders.js

在这里插入图片描述

// 订单已经出库			if (rowData.state * 1 == 1) {
// 添加详情的按钮 var options = $('#ordersDlg').dialog('options'); var toolbar = options.toolbar; toolbar.push({
text : '运单详情', iconCls : 'icon-search', handler : function() {
$('#waybillDlg').dialog('open'); $('#waybillgrid').datagrid({
url:'orders_waybilldetailList?waybillsn=' + $('#waybillsn').html(), columns:[[ {
field:'exedate',title:'执行日期',width:100}, {
field:'exetime',title:'执行时间',width:100}, {
field:'info',title:'执行日期',width:100} ]], rownumbers:true }); } }); //重新渲染工具栏 $('#ordersDlg').dialog({
toolbar : toolbar });
e、访问

http://localhost:8080/erp/orders.html?oper=orders&type=2

在这里插入图片描述

转载地址:https://code100.blog.csdn.net/article/details/111869373 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java CXF框架(案例加解析)(快速入门)模拟服务端和客户端(客户端远程调用服务端功能)
下一篇:Android快速入门 四大应用组件之一Activity(打电话和发短信)功能练习

发表评论

最新留言

不错!
[***.144.177.141]2024年04月29日 07时30分30秒