Java tutorial
/** * Copyright © 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.itrus.ca.modules.sys.service; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.hibernate.Query; 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.data.jpa.repository.Modifying; import org.springframework.scheduling.quartz.AdaptableJobFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.itrus.ca.common.persistence.DataEntity; import com.itrus.ca.common.persistence.Page; import com.itrus.ca.common.service.BaseService; import com.itrus.ca.common.utils.EscapeUtil; import com.itrus.ca.modules.sys.dao.OfficeDao; import com.itrus.ca.modules.sys.dao.RoleDao; import com.itrus.ca.modules.sys.dao.UserDao; import com.itrus.ca.modules.sys.entity.Office; import com.itrus.ca.modules.sys.entity.Role; import com.itrus.ca.modules.sys.entity.User; import com.itrus.ca.modules.sys.utils.UserUtils; /** * Service * @author ThinkGem * @version 2013-5-29 */ @Service @Transactional(readOnly = true) public class OfficeService extends BaseService { @Autowired private OfficeDao officeDao; @Autowired private UserDao userDao; @Autowired private RoleDao roleDao; public Office get(Long id) { return officeDao.findOne(id); } public List<Office> findAll() { return UserUtils.getOfficeList(); } public List<Office> findall() { return (List<Office>) officeDao.findAll(); } /** * ?? * @Title: find * @Description: TODO(????) * @param @param page * @param @param office * @param @return * @return Page<Office> * @throws */ public Page<Office> find(Page<Office> page, Office office) { User user = UserUtils.getUser(); DetachedCriteria dc = officeDao.createDetachedCriteria(); if (StringUtils.isNotEmpty(office.getName())) { dc.add(Restrictions.like("name", "%" + EscapeUtil.escapeLike(office.getName()) + "%")); } dc.add(Restrictions.eq("delFlag", DataEntity.DEL_FLAG_NORMAL)); Office off = new Office(); off.setId(1L); dc.add(Restrictions.eq("parent", off)); //dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL)); dc.add(Restrictions.ne("id", 34L)); dc.addOrder(Order.asc("code")); dc.addOrder(Order.desc("id")); return officeDao.find(page, dc); } /** * ? * ?del * @Title: findByDel * @Description: TODO(????) * @param @param page * @param @param office * @param @return * @return Page<Office> * @throws */ public Page<Office> findByDel(Page<Office> page, Office office) { User user = UserUtils.getUser(); DetachedCriteria dc = officeDao.createDetachedCriteria(); if (StringUtils.isNotEmpty(office.getName())) { dc.add(Restrictions.like("name", "%" + EscapeUtil.escapeLike(office.getName()) + "%")); } Office off = new Office(); off.setId(1L); dc.add(Restrictions.ne("parent", off)); dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL)); dc.add(Restrictions.ne("id", 34L)); dc.addOrder(Order.asc("code")); dc.addOrder(Order.desc("id")); return officeDao.find(page, dc); } /** * * @param office * @return */ public List<Office> findAllByDel(Office office) { User user = UserUtils.getUser(); DetachedCriteria dc = officeDao.createDetachedCriteria(); if (StringUtils.isNotEmpty(office.getName())) { dc.add(Restrictions.like("name", "%" + EscapeUtil.escapeLike(office.getName()) + "%")); } Office off = new Office(); off.setId(1L); dc.add(Restrictions.ne("parent", off)); dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL)); dc.add(Restrictions.ne("id", 34L)); dc.addOrder(Order.asc("code")); dc.addOrder(Order.desc("id")); return officeDao.find(dc); } public Page<Office> findOffice(Page<Office> page, Office office) { User user = UserUtils.getUser(); DetachedCriteria dc = officeDao.createDetachedCriteria(); // if (StringUtils.isNotEmpty(office.getName())){ // dc.add(Restrictions.like("name", "%"+EscapeUtil.escapeLike(office.getName())+"%")); // } dc.add(Restrictions.eq("areaName", office.getName())); dc.add(Restrictions.eq("parent", office)); //dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL)); dc.add(Restrictions.ne("id", 34L)); dc.addOrder(Order.asc("code")); dc.addOrder(Order.desc("id")); return officeDao.find(page, dc); } public List<Office> find(Long areaId) { User user = UserUtils.getUser(); DetachedCriteria dc = officeDao.createDetachedCriteria(); if (StringUtils.isNotEmpty(areaId.toString())) { dc.add(Restrictions.eq("area.id", areaId)); } dc.add(dataScopeFilter(user, dc.getAlias(), "")); dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL)); dc.addOrder(Order.asc("code")); dc.addOrder(Order.desc("id")); return officeDao.find(dc); } public List<Office> findByParentId(Long areaId) { DetachedCriteria dc = officeDao.createDetachedCriteria(); if (areaId == null) { return null; } if (areaId != null) { if (StringUtils.isNotEmpty(areaId.toString())) { dc.add(Restrictions.eq("parent.id", areaId)); } else { return null; } } dc.add(Restrictions.neOrIsNotNull("type", "1")); dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL)); dc.addOrder(Order.asc("code")); dc.addOrder(Order.desc("id")); return officeDao.find(dc); } public List<Office> findByParentIds(List<Long> areaIds) { DetachedCriteria dc = officeDao.createDetachedCriteria(); if (areaIds == null) { return null; } if (areaIds != null) { if (StringUtils.isNotEmpty(areaIds.toString())) { dc.add(Restrictions.in("parent.id", areaIds)); } else { return null; } } dc.add(Restrictions.neOrIsNotNull("type", "1")); dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL)); dc.addOrder(Order.asc("code")); dc.addOrder(Order.desc("id")); return officeDao.find(dc); } public List<Long> findOfficeIdsByParentId(Long areaId) { return officeDao.findOfficeIdsByParentId(areaId); } /** * ? * @Title: findOfficesByParentId * @Description: TODO(????) * @param @param areaId * @param @return * @return List<Office> * @throws */ public List<Office> findOfficesByParentId(Long areaId) { DetachedCriteria dc = officeDao.createDetachedCriteria(); if (StringUtils.isNotEmpty(areaId.toString())) { dc.add(Restrictions.eq("parent.id", areaId)); } dc.add(Restrictions.eq("type", "2")); dc.addOrder(Order.asc("code")); dc.addOrder(Order.desc("id")); return officeDao.find(dc); } public List<Office> findByParentId(Long areaId, Integer type) { DetachedCriteria dc = officeDao.createDetachedCriteria(); if (StringUtils.isNotEmpty(areaId.toString())) { dc.add(Restrictions.eq("parent.id", areaId)); } dc.add(Restrictions.eq("type", String.valueOf(type))); dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL)); dc.addOrder(Order.asc("code")); dc.addOrder(Order.desc("id")); return officeDao.find(dc); } public List<Office> findByIds(Page<Office> page, List<Long> officeIds) { DetachedCriteria dc = officeDao.createDetachedCriteria(); if (officeIds.size() > 0) { dc.add(Restrictions.in("id", officeIds)); } dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL)); dc.addOrder(Order.asc("code")); dc.addOrder(Order.desc("id")); return officeDao.find(dc); } public Office findById(Long officeId) { return officeDao.findOne(officeId); } @Transactional(readOnly = false) public void save(Office office) { officeDao.save(office); } @Transactional(readOnly = false) public void delete(Long id) { officeDao.deleteById(id); //UserUtils.removeCache(UserUtils.CACHE_OFFICE_LIST); } public void deleteL(Office office) { officeDao.deleteById(office.getId()); } @Transactional(readOnly = false) public List<Office> findAllByidNotInRaletion() { return officeDao.findAllByIdNotInRelation(); } @Transactional(readOnly = false) public List<Office> findAllByid(Long id) { return officeDao.findAllById(id); } @Transactional(readOnly = false) public List<Office> findByAgentId(Long id) { return officeDao.findByAgentId(id); } public List<Office> selectAreaList() { return officeDao.selectAreaList(); } public void updateOffice(Office off, Long id, String name, String name2, String name3, String name4) { officeDao.updateOffice(off, id, name, name2, name3, name4); } /** * ?(1)or(2) * @param user * @param type * @return */ public List<Office> getOfficeByType(User user, Integer type) { if (!user.isAdmin()) { List<Role> roles = user.getRoleList(); List<Office> result = new ArrayList<Office>(); Office area = user.getCompany(); Office office = user.getOffice(); for (Role r : roles) { if (Role.DATA_SCOPE_ALL.equals(r.getDataScope())) { return UserUtils.getOfficeList(type); } else if (Role.DATA_SCOPE_COMPANY_AND_CHILD.equals(r.getDataScope())) {//? if (type == 1) {// if (area.getId() == 1L) {//?CA result.add(user.getCompany()); result.addAll(findByParentId(area.getId(), type)); return result; } else { result.add(area); } } else {// if (area.getId() == 1L) { return UserUtils.getOfficeList(type);// } else {//?? result.addAll(findByParentId(area.getId(), type));// ?office } } } else if (Role.DATA_SCOPE_COMPANY.equals(r.getDataScope())) {//? if (type == 1) {// result.add(area); } else {// result.add(office); } } else if (Role.DATA_SCOPE_OFFICE_AND_CHILD.equals(r.getDataScope())) {//?? if (type == 1) {// result.add(area); } else {// result.add(office); } } else if (Role.DATA_SCOPE_OFFICE.equals(r.getDataScope())) {//? if (type == 1) {// result.add(area); } else {// result.add(office); } } else if (Role.DATA_SCOPE_SELF.equals(r.getDataScope())) {//? if (type == 1) {// result.add(area); } else {// result.add(office); } } else if (Role.DATA_SCOPE_CUSTOM.equals(r.getDataScope())) {// List<Office> offices = r.getOfficeList(); for (Office o : offices) { if (o.getType().equals(type.toString())) { result.add(o); } } } } //? List<Office> signleResultList = new ArrayList<Office>(); for (Office r : result) { if (signleResultList.contains(r)) { continue; } signleResultList.add(r); } return signleResultList; } else { return UserUtils.getOfficeList(type); } } public List<Office> selectArea(String areaName) { DetachedCriteria dc = officeDao.createDetachedCriteria(); dc.add(Restrictions.eq("name", areaName)); dc.add(Restrictions.eq(Office.DEL_FLAG, Office.DEL_FLAG_NORMAL)); return officeDao.find(dc); } @Transactional(readOnly = false) public List<Office> getOfficeList(Integer type) { List<Office> officeList = null; //User user = getUser(); DetachedCriteria dc = officeDao.createDetachedCriteria(); //dc.add(dataScopeFilter(user, dc.getAlias(), "")); dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL)); dc.add(Restrictions.eq("type", type.toString())); dc.addOrder(Order.asc("code")); officeList = officeDao.find(dc); return officeList; } /** * ?CA * @Title: updateUserByOffice * @Description: TODO(????) * @param @param offices * @param @return * @return boolean * @throws */ public void updateUserByOffice(List<Office> offices) { Office company = new Office(); company.setId(1L); userDao.updateCompany(company, offices); Office office = new Office(); office.setId(34L); userDao.updateOffice(office, offices); } /** * ??truefalse * @Title: findUserByOffice * @Description: TODO(????) * @param @param offices * @param @return * @return boolean * @throws */ public boolean findUserByOffice(List<Office> offices) { List<User> users = userDao.findByOffices(offices); if (users.size() > 0) { return true; } return false; } /** * ??CA * @Title: updateRoleByOffice * @Description: TODO(????) * @param @param offices * @return void * @throws */ public void updateRoleByOffice(List<Office> offices) { Office company = new Office(); company.setId(1L); roleDao.updateOffice(company, offices); } /** * ??? * @Title: deleteRoleOffice * @Description: TODO(????) * @param * @return void * @throws */ public void deleteRoleOffice(List<Office> offices) { for (Office office : offices) { Query query = officeDao .createSqlQuery("delete sys_role_office where office_id = '" + office.getId() + "'"); } } public boolean findRoleByOffice(List<Office> offices) { List<Role> list = roleDao.findByOffice(offices); if (list.size() > 0) { return true; } return false; } }