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>