14 changed files with 308 additions and 30 deletions
@ -0,0 +1,19 @@ |
|||
package com.qs.serve.modules.tbs.entity.bo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
/** |
|||
* @author YenHex |
|||
* @since 2022/12/19 |
|||
*/ |
|||
@Data |
|||
public class TbsCostApplyChangeBo { |
|||
|
|||
@NotNull |
|||
TbsCostApplyBo costApplyBo; |
|||
|
|||
|
|||
|
|||
} |
@ -0,0 +1,19 @@ |
|||
package com.qs.serve.modules.tbs.service; |
|||
|
|||
import com.qs.serve.common.model.dto.R; |
|||
import com.qs.serve.modules.tbs.entity.TbsCostApply; |
|||
|
|||
/** |
|||
* @author YenHex |
|||
* @since 2023/7/27 |
|||
*/ |
|||
public interface TbsCostApplyPart1Service { |
|||
|
|||
/** |
|||
* 执行异动 |
|||
* @param costId |
|||
* @return 返回新的活动申请ID |
|||
*/ |
|||
TbsCostApply toSetChanged(Long costId); |
|||
|
|||
} |
@ -0,0 +1,189 @@ |
|||
package com.qs.serve.modules.tbs.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import com.qs.serve.common.config.properties.ProjectProperties; |
|||
import com.qs.serve.common.model.dto.R; |
|||
import com.qs.serve.common.util.Assert; |
|||
import com.qs.serve.common.util.AuthContextUtils; |
|||
import com.qs.serve.common.util.CopierUtil; |
|||
import com.qs.serve.modules.bir.service.BirCenterRateService; |
|||
import com.qs.serve.modules.bir.service.BirRoiRateService; |
|||
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; |
|||
import com.qs.serve.modules.bms.mapper.BmsRegionMapper; |
|||
import com.qs.serve.modules.bms.service.BmsSubjectService; |
|||
import com.qs.serve.modules.bms.service.BmsSupplierService; |
|||
import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; |
|||
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; |
|||
import com.qs.serve.modules.sys.service.SysAttachService; |
|||
import com.qs.serve.modules.sys.service.SysUserService; |
|||
import com.qs.serve.modules.tbs.common.TbsCostApplyState; |
|||
import com.qs.serve.modules.tbs.entity.*; |
|||
import com.qs.serve.modules.tbs.mapper.*; |
|||
import com.qs.serve.modules.tbs.service.*; |
|||
import com.qs.serve.modules.vtb.common.VtbVerificationState; |
|||
import com.qs.serve.modules.vtb.entity.VtbVerification; |
|||
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author YenHex |
|||
* @since 2023/7/27 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { |
|||
|
|||
private TbsCostApplyService tbsCostApplyService; |
|||
|
|||
private TbsActivityCenterService tbsActivityCenterService; |
|||
private TbsActivitySubjectService tbsActivitySubjectService; |
|||
private TbsActivityGoodsService tbsActivityGoodsService; |
|||
private TbsActivitySlottingFeeService tbsActivitySlottingFeeService; |
|||
private TbsActivityPayConditionService activitySlottingConditionService; |
|||
private TbsActivityMapper tbsActivityMapper; |
|||
private TbsActivityCenterGoodsService tbsActivityCenterGoodsService; |
|||
private TbsActivityChannelService tbsActivityChannelService; |
|||
private TbsActivityChannelPointService tbsActivityChannelPointService; |
|||
private TbsCostContractMapper costContractMapper; |
|||
private VtbVerificationMapper verificationMapper; |
|||
|
|||
@Override |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public TbsCostApply toSetChanged(Long costId) { |
|||
String userId = AuthContextUtils.getSysUserId(); |
|||
TbsCostApply orgCost = tbsCostApplyService.getById(costId); |
|||
if(!userId.equals(orgCost.getUserId())){ |
|||
Assert.throwEx("拒绝访问"); |
|||
} |
|||
if(!orgCost.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){ |
|||
Assert.throwEx("费用申请的状态不支持"); |
|||
} |
|||
//判断是否有核销记录
|
|||
LambdaQueryWrapper<VtbVerification> vtbLqwCount = new LambdaQueryWrapper<>(); |
|||
vtbLqwCount.eq(VtbVerification::getCostApplyId,costId); |
|||
vtbLqwCount.and(qw->{ |
|||
qw.eq(VtbVerification::getVerificationState, VtbVerificationState.Commiting.getCode()) |
|||
.or().eq(VtbVerification::getVerificationState,VtbVerificationState.Finished.getCode()); |
|||
}); |
|||
Long count = verificationMapper.selectCount(vtbLqwCount); |
|||
if(count>0){ |
|||
Assert.throwEx("含有核销记录不支持异动"); |
|||
} |
|||
//复制新记录
|
|||
TbsCostApply costApply = CopierUtil.copy(orgCost,new TbsCostApply()); |
|||
costApply.setId(null); |
|||
costApply.setChargeState(TbsCostApplyState.State_0_unPublish.getCode()); |
|||
tbsCostApplyService.save(costApply); |
|||
final Long newCostApplyId = costApply.getId(); |
|||
//费用相关复制
|
|||
QueryWrapper qw_cost_apply = new QueryWrapper(); |
|||
qw_cost_apply.eq("cost_apply_id",costId); |
|||
List<TbsCostContract> contracts = costContractMapper.selectList(qw_cost_apply); |
|||
contracts.forEach(con->{ |
|||
con.setId(null); |
|||
con.setCostApplyId(newCostApplyId); |
|||
}); |
|||
//活动相关复制
|
|||
List<TbsActivity> activityList = tbsActivityMapper.selectList(qw_cost_apply); |
|||
this.copyAboutActivityData(newCostApplyId, activityList); |
|||
|
|||
//更变旧记录
|
|||
orgCost.setChargeState(TbsCostApplyState.State_7_changed.getCode()); |
|||
orgCost.setCancelFlag(1); |
|||
tbsCostApplyService.updateById(orgCost); |
|||
return costApply; |
|||
} |
|||
|
|||
/** |
|||
* 活动相关复制 |
|||
* @param newCostApplyId |
|||
* @param activityList |
|||
*/ |
|||
private void copyAboutActivityData(Long newCostApplyId, List<TbsActivity> activityList) { |
|||
for (TbsActivity orgActivity : activityList) { |
|||
//原ActivityID
|
|||
Long orgActivityId = orgActivity.getId(); |
|||
//重新保存
|
|||
orgActivity.setId(null); |
|||
tbsActivityMapper.insert(orgActivity); |
|||
final Long newActivityId = orgActivity.getId(); |
|||
|
|||
QueryWrapper qw_activity = new QueryWrapper(); |
|||
qw_activity.eq("activity_id",orgActivityId); |
|||
|
|||
List<TbsActivityGoods> goodsList = tbsActivityGoodsService.list(qw_activity); |
|||
goodsList.forEach(obj->{ |
|||
obj.setId(null); |
|||
obj.setCostApplyId(newCostApplyId); |
|||
obj.setActivityId(newActivityId); |
|||
}); |
|||
tbsActivityGoodsService.saveBatch(goodsList); |
|||
|
|||
List<TbsActivityCenter> centerList = tbsActivityCenterService.list(qw_activity); |
|||
centerList.forEach(obj->{ |
|||
obj.setId(null); |
|||
obj.setCostApplyId(newCostApplyId); |
|||
obj.setActivityId(newActivityId); |
|||
}); |
|||
tbsActivityCenterService.saveBatch(centerList); |
|||
|
|||
List<TbsActivitySubject> subjectList = tbsActivitySubjectService.list(qw_activity); |
|||
subjectList.forEach(obj->{ |
|||
obj.setId(null); |
|||
obj.setCostApplyId(newCostApplyId); |
|||
obj.setActivityId(newActivityId); |
|||
}); |
|||
tbsActivitySubjectService.saveBatch(subjectList); |
|||
|
|||
List<TbsActivityCenterGoods> centerGoodsList = tbsActivityCenterGoodsService.list(qw_activity); |
|||
centerGoodsList.forEach(obj->{ |
|||
obj.setId(null); |
|||
obj.setCostApplyId(newCostApplyId); |
|||
obj.setActivityId(newActivityId); |
|||
}); |
|||
tbsActivityCenterGoodsService.saveBatch(centerGoodsList); |
|||
|
|||
List<TbsActivityChannel> channelList = tbsActivityChannelService.list(qw_activity); |
|||
channelList.forEach(obj->{ |
|||
obj.setId(null); |
|||
obj.setCostApplyId(newCostApplyId); |
|||
obj.setActivityId(newActivityId); |
|||
}); |
|||
tbsActivityChannelService.saveBatch(channelList); |
|||
|
|||
List<TbsActivityChannelPoint> channelPointList = tbsActivityChannelPointService.list(qw_activity); |
|||
channelPointList.forEach(obj->{ |
|||
obj.setId(null); |
|||
obj.setCostApplyId(newCostApplyId); |
|||
obj.setActivityId(newActivityId); |
|||
}); |
|||
tbsActivityChannelPointService.saveBatch(channelPointList); |
|||
|
|||
|
|||
List<TbsActivityPayCondition> payConditionList = activitySlottingConditionService.list(qw_activity); |
|||
payConditionList.forEach(obj->{ |
|||
obj.setId(null); |
|||
obj.setCostApplyId(newCostApplyId); |
|||
obj.setActivityId(newActivityId); |
|||
}); |
|||
activitySlottingConditionService.saveBatch(payConditionList); |
|||
|
|||
List<TbsActivitySlottingFee> slottingFeeList = tbsActivitySlottingFeeService.list(qw_activity); |
|||
slottingFeeList.forEach(obj->{ |
|||
obj.setId(null); |
|||
obj.setCostApplyId(newCostApplyId); |
|||
obj.setActivityId(newActivityId); |
|||
}); |
|||
tbsActivitySlottingFeeService.saveBatch(slottingFeeList); |
|||
|
|||
} |
|||
} |
|||
|
|||
} |
Loading…
Reference in new issue