14 changed files with 448 additions and 158 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