通过调用webservice接口传入单据日期,传出该单据日期下的所有出库申请单的单据号、单据日期、人员、部门(json格式)

通过调用webservice接口传入单据日期,传出该单据日期下的所有出库申请单的单据号、单据日期、人员、部门(json格式)

1.在public端的nc.itf下新建一个名叫ws的包,在包下建一个名为ICkdWebService.java的接口,在接口里面写一个接口方法

package nc.itf.ws;
import nc.vo.pub.BusinessException;

public interface ICkdWebService {

	public String reqData(String jsonInfo) throws BusinessException;
	
}

2.在private端的nc.impl下新建一个名叫ws的包,在包下建一个名为CkdWebServiceImpl.java的接口实现类,实现接口中的方法

package nc.impl.ws;

public class CkdWebServiceImpl implements ICkdWebService{

	@Override
	public String reqData(String jsonInfo) {
		return null;
	}
}

3.右击接口–>WS Tools–>WSDL,右击接口实现类–>WS Tools–>XSD;这样会在根目录下生成一个ws的文件夹,把生成文件夹中的ICkdWebService.wsdl放到跟接口同一个文件夹下,CkdWebServiceImpl.xsd放到跟接口实现类同一个文件夹下;删掉刚刚生成的ws文件夹
4.运行–>调试配置–>yhly_Server–>自变量,的最后加上,uapws,点击应用,然后关闭
5.在最下面的yhlypx文件夹的META-INF文件夹下新建一个wepservice.upm文件

<?xml version='1.0' encoding='UTF-8'?>
<module name="yhlypx">//模块名
	<public>
		 <component remote="true" singleton="true" tx="CMT">
			<interface>nc.itf.ws.ICkdWebService</interface>//接口路径
			<implementation>nc.impl.ws.CkdWebServiceImpl</implementation>//实现类路径
            <extension class="nc.uap.ws.deploy.OxbWSExtensionProcessor">
				<wsdl>nc/itf/ws/ICkdWebService.wsdl</wsdl>//wsdl路径的后半段
				<address>/ICkdWebService</address>//接口名
			</extension>
        </component>
	</public>
	<private>
	</private>
</module>

6.启动服务,清缓存
7.json格式

{
"data":"2023-04-07"
}

8.在public端的nc.vo下新建一个名叫ws的包,在包里新建一个CksqdHeadJsonVO.java类

CksqdHeadJsonVO.java
只传能编辑的,自定义参照穿过来的一般都是编码或名称,需要将其转换成主键(因为数据库自定义参照数据库里存的是主键)

package nc.vo.ws;

public class CksqdHeadJsonVO1 {
	public String vbillno;
	public String dbilldate;
	public String personnel;
	public String department;
	
	public String getVbillno() {
		return vbillno;
	}
	public void setVbillno(String vbillno) {
		this.vbillno = vbillno;
	}
	public String getDbilldate() {
		return dbilldate;
	}
	public void setDbilldate(String dbilldate) {
		this.dbilldate = dbilldate;
	}
	public String getPersonnel() {
		return personnel;
	}
	public void setPersonnel(String personnel) {
		this.personnel = personnel;
	}
	public String getDepartment() {
		return department;
	}
	public void setDepartment(String department) {
		this.department = department;
	}
}

9.打开浏览器,输入http://127.0.0.1:[端口号]/uapws检查接口是否发布
用户名、密码在D:\peixun\lianxi\LXHome\LXHome\hotwebs\uapws\WEB-INF文件下的config.xml下

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <action-mappings >
    <action path="/getAllServices.ajax" type="nc.uap.ws.console.action.GetServicesAction" />
  	<action path="/login.ajax" type="nc.uap.ws.console.action.LoginAction" />
  	
  	<action path="/getBasicInfo.ajax" type="nc.uap.ws.console.action.GetBasicInfoAction" />
  	<action path="/getWssInfo.ajax" type="nc.uap.ws.console.action.GetWssInfoAction" />
  	<action path="/getKSInfo.ajax" type="nc.uap.ws.console.action.GetKSInfoAction" />
  	
  	<action path="/saveDoc.ajax" type="nc.uap.ws.console.action.SaveDocAction" />
  	<action path="/loadDoc.ajax" type="nc.uap.ws.console.action.LoadDocAction" />
  	
  	<action path="/loadReqTemplete.ajax" type="nc.uap.ws.console.action.GenSoapRequestAction" />
  	<action path="/soapRequest.ajax" type="nc.uap.ws.console.action.SoapRequestAction" />
  	<action path="/soapFormat.ajax" type="nc.uap.ws.console.action.SoapFormatAction" />
  </action-mappings>
  <login name = "administrator" password="ufsoft*12345"/>//用户名和密码在这里
</config>

10.检验json语句是否正确的网址

https://www.bejson.com/

11.字符串转化为json格式

12.登陆之后,再在网址后加上service,找到自己的接口,复制地址,打开测试软件,点击SOAP,然后把地址填进去

13.自定义参照的翻译公式

vo里要翻译的字段名->getcolvalue(表名,要翻译的值,code,vo里要翻译的字段名)
vo里要翻译的字段名->getcolvalue2(表名,要翻译的值,code,vo里要翻译的字段名,code,vo里要翻译的字段名)
getcolvalue2可以加多个where条件

14.CkdWebServiceImpl.java

package nc.impl.ws;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.logging.Logger;
import nc.itf.ws.ICkdWebService1;
import nc.jdbc.framework.processor.ArrayListProcessor;
import nc.ui.yhlypx.util.NullValueUtils;
import nc.vo.pub.BusinessException;
import nc.vo.ws.CksqdHeadJsonVO1;
import nc.vo.ws.ResultParam1;

import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;

public class CkdWebServiceImpl1 implements ICkdWebService1{

	@Override
	public String reqData(String jsonInfo) {
		ResultParam1<CksqdHeadJsonVO1> returnParam1 = new ResultParam1<CksqdHeadJsonVO1>();
		try {
			init();
			JSONObject jsonObject = JSONObject.parseObject(jsonInfo);
			String date = jsonObject.getString("date");
			StringBuilder sb = new StringBuilder();
			sb.append(" select h.vbillno, h.dbilldate, p.name, d.name ");
			sb.append("   from kf_kfcksqd h ");
			sb.append("   left join bd_psndoc p ");
			sb.append("     on p.pk_psndoc = h.personnel ");
			sb.append("   left join org_dept d ");
			sb.append("     on d.pk_dept = h.department ");
			sb.append("  where nvl(h.dr, 0) = 0 ");
			sb.append("    and substr(h.dbilldate, 1, 10) = '" + date + "'");
			
			List<Object[]> list = (List<Object[]>) (getDao().executeQuery(sb.toString(), new ArrayListProcessor()));
			if(list == null || list.size() == 0){
				returnParam1.setCode("500");
				returnParam1.setMessage("未查询到记录");
				return new Gson().toJson(returnParam1);
			}
			List<CksqdHeadJsonVO1> paramList = new ArrayList<CksqdHeadJsonVO1>();
			for(Iterator iterator = list.iterator(); iterator.hasNext();){
				Object[] objs = (Object[]) iterator.next();
				CksqdHeadJsonVO1 headvo = new CksqdHeadJsonVO1();
				headvo.setVbillno(NullValueUtils.getNullStringValue(objs[0]));
				headvo.setDbilldate(NullValueUtils.getNullStringValue(objs[1]));
				headvo.setPersonnel(NullValueUtils.getNullStringValue(objs[2]));
				headvo.setDepartment(NullValueUtils.getNullStringValue(objs[3]));
				paramList.add(headvo);
			}
			returnParam1.setCode("200");
			returnParam1.setMessage("查询成功");
			returnParam1.setDatas(paramList.toArray(new CksqdHeadJsonVO1[0]));
			return new Gson().toJson(returnParam1);

		} catch (BusinessException e) {
			String code = "500";
			returnParam1.setCode(code);
			returnParam1.setMessage("查询出错" + e.getMessage());

		}
		return new Gson().toJson(returnParam1);
	}


	/**
	 * 使用数据库
	 */
	private BaseDAO dao;
	private BaseDAO getDao() {
		if(dao == null) {
			dao = new BaseDAO();
		}
		return dao;
	}

	/**
	 * 初始化数据源、集团、用户
	 */
	private void init(){
		InvocationInfoProxy.getInstance().setUserDataSource(getEnvInfo("datasource"));
		InvocationInfoProxy.getInstance().setGroupId(getEnvInfo("groupid"));
		InvocationInfoProxy.getInstance().setUserId(getEnvInfo("userid"));
	}

	/**
	 * 得到配置文件参数值
	 */
	public String getEnvInfo(String param) {
		// 属性集合对象
		Properties prop = new Properties();
		try {
			InputStream fis = CkdWebServiceImpl.class.getResourceAsStream("data.properties");
			// 将属性文件流装载到Properties对象中
			prop.load(fis);
		} catch (Exception e) {
			Logger.debug(e);
		}
		return prop.getProperty(param);
	}

}

15.data.properties

datasource=design
groupid=0001A1100000000002O7
userid=1001A11000000000002X

16.ResultParam.java

package nc.vo.ws;

public class ResultParam1<E> {
	private String code;
	private String message;
	private E[] datas;

	public E[] getDatas() {
		return datas;
	}
	public void setDatas(E[] datas) {
		this.datas = datas;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
}

17.注意事项

1.不在json里用UFDate、UFDouble

CksqdJson jsonvo = new Gson().fromJson(jsonInfo, CksqdJson.class);

2.在json里用UFDate、UFDouble

  GsonBuilder gsonBuilder = new GsonBuilder();
  UFDataTypeDeserializer ufDeserializer = new UFDataTypeDeserializer();
  gsonBuilder.registerTypeAdapter(UFDateTime.class, ufDeserializer);
  gsonBuilder.registerTypeAdapter(UFDate.class, ufDeserializer);
  gsonBuilder.registerTypeAdapter(UFBoolean.class, ufDeserializer);
  gsonBuilder.registerTypeAdapter(UFDouble.class, ufDeserializer);
  gsonBuilder.registerTypeAdapter(UFTime.class, ufDeserializer);
  gsonBuilder.registerTypeAdapter(UFLiteralDate.class, ufDeserializer);
  CksqdJson param = gsonBuilder.create().fromJson(jsonInfo.toString(),CksqdJson.class);

3.webservice在接口里面加了方法后,想要在SOAP中显示出来需要重新生成wsdl和xsd文件,然后重启服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和安韩Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值