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