Browse Source

协议类申请DATA调整

v1.0
Yen 2 years ago
parent
commit
ce2814c1da
  1. 5
      src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java
  2. 249
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

5
src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java

@ -40,11 +40,6 @@ public class TbsContractCostSubItem {
private String payCompleteState; private String payCompleteState;
private String payRemark; private String payRemark;
private String payCode;// 唯一 private String payCode;// 唯一
private String accountCode;// 拼科目编号
private String accountName;// 拼科目名称
private String costCenterNo;// 拼成本中心编号
private String costCenterName;// 拼成本中心名称
} }
@Data @Data

249
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -259,9 +259,115 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
this.releaseCost(tbsCostApply.getId(),0); this.releaseCost(tbsCostApply.getId(),0);
Map<String, Object> data = new HashMap<>(10); Map<String, Object> data = new HashMap<>(10);
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){
//创建协议的费用申请Data
this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data);
}else {
//创建通用的费用申请Data
this.buildCommonApplyData(id, tbsCostApply, activityList, supplier, result, sysUser, data);
}
//修改申请编码
String templateCode = tbsCostApply.getContractFlag().equals(1)
?TbsSeeYonConst.CostApplyContractConf.Code()
:TbsSeeYonConst.CostApplyConf.Code();
BaseCreateProcessBo createProcess = new BaseCreateProcessBo();
createProcess.setTemplateCode(templateCode);
createProcess.setMemberLoginName(sysUser.getSyAccount());
createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_COST_APPLY + tbsCostApply.getChargeTheme());
createProcess.setTargetId(tbsCostApply.getId()+"");
createProcess.setDataJson(JsonUtil.objectToJson(data));
R<String> flowIdResult = seeYonService.baseCreateProcess(createProcess);
if(flowIdResult.getStatus()!=200){
Assert.throwEx("远程服务调用失败");
}
String flowId = flowIdResult.getData();
String formId = null;
R<String> formIdResult = seeYonService.getFormId(templateCode,tbsCostApply.getId());
if(formIdResult.getStatus()==200){
formId = formIdResult.getData();
}
TbsCostApply costApply = new TbsCostApply();
costApply.setId(tbsCostApply.getId());
costApply.setSyFlowId(flowId);
costApply.setSyFormId(formId);
costApply.setChargeState(TbsCostApplyState.State_1_apply.getCode());
costApply.setSubmitTime(LocalDateTime.now());
this.updateById(costApply);
costApply = this.getById(costApply.getId());
//移除历史记录
budgetCostItemService.removeByCostApplyId(costApply.getId());
//保存无命中条件的预算
if(CollectionUtil.isNotEmpty(result.getBudgetUnMatchList())){
List<TbsCostUnItem> costUnItems = result.getBudgetUnMatchList().stream()
.map(obj-> CopierUtil.copy(obj,new TbsCostUnItem())).collect(Collectors.toList());
tbsCostUnItemService.saveBatch(costUnItems);
}
//重新保存
List<TbsBudgetCostItem> allBudgetItem = new ArrayList<>();
allBudgetItem.addAll(result.getBudgetMatchList());
allBudgetItem.addAll(result.getBudgetUnMatchList());
budgetCostItemService.saveBatch(allBudgetItem);
//TODO 无匹配的预算item保存到 TbsCostUnItem
//保存预算使用日志
List<TbsBudgetLog> budgetLogList = saveBudgetLog(result, sysUser, costApply, result.getBudgetMatchList(),result.getActivityList());
if(tbsCostApply.getChargeState().equals(TbsCostApplyState.State_0_unPublish.getCode())){
if(CollectionUtil.isNotEmpty(budgetLogList)){
budgetLogService.saveBatch(budgetLogList);
}
}else {
//排除历史记录
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>();
logLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId());
logLqw.eq(TbsBudgetLog::getRollbackFlag, BudgetLogRollbackFlag.State_1);
List<TbsBudgetLog> oldLogList = budgetLogService.list(logLqw);
List<TbsBudgetLog> oldLogList4Upd = oldLogList.stream().map(a->{
TbsBudgetLog budgetLog = new TbsBudgetLog();
budgetLog.setId(a.getId());
budgetLog.setRollbackFlag(BudgetLogRollbackFlag.State_2);
return budgetLog;
}).collect(Collectors.toList());
budgetLogService.updateBatchById(oldLogList4Upd);
oldLogList = oldLogList.stream().filter(a->
a.getOptType().equals(BudgetLogOptFlag.State_1.getCode()) || a.getOptType().equals(BudgetLogOptFlag.State_6.getCode())
).collect(Collectors.toList());
for (TbsBudgetLog budgetLog : oldLogList) {
budgetLog.setCreateBy(null);
budgetLog.setCreateTime(null);
budgetLog.setUpdateBy(null);
budgetLog.setUpdateTime(null);
budgetLog.setId(null);
budgetLog.setAmount(budgetLog.getAmount().negate());
BudgetLogOptFlag optFlag = BudgetLogOptFlag.State_5;
budgetLog.setAmount(TbsBudgetLogBuildUtil.buildAmount(budgetLog.getAmount(),optFlag));
budgetLog.setOptType(optFlag.getCode());
}
budgetLogService.saveBatch(oldLogList);
//将1改6
budgetLogList.forEach(a->a.setOptType(BudgetLogOptFlag.State_6.getCode()));
budgetLogService.saveBatch(budgetLogList);
}
//创建流程后回调
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,costApply.getId()+"");
seeYonService.createCallbackStatus(callbackBo);
activitySlottingFeeMapper.updatePassFlagByCostApplyId(costApply.getId(),2);
//请求校验是否成功
AsyncManager.me().execute(AsyncFactory.submitCostApply(costApply));
}
data.put("title",tbsCostApply.getChargeTheme()); /**
data.put("orgId",tbsCostApply.getId().toString()); * 创建协议类的申请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("costApplyCode", tbsCostApply.getCode());
data.put("applyUserCode", sysUser.getCode()); data.put("applyUserCode", sysUser.getCode());
data.put("applyUserName", sysUser.getName()); data.put("applyUserName", sysUser.getName());
@ -293,18 +399,27 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
data.put("dataState",TbsCostApplyState.State_1_apply.getCode()+""); data.put("dataState",TbsCostApplyState.State_1_apply.getCode()+"");
//创建协议类data数据 //创建协议类data数据
data.put("serialNumber",tbsCostApply.getCode()); data.put("serialNumber", tbsCostApply.getCode());
data.put("applySubject",tbsCostApply.getChargeTheme()); data.put("applySubject", tbsCostApply.getChargeTheme());
data.put("supplierCode",tbsCostApply.getSupplierCode()); data.put("supplierCode", tbsCostApply.getSupplierCode());
data.put("supplierName",tbsCostApply.getSupplierName()); data.put("supplierName", tbsCostApply.getSupplierName());
data.put("totalSalesMoney",tbsCostApply.getTotalActivityPreAmount()); data.put("totalSalesMoney", tbsCostApply.getTotalActivityPreAmount());
data.put("totalExpenseRate",tbsCostApply.getTotalActivityAmount().divide(tbsCostApply.getTotalActivityPreAmount(),2,RoundingMode.DOWN)); data.put("totalExpenseRate", tbsCostApply.getTotalActivityAmount().divide(tbsCostApply.getTotalActivityPreAmount(),2,RoundingMode.DOWN));
data.put("remark",tbsCostApply.getRemark()); data.put("remark", tbsCostApply.getRemark());
LambdaQueryWrapper<TbsCostContract> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsCostContract> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsCostContract::getCostApplyId,tbsCostApply.getId()); lqw.eq(TbsCostContract::getCostApplyId, tbsCostApply.getId());
List<TbsCostContract> contracts = costContractMapper.selectList(lqw); List<TbsCostContract> contracts = costContractMapper.selectList(lqw);
if(contracts.size()>0){ 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); TbsCostContract contract = contracts.get(0);
data.put("payee",contract.getPayee()); data.put("payee",contract.getPayee());
data.put("bankName",contract.getBankName()); data.put("bankName",contract.getBankName());
@ -314,6 +429,12 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
data.put("sealNum",contract.getSealNum()); data.put("sealNum",contract.getSealNum());
data.put("fileNum",contract.getFileNum()); 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("contractName",contract.getContractName());
data.put("contractTotalMoney",contract.getContractAmount()); data.put("contractTotalMoney",contract.getContractAmount());
data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString()); data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString());
@ -335,7 +456,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
//活动明细 //活动明细
LambdaQueryWrapper<TbsActivityCenterGoods> actCgLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsActivityCenterGoods> actCgLqw = new LambdaQueryWrapper<>();
actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId,id); actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId, id);
List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw); List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw);
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) {
TbsActivity currActivity = null; TbsActivity currActivity = null;
@ -361,13 +482,6 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
dataActivity.setMoney(centerGoods.getCenterGoodsAmount()); dataActivity.setMoney(centerGoods.getCenterGoodsAmount());
subList.add(dataActivity); 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) { for (TbsActivityPayCondition payCondition : payConditions) {
TbsActivity currActivity = null; TbsActivity currActivity = null;
@ -387,16 +501,12 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
subPayment.setPayCompleteState(stateMsg); subPayment.setPayCompleteState(stateMsg);
subPayment.setPayRemark(payCondition.getRemark()); subPayment.setPayRemark(payCondition.getRemark());
subPayment.setPayCode(payCondition.getCode()); subPayment.setPayCode(payCondition.getCode());
subPayment.setAccountCode(concatSubjectCodes);
subPayment.setAccountName(concatSubjectNames);
subPayment.setCostCenterNo(concatCenterCodes);
subPayment.setCostCenterName(concatCenterNames);
subList.add(subPayment); subList.add(subPayment);
} }
// 协议条款 // 协议条款
LambdaQueryWrapper<TbsCostTodo> todoLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsCostTodo> todoLqw = new LambdaQueryWrapper<>();
todoLqw.eq(TbsCostTodo::getCostApplyId,tbsCostApply.getId()); todoLqw.eq(TbsCostTodo::getCostApplyId, tbsCostApply.getId());
List<TbsCostTodo> costTodoList = tbsCostTodoMapper.selectList(todoLqw); List<TbsCostTodo> costTodoList = tbsCostTodoMapper.selectList(todoLqw);
for (TbsCostTodo costTodo : costTodoList) { for (TbsCostTodo costTodo : costTodoList) {
TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem(); TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem();
@ -409,99 +519,6 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
} }
//关联 //关联
data.put("sub", subList); data.put("sub", subList);
}else {
//创建通用的费用申请Data
this.buildCommonApplyData(id, tbsCostApply, activityList, supplier, result, sysUser, data);
}
//修改申请编码
String templateCode = tbsCostApply.getContractFlag().equals(1)
?TbsSeeYonConst.CostApplyContractConf.Code()
:TbsSeeYonConst.CostApplyConf.Code();
BaseCreateProcessBo createProcess = new BaseCreateProcessBo();
createProcess.setTemplateCode(templateCode);
createProcess.setMemberLoginName(sysUser.getSyAccount());
createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_COST_APPLY + tbsCostApply.getChargeTheme());
createProcess.setTargetId(tbsCostApply.getId()+"");
createProcess.setDataJson(JsonUtil.objectToJson(data));
R<String> flowIdResult = seeYonService.baseCreateProcess(createProcess);
if(flowIdResult.getStatus()!=200){
Assert.throwEx("远程服务调用失败");
}
String flowId = flowIdResult.getData();
String formId = null;
R<String> formIdResult = seeYonService.getFormId(templateCode,tbsCostApply.getId());
if(formIdResult.getStatus()==200){
formId = formIdResult.getData();
}
TbsCostApply costApply = new TbsCostApply();
costApply.setId(tbsCostApply.getId());
costApply.setSyFlowId(flowId);
costApply.setSyFormId(formId);
costApply.setChargeState(TbsCostApplyState.State_1_apply.getCode());
costApply.setSubmitTime(LocalDateTime.now());
this.updateById(costApply);
costApply = this.getById(costApply.getId());
//移除历史记录
budgetCostItemService.removeByCostApplyId(costApply.getId());
//保存无命中条件的预算
if(CollectionUtil.isNotEmpty(result.getBudgetUnMatchList())){
List<TbsCostUnItem> costUnItems = result.getBudgetUnMatchList().stream()
.map(obj-> CopierUtil.copy(obj,new TbsCostUnItem())).collect(Collectors.toList());
tbsCostUnItemService.saveBatch(costUnItems);
}
//重新保存
List<TbsBudgetCostItem> allBudgetItem = new ArrayList<>();
allBudgetItem.addAll(result.getBudgetMatchList());
allBudgetItem.addAll(result.getBudgetUnMatchList());
budgetCostItemService.saveBatch(allBudgetItem);
//TODO 无匹配的预算item保存到 TbsCostUnItem
//保存预算使用日志
List<TbsBudgetLog> budgetLogList = saveBudgetLog(result, sysUser, costApply, result.getBudgetMatchList(),result.getActivityList());
if(tbsCostApply.getChargeState().equals(TbsCostApplyState.State_0_unPublish.getCode())){
if(CollectionUtil.isNotEmpty(budgetLogList)){
budgetLogService.saveBatch(budgetLogList);
}
}else {
//排除历史记录
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>();
logLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId());
logLqw.eq(TbsBudgetLog::getRollbackFlag, BudgetLogRollbackFlag.State_1);
List<TbsBudgetLog> oldLogList = budgetLogService.list(logLqw);
List<TbsBudgetLog> oldLogList4Upd = oldLogList.stream().map(a->{
TbsBudgetLog budgetLog = new TbsBudgetLog();
budgetLog.setId(a.getId());
budgetLog.setRollbackFlag(BudgetLogRollbackFlag.State_2);
return budgetLog;
}).collect(Collectors.toList());
budgetLogService.updateBatchById(oldLogList4Upd);
oldLogList = oldLogList.stream().filter(a->
a.getOptType().equals(BudgetLogOptFlag.State_1.getCode()) || a.getOptType().equals(BudgetLogOptFlag.State_6.getCode())
).collect(Collectors.toList());
for (TbsBudgetLog budgetLog : oldLogList) {
budgetLog.setCreateBy(null);
budgetLog.setCreateTime(null);
budgetLog.setUpdateBy(null);
budgetLog.setUpdateTime(null);
budgetLog.setId(null);
budgetLog.setAmount(budgetLog.getAmount().negate());
BudgetLogOptFlag optFlag = BudgetLogOptFlag.State_5;
budgetLog.setAmount(TbsBudgetLogBuildUtil.buildAmount(budgetLog.getAmount(),optFlag));
budgetLog.setOptType(optFlag.getCode());
}
budgetLogService.saveBatch(oldLogList);
//将1改6
budgetLogList.forEach(a->a.setOptType(BudgetLogOptFlag.State_6.getCode()));
budgetLogService.saveBatch(budgetLogList);
}
//创建流程后回调
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,costApply.getId()+"");
seeYonService.createCallbackStatus(callbackBo);
activitySlottingFeeMapper.updatePassFlagByCostApplyId(costApply.getId(),2);
//请求校验是否成功
AsyncManager.me().execute(AsyncFactory.submitCostApply(costApply));
} }
private void buildCommonApplyData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, BmsSupplier supplier, TbsBudgetCostResult result, SysUser sysUser, Map<String, Object> data) { private void buildCommonApplyData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, BmsSupplier supplier, TbsBudgetCostResult result, SysUser sysUser, Map<String, Object> data) {

Loading…
Cancel
Save