com.thinkgem.jeesite.modules.pms.service.CompanyService.java Source code

Java tutorial

Introduction

Here is the source code for com.thinkgem.jeesite.modules.pms.service.CompanyService.java

Source

/**
 * Copyright &copy; 2012-2013 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 */
package com.thinkgem.jeesite.modules.pms.service;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.google.common.collect.Lists;
import com.thinkgem.jeesite.common.persistence.Page;
import com.thinkgem.jeesite.common.service.BaseService;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.pms.entity.Community;
import com.thinkgem.jeesite.modules.pms.entity.Device;
import com.thinkgem.jeesite.modules.sys.dao.OfficeDao;
import com.thinkgem.jeesite.modules.sys.entity.Office;
import com.thinkgem.jeesite.modules.sys.entity.User;
import com.thinkgem.jeesite.modules.sys.utils.UserUtils;

/**
 * Service
 * @author ThinkGem
 * @version 2013-5-29
 */
@Service
@Transactional(readOnly = true)
public class CompanyService extends BaseService {

    @Autowired
    private OfficeDao officeDao;

    public Office get(String id) {
        return officeDao.get(id);
    }

    public Page<Office> find(Page<Office> page, Office office) {
        User currentUser = UserUtils.getUser();

        //      System.out.println(">>>>>>>>>>>>>>>>>>>"+ office.getSort());

        DetachedCriteria dc = officeDao.createDetachedCriteria();

        //      if(StringUtils.isBlank(office.getSort())){
        //         dc.add(Restrictions.eq("id", "0"));
        //         return officeDao.find(page, dc);
        //      }else{
        //         if (!currentUser.isAdmin() && office.getSort().equals("1")){
        //            dc.add(Restrictions.eq("id", "0"));
        //         }
        //      }
        //      

        //      dc.createAlias("office", "office");

        if (StringUtils.isNotEmpty(office.getSort())) {
            dc.add(Restrictions.eq("sort", office.getSort()));
        }
        if (StringUtils.isNotEmpty(office.getName())) {
            //         dc.add(Restrictions.like("name", office.getName()));
            dc.add(Restrictions.like("name", "%" + office.getName() + "%"));
        }

        //      dc.add(dataScopeFilter2(currentUser, "", ""));

        //      System.out.println("dc.getAlias()>>>>>>>>>>>>>>>>>>>"+ dc.getAlias());

        dc.add(dataScopeFilter(UserUtils.getUser(), dc.getAlias(), ""));

        dc.add(Restrictions.eq(office.FIELD_DEL_FLAG, office.DEL_FLAG_NORMAL));
        dc.addOrder(Order.desc("id"));

        //      System.out.println(">>>>>>>>>>>>>>>>>>>"+ dc.);

        return officeDao.find(page, dc);
    }

    public List<Office> findAll() {
        return UserUtils.getOfficeList();

    }

    public List<Office> findCompany(Office office) {

        DetachedCriteria dc = officeDao.createDetachedCriteria();

        if (StringUtils.isNotEmpty(office.getName())) {
            dc.add(Restrictions.like("name", "%" + office.getName() + "%"));
        }

        if (StringUtils.isNotEmpty(office.getSort())) {
            dc.add(Restrictions.eq("sort", office.getSort()));
        }

        if (StringUtils.isNotEmpty(office.getCode())) {
            dc.add(Restrictions.eq("code", office.getCode()));
        }

        dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL));

        return officeDao.find(dc);
    }

    public List<Office> findProCompanyList() {
        //       Office office = new Office();
        //        office.setSort("1");
        //      return  this.findCompany(office);
        List<Office> newList = Lists.newArrayList();
        List<Office> ls = UserUtils.getOfficeList();
        for (Office o : ls) {
            if ("1".equals(o.getSort()))
                newList.add(o);
        }
        return newList;
    }

    public Office findCompanyById(String companyId) {
        Office office = new Office();
        List<Office> ls = UserUtils.getOfficeList();
        for (Office o : ls) {
            if (companyId.equals(o.getId()))
                office = o;
        }
        return office;
    }

    @Transactional(readOnly = false)
    public void save(Office office) {
        office.setParent(this.get(office.getParent().getId()));
        String oldParentIds = office.getParentIds(); // ??parentIds?parentIds
        office.setParentIds(office.getParent().getParentIds() + office.getParent().getId() + ",");
        officeDao.clear();
        officeDao.save(office);

        // ? parentIds
        List<Office> list = officeDao.findByParentIdsLike("%," + office.getId() + ",%");
        for (Office e : list) {
            e.setParentIds(e.getParentIds().replace(oldParentIds, office.getParentIds()));
        }
        officeDao.save(list);
        UserUtils.removeCache(UserUtils.CACHE_OFFICE_LIST);
    }

    @Transactional(readOnly = false)
    public void delete(String id) {
        officeDao.deleteById(id, "%," + id + ",%");
        UserUtils.removeCache(UserUtils.CACHE_OFFICE_LIST);
    }

}