From 1cfdac1e10137fceacf02e3a6a4447b0f27bd07c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Tue, 18 Feb 2025 20:42:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AE=9E=E7=8E=B0=E7=9F=BF=E7=9F=B3?= =?UTF-8?q?=E5=92=8C=E5=B7=A5=E8=89=BA=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qyft/gd/controller/CraftsController.java | 46 +++++++++--- .../com/qyft/gd/controller/OresController.java | 38 ++++++++-- src/main/java/com/qyft/gd/mapper/CraftsMapper.java | 8 +++ src/main/java/com/qyft/gd/mapper/OresMapper.java | 2 + src/main/java/com/qyft/gd/model/entity/Crafts.java | 2 +- .../java/com/qyft/gd/model/vo/CraftsListVO.java | 22 ------ .../com/qyft/gd/model/vo/OresCraftsListVO.java | 32 +++++++++ .../java/com/qyft/gd/service/CraftsService.java | 11 +++ src/main/java/com/qyft/gd/service/OresService.java | 13 +++- .../qyft/gd/service/impl/CraftsServiceImpl.java | 33 ++++++++- .../com/qyft/gd/service/impl/OresServiceImpl.java | 83 ++++++++++++++++++++++ .../qyft/gd/service/impl/SolutionsServiceImpl.java | 3 +- src/main/resources/mapper/CraftsMapper.xml | 7 ++ src/main/resources/mapper/OresMapper.xml | 3 + 14 files changed, 257 insertions(+), 46 deletions(-) delete mode 100644 src/main/java/com/qyft/gd/model/vo/CraftsListVO.java create mode 100644 src/main/java/com/qyft/gd/model/vo/OresCraftsListVO.java diff --git a/src/main/java/com/qyft/gd/controller/CraftsController.java b/src/main/java/com/qyft/gd/controller/CraftsController.java index 69a0f02..7c4c1e8 100644 --- a/src/main/java/com/qyft/gd/controller/CraftsController.java +++ b/src/main/java/com/qyft/gd/controller/CraftsController.java @@ -1,11 +1,9 @@ package com.qyft.gd.controller; import com.qyft.gd.model.entity.Crafts; -import com.qyft.gd.model.vo.CraftsListVO; import com.qyft.gd.service.CraftsService; -import com.qyft.gd.system.common.base.BasePageQuery; -import com.qyft.gd.system.common.result.PageResult; import com.qyft.gd.system.common.result.Result; +import com.qyft.gd.system.common.result.ResultCode; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -13,6 +11,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; +import java.util.List; + @Tag(name = "工艺管理") @RestController @RequestMapping("/api/crafts") @@ -21,33 +21,57 @@ import org.springframework.web.bind.annotation.*; public class CraftsController { private final CraftsService craftsService; - @Operation(summary = "工艺列表") - @GetMapping("/list") - public PageResult getAllCrafts(BasePageQuery pageQuery) { - return PageResult.success(null); + @Operation(summary = "根据矿石id获取工艺列表") + @GetMapping("/list/{oresId}") + public Result> getAllCrafts(@Parameter(description = "矿石ID") @PathVariable Long oresId) { + List craftList = craftsService.selectAllByOresId(oresId); + return Result.success(craftList); } @Operation(summary = "添加新工艺") @PostMapping("/") public Result addCrafts(@RequestBody Crafts crafts) { - return Result.success(); + Crafts existingCrafts = craftsService.findByName(crafts.getName()); + if (existingCrafts == null) { + boolean isSuccess = craftsService.addCrafts(crafts); + if (isSuccess) { + return Result.success(); + } + } else { + return Result.failed(ResultCode.DATA_ALREADY_EXISTS); + } + return Result.failed(); } @Operation(summary = "更新工艺") @PutMapping("/{id}") public Result updateCrafts(@PathVariable Long id, @RequestBody Crafts crafts) { - return Result.success(); + Crafts existingCrafts = craftsService.findByName(crafts.getName()); + if (existingCrafts == null) { + crafts.setId(id); + boolean isSuccess = craftsService.updateCrafts(crafts); + if (isSuccess) { + return Result.success(); + } + } else { + return Result.failed(ResultCode.DATA_ALREADY_EXISTS); + } + return Result.failed(); } @Operation(summary = "删除工艺") @DeleteMapping("/{ids}") public Result deleteCrafts(@Parameter(description = "工艺ID,多个以英文逗号(,)分割") @PathVariable String ids) { - return Result.success(); + boolean isSuccess = craftsService.deleteCrafts(ids); + if (isSuccess) { + return Result.success(); + } + return Result.failed(); } @Operation(summary = "开始执行工艺") @PostMapping("/start") - public Result startCrafts(@Parameter(description = "工艺id") @RequestParam Long craftId, @Parameter(description = "加热区idid") @RequestParam Long heatId) { + public Result startCrafts(@Parameter(description = "工艺id") @RequestParam Long craftId, @Parameter(description = "加热区id") @RequestParam Long heatId) { return Result.success(); } diff --git a/src/main/java/com/qyft/gd/controller/OresController.java b/src/main/java/com/qyft/gd/controller/OresController.java index e5a6ec7..4ec361b 100644 --- a/src/main/java/com/qyft/gd/controller/OresController.java +++ b/src/main/java/com/qyft/gd/controller/OresController.java @@ -2,11 +2,14 @@ package com.qyft.gd.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qyft.gd.model.entity.Crafts; import com.qyft.gd.model.entity.Ores; +import com.qyft.gd.model.vo.OresCraftsListVO; import com.qyft.gd.service.OresService; import com.qyft.gd.system.common.base.BasePageQuery; import com.qyft.gd.system.common.result.PageResult; import com.qyft.gd.system.common.result.Result; +import com.qyft.gd.system.common.result.ResultCode; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -22,29 +25,52 @@ import org.springframework.web.bind.annotation.*; public class OresController { private final OresService oresService; - @Operation(summary = "矿石列表") + @Operation(summary = "矿石工艺列表") @GetMapping("/list") - public PageResult getAllOres(BasePageQuery pageQuery) { - IPage result = oresService.page(new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()), null); + public PageResult getAllOres(BasePageQuery pageQuery) { + IPage result = oresService.getPage(pageQuery); return PageResult.success(result); } @Operation(summary = "添加新矿石") @PostMapping("/") public Result addOres(@RequestBody Ores ores) { - return Result.success(); + Ores existingOres = oresService.findByName(ores.getName()); + if (existingOres == null) { + boolean isSuccess = oresService.addOres(ores); + if (isSuccess) { + return Result.success(); + } + } else { + return Result.failed(ResultCode.DATA_ALREADY_EXISTS); + } + return Result.failed(); } @Operation(summary = "更新矿石") @PutMapping("/{id}") public Result updateOres(@PathVariable Long id, @RequestBody Ores ores) { - return Result.success(); + Ores existingOres = oresService.findByName(ores.getName()); + if (existingOres == null) { + ores.setId(id); + boolean isSuccess = oresService.updateOres(ores); + if (isSuccess) { + return Result.success(); + } + } else { + return Result.failed(ResultCode.DATA_ALREADY_EXISTS); + } + return Result.failed(); } @Operation(summary = "删除矿石") @DeleteMapping("/{ids}") public Result deleteOres(@Parameter(description = "矿石ID,多个以英文逗号(,)分割") @PathVariable String ids) { - return Result.success(); + boolean isSuccess = oresService.deleteOres(ids); + if (isSuccess) { + return Result.success(); + } + return Result.failed(); } } diff --git a/src/main/java/com/qyft/gd/mapper/CraftsMapper.java b/src/main/java/com/qyft/gd/mapper/CraftsMapper.java index d00918e..85aee4d 100644 --- a/src/main/java/com/qyft/gd/mapper/CraftsMapper.java +++ b/src/main/java/com/qyft/gd/mapper/CraftsMapper.java @@ -1,13 +1,21 @@ package com.qyft.gd.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.qyft.gd.model.entity.Crafts; +import com.qyft.gd.model.entity.Ores; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 工艺持久层接口 */ @Mapper public interface CraftsMapper extends BaseMapper { + List selectAllByOresId(Long oresId); + + Crafts findByName(String name); + } diff --git a/src/main/java/com/qyft/gd/mapper/OresMapper.java b/src/main/java/com/qyft/gd/mapper/OresMapper.java index 8e2c164..031199f 100644 --- a/src/main/java/com/qyft/gd/mapper/OresMapper.java +++ b/src/main/java/com/qyft/gd/mapper/OresMapper.java @@ -10,4 +10,6 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface OresMapper extends BaseMapper { + Ores findByName(String name); + } diff --git a/src/main/java/com/qyft/gd/model/entity/Crafts.java b/src/main/java/com/qyft/gd/model/entity/Crafts.java index 9c167f3..c0c06dd 100644 --- a/src/main/java/com/qyft/gd/model/entity/Crafts.java +++ b/src/main/java/com/qyft/gd/model/entity/Crafts.java @@ -22,5 +22,5 @@ public class Crafts extends BaseEntity { private String steps; @Schema(description = "矿石ID") - private Integer oresId; + private Long oresId; } diff --git a/src/main/java/com/qyft/gd/model/vo/CraftsListVO.java b/src/main/java/com/qyft/gd/model/vo/CraftsListVO.java deleted file mode 100644 index 6a70c6c..0000000 --- a/src/main/java/com/qyft/gd/model/vo/CraftsListVO.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.qyft.gd.model.vo; - -import com.qyft.gd.model.entity.Crafts; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -@Schema(description = "工艺视图") -@Data -public class CraftsListVO { - - @Schema(description = "矿石id") - private Long id; - - @Schema(description = "矿石名称") - private String oresName; - - @Schema(description = "该矿石下工艺列表") - private List craftsList; - -} diff --git a/src/main/java/com/qyft/gd/model/vo/OresCraftsListVO.java b/src/main/java/com/qyft/gd/model/vo/OresCraftsListVO.java new file mode 100644 index 0000000..7ce9b9c --- /dev/null +++ b/src/main/java/com/qyft/gd/model/vo/OresCraftsListVO.java @@ -0,0 +1,32 @@ +package com.qyft.gd.model.vo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.qyft.gd.model.entity.Crafts; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "矿石工艺视图") +@Data +public class OresCraftsListVO { + + @Schema(description = "矿石id") + private Long id; + + @Schema(description = "矿石名称") + private String oresName; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + @Schema(description = "该矿石下工艺列表") + private List craftsList; + +} diff --git a/src/main/java/com/qyft/gd/service/CraftsService.java b/src/main/java/com/qyft/gd/service/CraftsService.java index b49efb7..d39144d 100644 --- a/src/main/java/com/qyft/gd/service/CraftsService.java +++ b/src/main/java/com/qyft/gd/service/CraftsService.java @@ -3,9 +3,20 @@ package com.qyft.gd.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qyft.gd.model.entity.Crafts; +import java.util.List; + /** * 工艺业务接口 */ public interface CraftsService extends IService { + List selectAllByOresId(Long oresId); + + Crafts findByName(String name); + + boolean addCrafts(Crafts crafts); + + boolean updateCrafts(Crafts crafts); + + boolean deleteCrafts(String idsStr); } diff --git a/src/main/java/com/qyft/gd/service/OresService.java b/src/main/java/com/qyft/gd/service/OresService.java index dd73b09..e0d3dd4 100644 --- a/src/main/java/com/qyft/gd/service/OresService.java +++ b/src/main/java/com/qyft/gd/service/OresService.java @@ -1,12 +1,23 @@ package com.qyft.gd.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.qyft.gd.model.entity.Ores; -import com.qyft.gd.model.entity.Solutions; +import com.qyft.gd.model.vo.OresCraftsListVO; +import com.qyft.gd.system.common.base.BasePageQuery; /** * 矿石业务接口 */ public interface OresService extends IService { + IPage getPage(BasePageQuery pageQuery); + + Ores findByName(String name); + + boolean addOres(Ores ores); + + boolean updateOres(Ores ores); + + boolean deleteOres(String idsStr); } diff --git a/src/main/java/com/qyft/gd/service/impl/CraftsServiceImpl.java b/src/main/java/com/qyft/gd/service/impl/CraftsServiceImpl.java index 0485ed5..b6e97f7 100644 --- a/src/main/java/com/qyft/gd/service/impl/CraftsServiceImpl.java +++ b/src/main/java/com/qyft/gd/service/impl/CraftsServiceImpl.java @@ -2,14 +2,15 @@ package com.qyft.gd.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qyft.gd.mapper.CraftsMapper; -import com.qyft.gd.mapper.OresMapper; import com.qyft.gd.model.entity.Crafts; -import com.qyft.gd.model.entity.Ores; import com.qyft.gd.service.CraftsService; -import com.qyft.gd.service.OresService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * 工艺业务实现类 */ @@ -17,5 +18,31 @@ import org.springframework.stereotype.Service; @RequiredArgsConstructor public class CraftsServiceImpl extends ServiceImpl implements CraftsService { + @Override + public List selectAllByOresId(Long oresId) { + return this.baseMapper.selectAllByOresId(oresId); + } + + @Override + public Crafts findByName(String name) { + return this.baseMapper.findByName(name); + } + + @Override + public boolean addCrafts(Crafts crafts) { + return this.baseMapper.insert(crafts) > 0; + } + + @Override + public boolean updateCrafts(Crafts crafts) { + return this.baseMapper.updateById(crafts) > 0; + } + @Override + public boolean deleteCrafts(String idsStr) { + List ids = Arrays.stream(idsStr.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + return this.removeByIds(ids); + } } diff --git a/src/main/java/com/qyft/gd/service/impl/OresServiceImpl.java b/src/main/java/com/qyft/gd/service/impl/OresServiceImpl.java index b050c5f..0af9d24 100644 --- a/src/main/java/com/qyft/gd/service/impl/OresServiceImpl.java +++ b/src/main/java/com/qyft/gd/service/impl/OresServiceImpl.java @@ -1,12 +1,26 @@ package com.qyft.gd.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qyft.gd.mapper.CraftsMapper; import com.qyft.gd.mapper.OresMapper; +import com.qyft.gd.model.entity.Crafts; import com.qyft.gd.model.entity.Ores; +import com.qyft.gd.model.vo.OresCraftsListVO; import com.qyft.gd.service.OresService; +import com.qyft.gd.system.common.base.BasePageQuery; +import com.qyft.gd.system.common.result.PageResult; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** * 矿石业务实现类 */ @@ -14,5 +28,74 @@ import org.springframework.stereotype.Service; @RequiredArgsConstructor public class OresServiceImpl extends ServiceImpl implements OresService { + private final CraftsMapper craftsMapper; + + @Override + public IPage getPage(BasePageQuery pageQuery) { + // 构建分页对象 + Page oresPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); + + // 分页查询矿石数据 + IPage oresIPage = this.baseMapper.selectPage(oresPage, new QueryWrapper()); + + // 获取矿石ID列表 + List oresIds = oresIPage.getRecords().stream() + .map(Ores::getId) + .collect(Collectors.toList()); + + // 查询对应的工艺数据 + QueryWrapper craftsQueryWrapper = new QueryWrapper<>(); + craftsQueryWrapper.in("ores_id", oresIds); + List craftsList = craftsMapper.selectList(craftsQueryWrapper); + + // 将工艺数据按矿石ID分组 + Map> craftsMap = craftsList.stream() + .collect(Collectors.groupingBy(Crafts::getOresId)); + + // 转换成 OresCraftsListVO + List oresCraftsList = oresIPage.getRecords().stream().map(ores -> { + OresCraftsListVO oresCraftsListVO = new OresCraftsListVO(); + oresCraftsListVO.setId(ores.getId()); + oresCraftsListVO.setOresName(ores.getName()); + oresCraftsListVO.setCreateTime(ores.getCreateTime()); + oresCraftsListVO.setUpdateTime(ores.getUpdateTime()); + + // 设置该矿石的工艺列表 + List crafts = craftsMap.get(ores.getId()); + oresCraftsListVO.setCraftsList(crafts); + + return oresCraftsListVO; + }).collect(Collectors.toList()); + + // 将转换后的分页数据放入新的分页对象 + Page resultPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); + resultPage.setTotal(oresIPage.getTotal()); + resultPage.setRecords(oresCraftsList); + + return resultPage; + + } + + @Override + public Ores findByName(String name) { + return this.baseMapper.findByName(name); + } + + @Override + public boolean addOres(Ores ores) { + return this.baseMapper.insert(ores) > 0; + } + + @Override + public boolean updateOres(Ores ores) { + return this.baseMapper.updateById(ores) > 0; + } + @Override + public boolean deleteOres(String idsStr) { + List ids = Arrays.stream(idsStr.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + return this.removeByIds(ids); + } } diff --git a/src/main/java/com/qyft/gd/service/impl/SolutionsServiceImpl.java b/src/main/java/com/qyft/gd/service/impl/SolutionsServiceImpl.java index 28ef116..0623ea5 100644 --- a/src/main/java/com/qyft/gd/service/impl/SolutionsServiceImpl.java +++ b/src/main/java/com/qyft/gd/service/impl/SolutionsServiceImpl.java @@ -20,8 +20,7 @@ public class SolutionsServiceImpl extends ServiceImpl + + + diff --git a/src/main/resources/mapper/OresMapper.xml b/src/main/resources/mapper/OresMapper.xml index 392a5ad..415517a 100644 --- a/src/main/resources/mapper/OresMapper.xml +++ b/src/main/resources/mapper/OresMapper.xml @@ -3,4 +3,7 @@ +