refactor(mes):优化BOM和物料同步失败处理逻辑

This commit is contained in:
mzr 2025-10-10 14:22:21 +08:00
parent 5f12a542a5
commit 5150a55404
3 changed files with 30 additions and 13 deletions

View File

@ -23,10 +23,7 @@ import nc.vo.fi.pub.SqlUtils;
import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
* BOM-艾普MES-定时重推失败的数据
@ -181,11 +178,20 @@ public class BomToEpicMesPlugin implements IBackgroundWorkPlugin {
String cbomid = hvo.getCbomid();
ids.add(cbomid);
}
// 定义每批次处理的最大数量
int batchSize = 500;
try {
String inSql = SqlUtils.getInStr("cbomid", ids.toArray(new String[0]), Boolean.TRUE);
String updateSql = "update bd_bom set hvdef19 = '[errorCode]' where " + inSql;
updateSql = updateSql.replace("[errorCode]", errorCode);
int updatedRows = getDao().executeUpdate(updateSql);
List<String> idList = new ArrayList<>(ids);
for (int i = 0; i < idList.size(); i += batchSize) {
// 取出当前批次的ID
List<String> batchIds = idList.subList(i, Math.min(i + batchSize, idList.size()));
String inSql = SqlUtils.getInStr("cbomid", batchIds.toArray(new String[0]), Boolean.TRUE);
String updateSql = "update bd_bom set hvdef19 = '[errorCode]' where " + inSql;
updateSql = updateSql.replace("[errorCode]", errorCode);
// NCCForUAPLogger.debug("EpicMes-handleSyncBomExp-updateSql = " + updateSql);
int updatedRows = getDao().executeUpdate(updateSql);
// NCCForUAPLogger.debug("EpicMes-BOM-handleSyncBomExp-updateRows = " + updatedRows);
}
} catch (BusinessException e) {
logDl.error("EpicMes-BOM-updateErrorInfo = " + e.getMessage(), e);
}

View File

@ -198,11 +198,22 @@ public class MaterialToEpicMesPlugin implements IBackgroundWorkPlugin {
String pkMaterial = vo.getPk_material();
ids.add(pkMaterial);
}
// 定义每批次处理的最大数量
int batchSize = 500;
try {
String inSql = SqlUtils.getInStr("pk_material", ids.toArray(new String[0]), Boolean.TRUE);
String updateSql = "update bd_material set def30 = '[errorCode]' where " + inSql;
updateSql = updateSql.replace("[errorCode]", errorCode);
int updatedRows = getDao().executeUpdate(updateSql);
List<String> idList = new ArrayList<>(ids);
for (int i = 0; i < idList.size(); i += batchSize) {
// 取出当前批次的ID
List<String> batchIds = idList.subList(i, Math.min(i + batchSize, idList.size()));
// 构造并执行SQL
String inSql = SqlUtils.getInStr("pk_material", batchIds.toArray(new String[0]), Boolean.TRUE);
String updateSql = "update bd_material set def30 = '[errorCode]' where " + inSql;
updateSql = updateSql.replace("[errorCode]", errorCode);
// NCCForUAPLogger.debug("EpicMes-handleSyncMaterialExp-updateSql = " + updateSql);
int updatedRows = getDao().executeUpdate(updateSql);
// NCCForUAPLogger.debug("EpicMes-Material-handleSyncMaterialExp-updateRows = " + updatedRows);
}
} catch (BusinessException e) {
logDl.error("EpicMes-Material-handleSyncMaterialExp = " + e.getMessage(), e);
}

View File

@ -38,7 +38,7 @@ import java.util.stream.Stream;
* @date 2025/09/11
*/
public class MaterialToGyMesListener implements IBusinessListener {
private static final String LOG_INFO_NAME = "gyMesLog";
private static final String LOG_INFO_NAME = "gymeslog";
private static final Log logger = Log.getInstance(LOG_INFO_NAME);
private static final String addUrl = "/bip/order/materialAdd";
private static final String updateUrl = "/bip/order/materialUpdate";