|
@ -36,6 +36,7 @@ import org.springframework.stereotype.Service; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
import java.math.BigDecimal; |
|
|
|
|
|
import java.math.RoundingMode; |
|
|
import java.time.LocalDate; |
|
|
import java.time.LocalDate; |
|
|
import java.time.LocalDateTime; |
|
|
import java.time.LocalDateTime; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
@ -216,9 +217,8 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct |
|
|
Map<String,TbsCenterDto> centerDtoMap = new HashMap<>(); |
|
|
Map<String,TbsCenterDto> centerDtoMap = new HashMap<>(); |
|
|
this.initSubjectAndCenter(activityBo,subjectMap,centerDtoMap,activitySubjects,activityCenterList,costApply.getId(),activity.getId()); |
|
|
this.initSubjectAndCenter(activityBo,subjectMap,centerDtoMap,activitySubjects,activityCenterList,costApply.getId(),activity.getId()); |
|
|
//产品成本配占比
|
|
|
//产品成本配占比
|
|
|
Map<String,BigDecimal> checkAmountMap = new HashMap<>(); |
|
|
|
|
|
List<TbsActivityCenterGoods> activityCenterGoodsList = new ArrayList<>(); |
|
|
List<TbsActivityCenterGoods> activityCenterGoodsList = new ArrayList<>(); |
|
|
this.initCenterGoods(activityBo,subjectMap,centerDtoMap,checkAmountMap,activityGoodsList,activityCenterGoodsList,costApply.getId(),activity,supplier); |
|
|
this.initCenterGoods(activityBo,subjectMap,centerDtoMap,activityGoodsList,activityCenterGoodsList,costApply.getId(),activity,supplier); |
|
|
//校验金额和比率
|
|
|
//校验金额和比率
|
|
|
Map<Long,List<TbsActivityCenterGoods>> actCenterGoodsMap = activityCenterGoodsList.stream().collect(Collectors.groupingBy(TbsActivityCenterGoods::getSubjectId)); |
|
|
Map<Long,List<TbsActivityCenterGoods>> actCenterGoodsMap = activityCenterGoodsList.stream().collect(Collectors.groupingBy(TbsActivityCenterGoods::getSubjectId)); |
|
|
for (Long subjectId : actCenterGoodsMap.keySet()) { |
|
|
for (Long subjectId : actCenterGoodsMap.keySet()) { |
|
@ -232,13 +232,6 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct |
|
|
Assert.throwEx("成本中心与商品分配比例有误"); |
|
|
Assert.throwEx("成本中心与商品分配比例有误"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
for (TbsActivityCenter activityCenter : activityCenterList) { |
|
|
|
|
|
String key = activityCenter.getSubjectId()+":"+activityCenter.getCenterType()+":"+activityCenter.getCenterId(); |
|
|
|
|
|
BigDecimal amount = checkAmountMap.get(key); |
|
|
|
|
|
if(amount==null||amount.compareTo(activityCenter.getCenterAmount())!=0){ |
|
|
|
|
|
Assert.throwEx("成本中心与商品分配的金额有误"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
//客户详情
|
|
|
//客户详情
|
|
|
List<TbsActivityChannelPoint> activityChannelPointList = new ArrayList<>(); |
|
|
List<TbsActivityChannelPoint> activityChannelPointList = new ArrayList<>(); |
|
|
List<TbsActivityChannel> activityChannelList = new ArrayList<>(); |
|
|
List<TbsActivityChannel> activityChannelList = new ArrayList<>(); |
|
@ -407,7 +400,6 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct |
|
|
* @param activityBo |
|
|
* @param activityBo |
|
|
* @param subjectMap |
|
|
* @param subjectMap |
|
|
* @param centerDtoMap |
|
|
* @param centerDtoMap |
|
|
* @param checkAmountMap |
|
|
|
|
|
* @param activityGoodsList |
|
|
* @param activityGoodsList |
|
|
* @param activityCenterGoodsList |
|
|
* @param activityCenterGoodsList |
|
|
* @param costApplyId |
|
|
* @param costApplyId |
|
@ -416,7 +408,6 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct |
|
|
public void initCenterGoods(TbsActivityBo activityBo, |
|
|
public void initCenterGoods(TbsActivityBo activityBo, |
|
|
Map<Long,BmsSubject> subjectMap, |
|
|
Map<Long,BmsSubject> subjectMap, |
|
|
Map<String,TbsCenterDto> centerDtoMap, |
|
|
Map<String,TbsCenterDto> centerDtoMap, |
|
|
Map<String,BigDecimal> checkAmountMap, |
|
|
|
|
|
List<TbsActivityGoods> activityGoodsList, |
|
|
List<TbsActivityGoods> activityGoodsList, |
|
|
List<TbsActivityCenterGoods> activityCenterGoodsList, |
|
|
List<TbsActivityCenterGoods> activityCenterGoodsList, |
|
|
Long costApplyId,TbsActivity activity,BmsSupplier supplier){ |
|
|
Long costApplyId,TbsActivity activity,BmsSupplier supplier){ |
|
@ -442,8 +433,17 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct |
|
|
} |
|
|
} |
|
|
centerGoods.setCenterCode(tbsCenterDto.getCenterCode()); |
|
|
centerGoods.setCenterCode(tbsCenterDto.getCenterCode()); |
|
|
centerGoods.setCenterName(tbsCenterDto.getCenterName()); |
|
|
centerGoods.setCenterName(tbsCenterDto.getCenterName()); |
|
|
centerGoods.setCenterRate(tbsCenterDto.getCenterRate()); |
|
|
for (TbsActivitySubjectBo subjectBo : activityBo.getActivitySubjectList()) { |
|
|
centerGoods.setCenterAmount(tbsCenterDto.getCenterAmount()); |
|
|
if(subject.getId().equals(subjectBo.getSubjectId())){ |
|
|
|
|
|
for (TbsActivitySubjectBo.ActivityCenterBo centerBo : subjectBo.getCenterList()) { |
|
|
|
|
|
if(centerBo.getCenterType().equals(tbsCenterDto.getCenterType())&¢erBo.getCenterId().equals(tbsCenterDto.getId())){ |
|
|
|
|
|
centerGoods.setCenterRate(centerBo.getCenterRate()); |
|
|
|
|
|
centerGoods.setCenterAmount(centerBo.getCenterAmount()); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
//设置科目
|
|
|
//设置科目
|
|
|
centerGoods.setCostApplyId(costApplyId); |
|
|
centerGoods.setCostApplyId(costApplyId); |
|
|
centerGoods.setActivityId(activity.getId()); |
|
|
centerGoods.setActivityId(activity.getId()); |
|
@ -458,14 +458,6 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct |
|
|
centerGoods.setPreEndDate(activity.getPreEndDate()); |
|
|
centerGoods.setPreEndDate(activity.getPreEndDate()); |
|
|
centerGoods.setPreStartDate(activity.getPreStartDate()); |
|
|
centerGoods.setPreStartDate(activity.getPreStartDate()); |
|
|
centerGoods.setPreCheckDate(activity.getPreCheckDate()); |
|
|
centerGoods.setPreCheckDate(activity.getPreCheckDate()); |
|
|
//统计
|
|
|
|
|
|
String key4Count = subject.getId()+":"+key; |
|
|
|
|
|
BigDecimal checkAmount = checkAmountMap.get(key4Count); |
|
|
|
|
|
if(checkAmount==null){ |
|
|
|
|
|
checkAmount = BigDecimal.ZERO; |
|
|
|
|
|
} |
|
|
|
|
|
checkAmount = checkAmount.add(centerGoods.getCenterGoodsAmount()); |
|
|
|
|
|
checkAmountMap.put(key4Count,checkAmount); |
|
|
|
|
|
|
|
|
|
|
|
//设置商品
|
|
|
//设置商品
|
|
|
Long cenTarId = centerGoodsBo.getTargetId(); |
|
|
Long cenTarId = centerGoodsBo.getTargetId(); |
|
@ -506,6 +498,9 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct |
|
|
List<TbsActivitySubject> activitySubjects, |
|
|
List<TbsActivitySubject> activitySubjects, |
|
|
List<TbsActivityCenter> activityCenterList, |
|
|
List<TbsActivityCenter> activityCenterList, |
|
|
Long costApplyId,Long activityId){ |
|
|
Long costApplyId,Long activityId){ |
|
|
|
|
|
|
|
|
|
|
|
List<String> existKeyList = new ArrayList<>(); |
|
|
|
|
|
|
|
|
for (TbsActivitySubjectBo subjectBo : activityBo.getActivitySubjectList()) { |
|
|
for (TbsActivitySubjectBo subjectBo : activityBo.getActivitySubjectList()) { |
|
|
BmsSubject subject = subjectService.getById(subjectBo.getSubjectId()); |
|
|
BmsSubject subject = subjectService.getById(subjectBo.getSubjectId()); |
|
|
if(subject==null){ |
|
|
if(subject==null){ |
|
@ -531,9 +526,18 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct |
|
|
activitySubjects.add(activitySubject); |
|
|
activitySubjects.add(activitySubject); |
|
|
BigDecimal totalAmount = BigDecimal.ZERO; |
|
|
BigDecimal totalAmount = BigDecimal.ZERO; |
|
|
BigDecimal totalRate = BigDecimal.ZERO; |
|
|
BigDecimal totalRate = BigDecimal.ZERO; |
|
|
|
|
|
|
|
|
for (TbsActivitySubjectBo.ActivityCenterBo centerBo : subjectBo.getCenterList()) { |
|
|
for (TbsActivitySubjectBo.ActivityCenterBo centerBo : subjectBo.getCenterList()) { |
|
|
|
|
|
TbsActivityCenter activityCenter = new TbsActivityCenter(); |
|
|
|
|
|
activityCenter.setCostApplyId(costApplyId); |
|
|
|
|
|
activityCenter.setActivityId(activityId); |
|
|
|
|
|
activityCenter.setSubjectId(subjectBo.getSubjectId()); |
|
|
|
|
|
activityCenter.setCenterRate(centerBo.getCenterRate()); |
|
|
|
|
|
activityCenter.setCenterAmount(centerBo.getCenterAmount()); |
|
|
|
|
|
activityCenter.setCenterType(centerBo.getCenterType()); |
|
|
totalAmount = totalAmount.add(centerBo.getCenterAmount()); |
|
|
totalAmount = totalAmount.add(centerBo.getCenterAmount()); |
|
|
totalRate = totalRate.add(centerBo.getCenterRate()); |
|
|
totalRate = totalRate.add(centerBo.getCenterRate()); |
|
|
|
|
|
activityCenter.setCenterId(centerBo.getCenterId()); |
|
|
String centerType = centerBo.getCenterType(); |
|
|
String centerType = centerBo.getCenterType(); |
|
|
String centerId = centerBo.getCenterId(); |
|
|
String centerId = centerBo.getCenterId(); |
|
|
String key = centerType+":"+centerId; |
|
|
String key = centerType+":"+centerId; |
|
@ -547,21 +551,12 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct |
|
|
tbsCenterDto.setCenterAmount(centerBo.getCenterAmount()); |
|
|
tbsCenterDto.setCenterAmount(centerBo.getCenterAmount()); |
|
|
centerDtoMap.put(key,tbsCenterDto); |
|
|
centerDtoMap.put(key,tbsCenterDto); |
|
|
} |
|
|
} |
|
|
TbsActivityCenter activityCenter = new TbsActivityCenter(); |
|
|
|
|
|
activityCenter.setCostApplyId(costApplyId); |
|
|
|
|
|
activityCenter.setActivityId(activityId); |
|
|
|
|
|
activityCenter.setSubjectId(subjectBo.getSubjectId()); |
|
|
|
|
|
activityCenter.setCenterRate(centerBo.getCenterRate()); |
|
|
|
|
|
activityCenter.setCenterAmount(centerBo.getCenterAmount()); |
|
|
|
|
|
activityCenter.setCenterType(centerBo.getCenterType()); |
|
|
|
|
|
activityCenter.setCenterId(centerBo.getCenterId()); |
|
|
|
|
|
activityCenter.setCenterName(tbsCenterDto.getCenterName()); |
|
|
activityCenter.setCenterName(tbsCenterDto.getCenterName()); |
|
|
activityCenter.setCenterCode(tbsCenterDto.getCenterCode()); |
|
|
activityCenter.setCenterCode(tbsCenterDto.getCenterCode()); |
|
|
activityCenter.setTmpUk(centerBo.getTmpUk()); |
|
|
activityCenter.setTmpUk(centerBo.getTmpUk()); |
|
|
activityCenterList.add(activityCenter); |
|
|
activityCenterList.add(activityCenter); |
|
|
} |
|
|
} |
|
|
if(activitySubject.getAmount().compareTo(totalAmount)!=0){ |
|
|
if(activitySubject.getAmount().compareTo(totalAmount)!=0){ |
|
|
//log.error("成本中心费用入参有误--amount:{},activitySubject:{}",totalAmount,JsonUtil.objectToJson(activitySubject));
|
|
|
|
|
|
Assert.throwEx("成本中心费用入参有误"); |
|
|
Assert.throwEx("成本中心费用入参有误"); |
|
|
} |
|
|
} |
|
|
if(totalRate.compareTo(new BigDecimal(100))!=0){ |
|
|
if(totalRate.compareTo(new BigDecimal(100))!=0){ |
|
|