组织Tree获取方式-代码备份

Mapper.xml(Mybitas)查询组织信息

/wxapp/src/main/resources/mybatis1/fhoa/DepartmentMapper.xml

    <select id="findAllDepartMent" resultType="pd">
        SELECT
            PARENT_ID as "parentId"
            ,DEPARTMENT_ID as "id" 
            ,NAME as "name"
            ,'static/images/user.gif' as "icon"
        FROM
            OA_DEPARTMENT START WITH DEPARTMENT_ID = 'aa3f2c8c247f4370847bf39461848349' 
        CONNECT BY PRIOR DEPARTMENT_ID = PARENT_ID
    </select>

Controller获取组织Tree

/wxapp/src/main/java/com/aoyang/wxapp/controller/cms/organizationinfo/OrganizationInfoController.java

    /**
     * 去新增页面.
     *
     * @param
     * @throws Exception
     */
    @RequestMapping(value="/goAdd")
    public ModelAndView goAdd()throws Exception{
        ModelAndView mv = this.getModelAndView();
        PageData pd = this.getPageData();
//        List<PageData> zdepartmentPdList = new ArrayList<PageData>();
//        JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(Jurisdiction.getDEPARTMENT_ID(),zdepartmentPdList));
        
        //更新获取部门Tree的方式
        List<PageData> deps = departmentService.listAllDepartmentTree();
        JSONArray arr = JSONArray.fromObject(deps);
        mv.addObject("zTreeNodes", (null == arr ?"":arr.toString()));

        mv.setViewName("cms/organizationinfo/organizationinfo_add");
        mv.addObject("msg", "save");
        mv.addObject("pd", pd);
        return mv;
    }    

JSP页面使用数据

/wxapp/src/main/webapp/WEB-INF/jsp/cms/organizationinfo/organizationinfo_add.jsp

<table id="table_report" class="table table-striped table-bordered table-hover">
<tr>
        <td style="width:75px;text-align: right;padding-top: 13px;">组织名称:</td>
        <td>
            <div class="selectTree" id="selectTree"></div>
            <input type="hidden" name="ORGANIZATION_ID" id="ORGANIZATION_ID" value="${pd.ORGANIZATION_ID}" maxlength="255" placeholder="这里输入调度员所属部门" title="调度员所属部门" style="width:98%;"/>
            <input type="text" name="ORGANIZATION_NAME" id="ORGANIZATION_NAME" value="${pd.ORGANIZATION_NAME}" maxlength="255" placeholder="这里输入调度员所属部门" title="调度员所属部门" style="width:98%;"/>
        </td>
</tr>
 

JSP页面的<script>写入

        //组织下拉树
        var defaultNodes = {"treeNodes":${zTreeNodes}};
        function initComplete(){
            //绑定change事件
            $("#selectTree").bind("change",function(){
                if(!$(this).attr("relValue")){
                  //  top.Dialog.alert("没有选择节点");
                }else{
                    //alert("选中节点文本:"+$(this).attr("relText")+"<br/>选中节点值:"+$(this).attr("relValue"));
                    $("#ORGANIZATIONINFO_ID").val($(this).attr("relValue"));
                    $("#ORGANIZATION_NAME").val($(this).attr("relText"));
                }
            });
            //赋给data属性
            $("#selectTree").data("data",defaultNodes);  
            $("#selectTree").render();
            $("#selectTree2_input").val("${null==depname?'请选择':depname}");
        }

完整代码

/wx-system-service/src/main/java/com/aoyang/wxapp/service/fhoa/department/impl/DepartmentService.java

/**
 * Project Name: 澳洋信息系统微信管理平台
 * Date:2016年10月10日
 * Copyright(c) 2016 All Rights Reserved
 */
package com.aoyang.wxapp.service.fhoa.department.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicBoolean;

import javax.annotation.Resource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import com.aoyang.wxapp.dao.DaoSupport;
import com.aoyang.wxapp.entity.Page;
import com.aoyang.wxapp.entity.system.Department;
import com.aoyang.wxapp.service.fhoa.department.DepartmentManager;
import com.aoyang.wxapp.util.PageData;
import com.aoyang.wxapp.util.Tools;

/**
 * 组织机构.
 */
@Service("departmentService")
public class DepartmentService implements DepartmentManager {

	@Resource(name = "daoSupport")
	private DaoSupport dao;

	@Resource(name = "jdbcForOraclesql")
	private JdbcTemplate jdbcTemplate;

	/** 保存父ID对应的Deaprtment,Key:ParentId, Value Department集合.*/
	Map<String, List<Department>> maps = new ConcurrentHashMap<>(10);
	
	/**保存Department的层级关系.*/
	private List<Department> departments = new CopyOnWriteArrayList<Department>();

	/**缓存所有的 部门.*/
	private List<Department> cachedDepartments = new CopyOnWriteArrayList<Department>();

	/** 初次运行标识. */
	private static final AtomicBoolean FIRST_RUN = new AtomicBoolean(true);
	
	/**
	 * 新增
	 * 
	 * @param pd
	 * @throws Exception
	 */
	public void save(PageData pd) throws Exception {
		dao.save("DepartmentMapper.save", pd);
	}

	public void save(Department e) throws Exception {
		String sql = "insert into oa_department ("
				+ "DEPARTMENT_ID,NAME,PARENT_ID,"
				+ "HR_KEY_ID,HR_KEY_PARENT_ID,"
				+ "WX_KEY_ID,WX_KEY_PARENT_ID)"
				+ " VALUES(?,?,?,?,?,?,?)";
		Object[] args = new Object[] {
				e.getID(), e.getNAME(),	e.getPARENT_ID(),
				e.getHrKeyId(), e.getHrKeyParentId(),
				e.getWxKeyId(), e.getWxKeyParentId() };
		
		jdbcTemplate.update(sql, args);
	}

	/**
	 * 删除
	 * 
	 * @param pd
	 * @throws Exception
	 */
	public void delete(PageData pd) throws Exception {
		dao.delete("DepartmentMapper.delete", pd);
	}

	/**
	 * 修改
	 * 
	 * @param pd
	 * @throws Exception
	 */
	public void edit(PageData pd) throws Exception {
		dao.update("DepartmentMapper.edit", pd);
	}

	/**
	 * 列表
	 * 
	 * @param page
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public List<PageData> list(Page page) throws Exception {
		return (List<PageData>) dao.findForList(
				"DepartmentMapper.datalistPage", page);
	}

	/**
	 * 通过id获取数据
	 * 
	 * @param pd
	 * @throws Exception
	 */
	public PageData findById(PageData pd) throws Exception {
		return (PageData) dao.findForObject("DepartmentMapper.findById", pd);
	}

	/**
	 * 通过编码获取数据
	 * 
	 * @param pd
	 * @throws Exception
	 */
	public PageData findByBianma(PageData pd) throws Exception {
		return (PageData) dao
				.findForObject("DepartmentMapper.findByBianma", pd);
	}

	/**
	 * 通过ID获取其子级列表
	 * 
	 * @param parentId
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public List<Department> listSubDepartmentByParentId(String parentId)
			throws Exception {
		loadDepartments();
		if(maps.containsKey(parentId)) {
			return maps.get(parentId);
		}
		return null;
//		return (List<Department>) dao.findForList(
//				"DepartmentMapper.listSubDepartmentByParentId", parentId);
	}

	/**
	 * 获取所有数据并填充每条数据的子级列表(递归处理)
	 * 
	 * @param MENU_ID
	 * @return
	 * @throws Exception
	 */
	public List<Department> listAllDepartment(List<Department> tops, String parentId) throws Exception {
		if(tops != null && !tops.isEmpty()) {
			for (Department top : tops) {
				top.setTreeurl("department/list.do?DEPARTMENT_ID=" + top.getDEPARTMENT_ID());
				top.setTarget("treeFrame");
				top.setIcon("static/images/user.gif");
				
				List<Department> subs = listSubDepartmentByParentId(top.getDEPARTMENT_ID());
				if(subs != null && !subs.isEmpty()) {
					top.addChild(subs);
//					listAllDepartment(subs, top.getDEPARTMENT_ID());
				}
			}
		}
		return tops;
	}

	/**
	 * 获取所有数据并填充每条数据的子级列表(递归处理)下拉ztree用
	 * 
	 * @param MENU_ID
	 * @return
	 * @throws Exception
	 */
	public List<PageData> listAllDepartmentToSelect(String parentId,
			List<PageData> zdepartmentPdList) throws Exception {
		
		//modify by wentan 2018年2月7日11:04:41 当parentId为空时置为'0',以兼容之前的API
		parentId = StringUtils.isEmpty(parentId) ? "0" : parentId;
		
		List<PageData>[] arrayDep = this.listAllbyPd(parentId,zdepartmentPdList);
		List<PageData> departmentPdList = arrayDep[1];
		for (PageData pd : departmentPdList) {
			listAllDepartmentToSelect(pd.getString("id"), arrayDep[0]);
		}
		return arrayDep[0];
	}

	/**
	 * 下拉ztree用
	 * 
	 * @param parentId
	 * @return 
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public List<PageData>[] listAllbyPd(String parentId,
			List<PageData> zdepartmentPdList) throws Exception {
		
		List<Department> departmentList = this.listSubDepartmentByParentId(parentId);
		List<PageData> pdList = new ArrayList<PageData>();
		
		if(departmentList != null) {
			for (Department depar : departmentList) {
				PageData pd = new PageData();
				pd.put("id", depar.getDEPARTMENT_ID());
				pd.put("parentId", depar.getPARENT_ID());
				pd.put("name", depar.getNAME());
				pd.put("icon", "static/images/user.gif");
				pdList.add(pd);
				zdepartmentPdList.add(pd);
			}
		}
		List<PageData>[] arr = new List[2];
		arr[0] = zdepartmentPdList;
		arr[1] = pdList;
		return arr;
	}

	/**
	 * 获取某个部门所有下级部门ID(返回拼接字符串 in的形式, ('a','b','c'))
	 * 
	 * @param DEPARTMENT_ID
	 * @return
	 * @throws Exception
	 */
	public String getDEPARTMENT_IDS(String DEPARTMENT_ID) throws Exception {
		DEPARTMENT_ID = Tools.notEmpty(DEPARTMENT_ID) ? DEPARTMENT_ID : "0";
		List<PageData> zdepartmentPdList = new ArrayList<PageData>();
		zdepartmentPdList = this.listAllDepartmentToSelect(DEPARTMENT_ID,
				zdepartmentPdList);
		StringBuffer sb = new StringBuffer();
		sb.append("(");
		for (PageData dpd : zdepartmentPdList) {
			sb.append("'");
			sb.append(dpd.getString("id"));
			sb.append("'");
			sb.append(",");
		}
		sb.append("'fh')");
		return sb.toString();
	}
	
	public void loadDepartments() {
		if (FIRST_RUN.getAndSet(false)) {
			synchronized (DepartmentService.class) {
				if (maps.isEmpty()) {
					getAllDepartments();
					try{
						departments = assembleDepartment("0");
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}
		}
	}

//	@PostConstruct
	private void getAllDepartments() {
		long start = System.currentTimeMillis();
		String sql = "select * from oa_department ORDER BY PARENT_ID";
		List<Department> list = jdbcTemplate.query(sql, new MyRowMapper());
		cachedDepartments = new CopyOnWriteArrayList<Department>(list);

		for(Department d : list) {
			if(!maps.containsKey(d.getPARENT_ID())) {
				maps.put(d.getPARENT_ID(), new CopyOnWriteArrayList<Department>());
			}
			maps.get(d.getPARENT_ID()).add(d);
		}
		long coast = System.currentTimeMillis() - start;
		System.out.println("getAllDepartments coast(ms)===========>" + coast);
	}
	
	/**
	 * 组装Deaprtment的层级关系.
	 * 
	 * @param childs
	 * @param parentId
	 * @throws Exception 
	 */
	private List<Department> assembleDepartment(String parentId) throws Exception {
		List<Department> departmentList = this.listSubDepartmentByParentId(parentId);
		if(departmentList != null) {
			for(Department depar : departmentList){
				depar.setTreeurl("department/list.do?DEPARTMENT_ID="+depar.getDEPARTMENT_ID());
				depar.setSubDepartment(this.assembleDepartment(depar.getDEPARTMENT_ID()));
				depar.setTarget("treeFrame");
				depar.setIcon("static/images/user.gif");
			}
		}
		return departmentList;
	}
	
	/**
	 * 从指定的 Deaprtment集合中查找指定ID的Department.
	 * 
	 * @param list
	 * @param parentId
	 */
	private Department lookupParent(List<Department> list, String departmentId) {
		for(Department d : list) {
			if(d.getDEPARTMENT_ID().equals(departmentId)) {
				return d;
			} else {
				return lookupParent(d.getSubDepartment(), departmentId);
			}
		}
		return null;
	}


	
	/**
	 * 获取所有数据并填充每条数据的子级列表(递归处理)
	 * @param MENU_ID
	 * @return
	 * @throws Exception
	 */
	public List<Department> listAllDepartment(String parentId) throws Exception {
				
		List<Department> departmentList = this.listSubDepartmentByParentId(parentId);
		
		if(departmentList != null) {
			for(Department depar : departmentList){
				depar.setTreeurl("department/list.do?DEPARTMENT_ID="+depar.getDEPARTMENT_ID());
				depar.setSubDepartment(this.listAllDepartment(depar.getDEPARTMENT_ID()));
//				depar.setSubDepartment(this.listSubDepartmentByParentId(depar.getDEPARTMENT_ID()));
				depar.setTarget("treeFrame");
				depar.setIcon("static/images/user.gif");
			}
		}
		return departmentList;
	}

	/**
	 * 获取指定ID的部门层级描述.
	 * 
	 * @param departmentId 部门ID.
	 * @return
	 * @throws Exception
	 */
	public String getDepartmentDescription(String departmentId) throws Exception {
		this.loadDepartments();
		
		Department self = getDepartmentById(departmentId);
		if(self!= null){
			String desc = getDepartmentById(self, self.getNAME());
			return desc;
		}
		return null;
	}
	
	private String getDepartmentById(Department department, String departmentDesc) {
		while( (department = getDepartmentById(department.getPARENT_ID())) != null) {
			String desc = department.getNAME() + "/" + departmentDesc;
			return getDepartmentById(department, desc);
		};
		return departmentDesc;
	}
	
	/**
	 * 查找指定ID的部门.
	 * 
	 * @param departmentId
	 * @return
	 */
	private Department getDepartmentById(String departmentId) {
		for(Department d : cachedDepartments) {
			if(d.getDEPARTMENT_ID().equals(departmentId)) {
				return d;
			}
		}
		return null;
	}
	
	/**
	 * 内部类,映射Department.
	 * 
	 * @author hc2900@126.com
	 *
	 */
	class MyRowMapper implements RowMapper<Department> {
		@Override
		public Department mapRow(ResultSet rs, int rowNum) throws SQLException {
			Department e = new Department();
			e.setADDRESS(rs.getString("ADDRESS"));
			e.setBIANMA(rs.getString("BIANMA"));
			e.setBZ(rs.getString("BZ"));
			e.setDEPARTMENT_ID(rs.getString("DEPARTMENT_ID"));
			e.setPARENT_ID(rs.getString("PARENT_ID"));
			e.setFUNCTIONS(rs.getString("FUNCTIONS"));
			e.setHEADMAN(rs.getString("HEADMAN"));
			e.setHrKeyId(rs.getString("HR_KEY_ID"));
			e.setHrKeyParentId(rs.getString("HR_KEY_PARENT_ID"));
			e.setID(rs.getString("DEPARTMENT_ID"));
			e.setNAME(rs.getString("NAME"));
			e.setNAME_EN(rs.getString("NAME_EN"));
			e.setTEL(rs.getString("TEL"));
			e.setWxKeyId(rs.getInt("WX_KEY_ID"));
			e.setWxKeyParentId(rs.getInt("WX_KEY_PARENT_ID"));

			e.setTreeurl("department/list.do?DEPARTMENT_ID="
					+ e.getDEPARTMENT_ID());
			e.setTarget("treeFrame");
			e.setIcon("static/images/user.gif");

			return e;
		}
	}
	//判断departmentId是否包含下属部门childDepartmentId
	@Override
	public boolean hasChildDepartment(String departmentId,
			String childDepartmentId) {
		try {
			//通过部门ID获取其子级列表
			List<Department> childs = listSubDepartmentByParentId(departmentId);
			//查询是否子节点及子孙节点=childDepartmentId
			return hasChilddepartment(childs, childDepartmentId);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return false;
	}
	
	/**
	 * 递归查询指定的部门中,是否包含子节点.
	 * @param parents
	 * @param childDepartmentId 子节点ID.
	 * @return
	 */
	private boolean hasChilddepartment(List<Department> parents, String childDepartmentId) {
		if(parents == null || parents.isEmpty()) {
			return false;
		}
		
		for(Department child : parents) {
			if(child.getDEPARTMENT_ID().equals(childDepartmentId)) {
				return true;
			}
			if(child.hasChild()) {
				boolean contains =  hasChilddepartment(child.getChilds(),childDepartmentId);
				if(contains) {
					return true;
				}
			}
		}
		return false;
	}

	@Override
	public List<String> findParentIdsByDepId(String depId) throws Exception {
		List<String> depIds = new ArrayList<String>();
		PageData dep = null;
		do {
			dep = (PageData)dao.findForObject("DepartmentMapper.findById", depId);
			depIds.add(dep.getString("DEPARTMENT_ID"));
			depId = dep.getString("PARENT_ID");
		} while (!"0".equals(depId));
		return depIds;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<PageData> findParentDepsByStaffId(String curUserId) throws Exception {
		return (List<PageData>)dao.findForList("DepartmentMapper.findParentDeps", curUserId);
	}

	
	/**
	 * 通过name获取数据
	 * @author daixiongyan 20181106
	 * @param pd
	 * @return PageData
	 * @throws Exception
	 */
	
	public PageData findByName(PageData pd) throws Exception {
		return (PageData) dao.findForObject("DepartmentMapper.findByName", pd);
	}
	

	
	public String getSubDepartments(String DEPARTMENT_ID) throws Exception {
		DEPARTMENT_ID = Tools.notEmpty(DEPARTMENT_ID) ? DEPARTMENT_ID : "0";
		List<PageData> zdepartmentPdList = new ArrayList<PageData>();
		zdepartmentPdList = this.listAllDepartmentToSelect(DEPARTMENT_ID,
				zdepartmentPdList);
		StringBuffer sb = new StringBuffer();
		for (PageData dpd : zdepartmentPdList) {
			sb.append(dpd.getString("id"));
			sb.append(",");
		}
		sb.append(DEPARTMENT_ID);//添加传入的本机机构id
		return sb.toString();
	}

	/**
	 * 通过staffId员工号获取部门信息
	 * @author daixiongyan 20181109
	 * @param String
	 * @return PageData
	 * @throws Exception
	 */
	@Override
	public PageData findByStaffNo(String staffId) throws Exception {
		return (PageData) dao.findForObject("DepartmentMapper.findByStaffNo", staffId);
	}
	
	/**
	 * 通过物资编码查询出所属于部门信息
	 * @author daixiongyan 20181109
	 * @param String
	 * @return PageData
	 * @throws Exception
	 */
	
	public PageData findByAssetTag(String assetTag) throws Exception{
		return (PageData) dao.findForObject("DepartmentMapper.findByAssetTag", assetTag);
	}

	@Override
	public PageData findCompanyByDepId(String departmentId) throws Exception {
		return (PageData) dao.findForObject("DepartmentMapper.findCompanyByDepId", departmentId);
	}

	/* (non-Javadoc)
	 * @see com.aoyang.wxapp.service.fhoa.department.DepartmentManager#listAll()
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<PageData> listAll() {
		try {
			return (List<PageData>) dao.findForList("DepartmentMapper.findAll", null);
		} catch (Exception e) {
			return new ArrayList<>();
		}
	}
	
	/* 
	 * @see 获取部门树
	 * Returns: List<PageData>
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<PageData> listAllDepartmentTree() {
		try {
			return (List<PageData>) dao.findForList("DepartmentMapper.findAllDepartMent", null);
		} catch (Exception e) {
			return new ArrayList<>();
		}
	}
	
}

/wxapp/src/main/resources/mybatis1/fhoa/DepartmentMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="DepartmentMapper">
	
	<resultMap type="Department" id="departmentResultMap">
		<id column="DEPARTMENT_ID" property="DEPARTMENT_ID"/>
		<result column="NAME" property="NAME"/>
		<result column="PARENT_ID" property="PARENT_ID"/>
	</resultMap>
	
	<!--表名 -->
	<sql id="tableName">
		OA_DEPARTMENT
	</sql>
	
	<!-- 字段 -->
	<sql id="Field">
		NAME,	
		NAME_EN,	
		BIANMA,	
		PARENT_ID,
		HEADMAN,
		TEL,
		FUNCTIONS,
		ADDRESS,
		BZ,	
		DEPARTMENT_ID,
		HR_KEY_ID,
		HR_KEY_PARENT_ID,
		WX_KEY_ID,
		WX_KEY_PARENT_ID
	</sql>
	
	<!-- 字段值 -->
	<sql id="FieldValue">
		#{NAME},	
		#{NAME_EN},	
		#{BIANMA},	
		#{PARENT_ID},
		#{HEADMAN},
		#{TEL},
		#{FUNCTIONS},
		#{ADDRESS},
		#{BZ},	
		#{DEPARTMENT_ID},
		#{HR_KEY_ID},
		#{HR_KEY_PARENT_ID},
		#{WX_KEY_ID},
		#{WX_KEY_PARENT_ID}
	</sql>
	
	<!-- 新增-->
	<insert id="save" parameterType="pd">
		insert into 
	<include refid="tableName"></include>
		(
	<include refid="Field"></include>
		) values (
	<include refid="FieldValue"></include>
		)
	</insert>
	
	<!-- 删除-->
	<delete id="delete" parameterType="pd">
		delete from
		<include refid="tableName"></include>
		where 
			DEPARTMENT_ID = #{DEPARTMENT_ID}
	</delete>
	
	<!-- 修改 -->
	<update id="edit" parameterType="pd">
		update
		<include refid="tableName"></include>
		set 
			NAME = #{NAME},
			NAME_EN = #{NAME_EN},
			HEADMAN = #{HEADMAN},
			BZ = #{BZ},
			TEL = #{TEL},
			FUNCTIONS = #{FUNCTIONS},
			ADDRESS = #{ADDRESS},
			DEPARTMENT_ID = DEPARTMENT_ID
		where 
		DEPARTMENT_ID = #{DEPARTMENT_ID}
	</update>
	
	<!-- 通过ID获取数据 -->
	<select id="findById" parameterType="pd" resultType="pd">
		select 
		<include refid="Field"></include>
		from 
		<include refid="tableName"></include>
		where 
			DEPARTMENT_ID = #{DEPARTMENT_ID}
	</select>
	
	<select id="findAll" resultType="pd">
		SELECT
			PARENT_ID as "pId"
			,DEPARTMENT_ID as "id" 
			,NAME as "name"
		FROM
			OA_DEPARTMENT START WITH DEPARTMENT_ID = 'aa3f2c8c247f4370847bf39461848349' 
		CONNECT BY PRIOR DEPARTMENT_ID = PARENT_ID
	</select>
	
	<select id="findAllDepartMent" resultType="pd">
		SELECT
			PARENT_ID as "parentId"
			,DEPARTMENT_ID as "id" 
			,NAME as "name"
			,'static/images/user.gif' as "icon"
		FROM
			OA_DEPARTMENT START WITH DEPARTMENT_ID = 'aa3f2c8c247f4370847bf39461848349' 
		CONNECT BY PRIOR DEPARTMENT_ID = PARENT_ID
	</select>
	
	<!-- 通过编码获取数据 -->
	<select id="findByBianma" parameterType="pd" resultType="pd">
		select 
		<include refid="Field"></include>
		from 
		<include refid="tableName"></include>
		where 
			BIANMA = #{BIANMA}
	</select>
	
	<!-- 列表 -->
	<select id="datalistPage" parameterType="page" resultType="pd">
		select
		<include refid="Field"></include>
		from 
		<include refid="tableName"></include>
		where
			1=1
		<if test="pd.DEPARTMENT_ID!= null and pd.DEPARTMENT_ID != ''"><!-- 检索 -->
		and PARENT_ID = #{pd.DEPARTMENT_ID}
		</if>
		<if test="pd.keywords != null and pd.keywords != ''"><!-- 关键词检索 -->
			and
				(
				 NAME LIKE CONCAT(CONCAT('%', #{pd.keywords}),'%')
				 or 
				 NAME_EN LIKE CONCAT(CONCAT('%', #{pd.keywords}),'%') 
				 or
				 BIANMA LIKE CONCAT(CONCAT('%', #{pd.keywords}),'%')
				)
		</if>
		order by NAME
	</select>
	
	<!-- 通过ID获取其子级列表 -->
	<select id="listSubDepartmentByParentId" parameterType="String" resultMap="departmentResultMap">
		select 
		<include refid="Field"></include>
		from 
		<include refid="tableName"></include>
		where 
			PARENT_ID = #{parentId} order by NAME 
	</select>
	
	<select id="findParentDeps" parameterType="String" resultType="pd">
		SELECT
			<include refid="Field"></include>
		FROM
		    <include refid="tableName"></include> D 
		START WITH 
			D.DEPARTMENT_ID = (
		        SELECT
		            DEPARTMENT_ID
		        FROM
		            OA_STAFF
		        WHERE
		            STAFF_ID = #{staffId} 
		    ) 
		CONNECT BY 
			D.DEPARTMENT_ID = PRIOR D.PARENT_ID
	</select>
	
	<!--Add by daixiongyan 20181106 根据name 获取数据   star   -->
	<select id="findByName" parameterType="pd" resultType="pd">
		select 
		<include refid="Field"></include>
		from 
		<include refid="tableName"></include>
		where 
			NAME = #{name}
	</select>
	
	<!--Add by daixiongyan 20181106 根据name 获取数据   end   -->
	
	
	<!--Add by daixiongyan 20181109    根据登录用户的员工号获取部门信息   star   -->
	<select id="findByStaffNo" parameterType="String" resultType="pd">
		select od.* from 
		<include refid="tableName"></include> od left join oa_staff oa   
		on oa.DEPARTMENT_ID = od.DEPARTMENT_ID 
		where 
			oa.STAFF_ID = #{staffId}
	</select>
	
	<!--Add by daixiongyan 20181109    根据登录用户的员工号获取部门信息   end   -->
	
	
	<!--Add by daixiongyan 20181109    通过物资编码查询出所属于部门信息   star   -->
	<select id="findByAssetTag" parameterType="String" resultType="pd">
		select 
		od.*
		from 
		<include refid="tableName"></include> od left join asset_list al  
		on al.user_departmentid = od.department_id 
		where 
			al.ASSET_TAG = #{assetTag}
	</select>
	
	<!--Add by daixiongyan 20181109    通过物资编码查询出所属于部门信息   end   -->
	
	<!--Add by yangd 20190423    根据部门id获取公司名   -->
	<select id="findCompanyByDepId" parameterType="String" resultType="pd">
		SELECT * FROM (
			SELECT  *  FROM 
			<include refid="tableName"></include>D
			START WITH 
			    D.DEPARTMENT_ID = #{departmentId}
			CONNECT BY 
			    D.DEPARTMENT_ID = PRIOR D.PARENT_ID
			)
		WHERE hr_key_id like '____'
	</select>
	
	<!-- 获取信息中心下面的小组 -->
	<select id="findInfoGroups" resultType="pd">
		SELECT DEPARTMENT_ID,NAME FROM 
			(SELECT DEPARTMENT_ID,NAME,
				CASE
				WHEN NAME = '共享服务组' THEN 1
				WHEN NAME = '技术支持组' THEN 2
				WHEN NAME = '业务研发组' THEN 3
				WHEN NAME = '系统应用组' THEN 4
				WHEN NAME = '企划运营组' THEN 5
				END AS MARK
			FROM OA_DEPARTMENT 
			WHERE 
			PARENT_ID = '20c7b0dab8824efca319a62f11fa1e13' AND BIANMA = 'UM'
			)
		ORDER BY MARK
	</select>	
</mapper>

/wxapp/src/main/java/com/aoyang/wxapp/controller/cms/organizationinfo/OrganizationInfoController.java

/**
 * Project Name: 澳洋信息系统微信管理平台
 * Date:2017-02-23
 * Copyright(c) 2016 All Rights Reserved
 */
package com.aoyang.wxapp.controller.cms.organizationinfo;

import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import net.sf.json.JSONArray;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.aoyang.wxapp.controller.BaseController;
import com.aoyang.wxapp.entity.Page;
import com.aoyang.wxapp.util.AppUtil;
import com.aoyang.wxapp.util.ObjectExcelView;
import com.aoyang.wxapp.util.PageData;
import com.aoyang.wxapp.util.Jurisdiction;
import com.aoyang.wxapp.util.Tools;
import com.aoyang.wxapp.service.cms.organizationinfo.OrganizationInfoManager;
import com.aoyang.wxapp.service.fhoa.department.DepartmentManager;

/** 
 * 组织信息
 */
@Controller
@RequestMapping(value="/organizationinfo")
public class OrganizationInfoController extends BaseController {
	
	String menuUrl = "organizationinfo/list.do"; //菜单地址(权限用)
	@Resource(name="organizationinfoService")
	private OrganizationInfoManager organizationinfoService;
	@Resource(name="departmentService")
	private DepartmentManager departmentService;
	/**
	 * 保存
	 *
	 * @throws Exception
	 */
	@RequestMapping(value="/save")
	public ModelAndView save() throws Exception{
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		pd.put("ORGANIZATIONINFO_ID", pd.getString("ORGANIZATIONINFO_ID"));	//主键
		pd.put("ORGANIZATION_ID", pd.getString("ORGANIZATIONINFO_ID"));	//组织ID
		pd.put("SEGMENT1", "");	//SEGMENT1
		pd.put("SEGMENT2", "");	//SEGMENT2
		pd.put("SEGMENT3", "");	//SEGMENT3
		pd.put("SEGMENT4", "");	//SEGMENT4
		pd.put("SEGMENT5", "");	//SEGMENT5
		pd.put("SEGMENT6", "");	//SEGMENT6
		pd.put("SEGMENT7", "");	//SEGMENT7
		pd.put("SEGMENT8", "");	//SEGMENT8
		pd.put("SEGMENT9", "");	//SEGMENT9
		pd.put("SEGMENT10", "");	//SEGMENT10
		pd.put("CREATION_DATE", Tools.date2Str(new Date()));	//创建日期
		pd.put("CREATION_BY",Jurisdiction.getUsername());	//创建人
		pd.put("LAST_UPDATE_DATE", Tools.date2Str(new Date()));	//修改日期
		pd.put("LAST_UPDATE_BY", Jurisdiction.getUsername());	//修改人
		organizationinfoService.save(pd);
		mv.addObject("msg","success");
		mv.setViewName("save_result");
		return mv;
	}
	
	/**
	 * 删除.
	 * @param out
	 * @throws Exception
	 */
	@RequestMapping(value="/delete")
	public void delete(PrintWriter out) throws Exception{
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
		PageData pd = new PageData();
		pd = this.getPageData();
		organizationinfoService.delete(pd);
		out.write("success");
		out.close();
	}
	
	/**
	 * 修改.
	 *
	 * @throws Exception
	 */
	@RequestMapping(value="/edit")
	public ModelAndView edit() throws Exception{
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
		ModelAndView mv = this.getModelAndView();
		PageData pd = this.getPageData();
		// 尝试获取用户身份
		String userId = getCurrentUserId();
		if (userId != null) {
			pd.put("userId", userId);
		}
		organizationinfoService.edit(pd);
		mv.addObject("msg","success");
		mv.setViewName("save_result");
		return mv;
	}
	
	/**
	 * 列表.
	 *
	 * @param page
	 * @throws Exception
	 */
	@RequestMapping(value="/list")
	public ModelAndView list(Page page) throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		String keywords = pd.getString("keywords");				//关键词检索条件
		if(null != keywords && !"".equals(keywords)){
			pd.put("keywords", keywords.trim());
		}
		page.setPd(pd);
		List<PageData>	varList = organizationinfoService.list(page);	//列出OrganizationInfo列表
		mv.setViewName("cms/organizationinfo/organizationinfo_list");
		mv.addObject("varList", varList);
		mv.addObject("pd", pd);
		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
		return mv;
	}
	
	/**
	 * 去新增页面.
	 *
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/goAdd")
	public ModelAndView goAdd()throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = this.getPageData();
//		List<PageData> zdepartmentPdList = new ArrayList<PageData>();
//		JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(Jurisdiction.getDEPARTMENT_ID(),zdepartmentPdList));
		
		//更新获取部门Tree的方式
		List<PageData> deps = departmentService.listAllDepartmentTree();
		JSONArray arr = JSONArray.fromObject(deps);
		mv.addObject("zTreeNodes", (null == arr ?"":arr.toString()));
		mv.setViewName("cms/organizationinfo/organizationinfo_add");
		mv.addObject("msg", "save");
		mv.addObject("pd", pd);
		return mv;
	}	
	
    /**
	 * 去修改页面.
	 *
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/goEdit")
	public ModelAndView goEdit()throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = this.getPageData();
		pd = organizationinfoService.findById(pd);	//根据ID读取
		mv.setViewName("cms/organizationinfo/organizationinfo_edit");
		mv.addObject("msg", "edit");
		mv.addObject("pd", pd);
		return mv;
	}	
	
    /**
 	 * 批量删除.
 	 
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/deleteAll")
	@ResponseBody
	public Object deleteAll() throws Exception{
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
		PageData pd = new PageData();		
		Map<String,Object> map = new HashMap<String,Object>();
		pd = this.getPageData();
		List<PageData> pdList = new ArrayList<PageData>();
		String DATA_IDS = pd.getString("DATA_IDS");
		if(null != DATA_IDS && !"".equals(DATA_IDS)){
			String ArrayDATA_IDS[] = DATA_IDS.split(",");
			organizationinfoService.deleteAll(ArrayDATA_IDS);
			pd.put("msg", "ok");
		}else{
			pd.put("msg", "no");
		}
		pdList.add(pd);
		map.put("list", pdList);
		return AppUtil.returnObject(pd, map);
	}
	
	/**
	 * 导出到excel.
	 *
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/excel")
	public ModelAndView exportExcel() throws Exception{
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
		ModelAndView mv = new ModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		Map<String,Object> dataMap = new HashMap<String,Object>();
		List<String> titles = new ArrayList<String>();
		titles.add("组织ID");	//1
		titles.add("组织名称");	//2
		titles.add("有效性");	//3
		titles.add("SEGMENT1");	//4
		titles.add("SEGMENT2");	//5
		titles.add("SEGMENT3");	//6
		titles.add("SEGMENT4");	//7
		titles.add("SEGMENT5");	//8
		titles.add("SEGMENT6");	//9
		titles.add("SEGMENT7");	//10
		titles.add("SEGMENT8");	//11
		titles.add("SEGMENT9");	//12
		titles.add("SEGMENT10");	//13
		titles.add("创建日期");	//14
		titles.add("创建人");	//15
		titles.add("修改日期");	//16
		titles.add("修改人");	//17
		dataMap.put("titles", titles);
		List<PageData> varOList = organizationinfoService.listAll(pd);
		List<PageData> varList = new ArrayList<PageData>();
		for(int i=0;i<varOList.size();i++){
			PageData vpd = new PageData();
			vpd.put("var1", varOList.get(i).getString("ORGANIZATION_ID"));	    //1
			vpd.put("var2", varOList.get(i).getString("ORGANIZATION_NAME"));	    //2
			vpd.put("var3", varOList.get(i).get("AVAILABILITY").toString());	//3
			vpd.put("var4", varOList.get(i).getString("SEGMENT1"));	    //4
			vpd.put("var5", varOList.get(i).getString("SEGMENT2"));	    //5
			vpd.put("var6", varOList.get(i).getString("SEGMENT3"));	    //6
			vpd.put("var7", varOList.get(i).getString("SEGMENT4"));	    //7
			vpd.put("var8", varOList.get(i).getString("SEGMENT5"));	    //8
			vpd.put("var9", varOList.get(i).getString("SEGMENT6"));	    //9
			vpd.put("var10", varOList.get(i).getString("SEGMENT7"));	    //10
			vpd.put("var11", varOList.get(i).getString("SEGMENT8"));	    //11
			vpd.put("var12", varOList.get(i).getString("SEGMENT9"));	    //12
			vpd.put("var13", varOList.get(i).getString("SEGMENT10"));	    //13
			vpd.put("var14", varOList.get(i).getString("CREATION_DATE"));	    //14
			vpd.put("var15", varOList.get(i).getString("CREATION_BY"));	    //15
			vpd.put("var16", varOList.get(i).getString("LAST_UPDATE_DATE"));	    //16
			vpd.put("var17", varOList.get(i).getString("LAST_UPDATE_BY"));	    //17
			varList.add(vpd);
		}
		dataMap.put("varList", varList);
		ObjectExcelView erv = new ObjectExcelView();
		mv = new ModelAndView(erv,dataMap);
		return mv;
	}
	
	@InitBinder
	public void initBinder(WebDataBinder binder){
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
	}
}

/wxapp/src/main/webapp/WEB-INF/jsp/cms/organizationinfo/organizationinfo_add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html lang="en">
	<head>
	<base href="<%=basePath%>">
	<!-- 下拉框 -->
	<link rel="stylesheet" href="static/ace/css/chosen.css" />
	<!-- jsp文件头和头部 -->
	<%@ include file="../../system/index/top.jsp"%>
		<script type="text/javascript" src="static/js/jquery-1.7.2.js"></script>
	<!-- 日期框 -->
	<link rel="stylesheet" href="static/ace/css/datepicker.css" />
	
	<!-- 树形下拉框start -->
	<script type="text/javascript" src="plugins/selectZtree/selectTree.js"></script>
	<script type="text/javascript" src="plugins/selectZtree/framework.js"></script>
	<link rel="stylesheet" type="text/css" href="plugins/selectZtree/import_fh.css"/>
	<script type="text/javascript" src="plugins/selectZtree/ztree/ztree.js"></script>
	<link type="text/css" rel="stylesheet" href="plugins/selectZtree/ztree/ztree.css"></link>
	<!-- 树形下拉框end -->
</head>
<body class="no-skin">
<!-- /section:basics/navbar.layout -->
<div class="main-container" id="main-container">
	<!-- /section:basics/sidebar -->
	<div class="main-content">
		<div class="main-content-inner">
			<div class="page-content">
				<div class="row">
					<div class="col-xs-12">
					
					<form action="organizationinfo/${msg }.do" name="Form" id="Form" method="post">
						<input type="hidden" name="ORGANIZATIONINFO_ID" id="ORGANIZATIONINFO_ID" value="${pd.ORGANIZATIONINFO_ID}"/>
						
						<div id="zhongxin" style="padding-top: 13px;">
						<table id="table_report" class="table table-striped table-bordered table-hover">
						<tr>
								<td style="width:75px;text-align: right;padding-top: 13px;">组织名称:</td>
								<td>
									<div class="selectTree" id="selectTree"></div>
									<input type="hidden" name="ORGANIZATION_ID" id="ORGANIZATION_ID" value="${pd.ORGANIZATION_ID}" maxlength="255" placeholder="这里输入调度员所属部门" title="调度员所属部门" style="width:98%;"/>
									<input type="text" name="ORGANIZATION_NAME" id="ORGANIZATION_NAME" value="${pd.ORGANIZATION_NAME}" maxlength="255" placeholder="这里输入调度员所属部门" title="调度员所属部门" style="width:98%;"/>
								</td>
						</tr>
						<%-- 	<tr>
								<td style="width:75px;text-align: right;padding-top: 13px;">组织名称:</td>
								<td><input type="text" name="ORGANIZATION_NAME" id="ORGANIZATION_NAME" value="${pd.ORGANIZATION_NAME}" maxlength="255" placeholder="这里输入组织名称" title="组织名称" style="width:98%;"/></td>
							</tr> --%>
							<tr>
								<td style="width:75px;text-align: right;padding-top: 13px;">有效性:</td>
								<td>	<select name="AVAILABILITY" id="AVAILABILITY"  value="${pd.AVAILABILITY}"style="width:98%;">
										<option value="1" <c:if test="${pd.AVAILABILITY == '1'}">selected</c:if>>启用</option>
										<option value="0" <c:if test="${pd.AVAILABILITY == '0'}">selected</c:if>>禁用</option>
									</select></td>
								
								
							</tr>
							<tr>
								<td style="text-align: center;" colspan="10">
									<a class="btn btn-mini btn-primary" onclick="save();">保存</a>
									<a class="btn btn-mini btn-danger" onclick="top.Dialog.close();">取消</a>
								</td>
							</tr>
						</table>
						</div>
						<div id="zhongxin2" class="center" style="display:none"><br/><br/><br/><br/><br/><img src="static/images/jiazai.gif" /><br/><h4 class="lighter block green">提交中...</h4></div>
					</form>
					</div>
					<!-- /.col -->
				</div>
				<!-- /.row -->
			</div>
			<!-- /.page-content -->
		</div>
	</div>
	<!-- /.main-content -->
</div>
<!-- /.main-container -->


	<!-- 页面底部js¨ -->
	<%@ include file="../../system/index/foot.jsp"%>
	<!-- 下拉框 -->
	<script src="static/ace/js/chosen.jquery.js"></script>
	<!-- 日期框 -->
	<script src="static/ace/js/date-time/bootstrap-datepicker.js"></script>
	<!--提示框-->
	<script type="text/javascript" src="static/js/jquery.tips.js"></script>
		<script type="text/javascript">
		$(top.hangge());
		//保存
		function save(){
	 		if($("#ORGANIZATION_NAME").val()==""){
				$("#ORGANIZATION_NAME").tips({
					side:3,
		            msg:'请输入组织名称',
		            bg:'#AE81FF',
		            time:2
		        });
				$("#ORGANIZATION_NAME").focus();
			return false;
			} 
			if($("#AVAILABILITY").val()==""){
				$("#AVAILABILITY").tips({
					side:3,
		            msg:'请输入有效性',
		            bg:'#AE81FF',
		            time:2
		        });
				$("#AVAILABILITY").focus();
			return false;
			}
			$("#Form").submit();
			$("#zhongxin").hide();
			$("#zhongxin2").show();
		}
		
		//组织下拉树
		var defaultNodes = {"treeNodes":${zTreeNodes}};
		function initComplete(){
			//绑定change事件
			$("#selectTree").bind("change",function(){
				if(!$(this).attr("relValue")){
			      //  top.Dialog.alert("没有选择节点");
			    }else{
					//alert("选中节点文本:"+$(this).attr("relText")+"<br/>选中节点值:"+$(this).attr("relValue"));
					$("#ORGANIZATIONINFO_ID").val($(this).attr("relValue"));
					$("#ORGANIZATION_NAME").val($(this).attr("relText"));
			    }
			});
			//赋给data属性
			$("#selectTree").data("data",defaultNodes);  
			$("#selectTree").render();
			$("#selectTree2_input").val("${null==depname?'请选择':depname}");
		}
		
		$(function() {
			//日期框
			$('.date-picker').datepicker({autoclose: true,todayHighlight: true});
		});
		</script>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值