24282 il y a 1 an
Parent
commit
809e454984
27 fichiers modifiés avec 1268 ajouts et 0 suppressions
  1. 72 0
      sd-business/src/main/java/com/sd/business/controller/bom/BomClassifyController.java
  2. 71 0
      sd-business/src/main/java/com/sd/business/controller/bom/BomController.java
  3. 20 0
      sd-business/src/main/java/com/sd/business/controller/bom/BomSpecController.java
  4. 17 0
      sd-business/src/main/java/com/sd/business/entity/bom/dto/BomClassifyDto.java
  5. 22 0
      sd-business/src/main/java/com/sd/business/entity/bom/dto/BomClassifySelectDto.java
  6. 34 0
      sd-business/src/main/java/com/sd/business/entity/bom/dto/BomDto.java
  7. 84 0
      sd-business/src/main/java/com/sd/business/entity/bom/dto/BomSelectDto.java
  8. 23 0
      sd-business/src/main/java/com/sd/business/entity/bom/dto/BomSpecDto.java
  9. 17 0
      sd-business/src/main/java/com/sd/business/entity/bom/dto/BomSpecSelectDto.java
  10. 128 0
      sd-business/src/main/java/com/sd/business/entity/bom/po/Bom.java
  11. 46 0
      sd-business/src/main/java/com/sd/business/entity/bom/po/BomClassify.java
  12. 102 0
      sd-business/src/main/java/com/sd/business/entity/bom/po/BomSpec.java
  13. 25 0
      sd-business/src/main/java/com/sd/business/entity/bom/vo/BomClassifyVo.java
  14. 17 0
      sd-business/src/main/java/com/sd/business/entity/bom/vo/BomSpecVo.java
  15. 25 0
      sd-business/src/main/java/com/sd/business/entity/bom/vo/BomVo.java
  16. 16 0
      sd-business/src/main/java/com/sd/business/mapper/bom/BomClassifyMapper.java
  17. 16 0
      sd-business/src/main/java/com/sd/business/mapper/bom/BomMapper.java
  18. 16 0
      sd-business/src/main/java/com/sd/business/mapper/bom/BomSpecMapper.java
  19. 57 0
      sd-business/src/main/java/com/sd/business/service/bom/BomClassifyService.java
  20. 46 0
      sd-business/src/main/java/com/sd/business/service/bom/BomService.java
  21. 17 0
      sd-business/src/main/java/com/sd/business/service/bom/BomSpecService.java
  22. 108 0
      sd-business/src/main/java/com/sd/business/service/bom/impl/BomClassifyServiceImpl.java
  23. 253 0
      sd-business/src/main/java/com/sd/business/service/bom/impl/BomServiceImpl.java
  24. 21 0
      sd-business/src/main/java/com/sd/business/service/bom/impl/BomSpecServiceImpl.java
  25. 5 0
      sd-business/src/main/resources/mapper/bom/BomClassifyMapper.xml
  26. 5 0
      sd-business/src/main/resources/mapper/bom/BomMapper.xml
  27. 5 0
      sd-business/src/main/resources/mapper/bom/BomSpecMapper.xml

+ 72 - 0
sd-business/src/main/java/com/sd/business/controller/bom/BomClassifyController.java

@@ -0,0 +1,72 @@
+package com.sd.business.controller.bom;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.entity.bom.dto.BomClassifyDto;
+import com.sd.business.entity.bom.dto.BomClassifySelectDto;
+import com.sd.business.entity.bom.vo.BomClassifyVo;
+import com.sd.business.service.bom.BomClassifyService;
+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;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * bom分类 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@RestController
+@RequestMapping("/bomClassify")
+public class BomClassifyController {
+
+    @Autowired
+    private BomClassifyService bomClassifyService;
+
+    /**
+     * bom分类树形
+     */
+    @PostMapping("/tree")
+    public List<BomClassifyVo> tree(@RequestBody BomClassifySelectDto dto) {
+        return bomClassifyService.tree(dto);
+    }
+
+    /**
+     * bom分类明细
+     */
+    @PostMapping("/detail")
+    public BomClassifyVo detail(@RequestBody BaseSelectDto dto) {
+        return bomClassifyService.detail(dto.getId());
+    }
+
+    /**
+     * bom分类新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody BomClassifyDto dto) {
+        bomClassifyService.add(dto);
+    }
+
+    /**
+     * bom分类编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody BomClassifyDto dto) {
+        bomClassifyService.edit(dto);
+    }
+
+    /**
+     * bom分类删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        bomClassifyService.delete(dto.getId());
+    }
+
+}

+ 71 - 0
sd-business/src/main/java/com/sd/business/controller/bom/BomController.java

@@ -0,0 +1,71 @@
+package com.sd.business.controller.bom;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.entity.bom.dto.BomDto;
+import com.sd.business.entity.bom.dto.BomSelectDto;
+import com.sd.business.entity.bom.vo.BomVo;
+import com.sd.business.service.bom.BomService;
+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>
+ * bom 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@RestController
+@RequestMapping("/bom")
+public class BomController {
+
+    @Autowired
+    private BomService bomService;
+
+    /**
+     * bom分页
+     */
+    @PostMapping("/page")
+    public Page<BomVo> page(@RequestBody BomSelectDto dto) {
+        return bomService.getPage(dto);
+    }
+
+    /**
+     * bom明细
+     */
+    @PostMapping("/detail")
+    public BomVo detail(@RequestBody BaseSelectDto dto) {
+        return bomService.detail(dto.getId());
+    }
+
+    /**
+     * bom新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody BomDto dto) {
+        bomService.add(dto);
+    }
+
+    /**
+     * bom编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody BomDto dto) {
+        bomService.edit(dto);
+    }
+
+    /**
+     * bom删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        bomService.delete(dto.getId());
+    }
+
+}

+ 20 - 0
sd-business/src/main/java/com/sd/business/controller/bom/BomSpecController.java

@@ -0,0 +1,20 @@
+package com.sd.business.controller.bom;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * bom规格 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@RestController
+@RequestMapping("/bomSpec")
+public class BomSpecController {
+
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/bom/dto/BomClassifyDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.bom.dto;
+
+import com.sd.business.entity.bom.po.BomClassify;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * bom分类新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BomClassifyDto extends BomClassify {
+
+}

+ 22 - 0
sd-business/src/main/java/com/sd/business/entity/bom/dto/BomClassifySelectDto.java

@@ -0,0 +1,22 @@
+package com.sd.business.entity.bom.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * bom分类列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BomClassifySelectDto extends BaseSelectDto {
+
+    /**
+     * 分类名称
+     */
+    private String name;
+
+}

+ 34 - 0
sd-business/src/main/java/com/sd/business/entity/bom/dto/BomDto.java

@@ -0,0 +1,34 @@
+package com.sd.business.entity.bom.dto;
+
+import com.fjhx.file.entity.ObsFile;
+import com.sd.business.entity.bom.po.Bom;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * bom新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BomDto extends Bom {
+
+    /**
+     * bom规格
+     */
+    @Valid
+    @NotEmpty(message = "规格不能为空")
+    private List<BomSpecDto> bomSpecList;
+
+    /**
+     * 主图产品
+     */
+    private ObsFile mainImgFile;
+
+}

+ 84 - 0
sd-business/src/main/java/com/sd/business/entity/bom/dto/BomSelectDto.java

@@ -0,0 +1,84 @@
+package com.sd.business.entity.bom.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * bom列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BomSelectDto extends BaseSelectDto {
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 品号
+     */
+    private String code;
+
+    /**
+     * 规格品名
+     */
+    private String bomSpecName;
+
+    /**
+     * 规格品号
+     */
+    private String bomSpecCode;
+
+    /**
+     * 种类 字典:bom_species
+     */
+    private String species;
+
+    /**
+     * 色层 字典:bom_chromatophore
+     */
+    private String chromatophore;
+
+    /**
+     * 压纹工艺 字典:bom_embossingProcess
+     */
+    private String embossingProcess;
+
+    /**
+     * 正面纹路 字典:bom_frontGrain
+     */
+    private String frontGrain;
+
+    /**
+     * 背面纹路 字典:bom_reverseGrain
+     */
+    private String reverseGrain;
+
+    /**
+     * 颜色
+     */
+    private String colour;
+
+    /**
+     * 售价体系id
+     */
+    private Long priceSystemId;
+
+    /**
+     * bom分类id
+     */
+    private Long bomClassifyId;
+
+    /**
+     * bom分类id
+     */
+    private List<Long> bomClassifyIdList;
+
+}

+ 23 - 0
sd-business/src/main/java/com/sd/business/entity/bom/dto/BomSpecDto.java

@@ -0,0 +1,23 @@
+package com.sd.business.entity.bom.dto;
+
+import com.fjhx.file.entity.ObsFile;
+import com.sd.business.entity.bom.po.BomSpec;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * bom规格新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BomSpecDto extends BomSpec {
+
+    /**
+     * 规格图片
+     */
+    private ObsFile imgFile;
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/bom/dto/BomSpecSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.bom.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * bom规格列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BomSpecSelectDto extends BaseSelectDto {
+
+}

+ 128 - 0
sd-business/src/main/java/com/sd/business/entity/bom/po/Bom.java

@@ -0,0 +1,128 @@
+package com.sd.business.entity.bom.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * bom
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+@TableName("bom")
+public class Bom extends BasePo {
+
+    /**
+     * bom分类id
+     */
+    private Long bomClassifyId;
+
+    /**
+     * 品号
+     */
+    private String code;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 定制记件标准 字典:bom_customPieceBasis
+     */
+    private String customPieceBasis;
+
+    /**
+     * 包装记件标准 字典:bom_packagePieceBasis
+     */
+    private String packagePieceBasis;
+
+    /**
+     * 发货记件标准 字典:bom_shipmentsPieceBasis
+     */
+    private String shipmentsPieceBasis;
+
+    /**
+     * 项目小类 字典:bom_itemSubclass
+     */
+    private String itemSubclass;
+
+    /**
+     * 种类 字典:bom_species
+     */
+    private String species;
+
+    /**
+     * 材质
+     */
+    private String material;
+
+    /**
+     * 型号
+     */
+    private String modelNumber;
+
+    /**
+     * 正面纹路 字典:bom_frontGrain
+     */
+    private String frontGrain;
+
+    /**
+     * 背面纹路 字典:bom_reverseGrain
+     */
+    private String reverseGrain;
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+    /**
+     * LOGO
+     */
+    private String logo;
+
+    /**
+     * 色层 字典:bom_chromatophore
+     */
+    private String chromatophore;
+
+    /**
+     * 售价体系 字典:bom_sellingPriceSystem
+     */
+    private String sellingPriceSystem;
+
+    /**
+     * 角度 字典:bom_angle
+     */
+    private String angle;
+
+    /**
+     * 配方
+     */
+    private String formula;
+
+    /**
+     * 压纹工艺 字典:bom_embossingProcess
+     */
+    private String embossingProcess;
+
+    /**
+     * 产品主图
+     */
+    private String mainImgUrl;
+
+    /**
+     * 详细描述
+     */
+    private String detailText;
+
+    private String oldId;
+
+}

+ 46 - 0
sd-business/src/main/java/com/sd/business/entity/bom/po/BomClassify.java

@@ -0,0 +1,46 @@
+package com.sd.business.entity.bom.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * bom分类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+@TableName("bom_classify")
+public class BomClassify extends BasePo {
+
+    /**
+     * 上级分类id
+     */
+    private Long parentId;
+
+    /**
+     * 分类名称
+     */
+    private String name;
+
+    /**
+     * 分类编码
+     */
+    private String code;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 102 - 0
sd-business/src/main/java/com/sd/business/entity/bom/po/BomSpec.java

@@ -0,0 +1,102 @@
+package com.sd.business.entity.bom.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * bom规格
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+@TableName("bom_spec")
+public class BomSpec extends BasePo {
+
+    /**
+     * bom id
+     */
+    private Long bomId;
+
+    /**
+     * 图片路径
+     */
+    private String mainImgUrl;
+
+    /**
+     * 品名
+     */
+    private String name;
+
+    /**
+     * 品号
+     */
+    private String code;
+
+    /**
+     * 颜色
+     */
+    private String colour;
+
+    /**
+     * 成本价
+     */
+    private BigDecimal costPrice;
+
+    /**
+     * 对内销售价(含税)
+     */
+    private BigDecimal internalSellingPrice;
+
+    /**
+     * 对外销售价(含税)
+     */
+    private BigDecimal externalSellingPrice;
+
+    /**
+     * 安全库存
+     */
+    private BigDecimal safetyStock;
+
+    /**
+     * 长 cm
+     */
+    private BigDecimal length;
+
+    /**
+     * 宽 cm
+     */
+    private BigDecimal width;
+
+    /**
+     * 高 cm
+     */
+    private BigDecimal height;
+
+    /**
+     * 净重 g
+     */
+    private BigDecimal netWeight;
+
+    /**
+     * 是否显示看板 0否 1是
+     */
+    private Boolean isShowBoard;
+
+    /**
+     * 看板排序
+     */
+    private Integer sort;
+
+    private String oldId;
+
+    private String oldBomId;
+
+}

+ 25 - 0
sd-business/src/main/java/com/sd/business/entity/bom/vo/BomClassifyVo.java

@@ -0,0 +1,25 @@
+package com.sd.business.entity.bom.vo;
+
+import com.sd.business.entity.bom.po.BomClassify;
+import com.sd.framework.util.tree.Tree;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * bom分类列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BomClassifyVo extends BomClassify implements Tree<BomClassifyVo> {
+
+    /**
+     * 子节点
+     */
+    private List<BomClassifyVo> children;
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/bom/vo/BomSpecVo.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.bom.vo;
+
+import com.sd.business.entity.bom.po.BomSpec;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * bom规格列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BomSpecVo extends BomSpec {
+
+}

+ 25 - 0
sd-business/src/main/java/com/sd/business/entity/bom/vo/BomVo.java

@@ -0,0 +1,25 @@
+package com.sd.business.entity.bom.vo;
+
+import com.sd.business.entity.bom.po.Bom;
+import com.sd.business.entity.bom.po.BomSpec;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * bom列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BomVo extends Bom {
+
+    /**
+     * bom规格列表
+     */
+    private List<BomSpec> bomSpecList;
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/bom/BomClassifyMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.bom;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.bom.po.BomClassify;
+
+/**
+ * <p>
+ * bom分类 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+public interface BomClassifyMapper extends BaseMapper<BomClassify> {
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/bom/BomMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.bom;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.bom.po.Bom;
+
+/**
+ * <p>
+ * bom Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+public interface BomMapper extends BaseMapper<Bom> {
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/bom/BomSpecMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.bom;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.bom.po.BomSpec;
+
+/**
+ * <p>
+ * bom规格 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+public interface BomSpecMapper extends BaseMapper<BomSpec> {
+
+}

+ 57 - 0
sd-business/src/main/java/com/sd/business/service/bom/BomClassifyService.java

@@ -0,0 +1,57 @@
+package com.sd.business.service.bom;
+
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.bom.dto.BomClassifyDto;
+import com.sd.business.entity.bom.dto.BomClassifySelectDto;
+import com.sd.business.entity.bom.po.BomClassify;
+import com.sd.business.entity.bom.vo.BomClassifyVo;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * bom分类 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+public interface BomClassifyService extends BaseService<BomClassify> {
+
+    /**
+     * bom分类树形
+     */
+    List<BomClassifyVo> tree(BomClassifySelectDto dto);
+
+    /**
+     * bom分类明细
+     */
+    BomClassifyVo detail(Long id);
+
+    /**
+     * bom分类新增
+     */
+    void add(BomClassifyDto dto);
+
+    /**
+     * bom分类编辑
+     */
+    void edit(BomClassifyDto dto);
+
+    /**
+     * bom分类删除
+     */
+    void delete(Long id);
+
+    /**
+     * 获取子集id
+     */
+    List<Long> getChildrenIdList(Long parentId);
+
+    /**
+     * 获取子集id
+     */
+    List<Long> getChildrenIdList(List<Long> parentIdList);
+
+}

+ 46 - 0
sd-business/src/main/java/com/sd/business/service/bom/BomService.java

@@ -0,0 +1,46 @@
+package com.sd.business.service.bom;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.bom.dto.BomDto;
+import com.sd.business.entity.bom.dto.BomSelectDto;
+import com.sd.business.entity.bom.po.Bom;
+import com.sd.business.entity.bom.vo.BomVo;
+
+
+/**
+ * <p>
+ * bom 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+public interface BomService extends BaseService<Bom> {
+
+    /**
+     * bom分页
+     */
+    Page<BomVo> getPage(BomSelectDto dto);
+
+    /**
+     * bom明细
+     */
+    BomVo detail(Long id);
+
+    /**
+     * bom新增
+     */
+    void add(BomDto dto);
+
+    /**
+     * bom编辑
+     */
+    void edit(BomDto dto);
+
+    /**
+     * bom删除
+     */
+    void delete(Long id);
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/service/bom/BomSpecService.java

@@ -0,0 +1,17 @@
+package com.sd.business.service.bom;
+
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.bom.po.BomSpec;
+
+
+/**
+ * <p>
+ * bom规格 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+public interface BomSpecService extends BaseService<BomSpec> {
+
+}

+ 108 - 0
sd-business/src/main/java/com/sd/business/service/bom/impl/BomClassifyServiceImpl.java

@@ -0,0 +1,108 @@
+package com.sd.business.service.bom.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.sd.business.entity.bom.dto.BomClassifyDto;
+import com.sd.business.entity.bom.dto.BomClassifySelectDto;
+import com.sd.business.entity.bom.po.BomClassify;
+import com.sd.business.entity.bom.vo.BomClassifyVo;
+import com.sd.business.mapper.bom.BomClassifyMapper;
+import com.sd.business.service.bom.BomClassifyService;
+import com.sd.framework.util.Assert;
+import com.sd.framework.util.sql.Sql;
+import com.sd.framework.util.tree.TreeUtil;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+
+/**
+ * <p>
+ * bom分类 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Service
+public class BomClassifyServiceImpl extends ServiceImpl<BomClassifyMapper, BomClassify> implements BomClassifyService {
+
+    @Override
+    public List<BomClassifyVo> tree(BomClassifySelectDto dto) {
+
+        List<BomClassifyVo> list = Sql.create(BomClassifyVo.class)
+                .selectAll(BomClassify.class)
+                .from(BomClassify.class)
+                .like(BomClassify::getName, dto.getName())
+                .orderByDesc(BomClassify::getId)
+                .list();
+
+        return TreeUtil.build(list);
+    }
+
+    @Override
+    public BomClassifyVo detail(Long id) {
+
+        BomClassifyVo vo = Sql.create(BomClassifyVo.class)
+                .selectAll(BomClassify.class)
+                .from(BomClassify.class)
+                .eq(BomClassify::getId, id)
+                .one();
+
+        Assert.notNull(vo, "未知数据");
+
+        return vo;
+    }
+
+    @Override
+    public void add(BomClassifyDto dto) {
+        long count = count(q -> q.eq(BomClassify::getCode, dto.getCode()).last("limit 1"));
+        Assert.eqZero(count, "分类编码已存在");
+
+        save(dto);
+    }
+
+    @Override
+    public void edit(BomClassifyDto dto) {
+        long count = count(q -> q.eq(BomClassify::getCode, dto.getCode()).ne(BaseIdPo::getId, dto.getId()).last("limit 1"));
+        Assert.eqZero(count, "分类编码已存在");
+
+        updateById(dto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        removeById(id);
+    }
+
+    @Override
+    public List<Long> getChildrenIdList(Long parentId) {
+        List<BomClassify> list = list();
+        List<Long> childrenIdList = new ArrayList<>();
+        getChildrenIdList(parentId, childrenIdList, list);
+        return childrenIdList;
+    }
+
+    @Override
+    public List<Long> getChildrenIdList(List<Long> parentIdList) {
+        List<BomClassify> list = list();
+        List<Long> childrenIdList = new ArrayList<>();
+        parentIdList.forEach(item -> getChildrenIdList(item, childrenIdList, list));
+        return childrenIdList;
+    }
+
+    /**
+     * 递归添加子集节点id
+     */
+    private void getChildrenIdList(Long parentId, List<Long> childrenIdList, List<BomClassify> list) {
+        childrenIdList.add(parentId);
+        for (BomClassify bomClassify : list) {
+            if (Objects.equals(bomClassify.getParentId(), parentId)) {
+                getChildrenIdList(bomClassify.getId(), childrenIdList, list);
+            }
+        }
+    }
+
+}

+ 253 - 0
sd-business/src/main/java/com/sd/business/service/bom/impl/BomServiceImpl.java

@@ -0,0 +1,253 @@
+package com.sd.business.service.bom.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.file.entity.FileInfo;
+import com.fjhx.file.entity.ObsFile;
+import com.fjhx.file.service.FileInfoService;
+import com.fjhx.file.utils.ObsFileUtil;
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.sd.business.entity.bom.dto.BomDto;
+import com.sd.business.entity.bom.dto.BomSelectDto;
+import com.sd.business.entity.bom.dto.BomSpecDto;
+import com.sd.business.entity.bom.po.Bom;
+import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.entity.bom.vo.BomVo;
+import com.sd.business.mapper.bom.BomMapper;
+import com.sd.business.service.bom.BomClassifyService;
+import com.sd.business.service.bom.BomService;
+import com.sd.business.service.bom.BomSpecService;
+import com.sd.framework.util.Assert;
+import com.sd.framework.util.sql.Sql;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * bom 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Service
+public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomService {
+
+    @Autowired
+    private BomClassifyService bomClassifyService;
+
+    @Autowired
+    private BomSpecService bomSpecService;
+
+    @Autowired
+    private FileInfoService fileInfoService;
+
+
+    @Override
+    public Page<BomVo> getPage(BomSelectDto dto) {
+
+        List<Long> queryBomIdList = null;
+        List<Long> queryBomClassifyIdList = new ArrayList<>();
+        if (!StrUtil.isAllBlank(dto.getColour(), dto.getBomSpecCode(), dto.getBomSpecName())) {
+            queryBomIdList = bomSpecService.listObject(BomSpec::getBomId, i -> i
+                    .like(StrUtil.isNotBlank(dto.getColour()), BomSpec::getColour, dto.getColour())
+                    .like(StrUtil.isNotBlank(dto.getBomSpecCode()), BomSpec::getCode, dto.getBomSpecCode())
+                    .like(StrUtil.isNotBlank(dto.getBomSpecName()), BomSpec::getName, dto.getBomSpecName()));
+            if (queryBomIdList.isEmpty()) {
+                return new Page<>();
+            }
+        }
+        if (ObjectUtil.isNotNull(dto.getBomClassifyId())) {
+            queryBomClassifyIdList.addAll(bomClassifyService.getChildrenIdList(dto.getBomClassifyId()));
+        }
+        if (ObjectUtil.isNotNull(dto.getBomClassifyIdList())) {
+            queryBomClassifyIdList.addAll(bomClassifyService.getChildrenIdList(dto.getBomClassifyIdList()));
+        }
+
+        Page<BomVo> page = Sql.create(BomVo.class)
+                .selectAll(Bom.class)
+                .from(Bom.class)
+                .orderByDesc(Bom::getId)
+                .like(Bom::getName, dto.getName())
+                .like(Bom::getCode, dto.getCode())
+                .eq(Bom::getSpecies, dto.getSpecies())
+                .eq(Bom::getChromatophore, dto.getChromatophore())
+                .eq(Bom::getEmbossingProcess, dto.getEmbossingProcess())
+                .eq(Bom::getFrontGrain, dto.getFrontGrain())
+                .eq(Bom::getReverseGrain, dto.getReverseGrain())
+                .in(Bom::getId, queryBomIdList)
+                .in(Bom::getBomClassifyId, queryBomClassifyIdList)
+                .page(dto);
+        List<BomVo> records = page.getRecords();
+        if (records.isEmpty()) {
+            return page;
+        }
+
+        List<Long> bomIdList = records.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+        Map<Long, List<BomSpec>> bomSpecIdMap = bomSpecService.mapKGroup(BomSpec::getBomId, q -> q
+                .in(BomSpec::getBomId, bomIdList)
+                .like(StrUtil.isNotBlank(dto.getColour()), BomSpec::getColour, dto.getColour())
+                .like(StrUtil.isNotBlank(dto.getBomSpecCode()), BomSpec::getCode, dto.getBomSpecCode())
+                .like(StrUtil.isNotBlank(dto.getBomSpecName()), BomSpec::getName, dto.getBomSpecName()));
+
+        for (BomVo record : records) {
+            record.setBomSpecList(bomSpecIdMap.get(record.getId()));
+        }
+
+        return page;
+    }
+
+    @Override
+    public BomVo detail(Long id) {
+
+        BomVo vo = Sql.create(BomVo.class)
+                .selectAll(Bom.class)
+                .from(Bom.class)
+                .eq(Bom::getId, id)
+                .one();
+
+        Assert.notNull(vo, "未知bom");
+
+        List<BomSpec> list = bomSpecService.list(q -> q.eq(BomSpec::getBomId, id));
+        vo.setBomSpecList(list);
+
+        return vo;
+    }
+
+    @DSTransactional
+    @Override
+    public void add(BomDto dto) {
+        List<FileInfo> fileInfoList = new ArrayList<>();
+
+        dto.setId(IdWorker.getId());
+
+        ObsFile mainImgFile = dto.getMainImgFile();
+        if (mainImgFile == null) {
+            dto.setMainImgUrl("");
+        } else {
+            FileInfo fileInfo = new FileInfo();
+            fileInfo.setId(mainImgFile.getId());
+            fileInfo.setBusinessId(dto.getId());
+            fileInfo.setBusinessType(ObsFileUtil.defaultFileType);
+            fileInfoList.add(fileInfo);
+            dto.setMainImgUrl(mainImgFile.getFileUrl());
+        }
+
+        List<BomSpecDto> bomSpecDtoList = dto.getBomSpecList();
+        List<BomSpec> bomSpecList = bomSpecDtoList.stream()
+                .peek(item -> {
+                    item.setId(ObjectUtil.defaultIfNull(item.getId(), IdWorker.getId()));
+                    item.setBomId(dto.getId());
+
+                    ObsFile imgFile = item.getImgFile();
+                    if (imgFile == null) {
+                        item.setMainImgUrl("");
+                    } else {
+                        FileInfo fileInfo = new FileInfo();
+                        fileInfo.setId(imgFile.getId());
+                        fileInfo.setBusinessId(item.getId());
+                        fileInfo.setBusinessType(ObsFileUtil.defaultFileType);
+                        fileInfoList.add(fileInfo);
+                        item.setMainImgUrl(imgFile.getFileUrl());
+                    }
+                })
+                .map(item -> BeanUtil.toBean(item, BomSpec.class))
+                .collect(Collectors.toList());
+
+        save(dto);
+        bomSpecService.saveBatch(bomSpecList);
+        if (!fileInfoList.isEmpty()) {
+            fileInfoService.updateBatchById(fileInfoList);
+        }
+
+
+    }
+
+    @DSTransactional
+    @Override
+    public void edit(BomDto dto) {
+        List<FileInfo> fileInfoList = new ArrayList<>();
+
+        ObsFile mainImgFile = dto.getMainImgFile();
+        if (mainImgFile == null) {
+            dto.setMainImgUrl("");
+        } else {
+            FileInfo fileInfo = new FileInfo();
+            fileInfo.setId(mainImgFile.getId());
+            fileInfo.setBusinessId(dto.getId());
+            fileInfo.setBusinessType(ObsFileUtil.defaultFileType);
+            fileInfoList.add(fileInfo);
+            dto.setMainImgUrl(mainImgFile.getFileUrl());
+        }
+
+        List<BomSpecDto> bomSpecDtoList = dto.getBomSpecList();
+        List<BomSpec> bomSpecList = bomSpecDtoList.stream()
+                .peek(item -> {
+                    item.setId(ObjectUtil.defaultIfNull(item.getId(), IdWorker.getId()));
+                    item.setBomId(dto.getId());
+
+                    ObsFile imgFile = item.getImgFile();
+                    if (imgFile == null) {
+                        item.setMainImgUrl("");
+                    } else {
+                        FileInfo fileInfo = new FileInfo();
+                        fileInfo.setId(imgFile.getId());
+                        fileInfo.setBusinessId(item.getId());
+                        fileInfo.setBusinessType(ObsFileUtil.defaultFileType);
+                        fileInfoList.add(fileInfo);
+                        item.setMainImgUrl(imgFile.getFileUrl());
+                    }
+                })
+                .map(item -> BeanUtil.toBean(item, BomSpec.class))
+                .collect(Collectors.toList());
+
+        // 修改bom
+        this.updateById(dto);
+
+        // 修改bom明细
+        List<Long> bomSpecIdList = bomSpecList.stream().map(BomSpec::getId)
+                .filter(Objects::nonNull).distinct().collect(Collectors.toList());
+        bomSpecService.remove(q -> q
+                .eq(BomSpec::getBomId, dto.getId())
+                .notIn(ObjectUtil.isNotEmpty(bomSpecIdList), BaseIdPo::getId, bomSpecIdList));
+        bomSpecService.saveOrUpdateBatch(bomSpecList);
+
+        // 修改文件
+        List<Long> businessIdList = bomSpecList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+        businessIdList.add(dto.getId());
+        List<Long> fileInfoIdList = fileInfoList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+
+        fileInfoService.remove(q -> q
+                .in(FileInfo::getBusinessId, businessIdList)
+                .notIn(ObjectUtil.isNotEmpty(fileInfoIdList), BaseIdPo::getId, fileInfoIdList));
+        if (!fileInfoList.isEmpty()) {
+            fileInfoService.updateBatchById(fileInfoList);
+        }
+    }
+
+    @DSTransactional
+    @Override
+    public void delete(Long id) {
+        removeById(id);
+
+        List<Long> businessIdList = bomSpecService.listObject(BaseIdPo::getId, q -> q.eq(BomSpec::getBomId, id));
+        businessIdList.add(id);
+        fileInfoService.remove(q -> q.in(FileInfo::getBusinessId, businessIdList));
+
+        removeById(id);
+        bomSpecService.remove(q -> q.eq(BomSpec::getBomId, id));
+    }
+
+}

+ 21 - 0
sd-business/src/main/java/com/sd/business/service/bom/impl/BomSpecServiceImpl.java

@@ -0,0 +1,21 @@
+package com.sd.business.service.bom.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.mapper.bom.BomSpecMapper;
+import com.sd.business.service.bom.BomSpecService;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * bom规格 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Service
+public class BomSpecServiceImpl extends ServiceImpl<BomSpecMapper, BomSpec> implements BomSpecService {
+
+}

+ 5 - 0
sd-business/src/main/resources/mapper/bom/BomClassifyMapper.xml

@@ -0,0 +1,5 @@
+<?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.sd.business.mapper.bom.BomClassifyMapper">
+
+</mapper>

+ 5 - 0
sd-business/src/main/resources/mapper/bom/BomMapper.xml

@@ -0,0 +1,5 @@
+<?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.sd.business.mapper.bom.BomMapper">
+
+</mapper>

+ 5 - 0
sd-business/src/main/resources/mapper/bom/BomSpecMapper.xml

@@ -0,0 +1,5 @@
+<?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.sd.business.mapper.bom.BomSpecMapper">
+
+</mapper>