Browse Source

物料开发完

tanzhongran 3 years ago
parent
commit
b1108a1bcb
25 changed files with 1143 additions and 18 deletions
  1. 0 0
      abi-cloud-qr-platform-server/changelist/mysql/ddl.sql
  2. 0 1
      abi-cloud-qr-platform-server/changelist/mysql/dml.sql
  3. 117 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/MaterialController.java
  4. 59 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/BaseBrand.java
  5. 62 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/BaseMaterial.java
  6. 16 17
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/QrPackage.java
  7. 15 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/BaseBrandMapper.java
  8. 28 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/BaseMaterialMapper.java
  9. 45 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/MaterialVO.java
  10. 37 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/AddMaterialReq.java
  11. 21 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/DisableMaterialReq.java
  12. 21 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/EnableMaterialReq.java
  13. 21 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/GetMaterialReq.java
  14. 15 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListBrandForSelectReq.java
  15. 15 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListMaterialForSelectReq.java
  16. 32 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListMaterialReq.java
  17. 34 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/UpdateMaterialReq.java
  18. 48 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/GetMaterialRes.java
  19. 46 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListBrandForSelectRes.java
  20. 41 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListMaterialForSelectRes.java
  21. 68 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListMaterialRes.java
  22. 64 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/MaterialService.java
  23. 257 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/MaterialServiceImpl.java
  24. 25 0
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseBrandMapper.xml
  25. 56 0
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseMaterialMapper.xml

+ 0 - 0
abi-cloud-qr-platform-server/changelist/mysql/ddl.sql


+ 0 - 1
abi-cloud-qr-platform-server/changelist/mysql/dml.sql

@@ -1 +0,0 @@
-

+ 117 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/MaterialController.java

@@ -0,0 +1,117 @@
+package com.abi.qms.platform.controller.console;
+
+import com.abi.qms.platform.dto.req.*;
+import com.abi.qms.platform.dto.res.GetMaterialRes;
+import com.abi.qms.platform.dto.res.ListBrandForSelectRes;
+import com.abi.qms.platform.dto.res.ListMaterialForSelectRes;
+import com.abi.qms.platform.dto.res.ListMaterialRes;
+import com.abi.qms.platform.service.MaterialService;
+import com.abi.task.common.api.base.BaseResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * <p>
+ * 物料管理
+ * </p>
+ *
+ * @author Andy.Tan
+ */
+@Slf4j
+@RestController
+@RequestMapping("material")
+@Api(tags = "物料管理")
+public class MaterialController {
+
+    @Autowired
+    private MaterialService materialService;
+
+
+    @ApiOperation("新增物料")
+        @PostMapping("addMaterial")
+    public BaseResponse addMaterial(@Validated @RequestBody AddMaterialReq addMaterialReq) throws Exception{
+        //新增物料
+        materialService.addMaterial(addMaterialReq);
+        //包装出参
+        return BaseResponse.create();
+    }
+
+    @ApiOperation("编辑物料")
+    @PostMapping("updateMaterial")
+    public BaseResponse updateMaterial(@Validated @RequestBody UpdateMaterialReq updateMaterialReq) throws Exception{
+        //编辑物料
+        materialService.updateMaterial(updateMaterialReq);
+        //包装出参
+        return BaseResponse.create();
+    }
+
+    @ApiOperation("分页查询物料")
+    @GetMapping("listMaterial")
+    public BaseResponse<ListMaterialRes> listMaterial(@Validated ListMaterialReq listMaterialReq) throws Exception{
+        //分页查询物料
+        ListMaterialRes result = materialService.listMaterial(listMaterialReq);
+        //包装出参
+        return BaseResponse.create(result);
+    }
+
+    @ApiOperation("查询物料明细")
+    @GetMapping("getMaterial")
+    public BaseResponse<GetMaterialRes> getMaterial(@Validated GetMaterialReq getMaterialReq) throws Exception{
+        //查询物料明细
+        GetMaterialRes  result = materialService.getMaterial(getMaterialReq);
+        //包装出参
+        return BaseResponse.create(result);
+    }
+
+    @ApiOperation("物料启用")
+    @PostMapping("enableMaterial")
+    public BaseResponse enableMaterial(@Validated @RequestBody EnableMaterialReq enableMaterialReq) throws Exception{
+        //物料启用
+        materialService.enableMaterial(enableMaterialReq);
+        //包装出参
+        return BaseResponse.create();
+    }
+
+    @ApiOperation("物料禁用")
+    @PostMapping("disableMaterial")
+    public BaseResponse disableMaterial(@Validated @RequestBody DisableMaterialReq disableMaterialReq) throws Exception{
+        //物料禁用
+        materialService.disableMaterial(disableMaterialReq);
+        //包装出参
+        return BaseResponse.create();
+    }
+
+    @ApiOperation("下拉选择物料列表")
+    @GetMapping("listMaterialForSelect")
+    public BaseResponse<ListMaterialForSelectRes> listMaterialForSelect(@Validated ListMaterialForSelectReq listMaterialForSelectReq) throws Exception{
+        //下拉选择物料列表
+        ListMaterialForSelectRes  result = materialService.listMaterialForSelect(listMaterialForSelectReq);
+        //包装出参
+        return BaseResponse.create(result);
+    }
+
+    @ApiOperation("下拉选择品牌列表")
+    @GetMapping("listBrandForSelect")
+    public BaseResponse<ListBrandForSelectRes> listBrandForSelect(@Validated ListBrandForSelectReq listBrandForSelectReq) throws Exception{
+        //下拉选择品牌列表
+        ListBrandForSelectRes  result = materialService.listBrandForSelect(listBrandForSelectReq);
+        //包装出参
+        return BaseResponse.create(result);
+    }
+
+}
+
+
+
+
+
+
+
+

+ 59 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/BaseBrand.java

@@ -0,0 +1,59 @@
+package com.abi.qms.platform.dao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 品牌表
+ * </p>
+ *
+ * @author Andy.Tan
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(name="品牌表对象", description="品牌表")
+public class BaseBrand {
+
+	@Schema(name = "id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+	@Schema(name = "品牌code")
+    private String brandCode;
+
+	@Schema(name = "品牌名称")
+    private String brandName;
+
+	@Schema(name = "品牌层级")
+    private Integer brandLevel;
+
+	@Schema(name = "上级品牌code")
+    private String parentBrandCode;
+
+	@Schema(name = "上级品牌名称")
+    private String parentBrandName;
+
+	@Schema(name = "创建时间")
+    private LocalDateTime createTime;
+
+	@Schema(name = "创建人id")
+    private Long createBy;
+
+	@Schema(name = "修改时间")
+    private LocalDateTime updateTime;
+
+	@Schema(name = "修改人id")
+    private Long updateBy;
+
+	@Schema(name = "是否删除")
+    private Integer isDelete;
+
+
+
+}

+ 62 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/BaseMaterial.java

@@ -0,0 +1,62 @@
+package com.abi.qms.platform.dao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 物料信息表
+ * </p>
+ *
+ * @author Andy.Tan
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(name="物料信息表对象", description="物料信息表")
+public class BaseMaterial {
+
+	@Schema(name = "id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+	@Schema(name = "物料号")
+    private String materialCode;
+
+	@Schema(name = "物料名称")
+    private String materialName;
+
+	@Schema(name = "物料类型 1-瓶&罐盖 2-成品酒")
+    private Integer materialType;
+
+	@Schema(name = "品牌")
+    private String brandCode;
+
+	@Schema(name = "描述")
+    private String description;
+
+	@Schema(name = "是否有效 0-无效 1-有效")
+    private Integer valid;
+
+	@Schema(name = "创建时间")
+    private LocalDateTime createTime;
+
+	@Schema(name = "创建人id")
+    private Long createBy;
+
+	@Schema(name = "修改时间")
+    private LocalDateTime updateTime;
+
+	@Schema(name = "修改人id")
+    private Long updateBy;
+
+	@Schema(name = "是否删除")
+    private Integer isDelete;
+
+
+
+}

+ 16 - 17
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/QrPackage.java

@@ -1,7 +1,6 @@
 package com.abi.qms.platform.dao.entity;
 
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -19,49 +18,49 @@ import java.time.LocalDateTime;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="码包对象", description="码包信息")
+@Schema(name="码包对象", description="码包信息")
 public class QrPackage implements Serializable {
 
-	@ApiModelProperty("码包id")
+	@Schema(name = "码包id")
 	private Long id;
 
-	@ApiModelProperty("部门id")
+	@Schema(name = "部门id")
 	private Long deptId;
 
-	@ApiModelProperty("箱码幅面id")
+	@Schema(name = "箱码幅面id")
 	private Long boxCodeFormatId;
 
-	@ApiModelProperty("批次号")
+	@Schema(name = "批次号")
 	private String batchNumber;
 
-	@ApiModelProperty("码包名称")
+	@Schema(name = "码包名称")
 	private String name;
 
-	@ApiModelProperty("码数量")
+	@Schema(name = "码数量")
 	private Long qrNumber;
 
-	@ApiModelProperty("申请状态 0-待审核 1-审核通过 2-审核拒绝")
+	@Schema(name = "申请状态 0-待审核 1-审核通过 2-审核拒绝")
 	private Integer applyStatus;
 
-	@ApiModelProperty("生成状态 0-未生成 1-生成中 2-已生成 3-失败")
+	@Schema(name = "生成状态 0-未生成 1-生成中 2-已生成 3-失败")
 	private Integer generateStatus;
 
-	@ApiModelProperty("下载路径")
+	@Schema(name = "下载路径")
 	private String downloadPath;
 
-	@ApiModelProperty(value = "创建时间")
+	@Schema(name = "创建时间")
 	private LocalDateTime createTime;
 
-	@ApiModelProperty(value = "创建人id")
+	@Schema(name = "创建人id")
 	private Long createBy;
 
-	@ApiModelProperty(value = "修改时间")
+	@Schema(name = "修改时间")
 	private LocalDateTime updateTime;
 
-	@ApiModelProperty(value = "修改人id")
+	@Schema(name = "修改人id")
 	private Long updateBy;
 
-	@ApiModelProperty("是否删除")
+	@Schema(name = "是否删除")
 	private Integer isDelete;
 
 }

+ 15 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/BaseBrandMapper.java

@@ -0,0 +1,15 @@
+package com.abi.qms.platform.dao.mapper;
+
+import com.abi.qms.platform.dao.entity.BaseBrand;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 品牌表 Mapper 接口
+ * </p>
+ *
+ * @author Andy.Tan
+ */
+public interface BaseBrandMapper extends BaseMapper<BaseBrand> {
+
+}

+ 28 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/BaseMaterialMapper.java

@@ -0,0 +1,28 @@
+package com.abi.qms.platform.dao.mapper;
+
+import com.abi.qms.platform.dao.entity.BaseMaterial;
+import com.abi.qms.platform.dao.vo.result.MaterialVO;
+import com.abi.qms.platform.dto.req.ListMaterialReq;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 物料信息表 Mapper 接口
+ * </p>
+ *
+ * @author Andy.Tan
+ */
+public interface BaseMaterialMapper extends BaseMapper<BaseMaterial> {
+
+    /**
+     * 分页查询物料
+     *
+     * @param page
+     * @param req
+     * @return
+     */
+    IPage<MaterialVO> listMaterial(IPage page, @Param("req") ListMaterialReq req);
+
+}

+ 45 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/MaterialVO.java

@@ -0,0 +1,45 @@
+package com.abi.qms.platform.dao.vo.result;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 物料VO
+ * 
+ * @author AndyTan
+ * @date 2021-05-18
+ */
+@Data
+@Schema(name="物料VO对象", description="物料VO对象")
+public class MaterialVO {
+
+    @Schema(name = "id")
+    private Long id;
+
+    @Schema(name = "物料号")
+    private String materialCode;
+
+    @Schema(name = "物料名称")
+    private String materialName;
+
+    @Schema(name = "物料类型 1-瓶&罐盖 2-成品酒")
+    private Integer materialType;
+
+    @Schema(name = "品牌")
+    private String brandCode;
+
+    @Schema(name = "描述")
+    private String description;
+
+    @Schema(name = "是否有效 0-无效 1-有效")
+    private Integer valid;
+
+    @Schema(name = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(name = "修改时间")
+    private LocalDateTime updateTime;
+
+}

+ 37 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/AddMaterialReq.java

@@ -0,0 +1,37 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 新增物料入参
+ */
+@Data
+@Schema
+public class AddMaterialReq implements Serializable {
+
+    @NotEmpty(message = "物料号为空")
+    @Schema(name = "物料号")
+    private String materialCode;
+
+    @NotEmpty(message = "物料名称为空")
+    @Schema(name = "物料名称")
+    private String materialName;
+
+    @NotNull
+    @Schema(name = "物料类型 1-瓶&罐盖 2-成品酒")
+    private Integer materialType;
+
+    @NotEmpty(message = "品牌为空")
+    @Schema(name = "品牌")
+    private String brandCode;
+
+    @Schema(name = "描述")
+    private String description;
+
+}

+ 21 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/DisableMaterialReq.java

@@ -0,0 +1,21 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 物料入参
+ */
+@Data
+@Schema
+public class DisableMaterialReq implements Serializable {
+
+    @NotNull(message = "ID为空")
+    @Schema(name = "ids")
+    private List<Long> ids;
+
+}

+ 21 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/EnableMaterialReq.java

@@ -0,0 +1,21 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 物料入参
+ */
+@Data
+@Schema
+public class EnableMaterialReq implements Serializable {
+
+    @NotNull(message = "为空")
+    @Schema(name = "ids")
+    private List<Long> ids;
+
+}

+ 21 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/GetMaterialReq.java

@@ -0,0 +1,21 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 查询物料明细入参
+ */
+@Data
+@Schema
+public class GetMaterialReq implements Serializable {
+
+    @NotNull(message = "ID为空")
+    @Schema(name = "id")
+    private Long id;
+
+}

+ 15 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListBrandForSelectReq.java

@@ -0,0 +1,15 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 下拉选择品牌列表入参
+ */
+@Data
+@Schema
+public class ListBrandForSelectReq implements Serializable {
+
+}

+ 15 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListMaterialForSelectReq.java

@@ -0,0 +1,15 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 下拉选择物料列表入参
+ */
+@Data
+@Schema
+public class ListMaterialForSelectReq implements Serializable {
+
+}

+ 32 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListMaterialReq.java

@@ -0,0 +1,32 @@
+package com.abi.qms.platform.dto.req;
+
+import com.abi.task.common.api.base.PageReq;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 分页查询物料入参
+ */
+@Data
+@Schema
+public class ListMaterialReq extends PageReq implements Serializable {
+
+    @Schema(name = "物料号")
+    private String materialCode;
+
+    @Schema(name = "物料名称")
+    private String materialName;
+
+    @Schema(name = "物料类型 1-瓶&罐盖 2-成品酒")
+    private Integer materialType;
+
+    @Schema(name = "品牌")
+    private String brandCode;
+
+    @Schema(name = "是否有效 0-无效 1-有效")
+    private Integer valid;
+
+}

+ 34 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/UpdateMaterialReq.java

@@ -0,0 +1,34 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 编辑物料入参
+ */
+@Data
+@Schema
+public class UpdateMaterialReq implements Serializable {
+
+    @Schema(name = "id")
+    private Long id;
+
+    @Schema(name = "物料名称")
+    private String materialName;
+
+    @Schema(name = "物料类型 1-瓶&罐盖 2-成品酒")
+    private Integer materialType;
+
+    @Schema(name = "品牌")
+    private String brandCode;
+
+    @Schema(name = "描述")
+    private String description;
+
+    @Schema(name = "是否有效 0-无效 1-有效")
+    private Integer valid;
+
+
+}

+ 48 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/GetMaterialRes.java

@@ -0,0 +1,48 @@
+package com.abi.qms.platform.dto.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 查询物料明细出参
+ */
+@Data
+@Schema
+public class GetMaterialRes implements Serializable {
+
+    @Schema(name = "id")
+    private Long id;
+
+    @Schema(name = "物料号")
+    private String materialCode;
+
+    @Schema(name = "物料名称")
+    private String materialName;
+
+    @Schema(name = "物料类型 1-瓶&罐盖 2-成品酒")
+    private Integer materialType;
+
+    @Schema(name = "品牌")
+    private String brandCode;
+
+    @Schema(name = "描述")
+    private String description;
+
+    @Schema(name = "是否有效 0-无效 1-有效")
+    private Integer valid;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "修改时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+}

+ 46 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListBrandForSelectRes.java

@@ -0,0 +1,46 @@
+package com.abi.qms.platform.dto.res;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 下拉选择品牌列表出参
+ */
+@Data
+@Schema
+public class ListBrandForSelectRes implements Serializable {
+
+    @Schema(name = "品牌列表")
+    List<BrandBean> brandBeanList;
+
+    /**
+    * 品牌bean
+    */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @Schema(name = "ListBrandForSelectRes_BrandBean")
+    public static class BrandBean implements Serializable {
+
+        @Schema(name = "品牌code")
+        private String brandCode;
+
+        @Schema(name = "品牌名称")
+        private String brandName;
+
+        @Schema(name = "子品牌列表")
+        List<BrandBean> subBrandBeanList;
+
+    }
+
+}

+ 41 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListMaterialForSelectRes.java

@@ -0,0 +1,41 @@
+package com.abi.qms.platform.dto.res;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 下拉选择物料列表出参
+ */
+@Data
+@Schema
+public class ListMaterialForSelectRes implements Serializable {
+
+    @Schema(name = "物料列表")
+    List<MaterialBean> materialBeanList;
+
+    /**
+    * 物流bean
+    */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @Schema(name = "ListMaterialForSelectRes_MaterialBean")
+    public static class MaterialBean implements Serializable {
+
+        @Schema(name = "id")
+        private Long id;
+
+        @Schema(name = "物料名称")
+        private String materialName;
+
+    }
+
+}

+ 68 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListMaterialRes.java

@@ -0,0 +1,68 @@
+package com.abi.qms.platform.dto.res;
+
+import com.abi.task.common.api.base.PageResp;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author:Andy.Tan
+ * @Description: 分页查询物料出参
+ */
+@Data
+@Schema
+public class ListMaterialRes extends PageResp implements Serializable {
+
+    @Schema(name = "物料列表")
+    private List<MaterialBean> materialBeanList;
+
+    /**
+     * 物料bean
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "ListMaterialRes_Material")
+    public static class MaterialBean implements Serializable {
+
+        @Schema(name = "id")
+        private Long id;
+
+        @Schema(name = "物料号")
+        private String materialCode;
+
+        @Schema(name = "物料名称")
+        private String materialName;
+
+        @Schema(name = "物料类型 1-瓶&罐盖 2-成品酒")
+        private Integer materialType;
+
+        @Schema(name = "品牌")
+        private String brandCode;
+
+        @Schema(name = "描述")
+        private String description;
+
+        @Schema(name = "是否有效 0-无效 1-有效")
+        private Integer valid;
+
+        @Schema(name = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
+
+        @Schema(name = "修改时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime updateTime;
+
+    }
+}

+ 64 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/MaterialService.java

@@ -0,0 +1,64 @@
+package com.abi.qms.platform.service;
+
+
+import com.abi.qms.platform.dto.req.*;
+import com.abi.qms.platform.dto.res.GetMaterialRes;
+import com.abi.qms.platform.dto.res.ListBrandForSelectRes;
+import com.abi.qms.platform.dto.res.ListMaterialForSelectRes;
+import com.abi.qms.platform.dto.res.ListMaterialRes;
+
+/**
+ * <p>
+ * 物料管理
+ * </p>
+ *
+ * @author Andy.Tan
+ */
+public interface MaterialService{
+
+
+    /**
+     * 新增物料
+     * @param addMaterialReq
+     * @throws Exception
+     */
+    void addMaterial(AddMaterialReq addMaterialReq);
+
+    /**
+     * 编辑物料
+     * @param updateMaterialReq
+     */
+    void updateMaterial(UpdateMaterialReq updateMaterialReq);
+
+    /**
+     * 分页查询物料
+     * @param listMaterialReq
+     * @return
+     */
+    ListMaterialRes listMaterial(ListMaterialReq listMaterialReq);
+
+    /**
+     * 查询物料明细
+     * @param getMaterialReq
+     * @return
+     */
+    GetMaterialRes getMaterial(GetMaterialReq getMaterialReq);
+
+    /**
+     * 物料启用
+     * @param enableMaterialReq
+     */
+    void enableMaterial(EnableMaterialReq enableMaterialReq);
+
+    /**
+     * 物料禁用
+     * @param disableMaterialReq
+     */
+    void disableMaterial(DisableMaterialReq disableMaterialReq);
+
+    ListMaterialForSelectRes listMaterialForSelect(ListMaterialForSelectReq listMaterialForSelectReq) throws Exception;
+
+    ListBrandForSelectRes listBrandForSelect(ListBrandForSelectReq listBrandForSelectReq) throws Exception;
+
+
+}

+ 257 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/MaterialServiceImpl.java

@@ -0,0 +1,257 @@
+package com.abi.qms.platform.service.impl;
+
+import com.abi.qms.platform.dao.entity.BaseBrand;
+import com.abi.qms.platform.dao.entity.BaseMaterial;
+import com.abi.qms.platform.dao.enums.ValidEnum;
+import com.abi.qms.platform.dao.mapper.BaseBrandMapper;
+import com.abi.qms.platform.dao.mapper.BaseMaterialMapper;
+import com.abi.qms.platform.dao.vo.result.MaterialVO;
+import com.abi.qms.platform.dto.req.*;
+import com.abi.qms.platform.dto.res.GetMaterialRes;
+import com.abi.qms.platform.dto.res.ListBrandForSelectRes;
+import com.abi.qms.platform.dto.res.ListMaterialForSelectRes;
+import com.abi.qms.platform.dto.res.ListMaterialRes;
+import com.abi.qms.platform.infrastructure.util.AssertUtil;
+import com.abi.qms.platform.infrastructure.util.PageUtil;
+import com.abi.qms.platform.service.MaterialService;
+import com.abi.task.common.api.exception.BusinessException;
+import com.abi.task.common.utils.PojoConverterUtils;
+import com.baomidou.mybatisplus.core.conditions.query.Query;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.commons.collections4.CollectionUtils;
+import org.redisson.misc.Hash;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 物料
+ * </p>
+ *
+ * @author Andy.Tan
+ */
+@Service
+public class MaterialServiceImpl implements MaterialService {
+
+    @Autowired
+    private BaseMaterialMapper baseMaterialMapper;
+
+    @Autowired
+    private BaseBrandMapper baseBrandMapper;
+
+    /**
+     * 新增物料
+     */
+    @Override
+    public void addMaterial(AddMaterialReq req){
+        //校验入参
+        //查询是否存在相同名称的物料
+        QueryWrapper<BaseMaterial> materialQw = new QueryWrapper<>();
+        materialQw.eq("material_name",req.getMaterialName());
+        List<BaseMaterial> materialList = baseMaterialMapper.selectList(materialQw);
+        if(CollectionUtils.isNotEmpty(materialList)){
+            throw new BusinessException("物料"+req.getMaterialName()+"已存在,请勿重复创建");
+        }
+        //查询是否存在物料号
+        materialQw = new QueryWrapper<>();
+        materialQw.eq("material_code",req.getMaterialCode());
+        materialList = baseMaterialMapper.selectList(materialQw);
+        if(CollectionUtils.isNotEmpty(materialList)){
+            throw new BusinessException("物料号"+req.getMaterialCode()+"已存在,请勿重复创建");
+        }
+
+        //1-新增
+        BaseMaterial material = new BaseMaterial();
+        material.setMaterialCode(req.getMaterialCode());
+        material.setMaterialName(req.getMaterialName());
+        material.setMaterialType(req.getMaterialType());
+        material.setBrandCode(req.getBrandCode());
+        material.setDescription(req.getDescription());
+        baseMaterialMapper.insert(material);
+
+    }
+
+    /**
+     * 编辑物料
+     */
+    @Override
+    public void updateMaterial(UpdateMaterialReq req){
+
+        //1-查询物料
+        BaseMaterial material = baseMaterialMapper.selectById(req.getId());
+        AssertUtil.isNull(material,"物料不存在");
+
+        //2-修改物料
+        material.setMaterialName(req.getMaterialName());
+        material.setMaterialType(req.getMaterialType());
+        material.setBrandCode(req.getBrandCode());
+        material.setDescription(req.getDescription());
+        material.setValid(req.getValid());
+        baseMaterialMapper.updateById(material);
+
+    }
+
+    /**
+     * 分页查询物料
+     */
+    @Override
+    public ListMaterialRes listMaterial(ListMaterialReq req){
+
+        //1-分页查询
+        IPage<MaterialVO> iPage = baseMaterialMapper.listMaterial(PageUtil.createPage(req), req);
+        List<MaterialVO> materialList = iPage.getRecords();
+
+        //封装出参
+        ListMaterialRes res = new ListMaterialRes();
+        //放入分页信息
+        PageUtil.copyPageInfo(res, iPage);
+        //放入出参列表
+        List<ListMaterialRes.MaterialBean> materialBeanList = PojoConverterUtils.copyList(materialList, ListMaterialRes.MaterialBean.class);
+        res.setMaterialBeanList(materialBeanList);
+
+        return res;
+
+    }
+
+    /**
+     * 查询物料明细
+     */
+    @Override
+    public GetMaterialRes getMaterial(GetMaterialReq req){
+
+        //1-查询物料对象
+        BaseMaterial material = baseMaterialMapper.selectById(req.getId());
+        AssertUtil.isNull(material, "物料不存在");
+
+        //转化出参
+        GetMaterialRes res = PojoConverterUtils.copy(material, GetMaterialRes.class);
+
+        return res;
+
+    }
+
+    /**
+     * 物料启用
+     */
+    @Override
+    public void enableMaterial(EnableMaterialReq req){
+        List<Long> ids = req.getIds();
+
+        //循环启用
+        for (Long id : ids) {
+            //1-查询活动对象
+            BaseMaterial material = baseMaterialMapper.selectById(id);
+            AssertUtil.isNull(material, "物料不存在");
+
+            if (!ValidEnum.NOT_VALID.is(material.getValid())) {
+                continue;
+            }
+
+            //2-修改状态
+            material.setValid(ValidEnum.VALID.getCode());
+            baseMaterialMapper.updateById(material);
+        }
+    }
+
+    /**
+     * 物料禁用
+     */
+    @Override
+    public void disableMaterial(DisableMaterialReq req){
+        List<Long> ids = req.getIds();
+
+        //循环禁用
+        for (Long id : ids) {
+            //1-查询活动对象
+            BaseMaterial material = baseMaterialMapper.selectById(id);
+            AssertUtil.isNull(material, "物料不存在");
+
+            if (!ValidEnum.VALID.is(material.getValid())) {
+                return;
+            }
+
+            //2-修改状态
+            material.setValid(ValidEnum.NOT_VALID.getCode());
+            baseMaterialMapper.updateById(material);
+        }
+    }
+
+    /**
+     * 下拉选择物料列表
+     **/
+    @Override
+    public ListMaterialForSelectRes listMaterialForSelect(ListMaterialForSelectReq req) {
+        //1-查询所有有效的物料
+        QueryWrapper<BaseMaterial> materialQw = new QueryWrapper<>();
+        materialQw.eq("valid",1);
+        materialQw.eq("is_delete",0);
+        List<BaseMaterial> baseMaterialList = baseMaterialMapper.selectList(materialQw);
+
+        //构造出参
+        List<ListMaterialForSelectRes.MaterialBean> materialBeanList = PojoConverterUtils.copyList(baseMaterialList, ListMaterialForSelectRes.MaterialBean.class);
+        ListMaterialForSelectRes res = new ListMaterialForSelectRes();
+        res.setMaterialBeanList(materialBeanList);
+
+        return res;
+    }
+
+    /**
+     * 下拉选择品牌列表
+     **/
+    @Override
+    public ListBrandForSelectRes listBrandForSelect(ListBrandForSelectReq req) {
+        //1-查询所有品牌
+        QueryWrapper<BaseBrand> baseBrandQw = new QueryWrapper<>();
+        baseBrandQw.eq("is_delete",0);
+        List<BaseBrand> baseBrandList = baseBrandMapper.selectList(baseBrandQw);
+
+        //出参列表
+        List<ListBrandForSelectRes.BrandBean> brandBeanList = new ArrayList<>();
+
+        //2-构造树形结构
+        //定义map用来存放父类bean
+        Map<String,ListBrandForSelectRes.BrandBean> brandBeanMap = new HashMap<>();
+        //分一级和二级两组
+        List<BaseBrand> l1BrandList = baseBrandList.stream().filter(brand -> brand.getBrandLevel() == 1).collect(Collectors.toList());
+        List<BaseBrand> l2BrandList = baseBrandList.stream().filter(brand -> brand.getBrandLevel() == 2).collect(Collectors.toList());
+        //循环放入一级
+        for(BaseBrand brand:l1BrandList){
+            ListBrandForSelectRes.BrandBean brandBean = new ListBrandForSelectRes.BrandBean();
+            brandBean.setBrandCode(brand.getBrandCode());
+            brandBean.setBrandName(brand.getBrandName());
+            brandBean.setSubBrandBeanList(new ArrayList<>());
+            //放入出参列表
+            brandBeanList.add(brandBean);
+            //放入map
+            brandBeanMap.put(brandBean.getBrandCode(),brandBean);
+        }
+        //循环放入二级
+        for(BaseBrand brand:l2BrandList){
+            ListBrandForSelectRes.BrandBean parentBrandBean = brandBeanMap.get(brand.getParentBrandCode());
+            if(parentBrandBean==null){
+                continue;
+            }
+            //构建bean
+            ListBrandForSelectRes.BrandBean brandBean = new ListBrandForSelectRes.BrandBean();
+            brandBean.setBrandCode(brand.getBrandCode());
+            brandBean.setBrandName(brand.getBrandName());
+            //加入子品牌
+            parentBrandBean.getSubBrandBeanList().add(brandBean);
+        }
+
+        //构造出参
+        ListBrandForSelectRes res = new ListBrandForSelectRes();
+        res.setBrandBeanList(brandBeanList);
+
+        return res;
+    }
+
+
+}

+ 25 - 0
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseBrandMapper.xml

@@ -0,0 +1,25 @@
+<?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.abi.qms.platform.dao.mapper.BaseBrandMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.abi.qms.platform.dao.entity.BaseBrand">
+        <id column="ID" property="id" />
+        <result column="BRAND_CODE" property="brandCode" />
+        <result column="BRAND_NAME" property="brandName" />
+        <result column="BRAND_LEVEL" property="brandLevel" />
+        <result column="PARENT_BRAND_CODE" property="parentBrandCode" />
+        <result column="PARENT_BRAND_NAME" property="parentBrandName" />
+        <result column="CREATE_TIME" property="createTime" />
+        <result column="CREATE_BY" property="createBy" />
+        <result column="UPDATE_TIME" property="updateTime" />
+        <result column="UPDATE_BY" property="updateBy" />
+        <result column="IS_DELETE" property="isDelete" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        ID, BRAND_CODE, BRAND_NAME, BRAND_LEVEL, PARENT_BRAND_CODE, PARENT_BRAND_NAME, CREATE_TIME, CREATE_BY, UPDATE_TIME, UPDATE_BY, IS_DELETE
+    </sql>
+
+</mapper>

+ 56 - 0
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseMaterialMapper.xml

@@ -0,0 +1,56 @@
+<?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.abi.qms.platform.dao.mapper.BaseMaterialMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.abi.qms.platform.dao.entity.BaseMaterial">
+        <id column="ID" property="id" />
+        <result column="MATERIAL_CODE" property="materialCode" />
+        <result column="MATERIAL_NAME" property="materialName" />
+        <result column="MATERIAL_TYPE" property="materialType" />
+        <result column="BRAND_CODE" property="brandCode" />
+        <result column="DESCRIPTION" property="description" />
+        <result column="VALID" property="valid" />
+        <result column="CREATE_TIME" property="createTime" />
+        <result column="CREATE_BY" property="createBy" />
+        <result column="UPDATE_TIME" property="updateTime" />
+        <result column="UPDATE_BY" property="updateBy" />
+        <result column="IS_DELETE" property="isDelete" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        ID, MATERIAL_CODE, MATERIAL_NAME, MATERIAL_TYPE, BRAND_CODE, DESCRIPTION, VALID, CREATE_TIME, CREATE_BY, UPDATE_TIME, UPDATE_BY, IS_DELETE
+    </sql>
+
+    <select id="listMaterial" resultType="com.abi.qms.platform.dao.vo.result.MaterialVO">
+        select
+            m.id, m.material_code, m.material_name, m.material_type, m.brand_code, b.brand_name, m.description,
+            m.valid,m.create_time,m.update_time
+
+        from base_material m
+        left join base_brand b on b.brand_code = m.brand_code and b.is_delete=0
+
+        <where>
+            <if test="req.materialCode!=null and req.materialCode!=''">
+                and m.material_code regexp #{req.materialCode}
+            </if>
+            <if test="req.materialName!=null and req.materialName!=''">
+                and m.material_name regexp #{req.materialName}
+            </if>
+            <if test="req.materialType!=null and req.materialType!=''">
+                and m.material_type = #{req.materialType}
+            </if>
+            <if test="req.brandCode!=null and req.brandCode!=''">
+                and m.brand_code = #{req.brandCode}
+            </if>
+            <if test="req.valid!=null and req.valid!=''">
+                and m.valid = #{req.valid}
+            </if>
+        </where>
+
+        order by update_time desc
+
+    </select>
+
+</mapper>