Package org.g4studio.system.admin.service.impl

Source Code of org.g4studio.system.admin.service.impl.OrganizationServiceImpl

package org.g4studio.system.admin.service.impl;

import java.util.List;

import org.g4studio.common.service.impl.BaseServiceImpl;
import org.g4studio.core.json.JsonHelper;
import org.g4studio.core.metatype.Dto;
import org.g4studio.core.metatype.impl.BaseDto;
import org.g4studio.core.util.G4Utils;
import org.g4studio.system.admin.service.OrganizationService;
import org.g4studio.system.common.dao.vo.UserInfoVo;
import org.g4studio.system.common.util.SystemConstants;
import org.g4studio.system.common.util.idgenerator.IdGenerator;

/**
* 组织机构模型业务实现类
*
* @author XiongChun
* @since 2010-01-13
*/
public class OrganizationServiceImpl extends BaseServiceImpl implements OrganizationService {

  /**
   * 获取用户信息
   *
   * @param pDto
   * @return
   */
  public Dto getUserInfo(Dto pDto) {
    Dto outDto = new BaseDto();
    pDto.put("lock", SystemConstants.LOCK_N);
    pDto.put("enabled", SystemConstants.ENABLED_Y);
    UserInfoVo userInfo = (UserInfoVo) g4Dao.queryForObject("Organization.getUserInfo", pDto);
    outDto.put("userInfo", userInfo);
    return outDto;
  }

  /**
   * 查询部门信息生成部门树
   *
   * @param pDto
   * @return
   */
  public Dto queryDeptItems(Dto pDto) {
    Dto outDto = new BaseDto();
    List deptList = g4Dao.queryForList("Organization.queryDeptItemsByDto", pDto);
    Dto deptDto = new BaseDto();
    for (int i = 0; i < deptList.size(); i++) {
      deptDto = (BaseDto) deptList.get(i);
      if (deptDto.getAsString("leaf").equals(SystemConstants.LEAF_Y))
        deptDto.put("leaf", new Boolean(true));
      else
        deptDto.put("leaf", new Boolean(false));
      if (deptDto.getAsString("id").length() == 6)
        deptDto.put("expanded", new Boolean(true));
    }
    outDto.put("jsonString", JsonHelper.encodeObject2Json(deptList));
    return outDto;
  }

  /**
   * 保存部门
   *
   * @param pDto
   * @return
   */
  public synchronized Dto saveDeptItem(Dto pDto) {
    String deptid = IdGenerator.getDeptIdGenerator(pDto.getAsString("parentid"));
    pDto.put("deptid", deptid);
    pDto.put("leaf", SystemConstants.LEAF_Y);
    // MYSQL下int类型字段不能插入空字符
    pDto.put("sortno",
        G4Utils.isEmpty(pDto.getAsString("sortno")) ? Integer.valueOf("0") : pDto.getAsString("sortno"));
    pDto.put("enabled", SystemConstants.ENABLED_Y);
    g4Dao.insert("Organization.saveDeptItem", pDto);
    Dto updateDto = new BaseDto();
    updateDto.put("deptid", pDto.getAsString("parentid"));
    updateDto.put("leaf", SystemConstants.LEAF_N);
    g4Dao.update("Organization.updateLeafFieldInEaDept", updateDto);
    return null;
  }

  /**
   * 修改部门
   *
   * @param pDto
   * @return
   */
  public Dto updateDeptItem(Dto pDto) {
    if (G4Utils.isEmpty(pDto.getAsString("sortno"))) {
      pDto.put("sortno", "0");
    }
    if (pDto.getAsString("parentid").equals(pDto.getAsString("parentid_old"))) {
      pDto.remove("parentid");
      g4Dao.update("Organization.updateDeptItem", pDto);
    } else {
      g4Dao.update("Organization.updateEadeptItem", pDto);
      saveDeptItem(pDto);
      pDto.put("parentid", pDto.getAsString("parentid_old"));
      updateLeafOfDeletedParent(pDto);
    }
    return null;
  }

  /**
   * 调整被删除部门的直系父级部门的Leaf属性
   *
   * @param pDto
   */
  private void updateLeafOfDeletedParent(Dto pDto) {
    String parentid = pDto.getAsString("parentid");
    pDto.put("deptid", parentid);
    Integer countInteger = (Integer) g4Dao.queryForObject("Organization.prepareChangeLeafOfDeletedParentForEadept", pDto);
    if (countInteger.intValue() == 0) {
      pDto.put("leaf", SystemConstants.LEAF_Y);
    } else {
      pDto.put("leaf", SystemConstants.LEAF_N);
    }
    g4Dao.update("Organization.updateLeafFieldInEaDept", pDto);
  }

  /**
   * 删除部门项
   *
   * @param pDto
   * @return
   */
  public Dto deleteDeptItems(Dto pDto) {
    Dto dto = new BaseDto();
    if (pDto.getAsString("type").equals("1")) {
      // 列表复选删除
      String[] arrChecked = pDto.getAsString("strChecked").split(",");
      for (int i = 0; i < arrChecked.length; i++) {
        dto.put("deptid", arrChecked[i]);
        deleteDept(dto);
      }
    } else {
      // 部门树右键删除
      dto.put("deptid", pDto.getAsString("deptid"));
      deleteDept(dto);
    }
    return null;
  }

  /**
   * 删除部门 类内部调用
   *
   * @param pDto
   */
  private void deleteDept(Dto pDto) {
    Dto changeLeafDto = new BaseDto();
    Dto tempDto = (BaseDto) g4Dao.queryForObject("Organization.queryDeptItemsByDto", pDto);
    if (G4Utils.isNotEmpty(tempDto)) {
      changeLeafDto.put("parentid", tempDto.getAsString("parentid"));
    }
    g4Dao.delete("Organization.deleteEaroleAuthorizeInDeptManage", pDto);
    g4Dao.delete("Organization.deleteEaroleInDeptManage", pDto);
    g4Dao.delete("Organization.deleteEauserauthorizeInDeptManage", pDto);
    g4Dao.delete("Organization.deleteEauserauthorizeInDeptManage2", pDto);
    g4Dao.delete("Organization.deleteEausermenumapInDeptManage", pDto);
    g4Dao.delete("Organization.deleteEausersubinfoInDeptManage", pDto);
    g4Dao.delete("Organization.deleteEausermenumapInDeptManage", pDto);
    g4Dao.delete("Organization.deleteEarolemenumapInDeptManage", pDto);
    g4Dao.update("Organization.updateEauserInDeptManage", pDto);
    g4Dao.update("Organization.updateEadeptItem", pDto);
    if (G4Utils.isNotEmpty(tempDto)) {
      updateLeafOfDeletedParent(changeLeafDto);
    }
  }

  /**
   * 根据用户所属部门编号查询部门对象<br>
   * 用于构造组织机构树的根节点
   *
   * @param
   * @return
   */
  public Dto queryDeptinfoByDeptid(Dto pDto) {
    Dto outDto = new BaseDto();
    outDto.putAll((BaseDto) g4Dao.queryForObject("Organization.queryDeptinfoByDeptid", pDto));
    outDto.put("success", new Boolean(true));
    return outDto;
  }

  /**
   * 保存用户主题信息
   *
   * @param pDto
   */
  public Dto saveUserTheme(Dto pDto) {
    Dto outDto = new BaseDto();
    g4Dao.update("Organization.saveUserTheme", pDto);
    outDto.put("success", new Boolean(true));
    return outDto;
  }
 
  /**
   * 保存用户布局信息
   *
   * @param pDto
   */
  public Dto saveUserLayout(Dto pDto) {
    Dto outDto = new BaseDto();
    g4Dao.update("Organization.saveUserLayout", pDto);
    outDto.put("success", new Boolean(true));
    return outDto;
  }
 
  /**
   * 保存用户自定义桌面背景
   *
   * @param pDto
   */
  public Dto saveUserBackground(Dto pDto) {
    Dto outDto = new BaseDto();
    g4Dao.update("Organization.saveUserBackground", pDto);
    outDto.put("success", new Boolean(true));
    return outDto;
  }

}
TOP

Related Classes of org.g4studio.system.admin.service.impl.OrganizationServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.