|
|
|
|
@ -37,15 +37,12 @@ import org.springblade.core.secure.utils.AuthUtil; |
|
|
|
|
import org.springblade.desk.common.constant.ApprovalStatusConstant; |
|
|
|
|
import org.springblade.desk.common.factory.MesApprovalDetailFactory; |
|
|
|
|
import org.springblade.desk.common.mapper.MesApprovalRecordMapper; |
|
|
|
|
import org.springblade.desk.common.pojo.entity.MesApprovalFlowDefinitionEntity; |
|
|
|
|
import org.springblade.desk.common.pojo.entity.MesApprovalFlowEntity; |
|
|
|
|
import org.springblade.desk.common.pojo.entity.MesApprovalFlowUserEntity; |
|
|
|
|
import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity; |
|
|
|
|
import org.springblade.desk.common.pojo.vo.MesApprovalFlowVO; |
|
|
|
|
import org.springblade.desk.common.pojo.vo.MesApprovalRecordDetailVO; |
|
|
|
|
import org.springblade.desk.common.pojo.vo.MyHistoryMesApprovalRecordVO; |
|
|
|
|
import org.springblade.desk.common.pojo.vo.MyMesApprovalRecordVO; |
|
|
|
|
import org.springblade.desk.common.service.ApprovalRecordDetailStrategy; |
|
|
|
|
import org.springblade.desk.common.service.IMesApprovalFlowService; |
|
|
|
|
import org.springblade.desk.common.service.IMesApprovalRecordService; |
|
|
|
|
import org.springblade.desk.common.pojo.vo.*; |
|
|
|
|
import org.springblade.desk.common.service.*; |
|
|
|
|
import org.springblade.system.cache.UserCache; |
|
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
@ -66,11 +63,15 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec |
|
|
|
|
private MesApprovalDetailFactory mesApprovalDetailFactory; |
|
|
|
|
@Resource |
|
|
|
|
private IMesApprovalFlowService approvalFlowService; |
|
|
|
|
@Resource |
|
|
|
|
private IMesApprovalFlowUserService approvalFlowUserService; |
|
|
|
|
@Resource |
|
|
|
|
private IMesApprovalFlowDefinitionService approvalFlowDefinitionService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<MyMesApprovalRecordVO> selectMyMesApprovalRecordPage(Page<MesApprovalRecordEntity> page, MyMesApprovalRecordVO mesApprovalRecord) { |
|
|
|
|
List<Integer> statusList = null; |
|
|
|
|
if(StringUtils.isNotBlank(mesApprovalRecord.getStatusList())){ |
|
|
|
|
if (StringUtils.isNotBlank(mesApprovalRecord.getStatusList())) { |
|
|
|
|
statusList = Arrays.stream(mesApprovalRecord.getStatusList().split(",")) |
|
|
|
|
.filter(StringUtils::isNotBlank) |
|
|
|
|
.map(Integer::valueOf) |
|
|
|
|
@ -78,8 +79,8 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec |
|
|
|
|
} |
|
|
|
|
Page<MesApprovalRecordEntity> mesNotifyMessageVOPage = this.page(page, new LambdaQueryWrapper<MesApprovalRecordEntity>() |
|
|
|
|
.eq(StrUtil.isNotEmpty(mesApprovalRecord.getBizType()), MesApprovalRecordEntity::getBizType, mesApprovalRecord.getBizType()) |
|
|
|
|
.eq(mesApprovalRecord.getStatus() != null, MesApprovalRecordEntity::getStatus, mesApprovalRecord.getStatus()) |
|
|
|
|
.in(CollectionUtils.isNotEmpty(statusList), MesApprovalRecordEntity::getStatus, statusList) |
|
|
|
|
.eq(mesApprovalRecord.getStatus() != null, MesApprovalRecordEntity::getStatus, mesApprovalRecord.getStatus()) |
|
|
|
|
.in(CollectionUtils.isNotEmpty(statusList), MesApprovalRecordEntity::getStatus, statusList) |
|
|
|
|
.like(StrUtil.isNotEmpty(mesApprovalRecord.getContent()), MesApprovalRecordEntity::getContent, mesApprovalRecord.getContent()) |
|
|
|
|
.orderByDesc(MesApprovalRecordEntity::getCreateTime)); |
|
|
|
|
Page<MyMesApprovalRecordVO> page1 = new Page<>(); |
|
|
|
|
@ -101,10 +102,10 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec |
|
|
|
|
return page1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String buildStatusName(Integer status){ |
|
|
|
|
if(status == ApprovalStatusConstant.WAITING) return "待审核"; |
|
|
|
|
if(status == ApprovalStatusConstant.PASS) return "审核通过"; |
|
|
|
|
if(status == ApprovalStatusConstant.REJECT) return "审核失败"; |
|
|
|
|
private String buildStatusName(Integer status) { |
|
|
|
|
if (status == ApprovalStatusConstant.WAITING) return "待审核"; |
|
|
|
|
if (status == ApprovalStatusConstant.PASS) return "审核通过"; |
|
|
|
|
if (status == ApprovalStatusConstant.REJECT) return "审核失败"; |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -149,19 +150,64 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec |
|
|
|
|
MesApprovalRecordEntity approvalRecordEntity = this.getById(mesApprovalRecord.getId()); |
|
|
|
|
MesApprovalRecordDetailVO detailVO = new MesApprovalRecordDetailVO(); |
|
|
|
|
BeanUtils.copyProperties(approvalRecordEntity, detailVO); |
|
|
|
|
MesApprovalFlowEntity flowQuery = new MesApprovalFlowEntity(); |
|
|
|
|
flowQuery.setBizId(approvalRecordEntity.getBizId()); |
|
|
|
|
flowQuery.setBizType(approvalRecordEntity.getBizType()); |
|
|
|
|
List<MesApprovalFlowVO> flowList = approvalFlowService.queryVOList(flowQuery); |
|
|
|
|
detailVO.setFlowList(flowList); |
|
|
|
|
List<MesApprovalFlowVO> flowVOS = new ArrayList<>(); |
|
|
|
|
List<MesApprovalFlowEntity> flowList = approvalFlowService.list(new LambdaQueryWrapper<MesApprovalFlowEntity>().eq(MesApprovalFlowEntity::getBizId, approvalRecordEntity.getBizId()).eq(MesApprovalFlowEntity::getBizType, approvalRecordEntity.getBizType())); |
|
|
|
|
if (CollectionUtils.isNotEmpty(flowList)) { |
|
|
|
|
for (MesApprovalFlowEntity mesApprovalFlowEntity : flowList) { |
|
|
|
|
MesApprovalFlowVO vo = new MesApprovalFlowVO(); |
|
|
|
|
BeanUtils.copyProperties(mesApprovalFlowEntity, vo); |
|
|
|
|
List<MesApprovalFlowUserVO> approvalUserList = approvalFlowUserService.queryByFlowId(mesApprovalFlowEntity.getId()); |
|
|
|
|
vo.setApprovalUserList(approvalUserList); |
|
|
|
|
flowVOS.add(vo); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
detailVO.setFlowList(flowVOS); |
|
|
|
|
ApprovalRecordDetailStrategy strategy = mesApprovalDetailFactory.getStrategy(approvalRecordEntity.getBizType()); |
|
|
|
|
Object detail = strategy.getDetail(approvalRecordEntity.getBizId()); |
|
|
|
|
detailVO.setDetailData(detail); |
|
|
|
|
if (strategy != null) { |
|
|
|
|
Object detail = strategy.getDetail(approvalRecordEntity.getBizId()); |
|
|
|
|
detailVO.setDetailData(detail); |
|
|
|
|
} |
|
|
|
|
return detailVO; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void updateApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime) { |
|
|
|
|
public void createApproval(Long bizId, String bizType) { |
|
|
|
|
// 创建待办
|
|
|
|
|
MesApprovalRecordEntity approvalRecord = new MesApprovalRecordEntity(); |
|
|
|
|
approvalRecord.setBizId(bizId); |
|
|
|
|
approvalRecord.setBizType(bizType); |
|
|
|
|
approvalRecord.setContent(bizType); |
|
|
|
|
approvalRecord.setStatus(ApprovalStatusConstant.WAITING); |
|
|
|
|
this.save(approvalRecord); |
|
|
|
|
|
|
|
|
|
List<MesApprovalFlowDefinitionEntity> flowDefinitionList = approvalFlowDefinitionService.list(new LambdaQueryWrapper<MesApprovalFlowDefinitionEntity>().eq(MesApprovalFlowDefinitionEntity::getBizType, bizType).orderByAsc(MesApprovalFlowDefinitionEntity::getSort)); |
|
|
|
|
List<MesApprovalFlowEntity> flowList = new ArrayList<>(); |
|
|
|
|
for (int i = 0; i < flowDefinitionList.size(); i++) { |
|
|
|
|
MesApprovalFlowDefinitionEntity definition = flowDefinitionList.get(i); |
|
|
|
|
int status; |
|
|
|
|
if (i == 0) { |
|
|
|
|
status = 3; |
|
|
|
|
} else if (i == 1) { |
|
|
|
|
status = 2; |
|
|
|
|
} else { |
|
|
|
|
status = 1; |
|
|
|
|
} |
|
|
|
|
MesApprovalFlowEntity flow = new MesApprovalFlowEntity(bizId, definition.getBizType(), definition.getNode(), definition.getSort(), definition.getNextSort(), status); |
|
|
|
|
flowList.add(flow); |
|
|
|
|
} |
|
|
|
|
approvalFlowService.saveBatch(flowList); |
|
|
|
|
MesApprovalFlowEntity firstFlow = flowList.stream().filter(flow -> flow.getSort() == 1).findFirst().orElse(null); |
|
|
|
|
if (firstFlow != null) { |
|
|
|
|
MesApprovalFlowUserEntity flowUser = new MesApprovalFlowUserEntity(); |
|
|
|
|
flowUser.setFlowId(firstFlow.getId()); |
|
|
|
|
flowUser.setApprovalUser(approvalRecord.getCreateUser()); |
|
|
|
|
flowUser.setApprovalTime(approvalRecord.getCreateTime()); |
|
|
|
|
approvalFlowUserService.save(flowUser); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void passApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime) { |
|
|
|
|
MesApprovalRecordEntity entity = getByBiz(bizId, bizType); |
|
|
|
|
if (entity == null || entity.getStatus() != ApprovalStatusConstant.WAITING) { |
|
|
|
|
return; |
|
|
|
|
@ -171,23 +217,23 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec |
|
|
|
|
upd.setStatus(ApprovalStatusConstant.PASS); |
|
|
|
|
this.updateById(upd); |
|
|
|
|
|
|
|
|
|
MesApprovalFlowEntity flowQuery = new MesApprovalFlowEntity(); |
|
|
|
|
flowQuery.setBizId(bizId); |
|
|
|
|
flowQuery.setBizType(bizType); |
|
|
|
|
List<MesApprovalFlowVO> flowList = approvalFlowService.queryVOList(flowQuery); |
|
|
|
|
MesApprovalFlowVO currentFlow = flowList.stream().filter(flow -> flow.getStatus().equals(2)).findFirst().orElse(null); |
|
|
|
|
List<MesApprovalFlowEntity> flowList = approvalFlowService.list(new LambdaQueryWrapper<MesApprovalFlowEntity>().eq(MesApprovalFlowEntity::getBizId, bizId).eq(MesApprovalFlowEntity::getBizType, bizType)); |
|
|
|
|
MesApprovalFlowEntity currentFlow = flowList.stream().filter(flow -> flow.getStatus().equals(2)).findFirst().orElse(null); |
|
|
|
|
if (currentFlow != null) { |
|
|
|
|
MesApprovalFlowEntity currentFlowEntity = new MesApprovalFlowEntity(); |
|
|
|
|
currentFlowEntity.setId(currentFlow.getId()); |
|
|
|
|
currentFlowEntity.setApprovalUser(approvalUser); |
|
|
|
|
currentFlowEntity.setApprovalTime(approvalTime); |
|
|
|
|
currentFlowEntity.setStatus(3); |
|
|
|
|
approvalFlowService.updateById(currentFlowEntity); |
|
|
|
|
MesApprovalFlowUserEntity flowUser = new MesApprovalFlowUserEntity(); |
|
|
|
|
flowUser.setFlowId(currentFlow.getId()); |
|
|
|
|
flowUser.setApprovalUser(approvalUser); |
|
|
|
|
flowUser.setApprovalTime(approvalTime); |
|
|
|
|
approvalFlowUserService.save(flowUser); |
|
|
|
|
Integer nextSort = currentFlow.getNextSort(); |
|
|
|
|
if (nextSort == null) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
MesApprovalFlowVO nextFlow = flowList.stream().filter(flow -> flow.getSort().equals(nextSort)).findFirst().orElse(null); |
|
|
|
|
MesApprovalFlowEntity nextFlow = flowList.stream().filter(flow -> flow.getSort().equals(nextSort)).findFirst().orElse(null); |
|
|
|
|
if (nextFlow != null) { |
|
|
|
|
MesApprovalRecordEntity save = new MesApprovalRecordEntity(); |
|
|
|
|
BeanUtils.copyProperties(entity, save); |
|
|
|
|
@ -211,7 +257,7 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec |
|
|
|
|
* @param bizType |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public void removeApproval(Long bizId, String bizType) { |
|
|
|
|
public void rejectApproval(Long bizId, String bizType) { |
|
|
|
|
MesApprovalRecordEntity entity = getByBiz(bizId, bizType); |
|
|
|
|
if (entity == null || entity.getStatus() != ApprovalStatusConstant.WAITING) { |
|
|
|
|
return; |
|
|
|
|
@ -220,14 +266,25 @@ public class MesApprovalRecordServiceImpl extends BaseServiceImpl<MesApprovalRec |
|
|
|
|
upd.setId(entity.getId()); |
|
|
|
|
upd.setStatus(ApprovalStatusConstant.REJECT); |
|
|
|
|
this.updateById(upd); |
|
|
|
|
MesApprovalFlowEntity flowQuery = new MesApprovalFlowEntity(); |
|
|
|
|
flowQuery.setBizId(bizId); |
|
|
|
|
flowQuery.setBizType(bizType); |
|
|
|
|
List<MesApprovalFlowVO> flowList = approvalFlowService.queryVOList(flowQuery); |
|
|
|
|
List<Long> ids = flowList.stream().map(MesApprovalFlowVO::getId).collect(Collectors.toList()); |
|
|
|
|
List<MesApprovalFlowEntity> flowList = approvalFlowService.list(new LambdaQueryWrapper<MesApprovalFlowEntity>().eq(MesApprovalFlowEntity::getBizId, bizId).eq(MesApprovalFlowEntity::getBizType, bizType)); |
|
|
|
|
List<Long> ids = flowList.stream().map(MesApprovalFlowEntity::getId).collect(Collectors.toList()); |
|
|
|
|
approvalFlowService.removeByIds(ids); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void pendingApproval(Long bizId, String bizType, Long approvalUser, Date approvalTime) { |
|
|
|
|
List<MesApprovalFlowEntity> flowList = approvalFlowService.list(new LambdaQueryWrapper<MesApprovalFlowEntity>().eq(MesApprovalFlowEntity::getBizId, bizId).eq(MesApprovalFlowEntity::getBizType, bizType).eq(MesApprovalFlowEntity::getStatus, 2)); |
|
|
|
|
if (CollectionUtils.isEmpty(flowList)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
MesApprovalFlowEntity currentFlow = flowList.get(0); |
|
|
|
|
MesApprovalFlowUserEntity flowUser = new MesApprovalFlowUserEntity(); |
|
|
|
|
flowUser.setFlowId(currentFlow.getId()); |
|
|
|
|
flowUser.setApprovalUser(approvalUser); |
|
|
|
|
flowUser.setApprovalTime(approvalTime); |
|
|
|
|
approvalFlowUserService.save(flowUser); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private MesApprovalRecordEntity getByBiz(Long bizId, String bizType) { |
|
|
|
|
return this.getOne(new LambdaQueryWrapper<MesApprovalRecordEntity>() |
|
|
|
|
.eq(MesApprovalRecordEntity::getBizType, bizType) |
|
|
|
|
|