@ -26,17 +26,17 @@ import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsGoodsType ;
import com.qs.serve.modules.tbs.common.TbsGoodsType ;
import com.qs.serve.modules.tbs.entity.* ;
import com.qs.serve.modules.tbs.entity.* ;
import com.qs.serve.modules.tbs.entity.bo.* ;
import com.qs.serve.modules.tbs.entity.bo.* ;
import com.qs.serve.modules.tbs.mapper.TbsActivityTemplateMapper ;
import com.qs.serve.modules.tbs.entity.dto.TbsActivityAmtCheck ;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper ;
import com.qs.serve.modules.tbs.mapper.* ;
import com.qs.serve.modules.tbs.service.* ;
import com.qs.serve.modules.tbs.service.* ;
import lombok.AllArgsConstructor ;
import lombok.AllArgsConstructor ;
import lombok.extern.slf4j.Slf4j ;
import lombok.extern.slf4j.Slf4j ;
import org.apache.ibatis.annotations.One ;
import org.apache.ibatis.annotations.One ;
import org.springframework.stereotype.Service ;
import org.springframework.stereotype.Service ;
import com.qs.serve.modules.tbs.mapper.TbsActivityMapper ;
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.* ;
@ -62,6 +62,7 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
private final TbsCostApplyMapper costApplyMapper ;
private final TbsCostApplyMapper costApplyMapper ;
private final TbsActivitySlottingFeeService activitySlottingFeeService ;
private final TbsActivitySlottingFeeService activitySlottingFeeService ;
private final TbsCenterDtoService tbsCenterDtoService ;
private final TbsCenterDtoService tbsCenterDtoService ;
private final TbsBudgetLogMapper tbsBudgetLogMapper ;
private final BmsSubjectFormMapper subjectFormMapper ;
private final BmsSubjectFormMapper subjectFormMapper ;
private final BmsSupplierService supplierService ;
private final BmsSupplierService supplierService ;
@ -75,8 +76,26 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
private final SysConfigService configService ;
private final SysConfigService configService ;
private final TbsActivityAmtCheckMapper activityAmtCheckMapper ;
@Override
public void checkCenterGoods ( boolean updateBudgetLog ) {
List < TbsActivityAmtCheck > activityAmtCheckList = activityAmtCheckMapper . listByCostApplyId ( 274022L ) ;
for ( TbsActivityAmtCheck amtCheck : activityAmtCheckList ) {
LambdaQueryWrapper < TbsActivityCenterGoods > centerGoodsLqw = new LambdaQueryWrapper < > ( ) ;
centerGoodsLqw . eq ( TbsActivityCenterGoods : : getActivityId , amtCheck . getActivityId ( ) ) ;
centerGoodsLqw . apply ( " limit 1" ) ;
TbsActivityCenterGoods centerGoods = activityCenterGoodsService . getOne ( centerGoodsLqw ) ;
centerGoods . setCenterGoodsAmount ( centerGoods . getCenterGoodsAmount ( ) . add ( amtCheck . getDiffAmount ( ) ) ) ;
activityCenterGoodsService . updateById ( centerGoods ) ;
}
}
@Override
@Override
public List < TbsActivity > listByCostApplyId ( Long id ) {
public List < TbsActivity > listByCostApplyId ( Long id ) {
LambdaQueryWrapper < TbsActivity > lqw = new LambdaQueryWrapper < > ( ) ;
LambdaQueryWrapper < TbsActivity > lqw = new LambdaQueryWrapper < > ( ) ;
@ -198,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 ( ) ) {
@ -214,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 < > ( ) ;
@ -389,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
@ -398,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 ) {
@ -424,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 ( ) ) & & centerBo . 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 ( ) ) ;
@ -440,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 ( ) ;
@ -488,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 ) {
@ -513,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 ;
@ -529,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 ) {