package com.norteksoft.mms.module.service; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.norteksoft.mms.form.dao.FormViewDao; import com.norteksoft.mms.form.dao.ListViewDao; import com.norteksoft.mms.module.dao.ButtonDao; import com.norteksoft.mms.module.dao.ModulePageDao; import com.norteksoft.mms.module.entity.Button; import com.norteksoft.mms.module.entity.ModulePage; import com.norteksoft.mms.module.enumeration.ViewType; import com.norteksoft.product.enumeration.DataState; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; @Service @Transactional(readOnly=true) public class ModulePageManager { private ButtonDao buttonDao; private ModulePageDao modulePageDao; private FormViewDao formViewDao; private ListViewDao listViewDao; @Autowired public void setButtonDao(ButtonDao buttonDao) { this.buttonDao = buttonDao; } @Autowired public void setModulePageDao(ModulePageDao modulePageDao) { this.modulePageDao = modulePageDao; } @Autowired public void setFormViewDao(FormViewDao formViewDao) { this.formViewDao = formViewDao; } @Autowired public void setListViewDao(ListViewDao listViewDao) { this.listViewDao = listViewDao; } private Long getCompanyId(){ return ContextUtils.getCompanyId(); } /** * 保存页面 */ @Transactional(readOnly=false) public void saveModulePage(ModulePage modulePage){ if(modulePage.getView()!=null){ if(modulePage.getViewType().equals(ViewType.FORM_VIEW)){ modulePage.setView(formViewDao.get(modulePage.getView().getId())); }else{ modulePage.setView(listViewDao.get(modulePage.getView().getId())); } } modulePage.setCompanyId(getCompanyId()); modulePage.setCreatedTime(new Date()); modulePageDao.saveModulePage(modulePage); } /** * 获得页面 */ public ModulePage getModulePage(Long pageId){ return modulePageDao.getModulePage(pageId); } /** * 获得页面 */ public ModulePage getModulePageByPageId(Long pageId){ return modulePageDao.getModulePageByPageId(pageId); } /** * 重载上述方法 * @param code * @param companyId * @return */ public ModulePage getModulePage(String code) { return modulePageDao.getModulePage(code); } /** * 删除页面 */ @Transactional(readOnly=false) public void deleteModulePage(ModulePage modulePage) { modulePageDao.delete(modulePage); } @Transactional(readOnly=false) public String deleteModulePages(String pageIds){ Integer canNum=0; if(pageIds!=null){ String[] ids=pageIds.split(","); Integer[] nums=new Integer[ids.length]; deleteModulePage(ids, canNum,nums); for(Integer num:nums){ if(num!=null){ canNum=num; } } String successStr=canNum!=0?canNum+"个删除成功;":""; String errorStr=(ids.length-canNum)!=0?(ids.length-canNum)+"个删除失败,某按钮的转向页面引用了该页面或已启用过;":""; return successStr+errorStr; } return null; } //删除页面,处理关联关系 private Integer deleteModulePage(String[] ids, Integer canNum,Integer[] nums){ Long id = null; boolean result = false; List<Long> enabelPageIds=modulePageDao.getEnabelModulePage(); for(int i = 0; i < ids.length; i++){ if(ids[i] == null || enabelPageIds.contains(Long.parseLong(ids[i]))) continue; id = Long.parseLong(ids[i]); List<Button> btns=buttonDao.getButtonsByToPageId(id); if(btns.size()==0){ modulePageDao.delete(id); ids[i] = null; result = true; canNum = canNum + 1; nums[canNum-1]=canNum; } } if(result && ids.length != canNum) deleteModulePage(ids, canNum,nums); return canNum; } /** * 根据菜单id查询菜单下的视图 * @param menuId 菜单id * @return 视图列表 */ public void getModulePagesByMenuId(Page<ModulePage> page, Long menuId) { modulePageDao.getModulePagesByMenuId(page ,menuId); } /** * 根据菜单id查询菜单下的视图 * @param menuId 菜单id * @return 视图列表 */ public List<ModulePage> getModulePagesByMenuId(Long menuId) { return modulePageDao.getModulePagesByMenuId(menuId); } @Transactional(readOnly=false) public Boolean defaultDisplaySet(Long pageId,Long menuId){ ModulePage modulePage=modulePageDao.get(pageId); ModulePage page=modulePageDao.getDefaultDisplayPageByMenuId(menuId); Boolean isHasDefaultDisplay; if(page!=null){ isHasDefaultDisplay=false; if(modulePage.getDefaultDisplay()){ modulePage.setDefaultDisplay(false); isHasDefaultDisplay=true; } }else{ if(modulePage.getDefaultDisplay()){ modulePage.setDefaultDisplay(false); }else{ modulePage.setDefaultDisplay(true); modulePage.setEnableState(DataState.ENABLE); } isHasDefaultDisplay=true; modulePageDao.save(modulePage); } return isHasDefaultDisplay; } @Transactional(readOnly=false) public String enableSet(String pageIds){ int enabelCount=0; int disabelCount=0; int draftCount=0; if(pageIds!=null && !pageIds.equals("")){ String[] ids=pageIds.split(","); for(String idStr:ids){ ModulePage modulePage=modulePageDao.get(Long.parseLong(idStr)); if(modulePage.getEnableState().equals(DataState.ENABLE)){ enabelCount++; modulePage.setDefaultDisplay(false); modulePage.setEnableState(DataState.DISABLE); }else if(modulePage.getEnableState().equals(DataState.DISABLE)){ disabelCount++; modulePage.setEnableState(DataState.ENABLE); }else{ draftCount++; modulePage.setEnableState(DataState.ENABLE); } modulePageDao.save(modulePage); } } String enabelStr=enabelCount!=0?enabelCount+"个启用-->禁用;":""; String disabelStr=disabelCount!=0?disabelCount+"个禁用-->启用;":""; String draftStr=draftCount!=0?draftCount+"个草稿-->启用;":""; return enabelStr+disabelStr+draftStr; } public List<ModulePage> getModulePagesByViewId(Long viewId){ return modulePageDao.getModulePagesByViewId(viewId); } public Boolean isCodeExist(String code,Long pageId){ List<ModulePage> pages=modulePageDao.getModulePagesByCode(code,pageId); return pages.size()>0?true:false; } /** * 根据菜单id查询菜单下的启用的页面 * @param menuId 菜单id * @return 页面列表 */ public List<ModulePage> getEnableModulePagesByMenuId(Long menuId) { return modulePageDao.getEnableModulePagesByMenuId(menuId); } }