|
@@ -14,7 +14,9 @@ import com.dayou.enums.ProductionEnum;
|
|
import com.dayou.enums.workflow.CallbackEnum;
|
|
import com.dayou.enums.workflow.CallbackEnum;
|
|
import com.dayou.enums.workflow.HandlerPermissionEnum;
|
|
import com.dayou.enums.workflow.HandlerPermissionEnum;
|
|
import com.dayou.enums.workflow.WorkflowNodeEnum;
|
|
import com.dayou.enums.workflow.WorkflowNodeEnum;
|
|
|
|
+import com.dayou.exception.ErrorCode;
|
|
import com.dayou.mapper.*;
|
|
import com.dayou.mapper.*;
|
|
|
|
+import com.dayou.service.IProductionFundService;
|
|
import com.dayou.service.IUserPostService;
|
|
import com.dayou.service.IUserPostService;
|
|
import com.dayou.service.IUserService;
|
|
import com.dayou.service.IUserService;
|
|
import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
|
|
import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
|
|
@@ -24,6 +26,7 @@ import com.dayou.workflow.config.WorkNodeProcessable;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -65,6 +68,9 @@ public class MajorNodeHandler extends WorkNodeProcessable {
|
|
private IWorkTaskRecordService workTaskRecordService;
|
|
private IWorkTaskRecordService workTaskRecordService;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
|
+ private IProductionFundService productionFundService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
private IUserService userService;
|
|
private IUserService userService;
|
|
|
|
|
|
|
|
|
|
@@ -152,10 +158,12 @@ public class MajorNodeHandler extends WorkNodeProcessable {
|
|
//是否取号?
|
|
//是否取号?
|
|
List<MajorTarget> productionNos = majorTargetMapper.getSubReportNo(currentNode.getBusinessId()).stream()
|
|
List<MajorTarget> productionNos = majorTargetMapper.getSubReportNo(currentNode.getBusinessId()).stream()
|
|
.filter(x->x!=null).collect(Collectors.toList());
|
|
.filter(x->x!=null).collect(Collectors.toList());
|
|
|
|
+
|
|
if (currentNode.getNodeCode().equals(WRITE_STATEMENT.name())){
|
|
if (currentNode.getNodeCode().equals(WRITE_STATEMENT.name())){
|
|
Set<String> statementNos = productionNos.stream().filter(x->StrUtil.isNotBlank(x.getStatementNo()))
|
|
Set<String> statementNos = productionNos.stream().filter(x->StrUtil.isNotBlank(x.getStatementNo()))
|
|
.map(MajorTarget::getStatementNo).collect(Collectors.toSet());
|
|
.map(MajorTarget::getStatementNo).collect(Collectors.toSet());
|
|
if (CollectionUtil.isNotEmpty(statementNos)){
|
|
if (CollectionUtil.isNotEmpty(statementNos)){
|
|
|
|
+ checkRealAmount(statementNos);
|
|
majorTargetMapper.cleanSubStatementNo(statementNos);
|
|
majorTargetMapper.cleanSubStatementNo(statementNos);
|
|
majorProductionMapper.delete(new LambdaQueryWrapper<MajorProduction>()
|
|
majorProductionMapper.delete(new LambdaQueryWrapper<MajorProduction>()
|
|
.in(MajorProduction::getReportNo,statementNos));
|
|
.in(MajorProduction::getReportNo,statementNos));
|
|
@@ -165,6 +173,7 @@ public class MajorNodeHandler extends WorkNodeProcessable {
|
|
Set<String> reportNos = productionNos.stream().filter(x->StrUtil.isNotBlank(x.getReportNo()))
|
|
Set<String> reportNos = productionNos.stream().filter(x->StrUtil.isNotBlank(x.getReportNo()))
|
|
.map(MajorTarget::getReportNo).collect(Collectors.toSet());
|
|
.map(MajorTarget::getReportNo).collect(Collectors.toSet());
|
|
if (CollectionUtil.isNotEmpty(reportNos)){
|
|
if (CollectionUtil.isNotEmpty(reportNos)){
|
|
|
|
+ checkRealAmount(reportNos);
|
|
majorTargetMapper.cleanSubReportNo(reportNos);
|
|
majorTargetMapper.cleanSubReportNo(reportNos);
|
|
majorProductionMapper.delete(new LambdaQueryWrapper<MajorProduction>()
|
|
majorProductionMapper.delete(new LambdaQueryWrapper<MajorProduction>()
|
|
.in(MajorProduction::getReportNo,reportNos));
|
|
.in(MajorProduction::getReportNo,reportNos));
|
|
@@ -174,6 +183,7 @@ public class MajorNodeHandler extends WorkNodeProcessable {
|
|
Set<String> letterNos = productionNos.stream().filter(x->StrUtil.isNotBlank(x.getLetterNo()))
|
|
Set<String> letterNos = productionNos.stream().filter(x->StrUtil.isNotBlank(x.getLetterNo()))
|
|
.map(MajorTarget::getLetterNo).collect(Collectors.toSet());
|
|
.map(MajorTarget::getLetterNo).collect(Collectors.toSet());
|
|
if (CollectionUtil.isNotEmpty(letterNos)){
|
|
if (CollectionUtil.isNotEmpty(letterNos)){
|
|
|
|
+ checkRealAmount(letterNos);
|
|
majorTargetMapper.cleanSubLetterNo(letterNos);
|
|
majorTargetMapper.cleanSubLetterNo(letterNos);
|
|
majorProductionMapper.delete(new LambdaQueryWrapper<MajorProduction>()
|
|
majorProductionMapper.delete(new LambdaQueryWrapper<MajorProduction>()
|
|
.in(MajorProduction::getReportNo,letterNos));
|
|
.in(MajorProduction::getReportNo,letterNos));
|
|
@@ -252,4 +262,13 @@ public class MajorNodeHandler extends WorkNodeProcessable {
|
|
return departmentMapper.selectOne(new LambdaQueryWrapper<Department>().select(Department::getLeaderId).eq(BaseEntity::getId, major.getDepartmentId())).getLeaderId();
|
|
return departmentMapper.selectOne(new LambdaQueryWrapper<Department>().select(Department::getLeaderId).eq(BaseEntity::getId, major.getDepartmentId())).getLeaderId();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private void checkRealAmount(Set<String> productionNos){
|
|
|
|
+ productionNos.stream().forEach(x->{
|
|
|
|
+ BigDecimal realAmount = productionFundService.getProductionRealAmountByProductionNo(x);
|
|
|
|
+ if (BigDecimal.ZERO.compareTo(realAmount)!=0){
|
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"产品已认领实收款,无法退回流程。");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|