24282 1 жил өмнө
parent
commit
de06a4de33

+ 2 - 1
sd-business/src/main/java/com/sd/business/controller/bom/BomController.java

@@ -7,6 +7,7 @@ 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.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -48,7 +49,7 @@ public class BomController {
      * bom新增
      */
     @PostMapping("/add")
-    public void add(@RequestBody BomDto bomDto) {
+    public void add(@Validated @RequestBody BomDto bomDto) {
         bomService.add(bomDto);
     }
 

+ 0 - 34
sd-business/src/main/java/com/sd/business/controller/bom/BomOperatingLogController.java

@@ -1,8 +1,6 @@
 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.BomOperatingLogDto;
 import com.sd.business.entity.bom.dto.BomOperatingLogSelectDto;
 import com.sd.business.entity.bom.vo.BomOperatingLogVo;
 import com.sd.business.service.bom.BomOperatingLogService;
@@ -36,36 +34,4 @@ public class BomOperatingLogController {
         return bomOperatingLogService.getPage(dto);
     }
 
-    /**
-     * bom操作日志明细
-     */
-    @PostMapping("/detail")
-    public BomOperatingLogVo detail(@RequestBody BaseSelectDto dto) {
-        return bomOperatingLogService.detail(dto.getId());
-    }
-
-    /**
-     * bom操作日志新增
-     */
-    @PostMapping("/add")
-    public void add(@RequestBody BomOperatingLogDto bomOperatingLogDto) {
-        bomOperatingLogService.add(bomOperatingLogDto);
-    }
-
-    /**
-     * bom操作日志编辑
-     */
-    @PostMapping("/edit")
-    public void edit(@RequestBody BomOperatingLogDto bomOperatingLogDto) {
-        bomOperatingLogService.edit(bomOperatingLogDto);
-    }
-
-    /**
-     * bom操作日志删除
-     */
-    @PostMapping("/delete")
-    public void delete(@RequestBody BaseSelectDto dto) {
-        bomOperatingLogService.delete(dto.getId());
-    }
-
 }

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

@@ -1,9 +1,14 @@
 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新增编辑入参实体
  *
@@ -14,4 +19,16 @@ import lombok.Setter;
 @Setter
 public class BomDto extends Bom {
 
+    /**
+     * bom规格
+     */
+    @Valid
+    @NotEmpty(message = "规格不能为空")
+    private List<BomSpecDto> bomSpecDtoList;
+
+    /**
+     * 主图产品
+     */
+    private ObsFile mainImgFile;
+
 }

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

@@ -14,4 +14,44 @@ import lombok.Setter;
 @Setter
 public class BomSelectDto extends BaseSelectDto {
 
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 品号
+     */
+    private String code;
+
+    /**
+     * 种类 字典: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;
+
 }

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

@@ -1,5 +1,6 @@
 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;
@@ -14,4 +15,9 @@ import lombok.Setter;
 @Setter
 public class BomSpecDto extends BomSpec {
 
+    /**
+     * 规格图片
+     */
+    private ObsFile imgFile;
+
 }

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

@@ -5,6 +5,9 @@ import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
 /**
  * <p>
  * bom
@@ -21,6 +24,7 @@ public class Bom extends BasePo {
     /**
      * bom分类id
      */
+    @NotNull(message = "类目id不能为空")
     private Long bomClassifyId;
 
     /**
@@ -31,6 +35,7 @@ public class Bom extends BasePo {
     /**
      * 名称
      */
+    @NotBlank(message = "名称不能为空")
     private String name;
 
     /**

+ 10 - 0
sd-business/src/main/java/com/sd/business/entity/bom/po/BomOperatingLog.java

@@ -28,4 +28,14 @@ public class BomOperatingLog extends BasePo {
      */
     private Integer type;
 
+    /**
+     * 操作人
+     */
+    private String operator;
+
+    /**
+     * 品号
+     */
+    private String code;
+
 }

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

@@ -1,9 +1,12 @@
 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列表查询返回值实体
  *
@@ -14,4 +17,6 @@ import lombok.Setter;
 @Setter
 public class BomVo extends Bom {
 
+    private List<BomSpec> bomSpecList;
+
 }

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

@@ -2,7 +2,6 @@ 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.BomOperatingLogDto;
 import com.sd.business.entity.bom.dto.BomOperatingLogSelectDto;
 import com.sd.business.entity.bom.po.BomOperatingLog;
 import com.sd.business.entity.bom.vo.BomOperatingLogVo;
@@ -23,24 +22,4 @@ public interface BomOperatingLogService extends BaseService<BomOperatingLog> {
      */
     Page<BomOperatingLogVo> getPage(BomOperatingLogSelectDto dto);
 
-    /**
-     * bom操作日志明细
-     */
-    BomOperatingLogVo detail(Long id);
-
-    /**
-     * bom操作日志新增
-     */
-    void add(BomOperatingLogDto bomOperatingLogDto);
-
-    /**
-     * bom操作日志编辑
-     */
-    void edit(BomOperatingLogDto bomOperatingLogDto);
-
-    /**
-     * bom操作日志删除
-     */
-    void delete(Long id);
-
 }

+ 0 - 24
sd-business/src/main/java/com/sd/business/service/bom/impl/BomOperatingLogServiceImpl.java

@@ -1,10 +1,8 @@
 package com.sd.business.service.bom.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.ruoyi.common.utils.wrapper.IWrapper;
-import com.sd.business.entity.bom.dto.BomOperatingLogDto;
 import com.sd.business.entity.bom.dto.BomOperatingLogSelectDto;
 import com.sd.business.entity.bom.po.BomOperatingLog;
 import com.sd.business.entity.bom.vo.BomOperatingLogVo;
@@ -32,26 +30,4 @@ public class BomOperatingLogServiceImpl extends ServiceImpl<BomOperatingLogMappe
         return page;
     }
 
-    @Override
-    public BomOperatingLogVo detail(Long id) {
-        BomOperatingLog BomOperatingLog = this.getById(id);
-        BomOperatingLogVo result = BeanUtil.toBean(BomOperatingLog, BomOperatingLogVo.class);
-        return result;
-    }
-
-    @Override
-    public void add(BomOperatingLogDto bomOperatingLogDto) {
-        this.save(bomOperatingLogDto);
-    }
-
-    @Override
-    public void edit(BomOperatingLogDto bomOperatingLogDto) {
-        this.updateById(bomOperatingLogDto);
-    }
-
-    @Override
-    public void delete(Long id) {
-        this.removeById(id);
-    }
-
 }

+ 200 - 2
sd-business/src/main/java/com/sd/business/service/bom/impl/BomServiceImpl.java

@@ -1,16 +1,39 @@
 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.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.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 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.BomOperatingLog;
+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.BomOperatingLogService;
 import com.sd.business.service.bom.BomService;
+import com.sd.business.service.bom.BomSpecService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 
 /**
@@ -24,11 +47,48 @@ import org.springframework.stereotype.Service;
 @Service
 public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomService {
 
+    @Autowired
+    private BomSpecService bomSpecService;
+
+    @Autowired
+    private FileInfoService fileInfoService;
+
+    @Autowired
+    private BomOperatingLogService bomOperatingLogService;
+
     @Override
     public Page<BomVo> getPage(BomSelectDto dto) {
         IWrapper<Bom> wrapper = getWrapper();
         wrapper.orderByDesc("b", Bom::getId);
+        wrapper.like("b", Bom::getName, dto.getName());
+        wrapper.like("b", Bom::getCode, dto.getCode());
+        wrapper.eq("b", Bom::getSpecies, dto.getSpecies());
+        wrapper.eq("b", Bom::getChromatophore, dto.getChromatophore());
+        wrapper.eq("b", Bom::getEmbossingProcess, dto.getEmbossingProcess());
+        wrapper.eq("b", Bom::getFrontGrain, dto.getFrontGrain());
+        wrapper.eq("b", Bom::getReverseGrain, dto.getReverseGrain());
+        if (StrUtil.isNotBlank(dto.getColour())) {
+            List<Long> bomIdList = bomSpecService.listObject(BomSpec::getBomId, i -> i.like(BomSpec::getColour, dto.getColour()));
+            if (bomIdList.size() == 0) {
+                return new Page<>();
+            }
+            wrapper.eq("b", Bom::getId, bomIdList);
+        }
+
         Page<BomVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<BomVo> records = page.getRecords();
+        if (records.size() == 0) {
+            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));
+
+        for (BomVo record : records) {
+            record.setBomSpecList(bomSpecIdMap.get(record.getId()));
+        }
+
         return page;
     }
 
@@ -36,22 +96,160 @@ public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomSe
     public BomVo detail(Long id) {
         Bom Bom = this.getById(id);
         BomVo result = BeanUtil.toBean(Bom, BomVo.class);
+
+        List<BomSpec> list = bomSpecService.list(q -> q.eq(BomSpec::getBomId, id));
+        result.setBomSpecList(list);
+
         return result;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(BomDto bomDto) {
-        this.save(bomDto);
+        List<FileInfo> fileInfoList = new ArrayList<>();
+
+        bomDto.setId(IdWorker.getId());
+
+        ObsFile mainImgFile = bomDto.getMainImgFile();
+        if (mainImgFile == null) {
+            bomDto.setMainImgUrl("");
+        } else {
+            FileInfo fileInfo = new FileInfo();
+            fileInfo.setId(mainImgFile.getId());
+            fileInfo.setBusinessId(bomDto.getId());
+            fileInfo.setBusinessType(ObsFileUtil.defaultFileType);
+            fileInfoList.add(fileInfo);
+
+            bomDto.setMainImgUrl(mainImgFile.getFileName());
+        }
+
+        List<BomSpecDto> bomSpecDtoList = bomDto.getBomSpecDtoList();
+        List<BomSpec> bomSpecList = bomSpecDtoList.stream()
+                .peek(item -> {
+                    item.setId(IdWorker.getId());
+                    item.setBomId(bomDto.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.getFileName());
+                    }
+                })
+                .map(item -> BeanUtil.toBean(item, BomSpec.class))
+                .collect(Collectors.toList());
+
+        save(bomDto);
+        bomSpecService.saveBatch(bomSpecList);
+        if (fileInfoList.size() > 0) {
+            fileInfoService.updateBatchById(fileInfoList);
+        }
+
+        BomOperatingLog bomOperatingLog = new BomOperatingLog();
+        bomOperatingLog.setBomId(bomDto.getId());
+        bomOperatingLog.setOperator(SecurityUtils.getLoginUser().getUser().getNickName());
+        bomOperatingLog.setCode(bomDto.getCode());
+        bomOperatingLog.setType(1);
+        bomOperatingLogService.save(bomOperatingLog);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void edit(BomDto bomDto) {
+        List<FileInfo> fileInfoList = new ArrayList<>();
+
+        ObsFile mainImgFile = bomDto.getMainImgFile();
+        if (mainImgFile == null) {
+            bomDto.setMainImgUrl("");
+        } else {
+            FileInfo fileInfo = new FileInfo();
+            fileInfo.setId(mainImgFile.getId());
+            fileInfo.setBusinessId(bomDto.getId());
+            fileInfo.setBusinessType(ObsFileUtil.defaultFileType);
+            fileInfoList.add(fileInfo);
+
+            bomDto.setMainImgUrl(mainImgFile.getFileName());
+        }
+
+        List<BomSpecDto> bomSpecDtoList = bomDto.getBomSpecDtoList();
+        List<BomSpec> bomSpecList = bomSpecDtoList.stream()
+                .peek(item -> {
+                    item.setId(ObjectUtil.defaultIfNull(item.getId(), IdWorker.getId()));
+                    item.setBomId(bomDto.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.getFileName());
+                    }
+                })
+                .map(item -> BeanUtil.toBean(item, BomSpec.class))
+                .collect(Collectors.toList());
+
+        // 修改bom
         this.updateById(bomDto);
+
+        // 修改bom明细
+        List<Long> bomSpecIdList = bomSpecList.stream().map(BomSpec::getId)
+                .filter(Objects::nonNull).distinct().collect(Collectors.toList());
+        bomSpecService.remove(q -> q
+                .eq(BomSpec::getBomId, bomDto.getId())
+                .ne(ObjectUtil.isNotEmpty(bomSpecIdList), BaseIdPo::getId, bomSpecIdList));
+        bomSpecService.saveOrUpdateBatch(bomSpecList);
+
+        // 修改文件
+        List<Long> businessIdList = bomSpecList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+        businessIdList.add(bomDto.getId());
+        List<Long> fileInfoIdList = fileInfoList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+        fileInfoService.remove(q -> q
+                .in(FileInfo::getBusinessId, businessIdList)
+                .ne(ObjectUtil.isNotEmpty(fileInfoIdList), BaseIdPo::getId, fileInfoIdList));
+        if (fileInfoList.size() > 0) {
+            fileInfoService.updateBatchById(fileInfoList);
+        }
+
+        BomOperatingLog bomOperatingLog = new BomOperatingLog();
+        bomOperatingLog.setBomId(bomDto.getId());
+        bomOperatingLog.setOperator(SecurityUtils.getLoginUser().getUser().getNickName());
+        bomOperatingLog.setCode(bomDto.getCode());
+        bomOperatingLog.setType(2);
+        bomOperatingLogService.save(bomOperatingLog);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(Long id) {
-        this.removeById(id);
+        Bom bom = getById(id);
+        if (bom == null) {
+            throw new ServiceException("没有找到bom信息");
+        }
+
+        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));
+
+        BomOperatingLog bomOperatingLog = new BomOperatingLog();
+        bomOperatingLog.setBomId(bom.getId());
+        bomOperatingLog.setOperator(SecurityUtils.getLoginUser().getUser().getNickName());
+        bomOperatingLog.setCode(bom.getCode());
+        bomOperatingLog.setType(3);
+        bomOperatingLogService.save(bomOperatingLog);
     }
 
 }