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