|
|
@@ -1,59 +1,41 @@
|
|
|
package com.xjrsoft.module.material.service.impl;
|
|
|
|
|
|
-import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
-import cn.hutool.core.util.ObjectUtil;
|
|
|
-import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import com.xjrsoft.common.constant.GlobalConstant;
|
|
|
import com.xjrsoft.common.enums.MaterialCategoryEnum;
|
|
|
-import com.xjrsoft.common.model.result.RT;
|
|
|
-import com.xjrsoft.common.page.ConventPage;
|
|
|
-import com.xjrsoft.common.utils.LocalDateTimeUtil;
|
|
|
import com.xjrsoft.common.utils.RedisUtil;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.config.CommonPropertiesConfig;
|
|
|
-import com.xjrsoft.module.material.dto.AddMaterialTaskAppendixDto;
|
|
|
-import com.xjrsoft.module.material.dto.AddMaterialTaskDto;
|
|
|
-import com.xjrsoft.module.material.dto.MaterialAssignUserDto;
|
|
|
-import com.xjrsoft.module.material.dto.MaterialTaskAssignAppendixDto;
|
|
|
-import com.xjrsoft.module.material.entity.MaterialTask;
|
|
|
-import com.xjrsoft.module.material.entity.MaterialTaskAppendix;
|
|
|
-import com.xjrsoft.module.material.entity.MaterialTaskAssign;
|
|
|
-import com.xjrsoft.module.material.entity.MaterialType;
|
|
|
+import com.xjrsoft.module.material.dto.*;
|
|
|
+import com.xjrsoft.module.material.entity.*;
|
|
|
import com.xjrsoft.module.material.mapper.MaterialTaskAppendixMapper;
|
|
|
import com.xjrsoft.module.material.mapper.MaterialTaskAssignMapper;
|
|
|
import com.xjrsoft.module.material.mapper.MaterialTaskMapper;
|
|
|
import com.xjrsoft.module.material.service.IMaterialTaskService;
|
|
|
import com.xjrsoft.module.material.service.IMaterialTypeService;
|
|
|
-import com.xjrsoft.module.material.vo.MaterialTaskAppendixVo;
|
|
|
-import com.xjrsoft.module.material.vo.MaterialTaskPageVo;
|
|
|
+import com.xjrsoft.module.material.vo.MaterialTaskAssignListVo;
|
|
|
import com.xjrsoft.module.material.vo.MaterialTaskVo;
|
|
|
import com.xjrsoft.module.material.vo.MaterialTypeVo;
|
|
|
-import com.xjrsoft.module.oa.entity.News;
|
|
|
-import com.xjrsoft.module.oa.entity.NewsRelation;
|
|
|
-import com.xjrsoft.module.oa.vo.NewsRelationVo;
|
|
|
import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
|
|
|
import com.xjrsoft.module.organization.entity.Department;
|
|
|
import com.xjrsoft.module.organization.entity.User;
|
|
|
+import com.xjrsoft.module.organization.entity.UserDeptRelation;
|
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
|
import com.xjrsoft.module.organization.service.IWeChatService;
|
|
|
import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
-import com.xjrsoft.module.system.entity.File;
|
|
|
import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.time.format.DateTimeFormatter;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
@@ -201,8 +183,21 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
|
|
|
MaterialTaskAssign materialTaskAssign = materialTaskMaterialTaskAssignMapper.selectByIdDeep(materialTaskAssignAppendixDto.getMaterialTaskAssignId());
|
|
|
Integer oldStatus = materialTaskAssign.getStatus();
|
|
|
materialTaskAssign.setStatus(2);
|
|
|
+
|
|
|
if (oldStatus == 1) {
|
|
|
MaterialTask materialTask = materialTaskMaterialTaskMapper.selectByIdDeep(materialTaskAssign.getMaterialTaskId());
|
|
|
+
|
|
|
+ LocalDate requiredCompleteTime = materialTask.getRequiredCompleteTime();
|
|
|
+ LocalDate today = materialTask.getRequiredCompleteTime();
|
|
|
+
|
|
|
+ int comparison = today.compareTo(requiredCompleteTime);
|
|
|
+ if (comparison > 0) {//超时提交
|
|
|
+ materialTaskAssign.setExecutiveStatus(3);
|
|
|
+ materialTask.setTimeDelay(materialTask.getTimeDelay() + 1);
|
|
|
+ } else {//准时提交(包含当天)
|
|
|
+ materialTaskAssign.setExecutiveStatus(2);
|
|
|
+ materialTask.setOnTimePerson(materialTask.getOnTimePerson() + 1);
|
|
|
+ }
|
|
|
materialTask.setSubmitedPerson(materialTask.getSubmitedPerson() + 1);
|
|
|
materialTaskMaterialTaskMapper.updateById(materialTask);
|
|
|
}
|
|
|
@@ -308,6 +303,43 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<MaterialTaskAssignListVo> assignList(MaterialTaskAssignListDto dto) {
|
|
|
+
|
|
|
+ MPJLambdaWrapper<MaterialTaskAssign> queryWrapper = new MPJLambdaWrapper<>();
|
|
|
+ queryWrapper
|
|
|
+ .distinct()
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .like(dto.getName() != null && !dto.getName().equals(""), XjrUser::getName, dto.getName())
|
|
|
+ .eq(MaterialTaskAssign::getMaterialTaskId, dto.getMaterialTaskId())
|
|
|
+ .eq(dto.getState() != null, MaterialTaskAssign::getStatus, dto.getState())
|
|
|
+ .select(MaterialTaskAssign::getId)
|
|
|
+ .selectAs(XjrUser::getName, MaterialTaskAssignListVo::getName)
|
|
|
+ .selectAs(MaterialTaskAppendix::getFileId, MaterialTaskAssignListVo::getFolderId)
|
|
|
+ .selectAs(MaterialTaskAppendix::getFileId, MaterialTaskAssignListVo::getFormReleaseId)
|
|
|
+ .select(MaterialTask::getMaterialCategory)
|
|
|
+ .select(MaterialTaskAssign.class, x -> VoToColumnUtil.fieldsToColumns(MaterialTaskAssignListVo.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(XjrUser.class, XjrUser::getId, MaterialTaskAssign::getUserId, ext -> ext.selectAs(XjrUser::getUserName, MaterialTaskAssignListVo::getUserName))
|
|
|
+ .leftJoin(UserDeptRelation.class, UserDeptRelation::getUserId, MaterialTypeAssign::getUserId)
|
|
|
+ .leftJoin(Department.class, Department::getId, UserDeptRelation::getDeptId, ext -> ext.selectAs(Department::getName, MaterialTaskAssignListVo::getDeptName))
|
|
|
+ .leftJoin(MaterialTask.class, MaterialTask::getId, MaterialTaskAssign::getMaterialTaskId)
|
|
|
+ .leftJoin(MaterialTaskAppendix.class, MaterialTaskAppendix::getMaterialTaskId, MaterialTaskAssign::getId)
|
|
|
+// .select("(\n" +
|
|
|
+// "SELECT id FROM xjr_file WHERE id IN (\n" +
|
|
|
+// "SELECT file_id FROM material_task_appendix WHERE material_task_id = t.id\n" +
|
|
|
+// ") ORDER BY create_date DESC LIMIT 1\n" +
|
|
|
+// ") AS folderId ")
|
|
|
+ ;
|
|
|
+
|
|
|
+ List<MaterialTaskAssignListVo> pageOutput = materialTaskMaterialTaskAssignMapper.selectJoinList(MaterialTaskAssignListVo.class, queryWrapper);
|
|
|
+
|
|
|
+ for (MaterialTaskAssignListVo materialTaskAssignListVo : pageOutput){
|
|
|
+ materialTypeService.handleFileAndTemplate(materialTaskAssignListVo, materialTaskAssignListVo.getMaterialCategory());
|
|
|
+ }
|
|
|
+
|
|
|
+ return pageOutput;
|
|
|
+ }
|
|
|
+
|
|
|
private boolean sendMessageUtil(MaterialTask materialTask ) {
|
|
|
IUserService userService = SpringUtil.getBean(IUserService.class);
|
|
|
RedisUtil redisUtil = SpringUtil.getBean(RedisUtil.class);
|