|
|
|
|
@ -92,7 +92,7 @@ class AssetStatusTransitionServiceImplTest
|
|
|
|
|
verify(amsAssetMapper, never()).updateAssetForTransition(any(AmsAsset.class));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 领用流转:写入使用部门和使用人、状态变为在用 */
|
|
|
|
|
/** 领用流转:清空仓位,写入使用部门和使用人、状态变为在用 */
|
|
|
|
|
@Test
|
|
|
|
|
void confirmReceiveShouldSetUseOwnershipAndWriteLifecycle()
|
|
|
|
|
{
|
|
|
|
|
@ -107,6 +107,8 @@ class AssetStatusTransitionServiceImplTest
|
|
|
|
|
assertEquals("生产部", result.getAfterAsset().getUseDeptName());
|
|
|
|
|
assertEquals(4L, result.getAfterAsset().getUseUserId());
|
|
|
|
|
assertEquals("张三", result.getAfterAsset().getUseUserName());
|
|
|
|
|
assertNull(result.getAfterAsset().getWarehouseId());
|
|
|
|
|
assertNull(result.getAfterAsset().getLocationId());
|
|
|
|
|
assertLifecycle(AssetLifecycleBusinessType.RECEIVE, AssetStatus.IN_STOCK, AssetStatus.IN_USE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -156,6 +158,8 @@ class AssetStatusTransitionServiceImplTest
|
|
|
|
|
AssetTransitionResult result = service.confirmBorrow(1L, buildContext());
|
|
|
|
|
|
|
|
|
|
assertEquals(AssetStatus.BORROWED, result.getAfterAsset().getAssetStatus());
|
|
|
|
|
assertNull(result.getAfterAsset().getWarehouseId());
|
|
|
|
|
assertNull(result.getAfterAsset().getLocationId());
|
|
|
|
|
assertLifecycle(AssetLifecycleBusinessType.BORROW, AssetStatus.IN_STOCK, AssetStatus.BORROWED);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -173,25 +177,22 @@ class AssetStatusTransitionServiceImplTest
|
|
|
|
|
assertLifecycle(AssetLifecycleBusinessType.BORROW_RETURN, AssetStatus.BORROWED, AssetStatus.IN_STOCK);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 在用资产调拨:保持在用状态并替换使用归属 */
|
|
|
|
|
/** 在用资产不能直接调拨,必须先退库。 */
|
|
|
|
|
@Test
|
|
|
|
|
void confirmTransferShouldKeepInUseStatusAndReplaceOwnership()
|
|
|
|
|
void confirmTransferShouldRejectInUseAsset()
|
|
|
|
|
{
|
|
|
|
|
AmsAsset asset = buildAsset(AssetStatus.IN_USE);
|
|
|
|
|
asset.setUseDeptId(7L);
|
|
|
|
|
asset.setUseDeptName("旧部门");
|
|
|
|
|
asset.setUseUserId(8L);
|
|
|
|
|
asset.setUseUserName("旧使用人");
|
|
|
|
|
stubLockedAsset(asset);
|
|
|
|
|
stubWarehouseLocation(2L, 20L);
|
|
|
|
|
stubDeptUser(3L, 4L);
|
|
|
|
|
stubLockedAssetWithoutUpdate(asset);
|
|
|
|
|
|
|
|
|
|
AssetTransitionResult result = service.confirmTransfer(1L, 2L, 20L, 3L, 4L, buildContext());
|
|
|
|
|
ServiceException exception = assertThrows(ServiceException.class,
|
|
|
|
|
() -> service.confirmTransfer(1L, 2L, 20L, buildContext()));
|
|
|
|
|
|
|
|
|
|
assertEquals(AssetStatus.IN_USE, result.getAfterAsset().getAssetStatus());
|
|
|
|
|
assertEquals(3L, result.getAfterAsset().getUseDeptId());
|
|
|
|
|
assertEquals(4L, result.getAfterAsset().getUseUserId());
|
|
|
|
|
assertLifecycle(AssetLifecycleBusinessType.TRANSFER, AssetStatus.IN_USE, AssetStatus.IN_USE);
|
|
|
|
|
assertTrue(exception.getMessage().contains("不允许"));
|
|
|
|
|
verify(amsAssetMapper, never()).updateAssetForTransition(any(AmsAsset.class));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 在库资产调拨:保持在库状态并清除使用归属 */
|
|
|
|
|
@ -206,7 +207,7 @@ class AssetStatusTransitionServiceImplTest
|
|
|
|
|
stubLockedAsset(asset);
|
|
|
|
|
stubWarehouseLocation(2L, 20L);
|
|
|
|
|
|
|
|
|
|
AssetTransitionResult result = service.confirmTransfer(1L, 2L, 20L, null, null, buildContext());
|
|
|
|
|
AssetTransitionResult result = service.confirmTransfer(1L, 2L, 20L, buildContext());
|
|
|
|
|
|
|
|
|
|
assertEquals(AssetStatus.IN_STOCK, result.getAfterAsset().getAssetStatus());
|
|
|
|
|
assertNull(result.getAfterAsset().getUseDeptId());
|
|
|
|
|
@ -223,6 +224,7 @@ class AssetStatusTransitionServiceImplTest
|
|
|
|
|
asset.setUseDeptName("生产部");
|
|
|
|
|
asset.setUseUserId(4L);
|
|
|
|
|
asset.setUseUserName("张三");
|
|
|
|
|
clearWarehouseLocation(asset);
|
|
|
|
|
stubLockedAsset(asset);
|
|
|
|
|
|
|
|
|
|
AssetTransitionResult result = service.startRepair(1L, buildContext());
|
|
|
|
|
@ -237,10 +239,6 @@ class AssetStatusTransitionServiceImplTest
|
|
|
|
|
void finishRepairWithoutBeforeStatusShouldRestoreStock()
|
|
|
|
|
{
|
|
|
|
|
AmsAsset asset = buildAsset(AssetStatus.REPAIRING);
|
|
|
|
|
asset.setUseDeptId(3L);
|
|
|
|
|
asset.setUseDeptName("生产部");
|
|
|
|
|
asset.setUseUserId(4L);
|
|
|
|
|
asset.setUseUserName("张三");
|
|
|
|
|
stubLockedAsset(asset);
|
|
|
|
|
|
|
|
|
|
AssetTransitionResult result = service.finishRepair(1L, null, buildContext());
|
|
|
|
|
@ -260,6 +258,7 @@ class AssetStatusTransitionServiceImplTest
|
|
|
|
|
asset.setUseDeptName("生产部");
|
|
|
|
|
asset.setUseUserId(4L);
|
|
|
|
|
asset.setUseUserName("张三");
|
|
|
|
|
clearWarehouseLocation(asset);
|
|
|
|
|
stubLockedAsset(asset);
|
|
|
|
|
|
|
|
|
|
AssetTransitionResult result = service.finishRepair(1L, AssetStatus.IN_USE, buildContext());
|
|
|
|
|
@ -301,7 +300,7 @@ class AssetStatusTransitionServiceImplTest
|
|
|
|
|
stubLockedAssetWithoutUpdate(buildAsset(AssetStatus.BORROWED));
|
|
|
|
|
|
|
|
|
|
ServiceException exception = assertThrows(ServiceException.class,
|
|
|
|
|
() -> service.confirmTransfer(1L, 2L, 20L, null, null, buildContext()));
|
|
|
|
|
() -> service.confirmTransfer(1L, 2L, 20L, buildContext()));
|
|
|
|
|
|
|
|
|
|
assertTrue(exception.getMessage().contains("不允许"));
|
|
|
|
|
verify(amsAssetMapper, never()).updateAssetForTransition(any(AmsAsset.class));
|
|
|
|
|
@ -477,6 +476,16 @@ class AssetStatusTransitionServiceImplTest
|
|
|
|
|
when(sysUserService.selectUserById(userId)).thenReturn(user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void clearWarehouseLocation(AmsAsset asset)
|
|
|
|
|
{
|
|
|
|
|
asset.setWarehouseId(null);
|
|
|
|
|
asset.setWarehouseCode(null);
|
|
|
|
|
asset.setWarehouseName(null);
|
|
|
|
|
asset.setLocationId(null);
|
|
|
|
|
asset.setLocationCode(null);
|
|
|
|
|
asset.setLocationName(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 断言履历写入:验证业务类型、前后状态和来源单据信息 */
|
|
|
|
|
private void assertLifecycle(String businessType, String beforeStatus, String afterStatus)
|
|
|
|
|
{
|
|
|
|
|
|