1. 新增帆软报表导入功能
2. 新增物料扩展牌号属性功能
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
package com.zt.plat.module.base.api.materialgradeext;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtPageReqDTO;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtRespDTO;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtSaveReqDTO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtPageReqVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtRespVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtSaveReqVO;
|
||||
import com.zt.plat.module.base.service.materialgradeext.MaterialGradeExtService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class MaterialGradeExtApiImplTest {
|
||||
|
||||
@InjectMocks
|
||||
private MaterialGradeExtApiImpl api;
|
||||
|
||||
@Mock
|
||||
private MaterialGradeExtService materialGradeExtService;
|
||||
|
||||
private MaterialGradeExtSaveReqDTO buildSaveReqDTO() {
|
||||
MaterialGradeExtSaveReqDTO dto = new MaterialGradeExtSaveReqDTO();
|
||||
dto.setId(1L);
|
||||
dto.setCompanyCode("C001");
|
||||
dto.setCompanyName("公司A");
|
||||
dto.setMaterialCode("M001");
|
||||
dto.setMaterialName("物料A");
|
||||
dto.setChineseBrand("ZH");
|
||||
dto.setEnglishBrand("EN");
|
||||
dto.setSpecificationModel("SPC");
|
||||
dto.setLineType("single");
|
||||
dto.setPackageDesc("箱装");
|
||||
return dto;
|
||||
}
|
||||
|
||||
private MaterialGradeExtRespVO buildRespVO() {
|
||||
MaterialGradeExtRespVO respVO = new MaterialGradeExtRespVO();
|
||||
respVO.setId(11L);
|
||||
respVO.setCompanyCode("C001");
|
||||
respVO.setMaterialCode("M001");
|
||||
respVO.setCreateTime(LocalDateTime.now());
|
||||
return respVO;
|
||||
}
|
||||
|
||||
@Test
|
||||
void create_shouldInvokeServiceAndReturnDto() {
|
||||
MaterialGradeExtSaveReqDTO reqDTO = buildSaveReqDTO();
|
||||
MaterialGradeExtRespVO serviceResp = buildRespVO();
|
||||
when(materialGradeExtService.create(any(MaterialGradeExtSaveReqVO.class))).thenReturn(serviceResp);
|
||||
|
||||
CommonResult<MaterialGradeExtRespDTO> result = api.create(reqDTO);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData().getId()).isEqualTo(serviceResp.getId());
|
||||
ArgumentCaptor<MaterialGradeExtSaveReqVO> captor = ArgumentCaptor.forClass(MaterialGradeExtSaveReqVO.class);
|
||||
verify(materialGradeExtService).create(captor.capture());
|
||||
assertThat(captor.getValue().getCompanyCode()).isEqualTo("C001");
|
||||
assertThat(captor.getValue().getMaterialCode()).isEqualTo("M001");
|
||||
}
|
||||
|
||||
@Test
|
||||
void update_shouldInvokeService() {
|
||||
MaterialGradeExtSaveReqDTO reqDTO = buildSaveReqDTO();
|
||||
|
||||
CommonResult<Boolean> result = api.update(reqDTO);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData()).isTrue();
|
||||
ArgumentCaptor<MaterialGradeExtSaveReqVO> captor = ArgumentCaptor.forClass(MaterialGradeExtSaveReqVO.class);
|
||||
verify(materialGradeExtService).update(captor.capture());
|
||||
assertThat(captor.getValue().getCompanyCode()).isEqualTo("C001");
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete_shouldInvokeService() {
|
||||
CommonResult<Boolean> result = api.delete(9L);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData()).isTrue();
|
||||
verify(materialGradeExtService).delete(9L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void deleteList_shouldInvokeService() {
|
||||
List<Long> ids = List.of(1L, 2L);
|
||||
|
||||
CommonResult<Boolean> result = api.deleteList(ids);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData()).isTrue();
|
||||
verify(materialGradeExtService).deleteByIds(ids);
|
||||
}
|
||||
|
||||
@Test
|
||||
void get_shouldReturnConvertedDto() {
|
||||
MaterialGradeExtRespVO respVO = buildRespVO();
|
||||
when(materialGradeExtService.get(5L)).thenReturn(respVO);
|
||||
|
||||
CommonResult<MaterialGradeExtRespDTO> result = api.get(5L);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData().getId()).isEqualTo(respVO.getId());
|
||||
assertThat(result.getData().getCompanyCode()).isEqualTo("C001");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPage_shouldConvertPageResult() {
|
||||
MaterialGradeExtRespVO respVO = buildRespVO();
|
||||
PageResult<MaterialGradeExtRespVO> page = new PageResult<>(List.of(respVO), 1L);
|
||||
when(materialGradeExtService.getPage(any(MaterialGradeExtPageReqVO.class))).thenReturn(page);
|
||||
|
||||
MaterialGradeExtPageReqDTO reqDTO = new MaterialGradeExtPageReqDTO();
|
||||
reqDTO.setCompanyCode("C001");
|
||||
|
||||
CommonResult<PageResult<MaterialGradeExtRespDTO>> result = api.getPage(reqDTO);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData().getTotal()).isEqualTo(1L);
|
||||
assertThat(result.getData().getList()).hasSize(1);
|
||||
assertThat(result.getData().getList().get(0).getCompanyCode()).isEqualTo("C001");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,185 @@
|
||||
package com.zt.plat.module.base.service.materialgradeext;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.test.core.ut.BaseDbUnitTest;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtPageReqVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtRespVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtSaveReqVO;
|
||||
import com.zt.plat.module.base.dal.dao.materialgradeext.MaterialGradeExtMapper;
|
||||
import com.zt.plat.module.base.dal.dataobject.materialgradeext.MaterialGradeExtDO;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static com.zt.plat.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
|
||||
import static com.zt.plat.framework.common.util.date.LocalDateTimeUtils.buildTime;
|
||||
import static com.zt.plat.framework.common.util.object.ObjectUtils.cloneIgnoreId;
|
||||
import static com.zt.plat.framework.test.core.util.AssertUtils.assertPojoEquals;
|
||||
import static com.zt.plat.framework.test.core.util.AssertUtils.assertServiceException;
|
||||
import static com.zt.plat.framework.test.core.util.RandomUtils.randomPojo;
|
||||
import static com.zt.plat.framework.test.core.util.RandomUtils.randomLongId;
|
||||
import static com.zt.plat.module.base.enums.ErrorCodeConstants.MATERIAL_GRADE_EXT_NOT_EXISTS;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@Import(MaterialGradeExtServiceImpl.class)
|
||||
class MaterialGradeExtServiceImplTest extends BaseDbUnitTest {
|
||||
|
||||
@Resource
|
||||
private MaterialGradeExtServiceImpl materialGradeExtService;
|
||||
|
||||
@Resource
|
||||
private MaterialGradeExtMapper materialGradeExtMapper;
|
||||
|
||||
private MaterialGradeExtSaveReqVO buildSaveReqVO(Long id) {
|
||||
MaterialGradeExtSaveReqVO reqVO = randomPojo(MaterialGradeExtSaveReqVO.class, o -> {
|
||||
o.setId(id);
|
||||
o.setCompanyCode("C001");
|
||||
o.setCompanyName("公司A");
|
||||
o.setMaterialCode("M001");
|
||||
o.setMaterialName("物料A");
|
||||
o.setChineseBrand("中文牌号");
|
||||
o.setEnglishBrand("EN-BRAND");
|
||||
o.setSpecificationModel("SPC-1");
|
||||
o.setLineType("single");
|
||||
o.setPackageDesc("箱装");
|
||||
});
|
||||
return reqVO;
|
||||
}
|
||||
|
||||
@Test
|
||||
void create_success() {
|
||||
MaterialGradeExtSaveReqVO reqVO = buildSaveReqVO(null);
|
||||
|
||||
MaterialGradeExtRespVO respVO = materialGradeExtService.create(reqVO);
|
||||
|
||||
assertNotNull(respVO.getId());
|
||||
MaterialGradeExtDO db = materialGradeExtMapper.selectById(respVO.getId());
|
||||
assertPojoEquals(reqVO, db, "id", "createTime", "updateTime", "creator", "updater", "deleted",
|
||||
"tenantId", "deptId", "deptName", "companyId", "creatorName", "updaterName", "postId");
|
||||
}
|
||||
|
||||
@Test
|
||||
void update_success() {
|
||||
MaterialGradeExtDO db = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C001");
|
||||
o.setMaterialCode("M001");
|
||||
o.setCreateTime(LocalDateTime.now());
|
||||
});
|
||||
materialGradeExtMapper.insert(db);
|
||||
|
||||
MaterialGradeExtSaveReqVO reqVO = buildSaveReqVO(db.getId());
|
||||
reqVO.setCompanyCode("C002");
|
||||
reqVO.setMaterialCode("M002");
|
||||
reqVO.setLineType("double");
|
||||
|
||||
materialGradeExtService.update(reqVO);
|
||||
|
||||
MaterialGradeExtDO updated = materialGradeExtMapper.selectById(db.getId());
|
||||
assertPojoEquals(reqVO, updated, "createTime", "updateTime", "creator", "updater", "deleted",
|
||||
"tenantId", "deptId", "deptName", "companyId", "creatorName", "updaterName", "postId");
|
||||
}
|
||||
|
||||
@Test
|
||||
void update_notExists() {
|
||||
MaterialGradeExtSaveReqVO reqVO = buildSaveReqVO(randomLongId());
|
||||
|
||||
assertServiceException(() -> materialGradeExtService.update(reqVO), MATERIAL_GRADE_EXT_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete_success() {
|
||||
MaterialGradeExtDO db = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C001");
|
||||
o.setMaterialCode("M001");
|
||||
});
|
||||
materialGradeExtMapper.insert(db);
|
||||
|
||||
materialGradeExtService.delete(db.getId());
|
||||
|
||||
assertNull(materialGradeExtMapper.selectById(db.getId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete_notExists() {
|
||||
assertServiceException(() -> materialGradeExtService.delete(randomLongId()), MATERIAL_GRADE_EXT_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void deleteByIds_success() {
|
||||
MaterialGradeExtDO db1 = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C001");
|
||||
o.setMaterialCode("M001");
|
||||
});
|
||||
MaterialGradeExtDO db2 = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C002");
|
||||
o.setMaterialCode("M002");
|
||||
});
|
||||
materialGradeExtMapper.insert(db1);
|
||||
materialGradeExtMapper.insert(db2);
|
||||
|
||||
materialGradeExtService.deleteByIds(Arrays.asList(db1.getId(), db2.getId()));
|
||||
|
||||
assertNull(materialGradeExtMapper.selectById(db1.getId()));
|
||||
assertNull(materialGradeExtMapper.selectById(db2.getId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void get_success() {
|
||||
MaterialGradeExtDO db = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C001");
|
||||
o.setMaterialCode("M001");
|
||||
});
|
||||
materialGradeExtMapper.insert(db);
|
||||
|
||||
MaterialGradeExtRespVO result = materialGradeExtService.get(db.getId());
|
||||
|
||||
assertPojoEquals(db, result, "createTime", "updateTime", "creator", "updater", "deleted",
|
||||
"tenantId", "deptId", "deptName", "companyId", "creatorName", "updaterName", "postId");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPage_filterSuccess() {
|
||||
MaterialGradeExtDO target = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C001");
|
||||
o.setCompanyName("公司A");
|
||||
o.setMaterialCode("M001");
|
||||
o.setMaterialName("物料A");
|
||||
o.setChineseBrand("ZH");
|
||||
o.setEnglishBrand("EN");
|
||||
o.setSpecificationModel("SPC");
|
||||
o.setLineType("single");
|
||||
o.setPackageDesc("包装A");
|
||||
o.setCreateTime(buildTime(2024, 1, 2));
|
||||
});
|
||||
materialGradeExtMapper.insert(target);
|
||||
|
||||
materialGradeExtMapper.insert(cloneIgnoreId(target, o -> o.setCompanyCode("X")));
|
||||
materialGradeExtMapper.insert(cloneIgnoreId(target, o -> o.setMaterialCode("Y")));
|
||||
materialGradeExtMapper.insert(cloneIgnoreId(target, o -> o.setChineseBrand("不同")));
|
||||
materialGradeExtMapper.insert(cloneIgnoreId(target, o -> o.setLineType("double")));
|
||||
materialGradeExtMapper.insert(cloneIgnoreId(target, o -> o.setCreateTime(buildTime(2024, 2, 2))));
|
||||
|
||||
MaterialGradeExtPageReqVO pageReqVO = new MaterialGradeExtPageReqVO();
|
||||
pageReqVO.setCompanyCode("C001");
|
||||
pageReqVO.setCompanyName("公司");
|
||||
pageReqVO.setMaterialCode("M001");
|
||||
pageReqVO.setMaterialName("物料");
|
||||
pageReqVO.setChineseBrand("ZH");
|
||||
pageReqVO.setEnglishBrand("EN");
|
||||
pageReqVO.setSpecificationModel("SPC");
|
||||
pageReqVO.setLineType("single");
|
||||
pageReqVO.setPackageDesc("包装");
|
||||
pageReqVO.setCreateTime(buildBetweenTime(2024, 1, 1, 2024, 1, 3));
|
||||
|
||||
PageResult<MaterialGradeExtRespVO> pageResult = materialGradeExtService.getPage(pageReqVO);
|
||||
|
||||
assertEquals(1, pageResult.getTotal());
|
||||
assertEquals(1, pageResult.getList().size());
|
||||
assertPojoEquals(target, pageResult.getList().get(0), "createTime", "updateTime", "creator", "updater", "deleted",
|
||||
"tenantId", "deptId", "deptName", "companyId", "creatorName", "updaterName", "postId");
|
||||
}
|
||||
}
|
||||
@@ -1 +1,2 @@
|
||||
TRUNCATE TABLE bse_mtrl_hs_prps;
|
||||
TRUNCATE TABLE bse_mtrl_grade_ext;
|
||||
|
||||
@@ -14,3 +14,29 @@ CREATE TABLE IF NOT EXISTS bse_mtrl_hs_prps (
|
||||
deleted BIT DEFAULT FALSE NOT NULL,
|
||||
tenant_id BIGINT DEFAULT 1 NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bse_mtrl_grade_ext (
|
||||
id BIGINT PRIMARY KEY,
|
||||
CMP_CD VARCHAR(64) NOT NULL,
|
||||
CMP_NM VARCHAR(128),
|
||||
MTRL_CD VARCHAR(128) NOT NULL,
|
||||
MTRL_NM VARCHAR(255),
|
||||
ZH_BRAND VARCHAR(255),
|
||||
EN_BRAND VARCHAR(255),
|
||||
SPC_MDL VARCHAR(255),
|
||||
LINE_TP VARCHAR(64),
|
||||
PKG VARCHAR(255),
|
||||
company_id BIGINT,
|
||||
company_name VARCHAR(128),
|
||||
dept_id BIGINT,
|
||||
dept_name VARCHAR(128),
|
||||
post_id BIGINT,
|
||||
tenant_id BIGINT DEFAULT 1,
|
||||
creator_name VARCHAR(64),
|
||||
updater_name VARCHAR(64),
|
||||
creator VARCHAR(64),
|
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
updater VARCHAR(64),
|
||||
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
deleted BIT DEFAULT FALSE NOT NULL
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user