|  |  |  | 
|---|
|  |  |  | 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.mapper.ArdAppTaskMapper; | 
|---|
|  |  |  | import com.ruoyi.app.task.domain.ArdAppTask; | 
|---|
|  |  |  | import com.ruoyi.app.task.service.IArdAppTaskService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | public class ArdAppTaskServiceImpl implements IArdAppTaskService { | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | ArdAppTaskDetailPicMapper ardAppTaskDetailPicMapper; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private ArdAppTaskMapper ardAppTaskMapper; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private ArdAppTaskTextMapper ardAppTaskTextMapper; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private SysUserMapper sysUserMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 查询app任务管理 | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public ArdAppTask selectArdAppTaskById(String id) { | 
|---|
|  |  |  | return ardAppTaskMapper.selectArdAppTaskById(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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | * @return app任务管理 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @DataScope(deptAlias = "d", userAlias = "u") | 
|---|
|  |  |  | public List<ArdAppTask> selectArdAppTaskList(ArdAppTask ardAppTask) { | 
|---|
|  |  |  | return ardAppTaskMapper.selectArdAppTaskList(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任务详情管理列表 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<ArdAppTask> selectArdAppTaskListWithDetail(ArdAppTask ardAppTask) { | 
|---|
|  |  |  | ardAppTask.setUserId(SecurityUtils.getUserId()); | 
|---|
|  |  |  | return ardAppTaskMapper.selectArdAppTaskListWithDetail(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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | public int insertArdAppTask(ArdAppTask ardAppTask) { | 
|---|
|  |  |  | ardAppTask.setId(IdUtils.simpleUUID()); | 
|---|
|  |  |  | ardAppTask.setUserId(SecurityUtils.getUserId()); | 
|---|
|  |  |  | ardAppTask.setCreateBy(SecurityUtils.getUsername()); | 
|---|
|  |  |  | ardAppTask.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); | 
|---|
|  |  |  | ardAppTask.setCreateTime(DateUtils.getNowDate()); | 
|---|
|  |  |  | int rows = ardAppTaskMapper.insertArdAppTask(ardAppTask); | 
|---|
|  |  |  | insertArdAppTaskPic(ardAppTask); | 
|---|
|  |  |  | 
|---|
|  |  |  | public int updateArdAppTask(ArdAppTask ardAppTask) { | 
|---|
|  |  |  | ardAppTask.setUpdateBy(SecurityUtils.getUsername()); | 
|---|
|  |  |  | ardAppTask.setUpdateTime(DateUtils.getNowDate()); | 
|---|
|  |  |  | ardAppTaskMapper.deleteArdAppTaskPicByTaskId(ardAppTask.getId()); | 
|---|
|  |  |  | ardAppTaskMapper.deleteArdAppTaskDetailByTaskId(ardAppTask.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | insertArdAppTaskPic(ardAppTask); | 
|---|
|  |  |  | insertArdAppTaskDetail(ardAppTask); | 
|---|
|  |  |  | return ardAppTaskMapper.updateArdAppTask(ardAppTask); | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public void insertArdAppTaskPic(ArdAppTask ardAppTask) { | 
|---|
|  |  |  | List<ArdAppTaskPic> ardAppTaskPicList = ardAppTask.getArdAppTaskPicList(); | 
|---|
|  |  |  | String id = ardAppTask.getId(); | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | 
|---|
|  |  |  | * @param ardAppTask app任务管理对象 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public void insertArdAppTaskDetail(ArdAppTask ardAppTask) { | 
|---|
|  |  |  | List<String> userIds = ardAppTask.getUserIds(); | 
|---|
|  |  |  | for (String userId : userIds) { | 
|---|
|  |  |  | List<ArdAppTaskDetail> ardAppTaskDetailList = ardAppTask.getArdAppTaskDetailList(); | 
|---|
|  |  |  | String id = ardAppTask.getId(); | 
|---|
|  |  |  | if (StringUtils.isNotNull(ardAppTaskDetailList)) { | 
|---|
|  |  |  | List<ArdAppTaskDetail> list = new ArrayList<ArdAppTaskDetail>(); | 
|---|
|  |  |  | for (ArdAppTaskDetail ardAppTaskDetail : ardAppTaskDetailList) { | 
|---|
|  |  |  | ardAppTaskDetail.setId(IdUtils.simpleUUID()); | 
|---|
|  |  |  | ardAppTaskDetail.setTaskId(id); | 
|---|
|  |  |  | ardAppTaskDetail.setUserId(userId); | 
|---|
|  |  |  | list.add(ardAppTaskDetail); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (list.size() > 0) { | 
|---|
|  |  |  | ardAppTaskMapper.batchArdAppTaskDetail(list); | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | public void insertArdAppTaskText(ArdAppTask ardAppTask) { | 
|---|
|  |  |  | String userId = ardAppTask.getUserId(); | 
|---|
|  |  |  | String text = ardAppTask.getText(); | 
|---|
|  |  |  | if(StringUtils.isEmpty(text)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (StringUtils.isEmpty(text)) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ArdAppTaskText ardAppTaskText = new ArdAppTaskText(); | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | 
|---|
|  |  |  | list.add(ardAppTaskDetailPic); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (list.size() > 0) { | 
|---|
|  |  |  | ardAppTaskMapper.deleteArdAppTaskDetailPicByTaskDetailId(detailId); | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|