|
@@ -20,11 +20,14 @@ import org.jetbrains.annotations.NotNull;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springblade.archive.dto.ArchiveTaskDTO;
|
|
import org.springblade.archive.dto.ArchiveTaskDTO;
|
|
|
|
+import org.springblade.archive.dto.SaveApplyDTO;
|
|
|
|
+import org.springblade.archive.feign.ArchiveAutoClient;
|
|
import org.springblade.archive.vo.ArchiveTaskPageVO;
|
|
import org.springblade.archive.vo.ArchiveTaskPageVO;
|
|
import org.springblade.business.dto.*;
|
|
import org.springblade.business.dto.*;
|
|
import org.springblade.business.entity.*;
|
|
import org.springblade.business.entity.*;
|
|
import org.springblade.business.service.*;
|
|
import org.springblade.business.service.*;
|
|
import org.springblade.business.socket.WebSocket;
|
|
import org.springblade.business.socket.WebSocket;
|
|
|
|
+import org.springblade.business.utils.StringSPUtils;
|
|
import org.springblade.business.vo.*;
|
|
import org.springblade.business.vo.*;
|
|
import org.springblade.common.utils.CommonUtil;
|
|
import org.springblade.common.utils.CommonUtil;
|
|
import org.springblade.common.utils.SnowFlakeUtil;
|
|
import org.springblade.common.utils.SnowFlakeUtil;
|
|
@@ -46,6 +49,7 @@ import org.springblade.feign.ArchiveFileTaskClient;
|
|
import org.springblade.flow.core.entity.BladeFlow;
|
|
import org.springblade.flow.core.entity.BladeFlow;
|
|
import org.springblade.flow.core.feign.NewFlowClient;
|
|
import org.springblade.flow.core.feign.NewFlowClient;
|
|
import org.springblade.flow.core.vo.SendPageVO;
|
|
import org.springblade.flow.core.vo.SendPageVO;
|
|
|
|
+import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
|
|
import org.springblade.manager.entity.ContractInfo;
|
|
import org.springblade.manager.entity.ContractInfo;
|
|
import org.springblade.manager.entity.ContractRelationJlyz;
|
|
import org.springblade.manager.entity.ContractRelationJlyz;
|
|
import org.springblade.manager.entity.ProjectInfo;
|
|
import org.springblade.manager.entity.ProjectInfo;
|
|
@@ -56,11 +60,14 @@ import org.springblade.resource.feign.NewISmsClient;
|
|
import org.springblade.system.entity.DictBiz;
|
|
import org.springblade.system.entity.DictBiz;
|
|
import org.springblade.system.entity.Role;
|
|
import org.springblade.system.entity.Role;
|
|
import org.springblade.system.feign.IDictBizClient;
|
|
import org.springblade.system.feign.IDictBizClient;
|
|
|
|
+import org.springblade.system.user.dto.UserDTO;
|
|
import org.springblade.system.user.entity.User;
|
|
import org.springblade.system.user.entity.User;
|
|
|
|
+import org.springblade.system.user.feign.IUserClient;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
@@ -101,6 +108,8 @@ public class TaskController extends BladeController {
|
|
private final EVisaClient eVisaClient;
|
|
private final EVisaClient eVisaClient;
|
|
private final ExcelTabClient excelTabClient;
|
|
private final ExcelTabClient excelTabClient;
|
|
private final ArchiveFileTaskClient archiveFileTaskClient;
|
|
private final ArchiveFileTaskClient archiveFileTaskClient;
|
|
|
|
+ private final IUserClient userClient;
|
|
|
|
+ private final ArchiveAutoClient archiveClient;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 记录短信验证码超时时间
|
|
* 记录短信验证码超时时间
|
|
@@ -625,6 +634,7 @@ public class TaskController extends BladeController {
|
|
@PostMapping("/batch-complete-approval-task-archive")
|
|
@PostMapping("/batch-complete-approval-task-archive")
|
|
@ApiOperationSupport(order = 8)
|
|
@ApiOperationSupport(order = 8)
|
|
@ApiOperation(value = "批量审批(档案 垂直审批)")
|
|
@ApiOperation(value = "批量审批(档案 垂直审批)")
|
|
|
|
+ @Transactional
|
|
public R<Boolean> batchCompleteApprovalTaskArchive(@RequestBody TaskArchiveOuterLayerDTO taskArchiveOuterLayerDTO) throws IOException {
|
|
public R<Boolean> batchCompleteApprovalTaskArchive(@RequestBody TaskArchiveOuterLayerDTO taskArchiveOuterLayerDTO) throws IOException {
|
|
if (ObjectUtil.isEmpty(SecureUtil.getUser()) || ObjectUtil.isEmpty(SecureUtil.getUserId()) || SecureUtil.getUserId().equals(-1L)) {
|
|
if (ObjectUtil.isEmpty(SecureUtil.getUser()) || ObjectUtil.isEmpty(SecureUtil.getUserId()) || SecureUtil.getUserId().equals(-1L)) {
|
|
throw new ServiceException("未获取到当前登陆的用户信息,操作失败");
|
|
throw new ServiceException("未获取到当前登陆的用户信息,操作失败");
|
|
@@ -644,8 +654,74 @@ public class TaskController extends BladeController {
|
|
for (TaskArchiveDTO taskArchiveDTO : taskArchiveOuterLayerDTO.getTaskArchiveDtoList()) {
|
|
for (TaskArchiveDTO taskArchiveDTO : taskArchiveOuterLayerDTO.getTaskArchiveDtoList()) {
|
|
if (StringUtils.isNotEmpty(taskArchiveDTO.getTaskId())) {
|
|
if (StringUtils.isNotEmpty(taskArchiveDTO.getTaskId())) {
|
|
//通过checkArchiveTaskUserByCurrent检查,说明当前登陆用户是该条任务的审批人,修改审批任务状态
|
|
//通过checkArchiveTaskUserByCurrent检查,说明当前登陆用户是该条任务的审批人,修改审批任务状态
|
|
- Task task = jdbcTemplate.queryForObject("select process_instance_id,form_data_id from u_task where id = " + taskArchiveDTO.getTaskId(), new BeanPropertyRowMapper<>(Task.class));
|
|
|
|
|
|
+ Task task = jdbcTemplate.queryForObject("select id,contract_id,project_id,process_instance_id,form_data_id,type,archive_ids from u_task where id = " + taskArchiveDTO.getTaskId(), new BeanPropertyRowMapper<>(Task.class));
|
|
if (task != null) {
|
|
if (task != null) {
|
|
|
|
+ //判断任务类型是否是验收任务,档案验收任务单独处理修改状态直接返回
|
|
|
|
+ if (task.getType() == 2){
|
|
|
|
+ //是验收任务直接获取所有的副任务
|
|
|
|
+ List<TaskParallel> parallelList = taskParallelService.list(new LambdaQueryWrapper<TaskParallel>().eq(TaskParallel::getProcessInstanceId, task.getId()));
|
|
|
|
+ //修改当前用户的副任务状态,保存
|
|
|
|
+ for (TaskParallel taskParallel : parallelList) {
|
|
|
|
+ if (taskParallel.getTaskUser().equals(AuthUtil.getUserId()+"")){
|
|
|
|
+ taskParallel.setStatus(2);
|
|
|
|
+ taskParallel.setEVisaStatus(1);
|
|
|
|
+ taskParallelService.updateById(taskParallel);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ parallelList.removeIf(l->l.getStatus() == 2);
|
|
|
|
+ //判断是否所有副任务都是完成状态
|
|
|
|
+ if (parallelList.size() == 0) {
|
|
|
|
+ //都是完成状态,则修改主任务的状态
|
|
|
|
+ task.setStatus(2);
|
|
|
|
+ taskService.updateById(task);
|
|
|
|
+ //保存专家账号
|
|
|
|
+ String formDataId = task.getFormDataId();
|
|
|
|
+ List<SaveApplyDTO.ExpertInfo> expertInfoList = JSON.parseArray(formDataId, SaveApplyDTO.ExpertInfo.class);
|
|
|
|
+ for (SaveApplyDTO.ExpertInfo expertInfo : expertInfoList) {
|
|
|
|
+ UserDTO dto = new UserDTO();
|
|
|
|
+ String phone = expertInfo.getPhone();
|
|
|
|
+ String name = expertInfo.getName();
|
|
|
|
+ dto.setTenantId(AuthUtil.getTenantId());
|
|
|
|
+ dto.setAccount("expert"+phone);
|
|
|
|
+ StringSPUtils stringSPUtils = new StringSPUtils();
|
|
|
|
+ dto.setPassword(stringSPUtils.getStringSP(name)+phone);
|
|
|
|
+ dto.setUserType("3");
|
|
|
|
+ dto.setRealName(name);
|
|
|
|
+ dto.setPhone(phone);
|
|
|
|
+ dto.setDeptId(AuthUtil.getDeptId());
|
|
|
|
+ dto.setStatus(1);
|
|
|
|
+ List<SaveUserInfoByProjectDTO> list = new ArrayList<>();
|
|
|
|
+ SaveUserInfoByProjectDTO projectDTO = new SaveUserInfoByProjectDTO();
|
|
|
|
+ projectDTO.setProjectId(task.getProjectId());
|
|
|
|
+ //专家合同段设置为指挥部
|
|
|
|
+ projectDTO.setContractId(task.getContractId());
|
|
|
|
+ //判断是否为组长
|
|
|
|
+ if (expertInfo.getIsLeader() == 0){
|
|
|
|
+ projectDTO.setRoleId("1656191770880864257");
|
|
|
|
+ }else {
|
|
|
|
+ projectDTO.setRoleId("1656191696348082177");
|
|
|
|
+ }
|
|
|
|
+ list.add(projectDTO);
|
|
|
|
+ dto.setProjectAndUserList(list);
|
|
|
|
+ //单个保存专家信息
|
|
|
|
+ R<Boolean> booleanR = userClient.saveUserDTO(dto);
|
|
|
|
+ if (booleanR.getData() == null || booleanR.getData() != true){
|
|
|
|
+ throw new ServiceException("保存专家账号失败");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //修改档案类型
|
|
|
|
+ String archiveIds = task.getArchiveIds();
|
|
|
|
+ if (StringUtils.isNotBlank(archiveIds)){
|
|
|
|
+ List<Long> longs = Func.toLongList(archiveIds);
|
|
|
|
+ R<Boolean> booleanR = archiveClient.batchUpdateIsApply(1, longs);
|
|
|
|
+ if (booleanR.getData() == null || booleanR.getData() != true){
|
|
|
|
+ throw new ServiceException("修改档案类型失败");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return R.data(true);
|
|
|
|
+ }
|
|
org.springblade.evisa.vo.TaskArchiveDTO eVisaObj = new org.springblade.evisa.vo.TaskArchiveDTO();
|
|
org.springblade.evisa.vo.TaskArchiveDTO eVisaObj = new org.springblade.evisa.vo.TaskArchiveDTO();
|
|
BeanUtils.copyProperties(taskArchiveDTO, eVisaObj);
|
|
BeanUtils.copyProperties(taskArchiveDTO, eVisaObj);
|
|
eVisaObj.setType(1); //审批
|
|
eVisaObj.setType(1); //审批
|
|
@@ -701,8 +777,23 @@ public class TaskController extends BladeController {
|
|
return R.data(true);
|
|
return R.data(true);
|
|
|
|
|
|
} else {
|
|
} else {
|
|
- //废除任务
|
|
|
|
List<String> taskIds = taskArchiveOuterLayerDTO.getTaskArchiveDtoList().stream().map(TaskArchiveDTO::getTaskId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
|
|
List<String> taskIds = taskArchiveOuterLayerDTO.getTaskArchiveDtoList().stream().map(TaskArchiveDTO::getTaskId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
|
|
|
|
+ //判断任务类型是否是验收任务,档案验收任务单独处理修改状态直接返回
|
|
|
|
+ if (taskArchiveOuterLayerDTO.getTaskArchiveDtoList().get(0) == null || taskArchiveOuterLayerDTO.getTaskArchiveDtoList().get(0).getTaskId() == null){
|
|
|
|
+ throw new ServiceException("参数错误,请传入任务id");
|
|
|
|
+ }
|
|
|
|
+ Task task = jdbcTemplate.queryForObject("select id,type from u_task where id = " + taskArchiveOuterLayerDTO.getTaskArchiveDtoList().get(0).getTaskId(), new BeanPropertyRowMapper<>(Task.class));
|
|
|
|
+ if (task != null) {
|
|
|
|
+ //判断任务类型是否是验收任务,档案验收任务单独处理修改状态直接返回
|
|
|
|
+ if (task.getType() == 2) {
|
|
|
|
+ //修改主任务表
|
|
|
|
+ jdbcTemplate.execute("UPDATE u_task set status = 3 WHERE id in (" +StringUtils.join(taskIds, ",")+")");
|
|
|
|
+ //修改副任务表
|
|
|
|
+ jdbcTemplate.execute("UPDATE u_task_parallel set status = 3 WHERE process_instance_id in (\'"+ StringUtils.join(taskIds, "','")+"\')");
|
|
|
|
+ return R.data(true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //废除任务
|
|
ArchiveTaskBatchRepealDTO dto = new ArchiveTaskBatchRepealDTO();
|
|
ArchiveTaskBatchRepealDTO dto = new ArchiveTaskBatchRepealDTO();
|
|
dto.setType(2);
|
|
dto.setType(2);
|
|
dto.setIds(StringUtils.join(taskIds, ","));
|
|
dto.setIds(StringUtils.join(taskIds, ","));
|
|
@@ -1459,7 +1550,7 @@ public class TaskController extends BladeController {
|
|
//封装入参SQL
|
|
//封装入参SQL
|
|
List<Object> params = new ArrayList<>();
|
|
List<Object> params = new ArrayList<>();
|
|
Integer eVisaStatus = dto.getVisaStatus();
|
|
Integer eVisaStatus = dto.getVisaStatus();
|
|
- StringBuilder sqlString = new StringBuilder("SELECT * FROM u_task WHERE 1=1 AND status = " + eVisaStatus + " AND approval_type != 4 AND contract_id = " + dto.getContractId()); //approval_type != 4 非档案的任务就是1填报资料,2工程文件,3日志资料
|
|
|
|
|
|
+ StringBuilder sqlString = new StringBuilder("SELECT * FROM u_task WHERE approval_type != 4 AND contract_id = " + dto.getContractId()); //approval_type != 4 非档案的任务就是1填报资料,2工程文件,3日志资料
|
|
|
|
|
|
if (StringUtils.isNotBlank(dto.getStartTimeValue()) && StringUtils.isNotBlank(dto.getEndTimeValue())) {
|
|
if (StringUtils.isNotBlank(dto.getStartTimeValue()) && StringUtils.isNotBlank(dto.getEndTimeValue())) {
|
|
if (dto.getStartTimeValue().equals(dto.getEndTimeValue())) {
|
|
if (dto.getStartTimeValue().equals(dto.getEndTimeValue())) {
|
|
@@ -1481,18 +1572,19 @@ public class TaskController extends BladeController {
|
|
//根据每个审批人的情况判断是否成功
|
|
//根据每个审批人的情况判断是否成功
|
|
if (eVisaStatus == 1) {
|
|
if (eVisaStatus == 1) {
|
|
if (StringUtils.isNotBlank(dto.getEVisaUserName())) {
|
|
if (StringUtils.isNotBlank(dto.getEVisaUserName())) {
|
|
- sqlString.append(" AND EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.e_visa_status = 99 AND u_task_parallel.status != 3 AND u_task_parallel.task_user_name LIKE ?)");
|
|
|
|
|
|
+ sqlString.append(" AND (SELECT COUNT(1) FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id and task_user_name LIKE ? AND is_deleted=0) = 1");
|
|
params.add("%" + dto.getEVisaUserName() + "%");
|
|
params.add("%" + dto.getEVisaUserName() + "%");
|
|
- } else {
|
|
|
|
- sqlString.append(" AND EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.e_visa_status = 99 AND u_task_parallel.status != 3)");
|
|
|
|
}
|
|
}
|
|
|
|
+ sqlString.append(" AND (SELECT COUNT(1) FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.e_visa_status = 99" +
|
|
|
|
+ " AND u_task_parallel.status != 3 and is_deleted=0) > 0");
|
|
} else {
|
|
} else {
|
|
if (StringUtils.isNotBlank(dto.getEVisaUserName())) {
|
|
if (StringUtils.isNotBlank(dto.getEVisaUserName())) {
|
|
- sqlString.append(" AND EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.e_visa_status = 1 AND u_task_parallel.status = 2 AND u_task_parallel.task_user_name LIKE ?)");
|
|
|
|
|
|
+ sqlString.append(" AND (SELECT COUNT(1) FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id and task_user_name LIKE ? AND is_deleted=0) = 1");
|
|
params.add("%" + dto.getEVisaUserName() + "%");
|
|
params.add("%" + dto.getEVisaUserName() + "%");
|
|
- } else {
|
|
|
|
- sqlString.append(" AND EXISTS (SELECT 1 FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.e_visa_status = 1 AND u_task_parallel.status = 2)");
|
|
|
|
}
|
|
}
|
|
|
|
+ sqlString.append(" AND (SELECT COUNT(1) FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id and is_deleted=0) =" +
|
|
|
|
+ "(SELECT COUNT(1) FROM u_task_parallel WHERE u_task.process_instance_id = u_task_parallel.process_instance_id AND u_task_parallel.e_visa_status = 1 AND u_task_parallel.status = 2 and is_deleted=0)");
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
//总数量
|
|
//总数量
|