| 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); | 
|         if(StringUtils.isNull(ardAppTask)) | 
|         { | 
|             return null; | 
|         } | 
|         List<ArdAppTaskDetail> 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<String> userIds = ardAppTaskMapper.selectArdAppTaskDetailUserIdsByTaskId(id); | 
|         if (userIds.size() > 0) { | 
|             ardAppTask.setUserIds(userIds); | 
|             List<SysUser> 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<ArdAppTaskDetailPic> ardAppTaskDetailPicList = ardAppTaskDetailPicMapper.selectArdAppTaskDetailPicList(ardAppTaskDetailPic); | 
|         if (ardAppTaskDetailPicList.size() > 0) { | 
|             appTaskDetail.setArdAppTaskDetailPic(ardAppTaskDetailPicList); | 
|         } | 
|         return appTaskDetail; | 
|     } | 
|   | 
|     /** | 
|      * 查询app任务管理列表 | 
|      * | 
|      * @param ardAppTask app任务管理 | 
|      * @return app任务管理 | 
|      */ | 
|     @Override | 
|     public List<ArdAppTask> selectArdAppTaskList(ArdAppTask ardAppTask) { | 
|         List<ArdAppTask> parentList = ardAppTaskMapper.selectArdAppTaskList(ardAppTask); | 
|   | 
|         if(StringUtils.isNotNull(ardAppTask.getAppUserId())) { | 
|             //如果app用户id不为空,查询出所有任务的子任务列表 | 
|             for(ArdAppTask appTask:parentList) | 
|             { | 
|                 List<ArdAppTaskDetail> 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<ArdAppTask> selectArdAppTaskListWithDetail(ArdAppTask ardAppTask) { | 
|         List<ArdAppTask> list = ardAppTaskMapper.selectArdAppTaskListWithDetail(ardAppTask); | 
|         return list; | 
|     } | 
|   | 
|     @Override | 
|     public List<ArdAppTask> selectArdAppTaskListWithDetailById(ArdAppTask ardAppTask) { | 
|         List<ArdAppTask> list = ardAppTaskMapper.selectArdAppTaskListWithDetail(ardAppTask); | 
|         for(ArdAppTaskDetail detail : list.get(0).getArdAppTaskDetailList()) { | 
|             ArdAppTaskDetailPic ardAppTaskDetailPic =new ArdAppTaskDetailPic(); | 
|             ardAppTaskDetailPic.setTaskDetailId(detail.getId()); | 
|             List<ArdAppTaskDetailPic> 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<ArdAppTaskPic> ardAppTaskPicList = ardAppTask.getArdAppTaskPicList(); | 
|         if (StringUtils.isNotNull(ardAppTaskPicList)) { | 
|             ardAppTaskMapper.deleteArdAppTaskPicByTaskId(ardAppTask.getId()); | 
|             String id = ardAppTask.getId(); | 
|   | 
|             List<ArdAppTaskPic> list = new ArrayList<ArdAppTaskPic>(); | 
|             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<ArdAppTaskDetail> ardAppTaskDetailList = ardAppTask.getArdAppTaskDetailList(); | 
|         if (StringUtils.isNotNull(ardAppTaskDetailList)) { | 
|             if (ardAppTaskDetailList.size() > 0) { | 
|                 List<String> userIds = ardAppTask.getUserIds(); | 
|                 if (userIds.size() > 0) { | 
|                     ardAppTaskMapper.deleteArdAppTaskDetailByTaskId(ardAppTask.getId()); | 
|                     for (String userId : userIds) { | 
|                         String id = ardAppTask.getId(); | 
|                         if (StringUtils.isNotNull(ardAppTaskDetailList)) { | 
|                             List<ArdAppTaskDetail> list = new ArrayList<ArdAppTaskDetail>(); | 
|                             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<ArdAppTaskText> 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<ArdAppTaskDetailPic> ardAppTaskDetailPicList = ardAppTaskDetail.getArdAppTaskDetailPic(); | 
|         String detailId = ardAppTaskDetail.getId(); | 
|         if (StringUtils.isNotNull(ardAppTaskDetailPicList)) { | 
|             ardAppTaskMapper.deleteArdAppTaskDetailPicByTaskDetailId(detailId); | 
|             List<ArdAppTaskDetailPic> list = new ArrayList<ArdAppTaskDetailPic>(); | 
|             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); | 
|     } | 
| } |