|
|
@ -40,6 +40,7 @@ import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; |
|
|
|
import com.qs.serve.modules.tbs.entity.*; |
|
|
|
import com.qs.serve.modules.tbs.entity.dto.TbsCenterGoodBirDTO; |
|
|
|
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; |
|
|
|
import com.qs.serve.modules.tbs.entity.dto.TbsContractCostSubItem; |
|
|
|
import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; |
|
|
|
import com.qs.serve.modules.tbs.mapper.*; |
|
|
|
import com.qs.serve.modules.tbs.service.*; |
|
|
@ -80,14 +81,17 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
private BmsRegionMapper regionMapper; |
|
|
|
private BmsRegion2Mapper region2Mapper; |
|
|
|
private BmsSubjectService subjectService; |
|
|
|
private TbsCostTodoMapper tbsCostTodoMapper; |
|
|
|
private TbsActivitySlottingFeeMapper activitySlottingFeeMapper; |
|
|
|
private TbsActivityPayConditionMapper tbsActivityPayConditionMapper; |
|
|
|
private TbsActivityMapper tbsActivityMapper; |
|
|
|
private TbsActivityCenterGoodsMapper tbsActivityCenterGoodsMapper; |
|
|
|
private ProjectProperties projectProperties; |
|
|
|
private BirRoiRateService birRoiRateService; |
|
|
|
private TbsCostPercentMapper tbsCostPercentMapper; |
|
|
|
private TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; |
|
|
|
private final ErpDispatchDataMapper dispatchDataMapper; |
|
|
|
private TbsCostContractMapper costContractMapper; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@ -174,10 +178,11 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
List<TbsActivityPayCondition> payConditions = null; |
|
|
|
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ |
|
|
|
LambdaQueryWrapper<TbsActivityPayCondition> lqw = new LambdaQueryWrapper<>(); |
|
|
|
lqw.eq(TbsActivityPayCondition::getCostApplyId,id); |
|
|
|
List<TbsActivityPayCondition> payConditions = tbsActivityPayConditionMapper.selectList(lqw); |
|
|
|
payConditions = tbsActivityPayConditionMapper.selectList(lqw); |
|
|
|
if(payConditions.size()<1){ |
|
|
|
Assert.throwEx("请补充支付条件"); |
|
|
|
} |
|
|
@ -212,71 +217,113 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
//恢复绑定
|
|
|
|
this.releaseCost(tbsCostApply.getId(),0); |
|
|
|
Map<String, Object> data = new HashMap<>(10); |
|
|
|
String actTitles = activityList.stream().map(TbsActivity::getActTitle).collect(Collectors.joining("; ")); |
|
|
|
data.put("costApplyCode",tbsCostApply.getCode()); |
|
|
|
data.put("applyUserCode",sysUser.getCode()); |
|
|
|
data.put("applyUserName",sysUser.getName()); |
|
|
|
data.put("supplierName",tbsCostApply.getSupplierName()); |
|
|
|
data.put("supplierCode",tbsCostApply.getSupplierCode()); |
|
|
|
data.put("title",tbsCostApply.getChargeTheme()); |
|
|
|
data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); |
|
|
|
data.put("rowState","03"); |
|
|
|
data.put("orgId",tbsCostApply.getId()+""); |
|
|
|
data.put("targetId",tbsCostApply.getId()+""); |
|
|
|
data.put("targetCode",tbsCostApply.getCode()); |
|
|
|
data.put("exsp1",TbsSeeYonConst.CostApplyConf.Code()); |
|
|
|
data.put("money",tbsCostApply.getTotalActivityAmount()); |
|
|
|
|
|
|
|
//记录主表费率参数
|
|
|
|
try { |
|
|
|
this.buildMainData4ROI(tbsCostApply, data); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ |
|
|
|
//创建协议类data数据
|
|
|
|
data.put("serialNumber",tbsCostApply.getCode()); |
|
|
|
data.put("applySubject",tbsCostApply.getChargeTheme()); |
|
|
|
data.put("supplierCode",tbsCostApply.getSupplierCode()); |
|
|
|
data.put("supplierName",tbsCostApply.getSupplierName()); |
|
|
|
data.put("totalSalesMoney",tbsCostApply.getTotalActivityAmount()); |
|
|
|
data.put("totalExpenseRate",tbsCostApply.getTotalActivityPreNotAmount()); |
|
|
|
data.put("remark",tbsCostApply.getRemark()); |
|
|
|
// data.put("payee","");
|
|
|
|
// data.put("bankName","");
|
|
|
|
// data.put("bankAccount","");
|
|
|
|
// data.put("sealID","");
|
|
|
|
// data.put("sealName","");
|
|
|
|
// data.put("sealNum","");
|
|
|
|
// data.put("fileNum","");
|
|
|
|
|
|
|
|
LambdaQueryWrapper<TbsCostContract> lqw = new LambdaQueryWrapper<>(); |
|
|
|
lqw.eq(TbsCostContract::getCostApplyId,tbsCostApply.getId()); |
|
|
|
List<TbsCostContract> contracts = costContractMapper.selectList(lqw); |
|
|
|
if(contracts.size()>0){ |
|
|
|
TbsCostContract contract = contracts.get(0); |
|
|
|
data.put("contractName",contract.getContractName()); |
|
|
|
data.put("applyMoney",contract.getContractAmount()); |
|
|
|
data.put("signDate",contract.getSignTime()); |
|
|
|
data.put("expireDate",contract.getExpireTime()); |
|
|
|
data.put("contractContent",contract.getContractCondition()); |
|
|
|
//data.put("contractFile","");
|
|
|
|
} |
|
|
|
|
|
|
|
//拓展添加审批关联区域
|
|
|
|
String saleRegionId = supplier.handleSaleRegionId(); |
|
|
|
String bizRegionId = supplier.handleBizRegionId(); |
|
|
|
BmsRegion saleRegion = regionMapper.selectById(saleRegionId); |
|
|
|
BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); |
|
|
|
String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; |
|
|
|
String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; |
|
|
|
//创建子表数据
|
|
|
|
List<Object> subList = new ArrayList<>(); |
|
|
|
|
|
|
|
//活动明细
|
|
|
|
LambdaQueryWrapper<TbsActivityCenterGoods> actCgLqw = new LambdaQueryWrapper<>(); |
|
|
|
actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId,id); |
|
|
|
List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw); |
|
|
|
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { |
|
|
|
TbsActivity currActivity = null; |
|
|
|
for (TbsActivity activity : activityList) { |
|
|
|
if(centerGoods.getActivityId().equals(activity.getId())){ |
|
|
|
currActivity = activity; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
TbsContractCostSubItem.Activity dataActivity = new TbsContractCostSubItem.Activity(); |
|
|
|
dataActivity.setActivityCode(currActivity.getActivityCode()); |
|
|
|
dataActivity.setActivityPurpose(currActivity.getActTitle()); |
|
|
|
dataActivity.setCostCode(tbsCostApply.getCode()); |
|
|
|
dataActivity.setStartDate(currActivity.getActStartDate()); |
|
|
|
dataActivity.setEndDate(currActivity.getActEndDate()); |
|
|
|
dataActivity.setWriteOffDate(currActivity.getPreCheckDate()); |
|
|
|
dataActivity.setProductType(centerGoods.getTargetType()); |
|
|
|
dataActivity.setProduct(centerGoods.getTargetName()); |
|
|
|
dataActivity.setAccountCode(centerGoods.getSubjectCode()); |
|
|
|
dataActivity.setAccountName(centerGoods.getSubjectName()); |
|
|
|
dataActivity.setCostCenterNo(centerGoods.getCenterType()); |
|
|
|
dataActivity.setCostCenterName(centerGoods.getCenterName()); |
|
|
|
dataActivity.setCostMoney(centerGoods.getCenterGoodsAmount()); |
|
|
|
subList.add(dataActivity); |
|
|
|
} |
|
|
|
|
|
|
|
//拓展添加审批关联
|
|
|
|
data.put("biz_region",bizRegionNames); |
|
|
|
data.put("exsp2",saleRegionNames); |
|
|
|
data.put("data_state",TbsCostApplyState.State_1_apply.getCode()+""); |
|
|
|
// 付款条件
|
|
|
|
for (TbsActivityPayCondition payCondition : payConditions) { |
|
|
|
TbsActivity currActivity = null; |
|
|
|
for (TbsActivity activity : activityList) { |
|
|
|
if(payCondition.getActivityId().equals(activity.getId())){ |
|
|
|
currActivity = activity; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
TbsContractCostSubItem.Payment subPayment = new TbsContractCostSubItem.Payment(); |
|
|
|
subPayment.setPayItem(payCondition.getTitle()); |
|
|
|
subPayment.setPayCondition(payCondition.getConditionMsg()); |
|
|
|
subPayment.setMoney(currActivity.getTotalAmount()); |
|
|
|
subPayment.setPayDate(payCondition.getPaymentDate()); |
|
|
|
subPayment.setActualPayDate(null); |
|
|
|
subPayment.setPayCompleteState(payCondition.getPreNotifyStatus()); |
|
|
|
subPayment.setPayRemark(payCondition.getRemark()); |
|
|
|
subList.add(subPayment); |
|
|
|
} |
|
|
|
|
|
|
|
//添加跳转地址业务
|
|
|
|
String urlKey = "exsp5"+IdUtil.simpleUUID(); |
|
|
|
String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey); |
|
|
|
data.put("exsp5",urlKey); |
|
|
|
data.put("cmsLink",baseJumpUrl); |
|
|
|
data.put("activitySummary",actTitles); |
|
|
|
// 协议条款
|
|
|
|
LambdaQueryWrapper<TbsCostTodo> todoLqw = new LambdaQueryWrapper<>(); |
|
|
|
todoLqw.eq(TbsCostTodo::getCostApplyId,tbsCostApply.getId()); |
|
|
|
List<TbsCostTodo> costTodoList = tbsCostTodoMapper.selectList(todoLqw); |
|
|
|
for (TbsCostTodo costTodo : costTodoList) { |
|
|
|
TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem(); |
|
|
|
toDoItem.setServiceDescription(costTodo.getDescr()); |
|
|
|
toDoItem.setDeliveryStandard(costTodo.getPayMsg()); |
|
|
|
toDoItem.setDeliveryDate(costTodo.getPrePayDate()); |
|
|
|
toDoItem.setAgreeRemark(costTodo.getRemark()); |
|
|
|
subList.add(toDoItem); |
|
|
|
} |
|
|
|
//关联
|
|
|
|
data.put("sub", subList); |
|
|
|
|
|
|
|
//添加科目和成本中心
|
|
|
|
List<TbsActivityCenter> tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
List<TbsActivitySubject> tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
List<String> subjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).distinct().collect(Collectors.toList()); |
|
|
|
List<Object> subList = new ArrayList<>(); |
|
|
|
//创建子表数据
|
|
|
|
try { |
|
|
|
this.buildSubList(result, tbsActivityCenters, subjectNames, subList); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
//创建商品抬头列表
|
|
|
|
List<TbsActivityGoods> tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
Set<String> bands = new HashSet<>(); |
|
|
|
for (TbsActivityGoods tbsActivityGood : tbsActivityGoods) { |
|
|
|
String band = tbsActivityGood.getTargetLevelPathNames().split("_")[0]; |
|
|
|
bands.add(band); |
|
|
|
}else { |
|
|
|
//创建通用的费用申请Data
|
|
|
|
this.buildCommonApplyData(id, tbsCostApply, activityList, supplier, result, sysUser, data); |
|
|
|
} |
|
|
|
String goods = bands.stream().collect(Collectors.joining(",")); |
|
|
|
data.put("chanPinPinLei",goods); |
|
|
|
data.put("sub",subList); |
|
|
|
//修改申请编码
|
|
|
|
String templateCode = tbsCostApply.getCostThemeEditFlag().equals(1) |
|
|
|
?TbsSeeYonConst.CostApplyContractConf.Code() |
|
|
|
:TbsSeeYonConst.CostApplyConf.Code(); |
|
|
|
BaseCreateProcessBo createProcess = new BaseCreateProcessBo(); |
|
|
|
createProcess.setTemplateCode(TbsSeeYonConst.CostApplyConf.Code()); |
|
|
|
createProcess.setTemplateCode(templateCode); |
|
|
|
createProcess.setMemberLoginName(sysUser.getSyAccount()); |
|
|
|
createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_COST_APPLY + tbsCostApply.getChargeTheme()); |
|
|
|
createProcess.setTargetId(tbsCostApply.getId()+""); |
|
|
@ -358,6 +405,72 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private void buildCommonApplyData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, BmsSupplier supplier, TbsBudgetCostResult result, SysUser sysUser, Map<String, Object> data) { |
|
|
|
String actTitles = activityList.stream().map(TbsActivity::getActTitle).collect(Collectors.joining("; ")); |
|
|
|
data.put("costApplyCode", tbsCostApply.getCode()); |
|
|
|
data.put("applyUserCode", sysUser.getCode()); |
|
|
|
data.put("applyUserName", sysUser.getName()); |
|
|
|
data.put("supplierName", tbsCostApply.getSupplierName()); |
|
|
|
data.put("supplierCode", tbsCostApply.getSupplierCode()); |
|
|
|
data.put("title", tbsCostApply.getChargeTheme()); |
|
|
|
data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); |
|
|
|
data.put("rowState","03"); |
|
|
|
data.put("orgId", tbsCostApply.getId()+""); |
|
|
|
data.put("targetId", tbsCostApply.getId()+""); |
|
|
|
data.put("targetCode", tbsCostApply.getCode()); |
|
|
|
data.put("exsp1",TbsSeeYonConst.CostApplyConf.Code()); |
|
|
|
data.put("money", tbsCostApply.getTotalActivityAmount()); |
|
|
|
|
|
|
|
//记录主表费率参数
|
|
|
|
try { |
|
|
|
this.buildMainData4ROI(tbsCostApply, data); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
|
|
|
|
//拓展添加审批关联区域
|
|
|
|
String saleRegionId = supplier.handleSaleRegionId(); |
|
|
|
String bizRegionId = supplier.handleBizRegionId(); |
|
|
|
BmsRegion saleRegion = regionMapper.selectById(saleRegionId); |
|
|
|
BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); |
|
|
|
String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; |
|
|
|
String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; |
|
|
|
|
|
|
|
//拓展添加审批关联
|
|
|
|
data.put("biz_region",bizRegionNames); |
|
|
|
data.put("exsp2",saleRegionNames); |
|
|
|
data.put("data_state",TbsCostApplyState.State_1_apply.getCode()+""); |
|
|
|
|
|
|
|
//添加跳转地址业务
|
|
|
|
String urlKey = "exsp5"+IdUtil.simpleUUID(); |
|
|
|
String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey); |
|
|
|
data.put("exsp5",urlKey); |
|
|
|
data.put("cmsLink",baseJumpUrl); |
|
|
|
data.put("activitySummary",actTitles); |
|
|
|
|
|
|
|
//添加科目和成本中心
|
|
|
|
List<TbsActivityCenter> tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
List<TbsActivitySubject> tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
List<String> subjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).distinct().collect(Collectors.toList()); |
|
|
|
List<Object> subList = new ArrayList<>(); |
|
|
|
//创建子表数据
|
|
|
|
try { |
|
|
|
this.buildSubList(result, tbsActivityCenters, subjectNames, subList); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
//创建商品抬头列表
|
|
|
|
List<TbsActivityGoods> tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
Set<String> bands = new HashSet<>(); |
|
|
|
for (TbsActivityGoods tbsActivityGood : tbsActivityGoods) { |
|
|
|
String band = tbsActivityGood.getTargetLevelPathNames().split("_")[0]; |
|
|
|
bands.add(band); |
|
|
|
} |
|
|
|
String goods = bands.stream().collect(Collectors.joining(",")); |
|
|
|
data.put("chanPinPinLei",goods); |
|
|
|
data.put("sub",subList); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 记录主表费率参数 |
|
|
|
* @param tbsCostApply |
|
|
|