diff --git a/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialStockAsstsChangedListener.java b/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialStockAsstsChangedListener.java index 2f0b3e3..766f7e8 100644 --- a/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialStockAsstsChangedListener.java +++ b/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialStockAsstsChangedListener.java @@ -36,6 +36,12 @@ public class MaterialStockAsstsChangedListener implements IBusinessListener { return; } //如果库存信息生产厂商和项目被选中则 更新计划信息,生产信息和成本信息 +// if(newVO.getFixasst2() == null ){ +// newVO.setFixasst2(UFBoolean.valueOf("N")); +// } +// if(newVO.getFixasst4() == null ){ +// newVO.setFixasst4(UFBoolean.valueOf("N")); +// } UFBoolean fixasst2 = newVO.getFixasst2(); UFBoolean fixasst4 = newVO.getFixasst4(); @@ -88,27 +94,51 @@ public class MaterialStockAsstsChangedListener implements IBusinessListener { "FROM " + " bd_materialcost " + "WHERE " + - " pk_org = (SELECT PK_COSTREGION FROM org_cr_stockorg WHERE pk_stockorg= ?) or pk_org in (SELECT PK_COSTREGION FROM org_cr_stockstore WHERE pk_stockorg= ?) " + + " (pk_org = (SELECT PK_COSTREGION FROM org_cr_stockorg WHERE pk_stockorg= ?) or pk_org in (SELECT PK_COSTREGION FROM org_cr_stockstore WHERE pk_stockorg= ? ) ) " + " AND " + " pk_material = ? "; SQLParameter param = new SQLParameter(); param.addParam(pk_org); param.addParam(pk_org); param.addParam(pk_material); - List list =( (List) this.getBaseDAO().executeQuery(sql, param, new ColumnListProcessor())); + List list = ((List) this.getBaseDAO().executeQuery(sql, param, new ColumnListProcessor())); if(list.isEmpty()){ return; } - String pk_materialcost = list.get(0).toString(); - if(pk_materialcost == null){ - return; + +// 构建用于 IN 子句的参数列表 + StringBuilder inClause = new StringBuilder(); + List paramValues = new ArrayList<>(); + + for (Object obj : list) { + String pk_materialcost = obj.toString(); + if (pk_materialcost == null) { + continue; // 如果 pk_materialcost 为空,则跳过当前循环 + } + inClause.append("?, "); + paramValues.add(pk_materialcost); } - //更新计价方式 - String update24 = "update bd_materialcostmod set marasst2 = ?,marasst4 = ? where pk_materialcost = ? "; + + if (paramValues.isEmpty()) { + return; // 如果没有有效的 pk_materialcost,则直接返回 + } + +// 去掉最后一个多余的逗号 + inClause = new StringBuilder(inClause.substring(0, inClause.length() - 2)); + +// 更新计价方式 + String update24 = "UPDATE bd_materialcostmod SET marasst2 = ?, marasst4 = ? WHERE pk_materialcost IN (" + inClause + ")"; SQLParameter param1 = new SQLParameter(); - param1.addParam(fixlist.get(0)); + +// 添加更新参数 + param1.addParam(fixlist.get(0)); // 假设 fixlist 已经正确初始化且包含至少两个元素 param1.addParam(fixlist.get(1)); - param1.addParam(pk_materialcost); + +// 添加 IN 子句的参数 + for (String value : paramValues) { + param1.addParam(value); + } + this.getBaseDAO().executeUpdate(update24, param1); }