批量查询

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