泛微OA自定义post接口和路径(无侵入)


1. 在"建模引擎"模块自定义一个post接口


步骤1 把接口放在以下路径D:\WEAVER\ecology\classbean\com\api\formmode\web,这里面是"建模引擎"的action


步骤2 在idea里面新建一个和路径一样的包路径com.api.formmode.web


步骤3 新建自定义action类CustomFormmodeAction.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 右键项目名称,build编译生成class文件,拷出class文件放到服务器上



2. 前端使用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;"


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM