Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

v1.0
Yen 2 years ago
parent
commit
6115b98535
  1. 12
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  2. 32
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetMoveAmountBo.java
  3. 3
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java
  4. 49
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java

12
src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java

@ -334,9 +334,19 @@ public class TbsBudgetController {
* @return
*/
@GetMapping("/moveCenter")
public R<?> test(String sourceId,String sourceType,String targetId,String targetType){
public R<?> moveCenter(String sourceId,String sourceType,String targetId,String targetType){
tbsBudgetService.moveCenterBudgetAndCostAmount(sourceId,sourceType,targetId,targetType);
return R.ok();
}
/**
* 更新周期预算金额
* @return
*/
@PostMapping("/moveBudgetAmount")
public R<?> moveBudgetAmount(@RequestBody @Valid TbsBudgetMoveAmountBo bo){
tbsBudgetService.moveBudgetAmount(bo);
return R.ok();
}
}

32
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetMoveAmountBo.java

@ -0,0 +1,32 @@
package com.qs.serve.modules.tbs.entity.bo;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* 预算 Bo
* @author YenHex
* @since 2022-11-12
*/
@Data
public class TbsBudgetMoveAmountBo implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@NotNull(message = "预算id不能为空")
private Long id;
@NotNull(message = "预算子项源ID不能为空")
private List<Long> oriScheduleItemBudgetIds;
@NotNull(message = "预算子项目标ID不能为空")
private Long targetScheduleItemBudgetId;
}

3
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java

@ -9,6 +9,7 @@ import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetExcelBatchDto;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetExcelBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetMoveAmountBo;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetVo;
import java.math.BigDecimal;
@ -42,5 +43,7 @@ public interface TbsBudgetService extends IService<TbsBudget> {
TbsBudgetVo getEntityForExcel(TbsBudget budget);
void moveCenterBudgetAndCostAmount(String sourceId,String sourceType,String targetId,String targetType);
void moveBudgetAmount(TbsBudgetMoveAmountBo bo);
}

49
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java

@ -28,6 +28,7 @@ import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetExcelBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetMoveAmountBo;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetVo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.service.*;
@ -882,5 +883,53 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
}
@Override
public void moveBudgetAmount(TbsBudgetMoveAmountBo bo) {
LambdaQueryWrapper<TbsScheduleItemBudget> lqw2 = new LambdaQueryWrapper<>();
lqw2.eq(TbsScheduleItemBudget::getBudgetId,bo.getId());
List<TbsScheduleItemBudget> scheduleItemBudgets = scheduleItemBudgetService.list(lqw2);
List<Long> scheduleItemBudgetIds = scheduleItemBudgets.stream().map(a->a.getId()).collect(Collectors.toList());
bo.getOriScheduleItemBudgetIds().forEach(a->{
if(!scheduleItemBudgetIds.contains(a)){
Assert.throwEx("源ID不在请求的预算内");
}
});
if(!scheduleItemBudgetIds.contains(bo.getTargetScheduleItemBudgetId())){
Assert.throwEx("目标ID不在请求的预算内");
}
List<TbsBudgetLog> budgetLogList = new ArrayList<>();
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
TbsBudget budget = this.getById(bo.getId());
TbsScheduleItemBudget targetTbsScheduleItemBudget = scheduleItemBudgetService.getById(bo.getTargetScheduleItemBudgetId());
bo.getOriScheduleItemBudgetIds().forEach(a->{
TbsScheduleItemBudget scheduleItemBudget = scheduleItemBudgetService.getById(a);
LambdaQueryWrapper<TbsBudgetLog> budgetLogLambdaQueryWrapper = new LambdaQueryWrapper<>();
budgetLogLambdaQueryWrapper.eq(TbsBudgetLog::getScheduleItemBudgetId,a);
List<TbsBudgetLog> logList = budgetLogService.list(budgetLogLambdaQueryWrapper);
BigDecimal unUserAmount = logList.stream().map(b->b.getAmount()).reduce(BigDecimal.ZERO,BigDecimal::add);
BigDecimal fixAmount = BigDecimal.ZERO.subtract(unUserAmount);
if(fixAmount.compareTo(BigDecimal.ZERO)>0){
TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser, budget, scheduleItemBudget,
BudgetLogOptFlag.State_2,fixAmount);
budgetLogList.add(budgetLog);
TbsBudgetLog targetBudgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser, budget, targetTbsScheduleItemBudget,
BudgetLogOptFlag.State_3,unUserAmount);
budgetLogList.add(targetBudgetLog);
}else if(fixAmount.compareTo(BigDecimal.ZERO)<0){
TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser, budget, scheduleItemBudget,
BudgetLogOptFlag.State_3,fixAmount);
budgetLogList.add(budgetLog);
TbsBudgetLog targetBudgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser, budget, targetTbsScheduleItemBudget,
BudgetLogOptFlag.State_2,unUserAmount);
budgetLogList.add(targetBudgetLog);
}
});
budgetLogService.saveBatch(budgetLogList);
}
}

Loading…
Cancel
Save