mirror of
https://gitee.com/yudaocode/yudao-boot-mini.git
synced 2026-10-06 06:12:58 +08:00
fix(fms): 修复账套未初始化时科目操作异常,补全报表模板
- 新增、修改和导入科目时校验财务参数 - 补全报表模板,修正备抵科目、投资收益和还本公式 - 增加模板升级及报表金额回归测试
This commit is contained in:
+10
@@ -53,6 +53,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList;
|
||||
import static cn.iocoder.yudao.module.fms.enums.ErrorCodeConstants.ACCOUNT_SET_NOT_INITIALIZED;
|
||||
import static cn.iocoder.yudao.module.fms.enums.ErrorCodeConstants.SUBJECT_CODE_DUPLICATE;
|
||||
import static cn.iocoder.yudao.module.fms.enums.ErrorCodeConstants.SUBJECT_CODE_RULE_INVALID;
|
||||
import static cn.iocoder.yudao.module.fms.enums.ErrorCodeConstants.SUBJECT_CURRENCY_INVALID;
|
||||
@@ -161,6 +162,9 @@ public class FmsSubjectServiceImpl implements FmsSubjectService {
|
||||
accountSetService.validateAccountSetWritePermission(createReqVO.getAccountSetId(), userId);
|
||||
// 1.2 查询财务参数
|
||||
FmsFinanceParameterDO financeParameter = financeParameterService.getFinanceParameter(createReqVO.getAccountSetId());
|
||||
if (financeParameter == null) {
|
||||
throw exception(ACCOUNT_SET_NOT_INITIALIZED);
|
||||
}
|
||||
// 1.3 校验科目编码唯一
|
||||
validateSubjectCodeUnique(null, createReqVO.getAccountSetId(), createReqVO.getCode());
|
||||
// 1.4 校验上级科目和科目编码规则
|
||||
@@ -209,6 +213,9 @@ public class FmsSubjectServiceImpl implements FmsSubjectService {
|
||||
// 1.2 查询财务参数
|
||||
FmsFinanceParameterDO financeParameter = financeParameterService.getFinanceParameter(
|
||||
updateReqVO.getAccountSetId());
|
||||
if (financeParameter == null) {
|
||||
throw exception(ACCOUNT_SET_NOT_INITIALIZED);
|
||||
}
|
||||
// 1.3 校验科目存在
|
||||
FmsSubjectDO subject = validateSubjectExists(updateReqVO.getAccountSetId(), updateReqVO.getId());
|
||||
if (ObjUtil.notEqual(subject.getParentId(), updateReqVO.getParentId())) {
|
||||
@@ -416,6 +423,9 @@ public class FmsSubjectServiceImpl implements FmsSubjectService {
|
||||
accountSetService.validateAccountSetWritePermission(accountSetId, userId);
|
||||
// 1.3 加载导入依赖
|
||||
FmsFinanceParameterDO financeParameter = financeParameterService.getFinanceParameter(accountSetId);
|
||||
if (financeParameter == null) {
|
||||
throw exception(ACCOUNT_SET_NOT_INITIALIZED);
|
||||
}
|
||||
Map<String, FmsSubjectDO> subjectMap = convertMap(
|
||||
subjectMapper.selectListByAccountSetIdAndType(accountSetId, null), FmsSubjectDO::getCode);
|
||||
Map<String, Long> auxiliaryTypeIdMap = auxiliaryTypeService.getAuxiliaryTypeIdMap(accountSetId);
|
||||
|
||||
+35
@@ -116,6 +116,41 @@ public class FmsSubjectServiceImplTest extends BaseDbUnitTest {
|
||||
assertTrue(subjects.get(1).getAuxiliaryTypeIds().isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateSubject_accountSetNotInitialized() {
|
||||
// 准备参数
|
||||
FmsSubjectSaveReqVO reqVO = buildSubjectSaveReqVO(1L, "1001", "库存现金");
|
||||
|
||||
// 调用,并断言异常
|
||||
assertServiceException(() -> subjectService.createSubject(reqVO, 10L), ACCOUNT_SET_NOT_INITIALIZED);
|
||||
// 断言未写入科目
|
||||
assertEquals(0, subjectMapper.selectCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateSubject_accountSetNotInitialized() {
|
||||
// 准备参数
|
||||
FmsSubjectSaveReqVO reqVO = buildSubjectSaveReqVO(1L, "1001", "库存现金");
|
||||
reqVO.setId(1L);
|
||||
|
||||
// 调用,并断言异常
|
||||
assertServiceException(() -> subjectService.updateSubject(reqVO, 10L), ACCOUNT_SET_NOT_INITIALIZED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testImportSubjectList_accountSetNotInitialized() {
|
||||
// 准备参数
|
||||
FmsSubjectImportExcelVO importVO = new FmsSubjectImportExcelVO();
|
||||
importVO.setCode("1001");
|
||||
importVO.setName("库存现金");
|
||||
|
||||
// 调用,并断言异常
|
||||
assertServiceException(() -> subjectService.importSubjectList(1L, Collections.singletonList(importVO), 10L),
|
||||
ACCOUNT_SET_NOT_INITIALIZED);
|
||||
// 断言未写入科目
|
||||
assertEquals(0, subjectMapper.selectCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateSubject_success() {
|
||||
// 准备参数
|
||||
|
||||
Reference in New Issue
Block a user