package com.norteksoft.acs.service.sale;
import java.util.Date;
import java.util.List;
import org.hibernate.SessionFactory;
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.norteksoft.acs.base.orm.hibernate.SimpleHibernateTemplate;
import com.norteksoft.acs.dao.authority.ConditionDao;
import com.norteksoft.acs.dao.authority.DataRuleDao;
import com.norteksoft.acs.dao.authority.PermissionDao;
import com.norteksoft.acs.dao.authority.PermissionItemConditionDao;
import com.norteksoft.acs.dao.authority.PermissionItemDao;
import com.norteksoft.acs.entity.authorization.BranchAuthority;
import com.norteksoft.acs.entity.authorization.Role;
import com.norteksoft.acs.entity.authorization.RoleDepartment;
import com.norteksoft.acs.entity.authorization.RoleFunction;
import com.norteksoft.acs.entity.authorization.RoleUser;
import com.norteksoft.acs.entity.authorization.RoleWorkgroup;
import com.norteksoft.acs.entity.log.Log;
import com.norteksoft.acs.entity.log.LoginLog;
import com.norteksoft.acs.entity.organization.Company;
import com.norteksoft.acs.entity.organization.Department;
import com.norteksoft.acs.entity.organization.DepartmentUser;
import com.norteksoft.acs.entity.organization.MailDeploy;
import com.norteksoft.acs.entity.organization.User;
import com.norteksoft.acs.entity.organization.UserInfo;
import com.norteksoft.acs.entity.organization.Workgroup;
import com.norteksoft.acs.entity.organization.WorkgroupUser;
import com.norteksoft.acs.entity.sale.Subsciber;
import com.norteksoft.acs.entity.sale.SubsciberPricePolicy;
import com.norteksoft.acs.entity.sale.SubscriberItem;
import com.norteksoft.acs.entity.sale.Tenant;
import com.norteksoft.acs.entity.sysSetting.SecuritySetting;
import com.norteksoft.acs.entity.sysSetting.ServerConfig;
import com.norteksoft.bs.holiday.dao.HolidayDao;
import com.norteksoft.bs.options.dao.CornInfoDao;
import com.norteksoft.bs.options.dao.ImportColumnDao;
import com.norteksoft.bs.options.dao.ImportDefinitionDao;
import com.norteksoft.bs.options.dao.InternationDao;
import com.norteksoft.bs.options.dao.InternationOptionDao;
import com.norteksoft.bs.options.dao.JobInfoDao;
import com.norteksoft.bs.options.dao.OptionDao;
import com.norteksoft.bs.options.dao.OptionGroupDao;
import com.norteksoft.bs.rank.dao.RankDao;
import com.norteksoft.bs.rank.dao.RankUserDao;
import com.norteksoft.bs.signature.dao.SignatureDao;
import com.norteksoft.mms.form.dao.DataTableDao;
import com.norteksoft.mms.form.dao.FormAttachmentDao;
import com.norteksoft.mms.form.dao.FormViewDao;
import com.norteksoft.mms.form.dao.GenerateSettingDao;
import com.norteksoft.mms.form.dao.GroupHeaderDao;
import com.norteksoft.mms.form.dao.JqGridPropertyDao;
import com.norteksoft.mms.form.dao.ListColumnDao;
import com.norteksoft.mms.form.dao.TableColumnDao;
import com.norteksoft.mms.module.dao.ButtonDao;
import com.norteksoft.mms.module.dao.MenuDao;
import com.norteksoft.mms.module.dao.ModulePageDao;
import com.norteksoft.mms.module.dao.OperationDao;
import com.norteksoft.portal.dao.BaseSettingDao;
import com.norteksoft.portal.dao.MessageInfoDao;
import com.norteksoft.portal.dao.ThemeDao;
import com.norteksoft.portal.dao.UserThemeDao;
import com.norteksoft.portal.dao.WebpageDao;
import com.norteksoft.portal.dao.WidgetConfigDao;
import com.norteksoft.portal.dao.WidgetDao;
import com.norteksoft.portal.dao.WidgetParameterDao;
import com.norteksoft.portal.dao.WidgetParameterValueDao;
import com.norteksoft.portal.dao.WidgetRoleDao;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.util.ContextUtils;
import com.norteksoft.product.util.Md5;
import com.norteksoft.task.dao.HistoryWorkflowTaskDao;
import com.norteksoft.task.dao.TaskDao;
import com.norteksoft.task.dao.WorkflowTaskDao;
import com.norteksoft.wf.engine.dao.DataDictionaryDao;
import com.norteksoft.wf.engine.dao.DataDictionaryProcessDao;
import com.norteksoft.wf.engine.dao.DataDictionaryTypeDao;
import com.norteksoft.wf.engine.dao.DataDictionaryUserDao;
import com.norteksoft.wf.engine.dao.DelegateMainDao;
import com.norteksoft.wf.engine.dao.DocumentFileDao;
import com.norteksoft.wf.engine.dao.DocumentTemplateDao;
import com.norteksoft.wf.engine.dao.DocumentTemplateFileDao;
import com.norteksoft.wf.engine.dao.HistoryInstanceHistoryDao;
import com.norteksoft.wf.engine.dao.HistoryOpinionDao;
import com.norteksoft.wf.engine.dao.HistoryWorkflowInstanceDao;
import com.norteksoft.wf.engine.dao.InstanceHistoryDao;
import com.norteksoft.wf.engine.dao.OfficeDao;
import com.norteksoft.wf.engine.dao.OpinionDao;
import com.norteksoft.wf.engine.dao.WorkflowAttachmentDao;
import com.norteksoft.wf.engine.dao.WorkflowAttachmentFileDao;
import com.norteksoft.wf.engine.dao.WorkflowDefinitionDao;
import com.norteksoft.wf.engine.dao.WorkflowDefinitionFileDao;
import com.norteksoft.wf.engine.dao.WorkflowDefinitionTemplateDao;
import com.norteksoft.wf.engine.dao.WorkflowDefinitionTemplateFileDao;
import com.norteksoft.wf.engine.dao.WorkflowInstanceDao;
import com.norteksoft.wf.engine.dao.WorkflowTypeDao;
/**
* 租户管理
*
*/
@Service
@Transactional
public class TenantManager{
private static final String systemAdminCode = "systemAdmin";
private static final String securityAdminCode = "securityAdmin";
private static final String auditAdminCode = "auditAdmin";
private static final String systemAdminRoleCode = "SystemAdmin";
private static final String securityAdminRoleCode = "SecurityAdmin";
private static final String auditAdminRoleCode = "AuditAdmin";
private static final String FORM_MANAGER = "form_manager";
private static final String TYPE_MANAGER = "type_manager";
private static final String OPTIONS_MANAGER = "options_manager";
private static final String MODUEL_MANAGER = "moduel_manager";
private static final String MMS_COMMON_ROLE = "mms_common_role";
private static final String PORTAL_COMMON_USER = "portalCommonUser";
private static final String WF_COMMONS="wfCommons";
private static final String WORKFLOW_MANAGER="workflowManager";
private static final String BS_COMMON="common_user";//基础设置权限
private SimpleHibernateTemplate<Tenant, Long> tenantDao;
private SimpleHibernateTemplate<Company, Long> companyDao;
private SimpleHibernateTemplate<MailDeploy, Long> mailDeployDao;
private SimpleHibernateTemplate<Subsciber, Long> subsciberDao;
private SimpleHibernateTemplate<UserInfo, Long> userInfoDao;
private SimpleHibernateTemplate<User, Long> userDao;
private SimpleHibernateTemplate<RoleUser, Long> roleUserDao;
private SimpleHibernateTemplate<DepartmentUser, Long> departmentUserDao;
private SimpleHibernateTemplate<WorkgroupUser, Long> workgroupUserDao;
private SimpleHibernateTemplate<RoleDepartment, Long> roleDepartmentDao;
private SimpleHibernateTemplate<RoleFunction, Long> roleFunctionDao;
private SimpleHibernateTemplate<RoleWorkgroup, Long> roleWorkgroupDao;
private SimpleHibernateTemplate<Role, Long> roleDao;
private SimpleHibernateTemplate<SubsciberPricePolicy, Long> subsciberPricePolicyDao;
private SimpleHibernateTemplate<ServerConfig, Long> serverConfigDao;
private SimpleHibernateTemplate<BranchAuthority, Long> branchAuthorityDao;
private SimpleHibernateTemplate<Log, Long> logDao;
private SimpleHibernateTemplate<LoginLog, Long> loginLogDao;
private SimpleHibernateTemplate<Department, Long> departmentDao;
private SimpleHibernateTemplate<Workgroup, Long> workgroupDao;
private SimpleHibernateTemplate<SecuritySetting, Long> securitySettingDao;
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
tenantDao = new SimpleHibernateTemplate<Tenant, Long>(sessionFactory, Tenant.class);
companyDao = new SimpleHibernateTemplate<Company, Long>(sessionFactory, Company.class);
mailDeployDao = new SimpleHibernateTemplate<MailDeploy, Long>(sessionFactory, MailDeploy.class);
subsciberDao = new SimpleHibernateTemplate<Subsciber, Long>(sessionFactory, Subsciber.class);
userInfoDao = new SimpleHibernateTemplate<UserInfo, Long>(sessionFactory, UserInfo.class);
userDao = new SimpleHibernateTemplate<User, Long>(sessionFactory, User.class);
roleUserDao = new SimpleHibernateTemplate<RoleUser, Long>(sessionFactory, RoleUser.class);
departmentUserDao = new SimpleHibernateTemplate<DepartmentUser, Long>(sessionFactory, DepartmentUser.class);
workgroupUserDao = new SimpleHibernateTemplate<WorkgroupUser, Long>(sessionFactory, WorkgroupUser.class);
roleDepartmentDao = new SimpleHibernateTemplate<RoleDepartment, Long>(sessionFactory, RoleDepartment.class);
roleFunctionDao = new SimpleHibernateTemplate<RoleFunction, Long>(sessionFactory, RoleFunction.class);
roleWorkgroupDao = new SimpleHibernateTemplate<RoleWorkgroup, Long>(sessionFactory, RoleWorkgroup.class);
roleDao = new SimpleHibernateTemplate<Role, Long>(sessionFactory, Role.class);
subsciberPricePolicyDao = new SimpleHibernateTemplate<SubsciberPricePolicy, Long>(sessionFactory, SubsciberPricePolicy.class);
serverConfigDao = new SimpleHibernateTemplate<ServerConfig, Long>(sessionFactory, ServerConfig.class);
branchAuthorityDao = new SimpleHibernateTemplate<BranchAuthority, Long>(sessionFactory, BranchAuthority.class);
logDao = new SimpleHibernateTemplate<Log, Long>(sessionFactory, Log.class);
loginLogDao = new SimpleHibernateTemplate<LoginLog, Long>(sessionFactory, LoginLog.class);
departmentDao = new SimpleHibernateTemplate<Department, Long>(sessionFactory, Department.class);
securitySettingDao = new SimpleHibernateTemplate<SecuritySetting, Long>(sessionFactory, SecuritySetting.class);
workgroupDao = new SimpleHibernateTemplate<Workgroup, Long>(sessionFactory, Workgroup.class);
}
/*
* 新建订单
*/
@SuppressWarnings("unchecked")
public void saveNewSubsciber(Tenant tenant, Subsciber subsciber, List<Long> priceIds){
//保存订单
subsciber.setTenantId(tenant.getId());
subsciber.setOrderNo(String.valueOf(new Date().getTime()));
subsciberDao.save(subsciber);
String hql="from SubsciberPricePolicy spp where spp.subsciberId=?";
List<SubsciberPricePolicy> s=subsciberPricePolicyDao.find(hql, subsciber.getId());
if(s.size()>0){
for(int i=0;i<s.size();i++){
subsciberPricePolicyDao.delete(s.get(i));
}
}
SubsciberPricePolicy spp = null;
for(Long priceId : priceIds){
spp = new SubsciberPricePolicy();
spp.setPricePolicyId(priceId);
spp.setSubsciberId(subsciber.getId());
subsciberPricePolicyDao.save(spp);
}
}
/*
* 创建用户
*/
private UserInfo createUser(Long compId,String scname, String loginName, String password, String trueName, Date pswdCreateDate){
User user = new User();
user.setSubCompanyName(scname);
user.setCompanyId(compId);
user.setLoginName(loginName);
// user.setPassword(password);
user.setPassword(Md5.toMessageDigest(password));
user.setName(trueName);
userDao.save(user);
UserInfo ui = new UserInfo();
ui.setUser(user);
ui.setCompanyId(compId);
ui.setPasswordUpdatedTime(pswdCreateDate);
userInfoDao.save(ui);
return ui;
}
public void saveTenant(Tenant tenant){
tenantDao.save(tenant);
}
public void deleteTenant(Long id){
Long cid=null;
Tenant tenant = tenantDao.get(id);
//获取公司id
cid=tenant.getCompany().getId();
//删除acs系统相关数据
deleteAcsInfo(cid);
//删除系统元数据相关信息
deleteMmsInfo(cid);
//删除工作流及任务相关信息
deleteWfTaskInfo(cid);
//删除基础设置相关信息
deleteBsInfo(cid);
//删除门户相关信息
deletePortalInfo(cid);
//删除租户Tenant
tenantDao.delete(id);
//删除Company
companyDao.createQuery("delete from Company c where c.companyId=?", cid).executeUpdate();
}
private void deleteAcsInfo(Long companyId){
//删除Condition
ConditionDao conditionDao = (ConditionDao)ContextUtils.getBean("conditionDao");
conditionDao.createQuery("delete from Condition c where c.companyId=?", companyId).executeUpdate();
//删除DataRule
DataRuleDao dataRuleDao = (DataRuleDao)ContextUtils.getBean("dataRuleDao");
dataRuleDao.createQuery("delete from DataRule c where c.companyId=?", companyId).executeUpdate();
//删除Permission
PermissionDao permissionDao = (PermissionDao)ContextUtils.getBean("permissionDao");
permissionDao.createQuery("delete from Permission c where c.companyId=?", companyId).executeUpdate();
//删除PermissionItem
PermissionItemDao permissionItemDao = (PermissionItemDao)ContextUtils.getBean("permissionItemDao");
permissionItemDao.createQuery("delete from PermissionItem c where c.companyId=?", companyId).executeUpdate();
//删除PermissionItemCondition
PermissionItemConditionDao permissionItemConditionDao = (PermissionItemConditionDao)ContextUtils.getBean("permissionItemConditionDao");
permissionItemConditionDao.createQuery("delete from PermissionItemCondition c where c.companyId=?", companyId).executeUpdate();
//删除BranchAuthority
branchAuthorityDao.createQuery("delete from BranchAuthority c where c.companyId=?", companyId).executeUpdate();
//删除Log
logDao.createQuery("delete from Log c where c.companyId=?", companyId).executeUpdate();
//删除LoginLog
loginLogDao.createQuery("delete from LoginLog c where c.companyId=?", companyId).executeUpdate();
//删除部门和角色的中间表
roleDepartmentDao.createQuery("delete from RoleDepartment rd where rd.role.id in (select r.id from Role r where r.companyId=?)",companyId).executeUpdate();
//删除部门和用户的中间表
departmentUserDao.createQuery("delete from DepartmentUser du where du.user.id in (select u.id from User u where u.companyId=?)",companyId).executeUpdate();
//删除Department
departmentDao.createQuery("delete from Department c where c.company.id=?", companyId).executeUpdate();
//删除MailDeploy
mailDeployDao.createQuery("delete from MailDeploy c where c.companyId=?", companyId).executeUpdate();
//删除工作组和角色的中间表
roleWorkgroupDao.createQuery("delete from RoleWorkgroup rw where rw.role.id in (select r.id from Role r where r.companyId=?)",companyId).executeUpdate();
//删除工作组和用户的中间表
workgroupUserDao.createQuery("delete from WorkgroupUser wu where wu.user.id in (select u.id from User u where u.companyId=?)",companyId).executeUpdate();
//删除Workgroup
workgroupDao.createQuery("delete from Workgroup c where c.company.id=?", companyId).executeUpdate();
//删除角色和用户的中间表
roleUserDao.createQuery("delete from RoleUser ru where ru.user.id in (select u.id from User u where u.companyId=?)",companyId).executeUpdate();
//删除管理员用户User和UserInfo
roleUserDao.createQuery("delete from UserInfo ui where ui.user.id in (select u.id from User u where u.companyId=?) and ui.companyId=?",companyId,companyId).executeUpdate();
roleUserDao.createQuery("delete from User u where u.companyId=?",companyId).executeUpdate();
//删除资源和角色的中间表
roleFunctionDao.createQuery("delete from RoleFunction rf where rf.role.id in (select r.id from Role r where r.companyId=?)",companyId).executeUpdate();
//删除角色
roleWorkgroupDao.createQuery("delete from Role r where r.companyId=?",companyId).executeUpdate();
//删除SecuritySetting
securitySettingDao.createQuery("delete from SecuritySetting r where r.companyId=?",companyId).executeUpdate();
//删除ServerConfig
serverConfigDao.createQuery("delete from ServerConfig r where r.companyId=?",companyId).executeUpdate();
}
private void deleteMmsInfo(Long companyId){
//删除菜单
MenuDao menuDao = (MenuDao)ContextUtils.getBean("menuDao");
menuDao.createQuery("delete from Menu c where c.companyId=?", companyId).executeUpdate();
//删除通用类型
OperationDao operationDao = (OperationDao)ContextUtils.getBean("operationDao");
operationDao.createQuery("delete from Operation c where c.companyId=?", companyId).executeUpdate();
//删除按钮
ButtonDao buttonDao = (ButtonDao)ContextUtils.getBean("buttonDao");
buttonDao.createQuery("delete from Button c where c.companyId=?", companyId).executeUpdate();
//删除页面
ModulePageDao modulePageDao = (ModulePageDao)ContextUtils.getBean("modulePageDao");
modulePageDao.createQuery("delete from ModulePage c where c.companyId=?", companyId).executeUpdate();
//删除FormAttachment
FormAttachmentDao formAttachmentDao = (FormAttachmentDao)ContextUtils.getBean("formAttachmentDao");
formAttachmentDao.createQuery("delete from FormAttachment c where c.companyId=?", companyId).executeUpdate();
//删除GroupHeader
GroupHeaderDao groupHeaderDao = (GroupHeaderDao)ContextUtils.getBean("groupHeaderDao");
groupHeaderDao.createQuery("delete from GroupHeader c where c.companyId=?", companyId).executeUpdate();
//删除JqGridProperty
JqGridPropertyDao jqGridPropertyDao = (JqGridPropertyDao)ContextUtils.getBean("jqGridPropertyDao");
jqGridPropertyDao.createQuery("delete from JqGridProperty c where c.companyId=?", companyId).executeUpdate();
//删除ListColumn
ListColumnDao listColumnDao = (ListColumnDao)ContextUtils.getBean("listColumnDao");
listColumnDao.createQuery("delete from ListColumn c where c.companyId=?", companyId).executeUpdate();
//删除TableColumn
TableColumnDao tableColumnDao = (TableColumnDao)ContextUtils.getBean("tableColumnDao");
tableColumnDao.createQuery("delete from TableColumn c where c.companyId=?", companyId).executeUpdate();
//删除列表和表单
FormViewDao formViewDao = (FormViewDao)ContextUtils.getBean("formViewDao");
formViewDao.createQuery("delete from View c where c.companyId=?", companyId).executeUpdate();
//删除GenerateSetting
GenerateSettingDao generateSettingDao = (GenerateSettingDao)ContextUtils.getBean("generateSettingDao");
generateSettingDao.createQuery("delete from GenerateSetting c where c.companyId=?", companyId).executeUpdate();
//删除数据表
DataTableDao dataTableDao = (DataTableDao)ContextUtils.getBean("dataTableDao");
dataTableDao.createQuery("delete from Operation c where c.companyId=?", companyId).executeUpdate();
}
private void deleteWfTaskInfo(Long companyId){
//删除DataDictionaryType
DataDictionaryTypeDao dataDictionaryTypeDao = (DataDictionaryTypeDao)ContextUtils.getBean("dataDictionaryTypeDao");
dataDictionaryTypeDao.createQuery("delete from DataDictionaryType c where c.companyId=?", companyId).executeUpdate();
//删除DataDictionaryUser
DataDictionaryUserDao dataDictionaryUserDao = (DataDictionaryUserDao)ContextUtils.getBean("dataDictionaryUserDao");
dataDictionaryUserDao.createQuery("delete from DataDictionaryUser c where c.companyId=?", companyId).executeUpdate();
//删除DataDictionaryProcess
DataDictionaryProcessDao dataDictionaryProcessDao = (DataDictionaryProcessDao)ContextUtils.getBean("dataDictionaryProcessDao");
dataDictionaryProcessDao.createQuery("delete from DataDictionaryProcess c where c.companyId=?", companyId).executeUpdate();
//删除DataDictionary
DataDictionaryDao dataDictionaryDao = (DataDictionaryDao)ContextUtils.getBean("dataDictionaryDao");
dataDictionaryDao.createQuery("delete from DataDictionary c where c.companyId=?", companyId).executeUpdate();
//删除Document
OfficeDao officeDao = (OfficeDao)ContextUtils.getBean("officeDao");
officeDao.createQuery("delete from Document c where c.companyId=?", companyId).executeUpdate();
//删除DocumentFile
DocumentFileDao documentFileDao = (DocumentFileDao)ContextUtils.getBean("documentFileDao");
documentFileDao.createQuery("delete from DocumentFile c where c.companyId=?", companyId).executeUpdate();
//删除DocumentTemplate
DocumentTemplateDao documentTemplateDao = (DocumentTemplateDao)ContextUtils.getBean("documentTemplateDao");
documentTemplateDao.createQuery("delete from DocumentTemplate c where c.companyId=?", companyId).executeUpdate();
//删除DocumentTemplateFile
DocumentTemplateFileDao documentTemplateFileDao = (DocumentTemplateFileDao)ContextUtils.getBean("documentTemplateFileDao");
documentTemplateFileDao.createQuery("delete from DocumentTemplateFile c where c.companyId=?", companyId).executeUpdate();
//删除HistoryInstanceHistory
HistoryInstanceHistoryDao historyInstanceHistoryDao = (HistoryInstanceHistoryDao)ContextUtils.getBean("historyInstanceHistoryDao");
historyInstanceHistoryDao.createQuery("delete from HistoryInstanceHistory c where c.companyId=?", companyId).executeUpdate();
//删除HistoryOpinion
HistoryOpinionDao historyOpinionDao = (HistoryOpinionDao)ContextUtils.getBean("historyOpinionDao");
historyOpinionDao.createQuery("delete from HistoryOpinion c where c.companyId=?", companyId).executeUpdate();
//删除HistoryWorkflowInstance
HistoryWorkflowInstanceDao historyWorkflowInstanceDao = (HistoryWorkflowInstanceDao)ContextUtils.getBean("historyWorkflowInstanceDao");
historyWorkflowInstanceDao.createQuery("delete from HistoryWorkflowInstance c where c.companyId=?", companyId).executeUpdate();
//删除InstanceHistory
InstanceHistoryDao instanceHistoryDao = (InstanceHistoryDao)ContextUtils.getBean("instanceHistoryDao");
instanceHistoryDao.createQuery("delete from InstanceHistory c where c.companyId=?", companyId).executeUpdate();
//删除Opinion
OpinionDao opinionDao = (OpinionDao)ContextUtils.getBean("opinionDao");
opinionDao.createQuery("delete from Opinion c where c.companyId=?", companyId).executeUpdate();
//删除TrustRecord
DelegateMainDao trustRecordDao = (DelegateMainDao)ContextUtils.getBean("delegateMainDao");
trustRecordDao.createQuery("delete from TrustRecord c where c.companyId=?", companyId).executeUpdate();
//删除WorkflowAttachment
WorkflowAttachmentDao workflowAttachmentDao = (WorkflowAttachmentDao)ContextUtils.getBean("workflowAttachmentDao");
workflowAttachmentDao.createQuery("delete from WorkflowAttachment c where c.companyId=?", companyId).executeUpdate();
//删除WorkflowAttachmentFile
WorkflowAttachmentFileDao workflowAttachmentFileDao = (WorkflowAttachmentFileDao)ContextUtils.getBean("workflowAttachmentFileDao");
workflowAttachmentFileDao.createQuery("delete from WorkflowAttachmentFile c where c.companyId=?", companyId).executeUpdate();
//删除WorkflowDefinition
WorkflowDefinitionDao workflowDefinitionDao = (WorkflowDefinitionDao)ContextUtils.getBean("workflowDefinitionDao");
workflowDefinitionDao.createQuery("delete from WorkflowDefinition c where c.companyId=?", companyId).executeUpdate();
//删除WorkflowDefinitionFile
WorkflowDefinitionFileDao workflowDefinitionFileDao = (WorkflowDefinitionFileDao)ContextUtils.getBean("workflowDefinitionFileDao");
workflowDefinitionFileDao.createQuery("delete from WorkflowDefinitionFile c where c.companyId=?", companyId).executeUpdate();
//删除WorkflowDefinitionTemplate
WorkflowDefinitionTemplateDao workflowDefinitionTemplateDao = (WorkflowDefinitionTemplateDao)ContextUtils.getBean("workflowDefinitionTemplateDao");
workflowDefinitionTemplateDao.createQuery("delete from WorkflowDefinitionTemplate c where c.companyId=?", companyId).executeUpdate();
//删除WorkflowDefinitionTemplateFile
WorkflowDefinitionTemplateFileDao workflowDefinitionTemplateFileDao = (WorkflowDefinitionTemplateFileDao)ContextUtils.getBean("workflowDefinitionTemplateFileDao");
workflowDefinitionTemplateFileDao.createQuery("delete from WorkflowDefinitionTemplateFile c where c.companyId=?", companyId).executeUpdate();
//删除WorkflowInstance
WorkflowInstanceDao workflowInstanceDao = (WorkflowInstanceDao)ContextUtils.getBean("workflowInstanceDao");
workflowInstanceDao.createQuery("delete from WorkflowInstance c where c.companyId=?", companyId).executeUpdate();
//删除WorkflowType
WorkflowTypeDao workflowTypeDao = (WorkflowTypeDao)ContextUtils.getBean("workflowTypeDao");
workflowTypeDao.createQuery("delete from WorkflowType c where c.companyId=?", companyId).executeUpdate();
//删除HistoryWorkflowTask
HistoryWorkflowTaskDao historyWorkflowTaskDao = (HistoryWorkflowTaskDao)ContextUtils.getBean("historyWorkflowTaskDao");
historyWorkflowTaskDao.createQuery("delete from HistoryWorkflowTask c where c.companyId=?", companyId).executeUpdate();
//删除WorkflowTask
WorkflowTaskDao workflowTaskDao = (WorkflowTaskDao)ContextUtils.getBean("workflowTaskDao");
workflowTaskDao.createQuery("delete from WorkflowTask c where c.companyId=?", companyId).executeUpdate();
//删除Task
TaskDao taskDao = (TaskDao)ContextUtils.getBean("taskDao");
taskDao.createQuery("delete from Task c where c.companyId=?", companyId).executeUpdate();
}
private void deleteBsInfo(Long companyId){
//删除Holiday
HolidayDao holidayDao = (HolidayDao)ContextUtils.getBean("holidayDao");
holidayDao.createQuery("delete from Holiday c where c.companyId=?", companyId).executeUpdate();
//删除ImportColumn
ImportColumnDao importColumnDao = (ImportColumnDao)ContextUtils.getBean("importColumnDao");
importColumnDao.createQuery("delete from ImportColumn c where c.companyId=?", companyId).executeUpdate();
//删除ImportDefinition
ImportDefinitionDao importDefinitionDao = (ImportDefinitionDao)ContextUtils.getBean("importDefinitionDao");
importDefinitionDao.createQuery("delete from ImportDefinition c where c.companyId=?", companyId).executeUpdate();
//删除InternationOption
InternationOptionDao internationOptionDao = (InternationOptionDao)ContextUtils.getBean("internationOptionDao");
internationOptionDao.createQuery("delete from InternationOption c where c.companyId=?", companyId).executeUpdate();
//删除Internation
InternationDao internationDao = (InternationDao)ContextUtils.getBean("internationDao");
internationDao.createQuery("delete from Internation c where c.companyId=?", companyId).executeUpdate();
//删除Option
OptionDao optionDao = (OptionDao)ContextUtils.getBean("optionDao");
optionDao.createQuery("delete from Option c where c.companyId=?", companyId).executeUpdate();
//删除OptionGroup
OptionGroupDao optionGroupDao = (OptionGroupDao)ContextUtils.getBean("optionGroupDao");
optionGroupDao.createQuery("delete from OptionGroup c where c.companyId=?", companyId).executeUpdate();
//删除TimedTask
JobInfoDao jobInfoDao = (JobInfoDao)ContextUtils.getBean("jobInfoDao");
jobInfoDao.createQuery("delete from TimedTask c where c.companyId=?", companyId).executeUpdate();
//删除Timer
CornInfoDao cornInfoDao = (CornInfoDao)ContextUtils.getBean("cornInfoDao");
cornInfoDao.createQuery("delete from Timer c where c.companyId=?", companyId).executeUpdate();
//删除Subordinate
RankUserDao rankUserDao = (RankUserDao)ContextUtils.getBean("rankUserDao");
rankUserDao.createQuery("delete from Subordinate c where c.companyId=?", companyId).executeUpdate();
//删除Superior
RankDao rankDao = (RankDao)ContextUtils.getBean("rankDao");
rankDao.createQuery("delete from Superior c where c.companyId=?", companyId).executeUpdate();
//删除Signature
SignatureDao signatureDao = (SignatureDao)ContextUtils.getBean("signatureDao");
signatureDao.createQuery("delete from Signature c where c.companyId=?", companyId).executeUpdate();
}
private void deletePortalInfo(Long companyId){
//删除BaseSetting
BaseSettingDao baseSettingDao = (BaseSettingDao)ContextUtils.getBean("baseSettingDao");
baseSettingDao.createQuery("delete from BaseSetting c where c.companyId=?", companyId).executeUpdate();
//删除Message
MessageInfoDao messageDao = (MessageInfoDao)ContextUtils.getBean("messageInfoDao");
messageDao.createQuery("delete from Message c where c.companyId=?", companyId).executeUpdate();
//删除Theme
ThemeDao themeDao = (ThemeDao)ContextUtils.getBean("themeDao");
themeDao.createQuery("delete from Theme c where c.companyId=?", companyId).executeUpdate();
//删除UserTheme
UserThemeDao userThemeDao = (UserThemeDao)ContextUtils.getBean("userThemeDao");
userThemeDao.createQuery("delete from UserTheme c where c.companyId=?", companyId).executeUpdate();
//删除Webpage
WebpageDao webpageDao = (WebpageDao)ContextUtils.getBean("webpageDao");
webpageDao.createQuery("delete from Webpage c where c.companyId=?", companyId).executeUpdate();
//删除Widget
WidgetDao widgetDao = (WidgetDao)ContextUtils.getBean("widgetDao");
widgetDao.createQuery("delete from Widget c where c.companyId=?", companyId).executeUpdate();
//删除WidgetConfig
WidgetConfigDao widgetConfigDao = (WidgetConfigDao)ContextUtils.getBean("widgetConfigDao");
widgetConfigDao.createQuery("delete from WidgetConfig c where c.companyId=?", companyId).executeUpdate();
//删除WidgetParameter
WidgetParameterDao widgetParameterDao = (WidgetParameterDao)ContextUtils.getBean("widgetParameterDao");
widgetParameterDao.createQuery("delete from WidgetParameter c where c.companyId=?", companyId).executeUpdate();
//删除WidgetParameterValue
WidgetParameterValueDao widgetParameterValueDao = (WidgetParameterValueDao)ContextUtils.getBean("widgetParameterValueDao");
widgetParameterValueDao.createQuery("delete from WidgetParameterValue c where c.companyId=?", companyId).executeUpdate();
//删除WidgetRole
WidgetRoleDao widgetRoleDao = (WidgetRoleDao)ContextUtils.getBean("widgetRoleDao");
widgetRoleDao.createQuery("delete from WidgetRole c where c.companyId=?", companyId).executeUpdate();
}
public Tenant getTenant(Long id){
return tenantDao.get(id);
}
public Page<Tenant> getAllTenants(Page<Tenant> page){
return tenantDao.findByCriteria(page, Restrictions.eq("deleted", false));
}
public List<Tenant> getAllTenants(){
return tenantDao.findByCriteria(Restrictions.eq("deleted", false));
}
@Autowired
private SubscriberItemManager subscriberItemManager;
@SuppressWarnings("unchecked")
public void saveSubsciberItem(Tenant tenant, Subsciber subsciber, List<SubscriberItem> items){
//租户
tenantDao.save(tenant);
tenant.getCompany().setCompanyId(tenant.getId());
//订单
subsciber.setOrderDate(new Date());
subsciber.setTenantId(tenant.getId());
subsciber.setOrderNo(String.valueOf(new Date().getTime()));
subsciberDao.save(subsciber);
// ServerConfig
ServerConfig config = new ServerConfig();
config.setCompanyId(tenant.getId());
serverConfigDao.save(config);
//创建三个个公司的管理员,拥有该公司所购买的所有的系统的管理员角色
//系统管理员
UserInfo systemAdmin = createUser(tenant.getCompany().getId(),tenant.getCompany().getName(),
(new StringBuffer(tenant.getCompany().getCode().trim()).append(".")).append(systemAdminCode).toString(),
systemAdminCode, systemAdminCode, subsciber.getBeginDate());
//安全管理员
UserInfo securityAdmin = createUser(tenant.getCompany().getId(),tenant.getCompany().getName(),
(new StringBuffer(tenant.getCompany().getCode().trim()).append(".")).append(securityAdminCode).toString(),
securityAdminCode, securityAdminCode, subsciber.getBeginDate());
//审计管理员
UserInfo auditAdmin = createUser(tenant.getCompany().getId(),tenant.getCompany().getName(),
(new StringBuffer(tenant.getCompany().getCode().trim()).append(".")).append(auditAdminCode).toString(),
auditAdminCode, auditAdminCode, subsciber.getBeginDate());
StringBuilder hql = new StringBuilder();
hql.append("select sr from Role sr,Product p ");
hql.append("where sr.businessSystem.id=p.systemId and sr.deleted=false and sr.businessSystem.deleted=false and p.id=?");
for(SubscriberItem item : items){
item.setSubsciber(subsciber);
subscriberItemManager.saveItem(item);
//给三个管理员分配各自的角色
RoleUser roleUser = null;
List<Role> roles = roleDao.find(hql.toString(), item.getProduct().getId());
for(Role role : roles){
if(role.getCode().endsWith(PORTAL_COMMON_USER)){
roleUser = new RoleUser();
roleUser.setCompanyId(tenant.getId());
roleUser.setRole(role);
roleUser.setUser(systemAdmin.getUser());
roleUserDao.save(roleUser);
roleUser = new RoleUser();
roleUser.setCompanyId(tenant.getId());
roleUser.setRole(role);
roleUser.setUser(securityAdmin.getUser());
roleUserDao.save(roleUser);
roleUser = new RoleUser();
roleUser.setCompanyId(tenant.getId());
roleUser.setRole(role);
roleUser.setUser(auditAdmin.getUser());
roleUserDao.save(roleUser);
}
roleUser = new RoleUser();
roleUser.setCompanyId(tenant.getId());
roleUser.setRole(role);
if(role.getCode().endsWith(systemAdminRoleCode)||
role.getCode().endsWith(FORM_MANAGER)||
role.getCode().endsWith(TYPE_MANAGER)||
role.getCode().endsWith(OPTIONS_MANAGER)||
role.getCode().endsWith(MODUEL_MANAGER)||
role.getCode().endsWith(MMS_COMMON_ROLE)||
role.getCode().endsWith(WF_COMMONS)||
role.getCode().endsWith(BS_COMMON)||
role.getCode().endsWith(WORKFLOW_MANAGER)){
roleUser.setUser(systemAdmin.getUser());
roleUserDao.save(roleUser);
}else if(role.getCode().endsWith(securityAdminRoleCode)){
roleUser.setUser(securityAdmin.getUser());
roleUserDao.save(roleUser);
}else if(role.getCode().endsWith(auditAdminRoleCode)){
roleUser.setUser(auditAdmin.getUser());
roleUserDao.save(roleUser);
}
}
}
}
//给所有用户密码MD5加密
@SuppressWarnings("unchecked")
public void encryotionByMD5(Long companyId) {
List<User> userList = userDao.find("select u FROM User u WHERE u.companyId=? ", companyId);
for(User user : userList){
if(user.getPassword().length()<32){
user.setPassword(Md5.toMessageDigest(user.getPassword()));
userDao.save(user);
}
}
}
/**
* 保存邮件配置
* @param mailDeploy
*/
public void saveMailDeploy(MailDeploy mailDeploy) {
mailDeployDao.save(mailDeploy);
}
/**
* 根据公司id获得邮件配置
* @param companyId
* @return
*/
public MailDeploy getMailDeployByCompanyId(Long companyId) {
return mailDeployDao.findUniqueByProperty("companyId", companyId);
}
}