Browse Source

feat:实现矿石和工艺相关接口

master
白凤吉 6 months ago
parent
commit
1cfdac1e10
  1. 46
      src/main/java/com/qyft/gd/controller/CraftsController.java
  2. 38
      src/main/java/com/qyft/gd/controller/OresController.java
  3. 8
      src/main/java/com/qyft/gd/mapper/CraftsMapper.java
  4. 2
      src/main/java/com/qyft/gd/mapper/OresMapper.java
  5. 2
      src/main/java/com/qyft/gd/model/entity/Crafts.java
  6. 22
      src/main/java/com/qyft/gd/model/vo/CraftsListVO.java
  7. 32
      src/main/java/com/qyft/gd/model/vo/OresCraftsListVO.java
  8. 11
      src/main/java/com/qyft/gd/service/CraftsService.java
  9. 13
      src/main/java/com/qyft/gd/service/OresService.java
  10. 33
      src/main/java/com/qyft/gd/service/impl/CraftsServiceImpl.java
  11. 83
      src/main/java/com/qyft/gd/service/impl/OresServiceImpl.java
  12. 3
      src/main/java/com/qyft/gd/service/impl/SolutionsServiceImpl.java
  13. 7
      src/main/resources/mapper/CraftsMapper.xml
  14. 3
      src/main/resources/mapper/OresMapper.xml

46
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<CraftsListVO> getAllCrafts(BasePageQuery pageQuery) {
return PageResult.success(null);
@Operation(summary = "根据矿石id获取工艺列表")
@GetMapping("/list/{oresId}")
public Result<List<Crafts>> getAllCrafts(@Parameter(description = "矿石ID") @PathVariable Long oresId) {
List<Crafts> craftList = craftsService.selectAllByOresId(oresId);
return Result.success(craftList);
}
@Operation(summary = "添加新工艺")
@PostMapping("/")
public Result<String> 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<String> 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<String> 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<String> startCrafts(@Parameter(description = "工艺id") @RequestParam Long craftId, @Parameter(description = "加热区idid") @RequestParam Long heatId) {
public Result<String> startCrafts(@Parameter(description = "工艺id") @RequestParam Long craftId, @Parameter(description = "加热区id") @RequestParam Long heatId) {
return Result.success();
}

38
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<Ores> getAllOres(BasePageQuery pageQuery) {
IPage<Ores> result = oresService.page(new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()), null);
public PageResult<OresCraftsListVO> getAllOres(BasePageQuery pageQuery) {
IPage<OresCraftsListVO> result = oresService.getPage(pageQuery);
return PageResult.success(result);
}
@Operation(summary = "添加新矿石")
@PostMapping("/")
public Result<String> 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<String> 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<String> deleteOres(@Parameter(description = "矿石ID,多个以英文逗号(,)分割") @PathVariable String ids) {
return Result.success();
boolean isSuccess = oresService.deleteOres(ids);
if (isSuccess) {
return Result.success();
}
return Result.failed();
}
}

8
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<Crafts> {
List<Crafts> selectAllByOresId(Long oresId);
Crafts findByName(String name);
}

2
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> {
Ores findByName(String name);
}

2
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;
}

22
src/main/java/com/qyft/gd/model/vo/CraftsListVO.java

@ -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<Crafts> craftsList;
}

32
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<Crafts> craftsList;
}

11
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<Crafts> {
List<Crafts> selectAllByOresId(Long oresId);
Crafts findByName(String name);
boolean addCrafts(Crafts crafts);
boolean updateCrafts(Crafts crafts);
boolean deleteCrafts(String idsStr);
}

13
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<Ores> {
IPage<OresCraftsListVO> getPage(BasePageQuery pageQuery);
Ores findByName(String name);
boolean addOres(Ores ores);
boolean updateOres(Ores ores);
boolean deleteOres(String idsStr);
}

33
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<CraftsMapper, Crafts> implements CraftsService {
@Override
public List<Crafts> 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<Long> ids = Arrays.stream(idsStr.split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
return this.removeByIds(ids);
}
}

83
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<OresMapper, Ores> implements OresService {
private final CraftsMapper craftsMapper;
@Override
public IPage<OresCraftsListVO> getPage(BasePageQuery pageQuery) {
// 构建分页对象
Page<Ores> oresPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
// 分页查询矿石数据
IPage<Ores> oresIPage = this.baseMapper.selectPage(oresPage, new QueryWrapper<Ores>());
// 获取矿石ID列表
List<Long> oresIds = oresIPage.getRecords().stream()
.map(Ores::getId)
.collect(Collectors.toList());
// 查询对应的工艺数据
QueryWrapper<Crafts> craftsQueryWrapper = new QueryWrapper<>();
craftsQueryWrapper.in("ores_id", oresIds);
List<Crafts> craftsList = craftsMapper.selectList(craftsQueryWrapper);
// 将工艺数据按矿石ID分组
Map<Long, List<Crafts>> craftsMap = craftsList.stream()
.collect(Collectors.groupingBy(Crafts::getOresId));
// 转换成 OresCraftsListVO
List<OresCraftsListVO> 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> crafts = craftsMap.get(ores.getId());
oresCraftsListVO.setCraftsList(crafts);
return oresCraftsListVO;
}).collect(Collectors.toList());
// 将转换后的分页数据放入新的分页对象
Page<OresCraftsListVO> 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<Long> ids = Arrays.stream(idsStr.split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
return this.removeByIds(ids);
}
}

3
src/main/java/com/qyft/gd/service/impl/SolutionsServiceImpl.java

@ -20,8 +20,7 @@ public class SolutionsServiceImpl extends ServiceImpl<SolutionsMapper, Solutions
@Override
public Solutions findByName(String name) {
this.baseMapper.findByName(name);
return null;
return this.baseMapper.findByName(name);
}
@Override

7
src/main/resources/mapper/CraftsMapper.xml

@ -3,4 +3,11 @@
<mapper namespace="com.qyft.gd.mapper.CraftsMapper">
<select id="findByName" resultType="com.qyft.gd.model.entity.Crafts">
SELECT * FROM crafts WHERE name = #{name}
</select>
<select id="selectAllByOresId" resultType="com.qyft.gd.model.entity.Crafts">
SELECT * FROM crafts WHERE ores_id = #{oresId}
</select>
</mapper>

3
src/main/resources/mapper/OresMapper.xml

@ -3,4 +3,7 @@
<mapper namespace="com.qyft.gd.mapper.OresMapper">
<select id="findByName" resultType="com.qyft.gd.model.entity.Ores">
SELECT * FROM ores WHERE name = #{name}
</select>
</mapper>
Loading…
Cancel
Save