[fix] 优化预算管理功能

This commit is contained in:
shl 2024-08-19 15:55:38 +08:00
parent 98f295be74
commit 67dcab5a0f

View File

@ -1,11 +1,15 @@
package cn.iocoder.yudao.module.pms.service.budget;
import cn.hutool.core.bean.BeanUtil;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.cms.api.contract.ContractApi;
import cn.iocoder.yudao.module.cms.api.contract.dto.ContractDTO;
import cn.iocoder.yudao.module.cms.api.outscontract.OutsContractApi;
import cn.iocoder.yudao.module.pms.dal.dataobject.budget.BudgetDetailDO;
import cn.iocoder.yudao.module.pms.dal.dataobject.budgethistory.BudgetHistoryDO;
import cn.iocoder.yudao.module.pms.dal.dataobject.projecttracking.ProjectTrackingDO;
import cn.iocoder.yudao.module.pms.dal.mysql.budgethistory.BudgetHistoryMapper;
import cn.iocoder.yudao.module.pms.service.projecttracking.ProjectTrackingService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import org.springframework.stereotype.Service;
@ -36,6 +40,17 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_NOT_E
@Validated
public class BudgetServiceImpl implements BudgetService {
/**
* 预算管理流程定义
*/
public static final String PROCESS_KEY = "budget_init";
/**
* 版本
*/
public static String VERSION = "1";
@Resource
private BudgetMapper budgetMapper;
@ -51,6 +66,13 @@ public class BudgetServiceImpl implements BudgetService {
@Resource
private ProjectTrackingService projectTrackingService;
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BudgetHistoryMapper budgetHistoryMapper;
@Override
public Long createBudget(Long loginUserId, BudgetSaveReqVO createReqVO) {
@ -76,6 +98,30 @@ public class BudgetServiceImpl implements BudgetService {
budget.setCreator(userName);
budget.setUpdater(userName);
budgetMapper.insert(budget);
Long budgetId = budget.getId();
BudgetHistoryDO budgetHistory = BeanUtils.toBean(budget, BudgetHistoryDO.class);
// 启动流程写入历史预算 todo
if (createReqVO.getId() == null) {
String processInstanceId = processInstanceApi.createProcessInstance(loginUserId,
new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY)
.setBusinessKey(String.valueOf(budgetId)));
// 写入工作流编号
// budgetHistory.setProcessInstanceId(processInstanceId);
// budgetHistory.setBudgetId(budgetId);
budgetHistoryMapper.updateById(budgetHistory.setBudgetId(budgetId).setProcessInstanceId(processInstanceId));
Long count = budgetHistoryMapper.selectCount("project_id", projectId);
if (count < 1) {
budgetHistory.setVersion(VERSION);
} else {
budgetHistory.setVersion(String.valueOf(count + 1));
}
budgetHistory.setProcessStatus("0");
budgetHistoryMapper.insert(budgetHistory);
}
// 返回
return budget.getId();
}