加入商品模块

ccongli-dev-0821
杨世强 1 year ago
parent d4ee54b27b
commit db399875b9

@ -24,6 +24,7 @@
<!-- 示例项目 -->
<module>yunxi-example</module>
<module>yunxi-module-demo</module>
<module>yunxi-module-xxjj</module>
</modules>
<name>${project.artifactId}</name>

@ -1,5 +1,6 @@
package com.yunxi.scm.module.demo.controller.admin.material;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDODemo;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -8,7 +9,6 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
@ -24,31 +24,30 @@ import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.yunxi.scm.module.demo.controller.admin.material.vo.*;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.module.demo.convert.material.MaterialConvert;
import com.yunxi.scm.module.demo.service.material.MaterialService;
import com.yunxi.scm.module.demo.convert.material.MaterialConvertDemo;
import com.yunxi.scm.module.demo.service.material.MaterialServiceDemo;
@Tag(name = "管理后台 - 物料管理")
@RestController
@RequestMapping("/demo/material")
@Validated
public class MaterialController {
public class MaterialControllerDemo {
@Resource
private MaterialService materialService;
private MaterialServiceDemo materialServiceDemo;
@PostMapping("/create")
@Operation(summary = "创建物料管理")
@PreAuthorize("@ss.hasPermission('demo:material:create')")
public CommonResult<Long> createMaterial(@Valid @RequestBody MaterialCreateReqVO createReqVO) {
return success(materialService.createMaterial(createReqVO));
return success(materialServiceDemo.createMaterial(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新物料管理")
@PreAuthorize("@ss.hasPermission('demo:material:update')")
public CommonResult<Boolean> updateMaterial(@Valid @RequestBody MaterialUpdateReqVO updateReqVO) {
materialService.updateMaterial(updateReqVO);
materialServiceDemo.updateMaterial(updateReqVO);
return success(true);
}
@ -57,7 +56,7 @@ public class MaterialController {
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('demo:material:delete')")
public CommonResult<Boolean> deleteMaterial(@RequestParam("id") Long id) {
materialService.deleteMaterial(id);
materialServiceDemo.deleteMaterial(id);
return success(true);
}
@ -66,8 +65,8 @@ public class MaterialController {
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('demo:material:query')")
public CommonResult<MaterialRespVO> getMaterial(@RequestParam("id") Long id) {
MaterialDO material = materialService.getMaterial(id);
return success(MaterialConvert.INSTANCE.convert(material));
MaterialDODemo material = materialServiceDemo.getMaterial(id);
return success(MaterialConvertDemo.INSTANCE.convert(material));
}
@GetMapping("/list")
@ -75,16 +74,16 @@ public class MaterialController {
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('demo:material:query')")
public CommonResult<List<MaterialRespVO>> getMaterialList(@RequestParam("ids") Collection<Long> ids) {
List<MaterialDO> list = materialService.getMaterialList(ids);
return success(MaterialConvert.INSTANCE.convertList(list));
List<MaterialDODemo> list = materialServiceDemo.getMaterialList(ids);
return success(MaterialConvertDemo.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得物料管理分页")
@PreAuthorize("@ss.hasPermission('demo:material:query')")
public CommonResult<PageResult<MaterialRespVO>> getMaterialPage(@Valid MaterialPageReqVO pageVO) {
PageResult<MaterialDO> pageResult = materialService.getMaterialPage(pageVO);
return success(MaterialConvert.INSTANCE.convertPage(pageResult));
PageResult<MaterialDODemo> pageResult = materialServiceDemo.getMaterialPage(pageVO);
return success(MaterialConvertDemo.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@ -93,9 +92,9 @@ public class MaterialController {
@OperateLog(type = EXPORT)
public void exportMaterialExcel(@Valid MaterialExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<MaterialDO> list = materialService.getMaterialList(exportReqVO);
List<MaterialDODemo> list = materialServiceDemo.getMaterialList(exportReqVO);
// 导出 Excel
List<MaterialExcelVO> datas = MaterialConvert.INSTANCE.convertList02(list);
List<MaterialExcelVO> datas = MaterialConvertDemo.INSTANCE.convertList02(list);
ExcelUtils.write(response, "物料管理.xls", "数据", MaterialExcelVO.class, datas);
}

@ -0,0 +1,34 @@
package com.yunxi.scm.module.demo.convert.material;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDODemo;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.yunxi.scm.module.demo.controller.admin.material.vo.*;
/**
* Convert
*
* @author ccongli
*/
@Mapper
public interface MaterialConvertDemo {
MaterialConvertDemo INSTANCE = Mappers.getMapper(MaterialConvertDemo.class);
MaterialDODemo convert(MaterialCreateReqVO bean);
MaterialDODemo convert(MaterialUpdateReqVO bean);
MaterialRespVO convert(MaterialDODemo bean);
List<MaterialRespVO> convertList(List<MaterialDODemo> list);
PageResult<MaterialRespVO> convertPage(PageResult<MaterialDODemo> page);
List<MaterialExcelVO> convertList02(List<MaterialDODemo> list);
}

@ -24,7 +24,7 @@ import java.util.List;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MaterialDO extends BaseDO {
public class MaterialDODemo extends BaseDO {
/**
* ID

@ -1,40 +0,0 @@
package com.yunxi.scm.module.demo.dal.mysql.material;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDO;
import org.apache.ibatis.annotations.Mapper;
import com.yunxi.scm.module.demo.controller.admin.material.vo.*;
/**
* Mapper
*
* @author ccongli
*/
@Mapper
public interface MaterialMapper extends BaseMapperX<MaterialDO> {
default PageResult<MaterialDO> selectPage(MaterialPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MaterialDO>()
.likeIfPresent(MaterialDO::getName, reqVO.getName())
.eqIfPresent(MaterialDO::getStatus, reqVO.getStatus())
.eqIfPresent(MaterialDO::getType, reqVO.getType())
.eqIfPresent(MaterialDO::getCategory, reqVO.getCategory())
.betweenIfPresent(MaterialDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MaterialDO::getId));
}
default List<MaterialDO> selectList(MaterialExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MaterialDO>()
.likeIfPresent(MaterialDO::getName, reqVO.getName())
.eqIfPresent(MaterialDO::getStatus, reqVO.getStatus())
.eqIfPresent(MaterialDO::getType, reqVO.getType())
.eqIfPresent(MaterialDO::getCategory, reqVO.getCategory())
.betweenIfPresent(MaterialDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MaterialDO::getId));
}
}

@ -0,0 +1,40 @@
package com.yunxi.scm.module.demo.dal.mysql.material;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDODemo;
import org.apache.ibatis.annotations.Mapper;
import com.yunxi.scm.module.demo.controller.admin.material.vo.*;
/**
* Mapper
*
* @author ccongli
*/
@Mapper
public interface MaterialMapperDemo extends BaseMapperX<MaterialDODemo> {
default PageResult<MaterialDODemo> selectPage(MaterialPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MaterialDODemo>()
.likeIfPresent(MaterialDODemo::getName, reqVO.getName())
.eqIfPresent(MaterialDODemo::getStatus, reqVO.getStatus())
.eqIfPresent(MaterialDODemo::getType, reqVO.getType())
.eqIfPresent(MaterialDODemo::getCategory, reqVO.getCategory())
.betweenIfPresent(MaterialDODemo::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MaterialDODemo::getId));
}
default List<MaterialDODemo> selectList(MaterialExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MaterialDODemo>()
.likeIfPresent(MaterialDODemo::getName, reqVO.getName())
.eqIfPresent(MaterialDODemo::getStatus, reqVO.getStatus())
.eqIfPresent(MaterialDODemo::getType, reqVO.getType())
.eqIfPresent(MaterialDODemo::getCategory, reqVO.getCategory())
.betweenIfPresent(MaterialDODemo::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MaterialDODemo::getId));
}
}

@ -3,7 +3,7 @@ package com.yunxi.scm.module.demo.service.material;
import java.util.*;
import javax.validation.*;
import com.yunxi.scm.module.demo.controller.admin.material.vo.*;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDODemo;
import com.yunxi.scm.framework.common.pojo.PageResult;
/**
@ -11,7 +11,7 @@ import com.yunxi.scm.framework.common.pojo.PageResult;
*
* @author ccongli
*/
public interface MaterialService {
public interface MaterialServiceDemo {
/**
*
@ -41,7 +41,7 @@ public interface MaterialService {
* @param id
* @return
*/
MaterialDO getMaterial(Long id);
MaterialDODemo getMaterial(Long id);
/**
*
@ -49,7 +49,7 @@ public interface MaterialService {
* @param ids
* @return
*/
List<MaterialDO> getMaterialList(Collection<Long> ids);
List<MaterialDODemo> getMaterialList(Collection<Long> ids);
/**
*
@ -57,7 +57,7 @@ public interface MaterialService {
* @param pageReqVO
* @return
*/
PageResult<MaterialDO> getMaterialPage(MaterialPageReqVO pageReqVO);
PageResult<MaterialDODemo> getMaterialPage(MaterialPageReqVO pageReqVO);
/**
* , Excel
@ -65,6 +65,6 @@ public interface MaterialService {
* @param exportReqVO
* @return
*/
List<MaterialDO> getMaterialList(MaterialExportReqVO exportReqVO);
List<MaterialDODemo> getMaterialList(MaterialExportReqVO exportReqVO);
}

@ -0,0 +1,82 @@
package com.yunxi.scm.module.demo.service.material;
import com.yunxi.scm.module.demo.convert.material.MaterialConvertDemo;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDODemo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.yunxi.scm.module.demo.controller.admin.material.vo.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.demo.dal.mysql.material.MaterialMapperDemo;
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.yunxi.scm.module.demo.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author ccongli
*/
@Service
@Validated
public class MaterialServiceDemoImpl implements MaterialServiceDemo {
@Resource
private MaterialMapperDemo materialMapperDemo;
@Override
public Long createMaterial(MaterialCreateReqVO createReqVO) {
// 插入
MaterialDODemo material = MaterialConvertDemo.INSTANCE.convert(createReqVO);
materialMapperDemo.insert(material);
// 返回
return material.getId();
}
@Override
public void updateMaterial(MaterialUpdateReqVO updateReqVO) {
// 校验存在
validateMaterialExists(updateReqVO.getId());
// 更新
MaterialDODemo updateObj = MaterialConvertDemo.INSTANCE.convert(updateReqVO);
materialMapperDemo.updateById(updateObj);
}
@Override
public void deleteMaterial(Long id) {
// 校验存在
validateMaterialExists(id);
// 删除
materialMapperDemo.deleteById(id);
}
private void validateMaterialExists(Long id) {
if (materialMapperDemo.selectById(id) == null) {
throw exception(MATERIAL_NOT_EXISTS);
}
}
@Override
public MaterialDODemo getMaterial(Long id) {
return materialMapperDemo.selectById(id);
}
@Override
public List<MaterialDODemo> getMaterialList(Collection<Long> ids) {
return materialMapperDemo.selectBatchIds(ids);
}
@Override
public PageResult<MaterialDODemo> getMaterialPage(MaterialPageReqVO pageReqVO) {
return materialMapperDemo.selectPage(pageReqVO);
}
@Override
public List<MaterialDODemo> getMaterialList(MaterialExportReqVO exportReqVO) {
return materialMapperDemo.selectList(exportReqVO);
}
}

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunxi.scm.module.demo.dal.mysql.material.MaterialMapper">
<mapper namespace="com.yunxi.scm.module.demo.dal.mysql.material.MaterialMapperDemo">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。

@ -0,0 +1,177 @@
package com.yunxi.scm.module.demo.service.material;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDODemo;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.demo.controller.admin.material.vo.*;
import com.yunxi.scm.module.demo.dal.mysql.material.MaterialMapperDemo;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
import java.util.*;
import static com.yunxi.scm.module.demo.enums.ErrorCodeConstants.*;
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
import static org.junit.jupiter.api.Assertions.*;
/**
* {@link MaterialServiceDemoImpl}
*
* @author ccongli
*/
@Import(MaterialServiceDemoImpl.class)
public class MaterialServiceDemoImplTest extends BaseDbUnitTest {
@Resource
private MaterialServiceDemoImpl materialService;
@Resource
private MaterialMapperDemo materialMapperDemo;
@Test
public void testCreateMaterial_success() {
// 准备参数
MaterialCreateReqVO reqVO = randomPojo(MaterialCreateReqVO.class);
// 调用
Long materialId = materialService.createMaterial(reqVO);
// 断言
assertNotNull(materialId);
// 校验记录的属性是否正确
MaterialDODemo material = materialMapperDemo.selectById(materialId);
assertPojoEquals(reqVO, material);
}
@Test
public void testUpdateMaterial_success() {
// mock 数据
MaterialDODemo dbMaterial = randomPojo(MaterialDODemo.class);
materialMapperDemo.insert(dbMaterial);// @Sql: 先插入出一条存在的数据
// 准备参数
MaterialUpdateReqVO reqVO = randomPojo(MaterialUpdateReqVO.class, o -> {
o.setId(dbMaterial.getId()); // 设置更新的 ID
});
// 调用
materialService.updateMaterial(reqVO);
// 校验是否更新正确
MaterialDODemo material = materialMapperDemo.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, material);
}
@Test
public void testUpdateMaterial_notExists() {
// 准备参数
MaterialUpdateReqVO reqVO = randomPojo(MaterialUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> materialService.updateMaterial(reqVO), MATERIAL_NOT_EXISTS);
}
@Test
public void testDeleteMaterial_success() {
// mock 数据
MaterialDODemo dbMaterial = randomPojo(MaterialDODemo.class);
materialMapperDemo.insert(dbMaterial);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbMaterial.getId();
// 调用
materialService.deleteMaterial(id);
// 校验数据不存在了
assertNull(materialMapperDemo.selectById(id));
}
@Test
public void testDeleteMaterial_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> materialService.deleteMaterial(id), MATERIAL_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetMaterialPage() {
// mock 数据
MaterialDODemo dbMaterial = randomPojo(MaterialDODemo.class, o -> { // 等会查询到
o.setName(null);
o.setStatus(null);
o.setType(null);
o.setCategory(null);
o.setCreateTime(null);
});
materialMapperDemo.insert(dbMaterial);
// 测试 name 不匹配
materialMapperDemo.insert(cloneIgnoreId(dbMaterial, o -> o.setName(null)));
// 测试 status 不匹配
materialMapperDemo.insert(cloneIgnoreId(dbMaterial, o -> o.setStatus(null)));
// 测试 type 不匹配
materialMapperDemo.insert(cloneIgnoreId(dbMaterial, o -> o.setType(null)));
// 测试 category 不匹配
materialMapperDemo.insert(cloneIgnoreId(dbMaterial, o -> o.setCategory(null)));
// 测试 createTime 不匹配
materialMapperDemo.insert(cloneIgnoreId(dbMaterial, o -> o.setCreateTime(null)));
// 准备参数
MaterialPageReqVO reqVO = new MaterialPageReqVO();
reqVO.setName(null);
reqVO.setStatus(null);
reqVO.setType(null);
reqVO.setCategory(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<MaterialDODemo> pageResult = materialService.getMaterialPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbMaterial, pageResult.getList().get(0));
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetMaterialList() {
// mock 数据
MaterialDODemo dbMaterial = randomPojo(MaterialDODemo.class, o -> { // 等会查询到
o.setName(null);
o.setStatus(null);
o.setType(null);
o.setCategory(null);
o.setCreateTime(null);
});
materialMapperDemo.insert(dbMaterial);
// 测试 name 不匹配
materialMapperDemo.insert(cloneIgnoreId(dbMaterial, o -> o.setName(null)));
// 测试 status 不匹配
materialMapperDemo.insert(cloneIgnoreId(dbMaterial, o -> o.setStatus(null)));
// 测试 type 不匹配
materialMapperDemo.insert(cloneIgnoreId(dbMaterial, o -> o.setType(null)));
// 测试 category 不匹配
materialMapperDemo.insert(cloneIgnoreId(dbMaterial, o -> o.setCategory(null)));
// 测试 createTime 不匹配
materialMapperDemo.insert(cloneIgnoreId(dbMaterial, o -> o.setCreateTime(null)));
// 准备参数
MaterialExportReqVO reqVO = new MaterialExportReqVO();
reqVO.setName(null);
reqVO.setStatus(null);
reqVO.setType(null);
reqVO.setCategory(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
List<MaterialDODemo> list = materialService.getMaterialList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbMaterial, list.get(0));
}
}

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi</artifactId>
<version>${revision}</version> <!-- 1. 修改 version 为 ${revision} -->
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yunxi-module-xxjj</artifactId>
<packaging>pom</packaging> <!-- 2. 新增 packaging 为 pom -->
<name>${project.artifactId}</name> <!-- 3. 新增 name 为 ${project.artifactId} -->
<description> <!-- 4. 新增 description 为该模块的描述 -->
xxjj 模块,主要实现 XXX、YYY、ZZZ 等功能。
</description>
<modules>
<module>yunxi-module-xxjj-api</module>
<module>yunxi-module-xxjj-biz</module>
</modules>
</project>

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yunxi-module-xxjj</artifactId>
<groupId>com.yunxi.scm</groupId>
<version>${revision}</version> <!-- 1. 修改 version 为 ${revision} -->
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yunxi-module-xxjj-api</artifactId>
<packaging>jar</packaging> <!-- 2. 新增 packaging 为 jar -->
<name>${project.artifactId}</name> <!-- 3. 新增 name 为 ${project.artifactId} -->
<description> <!-- 4. 新增 description 为该模块的描述 -->
xxjj 模块 API暴露给其它模块调用
</description>
<dependencies> <!-- 5. 新增 yudao-common 依赖 -->
<dependency>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi-common</artifactId>
</dependency>
</dependencies>
</project>

@ -0,0 +1,54 @@
package com.yunxi.scm.module.xxjj.api.materialcategory;
import com.yunxi.scm.framework.common.util.collection.CollectionUtils;
import com.yunxi.scm.module.xxjj.api.materialcategory.dto.MaterialCategoryRespDTO;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* API
*
* @author
*/
public interface MaterialCategoryApi {
/**
*
*
* @param id
* @return
*/
MaterialCategoryRespDTO getMaterialCategory(Long id);
/**
*
*
* @param ids
* @return
*/
List<MaterialCategoryRespDTO> getMaterialCategoryList(Collection<Long> ids);
/**
*
* 1.
* 2.
*
* @param ids
*/
void validateMaterialCategoryList(Collection<Long> ids);
/**
* Map
*
* @param ids
* @return Map
*/
default Map<Long, MaterialCategoryRespDTO> getMaterialCategoryMap(Set<Long> ids) {
List<MaterialCategoryRespDTO> list = getMaterialCategoryList(ids);
return CollectionUtils.convertMap(list, MaterialCategoryRespDTO::getId);
}
}

@ -0,0 +1,30 @@
package com.yunxi.scm.module.xxjj.api.materialcategory.dto;
import lombok.Data;
/**
* Response DTO
*
* @author
*/
@Data
public class MaterialCategoryRespDTO {
/**
*
*/
private Long id;
/**
*
*/
private String code;
/**
*
*/
private String name;
/**
*
*/
private Long parentId;
}

@ -0,0 +1,20 @@
package com.yunxi.scm.module.xxjj.enums.materialcategory;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
*/
@Getter
@AllArgsConstructor
public enum MaterialCategoryIdEnum {
/**
*
*/
ROOT(0L);
private final Long id;
}

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yunxi-module-xxjj</artifactId>
<groupId>com.yunxi.scm</groupId>
<version>${revision}</version> <!-- 1. 修改 version 为 ${revision} -->
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging> <!-- 2. 新增 packaging 为 jar -->
<artifactId>yunxi-module-xxjj-biz</artifactId>
<name>${project.artifactId}</name> <!-- 3. 新增 name 为 ${project.artifactId} -->
<description> <!-- 4. 新增 description 为该模块的描述 -->
xxjj 模块,主要实现 XXX、YYY、ZZZ 等功能。
</description>
<dependencies> <!-- 5. 新增依赖,这里引入的都是比较常用的业务组件、技术组件 -->
<dependency>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi-module-xxjj-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 业务组件 -->
<dependency>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi-spring-boot-starter-biz-operatelog</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi-spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi-spring-boot-starter-security</artifactId>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi-spring-boot-starter-mybatis</artifactId>
</dependency>
<!-- Test 测试相关 -->
<dependency>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi-spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi-spring-boot-starter-excel</artifactId>
</dependency>
</dependencies>
</project>

@ -0,0 +1,25 @@
package com.yunxi.scm.module.xxjj.controller.admin;
import com.yunxi.scm.framework.common.pojo.CommonResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - Test2")
@RestController
@RequestMapping("/demo/test2")
@Validated
public class DemoTest2Controller {
@GetMapping("/get")
@Operation(summary = "获取 test 信息")
public CommonResult<String> get() {
return success("true");
}
}

@ -0,0 +1,102 @@
package com.yunxi.scm.module.xxjj.controller.admin.material;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.*;
import com.yunxi.scm.module.xxjj.convert.material.MaterialConvert;
import com.yunxi.scm.module.xxjj.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.module.xxjj.service.material.MaterialService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.common.pojo.CommonResult;
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.*;
@Tag(name = "管理后台 - 物料")
@RestController
@RequestMapping("/xxjj/material")
@Validated
public class MaterialController {
@Resource
private MaterialService materialService;
@PostMapping("/create")
@Operation(summary = "创建物料")
@PreAuthorize("@ss.hasPermission('xxjj:material:create')")
public CommonResult<Long> createMaterial(@Valid @RequestBody MaterialCreateReqVO createReqVO) {
return success(materialService.createMaterial(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新物料")
@PreAuthorize("@ss.hasPermission('xxjj:material:update')")
public CommonResult<Boolean> updateMaterial(@Valid @RequestBody MaterialUpdateReqVO updateReqVO) {
materialService.updateMaterial(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除物料")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('xxjj:material:delete')")
public CommonResult<Boolean> deleteMaterial(@RequestParam("id") Long id) {
materialService.deleteMaterial(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得物料")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('xxjj:material:query')")
public CommonResult<MaterialRespVO> getMaterial(@RequestParam("id") Long id) {
MaterialDO material = materialService.getMaterial(id);
return success(MaterialConvert.INSTANCE.convert(material));
}
@GetMapping("/list")
@Operation(summary = "获得物料列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('xxjj:material:query')")
public CommonResult<List<MaterialRespVO>> getMaterialList(@RequestParam("ids") Collection<Long> ids) {
List<MaterialDO> list = materialService.getMaterialList(ids);
return success(MaterialConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得物料分页")
@PreAuthorize("@ss.hasPermission('xxjj:material:query')")
public CommonResult<PageResult<MaterialRespVO>> getMaterialPage(@Valid MaterialPageReqVO pageVO) {
PageResult<MaterialDO> pageResult = materialService.getMaterialPage(pageVO);
return success(MaterialConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出物料 Excel")
@PreAuthorize("@ss.hasPermission('xxjj:material:export')")
@OperateLog(type = EXPORT)
public void exportMaterialExcel(@Valid MaterialExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<MaterialDO> list = materialService.getMaterialList(exportReqVO);
// 导出 Excel
List<MaterialExcelVO> datas = MaterialConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "物料.xls", "数据", MaterialExcelVO.class, datas);
}
}

@ -0,0 +1,75 @@
package com.yunxi.scm.module.xxjj.controller.admin.material.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class MaterialBaseVO {
@Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123")
@NotNull(message = "物料编码不能为空")
private String materialCode;
@Schema(description = "物料名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@NotNull(message = "物料名称不能为空")
private String materialName;
@Schema(description = "物料图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "4566")
@NotNull(message = "物料图片不能为空")
private String materialPictures;
@Schema(description = "物料类型id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15479")
@NotNull(message = "物料分类id不能为空")
private Long materialTypeId;
@Schema(description = "行业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3303")
@NotNull(message = "行业id不能为空")
private Long materialIndustryId;
@Schema(description = "品牌id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3303")
@NotNull(message = "品牌id不能为空")
private Long materialBrandId;
@Schema(description = "物料英文名称", example = "芋艿")
private String materialEnglishName;
@Schema(description = "物料简称")
private String materialAbbreviation;
@Schema(description = "物料条码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "物料条码不能为空")
private String materialBarcode;
@Schema(description = "物料规格", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "物料规格不能为空")
private String materialSpec;
@Schema(description = "物料类目", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "物料类目不能为空")
private String materialKind;
@Schema(description = "存货类型(0原材料 1半成品 2产成品)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "存货类型(0原材料 1半成品 2产成品)不能为空")
private String inventoryType;
@Schema(description = "物料状态(0上架 1下架)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "物料状态(0上架 1下架)不能为空")
private String materialState;
@Schema(description = "销售状态(0销售中 1已售罄 2仓库中)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "销售状态(0销售中 1已售罄 2仓库中)不能为空")
private String saleState;
@Schema(description = "物料分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "3303")
@NotNull(message = "物料分类不能为空")
private Long materialCategoryId;
}

@ -0,0 +1,12 @@
package com.yunxi.scm.module.xxjj.controller.admin.material.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "管理后台 - 物料创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialCreateReqVO extends MaterialBaseVO {
}

@ -0,0 +1,77 @@
package com.yunxi.scm.module.xxjj.controller.admin.material.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yunxi.scm.framework.excel.core.annotations.DictFormat;
import com.yunxi.scm.framework.excel.core.convert.DictConvert;
/**
* Excel VO
*
* @author
*/
@Data
public class MaterialExcelVO {
@ExcelProperty("编号")
private Long id;
@ExcelProperty("物料编码")
private String materialCode;
@ExcelProperty("物料名称")
private String materialName;
@ExcelProperty("物料图片")
private String materialPictures;
@ExcelProperty("物料类型id")
private Long materialTypeId;
@ExcelProperty("行业id")
private Long materialIndustryId;
@ExcelProperty("品牌id")
private Long materialBrandId;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ExcelProperty("物料英文名称")
private String materialEnglishName;
@ExcelProperty("物料简称")
private String materialAbbreviation;
@ExcelProperty("物料条码")
private String materialBarcode;
@ExcelProperty("物料规格")
private String materialSpec;
@ExcelProperty("物料类目")
private String materialKind;
@ExcelProperty(value = "存货类型(0原材料 1半成品 2产成品)", converter = DictConvert.class)
@DictFormat("common_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String inventoryType;
@ExcelProperty(value = "物料状态(0上架 1下架)", converter = DictConvert.class)
@DictFormat("common_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String materialState;
@ExcelProperty(value = "销售状态(0销售中 1已售罄 2仓库中)", converter = DictConvert.class)
@DictFormat("common_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String saleState;
@ExcelProperty("物料分类id")
private Long materialCategoryId;
}

@ -0,0 +1,65 @@
package com.yunxi.scm.module.xxjj.controller.admin.material.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料 Excel 导出 Request VO参数和 MaterialPageReqVO 是一致的")
@Data
public class MaterialExportReqVO {
@Schema(description = "物料编码", example = "123")
private String materialCode;
@Schema(description = "物料名称", example = "李四")
private String materialName;
@Schema(description = "物料图片", example = "4566")
private String materialPictures;
@Schema(description = "物料类型id", example = "15479")
private Long materialTypeId;
@Schema(description = "行业id", example = "3303")
private Long materialIndustryId;
@Schema(description = "品牌id", example = "3303")
private Long materialBrandId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "物料英文名称", example = "芋艿")
private String materialEnglishName;
@Schema(description = "物料简称")
private String materialAbbreviation;
@Schema(description = "物料条码")
private String materialBarcode;
@Schema(description = "物料规格")
private String materialSpec;
@Schema(description = "物料类目")
private String materialKind;
@Schema(description = "存货类型(0原材料 1半成品 2产成品)", example = "1")
private String inventoryType;
@Schema(description = "物料状态(0上架 1下架)")
private String materialState;
@Schema(description = "销售状态(0销售中 1已售罄 2仓库中)")
private String saleState;
@Schema(description = "物料分类id", example = "15479")
private Long materialCategoryId;
}

@ -0,0 +1,66 @@
package com.yunxi.scm.module.xxjj.controller.admin.material.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialPageReqVO extends PageParam {
@Schema(description = "物料编码", example = "123")
private String materialCode;
@Schema(description = "物料名称", example = "李四")
private String materialName;
@Schema(description = "物料图片", example = "4566")
private String materialPictures;
@Schema(description = "物料类型id", example = "15479")
private Long materialTypeId;
@Schema(description = "行业id", example = "3303")
private Long materialIndustryId;
@Schema(description = "品牌id", example = "3303")
private Long materialBrandId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "物料英文名称", example = "芋艿")
private String materialEnglishName;
@Schema(description = "物料简称")
private String materialAbbreviation;
@Schema(description = "物料条码")
private String materialBarcode;
@Schema(description = "物料规格")
private String materialSpec;
@Schema(description = "物料类目")
private String materialKind;
@Schema(description = "存货类型(0原材料 1半成品 2产成品)", example = "1")
private String inventoryType;
@Schema(description = "物料状态(0上架 1下架)")
private String materialState;
@Schema(description = "销售状态(0销售中 1已售罄 2仓库中)")
private String saleState;
@Schema(description = "物料分类id", example = "15479")
private Long materialCategoryId;
}

@ -0,0 +1,19 @@
package com.yunxi.scm.module.xxjj.controller.admin.material.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialRespVO extends MaterialBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15116")
private Long id;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
}

@ -0,0 +1,18 @@
package com.yunxi.scm.module.xxjj.controller.admin.material.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 物料更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialUpdateReqVO extends MaterialBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15116")
@NotNull(message = "编号不能为空")
private Long id;
}

@ -0,0 +1,102 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialbrand;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.*;
import com.yunxi.scm.module.xxjj.convert.materialbrand.MaterialBrandConvert;
import com.yunxi.scm.module.xxjj.service.materialbrand.MaterialBrandService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.common.pojo.CommonResult;
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialbrand.MaterialBrandDO;
@Tag(name = "管理后台 - 物料品牌")
@RestController
@RequestMapping("/xxjj/material-brand")
@Validated
public class MaterialBrandController {
@Resource
private MaterialBrandService materialBrandService;
@PostMapping("/create")
@Operation(summary = "创建物料品牌")
@PreAuthorize("@ss.hasPermission('xxjj:material-brand:create')")
public CommonResult<Long> createMaterialBrand(@Valid @RequestBody MaterialBrandCreateReqVO createReqVO) {
return success(materialBrandService.createMaterialBrand(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新物料品牌")
@PreAuthorize("@ss.hasPermission('xxjj:material-brand:update')")
public CommonResult<Boolean> updateMaterialBrand(@Valid @RequestBody MaterialBrandUpdateReqVO updateReqVO) {
materialBrandService.updateMaterialBrand(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除物料品牌")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('xxjj:material-brand:delete')")
public CommonResult<Boolean> deleteMaterialBrand(@RequestParam("id") Long id) {
materialBrandService.deleteMaterialBrand(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得物料品牌")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('xxjj:material-brand:query')")
public CommonResult<MaterialBrandRespVO> getMaterialBrand(@RequestParam("id") Long id) {
MaterialBrandDO materialBrand = materialBrandService.getMaterialBrand(id);
return success(MaterialBrandConvert.INSTANCE.convert(materialBrand));
}
@GetMapping("/list")
@Operation(summary = "获得物料品牌列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('xxjj:material-brand:query')")
public CommonResult<List<MaterialBrandRespVO>> getMaterialBrandList(@RequestParam("ids") Collection<Long> ids) {
List<MaterialBrandDO> list = materialBrandService.getMaterialBrandList(ids);
return success(MaterialBrandConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得物料品牌分页")
@PreAuthorize("@ss.hasPermission('xxjj:material-brand:query')")
public CommonResult<PageResult<MaterialBrandRespVO>> getMaterialBrandPage(@Valid MaterialBrandPageReqVO pageVO) {
PageResult<MaterialBrandDO> pageResult = materialBrandService.getMaterialBrandPage(pageVO);
return success(MaterialBrandConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出物料品牌 Excel")
@PreAuthorize("@ss.hasPermission('xxjj:material-brand:export')")
@OperateLog(type = EXPORT)
public void exportMaterialBrandExcel(@Valid MaterialBrandExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<MaterialBrandDO> list = materialBrandService.getMaterialBrandList(exportReqVO);
// 导出 Excel
List<MaterialBrandExcelVO> datas = MaterialBrandConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "物料品牌.xls", "数据", MaterialBrandExcelVO.class, datas);
}
}

@ -0,0 +1,36 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class MaterialBrandBaseVO {
@Schema(description = "品牌名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotNull(message = "品牌名称不能为空")
private String brandName;
@Schema(description = "品牌图片", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "品牌图片不能为空")
private String brandPic;
@Schema(description = "品牌排序", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "品牌排序不能为空")
private Integer brandSort;
@Schema(description = "品牌描述", example = "随便")
private String brandDescription;
@Schema(description = "品牌状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "品牌状态不能为空")
private String brandStatus;
}

@ -0,0 +1,12 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "管理后台 - 物料品牌创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialBrandCreateReqVO extends MaterialBrandBaseVO {
}

@ -0,0 +1,44 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yunxi.scm.framework.excel.core.annotations.DictFormat;
import com.yunxi.scm.framework.excel.core.convert.DictConvert;
/**
* Excel VO
*
* @author
*/
@Data
public class MaterialBrandExcelVO {
@ExcelProperty("品牌id")
private Long id;
@ExcelProperty("品牌名称")
private String brandName;
@ExcelProperty("品牌图片")
private String brandPic;
@ExcelProperty("品牌排序")
private Integer brandSort;
@ExcelProperty("品牌描述")
private String brandDescription;
@ExcelProperty(value = "品牌状态", converter = DictConvert.class)
@DictFormat("common_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String brandStatus;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,29 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料品牌 Excel 导出 Request VO参数和 MaterialBrandPageReqVO 是一致的")
@Data
public class MaterialBrandExportReqVO {
@Schema(description = "品牌名称", example = "芋艿")
private String brandName;
@Schema(description = "品牌排序")
private Integer brandSort;
@Schema(description = "品牌状态", example = "1")
private String brandStatus;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,31 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料品牌分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialBrandPageReqVO extends PageParam {
@Schema(description = "品牌名称", example = "芋艿")
private String brandName;
@Schema(description = "品牌排序")
private Integer brandSort;
@Schema(description = "品牌状态", example = "1")
private String brandStatus;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,19 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料品牌 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialBrandRespVO extends MaterialBrandBaseVO {
@Schema(description = "品牌id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20281")
private Long id;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
}

@ -0,0 +1,18 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 物料品牌更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialBrandUpdateReqVO extends MaterialBrandBaseVO {
@Schema(description = "品牌id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20281")
@NotNull(message = "品牌id不能为空")
private Long id;
}

@ -0,0 +1,85 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialcategory;
import com.yunxi.scm.framework.common.pojo.CommonResult;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.*;
import com.yunxi.scm.module.xxjj.convert.materialcategory.MaterialCategoryConvert;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialcategory.MaterialCategoryDO;
import com.yunxi.scm.module.xxjj.service.materialcategory.MaterialCategoryService;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.Comparator;
import java.util.List;
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 物料分类")
@RestController
@RequestMapping("/xxjj/materialCategory")
@Validated
public class MaterialCategoryController {
@Resource
private MaterialCategoryService materialCategoryService;
@PostMapping("create")
@Operation(summary = "创建物料分类")
@PreAuthorize("@ss.hasPermission('xxjj:materialCategory:create')")
public CommonResult<Long> createMaterialCategory(@Valid @RequestBody MaterialCategoryCreateReqVO reqVO) {
Long MaterialCategoryId = materialCategoryService.createMaterialCategory(reqVO);
return success(MaterialCategoryId);
}
@PutMapping("update")
@Operation(summary = "更新物料分类")
@PreAuthorize("@ss.hasPermission('xxjj:materialCategory:update')")
public CommonResult<Boolean> updateMaterialCategory(@Valid @RequestBody MaterialCategoryUpdateReqVO reqVO) {
materialCategoryService.updateMaterialCategory(reqVO);
return success(true);
}
@DeleteMapping("delete")
@Operation(summary = "删除物料分类")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('xxjj:materialCategory:delete')")
public CommonResult<Boolean> deleteMaterialCategory(@RequestParam("id") Long id) {
materialCategoryService.deleteMaterialCategory(id);
return success(true);
}
@GetMapping("/list")
@Operation(summary = "获取物料分类列表")
@PreAuthorize("@ss.hasPermission('xxjj:materialCategory:query')")
public CommonResult<List<MaterialCategoryRespVO>> getMaterialCategoryList(MaterialCategoryListReqVO reqVO) {
List<MaterialCategoryDO> list = materialCategoryService.getMaterialCategoryList(reqVO);
list.sort(Comparator.comparing(MaterialCategoryDO::getSort));
return success(MaterialCategoryConvert.INSTANCE.convertList(list));
}
@GetMapping("/list-all-simple")
@Operation(summary = "获取物料分类精简信息列表", description = "只包含被开启的物料分类,主要用于前端的下拉选项")
public CommonResult<List<MaterialCategorySimpleRespVO>> getSimpleMaterialCategoryList() {
// 获得物料分类列表,只要开启状态的
MaterialCategoryListReqVO reqVO = new MaterialCategoryListReqVO();
List<MaterialCategoryDO> list = materialCategoryService.getMaterialCategoryList(reqVO);
// 排序后,返回给前端
list.sort(Comparator.comparing(MaterialCategoryDO::getSort));
return success(MaterialCategoryConvert.INSTANCE.convertList02(list));
}
@GetMapping("/get")
@Operation(summary = "获得物料分类信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('xxjj:materialCategory:query')")
public CommonResult<MaterialCategoryRespVO> getMaterialCategory(@RequestParam("id") Long id) {
return success(MaterialCategoryConvert.INSTANCE.convert(materialCategoryService.getMaterialCategory(id)));
}
}

@ -0,0 +1,34 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class MaterialCategoryBaseVO {
@Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "20230802AAA1")
@Size(max = 30, message = "物料分类名称长度不能超过30个字符")
private String code;
@Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
@NotBlank(message = "物料分类名称不能为空")
@Size(max = 30, message = "物料分类名称长度不能超过30个字符")
private String name;
@Schema(description = "父菜单 ID", example = "1024")
private Long parentId;
@Schema(description = "显示顺序不能为空", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
@NotNull(message = "显示顺序不能为空")
private Integer sort;
}

@ -0,0 +1,12 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Schema(description = "管理后台 - 物料分类创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialCategoryCreateReqVO extends MaterialCategoryBaseVO {
}

@ -0,0 +1,13 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 物料分类列表 Request VO")
@Data
public class MaterialCategoryListReqVO {
@Schema(description = "物料分类名称,模糊匹配", example = "芋道")
private String name;
}

@ -0,0 +1,20 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料分类信息 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
public class MaterialCategoryRespVO extends MaterialCategoryBaseVO {
@Schema(description = "物料分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private Long id;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
private LocalDateTime createTime;
}

@ -0,0 +1,26 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Schema(description = "管理后台 - 物料分类精简信息 Response VO")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MaterialCategorySimpleRespVO {
@Schema(description = "物料分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private Long id;
@Schema(description = "物料分类编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
private String code;
@Schema(description = "物料分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
private String name;
@Schema(description = "父物料分类 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private Long parentId;
}

@ -0,0 +1,18 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 物料分类更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
public class MaterialCategoryUpdateReqVO extends MaterialCategoryBaseVO {
@Schema(description = "物料分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
@NotNull(message = "物料分类编号不能为空")
private Long id;
}

@ -0,0 +1,102 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialindustry;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.*;
import com.yunxi.scm.module.xxjj.convert.materialindustry.MaterialIndustryConvert;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.common.pojo.CommonResult;
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialindustry.MaterialIndustryDO;
import com.yunxi.scm.module.xxjj.service.materialindustry.MaterialIndustryService;
@Tag(name = "管理后台 - 物料行业1")
@RestController
@RequestMapping("/xxjj/material-industry")
@Validated
public class MaterialIndustryController {
@Resource
private MaterialIndustryService materialIndustryService;
@PostMapping("/create")
@Operation(summary = "创建物料行业")
@PreAuthorize("@ss.hasPermission('xxjj:material-industry:create')")
public CommonResult<Long> createMaterialIndustry(@Valid @RequestBody MaterialIndustryCreateReqVO createReqVO) {
return success(materialIndustryService.createMaterialIndustry(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新物料行业")
@PreAuthorize("@ss.hasPermission('xxjj:material-industry:update')")
public CommonResult<Boolean> updateMaterialIndustry(@Valid @RequestBody MaterialIndustryUpdateReqVO updateReqVO) {
materialIndustryService.updateMaterialIndustry(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除物料行业")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('xxjj:material-industry:delete')")
public CommonResult<Boolean> deleteMaterialIndustry(@RequestParam("id") Long id) {
materialIndustryService.deleteMaterialIndustry(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得物料行业")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('xxjj:material-industry:query')")
public CommonResult<MaterialIndustryRespVO> getMaterialIndustry(@RequestParam("id") Long id) {
MaterialIndustryDO materialIndustry = materialIndustryService.getMaterialIndustry(id);
return success(MaterialIndustryConvert.INSTANCE.convert(materialIndustry));
}
@GetMapping("/list")
@Operation(summary = "获得物料行业列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('xxjj:material-industry:query')")
public CommonResult<List<MaterialIndustryRespVO>> getMaterialIndustryList(@RequestParam("ids") Collection<Long> ids) {
List<MaterialIndustryDO> list = materialIndustryService.getMaterialIndustryList(ids);
return success(MaterialIndustryConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得物料行业分页")
@PreAuthorize("@ss.hasPermission('xxjj:material-industry:query')")
public CommonResult<PageResult<MaterialIndustryRespVO>> getMaterialIndustryPage(@Valid MaterialIndustryPageReqVO pageVO) {
PageResult<MaterialIndustryDO> pageResult = materialIndustryService.getMaterialIndustryPage(pageVO);
return success(MaterialIndustryConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出物料行业 Excel")
@PreAuthorize("@ss.hasPermission('xxjj:material-industry:export')")
@OperateLog(type = EXPORT)
public void exportMaterialIndustryExcel(@Valid MaterialIndustryExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<MaterialIndustryDO> list = materialIndustryService.getMaterialIndustryList(exportReqVO);
// 导出 Excel
List<MaterialIndustryExcelVO> datas = MaterialIndustryConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "物料行业.xls", "数据", MaterialIndustryExcelVO.class, datas);
}
}

@ -0,0 +1,25 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class MaterialIndustryBaseVO {
@Schema(description = "行业编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "55432")
@NotNull(message = "行业编码不能为空")
private String industryCode;
@Schema(description = "行业名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@NotNull(message = "行业名称不能为空")
private String industryName;
}

@ -0,0 +1,12 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "管理后台 - 物料行业创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialIndustryCreateReqVO extends MaterialIndustryBaseVO {
}

@ -0,0 +1,34 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yunxi.scm.framework.excel.core.annotations.DictFormat;
import com.yunxi.scm.framework.excel.core.convert.DictConvert;
/**
* Excel VO
*
* @author
*/
@Data
public class MaterialIndustryExcelVO {
@ExcelProperty("编号")
private Long id;
@ExcelProperty("行业编码")
private String industryCode;
@ExcelProperty("行业名称")
private String industryName;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,26 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料行业 Excel 导出 Request VO参数和 MaterialIndustryPageReqVO 是一致的")
@Data
public class MaterialIndustryExportReqVO {
@Schema(description = "行业编码", example = "55432")
private String industryCode;
@Schema(description = "行业名称", example = "李四")
private String industryName;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,28 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料行业分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialIndustryPageReqVO extends PageParam {
@Schema(description = "行业编码", example = "55432")
private String industryCode;
@Schema(description = "行业名称", example = "李四")
private String industryName;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,19 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料行业 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialIndustryRespVO extends MaterialIndustryBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30219")
private Long id;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
}

@ -0,0 +1,18 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 物料行业更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialIndustryUpdateReqVO extends MaterialIndustryBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30219")
@NotNull(message = "编号不能为空")
private Long id;
}

@ -0,0 +1,102 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialtype;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.*;
import com.yunxi.scm.module.xxjj.convert.materialtype.MaterialTypeConvert;
import com.yunxi.scm.module.xxjj.service.materialtype.MaterialTypeService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.common.pojo.CommonResult;
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialtype.MaterialTypeDO;
@Tag(name = "管理后台 - 物料类型")
@RestController
@RequestMapping("/xxjj/material-type")
@Validated
public class MaterialTypeController {
@Resource
private MaterialTypeService materialTypeService;
@PostMapping("/create")
@Operation(summary = "创建物料类型")
@PreAuthorize("@ss.hasPermission('xxjj:material-type:create')")
public CommonResult<Long> createMaterialType(@Valid @RequestBody MaterialTypeCreateReqVO createReqVO) {
return success(materialTypeService.createMaterialType(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新物料类型")
@PreAuthorize("@ss.hasPermission('xxjj:material-type:update')")
public CommonResult<Boolean> updateMaterialType(@Valid @RequestBody MaterialTypeUpdateReqVO updateReqVO) {
materialTypeService.updateMaterialType(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除物料类型")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('xxjj:material-type:delete')")
public CommonResult<Boolean> deleteMaterialType(@RequestParam("id") Long id) {
materialTypeService.deleteMaterialType(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得物料类型")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('xxjj:material-type:query')")
public CommonResult<MaterialTypeRespVO> getMaterialType(@RequestParam("id") Long id) {
MaterialTypeDO materialType = materialTypeService.getMaterialType(id);
return success(MaterialTypeConvert.INSTANCE.convert(materialType));
}
@GetMapping("/list")
@Operation(summary = "获得物料类型列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('xxjj:material-type:query')")
public CommonResult<List<MaterialTypeRespVO>> getMaterialTypeList(@RequestParam("ids") Collection<Long> ids) {
List<MaterialTypeDO> list = materialTypeService.getMaterialTypeList(ids);
return success(MaterialTypeConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得物料类型分页")
@PreAuthorize("@ss.hasPermission('xxjj:material-type:query')")
public CommonResult<PageResult<MaterialTypeRespVO>> getMaterialTypePage(@Valid MaterialTypePageReqVO pageVO) {
PageResult<MaterialTypeDO> pageResult = materialTypeService.getMaterialTypePage(pageVO);
return success(MaterialTypeConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出物料类型 Excel")
@PreAuthorize("@ss.hasPermission('xxjj:material-type:export')")
@OperateLog(type = EXPORT)
public void exportMaterialTypeExcel(@Valid MaterialTypeExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<MaterialTypeDO> list = materialTypeService.getMaterialTypeList(exportReqVO);
// 导出 Excel
List<MaterialTypeExcelVO> datas = MaterialTypeConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "物料类型.xls", "数据", MaterialTypeExcelVO.class, datas);
}
}

@ -0,0 +1,29 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class MaterialTypeBaseVO {
@Schema(description = "物料类型编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "25254")
@NotNull(message = "物料类型编码不能为空")
private String materialTypeCode;
@Schema(description = "物料类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@NotNull(message = "物料类型名称不能为空")
private String materialTypeName;
@Schema(description = "行业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19922")
@NotNull(message = "行业id不能为空")
private Long materialIndustryId;
}

@ -0,0 +1,12 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "管理后台 - 物料类型创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialTypeCreateReqVO extends MaterialTypeBaseVO {
}

@ -0,0 +1,34 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* Excel VO
*
* @author
*/
@Data
public class MaterialTypeExcelVO {
@ExcelProperty("编号")
private Long id;
@ExcelProperty("物料类型编码")
private String materialTypeCode;
@ExcelProperty("物料类型名称")
private String materialTypeName;
@ExcelProperty("行业id")
private Long materialIndustryId;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,29 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料类型 Excel 导出 Request VO参数和 MaterialTypePageReqVO 是一致的")
@Data
public class MaterialTypeExportReqVO {
@Schema(description = "物料类型编码", example = "25254")
private String materialTypeCode;
@Schema(description = "物料类型名称", example = "赵六")
private String materialTypeName;
@Schema(description = "行业id", example = "19922")
private Long materialIndustryId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,31 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料类型分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialTypePageReqVO extends PageParam {
@Schema(description = "物料类型编码", example = "25254")
private String materialTypeCode;
@Schema(description = "物料类型名称", example = "赵六")
private String materialTypeName;
@Schema(description = "行业id", example = "19922")
private Long materialIndustryId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,19 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料类型 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialTypeRespVO extends MaterialTypeBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15676")
private Long id;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
}

@ -0,0 +1,18 @@
package com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 物料类型更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialTypeUpdateReqVO extends MaterialTypeBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15676")
@NotNull(message = "编号不能为空")
private Long id;
}

@ -0,0 +1,25 @@
package com.yunxi.scm.module.xxjj.controller.app;
import com.yunxi.scm.framework.common.pojo.CommonResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
@Tag(name = "用户 App - Test2")
@RestController
@RequestMapping("/demo/test2")
@Validated
public class AppDemoTest2Controller {
@GetMapping("/get")
@Operation(summary = "获取 test 信息")
public CommonResult<String> get() {
return success("true");
}
}

@ -1,18 +1,21 @@
package com.yunxi.scm.module.demo.convert.material;
package com.yunxi.scm.module.xxjj.convert.material;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialExcelVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialRespVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.yunxi.scm.module.demo.controller.admin.material.vo.*;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.module.xxjj.dal.dataobject.material.MaterialDO;
/**
* Convert
* Convert
*
* @author ccongli
* @author
*/
@Mapper
public interface MaterialConvert {

@ -0,0 +1,37 @@
package com.yunxi.scm.module.xxjj.convert.materialbrand;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandExcelVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandRespVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialbrand.MaterialBrandDO;
/**
* Convert
*
* @author
*/
@Mapper
public interface MaterialBrandConvert {
MaterialBrandConvert INSTANCE = Mappers.getMapper(MaterialBrandConvert.class);
MaterialBrandDO convert(MaterialBrandCreateReqVO bean);
MaterialBrandDO convert(MaterialBrandUpdateReqVO bean);
MaterialBrandRespVO convert(MaterialBrandDO bean);
List<MaterialBrandRespVO> convertList(List<MaterialBrandDO> list);
PageResult<MaterialBrandRespVO> convertPage(PageResult<MaterialBrandDO> page);
List<MaterialBrandExcelVO> convertList02(List<MaterialBrandDO> list);
}

@ -0,0 +1,34 @@
package com.yunxi.scm.module.xxjj.convert.materialcategory;
import com.yunxi.scm.module.xxjj.api.materialcategory.dto.MaterialCategoryRespDTO;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryRespVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategorySimpleRespVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryUpdateReqVO;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialcategory.MaterialCategoryDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface MaterialCategoryConvert {
MaterialCategoryConvert INSTANCE = Mappers.getMapper(MaterialCategoryConvert.class);
List<MaterialCategoryRespVO> convertList(List<MaterialCategoryDO> list);
List<MaterialCategorySimpleRespVO> convertList02(List<MaterialCategoryDO> list);
MaterialCategoryRespVO convert(MaterialCategoryDO bean);
MaterialCategoryDO convert(MaterialCategoryCreateReqVO bean);
MaterialCategoryDO convert(MaterialCategoryUpdateReqVO bean);
List<MaterialCategoryRespDTO> convertList03(List<MaterialCategoryDO> list);
MaterialCategoryRespDTO convert03(MaterialCategoryDO bean);
}

@ -0,0 +1,37 @@
package com.yunxi.scm.module.xxjj.convert.materialindustry;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryExcelVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryRespVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialindustry.MaterialIndustryDO;
/**
* Convert
*
* @author
*/
@Mapper
public interface MaterialIndustryConvert {
MaterialIndustryConvert INSTANCE = Mappers.getMapper(MaterialIndustryConvert.class);
MaterialIndustryDO convert(MaterialIndustryCreateReqVO bean);
MaterialIndustryDO convert(MaterialIndustryUpdateReqVO bean);
MaterialIndustryRespVO convert(MaterialIndustryDO bean);
List<MaterialIndustryRespVO> convertList(List<MaterialIndustryDO> list);
PageResult<MaterialIndustryRespVO> convertPage(PageResult<MaterialIndustryDO> page);
List<MaterialIndustryExcelVO> convertList02(List<MaterialIndustryDO> list);
}

@ -0,0 +1,37 @@
package com.yunxi.scm.module.xxjj.convert.materialtype;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeExcelVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeRespVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialtype.MaterialTypeDO;
/**
* Convert
*
* @author
*/
@Mapper
public interface MaterialTypeConvert {
MaterialTypeConvert INSTANCE = Mappers.getMapper(MaterialTypeConvert.class);
MaterialTypeDO convert(MaterialTypeCreateReqVO bean);
MaterialTypeDO convert(MaterialTypeUpdateReqVO bean);
MaterialTypeRespVO convert(MaterialTypeDO bean);
List<MaterialTypeRespVO> convertList(List<MaterialTypeDO> list);
PageResult<MaterialTypeRespVO> convertPage(PageResult<MaterialTypeDO> page);
List<MaterialTypeExcelVO> convertList02(List<MaterialTypeDO> list);
}

@ -0,0 +1,94 @@
package com.yunxi.scm.module.xxjj.dal.dataobject.material;
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
/**
* DO
*
* @author
*/
@TableName("xxjj_material")
@KeySequence("xxjj_material_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MaterialDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private String materialCode;
/**
*
*/
private String materialName;
/**
*
*/
private String materialPictures;
/**
* id
*/
private Long materialTypeId;
/**
* id
*/
private Long materialIndustryId;
/**
* id
*/
private Long materialBrandId;
/**
*
*/
private String materialEnglishName;
/**
*
*/
private String materialAbbreviation;
/**
*
*/
private String materialBarcode;
/**
*
*/
private String materialSpec;
/**
*
*/
private String materialKind;
/**
* (0 1 2)
*
* {@link TODO common_status }
*/
private String inventoryType;
/**
* (0 1)
*
* {@link TODO common_status }
*/
private String materialState;
/**
* (0 1 2)
*
* {@link TODO common_status }
*/
private String saleState;
/**
* id
*/
private Long materialCategoryId;
}

@ -0,0 +1,50 @@
package com.yunxi.scm.module.xxjj.dal.dataobject.materialbrand;
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
/**
* DO
*
* @author
*/
@TableName("xxjj_material_brand")
@KeySequence("xxjj_material_brand_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MaterialBrandDO extends BaseDO {
/**
* id
*/
@TableId
private Long id;
/**
*
*/
private String brandName;
/**
*
*/
private String brandPic;
/**
*
*/
private Integer brandSort;
/**
*
*/
private String brandDescription;
/**
*
*
* {@link TODO common_status }
*/
private String brandStatus;
}

@ -0,0 +1,48 @@
package com.yunxi.scm.module.xxjj.dal.dataobject.materialcategory;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
*
*
* @author ruoyi
* @author
*/
@TableName("xxjj_material_category")
@KeySequence("xxjj_material_category_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class MaterialCategoryDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
*
*/
private String code;
/**
*
*/
private String name;
/**
* ID
*
* {@link #id}
*/
private Long parentId;
/**
*
*/
private Integer sort;
}

@ -0,0 +1,36 @@
package com.yunxi.scm.module.xxjj.dal.dataobject.materialindustry;
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
/**
* DO
*
* @author
*/
@TableName("xxjj_material_industry")
@KeySequence("xxjj_material_industry_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MaterialIndustryDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private String industryCode;
/**
*
*/
private String industryName;
}

@ -0,0 +1,40 @@
package com.yunxi.scm.module.xxjj.dal.dataobject.materialtype;
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
/**
* DO
*
* @author
*/
@TableName("xxjj_material_type")
@KeySequence("xxjj_material_type_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MaterialTypeDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private String materialTypeCode;
/**
*
*/
private String materialTypeName;
/**
* id
*/
private Long materialIndustryId;
}

@ -0,0 +1,63 @@
package com.yunxi.scm.module.xxjj.dal.mysql.material;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yunxi.scm.module.xxjj.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialPageReqVO;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MaterialMapper extends BaseMapperX<MaterialDO> {
default PageResult<MaterialDO> selectPage(MaterialPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MaterialDO>()
.eqIfPresent(MaterialDO::getMaterialCode, reqVO.getMaterialCode())
.likeIfPresent(MaterialDO::getMaterialName, reqVO.getMaterialName())
.eqIfPresent(MaterialDO::getMaterialPictures, reqVO.getMaterialPictures())
.eqIfPresent(MaterialDO::getMaterialTypeId, reqVO.getMaterialTypeId())
.eqIfPresent(MaterialDO::getMaterialIndustryId, reqVO.getMaterialIndustryId())
.eqIfPresent(MaterialDO::getMaterialBrandId, reqVO.getMaterialBrandId())
.betweenIfPresent(MaterialDO::getCreateTime, reqVO.getCreateTime())
.likeIfPresent(MaterialDO::getMaterialEnglishName, reqVO.getMaterialEnglishName())
.likeIfPresent(MaterialDO::getMaterialAbbreviation, reqVO.getMaterialAbbreviation())
.eqIfPresent(MaterialDO::getMaterialBarcode, reqVO.getMaterialBarcode())
.eqIfPresent(MaterialDO::getMaterialSpec, reqVO.getMaterialSpec())
.eqIfPresent(MaterialDO::getMaterialKind, reqVO.getMaterialKind())
.eqIfPresent(MaterialDO::getInventoryType, reqVO.getInventoryType())
.eqIfPresent(MaterialDO::getMaterialState, reqVO.getMaterialState())
.eqIfPresent(MaterialDO::getSaleState, reqVO.getSaleState())
.eqIfPresent(MaterialDO::getMaterialCategoryId, reqVO.getMaterialCategoryId())
.orderByDesc(MaterialDO::getId));
}
default List<MaterialDO> selectList(MaterialExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MaterialDO>()
.eqIfPresent(MaterialDO::getMaterialCode, reqVO.getMaterialCode())
.likeIfPresent(MaterialDO::getMaterialName, reqVO.getMaterialName())
.eqIfPresent(MaterialDO::getMaterialPictures, reqVO.getMaterialPictures())
.eqIfPresent(MaterialDO::getMaterialTypeId, reqVO.getMaterialTypeId())
.eqIfPresent(MaterialDO::getMaterialIndustryId, reqVO.getMaterialIndustryId())
.eqIfPresent(MaterialDO::getMaterialBrandId, reqVO.getMaterialBrandId())
.betweenIfPresent(MaterialDO::getCreateTime, reqVO.getCreateTime())
.likeIfPresent(MaterialDO::getMaterialEnglishName, reqVO.getMaterialEnglishName())
.likeIfPresent(MaterialDO::getMaterialAbbreviation, reqVO.getMaterialAbbreviation())
.eqIfPresent(MaterialDO::getMaterialBarcode, reqVO.getMaterialBarcode())
.eqIfPresent(MaterialDO::getMaterialSpec, reqVO.getMaterialSpec())
.eqIfPresent(MaterialDO::getMaterialKind, reqVO.getMaterialKind())
.eqIfPresent(MaterialDO::getInventoryType, reqVO.getInventoryType())
.eqIfPresent(MaterialDO::getMaterialState, reqVO.getMaterialState())
.eqIfPresent(MaterialDO::getSaleState, reqVO.getSaleState())
.eqIfPresent(MaterialDO::getMaterialCategoryId, reqVO.getMaterialCategoryId())
.orderByDesc(MaterialDO::getId));
}
}

@ -0,0 +1,39 @@
package com.yunxi.scm.module.xxjj.dal.mysql.materialbrand;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialbrand.MaterialBrandDO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandPageReqVO;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MaterialBrandMapper extends BaseMapperX<MaterialBrandDO> {
default PageResult<MaterialBrandDO> selectPage(MaterialBrandPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MaterialBrandDO>()
.likeIfPresent(MaterialBrandDO::getBrandName, reqVO.getBrandName())
.eqIfPresent(MaterialBrandDO::getBrandSort, reqVO.getBrandSort())
.eqIfPresent(MaterialBrandDO::getBrandStatus, reqVO.getBrandStatus())
.betweenIfPresent(MaterialBrandDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MaterialBrandDO::getId));
}
default List<MaterialBrandDO> selectList(MaterialBrandExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MaterialBrandDO>()
.likeIfPresent(MaterialBrandDO::getBrandName, reqVO.getBrandName())
.eqIfPresent(MaterialBrandDO::getBrandSort, reqVO.getBrandSort())
.eqIfPresent(MaterialBrandDO::getBrandStatus, reqVO.getBrandStatus())
.betweenIfPresent(MaterialBrandDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MaterialBrandDO::getId));
}
}

@ -0,0 +1,27 @@
package com.yunxi.scm.module.xxjj.dal.mysql.materialcategory;
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryListReqVO;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialcategory.MaterialCategoryDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface MaterialCategoryMapper extends BaseMapperX<MaterialCategoryDO> {
default List<MaterialCategoryDO> selectList(MaterialCategoryListReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MaterialCategoryDO>()
.likeIfPresent(MaterialCategoryDO::getName, reqVO.getName()));
}
default MaterialCategoryDO selectByParentIdAndName(Long parentId, String name) {
return selectOne(MaterialCategoryDO::getParentId, parentId, MaterialCategoryDO::getName, name);
}
default Long selectCountByParentId(Long parentId) {
return selectCount(MaterialCategoryDO::getParentId, parentId);
}
}

@ -0,0 +1,37 @@
package com.yunxi.scm.module.xxjj.dal.mysql.materialindustry;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryPageReqVO;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialindustry.MaterialIndustryDO;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MaterialIndustryMapper extends BaseMapperX<MaterialIndustryDO> {
default PageResult<MaterialIndustryDO> selectPage(MaterialIndustryPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MaterialIndustryDO>()
.eqIfPresent(MaterialIndustryDO::getIndustryCode, reqVO.getIndustryCode())
.likeIfPresent(MaterialIndustryDO::getIndustryName, reqVO.getIndustryName())
.betweenIfPresent(MaterialIndustryDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MaterialIndustryDO::getId));
}
default List<MaterialIndustryDO> selectList(MaterialIndustryExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MaterialIndustryDO>()
.eqIfPresent(MaterialIndustryDO::getIndustryCode, reqVO.getIndustryCode())
.likeIfPresent(MaterialIndustryDO::getIndustryName, reqVO.getIndustryName())
.betweenIfPresent(MaterialIndustryDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MaterialIndustryDO::getId));
}
}

@ -0,0 +1,39 @@
package com.yunxi.scm.module.xxjj.dal.mysql.materialtype;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialtype.MaterialTypeDO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypePageReqVO;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MaterialTypeMapper extends BaseMapperX<MaterialTypeDO> {
default PageResult<MaterialTypeDO> selectPage(MaterialTypePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MaterialTypeDO>()
.eqIfPresent(MaterialTypeDO::getMaterialTypeCode, reqVO.getMaterialTypeCode())
.likeIfPresent(MaterialTypeDO::getMaterialTypeName, reqVO.getMaterialTypeName())
.eqIfPresent(MaterialTypeDO::getMaterialIndustryId, reqVO.getMaterialIndustryId())
.betweenIfPresent(MaterialTypeDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MaterialTypeDO::getId));
}
default List<MaterialTypeDO> selectList(MaterialTypeExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MaterialTypeDO>()
.eqIfPresent(MaterialTypeDO::getMaterialTypeCode, reqVO.getMaterialTypeCode())
.likeIfPresent(MaterialTypeDO::getMaterialTypeName, reqVO.getMaterialTypeName())
.eqIfPresent(MaterialTypeDO::getMaterialIndustryId, reqVO.getMaterialIndustryId())
.betweenIfPresent(MaterialTypeDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MaterialTypeDO::getId));
}
}

@ -0,0 +1,24 @@
package com.yunxi.scm.module.xxjj.enums;
import com.yunxi.scm.framework.common.exception.ErrorCode;
public interface ErrorCodeConstants {
// ========== 物料行业 TODO 补充编号 ==========
ErrorCode MATERIAL_INDUSTRY_NOT_EXISTS = new ErrorCode(1002025002, "物料行业不存在");
// ========== 物料类型 TODO 补充编号 ==========
ErrorCode MATERIAL_TYPE_NOT_EXISTS = new ErrorCode(1002025003, "物料类型不存在");
// ========== 物料 TODO 补充编号 ==========
ErrorCode MATERIAL_NOT_EXISTS = new ErrorCode(1002025004, "物料不存在");
// ========== 物料品牌 TODO 补充编号 ==========
ErrorCode MATERIAL_BRAND_NOT_EXISTS = new ErrorCode(1002025005, "物料品牌不存在");
// ========== 部门模块 1002004000 ==========
ErrorCode MaterialCategory_NAME_DUPLICATE = new ErrorCode(1002004000, "已经存在该名字的部门");
ErrorCode MaterialCategory_PARENT_NOT_EXITS = new ErrorCode(1002004001,"父级部门不存在");
ErrorCode MaterialCategory_NOT_FOUND = new ErrorCode(1002004002, "当前部门不存在");
ErrorCode MaterialCategory_EXITS_CHILDREN = new ErrorCode(1002004003, "存在子部门,无法删除");
ErrorCode MaterialCategory_PARENT_ERROR = new ErrorCode(1002004004, "不能设置自己为父部门");
ErrorCode MaterialCategory_EXISTS_USER = new ErrorCode(1002004005, "部门中存在员工,无法删除");
ErrorCode MaterialCategory_NOT_ENABLE = new ErrorCode(1002004006, "部门({})不处于开启状态,不允许选择");
ErrorCode MaterialCategory_PARENT_IS_CHILD = new ErrorCode(1002004007, "不能设置自己的子部门为父部门");
}

@ -0,0 +1,74 @@
package com.yunxi.scm.module.xxjj.service.material;
import java.util.*;
import javax.validation.*;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialPageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialUpdateReqVO;
/**
* Service
*
* @author
*/
public interface MaterialService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMaterial(@Valid MaterialCreateReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMaterial(@Valid MaterialUpdateReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMaterial(Long id);
/**
*
*
* @param id
* @return
*/
MaterialDO getMaterial(Long id);
/**
*
*
* @param ids
* @return
*/
List<MaterialDO> getMaterialList(Collection<Long> ids);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MaterialDO> getMaterialPage(MaterialPageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<MaterialDO> getMaterialList(MaterialExportReqVO exportReqVO);
}

@ -1,24 +1,27 @@
package com.yunxi.scm.module.demo.service.material;
package com.yunxi.scm.module.xxjj.service.material;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialPageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialUpdateReqVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.yunxi.scm.module.demo.controller.admin.material.vo.*;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.demo.convert.material.MaterialConvert;
import com.yunxi.scm.module.demo.dal.mysql.material.MaterialMapper;
import com.yunxi.scm.module.xxjj.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.module.xxjj.convert.material.MaterialConvert;
import com.yunxi.scm.module.xxjj.dal.mysql.material.MaterialMapper;
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.yunxi.scm.module.demo.enums.ErrorCodeConstants.*;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
/**
* Service
* Service
*
* @author ccongli
* @author
*/
@Service
@Validated

@ -0,0 +1,74 @@
package com.yunxi.scm.module.xxjj.service.materialbrand;
import java.util.*;
import javax.validation.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandPageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandUpdateReqVO;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialbrand.MaterialBrandDO;
/**
* Service
*
* @author
*/
public interface MaterialBrandService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMaterialBrand(@Valid MaterialBrandCreateReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMaterialBrand(@Valid MaterialBrandUpdateReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMaterialBrand(Long id);
/**
*
*
* @param id
* @return
*/
MaterialBrandDO getMaterialBrand(Long id);
/**
*
*
* @param ids
* @return
*/
List<MaterialBrandDO> getMaterialBrandList(Collection<Long> ids);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MaterialBrandDO> getMaterialBrandPage(MaterialBrandPageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<MaterialBrandDO> getMaterialBrandList(MaterialBrandExportReqVO exportReqVO);
}

@ -0,0 +1,85 @@
package com.yunxi.scm.module.xxjj.service.materialbrand;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandPageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandUpdateReqVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialbrand.MaterialBrandDO;
import com.yunxi.scm.module.xxjj.convert.materialbrand.MaterialBrandConvert;
import com.yunxi.scm.module.xxjj.dal.mysql.materialbrand.MaterialBrandMapper;
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class MaterialBrandServiceImpl implements MaterialBrandService {
@Resource
private MaterialBrandMapper materialBrandMapper;
@Override
public Long createMaterialBrand(MaterialBrandCreateReqVO createReqVO) {
// 插入
MaterialBrandDO materialBrand = MaterialBrandConvert.INSTANCE.convert(createReqVO);
materialBrandMapper.insert(materialBrand);
// 返回
return materialBrand.getId();
}
@Override
public void updateMaterialBrand(MaterialBrandUpdateReqVO updateReqVO) {
// 校验存在
validateMaterialBrandExists(updateReqVO.getId());
// 更新
MaterialBrandDO updateObj = MaterialBrandConvert.INSTANCE.convert(updateReqVO);
materialBrandMapper.updateById(updateObj);
}
@Override
public void deleteMaterialBrand(Long id) {
// 校验存在
validateMaterialBrandExists(id);
// 删除
materialBrandMapper.deleteById(id);
}
private void validateMaterialBrandExists(Long id) {
if (materialBrandMapper.selectById(id) == null) {
throw exception(MATERIAL_BRAND_NOT_EXISTS);
}
}
@Override
public MaterialBrandDO getMaterialBrand(Long id) {
return materialBrandMapper.selectById(id);
}
@Override
public List<MaterialBrandDO> getMaterialBrandList(Collection<Long> ids) {
return materialBrandMapper.selectBatchIds(ids);
}
@Override
public PageResult<MaterialBrandDO> getMaterialBrandPage(MaterialBrandPageReqVO pageReqVO) {
return materialBrandMapper.selectPage(pageReqVO);
}
@Override
public List<MaterialBrandDO> getMaterialBrandList(MaterialBrandExportReqVO exportReqVO) {
return materialBrandMapper.selectList(exportReqVO);
}
}

@ -0,0 +1,105 @@
package com.yunxi.scm.module.xxjj.service.materialcategory;
import cn.hutool.core.collection.CollUtil;
import com.yunxi.scm.framework.common.util.collection.CollectionUtils;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryListReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryUpdateReqVO;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialcategory.MaterialCategoryDO;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* Service
*
* @author
*/
public interface MaterialCategoryService {
/**
*
*/
//void initLocalCache();
/**
*
*
* @param reqVO
* @return
*/
Long createMaterialCategory(MaterialCategoryCreateReqVO reqVO);
/**
*
*
* @param reqVO
*/
void updateMaterialCategory(MaterialCategoryUpdateReqVO reqVO);
/**
*
*
* @param id
*/
void deleteMaterialCategory(Long id);
/**
*
*
* @param reqVO VO
* @return
*/
List<MaterialCategoryDO> getMaterialCategoryList(MaterialCategoryListReqVO reqVO);
/**
*
*
* @param parentId
* @param recursive
* @return
*/
//List<MaterialCategoryDO> getMaterialCategoryListByParentIdFromCache(Long parentId, boolean recursive);
/**
*
*
* @param ids
* @return
*/
List<MaterialCategoryDO> getMaterialCategoryList(Collection<Long> ids);
/**
* Map
*
* @param ids
* @return Map
*/
default Map<Long, MaterialCategoryDO> getMaterialCategoryMap(Collection<Long> ids) {
if (CollUtil.isEmpty(ids)) {
return Collections.emptyMap();
}
List<MaterialCategoryDO> list = getMaterialCategoryList(ids);
return CollectionUtils.convertMap(list, MaterialCategoryDO::getId);
}
/**
*
*
* @param id
* @return
*/
MaterialCategoryDO getMaterialCategory(Long id);
/**
*
* 1.
* 2.
*
* @param ids
*/
//void validateMaterialCategoryList(Collection<Long> ids);
}

@ -0,0 +1,175 @@
package com.yunxi.scm.module.xxjj.service.materialcategory;
import com.yunxi.scm.framework.common.enums.CommonStatusEnum;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryListReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryUpdateReqVO;
import com.yunxi.scm.module.xxjj.convert.materialcategory.MaterialCategoryConvert;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialcategory.MaterialCategoryDO;
import com.yunxi.scm.module.xxjj.dal.mysql.materialcategory.MaterialCategoryMapper;
import com.yunxi.scm.module.xxjj.enums.materialcategory.MaterialCategoryIdEnum;
import com.google.common.collect.Multimap;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.*;
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
@Slf4j
public class MaterialCategoryServiceImpl implements MaterialCategoryService {
/**
*
* key {@link MaterialCategoryDO#getId()}
*
* volatile
*/
@Getter
private volatile Map<Long, MaterialCategoryDO> materialCategoryCache;
/**
*
* key {@link MaterialCategoryDO#getParentId()}
* value:
*
* volatile
*/
@Getter
private volatile Multimap<Long, MaterialCategoryDO> parentMaterialCategoryCache;
@Resource
private MaterialCategoryMapper materialCategoryMapper;
@Override
public Long createMaterialCategory(MaterialCategoryCreateReqVO reqVO) {
// 校验正确性
if (reqVO.getParentId() == null) {
reqVO.setParentId(MaterialCategoryIdEnum.ROOT.getId());
}
//validateForCreateOrUpdate(null, reqVO.getParentId(), reqVO.getName());
// 插入部门
MaterialCategoryDO materialCategory = MaterialCategoryConvert.INSTANCE.convert(reqVO);
materialCategoryMapper.insert(materialCategory);
return materialCategory.getId();
}
@Override
public void updateMaterialCategory(MaterialCategoryUpdateReqVO reqVO) {
// 校验正确性
if (reqVO.getParentId() == null) {
reqVO.setParentId(MaterialCategoryIdEnum.ROOT.getId());
}
//validateForCreateOrUpdate(reqVO.getId(), reqVO.getParentId(), reqVO.getName());
// 更新部门
MaterialCategoryDO updateObj = MaterialCategoryConvert.INSTANCE.convert(reqVO);
materialCategoryMapper.updateById(updateObj);
}
@Override
public void deleteMaterialCategory(Long id) {
// 校验是否存在
validateMaterialCategoryExists(id);
// 校验是否有子部门
if (materialCategoryMapper.selectCountByParentId(id) > 0) {
throw exception(MaterialCategory_EXITS_CHILDREN);
}
// 删除部门
materialCategoryMapper.deleteById(id);
}
@Override
public List<MaterialCategoryDO> getMaterialCategoryList(MaterialCategoryListReqVO reqVO) {
return materialCategoryMapper.selectList(reqVO);
}
/*private void validateForCreateOrUpdate(Long id, Long parentId, String name) {
// 校验自己存在
validateMaterialCategoryExists(id);
// 校验父部门的有效性
validateParentMaterialCategoryEnable(id, parentId);
// 校验部门名的唯一性
validateMaterialCategoryNameUnique(id, parentId, name);
}*/
/*private void validateParentMaterialCategoryEnable(Long id, Long parentId) {
if (parentId == null || MaterialCategoryIdEnum.ROOT.getId().equals(parentId)) {
return;
}
// 不能设置自己为父部门
if (parentId.equals(id)) {
throw exception(MaterialCategory_PARENT_ERROR);
}
// 父岗位不存在
MaterialCategoryDO materialCategory = materialCategoryMapper.selectById(parentId);
if (materialCategory == null) {
throw exception(MaterialCategory_PARENT_NOT_EXITS);
}
// 父部门不能是原来的子部门
List<MaterialCategoryDO> children = getMaterialCategoryListByParentIdFromCache(id, true);
if (children.stream().anyMatch(materialCategory1 -> materialCategory1.getId().equals(parentId))) {
throw exception(MaterialCategory_PARENT_IS_CHILD);
}
}*/
private void validateMaterialCategoryExists(Long id) {
if (id == null) {
return;
}
MaterialCategoryDO materialCategory = materialCategoryMapper.selectById(id);
if (materialCategory == null) {
throw exception(MaterialCategory_NOT_FOUND);
}
}
private void validateMaterialCategoryNameUnique(Long id, Long parentId, String name) {
MaterialCategoryDO menu = materialCategoryMapper.selectByParentIdAndName(parentId, name);
if (menu == null) {
return;
}
// 如果 id 为空,说明不用比较是否为相同 id 的岗位
if (id == null) {
throw exception(MaterialCategory_NAME_DUPLICATE);
}
if (!menu.getId().equals(id)) {
throw exception(MaterialCategory_NAME_DUPLICATE);
}
}
@Override
public List<MaterialCategoryDO> getMaterialCategoryList(Collection<Long> ids) {
return materialCategoryMapper.selectBatchIds(ids);
}
@Override
public MaterialCategoryDO getMaterialCategory(Long id) {
return materialCategoryMapper.selectById(id);
}
/*@Override
public void validateMaterialCategoryList(Collection<Long> ids) {
if (CollUtil.isEmpty(ids)) {
return;
}
// 获得科室信息
Map<Long, MaterialCategoryDO> materialCategoryMap = getMaterialCategoryMap(ids);
// 校验
ids.forEach(id -> {
MaterialCategoryDO materialCategory = materialCategoryMap.get(id);
if (materialCategory == null) {
throw exception(MaterialCategory_NOT_FOUND);
}
});
}*/
}

@ -0,0 +1,74 @@
package com.yunxi.scm.module.xxjj.service.materialindustry;
import java.util.*;
import javax.validation.*;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.*;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryExportReqVO;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialindustry.MaterialIndustryDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryPageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryUpdateReqVO;
/**
* Service
*
* @author
*/
public interface MaterialIndustryService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMaterialIndustry(@Valid MaterialIndustryCreateReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMaterialIndustry(@Valid MaterialIndustryUpdateReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMaterialIndustry(Long id);
/**
*
*
* @param id
* @return
*/
MaterialIndustryDO getMaterialIndustry(Long id);
/**
*
*
* @param ids
* @return
*/
List<MaterialIndustryDO> getMaterialIndustryList(Collection<Long> ids);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MaterialIndustryDO> getMaterialIndustryPage(MaterialIndustryPageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<MaterialIndustryDO> getMaterialIndustryList(MaterialIndustryExportReqVO exportReqVO);
}

@ -0,0 +1,84 @@
package com.yunxi.scm.module.xxjj.service.materialindustry;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryPageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryUpdateReqVO;
import com.yunxi.scm.module.xxjj.convert.materialindustry.MaterialIndustryConvert;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialindustry.MaterialIndustryDO;
import com.yunxi.scm.module.xxjj.dal.mysql.materialindustry.MaterialIndustryMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class MaterialIndustryServiceImpl implements MaterialIndustryService {
@Resource
private MaterialIndustryMapper materialIndustryMapper;
@Override
public Long createMaterialIndustry(MaterialIndustryCreateReqVO createReqVO) {
// 插入
MaterialIndustryDO materialIndustry = MaterialIndustryConvert.INSTANCE.convert(createReqVO);
materialIndustryMapper.insert(materialIndustry);
// 返回
return materialIndustry.getId();
}
@Override
public void updateMaterialIndustry(MaterialIndustryUpdateReqVO updateReqVO) {
// 校验存在
validateMaterialIndustryExists(updateReqVO.getId());
// 更新
MaterialIndustryDO updateObj = MaterialIndustryConvert.INSTANCE.convert(updateReqVO);
materialIndustryMapper.updateById(updateObj);
}
@Override
public void deleteMaterialIndustry(Long id) {
// 校验存在
validateMaterialIndustryExists(id);
// 删除
materialIndustryMapper.deleteById(id);
}
private void validateMaterialIndustryExists(Long id) {
if (materialIndustryMapper.selectById(id) == null) {
throw exception(MATERIAL_INDUSTRY_NOT_EXISTS);
}
}
@Override
public MaterialIndustryDO getMaterialIndustry(Long id) {
return materialIndustryMapper.selectById(id);
}
@Override
public List<MaterialIndustryDO> getMaterialIndustryList(Collection<Long> ids) {
return materialIndustryMapper.selectBatchIds(ids);
}
@Override
public PageResult<MaterialIndustryDO> getMaterialIndustryPage(MaterialIndustryPageReqVO pageReqVO) {
return materialIndustryMapper.selectPage(pageReqVO);
}
@Override
public List<MaterialIndustryDO> getMaterialIndustryList(MaterialIndustryExportReqVO exportReqVO) {
return materialIndustryMapper.selectList(exportReqVO);
}
}

@ -0,0 +1,74 @@
package com.yunxi.scm.module.xxjj.service.materialtype;
import java.util.*;
import javax.validation.*;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialtype.MaterialTypeDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypePageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeUpdateReqVO;
/**
* Service
*
* @author
*/
public interface MaterialTypeService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMaterialType(@Valid MaterialTypeCreateReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMaterialType(@Valid MaterialTypeUpdateReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMaterialType(Long id);
/**
*
*
* @param id
* @return
*/
MaterialTypeDO getMaterialType(Long id);
/**
*
*
* @param ids
* @return
*/
List<MaterialTypeDO> getMaterialTypeList(Collection<Long> ids);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MaterialTypeDO> getMaterialTypePage(MaterialTypePageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<MaterialTypeDO> getMaterialTypeList(MaterialTypeExportReqVO exportReqVO);
}

@ -0,0 +1,86 @@
package com.yunxi.scm.module.xxjj.service.materialtype;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypePageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeUpdateReqVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialtype.MaterialTypeDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.convert.materialtype.MaterialTypeConvert;
import com.yunxi.scm.module.xxjj.dal.mysql.materialtype.MaterialTypeMapper;
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class MaterialTypeServiceImpl implements MaterialTypeService {
@Resource
private MaterialTypeMapper materialTypeMapper;
@Override
public Long createMaterialType(MaterialTypeCreateReqVO createReqVO) {
// 插入
MaterialTypeDO materialType = MaterialTypeConvert.INSTANCE.convert(createReqVO);
materialTypeMapper.insert(materialType);
// 返回
return materialType.getId();
}
@Override
public void updateMaterialType(MaterialTypeUpdateReqVO updateReqVO) {
// 校验存在
validateMaterialTypeExists(updateReqVO.getId());
// 更新
MaterialTypeDO updateObj = MaterialTypeConvert.INSTANCE.convert(updateReqVO);
materialTypeMapper.updateById(updateObj);
}
@Override
public void deleteMaterialType(Long id) {
// 校验存在
validateMaterialTypeExists(id);
// 删除
materialTypeMapper.deleteById(id);
}
private void validateMaterialTypeExists(Long id) {
if (materialTypeMapper.selectById(id) == null) {
throw exception(MATERIAL_TYPE_NOT_EXISTS);
}
}
@Override
public MaterialTypeDO getMaterialType(Long id) {
return materialTypeMapper.selectById(id);
}
@Override
public List<MaterialTypeDO> getMaterialTypeList(Collection<Long> ids) {
return materialTypeMapper.selectBatchIds(ids);
}
@Override
public PageResult<MaterialTypeDO> getMaterialTypePage(MaterialTypePageReqVO pageReqVO) {
return materialTypeMapper.selectPage(pageReqVO);
}
@Override
public List<MaterialTypeDO> getMaterialTypeList(MaterialTypeExportReqVO exportReqVO) {
return materialTypeMapper.selectList(exportReqVO);
}
}

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunxi.scm.module.xxjj.dal.mysql.material.MaterialMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunxi.scm.module.xxjj.dal.mysql.materialbrand.MaterialBrandMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunxi.scm.module.xxjj.dal.mysql.materialindustry.MaterialIndustryMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunxi.scm.module.xxjj.dal.mysql.materialtype.MaterialTypeMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -1,37 +1,36 @@
package com.yunxi.scm.module.demo.service.material;
package com.yunxi.scm.module.xxjj.service.material;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialPageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.MaterialUpdateReqVO;
import com.yunxi.scm.module.xxjj.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.module.xxjj.dal.mysql.material.MaterialMapper;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.demo.controller.admin.material.vo.*;
import com.yunxi.scm.module.demo.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.module.demo.dal.mysql.material.MaterialMapper;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import javax.annotation.Resource;
import org.springframework.context.annotation.Import;
import java.util.*;
import java.time.LocalDateTime;
import static cn.hutool.core.util.RandomUtil.*;
import static com.yunxi.scm.module.demo.enums.ErrorCodeConstants.*;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
/**
* {@link MaterialServiceImpl}
*
* @author ccongli
* @author
*/
@Import(MaterialServiceImpl.class)
public class MaterialServiceImplTest extends BaseDbUnitTest {
@ -110,29 +109,33 @@ public class MaterialServiceImplTest extends BaseDbUnitTest {
public void testGetMaterialPage() {
// mock 数据
MaterialDO dbMaterial = randomPojo(MaterialDO.class, o -> { // 等会查询到
o.setName(null);
o.setStatus(null);
o.setType(null);
o.setCategory(null);
o.setMaterialCode(null);
o.setMaterialName(null);
o.setMaterialPictures(null);
o.setMaterialTypeId(null);
o.setMaterialIndustryId(null);
o.setCreateTime(null);
});
materialMapper.insert(dbMaterial);
// 测试 name 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setName(null)));
// 测试 status 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setStatus(null)));
// 测试 type 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setType(null)));
// 测试 category 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setCategory(null)));
// 测试 materialCode 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setMaterialCode(null)));
// 测试 materialName 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setMaterialName(null)));
// 测试 materialPictures 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setMaterialPictures(null)));
// 测试 materialTypeId 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setMaterialTypeId(null)));
// 测试 materialIndustryId 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setMaterialIndustryId(null)));
// 测试 createTime 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setCreateTime(null)));
// 准备参数
MaterialPageReqVO reqVO = new MaterialPageReqVO();
reqVO.setName(null);
reqVO.setStatus(null);
reqVO.setType(null);
reqVO.setCategory(null);
reqVO.setMaterialCode(null);
reqVO.setMaterialName(null);
reqVO.setMaterialPictures(null);
reqVO.setMaterialTypeId(null);
reqVO.setMaterialIndustryId(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
@ -148,29 +151,33 @@ public class MaterialServiceImplTest extends BaseDbUnitTest {
public void testGetMaterialList() {
// mock 数据
MaterialDO dbMaterial = randomPojo(MaterialDO.class, o -> { // 等会查询到
o.setName(null);
o.setStatus(null);
o.setType(null);
o.setCategory(null);
o.setMaterialCode(null);
o.setMaterialName(null);
o.setMaterialPictures(null);
o.setMaterialTypeId(null);
o.setMaterialIndustryId(null);
o.setCreateTime(null);
});
materialMapper.insert(dbMaterial);
// 测试 name 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setName(null)));
// 测试 status 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setStatus(null)));
// 测试 type 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setType(null)));
// 测试 category 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setCategory(null)));
// 测试 materialCode 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setMaterialCode(null)));
// 测试 materialName 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setMaterialName(null)));
// 测试 materialPictures 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setMaterialPictures(null)));
// 测试 materialTypeId 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setMaterialTypeId(null)));
// 测试 materialIndustryId 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setMaterialIndustryId(null)));
// 测试 createTime 不匹配
materialMapper.insert(cloneIgnoreId(dbMaterial, o -> o.setCreateTime(null)));
// 准备参数
MaterialExportReqVO reqVO = new MaterialExportReqVO();
reqVO.setName(null);
reqVO.setStatus(null);
reqVO.setType(null);
reqVO.setCategory(null);
reqVO.setMaterialCode(null);
reqVO.setMaterialName(null);
reqVO.setMaterialPictures(null);
reqVO.setMaterialTypeId(null);
reqVO.setMaterialIndustryId(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用

@ -0,0 +1,174 @@
package com.yunxi.scm.module.xxjj.service.materialbrand;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandPageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.MaterialBrandUpdateReqVO;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialbrand.MaterialBrandDO;
import com.yunxi.scm.module.xxjj.dal.mysql.materialbrand.MaterialBrandMapper;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
import java.util.*;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
import static org.junit.jupiter.api.Assertions.*;
/**
* {@link MaterialBrandServiceImpl}
*
* @author
*/
@Import(MaterialBrandServiceImpl.class)
public class MaterialBrandServiceImplTest extends BaseDbUnitTest {
@Resource
private MaterialBrandServiceImpl materialBrandService;
@Resource
private MaterialBrandMapper materialBrandMapper;
@Test
public void testCreateMaterialBrand_success() {
// 准备参数
MaterialBrandCreateReqVO reqVO = randomPojo(MaterialBrandCreateReqVO.class);
// 调用
Long materialBrandId = materialBrandService.createMaterialBrand(reqVO);
// 断言
assertNotNull(materialBrandId);
// 校验记录的属性是否正确
MaterialBrandDO materialBrand = materialBrandMapper.selectById(materialBrandId);
assertPojoEquals(reqVO, materialBrand);
}
@Test
public void testUpdateMaterialBrand_success() {
// mock 数据
MaterialBrandDO dbMaterialBrand = randomPojo(MaterialBrandDO.class);
materialBrandMapper.insert(dbMaterialBrand);// @Sql: 先插入出一条存在的数据
// 准备参数
MaterialBrandUpdateReqVO reqVO = randomPojo(MaterialBrandUpdateReqVO.class, o -> {
o.setId(dbMaterialBrand.getId()); // 设置更新的 ID
});
// 调用
materialBrandService.updateMaterialBrand(reqVO);
// 校验是否更新正确
MaterialBrandDO materialBrand = materialBrandMapper.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, materialBrand);
}
@Test
public void testUpdateMaterialBrand_notExists() {
// 准备参数
MaterialBrandUpdateReqVO reqVO = randomPojo(MaterialBrandUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> materialBrandService.updateMaterialBrand(reqVO), MATERIAL_BRAND_NOT_EXISTS);
}
@Test
public void testDeleteMaterialBrand_success() {
// mock 数据
MaterialBrandDO dbMaterialBrand = randomPojo(MaterialBrandDO.class);
materialBrandMapper.insert(dbMaterialBrand);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbMaterialBrand.getId();
// 调用
materialBrandService.deleteMaterialBrand(id);
// 校验数据不存在了
assertNull(materialBrandMapper.selectById(id));
}
@Test
public void testDeleteMaterialBrand_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> materialBrandService.deleteMaterialBrand(id), MATERIAL_BRAND_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetMaterialBrandPage() {
// mock 数据
MaterialBrandDO dbMaterialBrand = randomPojo(MaterialBrandDO.class, o -> { // 等会查询到
o.setBrandName(null);
o.setBrandSort(null);
o.setBrandStatus(null);
o.setCreateTime(null);
});
materialBrandMapper.insert(dbMaterialBrand);
// 测试 brandName 不匹配
materialBrandMapper.insert(cloneIgnoreId(dbMaterialBrand, o -> o.setBrandName(null)));
// 测试 brandSort 不匹配
materialBrandMapper.insert(cloneIgnoreId(dbMaterialBrand, o -> o.setBrandSort(null)));
// 测试 brandStatus 不匹配
materialBrandMapper.insert(cloneIgnoreId(dbMaterialBrand, o -> o.setBrandStatus(null)));
// 测试 createTime 不匹配
materialBrandMapper.insert(cloneIgnoreId(dbMaterialBrand, o -> o.setCreateTime(null)));
// 准备参数
MaterialBrandPageReqVO reqVO = new MaterialBrandPageReqVO();
reqVO.setBrandName(null);
reqVO.setBrandSort(null);
reqVO.setBrandStatus(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<MaterialBrandDO> pageResult = materialBrandService.getMaterialBrandPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbMaterialBrand, pageResult.getList().get(0));
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetMaterialBrandList() {
// mock 数据
MaterialBrandDO dbMaterialBrand = randomPojo(MaterialBrandDO.class, o -> { // 等会查询到
o.setBrandName(null);
o.setBrandSort(null);
o.setBrandStatus(null);
o.setCreateTime(null);
});
materialBrandMapper.insert(dbMaterialBrand);
// 测试 brandName 不匹配
materialBrandMapper.insert(cloneIgnoreId(dbMaterialBrand, o -> o.setBrandName(null)));
// 测试 brandSort 不匹配
materialBrandMapper.insert(cloneIgnoreId(dbMaterialBrand, o -> o.setBrandSort(null)));
// 测试 brandStatus 不匹配
materialBrandMapper.insert(cloneIgnoreId(dbMaterialBrand, o -> o.setBrandStatus(null)));
// 测试 createTime 不匹配
materialBrandMapper.insert(cloneIgnoreId(dbMaterialBrand, o -> o.setCreateTime(null)));
// 准备参数
MaterialBrandExportReqVO reqVO = new MaterialBrandExportReqVO();
reqVO.setBrandName(null);
reqVO.setBrandSort(null);
reqVO.setBrandStatus(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
List<MaterialBrandDO> list = materialBrandService.getMaterialBrandList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbMaterialBrand, list.get(0));
}
}

@ -0,0 +1,166 @@
package com.yunxi.scm.module.xxjj.service.materialindustry;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryPageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.MaterialIndustryUpdateReqVO;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialindustry.MaterialIndustryDO;
import com.yunxi.scm.module.xxjj.dal.mysql.materialindustry.MaterialIndustryMapper;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
import java.util.*;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
import static org.junit.jupiter.api.Assertions.*;
/**
* {@link MaterialIndustryServiceImpl}
*
* @author
*/
@Import(MaterialIndustryServiceImpl.class)
public class MaterialIndustryServiceImplTest extends BaseDbUnitTest {
@Resource
private MaterialIndustryServiceImpl materialIndustryService;
@Resource
private MaterialIndustryMapper materialIndustryMapper;
@Test
public void testCreateMaterialIndustry_success() {
// 准备参数
MaterialIndustryCreateReqVO reqVO = randomPojo(MaterialIndustryCreateReqVO.class);
// 调用
Long materialIndustryId = materialIndustryService.createMaterialIndustry(reqVO);
// 断言
assertNotNull(materialIndustryId);
// 校验记录的属性是否正确
MaterialIndustryDO materialIndustry = materialIndustryMapper.selectById(materialIndustryId);
assertPojoEquals(reqVO, materialIndustry);
}
@Test
public void testUpdateMaterialIndustry_success() {
// mock 数据
MaterialIndustryDO dbMaterialIndustry = randomPojo(MaterialIndustryDO.class);
materialIndustryMapper.insert(dbMaterialIndustry);// @Sql: 先插入出一条存在的数据
// 准备参数
MaterialIndustryUpdateReqVO reqVO = randomPojo(MaterialIndustryUpdateReqVO.class, o -> {
o.setId(dbMaterialIndustry.getId()); // 设置更新的 ID
});
// 调用
materialIndustryService.updateMaterialIndustry(reqVO);
// 校验是否更新正确
MaterialIndustryDO materialIndustry = materialIndustryMapper.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, materialIndustry);
}
@Test
public void testUpdateMaterialIndustry_notExists() {
// 准备参数
MaterialIndustryUpdateReqVO reqVO = randomPojo(MaterialIndustryUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> materialIndustryService.updateMaterialIndustry(reqVO), MATERIAL_INDUSTRY_NOT_EXISTS);
}
@Test
public void testDeleteMaterialIndustry_success() {
// mock 数据
MaterialIndustryDO dbMaterialIndustry = randomPojo(MaterialIndustryDO.class);
materialIndustryMapper.insert(dbMaterialIndustry);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbMaterialIndustry.getId();
// 调用
materialIndustryService.deleteMaterialIndustry(id);
// 校验数据不存在了
assertNull(materialIndustryMapper.selectById(id));
}
@Test
public void testDeleteMaterialIndustry_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> materialIndustryService.deleteMaterialIndustry(id), MATERIAL_INDUSTRY_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetMaterialIndustryPage() {
// mock 数据
MaterialIndustryDO dbMaterialIndustry = randomPojo(MaterialIndustryDO.class, o -> { // 等会查询到
o.setIndustryCode(null);
o.setIndustryName(null);
o.setCreateTime(null);
});
materialIndustryMapper.insert(dbMaterialIndustry);
// 测试 industryCode 不匹配
materialIndustryMapper.insert(cloneIgnoreId(dbMaterialIndustry, o -> o.setIndustryCode(null)));
// 测试 industryName 不匹配
materialIndustryMapper.insert(cloneIgnoreId(dbMaterialIndustry, o -> o.setIndustryName(null)));
// 测试 createTime 不匹配
materialIndustryMapper.insert(cloneIgnoreId(dbMaterialIndustry, o -> o.setCreateTime(null)));
// 准备参数
MaterialIndustryPageReqVO reqVO = new MaterialIndustryPageReqVO();
reqVO.setIndustryCode(null);
reqVO.setIndustryName(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<MaterialIndustryDO> pageResult = materialIndustryService.getMaterialIndustryPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbMaterialIndustry, pageResult.getList().get(0));
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetMaterialIndustryList() {
// mock 数据
MaterialIndustryDO dbMaterialIndustry = randomPojo(MaterialIndustryDO.class, o -> { // 等会查询到
o.setIndustryCode(null);
o.setIndustryName(null);
o.setCreateTime(null);
});
materialIndustryMapper.insert(dbMaterialIndustry);
// 测试 industryCode 不匹配
materialIndustryMapper.insert(cloneIgnoreId(dbMaterialIndustry, o -> o.setIndustryCode(null)));
// 测试 industryName 不匹配
materialIndustryMapper.insert(cloneIgnoreId(dbMaterialIndustry, o -> o.setIndustryName(null)));
// 测试 createTime 不匹配
materialIndustryMapper.insert(cloneIgnoreId(dbMaterialIndustry, o -> o.setCreateTime(null)));
// 准备参数
MaterialIndustryExportReqVO reqVO = new MaterialIndustryExportReqVO();
reqVO.setIndustryCode(null);
reqVO.setIndustryName(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
List<MaterialIndustryDO> list = materialIndustryService.getMaterialIndustryList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbMaterialIndustry, list.get(0));
}
}

@ -0,0 +1,174 @@
package com.yunxi.scm.module.xxjj.service.materialtype;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeExportReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypePageReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.MaterialTypeUpdateReqVO;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialtype.MaterialTypeDO;
import com.yunxi.scm.module.xxjj.dal.mysql.materialtype.MaterialTypeMapper;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
import java.util.*;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
import static org.junit.jupiter.api.Assertions.*;
/**
* {@link MaterialTypeServiceImpl}
*
* @author
*/
@Import(MaterialTypeServiceImpl.class)
public class MaterialTypeServiceImplTest extends BaseDbUnitTest {
@Resource
private MaterialTypeServiceImpl materialTypeService;
@Resource
private MaterialTypeMapper materialTypeMapper;
@Test
public void testCreateMaterialType_success() {
// 准备参数
MaterialTypeCreateReqVO reqVO = randomPojo(MaterialTypeCreateReqVO.class);
// 调用
Long materialTypeId = materialTypeService.createMaterialType(reqVO);
// 断言
assertNotNull(materialTypeId);
// 校验记录的属性是否正确
MaterialTypeDO materialType = materialTypeMapper.selectById(materialTypeId);
assertPojoEquals(reqVO, materialType);
}
@Test
public void testUpdateMaterialType_success() {
// mock 数据
MaterialTypeDO dbMaterialType = randomPojo(MaterialTypeDO.class);
materialTypeMapper.insert(dbMaterialType);// @Sql: 先插入出一条存在的数据
// 准备参数
MaterialTypeUpdateReqVO reqVO = randomPojo(MaterialTypeUpdateReqVO.class, o -> {
o.setId(dbMaterialType.getId()); // 设置更新的 ID
});
// 调用
materialTypeService.updateMaterialType(reqVO);
// 校验是否更新正确
MaterialTypeDO materialType = materialTypeMapper.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, materialType);
}
@Test
public void testUpdateMaterialType_notExists() {
// 准备参数
MaterialTypeUpdateReqVO reqVO = randomPojo(MaterialTypeUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> materialTypeService.updateMaterialType(reqVO), MATERIAL_TYPE_NOT_EXISTS);
}
@Test
public void testDeleteMaterialType_success() {
// mock 数据
MaterialTypeDO dbMaterialType = randomPojo(MaterialTypeDO.class);
materialTypeMapper.insert(dbMaterialType);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbMaterialType.getId();
// 调用
materialTypeService.deleteMaterialType(id);
// 校验数据不存在了
assertNull(materialTypeMapper.selectById(id));
}
@Test
public void testDeleteMaterialType_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> materialTypeService.deleteMaterialType(id), MATERIAL_TYPE_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetMaterialTypePage() {
// mock 数据
MaterialTypeDO dbMaterialType = randomPojo(MaterialTypeDO.class, o -> { // 等会查询到
o.setMaterialTypeCode(null);
o.setMaterialTypeName(null);
o.setMaterialIndustryId(null);
o.setCreateTime(null);
});
materialTypeMapper.insert(dbMaterialType);
// 测试 materialTypeCode 不匹配
materialTypeMapper.insert(cloneIgnoreId(dbMaterialType, o -> o.setMaterialTypeCode(null)));
// 测试 materialTypeName 不匹配
materialTypeMapper.insert(cloneIgnoreId(dbMaterialType, o -> o.setMaterialTypeName(null)));
// 测试 materialIndustryId 不匹配
materialTypeMapper.insert(cloneIgnoreId(dbMaterialType, o -> o.setMaterialIndustryId(null)));
// 测试 createTime 不匹配
materialTypeMapper.insert(cloneIgnoreId(dbMaterialType, o -> o.setCreateTime(null)));
// 准备参数
MaterialTypePageReqVO reqVO = new MaterialTypePageReqVO();
reqVO.setMaterialTypeCode(null);
reqVO.setMaterialTypeName(null);
reqVO.setMaterialIndustryId(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<MaterialTypeDO> pageResult = materialTypeService.getMaterialTypePage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbMaterialType, pageResult.getList().get(0));
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetMaterialTypeList() {
// mock 数据
MaterialTypeDO dbMaterialType = randomPojo(MaterialTypeDO.class, o -> { // 等会查询到
o.setMaterialTypeCode(null);
o.setMaterialTypeName(null);
o.setMaterialIndustryId(null);
o.setCreateTime(null);
});
materialTypeMapper.insert(dbMaterialType);
// 测试 materialTypeCode 不匹配
materialTypeMapper.insert(cloneIgnoreId(dbMaterialType, o -> o.setMaterialTypeCode(null)));
// 测试 materialTypeName 不匹配
materialTypeMapper.insert(cloneIgnoreId(dbMaterialType, o -> o.setMaterialTypeName(null)));
// 测试 materialIndustryId 不匹配
materialTypeMapper.insert(cloneIgnoreId(dbMaterialType, o -> o.setMaterialIndustryId(null)));
// 测试 createTime 不匹配
materialTypeMapper.insert(cloneIgnoreId(dbMaterialType, o -> o.setCreateTime(null)));
// 准备参数
MaterialTypeExportReqVO reqVO = new MaterialTypeExportReqVO();
reqVO.setMaterialTypeCode(null);
reqVO.setMaterialTypeName(null);
reqVO.setMaterialIndustryId(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
List<MaterialTypeDO> list = materialTypeService.getMaterialTypeList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbMaterialType, list.get(0));
}
}

@ -48,6 +48,12 @@
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.yunxi.scm</groupId>
<artifactId>yunxi-module-xxjj-biz</artifactId>
<version>${revision}</version>
</dependency>
<!-- 数据报表 -->
<!-- <dependency>-->
<!-- <groupId>com.yunxi.scm</groupId>-->

@ -0,0 +1,54 @@
import request from '@/utils/request'
// 创建物料
export function createMaterial(data) {
return request({
url: '/xxjj/material/create',
method: 'post',
data: data
})
}
// 更新物料
export function updateMaterial(data) {
return request({
url: '/xxjj/material/update',
method: 'put',
data: data
})
}
// 删除物料
export function deleteMaterial(id) {
return request({
url: '/xxjj/material/delete?id=' + id,
method: 'delete'
})
}
// 获得物料
export function getMaterial(id) {
return request({
url: '/xxjj/material/get?id=' + id,
method: 'get'
})
}
// 获得物料分页
export function getMaterialPage(query) {
return request({
url: '/xxjj/material/page',
method: 'get',
params: query
})
}
// 导出物料 Excel
export function exportMaterialExcel(query) {
return request({
url: '/xxjj/material/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

@ -0,0 +1,54 @@
import request from '@/utils/request'
// 创建物料
export function createMaterial(data) {
return request({
url: '/xxjj/material/create',
method: 'post',
data: data
})
}
// 更新物料
export function updateMaterial(data) {
return request({
url: '/xxjj/material/update',
method: 'put',
data: data
})
}
// 删除物料
export function deleteMaterial(id) {
return request({
url: '/xxjj/material/delete?id=' + id,
method: 'delete'
})
}
// 获得物料
export function getMaterial(id) {
return request({
url: '/xxjj/material/get?id=' + id,
method: 'get'
})
}
// 获得物料分页
export function getMaterialPage(query) {
return request({
url: '/xxjj/material/page',
method: 'get',
params: query
})
}
// 导出物料 Excel
export function exportMaterialExcel(query) {
return request({
url: '/xxjj/material/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

@ -0,0 +1,60 @@
import request from '@/utils/request'
// 查询物料分类列表
export function listMaterialCategory(query) {
return request({
url: '/xxjj/materialCategory/list',
method: 'get',
params: query
})
}
// 查询物料分类列表(排除节点)
export function listMaterialCategoryExcludeChild(materialCategoryId) {
return request({
url: '/xxjj/materialCategory/list/exclude/' + materialCategoryId,
method: 'get'
})
}
// 查询物料分类详细
export function getMaterialCategory(materialCategoryId) {
return request({
url: '/xxjj/materialCategory/get?id=' + materialCategoryId,
method: 'get'
})
}
// 获取物料分类精简信息列表
export function listSimpleMaterialCategorys() {
return request({
url: '/xxjj/materialCategory/list-all-simple',
method: 'get'
})
}
// 新增物料分类
export function addMaterialCategory(data) {
return request({
url: '/xxjj/materialCategory/create',
method: 'post',
data: data
})
}
// 修改物料分类
export function updateMaterialCategory(data) {
return request({
url: '/xxjj/materialCategory/update',
method: 'put',
data: data
})
}
// 删除物料分类
export function delMaterialCategory(id) {
return request({
url: '/xxjj/materialCategory/delete?id=' + id,
method: 'delete'
})
}

@ -0,0 +1,54 @@
import request from '@/utils/request'
// 创建物料行业
export function createMaterialIndustry(data) {
return request({
url: '/xxjj/material-industry/create',
method: 'post',
data: data
})
}
// 更新物料行业
export function updateMaterialIndustry(data) {
return request({
url: '/xxjj/material-industry/update',
method: 'put',
data: data
})
}
// 删除物料行业
export function deleteMaterialIndustry(id) {
return request({
url: '/xxjj/material-industry/delete?id=' + id,
method: 'delete'
})
}
// 获得物料行业
export function getMaterialIndustry(id) {
return request({
url: '/xxjj/material-industry/get?id=' + id,
method: 'get'
})
}
// 获得物料行业分页
export function getMaterialIndustryPage(query) {
return request({
url: '/xxjj/material-industry/page',
method: 'get',
params: query
})
}
// 导出物料行业 Excel
export function exportMaterialIndustryExcel(query) {
return request({
url: '/xxjj/material-industry/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

@ -0,0 +1,54 @@
import request from '@/utils/request'
// 创建物料类型
export function createMaterialType(data) {
return request({
url: '/xxjj/material-type/create',
method: 'post',
data: data
})
}
// 更新物料类型
export function updateMaterialType(data) {
return request({
url: '/xxjj/material-type/update',
method: 'put',
data: data
})
}
// 删除物料类型
export function deleteMaterialType(id) {
return request({
url: '/xxjj/material-type/delete?id=' + id,
method: 'delete'
})
}
// 获得物料类型
export function getMaterialType(id) {
return request({
url: '/xxjj/material-type/get?id=' + id,
method: 'get'
})
}
// 获得物料类型分页
export function getMaterialTypePage(query) {
return request({
url: '/xxjj/material-type/page',
method: 'get',
params: query
})
}
// 导出物料类型 Excel
export function exportMaterialTypeExcel(query) {
return request({
url: '/xxjj/material-type/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

@ -0,0 +1,60 @@
import request from '@/utils/request'
// 查询物料分类列表
export function listMaterialCategory(query) {
return request({
url: '/xxjj/materialCategory/list',
method: 'get',
params: query
})
}
// 查询物料分类列表(排除节点)
export function listMaterialCategoryExcludeChild(materialCategoryId) {
return request({
url: '/xxjj/materialCategory/list/exclude/' + materialCategoryId,
method: 'get'
})
}
// 查询物料分类详细
export function getMaterialCategory(materialCategoryId) {
return request({
url: '/xxjj/materialCategory/get?id=' + materialCategoryId,
method: 'get'
})
}
// 获取物料分类精简信息列表
export function listSimpleMaterialCategorys() {
return request({
url: '/xxjj/materialCategory/list-all-simple',
method: 'get'
})
}
// 新增物料分类
export function addMaterialCategory(data) {
return request({
url: '/xxjj/materialCategory/create',
method: 'post',
data: data
})
}
// 修改物料分类
export function updateMaterialCategory(data) {
return request({
url: '/xxjj/materialCategory/update',
method: 'put',
data: data
})
}
// 删除物料分类
export function delMaterialCategory(id) {
return request({
url: '/xxjj/materialCategory/delete?id=' + id,
method: 'delete'
})
}

@ -0,0 +1,54 @@
import request from '@/utils/request'
// 创建物料行业
export function createMaterialIndustry(data) {
return request({
url: '/xxjj/material-industry/create',
method: 'post',
data: data
})
}
// 更新物料行业
export function updateMaterialIndustry(data) {
return request({
url: '/xxjj/material-industry/update',
method: 'put',
data: data
})
}
// 删除物料行业
export function deleteMaterialIndustry(id) {
return request({
url: '/xxjj/material-industry/delete?id=' + id,
method: 'delete'
})
}
// 获得物料行业
export function getMaterialIndustry(id) {
return request({
url: '/xxjj/material-industry/get?id=' + id,
method: 'get'
})
}
// 获得物料行业分页
export function getMaterialIndustryPage(query) {
return request({
url: '/xxjj/material-industry/page',
method: 'get',
params: query
})
}
// 导出物料行业 Excel
export function exportMaterialIndustryExcel(query) {
return request({
url: '/xxjj/material-industry/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

@ -0,0 +1,54 @@
import request from '@/utils/request'
// 创建物料类型
export function createMaterialType(data) {
return request({
url: '/xxjj/material-type/create',
method: 'post',
data: data
})
}
// 更新物料类型
export function updateMaterialType(data) {
return request({
url: '/xxjj/material-type/update',
method: 'put',
data: data
})
}
// 删除物料类型
export function deleteMaterialType(id) {
return request({
url: '/xxjj/material-type/delete?id=' + id,
method: 'delete'
})
}
// 获得物料类型
export function getMaterialType(id) {
return request({
url: '/xxjj/material-type/get?id=' + id,
method: 'get'
})
}
// 获得物料类型分页
export function getMaterialTypePage(query) {
return request({
url: '/xxjj/material-type/page',
method: 'get',
params: query
})
}
// 导出物料类型 Excel
export function exportMaterialTypeExcel(query) {
return request({
url: '/xxjj/material-type/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save