请购单同步旗舰版SRM-更新采购需求数量-规则类

This commit is contained in:
mzr 2025-11-18 13:43:35 +08:00
parent c1841cbf25
commit 0685e67bd9
1 changed files with 89 additions and 80 deletions

View File

@ -1,14 +1,16 @@
package nc.bs.mmpac.pmo.pac0002.bp.rule; package nc.bs.mmpac.pmo.pac0002.bp.rule;
import com.alibaba.fastjson.JSONObject;
import nc.bs.dao.BaseDAO; import nc.bs.dao.BaseDAO;
import nc.bs.dao.DAOException; import nc.bs.dao.DAOException;
import nc.bs.framework.common.NCLocator; import nc.bs.framework.common.NCLocator;
import nc.bs.mmpac.pmo.pac0002.bp.rule.util.SyncSrmPrayBillUtil;
import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.MyHelper;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.pu.m20.IPraybillMaintain; import nc.itf.pu.m20.IPraybillMaintain;
import nc.jdbc.framework.processor.MapListProcessor; import nc.jdbc.framework.processor.MapListProcessor;
import nc.vo.bd.material.stock.MaterialStockVO; import nc.vo.bd.material.stock.MaterialStockVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
import nc.vo.org.OrgVO; import nc.vo.org.OrgVO;
import nc.vo.pu.m20.entity.PraybillItemVO; import nc.vo.pu.m20.entity.PraybillItemVO;
@ -16,7 +18,6 @@ import nc.vo.pu.m20.entity.PraybillVO;
import nc.vo.pub.BusinessException; import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDouble; import nc.vo.pub.lang.UFDouble;
import nc.vo.pubapp.pattern.model.transfer.bill.ClientBillToServer; import nc.vo.pubapp.pattern.model.transfer.bill.ClientBillToServer;
import nccloud.framework.service.ServiceLocator;
import nccloud.pubitf.pu.buyingreq.service.IBuyingReqQueryCardInfoService; import nccloud.pubitf.pu.buyingreq.service.IBuyingReqQueryCardInfoService;
import nccloud.web.pu.buyingreq.util.PublicUtil; import nccloud.web.pu.buyingreq.util.PublicUtil;
@ -83,7 +84,15 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule<PMOAggVO> {
// 更新请购单 // 更新请购单
String sql = "update po_praybill_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_praybill_b='" String sql = "update po_praybill_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_praybill_b='"
+ map2.get("pk_praybill_b") + "'"; + map2.get("pk_praybill_b") + "'";
dao.executeUpdate(sql); int num = dao.executeUpdate(sql);
if (num > 0 && "C030".equals(orgCode)) {
SyncSrmPrayBillUtil billUtil = new SyncSrmPrayBillUtil();
JSONObject reqData = new JSONObject();
reqData.put("org", "C030");// 组织编码
reqData.put("erpId", map2.get("pk_praybill_b"));// 请购单表体主键
reqData.put("mainNum", map.get("nplanoutnum"));// 主数量
billUtil.reqBIPBill(reqData);
}
// 查询采购订单 // 查询采购订单
String ordersql = "select pk_order_b from po_order_b where csourcebid ='" + map2.get("pk_praybill_b") + "' and dr = 0"; String ordersql = "select pk_order_b from po_order_b where csourcebid ='" + map2.get("pk_praybill_b") + "' and dr = 0";
List<Map<String, Object>> orders = (List<Map<String, Object>>) dao.executeQuery(ordersql, new MapListProcessor()); List<Map<String, Object>> orders = (List<Map<String, Object>>) dao.executeQuery(ordersql, new MapListProcessor());
@ -107,7 +116,7 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule<PMOAggVO> {
} }
} }
if (pmobids.size() > 0) { if (pmobids.size() > 0) {
buyingreqRowClose(pmobids,pmoids); buyingreqRowClose(pmobids, pmoids);
} }
} }
@ -134,14 +143,14 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule<PMOAggVO> {
} }
for (PraybillVO vo : rvo) { for (PraybillVO vo : rvo) {
ClientBillToServer<PraybillVO> tool = new ClientBillToServer<PraybillVO>(); ClientBillToServer<PraybillVO> tool = new ClientBillToServer<PraybillVO>();
PraybillVO[] lightVOs = (PraybillVO[])tool.construct(new PraybillVO[]{vo}, new PraybillVO[]{vo}); PraybillVO[] lightVOs = (PraybillVO[]) tool.construct(new PraybillVO[]{vo}, new PraybillVO[]{vo});
// 过滤需要关闭的请购单行 // 过滤需要关闭的请购单行
for(PraybillVO storeReqAppVO : lightVOs) { for (PraybillVO storeReqAppVO : lightVOs) {
PraybillItemVO[] bvos = storeReqAppVO.getBVO(); PraybillItemVO[] bvos = storeReqAppVO.getBVO();
List<PraybillItemVO> newItemVo = new ArrayList<>(lightVOs.length); List<PraybillItemVO> newItemVo = new ArrayList<>(lightVOs.length);
if (bvos != null && bvos.length > 0) { if (bvos != null && bvos.length > 0) {
for(int i = 0; i < bvos.length; ++i) { for (int i = 0; i < bvos.length; ++i) {
if (pmobids.contains(bvos[i].getPk_praybill_b()) ) { if (pmobids.contains(bvos[i].getPk_praybill_b())) {
bvos[i].setAttributeValue("vclosereason", reason); bvos[i].setAttributeValue("vclosereason", reason);
newItemVo.add(bvos[i]); newItemVo.add(bvos[i]);
} }
@ -149,12 +158,11 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule<PMOAggVO> {
} }
storeReqAppVO.setBVO(newItemVo.toArray(new PraybillItemVO[0])); storeReqAppVO.setBVO(newItemVo.toArray(new PraybillItemVO[0]));
} }
IPraybillMaintain orderCloseService =NCLocator.getInstance().lookup(IPraybillMaintain.class); IPraybillMaintain orderCloseService = NCLocator.getInstance().lookup(IPraybillMaintain.class);
orderCloseService.closeBillRow(lightVOs); orderCloseService.closeBillRow(lightVOs);
} }
} }
/** /**
@ -173,10 +181,11 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule<PMOAggVO> {
e.printStackTrace(); e.printStackTrace();
} }
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
return list.get(0).getFixasst2()==null?false:list.get(0).getFixasst2().booleanValue(); return list.get(0).getFixasst2() == null ? false : list.get(0).getFixasst2().booleanValue();
} }
return false; return false;
} }
private boolean checkIfOrg(String code, Map<String, String> configParams) throws BusinessException { private boolean checkIfOrg(String code, Map<String, String> configParams) throws BusinessException {
String targetCode = configParams.get("xbOrg"); String targetCode = configParams.get("xbOrg");
if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) {