新增批量查询

parent 52bcf331
...@@ -6,6 +6,8 @@ import com.aps.entity.basic.Entry; ...@@ -6,6 +6,8 @@ import com.aps.entity.basic.Entry;
import com.aps.entity.basic.MachineOption; import com.aps.entity.basic.MachineOption;
import com.aps.entity.common.FieldInfo; import com.aps.entity.common.FieldInfo;
import com.aps.entity.common.Paged; import com.aps.entity.common.Paged;
import com.aps.entity.common.SqlOrder;
import com.aps.entity.common.SqlOrderResult;
import com.aps.service.common.ChromosomeDataService; import com.aps.service.common.ChromosomeDataService;
import com.aps.service.plan.PlanResultService; import com.aps.service.plan.PlanResultService;
import com.aps.service.plan.SceneService; import com.aps.service.plan.SceneService;
...@@ -37,6 +39,9 @@ public class ChromosomeDataController { ...@@ -37,6 +39,9 @@ public class ChromosomeDataController {
@Autowired @Autowired
private PlanResultService planResultService; private PlanResultService planResultService;
private ObjectMapper objectMapper = new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
/** /**
* 通用接口,根据实体名称查询Chromosome中的数据,支持分页和条件过滤 * 通用接口,根据实体名称查询Chromosome中的数据,支持分页和条件过滤
* 示例: * 示例:
...@@ -218,4 +223,98 @@ public class ChromosomeDataController { ...@@ -218,4 +223,98 @@ public class ChromosomeDataController {
} }
return false; return false;
} }
/**
* 批量查询接口(report)
* 支持在一个请求中查询多个实体
* 示例:
* POST /queryChromosome/report
* Body: {
* "sceneId": "SCENE001",
* "data": [
* {
* "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" }
* }
* ]
* }
*
* @param params 请求参数
* @return 查询结果列表
*/
@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>>() {});
List<SqlOrderResult> results = chromosomeDataService.executeSqlOrderReport(sqlOrders, sceneId);
return ok(results);
}
/**
* 批量修改接口(commit)
* 支持在一个请求中修改多个实体
* 示例:
* POST /queryChromosome/commit
* Body: {
* "sceneId": "SCENE001",
* "data": [
* {
* "type": "update",
* "name": "更新订单",
* "table": "order",
* "data": { "id": 1, "name": "新订单名称" }
* },
* {
* "type": "delete",
* "name": "删除工序",
* "table": "entry",
* "data": { "id": 123 }
* },
* {
* "type": "insert",
* "name": "新增订单",
* "table": "order",
* "data": { "name": "新订单" }
* }
* ]
* }
*
* @param params 请求参数
* @return 执行结果列表
*/
@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>>() {});
List<SqlOrderResult> results = chromosomeDataService.executeSqlOrderCommit(sqlOrders, sceneId);
return ok(results);
}
} }
\ No newline at end of file
package com.aps.entity.common;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
public class SqlOrder {
// 命令類型,查詢:SELECT,FIND,GROUP,
// 數據操作: UPDATE,INSERT,DELETE,IMPORTS,BATCH,
private String type;
private String name;
private String table;
private Object data;
public SqlOrder() {
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTable() {
if (table==null|| table.isEmpty()){
return name;
}
return table;
}
public void setTable(String table) {
this.table = table;
}
public Object getData() {
return data;
}
// public Paged getPagedData(){
// return JSONObject.parseObject(JSONObject.toJSONString(data),Paged.class);
// }
// public Map<String,Object> get(){
// return JSONObject.parseObject(JSONObject.toJSONString(data),JSONObject.class);
// }
// public JSONArray getJSONArrayData(){
// return JSONObject.parseObject(JSONObject.toJSONString(data),JSONArray.class);
// }
public void setData(Object data) {
this.data = data;
}
}
package com.aps.entity.common;
import lombok.Data;
@Data
public class SqlOrderResult {
private String name;
private Object value;
}
...@@ -454,7 +454,7 @@ public class ChromosomeDataService { ...@@ -454,7 +454,7 @@ public class ChromosomeDataService {
*/ */
public Map<String, Object> queryChromosomeDataWithConditions(String sceneId, String entityName, Paged paged) { public Map<String, Object> queryChromosomeDataWithConditions(String sceneId, String entityName, Paged paged) {
// 对于materialInfo且有sceneId时,在conditions中添加排产物料ID过滤 // 对于materialInfo且有sceneId时,在conditions中添加排产物料ID过滤
System.out.println(entityName);
if ("materialinfo".equalsIgnoreCase(entityName) && sceneId != null && !sceneId.isEmpty()) { if ("materialinfo".equalsIgnoreCase(entityName) && sceneId != null && !sceneId.isEmpty()) {
boolean hasProductIds = false; boolean hasProductIds = false;
...@@ -2784,4 +2784,99 @@ public class ChromosomeDataService { ...@@ -2784,4 +2784,99 @@ public class ChromosomeDataService {
} }
/**
* 执行批量查询操作(report接口)
* @param sqlOrders SqlOrder列表
* @param sceneId 场景ID(文件实体需要)
* @return 查询结果列表
*/
public List<SqlOrderResult> executeSqlOrderReport(List<SqlOrder> sqlOrders, String sceneId) {
List<SqlOrderResult> results = new ArrayList<>();
for (SqlOrder sqlOrder : sqlOrders) {
SqlOrderResult result = new SqlOrderResult();
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")
Map<String, Object> dataMap = objectMapper.convertValue(sqlOrder.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);
} 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());
}
results.add(result);
}
return results;
}
/**
* 执行批量修改操作(commit接口)
* @param sqlOrders SqlOrder列表
* @param sceneId 场景ID(文件实体需要)
* @return 执行结果列表
*/
public List<SqlOrderResult> executeSqlOrderCommit(List<SqlOrder> sqlOrders, String sceneId) {
List<SqlOrderResult> results = new ArrayList<>();
for (SqlOrder sqlOrder : sqlOrders) {
SqlOrderResult result = new SqlOrderResult();
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 ("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 ? "更新成功" : "更新失败");
} else if ("delete".equals(type)) {
result.setValue("删除功能待实现");
} else if ("insert".equals(type)) {
result.setValue("插入功能待实现");
} else {
result.setValue("不支持的操作类型: " + type);
}
} catch (Exception e) {
log.error("执行SqlOrder失败: type={}, table={}", sqlOrder.getType(), sqlOrder.getTable(), e);
result.setValue("执行失败: " + e.getMessage());
}
results.add(result);
}
return results;
}
} }
\ No newline at end of file
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