24282 2 ani în urmă
părinte
comite
afef37be5c

+ 1 - 0
admin/pom.xml

@@ -22,6 +22,7 @@
         <dependency>
             <groupId>com.fjhx</groupId>
             <artifactId>hx-base</artifactId>
+            <version>1.0.0</version>
         </dependency>
 
     </dependencies>

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
admin/src/main/java/com/fjhx/admin/a-json/ProductClassifyApi.json


+ 3 - 2
admin/src/main/java/com/fjhx/admin/controller/product/ProductClassifyController.java

@@ -6,6 +6,7 @@ import com.fjhx.admin.entity.product.po.ProductClassify;
 import com.fjhx.admin.service.product.ProductClassifyService;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -43,7 +44,7 @@ public class ProductClassifyController {
      * 产品分类新增
      */
     @PostMapping("/add")
-    public void add(@RequestBody ProductClassifyDto productClassifyDto) {
+    public void add(@Validated @RequestBody ProductClassifyDto productClassifyDto) {
         productClassifyService.add(productClassifyDto);
     }
 
@@ -51,7 +52,7 @@ public class ProductClassifyController {
      * 产品分类编辑
      */
     @PostMapping("/edit")
-    public void edit(@RequestBody ProductClassifyDto productClassifyDto) {
+    public void edit(@Validated @RequestBody ProductClassifyDto productClassifyDto) {
         productClassifyService.edit(productClassifyDto);
     }
 

+ 71 - 0
admin/src/main/java/com/fjhx/admin/controller/product/ProductInfoController.java

@@ -0,0 +1,71 @@
+package com.fjhx.admin.controller.product;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.admin.entity.product.dto.ProductInfoDto;
+import com.fjhx.admin.entity.product.dto.ProductInfoSelectDto;
+import com.fjhx.admin.entity.product.vo.ProductInfoVo;
+import com.fjhx.admin.service.product.ProductInfoService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 产品库 前端控制器
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@RestController
+@RequestMapping("/productInfo")
+public class ProductInfoController {
+
+    @Autowired
+    private ProductInfoService productInfoService;
+
+    /**
+     * 产品库分页
+     */
+    @PostMapping("/page")
+    public Page<ProductInfoVo> page(@RequestBody ProductInfoSelectDto dto) {
+        return productInfoService.getPage(dto);
+    }
+
+    /**
+     * 产品库明细
+     */
+    @PostMapping("/detail")
+    public ProductInfoVo detail(@RequestBody BaseSelectDto dto) {
+        return productInfoService.detail(dto.getId());
+    }
+
+    /**
+     * 产品库新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody ProductInfoDto productInfoDto) {
+        productInfoService.add(productInfoDto);
+    }
+
+    /**
+     * 产品库编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody ProductInfoDto productInfoDto) {
+        productInfoService.edit(productInfoDto);
+    }
+
+    /**
+     * 产品库删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        productInfoService.delete(dto.getId());
+    }
+
+}

+ 17 - 0
admin/src/main/java/com/fjhx/admin/entity/product/dto/ProductInfoDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.admin.entity.product.dto;
+
+import com.fjhx.admin.entity.product.po.ProductInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 产品库新增编辑入参实体
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@Getter
+@Setter
+public class ProductInfoDto extends ProductInfo {
+
+}

+ 17 - 0
admin/src/main/java/com/fjhx/admin/entity/product/dto/ProductInfoSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.admin.entity.product.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 产品库列表查询入参实体
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@Getter
+@Setter
+public class ProductInfoSelectDto extends BaseSelectDto {
+
+}

+ 3 - 0
admin/src/main/java/com/fjhx/admin/entity/product/po/ProductClassify.java

@@ -5,6 +5,8 @@ import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotBlank;
+
 /**
  * <p>
  * 产品分类
@@ -31,6 +33,7 @@ public class ProductClassify extends BasePo {
     /**
      * 分类名称
      */
+    @NotBlank(message = "产品分类不能为空")
     private String name;
 
 }

+ 57 - 0
admin/src/main/java/com/fjhx/admin/entity/product/po/ProductInfo.java

@@ -0,0 +1,57 @@
+package com.fjhx.admin.entity.product.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 产品库
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@Getter
+@Setter
+@TableName("product_info")
+public class ProductInfo extends BasePo {
+
+    /**
+     * 产品分类id
+     */
+    private Long productClassifyId;
+
+    /**
+     * 产品编码
+     */
+    private String code;
+
+    /**
+     * 产品类型
+     */
+    private Integer type;
+
+    /**
+     * 产品名称
+     */
+    private String name;
+
+    /**
+     * 规格型号
+     */
+    private String spec;
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 17 - 0
admin/src/main/java/com/fjhx/admin/entity/product/vo/ProductInfoVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.admin.entity.product.vo;
+
+import com.fjhx.admin.entity.product.po.ProductInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 产品库列表查询返回值实体
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@Getter
+@Setter
+public class ProductInfoVo extends ProductInfo {
+
+}

+ 26 - 0
admin/src/main/java/com/fjhx/admin/mapper/product/ProductInfoMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.admin.mapper.product;
+
+import com.fjhx.admin.entity.product.po.ProductInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.admin.entity.product.vo.ProductInfoVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 产品库 Mapper 接口
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+public interface ProductInfoMapper extends BaseMapper<ProductInfo> {
+
+    /**
+     * 产品库分页
+     */
+    Page<ProductInfoVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductInfo> wrapper);
+
+}

+ 46 - 0
admin/src/main/java/com/fjhx/admin/service/product/ProductInfoService.java

@@ -0,0 +1,46 @@
+package com.fjhx.admin.service.product;
+
+import com.fjhx.admin.entity.product.po.ProductInfo;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.admin.entity.product.vo.ProductInfoVo;
+import com.fjhx.admin.entity.product.dto.ProductInfoSelectDto;
+import com.fjhx.admin.entity.product.dto.ProductInfoDto;
+
+
+/**
+ * <p>
+ * 产品库 服务类
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+public interface ProductInfoService extends BaseService<ProductInfo> {
+
+    /**
+     * 产品库分页
+     */
+    Page<ProductInfoVo> getPage(ProductInfoSelectDto dto);
+
+    /**
+     * 产品库明细
+     */
+    ProductInfoVo detail(Long id);
+
+    /**
+     * 产品库新增
+     */
+    void add(ProductInfoDto productInfoDto);
+
+    /**
+     * 产品库编辑
+     */
+    void edit(ProductInfoDto productInfoDto);
+
+    /**
+     * 产品库删除
+     */
+    void delete(Long id);
+
+}

+ 40 - 0
admin/src/main/java/com/fjhx/admin/service/product/impl/ProductClassifyServiceImpl.java

@@ -7,6 +7,7 @@ import com.fjhx.admin.entity.product.dto.ProductClassifyDto;
 import com.fjhx.admin.entity.product.po.ProductClassify;
 import com.fjhx.admin.mapper.product.ProductClassifyMapper;
 import com.fjhx.admin.service.product.ProductClassifyService;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.TreeUtil;
 import org.springframework.stereotype.Service;
 
@@ -39,10 +40,32 @@ public class ProductClassifyServiceImpl extends ServiceImpl<ProductClassifyMappe
     }
 
     public void add(ProductClassifyDto productClassifyDto) {
+
+        Long parentId = productClassifyDto.getParentId();
+        if (parentId == null) {
+            productClassifyDto.setParentId(0L);
+            productClassifyDto.setParentIdSet(null);
+        } else if (parentId == 0L) {
+            productClassifyDto.setParentIdSet(null);
+        } else {
+            // 查询父级分类
+            ProductClassify parentClassify = getById(parentId);
+            if (parentClassify == null) {
+                throw new ServiceException("没有找到父级分类");
+            }
+
+            // 赋值父级id集合
+            String parentIdSet = parentClassify.getParentIdSet();
+            parentClassify.setParentIdSet((ObjectUtil.isEmpty(parentIdSet) ? "" : parentIdSet + ",") + parentId);
+        }
+
+        peerNameOnly(productClassifyDto.getParentId(), productClassifyDto.getName(), null);
+
         this.save(productClassifyDto);
     }
 
     public void edit(ProductClassifyDto productClassifyDto) {
+        peerNameOnly(productClassifyDto.getParentId(), productClassifyDto.getName(), productClassifyDto.getId());
         this.updateById(productClassifyDto);
     }
 
@@ -50,4 +73,21 @@ public class ProductClassifyServiceImpl extends ServiceImpl<ProductClassifyMappe
         this.removeById(id);
     }
 
+    /**
+     * 保证同级名称不重复
+     */
+    private void peerNameOnly(Long parentId, String classifyName, Long excludeId) {
+
+        Long count = lambdaQuery()
+                .eq(ProductClassify::getParentId, parentId)
+                .eq(ProductClassify::getName, classifyName)
+                .ne(ObjectUtil.isNotEmpty(excludeId), ProductClassify::getId, excludeId)
+                .count();
+
+        if (count != 0) {
+            throw new ServiceException("存在相同分类名称");
+        }
+
+    }
+
 }

+ 52 - 0
admin/src/main/java/com/fjhx/admin/service/product/impl/ProductInfoServiceImpl.java

@@ -0,0 +1,52 @@
+package com.fjhx.admin.service.product.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.admin.entity.product.dto.ProductInfoDto;
+import com.fjhx.admin.entity.product.dto.ProductInfoSelectDto;
+import com.fjhx.admin.entity.product.po.ProductInfo;
+import com.fjhx.admin.entity.product.vo.ProductInfoVo;
+import com.fjhx.admin.mapper.product.ProductInfoMapper;
+import com.fjhx.admin.service.product.ProductInfoService;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 产品库 服务实现类
+ * </p>
+ *
+ * @author zlj
+ * @since 2023-03-17
+ */
+@Service
+public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, ProductInfo> implements ProductInfoService {
+
+    public Page<ProductInfoVo> getPage(ProductInfoSelectDto dto) {
+        IWrapper<ProductInfo> wrapper = getWrapper();
+        wrapper.orderByDesc("pi", ProductInfo::getId);
+        Page<ProductInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    public ProductInfoVo detail(Long id) {
+        ProductInfo ProductInfo = this.getById(id);
+        ProductInfoVo result = BeanUtil.toBean(ProductInfo, ProductInfoVo.class);
+        return result;
+    }
+
+    public void add(ProductInfoDto productInfoDto) {
+        this.save(productInfoDto);
+    }
+
+    public void edit(ProductInfoDto productInfoDto) {
+        this.updateById(productInfoDto);
+    }
+
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 0 - 0
admin/src/main/resources/product/ProductClassifyMapper.xml → admin/src/main/resources/mapper/product/ProductClassifyMapper.xml


+ 22 - 0
admin/src/main/resources/mapper/product/ProductInfoMapper.xml

@@ -0,0 +1,22 @@
+<?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.fjhx.admin.mapper.product.ProductInfoMapper">
+    <select id="getPage" resultType="com.fjhx.admin.entity.product.vo.ProductInfoVo">
+        select
+            pi.id,
+            pi.product_classify_id,
+            pi.code,
+            pi.type,
+            pi.name,
+            pi.spec,
+            pi.unit,
+            pi.remark,
+            pi.create_user,
+            pi.create_time,
+            pi.update_user,
+            pi.update_time
+        from product_info pi
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 29 - 0
code/pom.xml

@@ -0,0 +1,29 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.fjhx</groupId>
+        <artifactId>new-winfaster</artifactId>
+        <version>1.0</version>
+    </parent>
+
+    <artifactId>code</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.fly</groupId>
+            <artifactId>fly-generator</artifactId>
+            <version>1.0.hx</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>

+ 17 - 0
code/src/test/java/Main.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class Main {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/winfaster_master?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("admin")
+                .parent("com.fjhx.admin")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 1 - 19
pom.xml

@@ -10,6 +10,7 @@
     <packaging>pom</packaging>
     <modules>
         <module>admin</module>
+        <module>code</module>
     </modules>
 
     <properties>
@@ -24,23 +25,4 @@
         <version>2.7.6</version>
     </parent>
 
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>com.fjhx</groupId>
-                <artifactId>hx-base</artifactId>
-                <version>1.0.0</version>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-    <!--        <dependency>-->
-    <!--            <groupId>com.fly</groupId>-->
-<!--            <artifactId>fly-generator</artifactId>-->
-<!--            <version>1.0.hx</version>-->
-<!--            <scope>test</scope>-->
-<!--        </dependency>-->
-
-
 </project>

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff