feat(material-task): 新增任务采集相关接口
This commit is contained in:
24
pom.xml
24
pom.xml
@@ -95,19 +95,19 @@
|
||||
<version>${mjkf-xinke.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 代码生成插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-gen</artifactId>
|
||||
<version>${mjkf-xinke.version}</version>
|
||||
</dependency>
|
||||
<!--<!– 代码生成插件 –>-->
|
||||
<!--<dependency>-->
|
||||
<!--<groupId>mjkf.xinke</groupId>-->
|
||||
<!--<artifactId>mjkf-xinke-plugin-gen</artifactId>-->
|
||||
<!--<version>${mjkf-xinke.version}</version>-->
|
||||
<!--</dependency>-->
|
||||
|
||||
<!-- 移动端管理插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-mobile</artifactId>
|
||||
<version>${mjkf-xinke.version}</version>
|
||||
</dependency>
|
||||
<!--<!– 移动端管理插件 –>-->
|
||||
<!--<dependency>-->
|
||||
<!--<groupId>mjkf.xinke</groupId>-->
|
||||
<!--<artifactId>mjkf-xinke-plugin-mobile</artifactId>-->
|
||||
<!--<version>${mjkf-xinke.version}</version>-->
|
||||
<!--</dependency>-->
|
||||
|
||||
<!-- 系统功能插件 -->
|
||||
<dependency>
|
||||
|
@@ -21,6 +21,7 @@ public enum HttpErrorResponseEnum implements NcHttpErrorResponseInterface {
|
||||
MATERIAL_ID_REPEAT("材料 id 重复", 400, HttpStatus.SC_NOT_FOUND),
|
||||
MATERIAL_ID_INVALID("材料 id 无效", 400, HttpStatus.SC_NOT_FOUND),
|
||||
MATERIAL_PARENT_ID_INVALID("材料 parent_id 无效", 400, HttpStatus.SC_NOT_FOUND),
|
||||
MATERIAL_TASK_NOT_FOUND("找不到指定材料采集任务", 400, HttpStatus.SC_NOT_FOUND),
|
||||
;
|
||||
|
||||
private String message;
|
||||
|
@@ -0,0 +1,18 @@
|
||||
package mjkf.xinke.main.constant;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MaterialTaskStatus {
|
||||
public static final Integer WAITING = 0;
|
||||
public static final Integer DOING = 1;
|
||||
public static final Integer DONE = 2;
|
||||
public static final Integer FAILED = -1;
|
||||
|
||||
public static final List<Integer> list = List.of(
|
||||
FAILED,
|
||||
WAITING,
|
||||
DOING,
|
||||
DONE
|
||||
);
|
||||
}
|
||||
|
45
src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java
Normal file
45
src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mjkf.xinke.main.constant;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MaterialTaskType {
|
||||
public static final Integer MY_STEEL_REBAR = 101; // 钢筋网_钢筋
|
||||
// public static final Integer MY_STEEL_ = ""; // 钢筋网_钢绞线
|
||||
public static final Integer MY_STEEL_STRAND = 103; // 钢筋网_型钢
|
||||
public static final Integer MY_STEEL_PLATE = 104; // 钢筋网_中厚板
|
||||
|
||||
public static final Integer BAIINFO_ASPHALT_DOMESTIC = 201; // 百川网_国产沥青
|
||||
public static final Integer BAIINFO_ASPHALT_IMPORTED = 202; // 百川网_进口沥青
|
||||
public static final Integer BAIINFO_CEMENT = 203; // 百川网_水泥
|
||||
|
||||
public static final Integer SANMING_STEEL = 301; // 三明钢铁
|
||||
|
||||
public static final Integer FUZHOU_TRANSPORTATION_BUREAU = 401; // 福州交通局
|
||||
public static final Integer FUZHOU_HIGHWAY_BUREAU = 402; // 福州公路局
|
||||
|
||||
public static final Integer FUJIAN_SURVEY = 501; // 福建省交通工程材料调查表
|
||||
|
||||
public static final Integer OTHER_ZHEJIANG = 601; // 其他省份_浙江
|
||||
public static final Integer OTHER_GIANLZHOU = 602; // 其他省份_广州
|
||||
public static final Integer OTHER_YUNNAN = 603; // 其他省份_云南
|
||||
|
||||
public static final Integer FUJIAN_DEPARTMENT = 701; // 住建厅
|
||||
|
||||
public static final List<Integer> list = List.of(
|
||||
MY_STEEL_REBAR,
|
||||
MY_STEEL_STRAND,
|
||||
MY_STEEL_PLATE,
|
||||
BAIINFO_ASPHALT_DOMESTIC,
|
||||
BAIINFO_ASPHALT_IMPORTED,
|
||||
BAIINFO_CEMENT,
|
||||
SANMING_STEEL,
|
||||
FUZHOU_TRANSPORTATION_BUREAU,
|
||||
FUZHOU_HIGHWAY_BUREAU,
|
||||
FUJIAN_SURVEY,
|
||||
OTHER_ZHEJIANG,
|
||||
OTHER_GIANLZHOU,
|
||||
OTHER_YUNNAN,
|
||||
FUJIAN_DEPARTMENT
|
||||
);
|
||||
}
|
||||
|
@@ -8,7 +8,6 @@ import com.jgy.xxs.core.http.exp.NcHttpException;
|
||||
import com.jgy.xxs.core.http.resp.HttpResponse;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import mjkf.xinke.auth.core.pojo.SaBaseLoginUser;
|
||||
import mjkf.xinke.auth.core.util.StpLoginUserUtil;
|
||||
import mjkf.xinke.main.common.http.FuHttpResponse;
|
||||
import mjkf.xinke.main.constant.HttpErrorResponseEnum;
|
||||
@@ -62,8 +61,8 @@ public class MaterialController {
|
||||
@ApiOperation("获取材料列表")
|
||||
@GetMapping("/")
|
||||
public HttpResponse list (
|
||||
@ApiParam(value = "关键字") String keyWord,
|
||||
@ApiParam(value = "父节点id") String parentId
|
||||
@ApiParam(value = "关键字") @RequestParam(value="key_word", required=false) String keyWord,
|
||||
@ApiParam(value = "父节点id") @RequestParam("parent_id") String parentId
|
||||
) {
|
||||
LambdaQueryWrapper<Material> query = new LambdaQueryWrapper<>();
|
||||
if (parentId != null){
|
||||
|
@@ -0,0 +1,105 @@
|
||||
package mjkf.xinke.main.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jgy.xxs.core.http.exp.NcHttpException;
|
||||
import com.jgy.xxs.core.http.resp.HttpResponse;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import mjkf.xinke.auth.core.util.StpLoginUserUtil;
|
||||
import mjkf.xinke.main.common.http.FuHttpResponse;
|
||||
import mjkf.xinke.main.constant.HttpErrorResponseEnum;
|
||||
import mjkf.xinke.main.model.db.MaterialTask;
|
||||
import mjkf.xinke.main.model.vo.MaterialTaskCreateRequest;
|
||||
import mjkf.xinke.main.service.MaterialTaskService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 采集任务 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author han0
|
||||
* @since 2023-11-09
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/material-task")
|
||||
public class MaterialTaskController {
|
||||
|
||||
@Resource
|
||||
MaterialTaskService materialTaskService;
|
||||
|
||||
@ApiOperation("获取采集任务列表")
|
||||
@GetMapping("/")
|
||||
public HttpResponse list(
|
||||
@ApiParam("每页数量") @RequestParam(name = "limit", defaultValue = "10") Integer limit,
|
||||
@ApiParam("页码") @RequestParam(name = "page", defaultValue = "1") Integer page,
|
||||
@ApiParam("任务类型") Integer type,
|
||||
@ApiParam("关键字") @RequestParam(name = "key_word", required = false) String keyWord,
|
||||
@ApiParam("月份") Integer month
|
||||
) {
|
||||
LambdaQueryWrapper<MaterialTask> query = new LambdaQueryWrapper<>();
|
||||
query.eq(MaterialTask::getType, type);
|
||||
query.eq(MaterialTask::getMonth, month);
|
||||
if (keyWord != null) {
|
||||
query.like(MaterialTask::getName, keyWord);
|
||||
}
|
||||
var result = materialTaskService.page(new Page<>(page, limit), query);
|
||||
return FuHttpResponse.Builder().pageResponse(result).build();
|
||||
}
|
||||
|
||||
@ApiOperation("创建采集任务列表")
|
||||
@PostMapping("/")
|
||||
public HttpResponse create(
|
||||
@ApiParam("参数") @RequestBody MaterialTaskCreateRequest params
|
||||
) throws Exception {
|
||||
// 创建任务
|
||||
params.check();
|
||||
var user = StpLoginUserUtil.getLoginUser();
|
||||
var data = new MaterialTask(params, user);
|
||||
materialTaskService.save(data);
|
||||
|
||||
// todo 解析
|
||||
// todo 写入数据
|
||||
// try (Workbook workbook = WorkbookFactory.create(file.getInputStream())) {
|
||||
// Sheet sheet = workbook.getSheetAt(0); // 假设文件中只有一个表格
|
||||
//
|
||||
// Iterator<Row> rowIterator = sheet.iterator();
|
||||
// rowIterator.next(); // 跳过标题行
|
||||
//
|
||||
// while (rowIterator.hasNext()) {
|
||||
// Row row = rowIterator.next();
|
||||
// // 从每一行中获取数据并调用 MyBatis-Plus 的方法写入数据库
|
||||
// yourService.saveData(row.getCell(0).getStringCellValue(), row.getCell(1).getNumericCellValue());
|
||||
// }
|
||||
// } catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
return FuHttpResponse.Builder().dataResponse(data).build();
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("获取采集任务数据")
|
||||
@GetMapping("/{id}/data")
|
||||
public HttpResponse getData(
|
||||
@ApiParam("每页数量") @RequestParam(name = "limit", defaultValue = "10") Integer limit,
|
||||
@ApiParam("页码") @RequestParam(name = "page", defaultValue = "1") Integer page,
|
||||
@PathVariable String id
|
||||
) throws Exception {
|
||||
// 获取类型
|
||||
var data = materialTaskService.getById(id);
|
||||
if (data == null) {
|
||||
throw new NcHttpException(HttpErrorResponseEnum.MATERIAL_TASK_NOT_FOUND);
|
||||
}
|
||||
var type = data.getType();
|
||||
// todo 根据类型定位数据表
|
||||
// todo 按任务id作为过滤条件查找数据(分页)
|
||||
|
||||
return FuHttpResponse.Builder().dataResponse().build();
|
||||
}
|
||||
|
||||
|
||||
}
|
16
src/main/java/mjkf/xinke/main/dao/MaterialTaskMapper.java
Normal file
16
src/main/java/mjkf/xinke/main/dao/MaterialTaskMapper.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package mjkf.xinke.main.dao;
|
||||
|
||||
import mjkf.xinke.main.model.db.MaterialTask;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 采集任务 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author han0
|
||||
* @since 2023-11-10
|
||||
*/
|
||||
public interface MaterialTaskMapper extends BaseMapper<MaterialTask> {
|
||||
|
||||
}
|
114
src/main/java/mjkf/xinke/main/model/db/MaterialTask.java
Normal file
114
src/main/java/mjkf/xinke/main/model/db/MaterialTask.java
Normal file
@@ -0,0 +1,114 @@
|
||||
package mjkf.xinke.main.model.db;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonNaming;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import mjkf.xinke.auth.core.pojo.SaBaseLoginUser;
|
||||
import mjkf.xinke.main.constant.MaterialTaskStatus;
|
||||
import mjkf.xinke.main.model.vo.MaterialTaskCreateRequest;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 采集任务
|
||||
* </p>
|
||||
*
|
||||
* @author han0
|
||||
* @since 2023-11-10
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
|
||||
@TableName("MATERIAL_TASK")
|
||||
@ApiModel(value = "MaterialTask对象", description = "采集任务")
|
||||
public class MaterialTask extends Model<MaterialTask> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("最后更新人id")
|
||||
@TableField("UPDATE_USER_ID")
|
||||
private String updateUserId;
|
||||
|
||||
@ApiModelProperty("最后更新人名称")
|
||||
@TableField("UPDATE_USER_NAME")
|
||||
private String updateUserName;
|
||||
|
||||
@ApiModelProperty("最后更新时间")
|
||||
@TableField("UPDATE_TIME")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@ApiModelProperty("创建人id")
|
||||
@TableField("CREATE_USER_ID")
|
||||
private String createUserId;
|
||||
|
||||
@ApiModelProperty("创建人名称")
|
||||
@TableField("CREATE_USER_NAME")
|
||||
private String createUserName;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
@TableField("CREATE_TIME")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("删除人id")
|
||||
@TableField("DELETE_USER_ID")
|
||||
private String deleteUserId;
|
||||
|
||||
@ApiModelProperty("删除人名称")
|
||||
@TableField("DELETE_USER_NAME")
|
||||
private String deleteUserName;
|
||||
|
||||
@ApiModelProperty("删除时间")
|
||||
@TableField("DELETE_TIME")
|
||||
private LocalDateTime deleteTime;
|
||||
|
||||
@TableId(value = "ID", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("任务名称")
|
||||
@TableField("`NAME`")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("状态(待采集、已采集、采集中)")
|
||||
@TableField("`STATUS`")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("文件路径")
|
||||
@TableField("`FILE`")
|
||||
private String file;
|
||||
|
||||
@ApiModelProperty("类型(网络爬取、文件上传)")
|
||||
@TableField("`TYPE`")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty("采集月份")
|
||||
@TableField("`MONTH`")
|
||||
private Integer month;
|
||||
|
||||
@Override
|
||||
public Serializable pkVal() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public MaterialTask() {}
|
||||
|
||||
public MaterialTask(MaterialTaskCreateRequest params, SaBaseLoginUser user) {
|
||||
this.type = params.getType();
|
||||
this.month = params.getMonth();
|
||||
this.file = params.getFile();
|
||||
|
||||
this.createUserId = user.getId();
|
||||
this.createUserName = user.getName();
|
||||
this.createTime = LocalDateTime.now();
|
||||
this.status = MaterialTaskStatus.WAITING;
|
||||
}
|
||||
}
|
@@ -0,0 +1,22 @@
|
||||
package mjkf.xinke.main.model.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class MaterialTaskCreateRequest {
|
||||
|
||||
@ApiModelProperty("任务类型")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty("月份")
|
||||
private Integer month;
|
||||
|
||||
@ApiModelProperty("文件id")
|
||||
private String file;
|
||||
|
||||
public void check() throws Exception{
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,12 @@
|
||||
package mjkf.xinke.main.service;
|
||||
|
||||
import mjkf.xinke.main.model.db.MaterialTask;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class MaterialTaskService extends ServiceImpl<BaseMapper<MaterialTask>, MaterialTask> {
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user