1. 比如想在"建模引擎"模块自定义一个post接口
步骤1 打开路径D:\WEAVER\ecology\classbean\com\api\formmode\web,这里面对应"建模引擎"的action
步骤2 拷贝出任意一个class文件,放到idea进行反编译,将代码复制出来。
步骤3 新建自定义action类CustomFormmodeAction,import需要用到的包。
package com.api.formmode.web;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import weaver.conn.RecordSet;
// 自定义action,无侵入开发
@Path("/formmode/custom")
public class CustomFormmodeAction {
public CustomFormmodeAction() {
}
//查询当前预约的人员,时间段是否和数据库里面的冲突
@POST
@Path("/findconflict")
@Produces({"application/json"})
public String findConflict(@Context HttpServletRequest var1, @Context HttpServletResponse var2) {
var2.setContentType("application/json; charset=utf-8");
String ry = var1.getParameter("ry");// 人员
String jhksrq = var1.getParameter("jhksrq");// 计划开始日期
String jhjsrq = var1.getParameter("jhjsrq");// 计划结束日期
String zt = var1.getParameter("zt");// 预约状态:0预约中,1已完成
JSONObject obj = new JSONObject();
obj.put("result","1");// 默认保存校验通过
if("0" == zt) {// 如果是预约状态
RecordSet rs = new RecordSet();
rs.execute("select * from uf_ryyy where ry=" + ry + " and zt=" + zt + " and ((jhksrq >= " + jhksrq + " AND jhksrq <= " + jhjsrq
+ ") OR (jhksrq <= " + jhksrq + " AND jhjsrq >= " + jhjsrq + ") OR (jhjsrq >= " + jhksrq + " AND jhjsrq <= " + jhjsrq + "))");
if(rs.next()){//存在冲突
// 从结果获取冲突信息
String xmmc_con = rs.getString("xmmc");
String xmh_con = rs.getString("xmh");
String jhksrq_con = rs.getString("jhksrq");
String jhjsrq_con = var1.getParameter("jhjsrq");
obj.put("result","0");
obj.put("des","该预约存在冲突,冲突如下:项目名称:" + xmmc_con + ",项目号:" + xmh_con + ",计划开始日期:" + jhksrq_con + ",计划结束日期:" + jhjsrq_con);
}
}
return JSON.toJSONString(obj);
}
}
步骤4 将写完的CustomFormmodeAction.java文件放到对应的目录,系统会自动编译生成class文件(如果编译没问题,无需重启系统)。
2. js使用ajax调用
<script type="text/javascript">
window.checkCustomize =(_endflagemit_)=>{
var xmh = ModeForm.getFieldValue("field20288");
var ry = ModeForm.getFieldValue("field20289");
var jhksrq = ModeForm.getFieldValue("field20290");
var jhjsrq = ModeForm.getFieldValue("field20291");
$.ajax({
url:"http://192.168.10.28/api/formmode/custom/findconflict",
type:"POST",
data:{
"xmh":xmh,
"ry":ry,
"jhksrq":ksrq,
"jhjsrq":jsrq
},
success:function(res){
console.log(res);
if(res.result==1){
_endflagemit_(true);
}else{
_endflagemit_(false);
var rymc = ModeForm.getBrowserShowName("field20289");
var jsmc = ModeForm.getSelectShowName("field20325");
ModeForm.showMessage(jsmc+rymc+"已有如下项目安排:"+ res.des, 1, 10);
}
},
error:function(){
_endflagemit_(false);
}
})
}
</script>
3. 效果:点击"保存",会请求自定义接口校验数据
4. 注意事项
如果第三方异构系统需要调用该接口,需要配置接口白名单。
目录:D:\WEAVER\ecology\WEB-INF\prop\weaver_session_filter.properties
在unchecksessionurl后面添加"/api/formmode/custom/findconflict;"