WMS插件同步

This commit is contained in:
mzr 2025-10-29 15:17:34 +08:00
parent 40e8461237
commit 59c48a011c
7 changed files with 196 additions and 0 deletions

View File

@ -0,0 +1,42 @@
package nccloud.wmssync.ml.m4a;
import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener;
import nc.bs.framework.common.NCLocator;
import nc.bs.ic.general.businessevent.ICGeneralCommonEvent;
import nc.bs.logging.Log;
import nc.vo.ic.m4a.entity.GeneralInHeadVO;
import nc.vo.ic.m4a.entity.GeneralInVO;
import nc.vo.org.StockOrgVO;
import nc.vo.pub.BusinessException;
import nccloud.api.uapbd.wms.utils.IWmsSyncUtils;
import java.util.HashMap;
import java.util.Map;
/**
* 其他入库单删除后同步WMS
* 支持的交易类型
* - 4A-Cxx-14: 形态转换入库 -> XTRK
* - 4A-Cxx-13: 其他入库 -> QTRK
* - 4A-Cxx-12: 盘盈入库 -> ADJ
*/
public class WmsSyncAfterDeleteGeneralInListener implements IBusinessListener {
/**
* 支持取消同步的交易类型编码映射
* key: ERP交易类型编码, value: WMS交易类型
*/
private static final Map<String, String> SUPPORTED_TRAN_TYPES = new HashMap<>();
static {
SUPPORTED_TRAN_TYPES.put("4A-06", "XTRK"); // 形态转换入库
SUPPORTED_TRAN_TYPES.put("4A-01", "QTRK"); // 其他入库
SUPPORTED_TRAN_TYPES.put("4A-03", "ADJ"); // 盘盈入库
}
@Override
public void doAction(IBusinessEvent iBusinessEvent) throws BusinessException {
}
}

View File

@ -0,0 +1,23 @@
package nccloud.resources.ic.ic.materialout;
import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener;
import nc.bs.logging.Log;
import nc.vo.pub.BusinessException;
import nccloud.api.uapbd.wms.utils.WmsSyncUtils;
// 取消材料出库单据同步到FLUX WMS
public class CancelMaterialOutWmsPlugin implements IBusinessListener {
private static final Log log = Log.getInstance("wmslog");
private final WmsSyncUtils wmsSyncUtils = new WmsSyncUtils();
@Override
public void doAction(IBusinessEvent iBusinessEvent) throws BusinessException {
try {
} catch (Exception e) {
log.error("CancelMaterialOutWmsPlugin - 处理异常: " + e.getMessage(), e);
throw new BusinessException("取消材料出库单同步时报错,报错信息:" + e.getMessage());
}
}
}

View File

@ -0,0 +1,12 @@
package nccloud.wmssync.ml.c003;
import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener;
import nc.vo.pub.BusinessException;
public class WmsSyncQcReportListener implements IBusinessListener {
@Override
public void doAction(IBusinessEvent iBusinessEvent) throws BusinessException {
}
}

View File

@ -0,0 +1,20 @@
package nccloud.resources.ic.ic.materialin;
import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener;
import nc.bs.logging.Log;
import nc.vo.pub.BusinessException;
import nccloud.api.uapbd.wms.utils.WmsSyncUtils;
/**
* Éú²úÍËÁϵ¥É¾³ýºóͬ²½WMS
*/
public class MaterialInAfterDeleteWmsPlugin implements IBusinessListener {
private static final Log log = Log.getInstance("wmslog");
private final WmsSyncUtils wmsSyncUtils = new WmsSyncUtils();
@Override
public void doAction(IBusinessEvent iBusinessEvent) throws BusinessException {
}
}

View File

@ -0,0 +1,61 @@
package nccloud.resources.ic.ic.materialin;
import nc.bs.businessevent.BdUpdateEvent;
import nc.bs.businessevent.BusinessEvent;
import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener;
import nc.bs.ic.general.businessevent.ICGeneralCommonEvent;
import nc.bs.logging.Log;
import nc.vo.ic.m4d.entity.MaterialOutVO;
import nc.vo.pub.BusinessException;
import nccloud.api.uapbd.wms.utils.WmsSyncUtils;
// 材料入库保存后同步到FLUX WMS
public class MaterialInAfterSaveWmsPlugin implements IBusinessListener {
private static final Log log = Log.getInstance("wmslog");
private final WmsSyncUtils wmsSyncUtils = new WmsSyncUtils();
@Override
public void doAction(IBusinessEvent iBusinessEvent) throws BusinessException {
try {
log.info("MaterialInAfterSaveWmsPlugin - 开始处理生产退料入库WMS同步");
// 获取单据数据
MaterialOutVO[] materialOutVOs = getMaterialOutVOs(iBusinessEvent);
} catch (Exception e) {
log.error("MaterialInAfterSaveWmsPlugin - 处理异常: " + e.getMessage(), e);
throw new BusinessException("材料入库单同步时报错,报错信息:" + e.getMessage());
}
}
/**
* 从业务事件中获取生产退料入库数据
*/
private MaterialOutVO[] getMaterialOutVOs(IBusinessEvent event) throws BusinessException {
Object object = null;
// 根据不同的事件类型获取单据数据
if (event instanceof BusinessEvent businessEvent) {
object = businessEvent.getObject();
} else if (event instanceof BdUpdateEvent updateEvent) {
object = updateEvent.getNewObject();
} else if (event instanceof ICGeneralCommonEvent commonEvent) {
object = commonEvent.getOldObjs();
} else {
log.warn("MaterialInAfterSaveWmsPlugin - 未支持的事件类型: " + event.getClass().getName());
return null;
}
if (object == null) {
return null;
}
// 转换为MaterialOutVO数组
if (object.getClass().isArray()) {
return (MaterialOutVO[]) object;
} else {
return new MaterialOutVO[]{(MaterialOutVO) object};
}
}
}

View File

@ -0,0 +1,20 @@
package nccloud.resources.ic.ic.materialout;
import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener;
import nc.bs.logging.Log;
import nc.vo.pub.BusinessException;
import nccloud.api.uapbd.wms.utils.WmsSyncUtils;
// ²ÄÁϳö¿â±£´æºóͬ²½µ½FLUX WMS
public class MaterialOutAfterSaveWmsPlugin implements IBusinessListener {
private static final Log log = Log.getInstance("wmslog");
private final WmsSyncUtils wmsSyncUtils = new WmsSyncUtils();
@Override
public void doAction(IBusinessEvent iBusinessEvent) throws BusinessException {
}
}

View File

@ -0,0 +1,18 @@
package nccloud.wmssync.ml;
import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener;
import nc.vo.pub.BusinessException;
/**
* 膠죕谿꼍말잇WMS
*/
public class WmsSyncMaterialListener implements IBusinessListener {
@Override
public void doAction(IBusinessEvent iBusinessEvent) throws BusinessException {
}
}