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;"

Last modification:March 8, 2024
如果觉得我的文章对你有用,请随意赞赏