|
|
@ -259,157 +259,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
this.releaseCost(tbsCostApply.getId(),0); |
|
|
|
Map<String, Object> data = new HashMap<>(10); |
|
|
|
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ |
|
|
|
|
|
|
|
data.put("title",tbsCostApply.getChargeTheme()); |
|
|
|
data.put("orgId",tbsCostApply.getId().toString()); |
|
|
|
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("targetId", tbsCostApply.getId()+""); |
|
|
|
data.put("targetCode", tbsCostApply.getCode()); |
|
|
|
data.put("exsp1",TbsSeeYonConst.CostApplyContractConf.Code()); |
|
|
|
//添加跳转地址业务
|
|
|
|
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("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); |
|
|
|
data.put("rowState","03"); |
|
|
|
|
|
|
|
//拓展添加审批关联区域
|
|
|
|
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("dataState",TbsCostApplyState.State_1_apply.getCode()+""); |
|
|
|
|
|
|
|
//创建协议类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.getTotalActivityPreAmount()); |
|
|
|
data.put("totalExpenseRate",tbsCostApply.getTotalActivityAmount().divide(tbsCostApply.getTotalActivityPreAmount(),2,RoundingMode.DOWN)); |
|
|
|
data.put("remark",tbsCostApply.getRemark()); |
|
|
|
|
|
|
|
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("payee",contract.getPayee()); |
|
|
|
data.put("bankName",contract.getBankName()); |
|
|
|
data.put("bankAccount",contract.getBankAccount()); |
|
|
|
data.put("sealID",contract.getSealId()); |
|
|
|
data.put("sealName",contract.getSealName()); |
|
|
|
data.put("sealNum",contract.getSealNum()); |
|
|
|
data.put("fileNum",contract.getFileNum()); |
|
|
|
|
|
|
|
data.put("contractName",contract.getContractName()); |
|
|
|
data.put("contractTotalMoney",contract.getContractAmount()); |
|
|
|
data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString()); |
|
|
|
data.put("expireDate",contract.getExpireTime()==null?null:contract.getExpireTime().toString()); |
|
|
|
data.put("contractContent",contract.getContractCondition()); |
|
|
|
String urls = ""; |
|
|
|
if (CollectionUtil.isNotEmpty(contract.getAttachIds())){ |
|
|
|
List<String> attachIds = Arrays.asList(contract.getAttachIds()); |
|
|
|
List<SysAttach> attachList = sysAttachService.listByIds(attachIds); |
|
|
|
urls = attachList.stream().map(SysAttach::getPath).collect(Collectors.joining(" , ")); |
|
|
|
} |
|
|
|
data.put("contractFile",urls); |
|
|
|
}else { |
|
|
|
Assert.throwEx("请补充合同信息"); |
|
|
|
} |
|
|
|
|
|
|
|
//创建子表数据
|
|
|
|
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()==null?null:currActivity.getActStartDate().toString()); |
|
|
|
dataActivity.setEndDate(currActivity.getActEndDate()==null?null:currActivity.getActEndDate().toString()); |
|
|
|
dataActivity.setWriteOffDate(currActivity.getPreCheckDate()==null?null:currActivity.getPreCheckDate().toString()); |
|
|
|
dataActivity.setProductType(centerGoods.getTargetType()); |
|
|
|
dataActivity.setProduct(centerGoods.getTargetName()); |
|
|
|
dataActivity.setActivityAccountCode(centerGoods.getSubjectCode()); |
|
|
|
dataActivity.setActivityAccountName(centerGoods.getSubjectName()); |
|
|
|
dataActivity.setActivityCostCenterNo(centerGoods.getCenterCode()); |
|
|
|
dataActivity.setActivityCostCenterName(centerGoods.getCenterName()+"("+centerGoods.getCenterType()+")"); |
|
|
|
dataActivity.setMoney(centerGoods.getCenterGoodsAmount()); |
|
|
|
subList.add(dataActivity); |
|
|
|
} |
|
|
|
//活动的科目和成本中心
|
|
|
|
List<TbsActivityCenter> tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
String concatCenterCodes = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterCode).collect(Collectors.joining(",")); |
|
|
|
String concatCenterNames = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterName).collect(Collectors.joining(",")); |
|
|
|
List<TbsActivitySubject> tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
String concatSubjectCodes = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectCode).collect(Collectors.joining(",")); |
|
|
|
String concatSubjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).collect(Collectors.joining(",")); |
|
|
|
// 付款条件
|
|
|
|
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.setApplyMoney(currActivity.getTotalAmount()); |
|
|
|
subPayment.setPayDate(payCondition.getPaymentDate()!=null?payCondition.getPaymentDate().toString():null); |
|
|
|
subPayment.setActualPayDate(null); |
|
|
|
String stateMsg = payCondition.getFinishedFlag().equals(1)?"已完成":"未处理"; |
|
|
|
subPayment.setPayCompleteState(stateMsg); |
|
|
|
subPayment.setPayRemark(payCondition.getRemark()); |
|
|
|
subPayment.setPayCode(payCondition.getCode()); |
|
|
|
subPayment.setAccountCode(concatSubjectCodes); |
|
|
|
subPayment.setAccountName(concatSubjectNames); |
|
|
|
subPayment.setCostCenterNo(concatCenterCodes); |
|
|
|
subPayment.setCostCenterName(concatCenterNames); |
|
|
|
subList.add(subPayment); |
|
|
|
} |
|
|
|
|
|
|
|
// 协议条款
|
|
|
|
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()==null?null : costTodo.getPrePayDate().toString()); |
|
|
|
toDoItem.setAgreeRemark(costTodo.getRemark()); |
|
|
|
toDoItem.setAgreeCompleteState(costTodo.getFinishedFlag().equals(1)?"已完成":"未完成"); |
|
|
|
subList.add(toDoItem); |
|
|
|
} |
|
|
|
//关联
|
|
|
|
data.put("sub", subList); |
|
|
|
|
|
|
|
//创建协议的费用申请Data
|
|
|
|
this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data); |
|
|
|
}else { |
|
|
|
//创建通用的费用申请Data
|
|
|
|
this.buildCommonApplyData(id, tbsCostApply, activityList, supplier, result, sysUser, data); |
|
|
@ -504,6 +355,172 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建协议类的申请DATA |
|
|
|
* @param id |
|
|
|
* @param tbsCostApply |
|
|
|
* @param activityList |
|
|
|
* @param payConditions |
|
|
|
* @param supplier |
|
|
|
* @param sysUser |
|
|
|
* @param data |
|
|
|
*/ |
|
|
|
private void buildContractApplyData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, List<TbsActivityPayCondition> payConditions, BmsSupplier supplier, SysUser sysUser, Map<String, Object> data) { |
|
|
|
data.put("title", tbsCostApply.getChargeTheme()); |
|
|
|
data.put("orgId", tbsCostApply.getId().toString()); |
|
|
|
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("targetId", tbsCostApply.getId()+""); |
|
|
|
data.put("targetCode", tbsCostApply.getCode()); |
|
|
|
data.put("exsp1",TbsSeeYonConst.CostApplyContractConf.Code()); |
|
|
|
//添加跳转地址业务
|
|
|
|
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("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); |
|
|
|
data.put("rowState","03"); |
|
|
|
|
|
|
|
//拓展添加审批关联区域
|
|
|
|
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("dataState",TbsCostApplyState.State_1_apply.getCode()+""); |
|
|
|
|
|
|
|
//创建协议类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.getTotalActivityPreAmount()); |
|
|
|
data.put("totalExpenseRate", tbsCostApply.getTotalActivityAmount().divide(tbsCostApply.getTotalActivityPreAmount(),2,RoundingMode.DOWN)); |
|
|
|
data.put("remark", tbsCostApply.getRemark()); |
|
|
|
|
|
|
|
LambdaQueryWrapper<TbsCostContract> lqw = new LambdaQueryWrapper<>(); |
|
|
|
lqw.eq(TbsCostContract::getCostApplyId, tbsCostApply.getId()); |
|
|
|
List<TbsCostContract> contracts = costContractMapper.selectList(lqw); |
|
|
|
|
|
|
|
if(contracts.size()>0){ |
|
|
|
//活动的科目和成本中心
|
|
|
|
List<TbsActivityCenter> tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
String concatCenterCodes = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterCode).collect(Collectors.joining(",")); |
|
|
|
String concatCenterNames = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterName).collect(Collectors.joining(",")); |
|
|
|
List<TbsActivitySubject> tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
String concatSubjectCodes = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectCode).collect(Collectors.joining(",")); |
|
|
|
String concatSubjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).collect(Collectors.joining(",")); |
|
|
|
|
|
|
|
TbsCostContract contract = contracts.get(0); |
|
|
|
data.put("payee",contract.getPayee()); |
|
|
|
data.put("bankName",contract.getBankName()); |
|
|
|
data.put("bankAccount",contract.getBankAccount()); |
|
|
|
data.put("sealID",contract.getSealId()); |
|
|
|
data.put("sealName",contract.getSealName()); |
|
|
|
data.put("sealNum",contract.getSealNum()); |
|
|
|
data.put("fileNum",contract.getFileNum()); |
|
|
|
|
|
|
|
data.put("accountCode",concatSubjectCodes); |
|
|
|
data.put("accountName",concatSubjectNames); |
|
|
|
data.put("costCenterNo",concatCenterCodes); |
|
|
|
data.put("costCenterName",concatCenterNames); |
|
|
|
|
|
|
|
|
|
|
|
data.put("contractName",contract.getContractName()); |
|
|
|
data.put("contractTotalMoney",contract.getContractAmount()); |
|
|
|
data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString()); |
|
|
|
data.put("expireDate",contract.getExpireTime()==null?null:contract.getExpireTime().toString()); |
|
|
|
data.put("contractContent",contract.getContractCondition()); |
|
|
|
String urls = ""; |
|
|
|
if (CollectionUtil.isNotEmpty(contract.getAttachIds())){ |
|
|
|
List<String> attachIds = Arrays.asList(contract.getAttachIds()); |
|
|
|
List<SysAttach> attachList = sysAttachService.listByIds(attachIds); |
|
|
|
urls = attachList.stream().map(SysAttach::getPath).collect(Collectors.joining(" , ")); |
|
|
|
} |
|
|
|
data.put("contractFile",urls); |
|
|
|
}else { |
|
|
|
Assert.throwEx("请补充合同信息"); |
|
|
|
} |
|
|
|
|
|
|
|
//创建子表数据
|
|
|
|
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()==null?null:currActivity.getActStartDate().toString()); |
|
|
|
dataActivity.setEndDate(currActivity.getActEndDate()==null?null:currActivity.getActEndDate().toString()); |
|
|
|
dataActivity.setWriteOffDate(currActivity.getPreCheckDate()==null?null:currActivity.getPreCheckDate().toString()); |
|
|
|
dataActivity.setProductType(centerGoods.getTargetType()); |
|
|
|
dataActivity.setProduct(centerGoods.getTargetName()); |
|
|
|
dataActivity.setActivityAccountCode(centerGoods.getSubjectCode()); |
|
|
|
dataActivity.setActivityAccountName(centerGoods.getSubjectName()); |
|
|
|
dataActivity.setActivityCostCenterNo(centerGoods.getCenterCode()); |
|
|
|
dataActivity.setActivityCostCenterName(centerGoods.getCenterName()+"("+centerGoods.getCenterType()+")"); |
|
|
|
dataActivity.setMoney(centerGoods.getCenterGoodsAmount()); |
|
|
|
subList.add(dataActivity); |
|
|
|
} |
|
|
|
// 付款条件
|
|
|
|
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.setApplyMoney(currActivity.getTotalAmount()); |
|
|
|
subPayment.setPayDate(payCondition.getPaymentDate()!=null?payCondition.getPaymentDate().toString():null); |
|
|
|
subPayment.setActualPayDate(null); |
|
|
|
String stateMsg = payCondition.getFinishedFlag().equals(1)?"已完成":"未处理"; |
|
|
|
subPayment.setPayCompleteState(stateMsg); |
|
|
|
subPayment.setPayRemark(payCondition.getRemark()); |
|
|
|
subPayment.setPayCode(payCondition.getCode()); |
|
|
|
subList.add(subPayment); |
|
|
|
} |
|
|
|
|
|
|
|
// 协议条款
|
|
|
|
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()==null?null : costTodo.getPrePayDate().toString()); |
|
|
|
toDoItem.setAgreeRemark(costTodo.getRemark()); |
|
|
|
toDoItem.setAgreeCompleteState(costTodo.getFinishedFlag().equals(1)?"已完成":"未完成"); |
|
|
|
subList.add(toDoItem); |
|
|
|
} |
|
|
|
//关联
|
|
|
|
data.put("sub", subList); |
|
|
|
} |
|
|
|
|
|
|
|
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()); |
|
|
|