package com.vci.web.service.impl; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.DataGrid; import com.vci.starter.web.pagemodel.PageHelper; import com.vci.starter.web.pagemodel.SessionInfo; import com.vci.starter.web.util.ApplicationContextProvider; import com.vci.starter.web.util.BeanUtil; import com.vci.starter.web.util.VciBaseUtil; import com.vci.web.dto.WebHomeTaskActionDTO; import com.vci.web.model.WebHomeTaskActionDO; import com.vci.web.pageModel.WebHomeTaskActionVO; import com.vci.web.service.WebBoServiceI; import com.vci.web.service.WebHomeTaskServiceI; import com.vci.web.util.WebUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.*; import java.util.stream.Collectors; import static com.vci.web.constant.CacheNameConstant.VCI_USER; /** * 首页待办任务的服务 * @author weidy */ @Service public class WebHomeTaskServiceImpl implements WebHomeTaskServiceI { /** * 日志 */ private Logger logger = LoggerFactory.getLogger(getClass()); /** * 业务数据的服务 */ @Autowired private WebBoServiceI boService; /** * 获取当前用户的首页待办任务 * * @return 任务汇总的数量 */ @Override public List listMyHomeTask() { List actionVOS = new ArrayList<>(); List allActions = boService.queryObject(WebHomeTaskActionDO.class,null); if (!CollectionUtils.isEmpty(allActions)) { SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfo(); if(sessionInfo ==null){ throw new VciBaseException("没有登录"); } List myFunctionOids = sessionInfo.getFunctionOids(); allActions = allActions.stream().filter(s -> !CollectionUtils.isEmpty(myFunctionOids) && myFunctionOids.contains(s.getId())).collect(Collectors.toList()); } if(!CollectionUtils.isEmpty(allActions)){ allActions.stream().forEach(action->{ WebHomeTaskActionVO taskActionVO = new WebHomeTaskActionVO(); BeanUtil.convert(action,taskActionVO); actionVOS.add(taskActionVO); }); } return actionVOS; } /** * 获取当前用户,用于缓存中 。。。别的地方不要调用 * @return 当前用户的主键 */ @Override public String getCurrentUserOid(){ return WebUtil.getCurrentUserOid(); } /** * 添加首页待办任务的action * * @param action 数据对象 */ @Override public void addAction(WebHomeTaskActionDTO action){ WebUtil.alertNotNull(action,"要添加的信息为空",action.getId(),"菜单的主键",action.getName(),"菜单的名称",action.getCountUrl(),"调用的地址"); WebHomeTaskActionDO actionDO = new WebHomeTaskActionDO(); BeanUtil.convert(action,actionDO); actionDO.setOid(VciBaseUtil.getPk()); boService.addSave(actionDO); } /** * 修改待办任务的action信息 * * @param action 数据对象 */ @Override public void editAction(WebHomeTaskActionDTO action) { WebUtil.alertNotNull(action,"要修改的信息为空",action.getOid(),"主键",action.getTs(),"时间戳"); WebHomeTaskActionDO actionDO = boService.selectByOid(action.getOid(),WebHomeTaskActionDO.class); BeanUtil.convert(action,actionDO); boService.editSave(actionDO); } /** * 删除待办任务的action信息 * * @param action 数据对象 */ @Override public void deleteAction(WebHomeTaskActionDTO action) throws VciBaseException { WebUtil.alertNotNull(action,"要删除的信息为空",action.getOid(),"主键",action.getTs(),"时间戳"); if(boService.checkTs(action)) { WebHomeTaskActionDO actionDO = boService.selectByOid(action.getOid(), WebHomeTaskActionDO.class); boService.delete(actionDO); } } /** * 查询所有的待办任务动作定义 * * @param conditionMap 查询条件 * @param pageHelper 分页信息 * @return 数据对象 */ @Override public DataGrid dataGrid(Map conditionMap, PageHelper pageHelper) throws VciBaseException{ if(pageHelper == null){ pageHelper = new PageHelper(-1); } pageHelper.addDefaultDesc("createTime"); DataGrid dataGrid = boService.queryGridClass(WebHomeTaskActionDO.class,conditionMap,pageHelper); if(!CollectionUtils.isEmpty(dataGrid.getData())){ List taskActionVOS = new ArrayList<>(); dataGrid.getData().forEach(action->{ WebHomeTaskActionVO taskActionVO = new WebHomeTaskActionVO(); BeanUtil.convert((WebHomeTaskActionDO)action,taskActionVO); taskActionVOS.add(taskActionVO); }); dataGrid.setData(taskActionVOS); } return dataGrid; } }