Loading... ## 1. 比如想在"建模引擎"模块自定义一个post接口 步骤1 打开路径D:\WEAVER\ecology\classbean\com\api\formmode\web,这里面对应"建模引擎"的action ![](https://xug.cc/usr/uploads/2022/11/1020737536.png) 步骤2 拷贝出任意一个class文件,放到idea进行反编译,将代码复制出来。 ![](https://xug.cc/usr/uploads/2022/11/1570662615.png) 步骤3 新建自定义action类CustomFormmodeAction,import需要用到的包。 ```java 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文件(如果编译没问题,无需重启系统)。 ![](https://xug.cc/usr/uploads/2022/11/1838386279.png) ## 2. js使用ajax调用 ```java <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. 效果:点击"保存",会请求自定义接口校验数据 ![](https://xug.cc/usr/uploads/2022/11/3868983529.png) ## 4. 注意事项 如果第三方异构系统需要调用该接口,需要配置接口白名单。 目录:D:\WEAVER\ecology\WEB-INF\prop\weaver_session_filter.properties ![](https://xug.cc/usr/uploads/2022/11/892198405.png) 在unchecksessionurl后面添加"/api/formmode/custom/findconflict;" ![](https://xug.cc/usr/uploads/2022/11/2557758486.png) Last modification:March 8, 2024 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏