feat(training): 完善培训申请审批流程功能
parent
fe8d01ed72
commit
9ee765bf4f
|
|
@ -33,7 +33,7 @@ import java.util.ArrayList;
|
||||||
public class TrainingApplyProcessController {
|
public class TrainingApplyProcessController {
|
||||||
private final TrainingApplyProcessServiceI trainingApplyProcessService;
|
private final TrainingApplyProcessServiceI trainingApplyProcessService;
|
||||||
|
|
||||||
@ApiOperation("新增")
|
@ApiOperation("新增(委托)")
|
||||||
@PostMapping("/save")
|
@PostMapping("/save")
|
||||||
public SingleResponse<TrainingApplyProcessCO> add(@Validated @RequestBody TrainingApplyProcessAddCmd cmd) {
|
public SingleResponse<TrainingApplyProcessCO> add(@Validated @RequestBody TrainingApplyProcessAddCmd cmd) {
|
||||||
SSOUser ssoUser = AuthContext.getCurrentUser();
|
SSOUser ssoUser = AuthContext.getCurrentUser();
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package com.zcloud.edu.command.query.training;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.zcloud.edu.command.convertor.training.TrainingApplyProcessCoConvertor;
|
import com.zcloud.edu.command.convertor.training.TrainingApplyProcessCoConvertor;
|
||||||
|
import com.zcloud.edu.domain.enums.ApplyTypeEnum;
|
||||||
import com.zcloud.edu.domain.model.training.TrainingApplyProcessNodeE;
|
import com.zcloud.edu.domain.model.training.TrainingApplyProcessNodeE;
|
||||||
import com.zcloud.edu.dto.clientobject.training.FlowCO;
|
import com.zcloud.edu.dto.clientobject.training.FlowCO;
|
||||||
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessFlowVO;
|
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessFlowVO;
|
||||||
|
|
@ -9,7 +10,10 @@ import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessNodeCO;
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyProcessPageQry;
|
import com.zcloud.edu.dto.training.TrainingApplyProcessPageQry;
|
||||||
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessCO;
|
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessCO;
|
||||||
import com.zcloud.edu.persistence.dataobject.TrainingApplyProcessDO;
|
import com.zcloud.edu.persistence.dataobject.TrainingApplyProcessDO;
|
||||||
|
import com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO;
|
||||||
import com.zcloud.edu.persistence.repository.training.TrainingApplyProcessRepository;
|
import com.zcloud.edu.persistence.repository.training.TrainingApplyProcessRepository;
|
||||||
|
import com.zcloud.edu.persistence.repository.training.TrainingApplyRecordRepository;
|
||||||
|
import com.zcloud.gbscommon.utils.DateUtil;
|
||||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|
@ -29,6 +33,7 @@ import java.util.stream.Collectors;
|
||||||
public class TrainingApplyProcessQueryExe {
|
public class TrainingApplyProcessQueryExe {
|
||||||
private final TrainingApplyProcessRepository trainingApplyProcessRepository;
|
private final TrainingApplyProcessRepository trainingApplyProcessRepository;
|
||||||
private final TrainingApplyProcessCoConvertor trainingApplyProcessCoConvertor;
|
private final TrainingApplyProcessCoConvertor trainingApplyProcessCoConvertor;
|
||||||
|
private final TrainingApplyRecordRepository trainingApplyRecordRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页
|
* 分页
|
||||||
|
|
@ -49,6 +54,7 @@ public class TrainingApplyProcessQueryExe {
|
||||||
List<TrainingApplyProcessNodeE> processList =
|
List<TrainingApplyProcessNodeE> processList =
|
||||||
trainingApplyProcessRepository.getProcessNodeByRecordId(qry.getEqTrainingApplyRecordId());
|
trainingApplyProcessRepository.getProcessNodeByRecordId(qry.getEqTrainingApplyRecordId());
|
||||||
|
|
||||||
|
TrainingApplyRecordDO byTrainingRecordId = trainingApplyRecordRepository.getByTrainingRecordId(qry.getEqTrainingApplyRecordId());
|
||||||
List<FlowCO> flowList = Optional.ofNullable(processList).orElse(Collections.emptyList())
|
List<FlowCO> flowList = Optional.ofNullable(processList).orElse(Collections.emptyList())
|
||||||
.stream()
|
.stream()
|
||||||
.map(e -> {
|
.map(e -> {
|
||||||
|
|
@ -59,8 +65,10 @@ public class TrainingApplyProcessQueryExe {
|
||||||
|
|
||||||
String nodeName = e.getNodeName() == null ? "" : e.getNodeName();
|
String nodeName = e.getNodeName() == null ? "" : e.getNodeName();
|
||||||
String username = e.getUsername() == null ? "" : e.getUsername();
|
String username = e.getUsername() == null ? "" : e.getUsername();
|
||||||
String time = e.getTime();
|
String time =null;
|
||||||
|
if(e.getApplyType()!=null && ApplyTypeEnum.APPROVAL.getCode().equals(e.getApplyType().longValue())){
|
||||||
|
time = byTrainingRecordId.getApprovalTime().format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||||
|
}
|
||||||
String secondLine = StrUtil.isNotBlank(time) ? (username + " " + time) : username;
|
String secondLine = StrUtil.isNotBlank(time) ? (username + " " + time) : username;
|
||||||
item.setFlowList(Arrays.asList(nodeName, secondLine));
|
item.setFlowList(Arrays.asList(nodeName, secondLine));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,8 +83,8 @@ public class TrainingApplyRecordQueryExe {
|
||||||
|
|
||||||
|
|
||||||
boolean isCorrectCorp = corpInfoRepository.checkCorp();
|
boolean isCorrectCorp = corpInfoRepository.checkCorp();
|
||||||
//只有审批人和审批人的企业能进行审批
|
//只有审批人和审批人的企业能进行审批 ,暂时不用
|
||||||
examCenterCOS.forEach(info->{
|
/* examCenterCOS.forEach(info->{
|
||||||
//只有审批人和审批人的企业能进行审批 ,还有委托人
|
//只有审批人和审批人的企业能进行审批 ,还有委托人
|
||||||
boolean hasApprovalPermission;
|
boolean hasApprovalPermission;
|
||||||
|
|
||||||
|
|
@ -100,7 +100,7 @@ public class TrainingApplyRecordQueryExe {
|
||||||
if (hasApprovalPermission) {
|
if (hasApprovalPermission) {
|
||||||
info.setIsApproval(true);
|
info.setIsApproval(true);
|
||||||
}
|
}
|
||||||
});
|
});*/
|
||||||
|
|
||||||
|
|
||||||
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,19 @@ package com.zcloud.edu.command.training;
|
||||||
|
|
||||||
import com.zcloud.edu.domain.gateway.training.TrainingApplyProcessGateway;
|
import com.zcloud.edu.domain.gateway.training.TrainingApplyProcessGateway;
|
||||||
import com.zcloud.edu.domain.model.training.TrainingApplyProcessE;
|
import com.zcloud.edu.domain.model.training.TrainingApplyProcessE;
|
||||||
|
import com.zcloud.edu.domain.model.training.TrainingApplyProcessNodeE;
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyProcessAddCmd;
|
import com.zcloud.edu.dto.training.TrainingApplyProcessAddCmd;
|
||||||
import com.alibaba.cola.exception.BizException;
|
import com.alibaba.cola.exception.BizException;
|
||||||
|
import com.zcloud.edu.persistence.dataobject.TrainingApplyProcessDO;
|
||||||
|
import com.zcloud.edu.persistence.repository.training.TrainingApplyProcessRepository;
|
||||||
|
import com.zcloud.edu.persistence.repository.training.TrainingApplyRecordRepository;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -21,11 +26,20 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class TrainingApplyProcessAddExe {
|
public class TrainingApplyProcessAddExe {
|
||||||
private final TrainingApplyProcessGateway trainingApplyProcessGateway;
|
private final TrainingApplyProcessGateway trainingApplyProcessGateway;
|
||||||
|
private final TrainingApplyProcessRepository trainingApplyProcessRepository;
|
||||||
|
private final TrainingApplyRecordRepository trainingApplyRecordRepository;
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean execute(TrainingApplyProcessAddCmd cmd) {
|
public boolean execute(TrainingApplyProcessAddCmd cmd) {
|
||||||
TrainingApplyProcessE trainingApplyProcessE = new TrainingApplyProcessE();
|
TrainingApplyProcessE trainingApplyProcessE = new TrainingApplyProcessE();
|
||||||
BeanUtils.copyProperties(cmd, trainingApplyProcessE);
|
BeanUtils.copyProperties(cmd, trainingApplyProcessE);
|
||||||
|
//将上一个没有审批时间的节点的审批时间设置为当前时间
|
||||||
|
|
||||||
|
List<TrainingApplyProcessDO> trainingApplyProcessDOList = trainingApplyProcessRepository.getApproveDetailList(cmd.getTrainingApplyRecordId());
|
||||||
|
//获取ttrainingApplyProcessDOList 中按照创建时间最后一条数据,将审批时间设置为当前时间
|
||||||
|
TrainingApplyProcessDO trainingApplyProcessDO = trainingApplyProcessDOList.stream().max((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime())).get();
|
||||||
|
trainingApplyProcessDO.setApprovalTime(LocalDateTime.now());
|
||||||
|
trainingApplyProcessRepository.updateById(trainingApplyProcessDO);
|
||||||
boolean res = false;
|
boolean res = false;
|
||||||
try {
|
try {
|
||||||
res = trainingApplyProcessGateway.add(trainingApplyProcessE);
|
res = trainingApplyProcessGateway.add(trainingApplyProcessE);
|
||||||
|
|
@ -35,6 +49,7 @@ public class TrainingApplyProcessAddExe {
|
||||||
if (!res) {
|
if (!res) {
|
||||||
throw new BizException("保存失败");
|
throw new BizException("保存失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,15 @@ import com.zcloud.edu.domain.gateway.training.TrainingApplyUserGateway;
|
||||||
import com.zcloud.edu.domain.gateway.training.TrainingUserGateway;
|
import com.zcloud.edu.domain.gateway.training.TrainingUserGateway;
|
||||||
import com.zcloud.edu.domain.model.training.TrainingApplyRecordE;
|
import com.zcloud.edu.domain.model.training.TrainingApplyRecordE;
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyRecordUpdateCmd;
|
import com.zcloud.edu.dto.training.TrainingApplyRecordUpdateCmd;
|
||||||
|
import com.zcloud.edu.persistence.dataobject.TrainingApplyProcessDO;
|
||||||
|
import com.zcloud.edu.persistence.repository.training.TrainingApplyProcessRepository;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-app
|
* web-app
|
||||||
|
|
@ -24,6 +27,7 @@ public class TrainingApplyRecordUpdateExe {
|
||||||
private final TrainingApplyRecordGateway trainingApplyRecordGateway;
|
private final TrainingApplyRecordGateway trainingApplyRecordGateway;
|
||||||
private final TrainingApplyUserGateway trainingApplyUserGateway;
|
private final TrainingApplyUserGateway trainingApplyUserGateway;
|
||||||
private final TrainingUserGateway trainingUserGateway;
|
private final TrainingUserGateway trainingUserGateway;
|
||||||
|
private final TrainingApplyProcessRepository trainingApplyProcessRepository;
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void execute(TrainingApplyRecordUpdateCmd trainingApplyRecordUpdateCmd) {
|
public void execute(TrainingApplyRecordUpdateCmd trainingApplyRecordUpdateCmd) {
|
||||||
|
|
@ -61,5 +65,14 @@ public class TrainingApplyRecordUpdateExe {
|
||||||
if (!res) {
|
if (!res) {
|
||||||
throw new BizException("修改失败");
|
throw new BizException("修改失败");
|
||||||
}
|
}
|
||||||
|
//修改最后一个的审批时间
|
||||||
|
//将上一个没有审批时间的节点的审批时间设置为当前时间
|
||||||
|
|
||||||
|
List<TrainingApplyProcessDO> trainingApplyProcessDOList = trainingApplyProcessRepository.getApproveDetailList(oldTrainingRecord.getTrainingApplyRecordId());
|
||||||
|
//获取ttrainingApplyProcessDOList 中按照创建时间最后一条数据,将审批时间设置为当前时间
|
||||||
|
TrainingApplyProcessDO trainingApplyProcessDO = trainingApplyProcessDOList.stream().max((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime())).get();
|
||||||
|
trainingApplyProcessDO.setApprovalTime(LocalDateTime.now());
|
||||||
|
trainingApplyProcessRepository.updateById(trainingApplyProcessDO);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5,6 +5,8 @@ import com.jjb.saas.framework.domain.model.BaseE;
|
||||||
import com.zcloud.edu.domain.enums.ApplyTypeEnum;
|
import com.zcloud.edu.domain.enums.ApplyTypeEnum;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-domain
|
* web-domain
|
||||||
* @Author makejava
|
* @Author makejava
|
||||||
|
|
@ -18,6 +20,8 @@ public class TrainingApplyProcessE extends BaseE {
|
||||||
private String trainingApplyRecordId;
|
private String trainingApplyRecordId;
|
||||||
//审批类型(1:发起,2:审批,3:委托)
|
//审批类型(1:发起,2:审批,3:委托)
|
||||||
private Long applyType;
|
private Long applyType;
|
||||||
|
|
||||||
|
private LocalDateTime approvalTime;
|
||||||
//手机号
|
//手机号
|
||||||
private String phone;
|
private String phone;
|
||||||
//企业id
|
//企业id
|
||||||
|
|
@ -31,7 +35,7 @@ public class TrainingApplyProcessE extends BaseE {
|
||||||
* 创建发起流程
|
* 创建发起流程
|
||||||
*/
|
*/
|
||||||
public static TrainingApplyProcessE createInitiate(
|
public static TrainingApplyProcessE createInitiate(
|
||||||
String recordId, Long applyType, Long corpinfoId, Long departmentId, Long userId, String remarks) {
|
String recordId, Long applyType, Long corpinfoId, Long departmentId, Long userId, String remarks,LocalDateTime approvalTime) {
|
||||||
|
|
||||||
TrainingApplyProcessE process = new TrainingApplyProcessE();
|
TrainingApplyProcessE process = new TrainingApplyProcessE();
|
||||||
process.setTrainingApplyProcessId(IdUtil.simpleUUID());
|
process.setTrainingApplyProcessId(IdUtil.simpleUUID());
|
||||||
|
|
@ -41,6 +45,9 @@ public class TrainingApplyProcessE extends BaseE {
|
||||||
process.setDepartmentId(departmentId);
|
process.setDepartmentId(departmentId);
|
||||||
process.setUserId(userId);
|
process.setUserId(userId);
|
||||||
process.setRemarks(remarks);
|
process.setRemarks(remarks);
|
||||||
|
if(approvalTime!= null){
|
||||||
|
process.setApprovalTime(approvalTime);
|
||||||
|
}
|
||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ package com.zcloud.edu.domain.model.training;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class TrainingApplyProcessNodeE {
|
public class TrainingApplyProcessNodeE {
|
||||||
|
|
||||||
|
|
@ -18,10 +20,7 @@ public class TrainingApplyProcessNodeE {
|
||||||
@ApiModelProperty(value = "审批类型")
|
@ApiModelProperty(value = "审批类型")
|
||||||
private Integer applyType;
|
private Integer applyType;
|
||||||
|
|
||||||
@ApiModelProperty(value = "时间")
|
|
||||||
private String time;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "审批时间")
|
@ApiModelProperty(value = "审批时间")
|
||||||
private String approvalTime;
|
private LocalDateTime approvalTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,8 @@ public class TrainingApplyRecordE extends BaseE {
|
||||||
this.applyCorpinfoId,
|
this.applyCorpinfoId,
|
||||||
this.applyDepartmentId,
|
this.applyDepartmentId,
|
||||||
this.applyUserId,
|
this.applyUserId,
|
||||||
"发起培训申请"
|
"发起培训申请",
|
||||||
|
LocalDateTime.now()
|
||||||
);
|
);
|
||||||
|
|
||||||
this.processes.add(initiateProcess);
|
this.processes.add(initiateProcess);
|
||||||
|
|
@ -121,7 +122,8 @@ public class TrainingApplyRecordE extends BaseE {
|
||||||
this.approvalCorpinfoId,
|
this.approvalCorpinfoId,
|
||||||
this.approvalDepartmentId,
|
this.approvalDepartmentId,
|
||||||
this.approvalUserId,
|
this.approvalUserId,
|
||||||
"审批中"
|
"审批中",
|
||||||
|
null
|
||||||
);
|
);
|
||||||
this.processes.add(process);
|
this.processes.add(process);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-infrastructure
|
* web-infrastructure
|
||||||
* @Author makejava
|
* @Author makejava
|
||||||
|
|
@ -26,6 +28,8 @@ public class TrainingApplyProcessDO extends BaseDO {
|
||||||
//审批类型(1:发起,2:审批,3:委托)
|
//审批类型(1:发起,2:审批,3:委托)
|
||||||
@ApiModelProperty(value = "审批类型(1:发起,2:审批,3:委托)")
|
@ApiModelProperty(value = "审批类型(1:发起,2:审批,3:委托)")
|
||||||
private Long applyType;
|
private Long applyType;
|
||||||
|
@ApiModelProperty(value = "审批时间")
|
||||||
|
private LocalDateTime approvalTime;
|
||||||
//手机号
|
//手机号
|
||||||
@ApiModelProperty(value = "手机号")
|
@ApiModelProperty(value = "手机号")
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@
|
||||||
tar.approval_status AS approvalStatus,
|
tar.approval_status AS approvalStatus,
|
||||||
u.name AS username,
|
u.name AS username,
|
||||||
tap.apply_type AS applyType,
|
tap.apply_type AS applyType,
|
||||||
DATE_FORMAT(tap.create_time, '%Y-%m-%d %H:%i:%s') AS time,
|
<!-- DATE_FORMAT(tap.create_time, '%Y-%m-%d %H:%i:%s') AS time,-->
|
||||||
DATE_FORMAT(tap.update_time, '%Y-%m-%d %H:%i:%s') as approvalTime
|
DATE_FORMAT(tap.approval_time, '%Y-%m-%d %H:%i:%s') as approvalTime
|
||||||
FROM
|
FROM
|
||||||
training_apply_process tap
|
training_apply_process tap
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue