15 changed files with 63 additions and 296 deletions
-
18src/main/java/com/iflytop/sgs/app/controller/CraftsController.java
-
74src/main/java/com/iflytop/sgs/app/controller/OresController.java
-
5src/main/java/com/iflytop/sgs/app/core/CraftsContext.java
-
15src/main/java/com/iflytop/sgs/app/mapper/OresMapper.java
-
4src/main/java/com/iflytop/sgs/app/model/bo/status/device/CraftsState.java
-
4src/main/java/com/iflytop/sgs/app/model/entity/Crafts.java
-
20src/main/java/com/iflytop/sgs/app/model/entity/Ores.java
-
5src/main/java/com/iflytop/sgs/app/model/vo/CraftMonitorVO.java
-
5src/main/java/com/iflytop/sgs/app/model/vo/CraftStatusVO.java
-
5src/main/java/com/iflytop/sgs/app/model/vo/SetCraftsVO.java
-
28src/main/java/com/iflytop/sgs/app/service/api/CraftsService.java
-
102src/main/java/com/iflytop/sgs/app/service/api/OresService.java
-
7src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java
-
2src/main/java/com/iflytop/sgs/app/service/device/DeviceInitService.java
-
65src/main/resources/sql/init.sql
@ -1,74 +0,0 @@ |
|||
package com.iflytop.sgs.app.controller; |
|||
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.iflytop.sgs.app.model.entity.Ores; |
|||
import com.iflytop.sgs.app.model.vo.OresCraftsListVO; |
|||
import com.iflytop.sgs.app.service.api.OresService; |
|||
import com.iflytop.sgs.common.base.BasePageQuery; |
|||
import com.iflytop.sgs.common.result.PageResult; |
|||
import com.iflytop.sgs.common.result.Result; |
|||
import com.iflytop.sgs.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; |
|||
import jakarta.validation.Valid; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
@Tag(name = "矿石管理") |
|||
@RestController |
|||
@RequestMapping("/api/ores") |
|||
@RequiredArgsConstructor |
|||
@Slf4j |
|||
public class OresController { |
|||
private final OresService oresService; |
|||
|
|||
@Operation(summary = "矿石工艺列表") |
|||
@GetMapping("/list") |
|||
public PageResult<OresCraftsListVO> getList(BasePageQuery pageQuery) { |
|||
IPage<OresCraftsListVO> result = oresService.getPage(pageQuery); |
|||
return PageResult.success(result); |
|||
} |
|||
|
|||
@Operation(summary = "添加新矿石") |
|||
@PostMapping("") |
|||
public Result<String> add(@Valid @RequestBody Ores ores) { |
|||
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("") |
|||
public Result<String> update(@Valid @RequestBody Ores ores) { |
|||
Ores existingOres = oresService.findByName(ores.getName()); |
|||
if (existingOres == null) { |
|||
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> delete(@Parameter(description = "矿石ID,多个以英文逗号(,)分割") @PathVariable String ids) { |
|||
boolean isSuccess = oresService.deleteOres(ids); |
|||
if (isSuccess) { |
|||
return Result.success(); |
|||
} |
|||
return Result.failed(); |
|||
} |
|||
|
|||
} |
@ -1,15 +0,0 @@ |
|||
package com.iflytop.sgs.app.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.iflytop.sgs.app.model.entity.Ores; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
/** |
|||
* 矿石持久层接口 |
|||
*/ |
|||
@Mapper |
|||
public interface OresMapper extends BaseMapper<Ores> { |
|||
|
|||
Ores findByName(String name); |
|||
|
|||
} |
@ -1,20 +0,0 @@ |
|||
package com.iflytop.sgs.app.model.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.iflytop.sgs.common.base.BaseEntity; |
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
@EqualsAndHashCode(callSuper = true) |
|||
@Schema(description = "矿石") |
|||
@TableName("ores") |
|||
@Data |
|||
public class Ores extends BaseEntity { |
|||
|
|||
@NotNull |
|||
@Schema(description = "矿石名称") |
|||
private String name; |
|||
|
|||
} |
@ -1,102 +0,0 @@ |
|||
package com.iflytop.sgs.app.service.api; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
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.iflytop.sgs.app.mapper.CraftsMapper; |
|||
import com.iflytop.sgs.app.mapper.OresMapper; |
|||
import com.iflytop.sgs.app.model.entity.Crafts; |
|||
import com.iflytop.sgs.app.model.entity.Ores; |
|||
import com.iflytop.sgs.app.model.vo.OresCraftsListVO; |
|||
import com.iflytop.sgs.common.base.BasePageQuery; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.Arrays; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* 矿石业务实现类 |
|||
*/ |
|||
@Service |
|||
@RequiredArgsConstructor |
|||
public class OresService extends ServiceImpl<OresMapper, Ores> { |
|||
|
|||
private final CraftsMapper craftsMapper; |
|||
|
|||
|
|||
public IPage<OresCraftsListVO> getPage(BasePageQuery pageQuery) { |
|||
// 构建分页对象 |
|||
Page<Ores> oresPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); |
|||
|
|||
// 分页查询矿石数据 |
|||
IPage<Ores> oresIPage = this.baseMapper.selectPage(oresPage, new QueryWrapper<>()); |
|||
|
|||
// 获取矿石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()); |
|||
if (crafts != null) { |
|||
crafts.forEach(c -> c.setSteps(null)); |
|||
} |
|||
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; |
|||
|
|||
} |
|||
|
|||
|
|||
public Ores findByName(String name) { |
|||
return this.getOne(new LambdaQueryWrapper<Ores>().eq(Ores::getName, name)); |
|||
} |
|||
|
|||
|
|||
public boolean addOres(Ores ores) { |
|||
return this.save(ores); |
|||
} |
|||
|
|||
|
|||
public boolean updateOres(Ores ores) { |
|||
return this.updateById(ores); |
|||
} |
|||
|
|||
|
|||
public boolean deleteOres(String idsStr) { |
|||
List<Long> ids = Arrays.stream(idsStr.split(",")) |
|||
.map(Long::parseLong) |
|||
.collect(Collectors.toList()); |
|||
return this.removeByIds(ids); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue