StepServiceImpl.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package com.loan.system.service.Impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.loan.system.domain.entity.Step;
  4. import com.loan.system.domain.enums.StepEnum;
  5. import com.loan.system.domain.enums.StepPropertyEnum;
  6. import com.loan.system.domain.vo.StepVO;
  7. import com.loan.system.repository.StepRepository;
  8. import com.loan.system.service.StepService;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import java.time.LocalDateTime;
  12. import java.time.format.DateTimeFormatter;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. @Service
  16. public class StepServiceImpl implements StepService {
  17. private final StepRepository stepRepository;
  18. @Autowired
  19. public StepServiceImpl(StepRepository stepRepository) {
  20. this.stepRepository = stepRepository;
  21. }
  22. @Override
  23. public List<StepVO> addStepByCaseId(Long caseId) {
  24. List<StepVO> list = new ArrayList<>();//存放当前业务的流程
  25. List<StepPropertyEnum> stepPropertyEnums = StepPropertyEnum.listAll();//获取所有环节
  26. //创建初始环节
  27. Step step = new Step();
  28. step.setCaseId(caseId);
  29. step.setStepName(stepPropertyEnums.get(0).getLabel());
  30. step.setStatus(StepEnum.PROCESS.getMsg());
  31. step.setBeginTime(LocalDateTime.now()
  32. .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  33. step.setParentId(0L);
  34. step.setIsDelete( false);
  35. Step step1=stepRepository.save(step);
  36. StepVO stepVO = BeanUtil.copyProperties(step1, StepVO.class);
  37. list.add(stepVO);
  38. Long currentParentId = step1.getId();
  39. for(int i = 1; i < stepPropertyEnums.size(); i++){
  40. StepPropertyEnum stepPropertyEnum = stepPropertyEnums.get(i);//获取当前环节
  41. Step s = new Step();
  42. s.setCaseId(caseId);
  43. s.setStepName(stepPropertyEnum.getLabel());
  44. if(i == 1){
  45. s.setStatus(StepEnum.PROCESS.getMsg());
  46. s.setBeginTime(LocalDateTime.now()
  47. .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  48. }
  49. else
  50. s.setStatus(StepEnum.UNSTART.getMsg());
  51. if(stepPropertyEnum.isParent())
  52. s.setParentId(0L);
  53. else
  54. s.setParentId(currentParentId);
  55. s.setIsDelete( false);
  56. Step step2 = stepRepository.save(s);
  57. if (stepPropertyEnum.isParent())
  58. currentParentId = step2.getId();
  59. stepVO = BeanUtil.copyProperties(step2, StepVO.class);
  60. list.add(stepVO);
  61. }
  62. return list;
  63. }
  64. @Override
  65. public void updateStatusByCaseId(String msg, String stepName, Long caseId) {
  66. stepRepository.updateStatusByCaseIdAndStepName(msg,stepName,caseId,LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  67. }
  68. @Override
  69. public void cancelPreApprove(Long caseId) {
  70. //设置预审核阶段已完成,审批阶段开始
  71. updateStatusByCaseId(StepEnum.COMPLETED.getMsg(),StepPropertyEnum.PRE_TRIAL_PARENT.getLabel(),caseId);
  72. updateStatusByCaseId(StepEnum.COMPLETED.getMsg(),StepPropertyEnum.PRE_TRIAL.getLabel(),caseId);
  73. updateStatusByCaseId(StepEnum.PROCESS.getMsg(),StepPropertyEnum.APPROVAL_PARENT.getLabel(),caseId);
  74. updateStatusByCaseId(StepEnum.PROCESS.getMsg(),StepPropertyEnum.APPROVAL.getLabel(),caseId);
  75. }
  76. @Override
  77. public StepVO updateUserByCaseId(String stepName, Long approverId, Long caseId) {
  78. Step step = stepRepository.findByStepNameAndCaseId(stepName, caseId);
  79. if(step.getUserId1() == null)
  80. stepRepository.updateUser1ByCaseIdAndStepName(stepName,approverId,caseId);
  81. else
  82. if(!step.getUserId1().equals(approverId))
  83. stepRepository.updateUser2ByCaseIdAndStepName(stepName,approverId,caseId);
  84. step = stepRepository.findByStepNameAndCaseId(stepName, caseId);
  85. return BeanUtil.copyProperties(step, StepVO.class);
  86. }
  87. @Override
  88. public List<StepVO> getStepByCaseId(Long caseId) {
  89. return stepRepository.findByCaseId(caseId);
  90. }
  91. @Override
  92. public StepVO findByStepNameAndCaseId(String stepName,Long caseId) {
  93. return BeanUtil.copyProperties(stepRepository.findByStepNameAndCaseId(stepName, caseId), StepVO.class);
  94. }
  95. @Override
  96. public void updateUserId1ByCaseIdAndStepName(String stepName, Long approverId, Long caseId){
  97. stepRepository.updateUser1ByCaseIdAndStepName(stepName,approverId,caseId,LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  98. };
  99. @Override
  100. public void updateUserId2ByCaseIdAndStepName(String stepName, Long approverId, Long caseId){
  101. stepRepository.updateUser2ByCaseIdAndStepName(stepName,approverId,caseId,LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  102. };
  103. public void logic_delete(Long id){
  104. stepRepository.logic_delete(id,true,LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  105. }
  106. }