package com.hz.employmentsite.services.impl.taskAndLog; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.hz.employmentsite.mapper.PcDotaskMapper; import com.hz.employmentsite.mapper.PcDotaskUserMapper; import com.hz.employmentsite.mapper.PcSiteUserMapper; import com.hz.employmentsite.mapper.cquery.DoTaskCQuery; import com.hz.employmentsite.model.*; import com.hz.employmentsite.services.service.taskAndLog.DoTaskService; import com.hz.employmentsite.util.StringUtils; import com.hz.employmentsite.vo.taskAndLog.DoTaskUserVo; import com.hz.employmentsite.vo.taskAndLog.DoTaskVo; import com.hz.employmentsite.vo.baseSettings.SiteUserVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; @Service("DoTaskService") public class DoTaskImpl implements DoTaskService { @Autowired private DoTaskCQuery doTaskCQuery; @Autowired private StringUtils stringUtils; @Autowired private PcDotaskMapper doTaskMapper; @Autowired private PcSiteUserMapper pcSiteUserMapper; @Autowired private PcDotaskUserMapper doTaskUserMapper; @Override public PageInfo getList(Integer page, Integer rows, String name, String startTime, String endTime, String finishStartTime, String finishEndTime, String regionCode, String streetCode, String workTypeId) { try { PageHelper.startPage(page, rows); List list = doTaskCQuery.getList(null, name, startTime, endTime, finishStartTime, finishEndTime, regionCode, streetCode, workTypeId); PageInfo result = new PageInfo(list); return result; } catch (Exception e) { throw new RuntimeException("Database query exception: " + e.getMessage(), e); } } @Override public PageInfo getMyTasks(Integer page, Integer rows, String curUserID) { PcSiteUserExample siteUserExp = new PcSiteUserExample(); PcSiteUserExample.Criteria siteUserCro = siteUserExp.createCriteria(); siteUserCro.andUserIDEqualTo(curUserID); var curSiteUserInfo = pcSiteUserMapper.selectByExample(siteUserExp).stream().findFirst().orElse(null); if(curSiteUserInfo==null){ throw new RuntimeException("当前用户未绑定站点人员,未能查询到相关工作任务!"); }else{ PcDotaskUserExample exp = new PcDotaskUserExample(); PcDotaskUserExample.Criteria cro = exp.createCriteria(); cro.andSiteUserIDEqualTo(curSiteUserInfo.getSiteUserID()); var curDoTaskUserInfo = doTaskUserMapper.selectByExample(exp).stream().toList(); List curDoTaskIDs = new ArrayList(); if (curDoTaskUserInfo.size()>0){ curDoTaskUserInfo.forEach(item -> { curDoTaskIDs.add(item.getDotaskID()); }); }; try { if(curDoTaskIDs.size()>0){ PageHelper.startPage(page,rows); List list = doTaskCQuery.getList(stringUtils.ListToInSql(curDoTaskIDs),null,null,null,null,null,null,null,null); PageInfo result = new PageInfo(list); return result; } return null; } catch (Exception e) { throw new RuntimeException("Database query exception: " + e.getMessage(), e); } } } @Override public List getWorkUserList(String doTaskID) { List list = doTaskCQuery.getWorkUserList(doTaskID); return list; } @Override public List getUserList() { List list = doTaskCQuery.getUserList(); return list; } @Override public DoTaskVo getDataById(String id) { if (stringUtils.IsNullOrEmpty(id)) { return null; } List ids = new ArrayList<>(); ids.add(id); return doTaskCQuery.getList(stringUtils.ListToInSql(ids), null, null, null, null, null, null, null, null).stream().findFirst().orElse(null); } @Override public int save(DoTaskVo data, String userId) { int result = 0; PcDotask dbData = doTaskMapper.selectByPrimaryKey(data.getDoTaskID()); PcDotaskUserExample exp = new PcDotaskUserExample(); PcDotaskUserExample.Criteria cro = exp.createCriteria(); cro.andDotaskIDEqualTo(data.getDoTaskID()); PcDotaskUser taskUser = doTaskUserMapper.selectByExample(exp).stream().findFirst().orElse(null); if (dbData == null) { dbData = new PcDotask(); dbData.setDotaskID(data.getDoTaskID()); dbData.setWorkTypeID(data.getWorkTypeID()); dbData.setContent(data.getContent()); dbData.setDotaskName(data.getDoTaskName()); dbData.setRegionCode(data.getRegionCode()); dbData.setStreetCode(data.getStreetCode()); dbData.setSiteID(data.getSiteID()); dbData.setFinishTime(data.getFinishTime()); dbData.setCreateTime(new Date()); dbData.setCreateUserID(userId); result = doTaskMapper.insert(dbData); } else { dbData.setWorkTypeID(data.workTypeID); dbData.setContent(data.content); dbData.setDotaskName(data.doTaskName); dbData.setRegionCode(data.regionCode); dbData.setStreetCode(data.streetCode); dbData.setSiteID(data.siteID); dbData.setFinishTime(data.finishTime); dbData.setModifyTime(new Date()); dbData.setModifyUserID(userId); result = doTaskMapper.updateByPrimaryKeySelective(dbData); } if (result == 1) { String doTaskID = dbData.getDotaskID(); if (taskUser != null) { PcDotaskUserExample example = new PcDotaskUserExample(); example.or().andDotaskIDEqualTo(data.getDoTaskID()); doTaskUserMapper.deleteByExample(example); } var doTaskUsers = data.doTaskUser.stream().toList(); for (var curData: doTaskUsers) { PcDotaskUser user = new PcDotaskUser(); user.setDotaskUserID(UUID.randomUUID().toString()); user.setDotaskID(doTaskID); user.setSiteUserID(curData.siteUserID); doTaskUserMapper.insert(user); }; } return result; } @Override public int delete(List ids) { int result = 0; PcDotaskUserExample expUser = new PcDotaskUserExample(); PcDotaskUserExample.Criteria croUser = expUser.or(); croUser.andDotaskIDIn(ids); int userRows = doTaskUserMapper.deleteByExample(expUser); if (userRows > 0) { PcDotaskExample exp = new PcDotaskExample(); PcDotaskExample.Criteria cro = exp.or(); cro.andDotaskIDIn(ids); result = doTaskMapper.deleteByExample(exp); } return result; } }