|
@@ -5,6 +5,7 @@ import cn.hutool.core.lang.UUID;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.dayou.brokerage.annotation.DoBrokerage;
|
|
|
import com.dayou.brokerage.constants.BrokerageRule;
|
|
|
+import com.dayou.entity.BrokerageVariable;
|
|
|
import com.dayou.entity.Item;
|
|
|
import com.dayou.entity.ItemStage;
|
|
|
import com.dayou.entity.ItemStageUser;
|
|
@@ -28,16 +29,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.time.LocalDate;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import com.dayou.enums.BatchTaskTypeEnum;
|
|
|
|
|
|
import static com.dayou.enums.OperationTypeEnum.*;
|
|
|
-import static com.dayou.exception.ErrorCode.STAGE_NODE_ERROR;
|
|
|
-import static com.dayou.exception.ErrorCode.STAGE_NODE_ERROR1;
|
|
|
+import static com.dayou.exception.ErrorCode.*;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -96,9 +98,35 @@ public class ItemStageServiceImpl extends ServiceImpl<ItemStageMapper, ItemStage
|
|
|
}
|
|
|
itemStageVO.setFooterId(UUID.randomUUID().toString());
|
|
|
}
|
|
|
+
|
|
|
+ if (itemStageVO.getWeight().compareTo(BigDecimal.TEN.multiply(BigDecimal.TEN))== 1){
|
|
|
+ ErrorCode.throwBusinessException(STAGE_NODE_ERROR2);
|
|
|
+ }
|
|
|
+ List<BigDecimal> sumWeight = this.list(new LambdaQueryWrapper<ItemStage>().eq(ItemStage::getItemId, itemStageVO.getItemId())).stream().map(ItemStage::getWeight).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(sumWeight)){
|
|
|
+ BigDecimal sum = sumWeight.stream().reduce(BigDecimal.ZERO, BigDecimal::add).add(itemStageVO.getWeight());
|
|
|
+ if (sum.compareTo(BigDecimal.TEN.multiply(BigDecimal.TEN)) == 1){
|
|
|
+ ErrorCode.throwBusinessException(STAGE_NODE_ERROR2);
|
|
|
+ }
|
|
|
+ }
|
|
|
this.save(itemStageVO);
|
|
|
- Set<ItemStageVO.ParticipatorWeight> participators = itemStageVO.getParticipators();
|
|
|
- Set<ItemStageUser> itemStageUsers = participators.stream().filter(s->s.getWeight()!=null).map(x -> {
|
|
|
+
|
|
|
+ Set<ItemStageVO.ParticipatorWeight> partWeights = itemStageVO.getParticipators().stream().filter(s -> s.getWeight() != null).collect(Collectors.toSet());
|
|
|
+ if (CollectionUtils.isNotEmpty(partWeights)){
|
|
|
+ BigDecimal reduce = partWeights.stream().map(ItemStageVO.ParticipatorWeight::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (reduce.compareTo(BigDecimal.TEN.multiply(BigDecimal.TEN)) == 1){
|
|
|
+ ErrorCode.throwBusinessException(STAGE_NODE_ERROR3);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ItemStageUser> list = iItemStageUserService.list(new LambdaQueryWrapper<ItemStageUser>().eq(ItemStageUser::getItemId, itemStageVO.getItemId()).eq(ItemStageUser::getStageId, itemStageVO.getId()));
|
|
|
+ if (CollectionUtils.isNotEmpty(list)){
|
|
|
+ BigDecimal reduce = list.stream().map(ItemStageUser::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add).add(partWeights.stream().map(ItemStageVO.ParticipatorWeight::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ if (reduce.compareTo(BigDecimal.TEN.multiply(BigDecimal.TEN)) == 1){
|
|
|
+ ErrorCode.throwBusinessException(STAGE_NODE_ERROR3);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Set<ItemStageUser> itemStageUsers = partWeights.stream().map(x -> {
|
|
|
return ItemStageUser.builder().itemId(itemStageVO.getItemId()).stageId(itemStageVO.getId()).userId(x.getUserId()).weight(x.getWeight()).build();
|
|
|
}).collect(Collectors.toSet());
|
|
|
iItemStageUserService.saveBatch(itemStageUsers);
|
|
@@ -127,6 +155,25 @@ public class ItemStageServiceImpl extends ServiceImpl<ItemStageMapper, ItemStage
|
|
|
ErrorCode.throwBusinessException(STAGE_NODE_ERROR1);
|
|
|
}
|
|
|
|
|
|
+ if (itemStageVO.getWeight().compareTo(BigDecimal.TEN.multiply(BigDecimal.TEN))== 1){
|
|
|
+ ErrorCode.throwBusinessException(STAGE_NODE_ERROR2);
|
|
|
+ }
|
|
|
+ List<BigDecimal> sumWeight = this.list(new LambdaQueryWrapper<ItemStage>().eq(ItemStage::getItemId, itemStageVO.getItemId())).stream().map(ItemStage::getWeight).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(sumWeight)){
|
|
|
+ BigDecimal sum = sumWeight.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (sum.compareTo(BigDecimal.TEN.multiply(BigDecimal.TEN)) == 1){
|
|
|
+ ErrorCode.throwBusinessException(STAGE_NODE_ERROR2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<ItemStageVO.ParticipatorWeight> partWeights = itemStageVO.getParticipators().stream().filter(s -> s.getWeight() != null).collect(Collectors.toSet());
|
|
|
+ if (CollectionUtils.isNotEmpty(partWeights)){
|
|
|
+ BigDecimal reduce = partWeights.stream().map(ItemStageVO.ParticipatorWeight::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (reduce.compareTo(BigDecimal.TEN.multiply(BigDecimal.TEN)) == 1){
|
|
|
+ ErrorCode.throwBusinessException(STAGE_NODE_ERROR3);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
ItemStage stage1 = this.getOne(new LambdaQueryWrapper<ItemStage>().eq(ItemStage::getHeaderId, itemStageVO.getHeaderId()));
|
|
|
ItemStage stage2 = this.getOne(new LambdaQueryWrapper<ItemStage>().eq(ItemStage::getHeaderId, oldStage.getFooterId()));
|
|
|
if (stage1!=null && stage1.getId() != itemStageVO.getId()){
|