天天看點

三級關聯查詢如何實作?

問題描述:根據所屬部門查詢所在項目,根據所在項目查詢審批人

1、頁面代碼如圖所示

&nbsp所屬部門:
                    <select name="departmentId" id="departmentId" style="width:145px;">
                        <option value="">全部</option>
                        #foreach($department in $departmentInfos)
                            <option value="$department.departmentId" #if($departmentId==$department.departmentId)
                                    selected #end >$department.departmentName</option>
                        #end
                    </select>
                    &nbsp;&nbsp;&nbsp;&nbsp;所屬項目:
                    <select name="projectId" id="contractNo" style="width:147px;">
                        <option value="">請選擇</option>
                        #foreach($projectInfo in $projectInfos)
                            <option value="$!projectInfo.contractNo" #if($projectId==$!projectInfo.contractNo)
                                    selected #end>$!projectInfo.projectName</option>
                        #end
                    </select>
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;審批人:
                    <select name="verifyId" id="verifyName" style="width:147px;">
                         <option value="">全部</option>
                        #foreach($verifyName in $verifyNames)
                            <option value="$!verifyName.employeeId"  #if($verifyId==$!verifyName.employeeId)
                                    selected #end>$!verifyName.employeeName</option>
                        #end
                    </select>
           

2、js代碼如圖所示

/*更改部門下拉框選擇時動态更新項目清單*/
$(function(){
    $("#departmentId").change(function(){
        var departmentId = $("#departmentId").val();
        //更改所選部門資料
        $("#contantNo").empty();
        if(departmentId != null && departmentId !=""){
            changeDepartmentChangeProjecjtData(departmentId)
        }else{
            changeDepartmentChangeProjecjtData(departmentId);
        }

    });

});
/*更改項目下拉框選擇時動态更新審批人清單*/
$(function(){
    $("#contractNo").change(function(){
        var contractNo = $("#contractNo").val();
        //更改所選項目資料
        $("#verifyName").empty();
        if(contractNo != null && contractNo !=""){
            changeContractNoChangeVerifyName(contractNo);
        }else{
            changeContractNoChangeVerifyName(contractNo);
        }
    });
});

/**
 * 更改部門更改項目資訊
 * @param companyId
 */
function changeDepartmentChangeProjecjtData(departmentId){
    try {
        jQuery.ajax({
            type: "POST",
            dataType: "json",
            url:contextPath+"/employee/employeeScore_changeDeptidByProjectList"+webtype,
            data:{departmentId:departmentId},
            contentType: "application/x-www-form-urlencoded; charset=utf-8",

            success: function(data) {
                DeleteOptions();
                DeleteOptions1();
                if(data && data.length>0){
                    $("#contractNo").append("<option value=''>請選擇</option>");
                    for(var object in data){
                        $("#contractNo").append("<option value='"+data[object].contractNo+"'>"+data[object].projectName+"</option>");
                    }
                }
            }
        });
    }catch(e){
        $.jBox.closeTip();
        $.jBox.info(e.description, "溫馨資訊提示");
    }
}
/**
 * 更改項目更改審批人資訊
 * @param companyId
 */
function changeContractNoChangeVerifyName(contractNo){
    try {
        jQuery.ajax({
            type: "POST",
            dataType: "json",
            url:contextPath+"/employee/employeeScore_changeVerifyNameByContractNo"+webtype,
            data:{contractNo:contractNo},
            contentType: "application/x-www-form-urlencoded; charset=utf-8",

            success: function(data) {
                DeleteOptions1();
                if(data && data.length>0){
                    $("#verifyName").append("<option value=''>請選擇</option>");
                    /*data=JSON.parse(data);*/
                    console.log(data)
                    for(var i=0,l=data.length;i<l;i++){
                        $("#verifyName").append("<option value='"+data[i].employeeId+"'>"+data[i].employeeName+"</option>");
                    }
                }
            }
        });
    }catch(e){
        $.jBox.closeTip();
        $.jBox.info(e.description, "溫馨資訊提示");
    }
}
function DeleteOptions()
{
    var mySelect = document.getElementById("contractNo");
    mySelect.options.length=0
}
function DeleteOptions1()
{
    var mySelect = document.getElementById("verifyName");
    mySelect.options.length=0
}
           

3、java代碼

/**
     * 根據部門資訊選擇項目資訊
     */
    public void changeDeptidByProjectList() throws Exception {
        OnlineObject onlineObject = (OnlineObject) getServletRequest().getSession().getAttribute(GlobeSDK.LoginObj.OPERATIONOBJ);
        List<ProjectInfo> projectInfoList = new ArrayList<>();
        List<ProjectInfo> projectInfoList1 = onlineObject.getProjectListByRole();
        projectInfoList = projectInfoList1.stream().filter(projectInfo ->
                departmentId != null && projectInfo != null && departmentId.equals(projectInfo.getDepartmentId())
        ).collect(Collectors.toList());
        JSONArray json = JSONArray.fromObject(projectInfoList);
        if (StringUtils.isBlank(departmentId)) {
            json = JSONArray.fromObject(this.getOnlineObject().getProjectListByRole());
        }
        this.outPutAjax(json.toString());
    }

    /**
     * 根據項目資訊選擇審批人資訊
     */
    public void changeVerifyNameByContractNo() throws Exception {
        OnlineObject onlineObject = (OnlineObject) getServletRequest().getSession().getAttribute(GlobeSDK.LoginObj.OPERATIONOBJ);
        OnlineObject onlineObject2 = new OnlineObject();
        onlineObject2.setRoleId(onlineObject.getRoleId());
        EmployeeScore employeeScore = new EmployeeScore();
        if (contractNo != null && contractNo != "" && !contractNo.equals("")) {
            employeeScore.setContractNo(contractNo);
        }
        List<EmployeeInfo> verifyName = employeeScoreService.selectVerifyName(employeeScore);
        JSONArray json = JSONArray.fromObject(verifyName);
        this.outPutAjax(json.toString());
    }