|
|
@ -1,24 +1,30 @@ |
|
|
|
package com.ccsens.tall.service; |
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
|
|
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
|
import com.ccsens.tall.bean.dto.InputDocDto; |
|
|
|
|
|
|
|
import com.ccsens.tall.bean.dto.LwbsDto; |
|
|
|
import com.ccsens.tall.bean.po.ProMember; |
|
|
|
import com.ccsens.tall.bean.po.ProMemberExample; |
|
|
|
import com.ccsens.tall.bean.po.SysProject; |
|
|
|
import com.ccsens.tall.bean.po.SysProjectExample; |
|
|
|
import com.ccsens.tall.bean.po.*; |
|
|
|
import com.ccsens.tall.bean.vo.InputDocVo; |
|
|
|
import com.ccsens.tall.bean.vo.LwbsVo; |
|
|
|
import com.ccsens.tall.bean.vo.TaskVo; |
|
|
|
import com.ccsens.tall.persist.dao.IInputDocDao; |
|
|
|
import com.ccsens.tall.persist.mapper.ProMemberMapper; |
|
|
|
import com.ccsens.tall.persist.mapper.ProTaskInputDocMapper; |
|
|
|
import com.ccsens.tall.persist.mapper.ProTaskInputRecordMapper; |
|
|
|
import com.ccsens.tall.persist.mapper.SysProjectMapper; |
|
|
|
|
|
|
|
import com.ccsens.tall.util.TaskUtil; |
|
|
|
import com.rabbitmq.client.TopologyRecoveryException; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
|
|
|
import com.ccsens.util.CodeEnum; |
|
|
|
import com.ccsens.util.exception.BaseException; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
@Service |
|
|
@ -29,6 +35,14 @@ public class InputDocService implements IInputDocService { |
|
|
|
public SysProjectMapper sysProjectMapper; |
|
|
|
@Resource |
|
|
|
private IInputDocDao iInputDocDao; |
|
|
|
@Resource |
|
|
|
private ProTaskInputRecordMapper proTaskInputRecordMapper; |
|
|
|
@Resource |
|
|
|
private ProTaskInputDocMapper proTaskInputDocMapper; |
|
|
|
@Resource |
|
|
|
private Snowflake snowflake; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public List<LwbsVo.SelByUserIdToComProjectVo> selBylwbs(LwbsDto.SelByUserIdToComProject param, Long userId) { |
|
|
|
List<LwbsVo.SelByUserIdToComProjectVo> selByUserIdToComProjectVos =new ArrayList<LwbsVo.SelByUserIdToComProjectVo>(); |
|
|
@ -89,113 +103,158 @@ public class InputDocService implements IInputDocService { |
|
|
|
} |
|
|
|
taskInfo.setGlobalTaskList(globalTaskList); |
|
|
|
taskInfo.setNormalTaskList(normalTaskList); |
|
|
|
|
|
|
|
// List<TaskVo.GlobalTask> globalTaskList = new ArrayList<>();
|
|
|
|
// List<TaskVo.NormalTask> normalTaskList = new ArrayList<>();
|
|
|
|
// TaskVo.GlobalTask globalTask;
|
|
|
|
// //从普通和全局任务中拆分开是普通和全局任务
|
|
|
|
// TaskUtil.Task task = TaskUtil.splitTask(normalTaskList1, param.getStartTime(), param.getEndTime(), param.getProcess());
|
|
|
|
// if (CollectionUtil.isNotEmpty(task.getGlobalTask())) {
|
|
|
|
// for (TaskVo.NormalTask global : task.getGlobalTask()) {
|
|
|
|
// globalTask = new TaskVo.GlobalTask();
|
|
|
|
// BeanUtil.copyProperties(global, globalTask);
|
|
|
|
// globalTaskList.add(globalTask);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// if (CollectionUtil.isNotEmpty(task.getCommonTask())) {
|
|
|
|
// if (param.getPriority() == 0) {
|
|
|
|
// normalTaskList = sortTaskTime(task.getCommonTask());
|
|
|
|
// } else {
|
|
|
|
// normalTaskList = task.getCommonTask();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// taskInfo.setGlobalTaskList(globalTaskList);
|
|
|
|
// taskInfo.setNormalTaskList(normalTaskList);
|
|
|
|
return taskInfo; |
|
|
|
} |
|
|
|
private List<TaskVo.NormalTask> sortTaskTime(List<TaskVo.NormalTask> commonTask) { |
|
|
|
/** |
|
|
|
* 根据任务id查找输入文档 |
|
|
|
* @param param 任务id |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public List<InputDocVo.DocOfTask> findDocByTask(InputDocDto.FindDocByTask param) { |
|
|
|
List<InputDocVo.DocOfTask> docByTask = iInputDocDao.findDocByTask(param.getTaskId()); |
|
|
|
return docByTask; |
|
|
|
} |
|
|
|
|
|
|
|
List<TaskVo.NormalTask> normalTaskList = new ArrayList<>(); |
|
|
|
List<TaskVo.NormalTask> secondTaskVoList; |
|
|
|
Set<Long> longSet = new HashSet<>(); |
|
|
|
if (CollectionUtil.isNotEmpty(commonTask)) { |
|
|
|
for (TaskVo.NormalTask secondTaskVo : commonTask) { |
|
|
|
longSet.add(secondTaskVo.getBeginTime()); |
|
|
|
longSet.add(secondTaskVo.getEndTime()); |
|
|
|
} |
|
|
|
List<Long> timeList = new ArrayList<>(longSet); |
|
|
|
for (int i = 0; i < timeList.size(); i++) { |
|
|
|
for (int j = 0; j < timeList.size() - i - 1; j++) { |
|
|
|
if (timeList.get(j) > timeList.get(j + 1)) { |
|
|
|
Long r = timeList.get(j); |
|
|
|
timeList.set(j, timeList.get(j + 1)); |
|
|
|
timeList.set(j + 1, r); |
|
|
|
/** |
|
|
|
* 给输入文档上传文件 |
|
|
|
* @param param docId 文档id |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void uploadForDoc(InputDocDto.UploadForDoc param,Long userId) { |
|
|
|
//将之前的文件设置为不使用
|
|
|
|
ProTaskInputRecordExample proTaskInputRecordExample = new ProTaskInputRecordExample(); |
|
|
|
proTaskInputRecordExample.createCriteria().andInputDocIdEqualTo(param.getDocId()); |
|
|
|
ProTaskInputRecord newProTaskInputRecord = new ProTaskInputRecord(); |
|
|
|
newProTaskInputRecord.setStatus((byte)0); |
|
|
|
proTaskInputRecordMapper.updateByExampleSelective(newProTaskInputRecord,proTaskInputRecordExample); |
|
|
|
|
|
|
|
//多文件添加
|
|
|
|
for (int i = 0; i < param.getFileIds().length; i++) { |
|
|
|
ProTaskInputRecord proTaskInputRecord = new ProTaskInputRecord(); |
|
|
|
proTaskInputRecord.setInputDocId(param.getDocId()); |
|
|
|
proTaskInputRecord.setFileId(param.getFileIds()[i]); |
|
|
|
proTaskInputRecord.setStatus((byte)1); |
|
|
|
proTaskInputRecord.setId(snowflake.nextId()); |
|
|
|
proTaskInputRecord.setUserId(userId); |
|
|
|
proTaskInputRecordMapper.insertSelective(proTaskInputRecord); |
|
|
|
} |
|
|
|
|
|
|
|
//通过输入文档id将输入文档表中的状态更改为已上传
|
|
|
|
ProTaskInputDoc proTaskInputDoc = new ProTaskInputDoc(); |
|
|
|
proTaskInputDoc.setId(param.getDocId()); |
|
|
|
proTaskInputDoc.setIsUpload(1); |
|
|
|
proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 查看文档上传文件历史记录 |
|
|
|
* @param param docId 文档id |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public List<InputDocVo.HistoryRecord> viewDocHistory(InputDocDto.ViewDocHistory param) { |
|
|
|
List<InputDocVo.HistoryRecord> historyRecords = iInputDocDao.viewDocHistory(param.getDocId()); |
|
|
|
return historyRecords; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 添加输入文档 |
|
|
|
* @param param |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void addDoc(InputDocDto.AddDoc param) { |
|
|
|
//判断是否有重复名称
|
|
|
|
ProTaskInputDocExample proTaskInputDocExample = new ProTaskInputDocExample(); |
|
|
|
proTaskInputDocExample.createCriteria().andTaskDetailIdEqualTo(param.getTaskId()).andRecStatusEqualTo((byte)0); |
|
|
|
List<ProTaskInputDoc> proTaskInputDocs = proTaskInputDocMapper.selectByExample(proTaskInputDocExample); |
|
|
|
if (null != proTaskInputDocs && 0 < proTaskInputDocs.size()){ |
|
|
|
for (ProTaskInputDoc proTaskInputDoc : proTaskInputDocs){ |
|
|
|
for (int i = 0; i < param.getFileName().length; i++) { |
|
|
|
if (proTaskInputDoc.getName().equals(param.getFileName()[i])){ |
|
|
|
throw new BaseException(CodeEnum.DOC_REPEAT); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
int sequence = 1; |
|
|
|
for (int i = 0; i < timeList.size() - 1; i++) { |
|
|
|
TaskVo.NormalTask normalTask; |
|
|
|
secondTaskVoList = new ArrayList<>(); |
|
|
|
Long startTime = timeList.get(i); |
|
|
|
Long endTime = timeList.get(i + 1); |
|
|
|
|
|
|
|
for (TaskVo.NormalTask secondTaskVo : commonTask) { |
|
|
|
if (secondTaskVo.getTimeStatus() == 1) { |
|
|
|
if (secondTaskVo.getBeginTime().longValue() == startTime.longValue()) { |
|
|
|
normalTask = new TaskVo.NormalTask(); |
|
|
|
BeanUtil.copyProperties(secondTaskVo, normalTask); |
|
|
|
normalTask.setEndTime(null); |
|
|
|
normalTask.setSequence(sequence); |
|
|
|
sequence++; |
|
|
|
normalTaskList.add(normalTask); |
|
|
|
} |
|
|
|
continue; |
|
|
|
} |
|
|
|
if (secondTaskVo.getTimeStatus() == 2) { |
|
|
|
if (secondTaskVo.getEndTime().longValue() == endTime.longValue()) { |
|
|
|
normalTask = new TaskVo.NormalTask(); |
|
|
|
BeanUtil.copyProperties(secondTaskVo, normalTask); |
|
|
|
normalTask.setBeginTime(null); |
|
|
|
normalTask.setSequence(sequence); |
|
|
|
sequence++; |
|
|
|
normalTaskList.add(normalTask); |
|
|
|
} |
|
|
|
continue; |
|
|
|
} |
|
|
|
if (secondTaskVo.getBeginTime() < startTime && secondTaskVo.getEndTime() <= endTime && secondTaskVo.getEndTime() > startTime) { |
|
|
|
secondTaskVo.setBeginTime(startTime); |
|
|
|
secondTaskVoList.add(secondTaskVo); |
|
|
|
} else if (secondTaskVo.getBeginTime() >= startTime && secondTaskVo.getEndTime() <= endTime) { |
|
|
|
secondTaskVoList.add(secondTaskVo); |
|
|
|
} else if (secondTaskVo.getBeginTime() >= startTime && secondTaskVo.getBeginTime() < endTime && secondTaskVo.getEndTime() > endTime) { |
|
|
|
secondTaskVo.setEndTime(endTime); |
|
|
|
secondTaskVoList.add(secondTaskVo); |
|
|
|
} else if (secondTaskVo.getBeginTime() < startTime && secondTaskVo.getEndTime() > endTime) { |
|
|
|
secondTaskVo.setBeginTime(startTime); |
|
|
|
secondTaskVo.setEndTime(endTime); |
|
|
|
secondTaskVoList.add(secondTaskVo); |
|
|
|
} |
|
|
|
} |
|
|
|
if (CollectionUtil.isNotEmpty(secondTaskVoList)) { |
|
|
|
if (secondTaskVoList.size() == 1) { |
|
|
|
normalTask = new TaskVo.NormalTask(); |
|
|
|
BeanUtil.copyProperties(secondTaskVoList.get(0), normalTask); |
|
|
|
normalTask.setSequence(sequence); |
|
|
|
sequence++; |
|
|
|
normalTaskList.add(normalTask); |
|
|
|
} else { |
|
|
|
normalTask = new TaskVo.NormalTask(); |
|
|
|
normalTask.setBeginTime(startTime); |
|
|
|
normalTask.setEndTime(endTime); |
|
|
|
normalTask.setSecondTasks(secondTaskVoList); |
|
|
|
normalTask.setSequence(sequence); |
|
|
|
sequence++; |
|
|
|
normalTaskList.add(normalTask); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//添加输入文档
|
|
|
|
for (int i = 0; i < param.getFileName().length; i++) { |
|
|
|
ProTaskInputDoc proTaskInputDoc = new ProTaskInputDoc(); |
|
|
|
proTaskInputDoc.setId(snowflake.nextId()); |
|
|
|
proTaskInputDoc.setTaskDetailId(param.getTaskId()); |
|
|
|
proTaskInputDoc.setName(param.getFileName()[i]); |
|
|
|
proTaskInputDoc.setIsUpload(0); |
|
|
|
proTaskInputDocMapper.insertSelective(proTaskInputDoc); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 修改输入文档 |
|
|
|
* @param param |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void updateDoc(InputDocDto.UpdateDoc param) { |
|
|
|
//判断是否有重复
|
|
|
|
ProTaskInputDoc proTaskInputDoc = proTaskInputDocMapper.selectByPrimaryKey(param.getDocId()); |
|
|
|
ProTaskInputDocExample proTaskInputDocExample = new ProTaskInputDocExample(); |
|
|
|
proTaskInputDocExample.createCriteria().andTaskDetailIdEqualTo(proTaskInputDoc.getTaskDetailId()); |
|
|
|
List<ProTaskInputDoc> proTaskInputDocs = proTaskInputDocMapper.selectByExample(proTaskInputDocExample); |
|
|
|
if (null != proTaskInputDocs && 0 < proTaskInputDocs.size()){ |
|
|
|
for (ProTaskInputDoc docData:proTaskInputDocs){ |
|
|
|
if (docData.getName().equals(param.getFileName())){ |
|
|
|
throw new BaseException(CodeEnum.DOC_REPEAT); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return normalTaskList; |
|
|
|
|
|
|
|
//删除记录表中已上传的文档
|
|
|
|
if (1 == proTaskInputDoc.getIsUpload()){ |
|
|
|
ProTaskInputRecordExample proTaskInputRecordExample = new ProTaskInputRecordExample(); |
|
|
|
proTaskInputRecordExample.createCriteria().andInputDocIdEqualTo(param.getDocId()); |
|
|
|
List<ProTaskInputRecord> proTaskInputRecords = proTaskInputRecordMapper.selectByExample(proTaskInputRecordExample); |
|
|
|
for (ProTaskInputRecord record:proTaskInputRecords){ |
|
|
|
ProTaskInputRecord inputRecord = new ProTaskInputRecord(); |
|
|
|
inputRecord.setId(record.getId()); |
|
|
|
inputRecord.setStatus((byte)0); |
|
|
|
inputRecord.setRecStatus((byte)2); |
|
|
|
proTaskInputRecordMapper.updateByPrimaryKeySelective(inputRecord); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//修改数据
|
|
|
|
ProTaskInputDoc newDoc = new ProTaskInputDoc(); |
|
|
|
newDoc.setId(param.getDocId()); |
|
|
|
newDoc.setName(param.getFileName()); |
|
|
|
newDoc.setIsUpload(0); |
|
|
|
proTaskInputDocMapper.updateByPrimaryKeySelective(newDoc); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 删除输入文档 |
|
|
|
* @param param |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void delDoc(InputDocDto.DeleteDoc param) { |
|
|
|
//删除记录中表中的数据
|
|
|
|
ProTaskInputRecordExample recordExample = new ProTaskInputRecordExample(); |
|
|
|
recordExample.createCriteria().andInputDocIdEqualTo(param.getDocId()).andRecStatusEqualTo((byte)0); |
|
|
|
List<ProTaskInputRecord> proTaskInputRecords = proTaskInputRecordMapper.selectByExample(recordExample); |
|
|
|
for (ProTaskInputRecord inputRecord:proTaskInputRecords){ |
|
|
|
ProTaskInputRecord proTaskInputRecord = new ProTaskInputRecord(); |
|
|
|
proTaskInputRecord.setId(inputRecord.getId()); |
|
|
|
proTaskInputRecord.setStatus((byte)0); |
|
|
|
proTaskInputRecord.setRecStatus((byte)2); |
|
|
|
proTaskInputRecordMapper.updateByPrimaryKeySelective(proTaskInputRecord); |
|
|
|
} |
|
|
|
|
|
|
|
//删除输入文档表中的数据
|
|
|
|
ProTaskInputDoc proTaskInputDoc = new ProTaskInputDoc(); |
|
|
|
proTaskInputDoc.setId(param.getDocId()); |
|
|
|
proTaskInputDoc.setRecStatus((byte)2); |
|
|
|
proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|