mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
feat(Mtjywpm): add syncSingleOrder endpoint for individual order data synchronization
This commit is contained in:
@@ -5,6 +5,7 @@ import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.mtjywpm.dto.CreateMtjywpmDto;
|
||||
import cn.lihongjie.coal.mtjywpm.dto.MtjywpmDto;
|
||||
import cn.lihongjie.coal.mtjywpm.dto.SyncSingleOrderRequest;
|
||||
import cn.lihongjie.coal.mtjywpm.dto.UpdateMtjywpmDto;
|
||||
import cn.lihongjie.coal.mtjywpm.service.MtjywpmService;
|
||||
|
||||
@@ -56,4 +57,11 @@ public class MtjywpmController {
|
||||
this.service.syncAuctionData();
|
||||
return "数据同步完成";
|
||||
}
|
||||
|
||||
@PostMapping("/syncSingleOrder")
|
||||
public Object syncSingleOrder(@RequestBody SyncSingleOrderRequest request) {
|
||||
log.info("开始同步单个交易单号: {}", request.getTradercode());
|
||||
this.service.syncSingleOrder(request.getTradercode());
|
||||
return "交易单号 " + request.getTradercode() + " 数据同步完成";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package cn.lihongjie.coal.mtjywpm.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SyncSingleOrderRequest {
|
||||
|
||||
private String tradercode;
|
||||
}
|
||||
@@ -94,6 +94,63 @@ public class MtjywpmService extends BaseService<MtjywpmEntity, MtjywpmRepository
|
||||
return page.map(this.mapper::toDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步单个交易单号的数据
|
||||
*/
|
||||
public void syncSingleOrder(String tradercode) {
|
||||
log.info("开始同步交易单号为 {} 的数据", tradercode);
|
||||
|
||||
if (tradercode == null || tradercode.trim().isEmpty()) {
|
||||
throw new BizException("交易单号不能为空");
|
||||
}
|
||||
|
||||
try {
|
||||
// 调用API查询特定交易单号的数据
|
||||
List<Map<String, Object>> dataList = fetchDataFromApi(1, tradercode.trim());
|
||||
|
||||
if (dataList == null || dataList.isEmpty()) {
|
||||
log.info("未找到交易单号为 {} 的数据", tradercode);
|
||||
return;
|
||||
}
|
||||
|
||||
// 处理返回的数据
|
||||
for (Map<String, Object> dataMap : dataList) {
|
||||
try {
|
||||
String apiTradercode = getStringValue(dataMap, "tradercode");
|
||||
// 检查是否包含指定的交易单号
|
||||
if (apiTradercode != null && apiTradercode.contains(tradercode.trim())) {
|
||||
// 使用sysid作为唯一标识符来判断是否已存在
|
||||
Object sysidObj = dataMap.get("sysid");
|
||||
if (sysidObj != null) {
|
||||
Long sysid = Long.valueOf(sysidObj.toString());
|
||||
Optional<MtjywpmEntity> existingEntity = repository.findBySysid(sysid);
|
||||
|
||||
if (existingEntity.isPresent()) {
|
||||
// 更新现有记录
|
||||
MtjywpmEntity entity = existingEntity.get();
|
||||
updateEntityFromMap(entity, dataMap);
|
||||
repository.save(entity);
|
||||
log.info("已更新sysid为 {} 交易单号为 {} 的记录", sysid, apiTradercode);
|
||||
} else {
|
||||
// 新增记录
|
||||
MtjywpmEntity entity = convertMapToEntity(dataMap);
|
||||
repository.save(entity);
|
||||
log.info("已新增sysid为 {} 交易单号为 {} 的记录", sysid, apiTradercode);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("处理交易单号为 {} 的数据失败", tradercode, e);
|
||||
}
|
||||
}
|
||||
|
||||
log.info("交易单号为 {} 的数据同步完成", tradercode);
|
||||
} catch (Exception e) {
|
||||
log.error("同步交易单号为 {} 的数据失败", tradercode, e);
|
||||
throw new BizException("同步数据失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步煤炭交易网拍卖数据
|
||||
*/
|
||||
@@ -187,6 +244,13 @@ public class MtjywpmService extends BaseService<MtjywpmEntity, MtjywpmRepository
|
||||
* 从API获取数据
|
||||
*/
|
||||
private List<Map<String, Object>> fetchDataFromApi(int page) {
|
||||
return fetchDataFromApi(page, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从API获取数据,支持按交易单号查询
|
||||
*/
|
||||
private List<Map<String, Object>> fetchDataFromApi(int page, String tradercode) {
|
||||
try {
|
||||
// 设置请求头
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
@@ -215,6 +279,10 @@ public class MtjywpmService extends BaseService<MtjywpmEntity, MtjywpmRepository
|
||||
params.add("trademodeid", "3");
|
||||
params.add("postatus", "-1");
|
||||
params.add("commodityname", "");
|
||||
// 如果指定了交易单号,添加到查询参数中
|
||||
if (tradercode != null && !tradercode.trim().isEmpty()) {
|
||||
params.add("tradercode", tradercode.trim());
|
||||
}
|
||||
|
||||
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(params, headers);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user