批量查询

parent 25ec4aa2
......@@ -229,45 +229,31 @@ public class ChromosomeDataController {
* 支持在一个请求中查询多个实体
* 示例:
* POST /queryChromosome/report
* Body: {
* "sceneId": "SCENE001",
* "data": [
* Body: [
* {
* "type": "page",
* "name": "订单列表",
* "table": "order",
* "data": { "pageIndex": 1, "pageSize": 10 }
* },
* {
* "type": "list",
* "name": "工序列表",
* "table": "entry",
* "data": { "conditions": [] }
* },
* {
* "type": "get",
* "name": "订单详情",
* "table": "order",
* "data": { "id": "123" }
* }
* "data": {
* "pageIndex": 1,
* "pageSize": 10,
* "conditions": [
* { "fieldName": "sceneId", "fieldValue": "SCENE001", "conditionalType": "EQUAL" }
* ]
* }
* }
* ]
*
* @param params 请求参数
* @return 查询结果列表
* @param sqlOrders SqlOrder列表
* @return 查询结果Map
*/
@PostMapping("/report")
@Operation(summary = "批量查询接口", description = "支持在一个请求中查询多个实体,type支持 page/list/get")
public R<List<SqlOrderResult>> executeSqlOrderReport(
@Parameter(description = "请求参数", required = true)
@RequestBody Map<String, Object> params) {
String sceneId = params.get("sceneId") != null ? params.get("sceneId").toString() : null;
@SuppressWarnings("unchecked")
List<SqlOrder> sqlOrders = objectMapper.convertValue(params.get("data"),
new com.fasterxml.jackson.core.type.TypeReference<List<SqlOrder>>() {});
public R<Map<String, Object>> executeSqlOrderReport(
@Parameter(description = "SqlOrder列表", required = true)
@RequestBody List<SqlOrder> sqlOrders) {
List<SqlOrderResult> results = chromosomeDataService.executeSqlOrderReport(sqlOrders, sceneId);
Map<String, Object> results = chromosomeDataService.executeSqlOrderReport(sqlOrders);
return ok(results);
}
......@@ -276,45 +262,31 @@ public class ChromosomeDataController {
* 支持在一个请求中修改多个实体
* 示例:
* POST /queryChromosome/commit
* Body: {
* "sceneId": "SCENE001",
* "data": [
* Body: [
* {
* "type": "update",
* "name": "更新订单",
* "table": "order",
* "data": { "id": 1, "name": "新订单名称" }
* },
* {
* "type": "delete",
* "name": "删除工序",
* "table": "entry",
* "data": { "id": 123 }
* },
* {
* "type": "insert",
* "name": "新增订单",
* "table": "order",
* "data": { "name": "新订单" }
* }
* "data": {
* "id": 1,
* "name": "新订单名称",
* "conditions": [
* { "fieldName": "sceneId", "fieldValue": "SCENE001", "conditionalType": "EQUAL" }
* ]
* }
* }
* ]
*
* @param params 请求参数
* @return 执行结果列表
* @param sqlOrders SqlOrder列表
* @return 执行结果Map
*/
@PostMapping("/commit")
@Operation(summary = "批量修改接口", description = "支持在一个请求中修改多个实体,type支持 update/delete/insert")
public R<List<SqlOrderResult>> executeSqlOrderCommit(
@Parameter(description = "请求参数", required = true)
@RequestBody Map<String, Object> params) {
String sceneId = params.get("sceneId") != null ? params.get("sceneId").toString() : null;
@SuppressWarnings("unchecked")
List<SqlOrder> sqlOrders = objectMapper.convertValue(params.get("data"),
new com.fasterxml.jackson.core.type.TypeReference<List<SqlOrder>>() {});
public R<Map<String, Object>> executeSqlOrderCommit(
@Parameter(description = "SqlOrder列表", required = true)
@RequestBody List<SqlOrder> sqlOrders) {
List<SqlOrderResult> results = chromosomeDataService.executeSqlOrderCommit(sqlOrders, sceneId);
Map<String, Object> results = chromosomeDataService.executeSqlOrderCommit(sqlOrders);
return ok(results);
}
}
\ No newline at end of file
......@@ -50,12 +50,17 @@ public class ProductGanttVO {
@Schema(description = "状态")
private String status;
@Schema(description = "ID")
@Schema(description = "工艺ID")
private Integer headerId;
@Schema(description = "名称")
@Schema(description = "工艺名称")
private String headerName;
@Schema(description = "任务列表")
private List<TaskVO> list;
@Schema(description = "订单编号")
private String orderCode;
}
\ No newline at end of file
......@@ -2784,99 +2784,134 @@ public class ChromosomeDataService {
}
/**
* 从 SqlOrder 中提取 sceneId
* @param sqlOrder SqlOrder 对象
* @return sceneId,如果没有则返回 null
*/
private String extractSceneIdFromSqlOrder(SqlOrder sqlOrder) {
try {
if (sqlOrder.getData() != null) {
@SuppressWarnings("unchecked")
Map<String, Object> dataMap = objectMapper.convertValue(sqlOrder.getData(), Map.class);
if (dataMap != null && dataMap.get("conditions") != null) {
@SuppressWarnings("unchecked")
List<Map<String, Object>> conditions = (List<Map<String, Object>>) dataMap.get("conditions");
if (conditions != null) {
for (Map<String, Object> condition : conditions) {
if ("sceneId".equalsIgnoreCase((String) condition.get("fieldName"))) {
return (String) condition.get("fieldValue");
}
}
}
}
}
} catch (Exception e) {
log.warn("从 SqlOrder 中提取 sceneId 失败", e);
}
return null;
}
/**
* 执行批量查询操作(report接口)
* @param sqlOrders SqlOrder列表
* @param sceneId 场景ID(文件实体需要)
* @return 查询结果列表
* @return 查询结果Map
*/
public List<SqlOrderResult> executeSqlOrderReport(List<SqlOrder> sqlOrders, String sceneId) {
List<SqlOrderResult> results = new ArrayList<>();
public Map<String, Object> executeSqlOrderReport(List<SqlOrder> sqlOrders) {
HashMap<String, Object> map = new HashMap<>();
for (SqlOrder sqlOrder : sqlOrders) {
SqlOrderResult result = new SqlOrderResult();
if (sqlOrders != null && sqlOrders.size() > 0) {
sqlOrders.forEach(s -> {
try {
String resultName = (s.getName() != null && !s.getName().isEmpty())
? s.getName()
: s.getTable();
String resultName = (sqlOrder.getName() != null && !sqlOrder.getName().isEmpty())
? sqlOrder.getName()
: sqlOrder.getTable();
result.setName(resultName);
String sceneId = extractSceneIdFromSqlOrder(s);
try {
String type = sqlOrder.getType() != null ? sqlOrder.getType().toLowerCase() : "";
String type = s.getType() != null ? s.getType().toLowerCase() : "";
Object value = null;
if ("page".equals(type)) {
Paged paged = objectMapper.convertValue(sqlOrder.getData(), Paged.class);
Map<String, Object> queryResult = queryChromosomeDataWithConditions(sceneId, sqlOrder.getTable(), paged);
result.setValue(queryResult);
Paged paged = objectMapper.convertValue(s.getData(), Paged.class);
value = queryChromosomeDataWithConditions(sceneId, s.getTable(), paged);
} else if ("list".equals(type)) {
Paged paged = objectMapper.convertValue(sqlOrder.getData(), Paged.class);
List<Object> queryResult = queryChromosomeDataList(sceneId, sqlOrder.getTable(), paged);
result.setValue(queryResult);
Paged paged = objectMapper.convertValue(s.getData(), Paged.class);
value = queryChromosomeDataList(sceneId, s.getTable(), paged);
} else if ("get".equals(type)) {
@SuppressWarnings("unchecked")
Map<String, Object> dataMap = objectMapper.convertValue(sqlOrder.getData(), Map.class);
Map<String, Object> dataMap = objectMapper.convertValue(s.getData(), Map.class);
String id = dataMap != null && dataMap.get("id") != null ? dataMap.get("id").toString() : null;
if (id != null) {
Object queryResult = queryChromosomeDataById(sceneId, sqlOrder.getTable(), id);
result.setValue(queryResult);
value = queryChromosomeDataById(sceneId, s.getTable(), id);
} else {
result.setValue("get操作需要提供id参数");
value = "get操作需要提供id参数";
}
} else {
result.setValue("只支持查询操作(page/list/get)");
value = "只支持查询操作(page/list/get)";
}
map.put(resultName, value);
} catch (Exception e) {
log.error("执行SqlOrder失败: type={}, table={}", sqlOrder.getType(), sqlOrder.getTable(), e);
result.setValue("执行失败: " + e.getMessage());
log.error("执行SqlOrder失败: type={}, table={}", s.getType(), s.getTable(), e);
map.put(resultName, "执行失败: " + e.getMessage());
}
results.add(result);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
return results;
return map;
}
/**
* 执行批量修改操作(commit接口)
* @param sqlOrders SqlOrder列表
* @param sceneId 场景ID(文件实体需要)
* @return 执行结果列表
* @return 执行结果Map
*/
public List<SqlOrderResult> executeSqlOrderCommit(List<SqlOrder> sqlOrders, String sceneId) {
List<SqlOrderResult> results = new ArrayList<>();
public Map<String, Object> executeSqlOrderCommit(List<SqlOrder> sqlOrders) {
HashMap<String, Object> map = new HashMap<>();
for (SqlOrder sqlOrder : sqlOrders) {
SqlOrderResult result = new SqlOrderResult();
if (sqlOrders != null && sqlOrders.size() > 0) {
sqlOrders.forEach(s -> {
try {
String resultName = (s.getName() != null && !s.getName().isEmpty())
? s.getName()
: s.getTable();
String resultName = (sqlOrder.getName() != null && !sqlOrder.getName().isEmpty())
? sqlOrder.getName()
: sqlOrder.getTable();
result.setName(resultName);
String sceneId = extractSceneIdFromSqlOrder(s);
try {
String type = sqlOrder.getType() != null ? sqlOrder.getType().toLowerCase() : "";
String type = s.getType() != null ? s.getType().toLowerCase() : "";
Object value = null;
if ("update".equals(type)) {
@SuppressWarnings("unchecked")
Map<String, Object> data = objectMapper.convertValue(sqlOrder.getData(), Map.class);
boolean success = updateChromosomeData(sceneId, sqlOrder.getTable(), data);
result.setValue(success ? "更新成功" : "更新失败");
Map<String, Object> data = objectMapper.convertValue(s.getData(), Map.class);
boolean success = updateChromosomeData(sceneId, s.getTable(), data);
value = success ? "更新成功" : "更新失败";
} else if ("delete".equals(type)) {
result.setValue("删除功能待实现");
value = "删除功能待实现";
} else if ("insert".equals(type)) {
result.setValue("插入功能待实现");
value = "插入功能待实现";
} else {
result.setValue("不支持的操作类型: " + type);
value = "不支持的操作类型: " + type;
}
map.put(resultName, value);
} catch (Exception e) {
log.error("执行SqlOrder失败: type={}, table={}", sqlOrder.getType(), sqlOrder.getTable(), e);
result.setValue("执行失败: " + e.getMessage());
log.error("执行SqlOrder失败: type={}, table={}", s.getType(), s.getTable(), e);
map.put(resultName, "执行失败: " + e.getMessage());
}
results.add(result);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
return results;
return map;
}
}
\ No newline at end of file
......@@ -2009,7 +2009,7 @@ private GlobalParam InitGlobalParam()
// productGanttVO.setShopId(firstGene.getMachineId());
// productGanttVO.setShopName(firstGene.getMachineId()+"号线");
productGanttVO.setStatus("已发布");
productGanttVO.setOrderCode(firstGene.getOrderCode());
Entry entry = allOperations.stream()
.filter(t -> t.getId() == firstGene.getOperationId()).findFirst().orElse(null);
if (entry != null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment