package com.ruoyi.app.task.service.impl; import java.util.List; import com.github.pagehelper.PageHelper; import com.ruoyi.app.task.domain.ArdAppTaskDetail; import com.ruoyi.app.taskdetail.domain.ArdAppTaskDetailPic; import com.ruoyi.app.taskdetail.mapper.ArdAppTaskDetailPicMapper; import com.ruoyi.app.tasktext.domain.ArdAppTaskText; import com.ruoyi.app.tasktext.mapper.ArdAppTaskTextMapper; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.system.mapper.SysUserMapper; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Optional; import java.util.stream.Collectors; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.SecurityUtils; import org.springframework.transaction.annotation.Transactional; import com.ruoyi.app.task.domain.ArdAppTaskPic; import com.ruoyi.app.task.mapper.ArdAppTaskMapper; import com.ruoyi.app.task.domain.ArdAppTask; import com.ruoyi.app.task.service.IArdAppTaskService; import javax.annotation.Resource; /** * app任务管理Service业务层处理 * * @author ard * @date 2023-07-22 */ @Service public class ArdAppTaskServiceImpl implements IArdAppTaskService { @Resource ArdAppTaskDetailPicMapper ardAppTaskDetailPicMapper; @Resource private ArdAppTaskMapper ardAppTaskMapper; @Resource private ArdAppTaskTextMapper ardAppTaskTextMapper; @Resource private SysUserMapper sysUserMapper; /** * 查询app任务管理 * * @param id app任务管理主键 * @return app任务管理 */ @Override public ArdAppTask selectArdAppTaskById(String id) { ArdAppTask ardAppTask = ardAppTaskMapper.selectArdAppTaskById(id); List ardAppTaskDetailList = ardAppTask.getArdAppTaskDetailList(); if(ardAppTaskDetailList.size()>0) { ardAppTaskDetailList = ardAppTaskDetailList.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new java.util.TreeSet<>(java.util.Comparator.comparing(ArdAppTaskDetail::getName))), ArrayList::new)); ardAppTask.setArdAppTaskDetailList(ardAppTaskDetailList); } List userIds = ardAppTaskMapper.selectArdAppTaskDetailUserIdsByTaskId(id); if (userIds.size() > 0) { ardAppTask.setUserIds(userIds); List sysUserList=new ArrayList<>(); for (String userId : userIds) { SysUser sysUser = sysUserMapper.selectUserById(userId); sysUserList.add(sysUser); } ardAppTask.setSysUserList(sysUserList); } return ardAppTask; } @Override public ArdAppTaskDetail selectArdAppTaskDetailById(String id) { ArdAppTaskDetail appTaskDetail = ardAppTaskMapper.selectArdAppTaskDetailById(id); ArdAppTaskDetailPic ardAppTaskDetailPic = new ArdAppTaskDetailPic(); ardAppTaskDetailPic.setTaskDetailId(id); List ardAppTaskDetailPicList = ardAppTaskDetailPicMapper.selectArdAppTaskDetailPicList(ardAppTaskDetailPic); if (ardAppTaskDetailPicList.size() > 0) { appTaskDetail.setArdAppTaskDetailPic(ardAppTaskDetailPicList); } return appTaskDetail; } /** * 查询app任务管理列表 * * @param ardAppTask app任务管理 * @return app任务管理 */ @Override public List selectArdAppTaskList(ArdAppTask ardAppTask) { List parentList = ardAppTaskMapper.selectArdAppTaskList(ardAppTask); // if(StringUtils.isNotNull(ardAppTask.getAppUserId())) { //如果app用户id不为空,查询出所有任务的子任务列表 for(ArdAppTask appTask:parentList) { List ardAppTaskDetails = ardAppTaskMapper.selectArdAppTaskDetailListByTaskId(appTask.getId()); appTask.setArdAppTaskDetailList(ardAppTaskDetails); } //通过app用户id过滤子任务列表来过滤出父任务列表 parentList = parentList.stream() .filter(parent -> parent.getArdAppTaskDetailList().stream().anyMatch(child -> child.getUserId().equals(ardAppTask.getAppUserId()))) .collect(Collectors.toList()); } return parentList; } /** * 查询app任务详情管理列表 * * @param ardAppTask app任务对象 * @return app任务详情列表 */ @Override public List selectArdAppTaskListWithDetail(ArdAppTask ardAppTask) { List list = ardAppTaskMapper.selectArdAppTaskListWithDetail(ardAppTask); return list; } @Override public List selectArdAppTaskListWithDetailById(ArdAppTask ardAppTask) { List list = ardAppTaskMapper.selectArdAppTaskListWithDetail(ardAppTask); for(ArdAppTaskDetail detail : list.get(0).getArdAppTaskDetailList()) { ArdAppTaskDetailPic ardAppTaskDetailPic =new ArdAppTaskDetailPic(); ardAppTaskDetailPic.setTaskDetailId(detail.getId()); List ardAppTaskDetailPicList = ardAppTaskDetailPicMapper.selectArdAppTaskDetailPicList(ardAppTaskDetailPic); detail.setArdAppTaskDetailPic(ardAppTaskDetailPicList); } return list; } /** * 新增app任务管理 * * @param ardAppTask app任务管理 * @return 结果 */ @Transactional @Override public int insertArdAppTask(ArdAppTask ardAppTask) { ardAppTask.setId(IdUtils.simpleUUID()); ardAppTask.setUserId(SecurityUtils.getUserId()); ardAppTask.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); ardAppTask.setCreateTime(DateUtils.getNowDate()); int rows = ardAppTaskMapper.insertArdAppTask(ardAppTask); insertArdAppTaskPic(ardAppTask); insertArdAppTaskDetail(ardAppTask); insertArdAppTaskText(ardAppTask); return rows; } /** * 修改app任务管理 * * @param ardAppTask app任务管理 * @return 结果 */ @Transactional @Override public int updateArdAppTask(ArdAppTask ardAppTask) { ardAppTask.setUpdateBy(SecurityUtils.getUsername()); ardAppTask.setUpdateTime(DateUtils.getNowDate()); insertArdAppTaskPic(ardAppTask); insertArdAppTaskDetail(ardAppTask); return ardAppTaskMapper.updateArdAppTask(ardAppTask); } /** * 批量删除app任务管理 * * @param ids 需要删除的app任务管理主键 * @return 结果 */ @Transactional @Override public int deleteArdAppTaskByIds(String[] ids) { ardAppTaskMapper.deleteArdAppTaskPicByTaskIds(ids); ardAppTaskMapper.deleteArdAppTaskDetailByTaskIds(ids); return ardAppTaskMapper.deleteArdAppTaskByIds(ids); } /** * 删除app任务管理信息 * * @param id app任务管理主键 * @return 结果 */ @Transactional @Override public int deleteArdAppTaskById(String id) { ardAppTaskMapper.deleteArdAppTaskPicByTaskId(id); return ardAppTaskMapper.deleteArdAppTaskById(id); } /** * 新增app任务图片信息 * * @param ardAppTask app任务管理对象 */ public void insertArdAppTaskPic(ArdAppTask ardAppTask) { List ardAppTaskPicList = ardAppTask.getArdAppTaskPicList(); if (StringUtils.isNotNull(ardAppTaskPicList)) { ardAppTaskMapper.deleteArdAppTaskPicByTaskId(ardAppTask.getId()); String id = ardAppTask.getId(); List list = new ArrayList(); for (ArdAppTaskPic ardAppTaskPic : ardAppTaskPicList) { ardAppTaskPic.setId(IdUtils.simpleUUID()); ardAppTaskPic.setTaskId(id); list.add(ardAppTaskPic); } if (list.size() > 0) { ardAppTaskMapper.batchArdAppTaskPic(list); } } } /** * 新增app任务详情信息 * * @param ardAppTask app任务管理对象 */ public void insertArdAppTaskDetail(ArdAppTask ardAppTask) { List ardAppTaskDetailList = ardAppTask.getArdAppTaskDetailList(); if (StringUtils.isNotNull(ardAppTaskDetailList)) { if (ardAppTaskDetailList.size() > 0) { List userIds = ardAppTask.getUserIds(); if (userIds.size() > 0) { ardAppTaskMapper.deleteArdAppTaskDetailByTaskId(ardAppTask.getId()); for (String userId : userIds) { String id = ardAppTask.getId(); if (StringUtils.isNotNull(ardAppTaskDetailList)) { List list = new ArrayList(); for (ArdAppTaskDetail ardAppTaskDetail : ardAppTaskDetailList) { ardAppTaskDetail.setId(IdUtils.simpleUUID()); ardAppTaskDetail.setStatus("0"); ardAppTaskDetail.setTaskId(id); ardAppTaskDetail.setUserId(userId); list.add(ardAppTaskDetail); } if (list.size() > 0) { ardAppTaskMapper.batchArdAppTaskDetail(list); } } } } } } } /** * 新增app任务描述信息 * * @param ardAppTask app任务管理对象 */ public void insertArdAppTaskText(ArdAppTask ardAppTask) { String userId = ardAppTask.getUserId(); String text = ardAppTask.getText(); if (StringUtils.isEmpty(text)) { return; } ArdAppTaskText ardAppTaskText = new ArdAppTaskText(); ardAppTaskText.setId(IdUtils.simpleUUID()); ardAppTaskText.setUserId(userId); ardAppTaskText.setText(text); List ardAppTaskTexts = ardAppTaskTextMapper.selectArdAppTaskTextList(ardAppTaskText); if (ardAppTaskTexts.size() == 0) { ardAppTaskTextMapper.insertArdAppTaskText(ardAppTaskText); } } /** * 修改app任务详情 * * @param ardAppTaskDetail app任务详情对象 */ @Override public int updateArdAppTaskDetail(ArdAppTaskDetail ardAppTaskDetail) { ardAppTaskDetail.setClockInTime(DateUtils.getNowDate()); insertArdAppTaskPic(ardAppTaskDetail); return ardAppTaskMapper.updateArdAppTaskDetail(ardAppTaskDetail); } @Override public int updateArdAppTaskDetailView(ArdAppTaskDetail ardAppTaskDetail) { ardAppTaskDetail.setViewTime(DateUtils.getNowDate()); return ardAppTaskMapper.updateArdAppTaskDetailView(ardAppTaskDetail); } /** * 新增app任务详情图片信息 * * @param ardAppTaskDetail app任务详情对象 */ public void insertArdAppTaskPic(ArdAppTaskDetail ardAppTaskDetail) { List ardAppTaskDetailPicList = ardAppTaskDetail.getArdAppTaskDetailPic(); String detailId = ardAppTaskDetail.getId(); if (StringUtils.isNotNull(ardAppTaskDetailPicList)) { ardAppTaskMapper.deleteArdAppTaskDetailPicByTaskDetailId(detailId); List list = new ArrayList(); for (ArdAppTaskDetailPic ardAppTaskDetailPic : ardAppTaskDetailPicList) { ardAppTaskDetailPic.setId(IdUtils.simpleUUID()); ardAppTaskDetailPic.setTaskDetailId(detailId); list.add(ardAppTaskDetailPic); } if (list.size() > 0) { ardAppTaskMapper.batchArdAppTaskDetailPic(list); } } } @Override public ArdAppTask selectNewArdAppTaskByUserId(String userId) { ArdAppTask ardAppTask = ardAppTaskMapper.selectNewArdAppTaskByUserId(userId); if (StringUtils.isNotNull(ardAppTask)) { ArdAppTaskDetail detail = new ArdAppTaskDetail(); detail.setViewFlag("1"); detail.setTaskId(ardAppTask.getId()); int i = ardAppTaskMapper.updateArdAppTaskDetailByTaskId(detail); } return ardAppTask; } /** * 查询已弹窗但未读的任务数量 * * @param userId app用户Id * @return 结果 */ @Override public int selectUnreadArdAppTaskCount(String userId) { return ardAppTaskMapper.selectUnreadArdAppTaskCount(userId); } }