refactor(util): 重构BeanContext接口及相关实现

将ContextUtils重命名为BeanContext,并统一客户端和服务端的实现
添加DefaultBeanContext作为默认实现
优化Inventory同步任务逻辑,支持WebSocket远程调用
更新tasker_mapper.json添加新的任务映射
移除未使用的syncInventory方法
This commit is contained in:
2025-10-12 22:39:32 +08:00
parent 59d78619da
commit 5b3ab3ed00
17 changed files with 360 additions and 129 deletions

View File

@@ -4,7 +4,7 @@ import com.ecep.contract.*;
import com.ecep.contract.controller.project.cost.ProjectCostImportItemsFromContractsTasker;
import com.ecep.contract.model.ContractFileTypeLocal;
import com.ecep.contract.service.*;
import com.ecep.contract.util.ContextUtils;
import com.ecep.contract.util.BeanContext;
import com.ecep.contract.vo.*;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.collections.ObservableMap;
@@ -22,10 +22,10 @@ import java.util.*;
import java.util.stream.Collectors;
@Data
public class ContractVerifyComm implements ContextUtils {
ContextUtils parent;
public class ContractVerifyComm implements BeanContext {
BeanContext parent;
public ContractVerifyComm(ContextUtils parent) {
public ContractVerifyComm(BeanContext parent) {
this.parent = parent;
}

View File

@@ -0,0 +1,37 @@
package com.ecep.contract.task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.WebSocketClientTasker;
/**
* 库存全量同步任务客户端实现
* 用于通过WebSocket与服务器通信执行库存数据的全量同步
*/
public class InventoryAllSyncTask extends Tasker<Object> implements WebSocketClientTasker {
private static final Logger logger = LoggerFactory.getLogger(InventoryAllSyncTask.class);
@Override
public String getTaskName() {
return "InventoryAllSyncTask";
}
@Override
public void updateProgress(long current, long total) {
super.updateProgress(current, total);
}
@Override
protected Object execute(MessageHolder holder) throws Exception {
// 设置任务标题
updateTitle("全量库存同步任务");
// 更新任务消息
updateMessage("开始执行全量库存同步...");
// 调用远程WebSocket任务
return callRemoteTask(holder, getLocale());
}
}

View File

@@ -1,13 +1,55 @@
package com.ecep.contract.task;
import com.ecep.contract.MessageHolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
public class InventorySyncTask extends Tasker<Object> {
import com.ecep.contract.MessageHolder;
import com.ecep.contract.WebSocketClientTasker;
import com.ecep.contract.vo.InventoryVo;
import lombok.Setter;
public class InventorySyncTask extends Tasker<Object> implements WebSocketClientTasker {
private static final Logger logger = LoggerFactory.getLogger(InventorySyncTask.class);
@Setter
private InventoryVo inventory;
@Override
public String getTaskName() {
return "InventorySyncTask";
}
@Override
public void updateProgress(long current, long total) {
super.updateProgress(current, total);
}
@Override
protected Object execute(MessageHolder holder) throws Exception {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'execute'");
}
try {
// 设置任务标题
updateTitle("库存同步任务");
// 更新任务消息
holder.info("开始同步库存数据...");
if (inventory == null) {
holder.warn("请选择要同步的数据.");
return null;
}
if (!StringUtils.hasText(inventory.getCode())) {
holder.warn("请填写商品编码.");
return null;
}
// 调用远程WebSocket任务
return callRemoteTask(holder, getLocale(), inventory.getId());
} catch (Exception e) {
logger.error("库存同步任务执行失败", e);
updateMessage("库存同步任务执行失败:" + e.getMessage());
throw e;
}
}
}