package com.norteksoft.mms.authority.service; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.norteksoft.mms.authority.dao.ConditionDao; import com.norteksoft.mms.authority.dao.DataRuleDao; import com.norteksoft.mms.authority.dao.PermissionDao; import com.norteksoft.mms.authority.entity.Condition; import com.norteksoft.mms.authority.entity.DataRule; import com.norteksoft.mms.authority.entity.Permission; import com.norteksoft.mms.form.dao.DataTableDao; import com.norteksoft.mms.form.dao.TableColumnDao; import com.norteksoft.mms.form.entity.DataTable; import com.norteksoft.mms.form.entity.TableColumn; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.JsonParser; @Service @Transactional public class DataRuleManager { @Autowired private DataRuleDao dataRuleDao; @Autowired private ConditionDao conditionDao; @Autowired private DataTableDao dataTableDao; @Autowired private TableColumnDao tableColumnDao; @Autowired private PermissionDao permissionDao; /** * 根据id获得数据规则 * @param id * @return */ @Transactional(readOnly=true) public DataRule getDataRule(Long id) { return dataRuleDao.get(id); } /** * 获得所有数据规则 * @param page */ @Transactional(readOnly=true) public void getDataRulePage(Page<DataRule> page) { dataRuleDao.getDataRulePage(page); } /** * 保存数据规则 * @param dataRule */ public void saveDataRule(DataRule dataRule) { dataRuleDao.save(dataRule); List<Condition> conditions=new ArrayList<Condition>(); List<Object> objects=JsonParser.getFormTableDatas(Condition.class); for(Object obj:objects){ Condition condition=(Condition)obj; condition.setDataRule(dataRule); conditionDao.save(condition); conditions.add(condition); } if(conditions.size()>0){ dataRule.setConditions(conditions); } } public List<DataRule> getDataRuleByDataTable(Long tableId){ return dataRuleDao.getDataRuleByDataTable(tableId); } /** * 删除数据规则且该规则下的所有条件 * @param ids */ public void deleteDataRule(String ids) { for(String id:ids.split(",")){ List<Permission> list = permissionDao.getPermissionsByDataRule(Long.valueOf(id)); for(Permission p:list){ p.setDataRule(null); permissionDao.delete(p); } //permissionDao.deletePermissionByDataRuleId(Long.valueOf(id)); conditionDao.deleteConditionByRuleId(Long.valueOf(id)); dataRuleDao.delete(Long.valueOf(id)); } } /** * 根据编号获得规则 * @param code * @return */ @Transactional(readOnly=true) public DataRule getDataRuleByCode(String code) { return dataRuleDao.getDataRuleByCode(code); } /** * 根据编号和ID获得编号相同且ID不同的规则 * @param code * @param id * @return */ @Transactional(readOnly=true) public DataRule getDataRuleByCode(String code, Long id) { return dataRuleDao.getDataRuleByCode(code,id); } /** * 获得所有启用的数据表 * @return */ public void findAllEnabledDataTable(Page<DataTable> page) { dataTableDao.findAllEnabledDataTable(page); } /** * 根据数据表id获得字段 * @param tableColumnPage * @param tableId */ public void getTableColumnByDataTableId(Page<TableColumn> tableColumnPage,Long dataTableId) { tableColumnDao.getTableColumnByDataTableId(tableColumnPage, dataTableId); } /** * 根据规则类型查询数据规则 * @param ruleTypeId * @return */ public List<DataRule> getDataRulesByRuleType(Long ruleTypeId){ return dataRuleDao.getDataRulesByRuleType(ruleTypeId); } /** * 根据规则类型查询数据规则 * @param page * @param ruleTypeId */ public void getDataRulesByRuleType(Page<DataRule> page, Long ruleTypeId) { dataRuleDao.getDataRulesByRuleType(page,ruleTypeId); } /** * 验证删除 * @param ids * @return */ public String validateDelete(String ids) { String result=""; for(String id:ids.split(",")){ List<Permission> permissions=permissionDao.getPermissionsByDataRule(Long.valueOf(id)); if(permissions != null && permissions.size()>0){ DataRule dataRule=dataRuleDao.get(Long.valueOf(id)); if(StringUtils.isNotEmpty(result)) result+="、"; result+=dataRule.getName(); } } if(StringUtils.isNotEmpty(result)) result="名称为:"+result+" 的数据规则中有数据授权,确定删除吗?"; return result; } }