|
|
@ -5,17 +5,16 @@ import cn.hutool.core.lang.Snowflake; |
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
import com.ccsens.tall.bean.dto.DeliverDto; |
|
|
|
import com.ccsens.tall.bean.dto.WpsDto; |
|
|
|
import com.ccsens.tall.bean.dto.message.BaseMessageDto; |
|
|
|
import com.ccsens.tall.bean.dto.message.DeliverMessageWithCheckerDto; |
|
|
|
import com.ccsens.tall.bean.dto.message.DeliverMessageWithDeleteDto; |
|
|
|
import com.ccsens.tall.bean.dto.message.DeliverMessageWithUploadDto; |
|
|
|
import com.ccsens.tall.bean.po.*; |
|
|
|
import com.ccsens.tall.bean.vo.DeliverVo; |
|
|
|
import com.ccsens.tall.bean.vo.MessageVo; |
|
|
|
import com.ccsens.tall.bean.vo.ProjectVo; |
|
|
|
import com.ccsens.tall.bean.vo.TaskVo; |
|
|
|
import com.ccsens.tall.persist.dao.*; |
|
|
|
import com.ccsens.tall.util.RobotUtil; |
|
|
|
import com.ccsens.util.*; |
|
|
|
import com.ccsens.util.bean.message.common.InMessage; |
|
|
|
import com.ccsens.util.bean.message.common.MessageConstant; |
|
|
@ -23,54 +22,54 @@ import com.ccsens.util.bean.message.common.MessageRule; |
|
|
|
import com.ccsens.util.config.RabbitMQConfig; |
|
|
|
import com.ccsens.util.exception.BaseException; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.omg.CORBA.OBJ_ADAPTER; |
|
|
|
import org.omg.CORBA.StructMember; |
|
|
|
import org.springframework.amqp.core.AmqpTemplate; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Propagation; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.io.File; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* @author 逗 |
|
|
|
*/ |
|
|
|
@Slf4j |
|
|
|
@Service |
|
|
|
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) |
|
|
|
public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private TaskDeliverDao taskDeliverDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private SysCommitedFileDao commitedFileDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private ProTaskDeliverPostLogDao deliverPostLogDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private PostLogCheckerDao postLogCheckerDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private TaskDetailDao taskDetailDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private TaskSubTimeDao taskSubTimeDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private ProRoleDao proRoleDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private ProSubTimeMemberDao proSubTimeMemberDao; |
|
|
|
@Autowired |
|
|
|
private ProMemberDao proMemberDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private IProMemberService proMemberService; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private IUserService userService; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private IMessageService messageService; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private Snowflake snowflake; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private AmqpTemplate rabbitTemplate; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private IRobotService robotService; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private SysProjectDao sysProjectDao; |
|
|
|
@Resource |
|
|
|
private IWpsService wpsService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public void saveDeliver(ProTaskDeliver taskDeliver) { |
|
|
@ -89,14 +88,14 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
List<ProTaskDeliver> deliverList = taskDeliverDao.selectByExample(deliverExample); |
|
|
|
if (CollectionUtil.isNotEmpty(deliverList)) { |
|
|
|
for (ProTaskDeliver deliver : deliverList) { |
|
|
|
TaskVo.TaskDeliverByMVP.DeliverInfoByMVP deliverInfoByMVP = new TaskVo.TaskDeliverByMVP.DeliverInfoByMVP(); |
|
|
|
deliverInfoByMVP.setId(deliver.getId()); |
|
|
|
deliverInfoByMVP.setName(deliver.getName()); |
|
|
|
TaskVo.TaskDeliverByMVP.DeliverInfoByMVP deliverInfoByMvp = new TaskVo.TaskDeliverByMVP.DeliverInfoByMVP(); |
|
|
|
deliverInfoByMvp.setId(deliver.getId()); |
|
|
|
deliverInfoByMvp.setName(deliver.getName()); |
|
|
|
if (ObjectUtil.isNotNull(deliver.getIsFinal())) { |
|
|
|
if (deliver.getIsFinal() == 0) { |
|
|
|
deliverInfoByMVP.setFinals(false); |
|
|
|
deliverInfoByMvp.setFinals(false); |
|
|
|
} else if (deliver.getIsFinal() == 1) { |
|
|
|
deliverInfoByMVP.setFinals(true); |
|
|
|
deliverInfoByMvp.setFinals(true); |
|
|
|
} |
|
|
|
} |
|
|
|
if (ObjectUtil.isNotNull(subTimeId)) { |
|
|
@ -107,32 +106,32 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
if (CollectionUtil.isNotEmpty(postLogList)) { |
|
|
|
ProTaskDeliverPostLog postLog = postLogList.get(0); |
|
|
|
SysCommitedFile file = commitedFileDao.selectByPrimaryKey(postLog.getFileId()); |
|
|
|
deliverInfoByMVP.setUrl(WebConstant.TEST_URL_BASE + file.getPath()); |
|
|
|
deliverInfoByMvp.setUrl(WebConstant.TEST_URL_BASE + file.getPath()); |
|
|
|
|
|
|
|
ProTaskDeliverPostLogCheckerExample checkerExample = new ProTaskDeliverPostLogCheckerExample(); |
|
|
|
checkerExample.createCriteria().andDeliverPostLogIdEqualTo(postLog.getId()); |
|
|
|
List<ProTaskDeliverPostLogChecker> postLogCheckerList = postLogCheckerDao.selectByExample(checkerExample); |
|
|
|
if (CollectionUtil.isNotEmpty(postLogCheckerList)) { |
|
|
|
Boolean isChecker = true; |
|
|
|
boolean isChecker = true; |
|
|
|
for (ProTaskDeliverPostLogChecker checker : postLogCheckerList) { |
|
|
|
if (checker.getCheckStatus() == 0) { |
|
|
|
deliverInfoByMVP.setStatus("待检查"); |
|
|
|
deliverInfoByMvp.setStatus("待检查"); |
|
|
|
isChecker = false; |
|
|
|
} else if(checker.getCheckStatus() == -1) { |
|
|
|
deliverInfoByMVP.setStatus("未通过"); |
|
|
|
deliverInfoByMvp.setStatus("未通过"); |
|
|
|
isChecker = false; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
if(isChecker){ |
|
|
|
deliverInfoByMVP.setStatus("已通过"); |
|
|
|
deliverInfoByMvp.setStatus("已通过"); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
deliverInfoByMVP.setStatus("未上传"); |
|
|
|
deliverInfoByMvp.setStatus("未上传"); |
|
|
|
} |
|
|
|
} |
|
|
|
deliverInfoByMVPList.add(deliverInfoByMVP); |
|
|
|
deliverInfoByMVPList.add(deliverInfoByMvp); |
|
|
|
} |
|
|
|
} |
|
|
|
return deliverInfoByMVPList; |
|
|
@ -168,134 +167,246 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public ProjectVo.DeliverInfo addDeliver(Long currentUserId, DeliverDto.UploadDeliver uploadDeliver) throws Exception { |
|
|
|
Long now = System.currentTimeMillis(); |
|
|
|
Long subTimeId = isTaskOrSubTime(uploadDeliver.getTaskId()); |
|
|
|
if (ObjectUtil.isNull(subTimeId)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
|
} |
|
|
|
ProjectVo.DeliverInfo deliverInfo = null; |
|
|
|
//查找交付
|
|
|
|
ProTaskDeliver d = taskDeliverDao.selectByPrimaryKey(uploadDeliver.getDeliverId()); |
|
|
|
if (ObjectUtil.isNull(d)) { |
|
|
|
ProTaskDeliver taskDeliver = taskDeliverDao.selectByPrimaryKey(uploadDeliver.getDeliverId()); |
|
|
|
if (ObjectUtil.isNull(taskDeliver)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_DELIVER); |
|
|
|
} |
|
|
|
|
|
|
|
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(d.getTaskDetailId()); |
|
|
|
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(taskDeliver.getTaskDetailId()); |
|
|
|
ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole()); |
|
|
|
Boolean isBelongRole = proMemberService.userIsBelongRole(currentUserId, role.getId()); |
|
|
|
if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) || isBelongRole) { |
|
|
|
//发送信息
|
|
|
|
List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>(); |
|
|
|
BaseMessageDto.MessageUser messageUser = null; |
|
|
|
List<Long> userIdList = new ArrayList<>(); |
|
|
|
//查找以前的交付物。如果有,改为历史信息
|
|
|
|
ProTaskDeliverPostLogExample logExample = new ProTaskDeliverPostLogExample(); |
|
|
|
logExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId) |
|
|
|
.andDeliverIdEqualTo(uploadDeliver.getDeliverId()).andUserIdEqualTo(currentUserId); |
|
|
|
List<ProTaskDeliverPostLog> deliverPostLogList = deliverPostLogDao.selectByExample(logExample); |
|
|
|
if (CollectionUtil.isNotEmpty(deliverPostLogList)) { |
|
|
|
for (ProTaskDeliverPostLog deliverPostLog : deliverPostLogList) { |
|
|
|
if (deliverPostLog.getIsHistory() == 0) { |
|
|
|
deliverPostLog.setIsHistory(1); |
|
|
|
deliverPostLogDao.updateByPrimaryKeySelective(deliverPostLog); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) && !isBelongRole){ |
|
|
|
throw new BaseException(CodeEnum.NOT_CHECKER); |
|
|
|
} |
|
|
|
//查找以前上传的不为历史信息的文件。改为历史信息
|
|
|
|
ProTaskDeliverPostLogExample logExample = new ProTaskDeliverPostLogExample(); |
|
|
|
logExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId).andDeliverIdEqualTo(uploadDeliver.getDeliverId()) |
|
|
|
.andUserIdEqualTo(currentUserId).andIsHistoryEqualTo(0); |
|
|
|
List<ProTaskDeliverPostLog> deliverPostLogList = deliverPostLogDao.selectByExample(logExample); |
|
|
|
if (CollectionUtil.isNotEmpty(deliverPostLogList)) { |
|
|
|
for (ProTaskDeliverPostLog deliverPostLog : deliverPostLogList) { |
|
|
|
deliverPostLog.setIsHistory(1); |
|
|
|
deliverPostLogDao.updateByPrimaryKeySelective(deliverPostLog); |
|
|
|
} |
|
|
|
//添加PostLog
|
|
|
|
ProTaskDeliverPostLog deliverPostLog = new ProTaskDeliverPostLog(); |
|
|
|
deliverPostLog.setId(snowflake.nextId()); |
|
|
|
deliverPostLog.setDeliverId(uploadDeliver.getDeliverId()); |
|
|
|
deliverPostLog.setTaskSubTimeId(subTimeId); |
|
|
|
//如果有文件则添加,没有不添加
|
|
|
|
if (CollectionUtil.isNotEmpty(uploadDeliver.getFileInfo())) { |
|
|
|
for (DeliverDto.fileInfo fileInfo : uploadDeliver.getFileInfo()) { |
|
|
|
SysCommitedFile file = commitedFileDao.selectByPrimaryKey(fileInfo.getId()); |
|
|
|
if(ObjectUtil.isNotNull(file)){ |
|
|
|
deliverPostLog.setFileId(file.getId()); |
|
|
|
}else { |
|
|
|
throw new BaseException(CodeEnum.NOT_DELIVER_FILE); |
|
|
|
} |
|
|
|
} |
|
|
|
//将文件信息与交付物绑定,添加记录deliverPostLog
|
|
|
|
if (CollectionUtil.isNotEmpty(uploadDeliver.getFileInfo())) { |
|
|
|
for (DeliverDto.FileInfo fileInfo : uploadDeliver.getFileInfo()) { |
|
|
|
SysCommitedFile file = commitedFileDao.selectByPrimaryKey(fileInfo.getId()); |
|
|
|
if(ObjectUtil.isNull(file)){ |
|
|
|
throw new BaseException(CodeEnum.NOT_DELIVER_FILE); |
|
|
|
} |
|
|
|
} |
|
|
|
deliverPostLog.setUserId(currentUserId); |
|
|
|
deliverPostLog.setDescription(uploadDeliver.getDescription()); |
|
|
|
deliverPostLog.setTime(System.currentTimeMillis()); |
|
|
|
deliverPostLog.setIsHistory(0); |
|
|
|
deliverPostLogDao.insertSelective(deliverPostLog); |
|
|
|
//添加交付物检查人表
|
|
|
|
if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) { |
|
|
|
ProTaskDeliverPostLogChecker postLogChecker = null; |
|
|
|
for (Long checkerId : uploadDeliver.getCheckerIdList()) { |
|
|
|
postLogChecker = new ProTaskDeliverPostLogChecker(); |
|
|
|
postLogChecker.setId(snowflake.nextId()); |
|
|
|
postLogChecker.setDeliverPostLogId(deliverPostLog.getId()); |
|
|
|
postLogChecker.setCheckerId(checkerId); |
|
|
|
postLogCheckerDao.insertSelective(postLogChecker); |
|
|
|
ProTaskDeliverPostLog deliverPostLog = new ProTaskDeliverPostLog(); |
|
|
|
deliverPostLog.setId(snowflake.nextId()); |
|
|
|
deliverPostLog.setDeliverId(uploadDeliver.getDeliverId()); |
|
|
|
deliverPostLog.setTaskSubTimeId(subTimeId); |
|
|
|
deliverPostLog.setFileId(file.getId()); |
|
|
|
deliverPostLog.setUserId(currentUserId); |
|
|
|
deliverPostLog.setDescription(uploadDeliver.getDescription()); |
|
|
|
deliverPostLog.setTime(now); |
|
|
|
deliverPostLog.setIsHistory(0); |
|
|
|
deliverPostLogDao.insertSelective(deliverPostLog); |
|
|
|
//添加交付物检查人表
|
|
|
|
if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) { |
|
|
|
ProTaskDeliverPostLogChecker postLogChecker; |
|
|
|
for (Long checkerId : uploadDeliver.getCheckerIdList()) { |
|
|
|
postLogChecker = new ProTaskDeliverPostLogChecker(); |
|
|
|
postLogChecker.setId(snowflake.nextId()); |
|
|
|
postLogChecker.setDeliverPostLogId(deliverPostLog.getId()); |
|
|
|
postLogChecker.setCheckerId(checkerId); |
|
|
|
postLogCheckerDao.insertSelective(postLogChecker); |
|
|
|
} |
|
|
|
} else { |
|
|
|
throw new BaseException(CodeEnum.NOT_CHECKER); |
|
|
|
} |
|
|
|
} else { |
|
|
|
throw new BaseException(CodeEnum.NOT_CHECKER); |
|
|
|
//保存wps的文件消息
|
|
|
|
saveWpsFile(currentUserId,deliverPostLog.getId(),fileInfo); |
|
|
|
} |
|
|
|
|
|
|
|
//修改交付物状态
|
|
|
|
ProTaskDeliver deliver = new ProTaskDeliver(); |
|
|
|
deliver.setId(uploadDeliver.getDeliverId()); |
|
|
|
deliver.setIsUpload(1); |
|
|
|
taskDeliverDao.updateByPrimaryKeySelective(deliver); |
|
|
|
} |
|
|
|
// if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) || isBelongRole) {
|
|
|
|
// //发送信息
|
|
|
|
// List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>();
|
|
|
|
// BaseMessageDto.MessageUser messageUser;
|
|
|
|
// List<Long> userIdList = new ArrayList<>();
|
|
|
|
// //查找以前的交付物。如果有,改为历史信息
|
|
|
|
// ProTaskDeliverPostLogExample logExample = new ProTaskDeliverPostLogExample();
|
|
|
|
// logExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId)
|
|
|
|
// .andDeliverIdEqualTo(uploadDeliver.getDeliverId()).andUserIdEqualTo(currentUserId);
|
|
|
|
// List<ProTaskDeliverPostLog> deliverPostLogList = deliverPostLogDao.selectByExample(logExample);
|
|
|
|
// if (CollectionUtil.isNotEmpty(deliverPostLogList)) {
|
|
|
|
// for (ProTaskDeliverPostLog deliverPostLog : deliverPostLogList) {
|
|
|
|
// if (deliverPostLog.getIsHistory() == 0) {
|
|
|
|
// deliverPostLog.setIsHistory(1);
|
|
|
|
// deliverPostLogDao.updateByPrimaryKeySelective(deliverPostLog);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// //添加PostLog
|
|
|
|
// ProTaskDeliverPostLog deliverPostLog = new ProTaskDeliverPostLog();
|
|
|
|
// deliverPostLog.setId(snowflake.nextId());
|
|
|
|
// deliverPostLog.setDeliverId(uploadDeliver.getDeliverId());
|
|
|
|
// deliverPostLog.setTaskSubTimeId(subTimeId);
|
|
|
|
// //如果有文件则添加,没有不添加
|
|
|
|
// if (CollectionUtil.isNotEmpty(uploadDeliver.getFileInfo())) {
|
|
|
|
// for (DeliverDto.FileInfo fileInfo : uploadDeliver.getFileInfo()) {
|
|
|
|
// SysCommitedFile file = commitedFileDao.selectByPrimaryKey(fileInfo.getId());
|
|
|
|
// if(ObjectUtil.isNotNull(file)){
|
|
|
|
// deliverPostLog.setFileId(file.getId());
|
|
|
|
// }else {
|
|
|
|
// throw new BaseException(CodeEnum.NOT_DELIVER_FILE);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// deliverPostLog.setUserId(currentUserId);
|
|
|
|
// deliverPostLog.setDescription(uploadDeliver.getDescription());
|
|
|
|
// deliverPostLog.setTime(now);
|
|
|
|
// deliverPostLog.setIsHistory(0);
|
|
|
|
// deliverPostLogDao.insertSelective(deliverPostLog);
|
|
|
|
// //添加交付物检查人表
|
|
|
|
// if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) {
|
|
|
|
// ProTaskDeliverPostLogChecker postLogChecker;
|
|
|
|
// for (Long checkerId : uploadDeliver.getCheckerIdList()) {
|
|
|
|
// postLogChecker = new ProTaskDeliverPostLogChecker();
|
|
|
|
// postLogChecker.setId(snowflake.nextId());
|
|
|
|
// postLogChecker.setDeliverPostLogId(deliverPostLog.getId());
|
|
|
|
// postLogChecker.setCheckerId(checkerId);
|
|
|
|
// postLogCheckerDao.insertSelective(postLogChecker);
|
|
|
|
// }
|
|
|
|
// } else {
|
|
|
|
// throw new BaseException(CodeEnum.NOT_CHECKER);
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// //修改交付物状态
|
|
|
|
// ProTaskDeliver deliver = new ProTaskDeliver();
|
|
|
|
// deliver.setId(uploadDeliver.getDeliverId());
|
|
|
|
// deliver.setIsUpload(1);
|
|
|
|
// taskDeliverDao.updateByPrimaryKeySelective(deliver);
|
|
|
|
|
|
|
|
// //返回
|
|
|
|
// List<ProjectVo.DeliverInfo> deliverInfoList = taskDeliverDao.selectByDeliverId(uploadDeliver.getDeliverId());
|
|
|
|
// if (CollectionUtil.isNotEmpty(deliverInfoList)) {
|
|
|
|
// deliverInfo = deliverInfoList.get(0);
|
|
|
|
// deliverInfo.setUrl(WebConstant.TEST_URL_BASE + deliverInfo.getUrl());
|
|
|
|
// }
|
|
|
|
|
|
|
|
//返回
|
|
|
|
List<ProjectVo.DeliverInfo> deliverInfoList = taskDeliverDao.selectByDeliverId(uploadDeliver.getDeliverId()); |
|
|
|
if (CollectionUtil.isNotEmpty(deliverInfoList)) { |
|
|
|
deliverInfo = deliverInfoList.get(0); |
|
|
|
deliverInfo.setUrl(WebConstant.TEST_URL_BASE + deliverInfo.getUrl()); |
|
|
|
} |
|
|
|
|
|
|
|
//消息的内容
|
|
|
|
if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) { |
|
|
|
for (Long postLogCheckerId : uploadDeliver.getCheckerIdList()) { |
|
|
|
userIdList.addAll(userService.selectUserIdByRoleId(postLogCheckerId)); |
|
|
|
} |
|
|
|
} |
|
|
|
// Set<String> userIdSet = new HashSet<>();
|
|
|
|
if (CollectionUtil.isNotEmpty(userIdList)) { |
|
|
|
HashSet<Long> h = new HashSet<>(userIdList); |
|
|
|
userIdList.clear(); |
|
|
|
userIdList.addAll(h); |
|
|
|
for (Long userId : userIdList) { |
|
|
|
// userIdSet.add(userId.toString());
|
|
|
|
messageUser = new BaseMessageDto.MessageUser(); |
|
|
|
messageUser.setUserId(userId); |
|
|
|
messageUserList.add(messageUser); |
|
|
|
} |
|
|
|
} |
|
|
|
DeliverMessageWithUploadDto uploadMessage = new DeliverMessageWithUploadDto(); |
|
|
|
DeliverMessageWithUploadDto.Data uploadMessageData = new DeliverMessageWithUploadDto.Data(); |
|
|
|
uploadMessageData.setProjectId(taskDetail.getProjectId()); |
|
|
|
if (role.getName().equals(WebConstant.ROLE_NAME.AllMember.phase)) { |
|
|
|
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, taskDetail.getProjectId()); |
|
|
|
uploadMessageData.setRoleId(roleList.get(0).getId()); |
|
|
|
} else { |
|
|
|
uploadMessageData.setRoleId(taskDetail.getExecutorRole()); |
|
|
|
// //消息的内容
|
|
|
|
// if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) {
|
|
|
|
// for (Long postLogCheckerId : uploadDeliver.getCheckerIdList()) {
|
|
|
|
// userIdList.addAll(userService.selectUserIdByRoleId(postLogCheckerId));
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//// Set<String> userIdSet = new HashSet<>();
|
|
|
|
// if (CollectionUtil.isNotEmpty(userIdList)) {
|
|
|
|
// HashSet<Long> h = new HashSet<>(userIdList);
|
|
|
|
// userIdList.clear();
|
|
|
|
// userIdList.addAll(h);
|
|
|
|
// for (Long userId : userIdList) {
|
|
|
|
//// userIdSet.add(userId.toString());
|
|
|
|
// messageUser = new BaseMessageDto.MessageUser();
|
|
|
|
// messageUser.setUserId(userId);
|
|
|
|
// messageUserList.add(messageUser);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// DeliverMessageWithUploadDto uploadMessage = new DeliverMessageWithUploadDto();
|
|
|
|
// DeliverMessageWithUploadDto.Data uploadMessageData = new DeliverMessageWithUploadDto.Data();
|
|
|
|
// uploadMessageData.setProjectId(taskDetail.getProjectId());
|
|
|
|
// Long roleId;
|
|
|
|
// if (role.getName().equals(WebConstant.ROLE_NAME.AllMember.phase)) {
|
|
|
|
// List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, taskDetail.getProjectId());
|
|
|
|
// roleId = roleList.get(0).getId();
|
|
|
|
// } else {
|
|
|
|
// roleId = taskDetail.getExecutorRole();
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// DeliverMessageWithUploadDto uploadMessage = new DeliverMessageWithUploadDto(taskDetail.getProjectId(),roleId,taskDetail.getId(),
|
|
|
|
// taskDeliver.getId(),taskDeliver.getName(),currentUserId,now,uploadDeliver.getFileInfo(),messageUserList);
|
|
|
|
|
|
|
|
|
|
|
|
// uploadMessageData.setTaskId(taskDetail.getId());
|
|
|
|
// uploadMessageData.setDeliverId(taskDeliver.getId());
|
|
|
|
// uploadMessageData.setDeliverName(taskDeliver.getName());
|
|
|
|
// uploadMessageData.setUploadTime(System.currentTimeMillis());
|
|
|
|
// uploadMessageData.setFile(uploadDeliver.getFileInfo());
|
|
|
|
// uploadMessage.setData(uploadMessageData);
|
|
|
|
// uploadMessage.setReceivers(messageUserList);
|
|
|
|
// log.info("检查交付物:{}",JacksonUtil.beanToJson(uploadMessage));
|
|
|
|
// rabbitTemplate.convertAndSend(RabbitMQConfig.RabbitMQ_QUEUE_NAME,
|
|
|
|
// JacksonUtil.beanToJson(uploadMessage));
|
|
|
|
//
|
|
|
|
// } else {
|
|
|
|
// throw new BaseException(CodeEnum.IS_NOT_EXECUTOR);
|
|
|
|
// }
|
|
|
|
//发送WS信息
|
|
|
|
//获取所有接收者的id
|
|
|
|
List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>(); |
|
|
|
BaseMessageDto.MessageUser messageUser; |
|
|
|
HashSet<Long> userIdSet = new HashSet<>(); |
|
|
|
if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) { |
|
|
|
for (Long postLogCheckerId : uploadDeliver.getCheckerIdList()) { |
|
|
|
userIdSet.addAll(userService.selectUserIdByRoleId(postLogCheckerId)); |
|
|
|
} |
|
|
|
uploadMessageData.setTaskId(taskDetail.getId()); |
|
|
|
uploadMessageData.setDeliverId(d.getId()); |
|
|
|
uploadMessageData.setDeliverName(d.getName()); |
|
|
|
uploadMessageData.setUploadTime(System.currentTimeMillis()); |
|
|
|
uploadMessageData.setFile(uploadDeliver.getFileInfo()); |
|
|
|
uploadMessage.setData(uploadMessageData); |
|
|
|
uploadMessage.setReceivers(messageUserList); |
|
|
|
log.info("检查交付物:{}",JacksonUtil.beanToJson(uploadMessage)); |
|
|
|
rabbitTemplate.convertAndSend(RabbitMQConfig.RabbitMQ_QUEUE_NAME, |
|
|
|
JacksonUtil.beanToJson(uploadMessage)); |
|
|
|
|
|
|
|
} |
|
|
|
for (Long userId : userIdSet) { |
|
|
|
messageUser = new BaseMessageDto.MessageUser(); |
|
|
|
messageUser.setUserId(userId); |
|
|
|
messageUserList.add(messageUser); |
|
|
|
} |
|
|
|
Long roleId; |
|
|
|
if (role.getName().equals(WebConstant.ROLE_NAME.AllMember.phase)) { |
|
|
|
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, taskDetail.getProjectId()); |
|
|
|
roleId = roleList.get(0).getId(); |
|
|
|
} else { |
|
|
|
throw new BaseException(CodeEnum.IS_NOT_EXECUTOR); |
|
|
|
roleId = taskDetail.getExecutorRole(); |
|
|
|
} |
|
|
|
DeliverMessageWithUploadDto uploadMessage = new DeliverMessageWithUploadDto(taskDetail.getProjectId(),roleId,taskDetail.getId(), |
|
|
|
taskDeliver.getId(),taskDeliver.getName(),currentUserId,now,uploadDeliver.getFileInfo(),messageUserList); |
|
|
|
log.info("上传交付物:{}",JacksonUtil.beanToJson(uploadMessage)); |
|
|
|
rabbitTemplate.convertAndSend(RabbitMQConfig.RabbitMQ_QUEUE_NAME, |
|
|
|
JacksonUtil.beanToJson(uploadMessage)); |
|
|
|
//用智能助手发送消息
|
|
|
|
SysProject project = sysProjectDao.selectByPrimaryKey(taskDetail.getProjectId()); |
|
|
|
robotService.addDeliverRobotSend(currentUserId,d.getName(),subTimeId, project); |
|
|
|
|
|
|
|
robotService.addDeliverRobotSend(currentUserId,taskDeliver.getName(),subTimeId, project); |
|
|
|
//返回
|
|
|
|
List<ProjectVo.DeliverInfo> deliverInfoList = taskDeliverDao.selectByDeliverId(uploadDeliver.getDeliverId()); |
|
|
|
if (CollectionUtil.isNotEmpty(deliverInfoList)) { |
|
|
|
deliverInfo = deliverInfoList.get(0); |
|
|
|
deliverInfo.setUrl(WebConstant.TEST_URL_BASE + deliverInfo.getUrl()); |
|
|
|
} |
|
|
|
return deliverInfo; |
|
|
|
} |
|
|
|
|
|
|
|
private void saveWpsFile(Long currentUserId, Long deliverLogId, DeliverDto.FileInfo fileInfo) { |
|
|
|
File file = new File(WebConstant.UPLOAD_PATH_BASE + File.separator + fileInfo.getUrl()); |
|
|
|
if(file.exists()) { |
|
|
|
//添加wps的信息
|
|
|
|
WpsDto.Business business = new WpsDto.Business(); |
|
|
|
business.setBusinessId(deliverLogId); |
|
|
|
business.setWpsFileId(fileInfo.getWpsFileId()); |
|
|
|
business.setBusinessType((byte) 1); |
|
|
|
business.setUserId(currentUserId); |
|
|
|
business.setFileName(fileInfo.getName()); |
|
|
|
business.setFilePath(fileInfo.getUrl()); |
|
|
|
business.setFileSize(file.length()); |
|
|
|
business.setOperation(WebConstant.Wps.USER_OPERATION_NEW); |
|
|
|
business.setPrivilege(WebConstant.Wps.PROJECT_PRIVILEGE_READ); |
|
|
|
wpsService.saveFile(business); |
|
|
|
}else { |
|
|
|
throw new BaseException(CodeEnum.NOT_DELIVER_FILE); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 判断id是taskId还是subTimeId |
|
|
|
*/ |
|
|
@ -340,13 +451,13 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
* 获取任务下所有交付物的信息 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public List<DeliverVo.DeliverInfo> selectTaskDeliver(Long currentUserId, Long taskId) throws Exception { |
|
|
|
public List<DeliverVo.DeliverInfo> selectTaskDeliver(Long currentUserId, Long taskId,String token) throws Exception { |
|
|
|
Long subTimeId = isTaskOrSubTime(taskId); |
|
|
|
if (ObjectUtil.isNull(subTimeId)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
|
} |
|
|
|
List<DeliverVo.DeliverInfo> deliverInfoList = new ArrayList<>(); |
|
|
|
DeliverVo.DeliverInfo deliverInfo = null; |
|
|
|
DeliverVo.DeliverInfo deliverInfo; |
|
|
|
ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(subTimeId); |
|
|
|
if (ObjectUtil.isNotNull(subTimeId)) { |
|
|
|
//获取角色负责人信息
|
|
|
@ -358,7 +469,7 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
if (CollectionUtil.isNotEmpty(taskDeliverList)) { |
|
|
|
for (ProTaskDeliver deliver : taskDeliverList) { |
|
|
|
if (deliver.getIsInput() == 0) { |
|
|
|
deliverInfo = selectDeliverInfo(currentUserId, deliver.getId(), subTimeId); |
|
|
|
deliverInfo = selectDeliverInfo(currentUserId, deliver.getId(), subTimeId,token); |
|
|
|
deliverInfoList.add(deliverInfo); |
|
|
|
} |
|
|
|
} |
|
|
@ -371,7 +482,7 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
* 查看单个交付物的信息 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public DeliverVo.DeliverInfo selectDeliverInfo(Long currentUserId, Long deliverId, Long taskId) throws Exception { |
|
|
|
public DeliverVo.DeliverInfo selectDeliverInfo(Long currentUserId, Long deliverId, Long taskId,String token) throws Exception { |
|
|
|
Long subTimeId = isTaskOrSubTime(taskId); |
|
|
|
if (ObjectUtil.isNull(subTimeId)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
@ -390,7 +501,7 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
} |
|
|
|
//负责人信息
|
|
|
|
List<DeliverVo.DRole> executorRoleList = new ArrayList<>(); |
|
|
|
DeliverVo.DRole executorRole = null; |
|
|
|
DeliverVo.DRole executorRole; |
|
|
|
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(taskSubTimeDao.selectByPrimaryKey(subTimeId).getTaskDetailId()); |
|
|
|
if (ObjectUtil.isNotNull(taskDetail)) { |
|
|
|
ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole()); |
|
|
@ -416,9 +527,9 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
} |
|
|
|
|
|
|
|
//检查人信息
|
|
|
|
List<DeliverVo.Checker> checkerList = null; |
|
|
|
Boolean isChecker = false; |
|
|
|
DeliverVo.Checker checker = null; |
|
|
|
List<DeliverVo.Checker> checkerList; |
|
|
|
boolean isChecker = false; |
|
|
|
DeliverVo.Checker checker; |
|
|
|
//交付物文件的信息按时间排序
|
|
|
|
List<DeliverVo.FilePath> fileIds = taskDeliverDao.selectFileIdByDeliverId(deliver.getId(), subTimeId); |
|
|
|
if (CollectionUtil.isNotEmpty(fileIds)) { |
|
|
@ -476,6 +587,8 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
} |
|
|
|
filePath.setCheckerList(checkerList); |
|
|
|
filePath.setIsChecker(isChecker); |
|
|
|
//获取wps里的文件路径
|
|
|
|
filePath.setWbsFilePaths(wpsService.queryVisitUrls(filePath.getDeliverLogId(), (byte) 1,token)); |
|
|
|
} |
|
|
|
deliverInfo.setFileList(fileIds); |
|
|
|
} |
|
|
@ -486,19 +599,23 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
* 检查人检查交付物 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public DeliverVo.DeliverInfo checkDeliver(Long currentUserId, DeliverDto.CheckDeliver checkDeliver) throws Exception { |
|
|
|
public DeliverVo.DeliverInfo checkDeliver(Long currentUserId, DeliverDto.CheckDeliver checkDeliver,String token) throws Exception { |
|
|
|
Long subTimeId = isTaskOrSubTime(checkDeliver.getTaskId()); |
|
|
|
if (ObjectUtil.isNull(subTimeId)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
|
} |
|
|
|
List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>(); |
|
|
|
BaseMessageDto.MessageUser messageUser = null; |
|
|
|
BaseMessageDto.MessageUser messageUser; |
|
|
|
ProRole checkRole = null; |
|
|
|
Set<String> userIdSet = new HashSet<>(); |
|
|
|
Long uploadUserId = null; |
|
|
|
|
|
|
|
//查找该用户在此项目的角色
|
|
|
|
ProTaskDeliver deliver = taskDeliverDao.selectByPrimaryKey(checkDeliver.getDeliverId()); |
|
|
|
//获取交付物记录
|
|
|
|
ProTaskDeliverPostLog deliverPostLog = deliverPostLogDao.selectByPrimaryKey(checkDeliver.getDeliverLogId()); |
|
|
|
if(ObjectUtil.isNull(deliverPostLog)){ |
|
|
|
throw new BaseException(CodeEnum.NOT_DELIVER); |
|
|
|
} |
|
|
|
//查找交付物信息
|
|
|
|
ProTaskDeliver deliver = taskDeliverDao.selectByPrimaryKey(deliverPostLog.getDeliverId()); |
|
|
|
if(ObjectUtil.isNull(deliver)){ |
|
|
|
throw new BaseException(CodeEnum.NOT_DELIVER); |
|
|
|
} |
|
|
@ -510,15 +627,15 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, task.getProjectId()); |
|
|
|
if (CollectionUtil.isNotEmpty(roleList)) { |
|
|
|
for (ProRole role : roleList) { |
|
|
|
ProTaskDeliverPostLogExample logExample = new ProTaskDeliverPostLogExample(); |
|
|
|
logExample.createCriteria().andDeliverIdEqualTo(checkDeliver.getDeliverId()).andTaskSubTimeIdEqualTo(subTimeId); |
|
|
|
logExample.setOrderByClause("time DESC"); |
|
|
|
List<ProTaskDeliverPostLog> deliverPostLogList = deliverPostLogDao.selectByExample(logExample); |
|
|
|
if (CollectionUtil.isNotEmpty(deliverPostLogList)) { |
|
|
|
ProTaskDeliverPostLog postLog = deliverPostLogList.get(0); |
|
|
|
// ProTaskDeliverPostLogExample logExample = new ProTaskDeliverPostLogExample();
|
|
|
|
// logExample.createCriteria().andDeliverIdEqualTo(checkDeliver.getDeliverId()).andTaskSubTimeIdEqualTo(subTimeId);
|
|
|
|
// logExample.setOrderByClause("time DESC");
|
|
|
|
// List<ProTaskDeliverPostLog> deliverPostLogList = deliverPostLogDao.selectByExample(logExample);
|
|
|
|
// if (CollectionUtil.isNotEmpty(deliverPostLogList)) {
|
|
|
|
// ProTaskDeliverPostLog postLog = deliverPostLogList.get(0);
|
|
|
|
// for (ProTaskDeliverPostLog postLog : deliverPostLogList) {
|
|
|
|
ProTaskDeliverPostLogCheckerExample checkerExample = new ProTaskDeliverPostLogCheckerExample(); |
|
|
|
checkerExample.createCriteria().andDeliverPostLogIdEqualTo(postLog.getId()).andCheckerIdEqualTo(role.getId()); |
|
|
|
checkerExample.createCriteria().andDeliverPostLogIdEqualTo(deliverPostLog.getId()).andCheckerIdEqualTo(role.getId()); |
|
|
|
List<ProTaskDeliverPostLogChecker> postLogCheckerList = postLogCheckerDao.selectByExample(checkerExample); |
|
|
|
if (CollectionUtil.isNotEmpty(postLogCheckerList)) { |
|
|
|
for (ProTaskDeliverPostLogChecker postLogChecker : postLogCheckerList) { |
|
|
@ -533,15 +650,16 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
postLogCheckerDao.updateByPrimaryKeySelective(postLogChecker); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
userIdSet.add(postLog.getUserId().toString()); |
|
|
|
uploadUserId = postLog.getUserId(); |
|
|
|
// }
|
|
|
|
userIdSet.add(deliverPostLog.getUserId().toString()); |
|
|
|
uploadUserId = deliverPostLog.getUserId(); |
|
|
|
checkRole = role; |
|
|
|
// }
|
|
|
|
} |
|
|
|
if (ObjectUtil.isNull(checkRole)) { |
|
|
|
throw new BaseException(CodeEnum.IS_NOT_CHECKER); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
if (ObjectUtil.isNull(checkRole)) { |
|
|
|
throw new BaseException(CodeEnum.IS_NOT_CHECKER); |
|
|
|
} |
|
|
|
} |
|
|
|
//发送消息
|
|
|
@ -583,7 +701,7 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
messageService.sendDeliverMessageWithChecker(inMessage); |
|
|
|
|
|
|
|
//检查完,返回数据
|
|
|
|
DeliverVo.DeliverInfo deliverInfo = selectDeliverInfo(currentUserId, deliver.getId(), checkDeliver.getTaskId()); |
|
|
|
DeliverVo.DeliverInfo deliverInfo = selectDeliverInfo(currentUserId, deliver.getId(), checkDeliver.getTaskId(),token); |
|
|
|
//用智能助手发送消息+ws/公众号发送
|
|
|
|
robotService.checkDeliverRobotSend(currentUserId,task,uploadUserId,deliver.getName()); |
|
|
|
return deliverInfo; |
|
|
@ -620,7 +738,7 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
//获取日期的开始结束时间
|
|
|
|
Long startMillisTime = null; |
|
|
|
Long endMillisTime = null; |
|
|
|
Map<String, Long> timeMap = null; |
|
|
|
Map<String, Long> timeMap; |
|
|
|
if (StrUtil.isNotEmpty(start)) { |
|
|
|
timeMap = DateUtil.projectFormatDateTime(start); |
|
|
|
startMillisTime = timeMap.get("startMillisTime"); |
|
|
@ -784,7 +902,7 @@ public class TaskDeliverService implements ITaskDeliverService { |
|
|
|
|
|
|
|
/** |
|
|
|
* 删除任务下的交付物(彻底删除) |
|
|
|
* @param taskId |
|
|
|
* @param taskId 任务id |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void deleteDeliverByTaskId(Long taskId) { |
|
|
|