Browse Source

回退时预算统计错误修复

mssql
Yen 3 years ago
parent
commit
ea1b8aca5a
  1. 4
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java
  2. 60
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  3. 10
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

4
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java

@ -40,8 +40,8 @@ public class TbsBudgetLog implements Serializable {
@Length(max = 30,message = "预算编码长度不能超过30字")
private String budgetCode;
/** 类型:0-预算新增;1-费用申请;2-预算调增;3-预算调减;4-费用释放 */
@NotNull(message = "类型:0-预算新增;1-费用申请;2-预算调增;3-预算调减;4-费用释放不能为空")
/** 类型:0-预算新增;1-费用申请;2-预算调增;3-预算调减;4-费用释放;5-费用申请调增;6-费用申请调减 */
@NotNull(message = "类型不能为空")
private Integer optType;
/** 操作人id */

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

@ -24,6 +24,7 @@ import org.springframework.stereotype.Service;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
@ -109,7 +110,58 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
allBudgetItem.addAll(result.getBudgetUnMatchList());
budgetCostItemService.saveBatch(allBudgetItem);
//保存预算使用日志
saveBudgetLog(result, sysUser, costApply, result.getBudgetMatchList(),result.getActivityList());
if(tbsCostApply.getChargeState().equals(TbsCostApplyState.State_0_unPublish.getCode())){
List<TbsBudgetLog> budgetLogList = saveBudgetLog(result, sysUser, costApply, result.getBudgetMatchList(),result.getActivityList());
if(CollectionUtil.isNotEmpty(budgetLogList)){
budgetLogService.saveBatch(budgetLogList);
}
}else {
//排除历史记录
List<TbsBudgetLog> budgetLogList = saveBudgetLog(result, sysUser, costApply, result.getBudgetMatchList(),result.getActivityList());
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>();
logLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId());
List<TbsBudgetLog> oldLogList = budgetLogService.list(logLqw);
Map<String,List<TbsBudgetLog>> oldLogMap = oldLogList.stream().collect(Collectors.groupingBy(a->a.getScheduleItemId()+"_"+a.getTargetId()));
List<TbsBudgetLog> insertList = new ArrayList<>();
for (TbsBudgetLog budgetLog : budgetLogList) {
String key = budgetLog.getScheduleItemId()+"_"+budgetLog.getTargetId();
List<TbsBudgetLog> subOldList = oldLogMap.get(key);
if(CollectionUtil.isNotEmpty(subOldList)){
BigDecimal totalOldLogAmount = BigDecimal.ZERO;
for (TbsBudgetLog oldListItem : subOldList) {
totalOldLogAmount = totalOldLogAmount.add(oldListItem.getAmount());
}
BigDecimal diffAmount = budgetLog.getAmount().subtract(totalOldLogAmount);
if(diffAmount.compareTo(BigDecimal.ZERO)>0){
budgetLog.setOptType(5);
budgetLog.setAmount(diffAmount);
insertList.add(budgetLog);
}else if (diffAmount.compareTo(BigDecimal.ZERO)<0){
budgetLog.setOptType(6);
budgetLog.setAmount(diffAmount);
insertList.add(budgetLog);
}
oldLogMap.remove(key);
}else {
insertList.add(budgetLog);
}
}
//调节未包含在budgetLogList的oldLogList的项
if(CollectionUtil.isNotEmpty(oldLogMap)){
for (String key : oldLogMap.keySet()) {
List<TbsBudgetLog> subOldList = oldLogMap.get(key);
for (TbsBudgetLog budgetLog : subOldList) {
budgetLog.setOptType(5);
budgetLog.setAmount(budgetLog.getAmount().negate());
budgetLog.setId(null);
insertList.add(budgetLog);
}
}
}
if(CollectionUtil.isNotEmpty(insertList)){
budgetLogService.saveBatch(insertList);
}
}
//创建流程后回调
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(TbsSeeYonConst.COST_APPLY_CODE,tbsCostApply.getId()+"");
seeYonService.createCallbackStatus(callbackBo);
@ -122,7 +174,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
* @param costApply
* @param allBudgetItem
*/
private void saveBudgetLog(TbsBudgetCostResult result, SysUser sysUser, TbsCostApply costApply, List<TbsBudgetCostItem> allBudgetItem, List<TbsActivity> activityList) {
private List<TbsBudgetLog> saveBudgetLog(TbsBudgetCostResult result, SysUser sysUser, TbsCostApply costApply, List<TbsBudgetCostItem> allBudgetItem, List<TbsActivity> activityList) {
List<TbsBudgetLog> budgetLogList = new ArrayList<>();
List<TbsBudget> budgetList = result.getBudgetList();
for (TbsBudgetCostItem item : allBudgetItem) {
@ -149,9 +201,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
TbsBudgetLog budgetLog = budgetLogService.buildTbsBudgetLog(1,sysUser, costApply, item, budget,item.getCenterGoodsAmount().negate(),currActivity);
budgetLogList.add(budgetLog);
}
if(CollectionUtil.isNotEmpty(budgetLogList)){
budgetLogService.saveBatch(budgetLogList);
}
return budgetLogList;
}

10
src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

@ -278,12 +278,12 @@ public class VtbVerificationController {
vtbVer.setId(verification.getId());
vtbVer.setVerificationState(VtbVerificationState.Stop.getCode());
vtbVerificationService.updateById(vtbVer);
//还原活动为待核销状态
TbsActivity activity = new TbsActivity();
activity.setId(verification.getActivityId());
activity.setActivityState(TbsActivityState.STATE_0_Todo);
tbsActivityService.updateById(activity);
}
//还原活动为待核销状态
TbsActivity activity = new TbsActivity();
activity.setId(verification.getActivityId());
activity.setActivityState(TbsActivityState.STATE_0_Todo);
tbsActivityService.updateById(activity);
return R.ok();
}else if ("next".equals(flag)){
return R.ok();

Loading…
Cancel
Save