【泛微E9】建模引擎卡片界面新建时提醒所选中部门在本月盘点中已存在盘点周期记录

点击查看第一版代码(这版功能不满足业务需求,故重写,此处仅为记录)

表单模板代码块(第一版)如下:


jQuery(document).ready(function(){  
  
  var beginTime = {date: "field12937"};
  var endTime   = {date: "field12938"};

  checkCustomize = function (){
      var a= new Date($("#" + beginTime.date).val());
      var b= new Date($("#" + endTime.date).val());    
      if(a > b){
          window.top.Dialog.alert("盘点开始日期不得大于盘点结束日期,请检查后重新选择!");                          
          return false;
      }else if(a-b==0){
          window.top.Dialog.alert("盘点开始日期时间与盘点结束日期相同,请检查后重新输入!");
          return  false;
      }else{
          return true;
      };	                                          
  };       	  


  
  ModeForm.bindFieldChangeEvent("field12987",function(obj,id,value){   
    var bmStr = value;
    asset_inventory(bmStr);
    console.log(bmStr);
  });

});

function asset_inventory (data){
  var bmStr = data;
  $.ajax({
    type:"GET",
    url:"/interface/ewqe/PDcycle.jsp",
    data:{
      "bmStr":bmStr
    },
    success:function(res){
      console.log("res:"+res);
      var resultObj = JSON.parse(res);

      const departmentNames = Object.keys(resultObj).filter(key => resultObj[key] === "Exists");
      if(departmentNames.length > 0){
        const resultString = `您所选择的部门:${departmentNames.join("、")}在本月盘点中已存在盘点周期`;
        ModeList.showMessage(resultString, 1,3);
      }
  
    },
    error:function(xhr, status, error){
      // console.error("AJAX 请求失败:", status, error);
      ModeList.showMessage(xhr.responseText || "AJAX 请求失败,请稍后再试", 2);
    }
    
  });

}

jsp文件(第一版)如下:

<%@ page contentType="text/html;charset=UTF-8" language="java"%>

<%@ page import="net.sf.json.JSONArray" %>
<%@ page import="java.util.*" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Objects" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.conn.RecordSet,weaver.conn.RecordSetDataSource" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="net.sf.json.JSONObject"%>
<%@ page import="weaver.hrm.*"%>
<%@ page import="javax.servlet.http.HttpServletRequest;" %>
<%@ page import="javax.servlet.http.HttpServletResponse;" %>
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page"/>

<%
	String bmStr = request.getParameter("bmStr");
	String[] bmarrArray = bmStr.split(",");
	JSONObject resultObj = new JSONObject();

	String sqlString = "SELECT CASE WHEN FIND_IN_SET(?, bcpdbm) > 0 THEN 'Exists' ELSE 'NoExist' END AS result FROM uf_zcpdzq WHERE pdny = DATE_FORMAT(NOW(), '%Y-%m') ";
	String sqlString1 = "SELECT DEPARTMENTMARK FROM hrmdepartment WHERE id = ? ";
	
	RecordSet rs1=new RecordSet();

	for (String element : bmarrArray) {
		
		String trimmedElement = element.trim();	
		
		rs.executeQuery(sqlString,trimmedElement);
		boolean exists = false;
		
		while(rs.next()){
			String result = rs.getString("result");
			
			if ("Exists".equals(result)) {
				exists = true;
			}
		}
		String departmentMark = "";
		rs1.executeQuery(sqlString1,trimmedElement);
		
		if(rs1.next()){
			departmentMark = rs1.getString("DEPARTMENTMARK");	
		}

		resultObj.put(departmentMark, exists ? "Exists" : "NoExist"); // 存储最终状态
	}

	out.print(resultObj.toString());		
		
%>

表单模板代码块(第二版)如下:

var matchingRecords = [];
jQuery(document).ready(function(){  
  
  ModeForm.bindFieldChangeEvent("field12987,field12937,field12938",function(obj,id,value){   
    var bmStr = value;
    asset_inventory(bmStr);
    // console.log(bmStr);
    // console.log("WfForm.bindFieldChangeEvent--",obj,id,value);
  });
  
  window.checkCustomize = function() {
    
    var flag = true;
    var ksrq = parseDate(ModeForm.getFieldValue("field12937"));
    var jsrq = parseDate(ModeForm.getFieldValue("field12938"));

    if (matchingRecords.length > 0 || jsrq <= ksrq) {
      flag = false;
      ModeList.showMessage("结束日期必须大于开始日期", 2); // 显示错误消息
      
      const uniqueDepartmentMarksSet = new Set(matchingRecords.map(item => item.departmentMark));
      const uniqueDepartmentMarks = [...uniqueDepartmentMarksSet]; // 将 Set 转换回数组

      // 检查是否有匹配的 departmentMark
      if (uniqueDepartmentMarks.length > 0) {
        const resultString = `您所选择的部门:${uniqueDepartmentMarks.join("、")}的盘点日期范围在本月盘点中已存在盘点周期`;
        ModeList.showMessage(resultString, 1, 3); 
      }
    }
    return flag;

  };
  
});

function asset_inventory (data){
  var bmStr = data;
  var a = parseDate(ModeForm.getFieldValue("field12937"));
  var b = parseDate(ModeForm.getFieldValue("field12938"));
  
  // 清空 matchingRecords 数组
  matchingRecords = [];
  
  $.ajax({
    type:"GET",
    url:"/interface/ewqe/PDcycle.jsp",
    data:{
      "bmStr":bmStr
    },
    success:function(res){
      console.log("res:"+res);
      var resultObj = JSON.parse(res);
  
      // 遍历返回的结果数组
      for (var i = 0; i < resultObj.length; i++) {
        var item = resultObj[i];
        var pdksrq = parseDate(item.pdksrq);
        var pdjssj = parseDate(item.pdjssj);
 
        // 检查条件是否满足
        if ((a >= pdksrq && a <= pdjssj) || (b >= pdksrq && b <= pdjssj) ||
            (a <= pdksrq && b >= pdjssj)) {
          matchingRecords.push(item); // 如果满足条件,将对象添加到匹配数组中
        }
      } 
      console.log("返回数据匹配的结果:", matchingRecords);

    },
    error:function(xhr, status, error){
      ModeList.showMessage(xhr.responseText || "AJAX 请求失败,请稍后再试", 2);
    }
    
  });
  
}

// 辅助函数:将日期字符串转换为日期对象
function parseDate(dateStr) {
  return new Date(dateStr);
}

jsp文件(第二版)如下:

<%@ page contentType="text/html;charset=UTF-8" language="java"%>

<%@ page import="net.sf.json.JSONArray" %>
<%@ page import="java.util.*" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Objects" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.conn.RecordSet,weaver.conn.RecordSetDataSource" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="net.sf.json.JSONObject"%>
<%@ page import="weaver.hrm.*"%>
<%@ page import="javax.servlet.http.HttpServletRequest;" %>
<%@ page import="javax.servlet.http.HttpServletResponse;" %>
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page"/>

<%
	String bmStr = request.getParameter("bmStr");
	String[] bmarrArray = bmStr.split(",");
	List<Map<String, String>> datalist = new ArrayList<Map<String, String>>();
	// JSONObject resultObj = new JSONObject();

	String sqlString = "SELECT CASE WHEN FIND_IN_SET(?, bcpdbm) > 0 THEN 'Exists' ELSE 'NoExist' END AS result, pdksrq, pdjssj  FROM uf_zcpdzq WHERE pdny = DATE_FORMAT(NOW(), '%Y-%m') ";
	String sqlString1 = "SELECT DEPARTMENTMARK FROM hrmdepartment WHERE id = ? ";
	
	
	
	RecordSet rs1=new RecordSet();

	for (String element : bmarrArray) {	
		String trimmedElement = element.trim();	
		rs.executeQuery(sqlString,trimmedElement);
		
		while(rs.next()){
			String result = rs.getString("result");
			if ("Exists".equals(result)) {
				Map<String, String> datamap = new HashMap<String, String>();
				String pdksrq = rs.getString("pdksrq");
				String pdjssj = rs.getString("pdjssj");
	 
				datamap.put("deptid", trimmedElement); // 使用 trimmedElement 作为 部门id
	 
				rs1.executeQuery(sqlString1, trimmedElement);
				if (rs1.next()) {
					String departmentMark = rs1.getString("DEPARTMENTMARK");
					datamap.put("departmentMark", departmentMark);
				}
	 
				datamap.put("result", result);
				datamap.put("pdksrq", pdksrq);
				datamap.put("pdjssj", pdjssj);
	 
				datalist.add(datamap);
			}
		}
	}
	// 在循环外部将 datalist 转换为 JSON 字符串并输出
	String returnstr = JSONArray.fromObject(datalist).toString();
	out.print(returnstr);	
%>
posted @   K89  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示