|
|
@@ -33,12 +33,14 @@ 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.MaterialTaskAssignListVo;
|
|
|
+import com.xjrsoft.module.material.vo.MaterialTaskAssignUserVo;
|
|
|
import com.xjrsoft.module.material.vo.MaterialTaskVo;
|
|
|
import com.xjrsoft.module.material.vo.MaterialTypeVo;
|
|
|
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.entity.UserRoleRelation;
|
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
|
import com.xjrsoft.module.organization.service.IWeChatService;
|
|
|
import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
|
|
|
@@ -50,9 +52,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -81,20 +81,22 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
|
|
|
MaterialTask materialTask = BeanUtil.toBean(dto, MaterialTask.class);
|
|
|
|
|
|
//梳理提交人
|
|
|
- List<MaterialTaskAssign> materialTaskAssignList = new ArrayList<>();
|
|
|
+ Map<Long, MaterialTaskAssign> materialTaskAssignMap = new HashMap<>();
|
|
|
for (MaterialAssignUserDto materialAssignUserDto : dto.getUserList()){
|
|
|
if(materialAssignUserDto.getUserType() == 1){
|
|
|
List<XjrUserVo> xjrUserVos = xjrUserService.selectJoinList(XjrUserVo.class,
|
|
|
new MPJLambdaWrapper<XjrUser>()
|
|
|
.leftJoin(UserDeptRelation.class, UserDeptRelation::getUserId, XjrUser::getId)
|
|
|
+ .leftJoin(UserRoleRelation.class, UserRoleRelation::getUserId, XjrUser::getId)
|
|
|
.eq(UserDeptRelation::getDeptId, materialAssignUserDto.getUserId())
|
|
|
+ .eq(UserRoleRelation::getRoleId, 2)
|
|
|
.eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
);
|
|
|
for (XjrUserVo xjrUserVo : xjrUserVos) {
|
|
|
- materialTaskAssignList.add(new MaterialTaskAssign(){{
|
|
|
+ materialTaskAssignMap.put(xjrUserVo.getId(), new MaterialTaskAssign(){{
|
|
|
setUserId(xjrUserVo.getId());
|
|
|
- setUserType(materialAssignUserDto.getUserType());
|
|
|
- setUserNumber(xjrUserVo.getName());
|
|
|
+ setUserType(1);
|
|
|
+ setUserNumber(xjrUserVo.getUserName());
|
|
|
setStatus(1);
|
|
|
setExecutiveStatus(1);
|
|
|
setSendMessage(dto.getSendMessage());
|
|
|
@@ -108,27 +110,40 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
|
|
|
.eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
);
|
|
|
for (XjrUserVo xjrUserVo : xjrUserVos) {
|
|
|
- materialTaskAssignList.add(new MaterialTaskAssign(){{
|
|
|
+ materialTaskAssignMap.put(xjrUserVo.getId(), new MaterialTaskAssign(){{
|
|
|
setUserId(xjrUserVo.getId());
|
|
|
- setUserType(materialAssignUserDto.getUserType());
|
|
|
- setUserNumber(xjrUserVo.getName());
|
|
|
+ setUserType(2);
|
|
|
+ setUserNumber(xjrUserVo.getUserName());
|
|
|
setStatus(1);
|
|
|
setExecutiveStatus(1);
|
|
|
setSendMessage(dto.getSendMessage());
|
|
|
}});
|
|
|
}
|
|
|
}else if(materialAssignUserDto.getUserType() == 3){
|
|
|
- materialTaskAssignList.add(new MaterialTaskAssign(){{
|
|
|
- setUserId(materialAssignUserDto.getUserId());
|
|
|
- setUserType(materialAssignUserDto.getUserType());
|
|
|
- setUserNumber(materialAssignUserDto.getUserNumber());
|
|
|
- setStatus(1);
|
|
|
- setExecutiveStatus(1);
|
|
|
- setSendMessage(dto.getSendMessage());
|
|
|
- }});
|
|
|
+ MaterialTaskAssignUserVo materialTaskAssignUserVo = xjrUserService.selectJoinOne(MaterialTaskAssignUserVo.class,
|
|
|
+ new MPJLambdaWrapper<XjrUser>()
|
|
|
+ .select(XjrUser::getId)
|
|
|
+ .selectAs(XjrUser::getUserName, MaterialTaskAssignUserVo::getUserName)
|
|
|
+ .selectAs(UserRoleRelation::getRoleId, MaterialTaskAssignUserVo::getRoleId)
|
|
|
+ .leftJoin(UserRoleRelation.class, UserRoleRelation::getUserId, XjrUser::getId)
|
|
|
+ .eq(XjrUser::getId, materialAssignUserDto.getUserId())
|
|
|
+ .eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+ if(materialTaskAssignUserVo != null){
|
|
|
+ materialTaskAssignMap.put(materialTaskAssignUserVo.getId(), new MaterialTaskAssign(){{
|
|
|
+ setUserId(materialAssignUserDto.getUserId());
|
|
|
+ setUserType(materialTaskAssignUserVo.getRoleId() == 3 ? 2 : 1);
|
|
|
+ setUserNumber(materialTaskAssignUserVo.getUserName());
|
|
|
+ setStatus(1);
|
|
|
+ setExecutiveStatus(1);
|
|
|
+ setSendMessage(dto.getSendMessage());
|
|
|
+ }});
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ List<MaterialTaskAssign> materialTaskAssignList = new ArrayList<>(materialTaskAssignMap.values());
|
|
|
+
|
|
|
//新增任务
|
|
|
materialTask.setStatus(2);
|
|
|
if(dto.getUserList() != null && !dto.getUserList().isEmpty()){
|
|
|
@@ -415,24 +430,24 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
|
|
|
queryWrapper
|
|
|
.disableSubLogicDel()
|
|
|
.distinct()
|
|
|
- .like(dto.getName() != null && !"".equals(dto.getName()), 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)
|
|
|
+ .selectAs(MaterialTask::getMaterialCategory, MaterialTaskAssignListVo::getMaterialCategory)
|
|
|
+ .select(XjrUser.class, x -> VoToColumnUtil.fieldsToColumns(MaterialTaskAssignListVo.class).contains(x.getProperty()))
|
|
|
.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)
|
|
|
- .eq(MaterialTaskAssign::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ .like(dto.getName() != null && !"".equals(dto.getName()), XjrUser::getName, dto.getName())
|
|
|
+ .eq(MaterialTaskAssign::getMaterialTaskId, dto.getMaterialTaskId())
|
|
|
+ .eq(dto.getState() != null, MaterialTaskAssign::getStatus, dto.getState())
|
|
|
.eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
.eq(Department::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
.eq(MaterialTask::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ .eq(MaterialTaskAssign::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
// .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" +
|