请购单同步旗舰版SRM-更新采购需求数量-规则类
This commit is contained in:
parent
c1841cbf25
commit
0685e67bd9
|
|
@ -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;
|
||||||
|
|
||||||
|
|
@ -36,89 +37,97 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule<PMOAggVO> {
|
||||||
public void process(PMOAggVO[] pmoAggVOS) {
|
public void process(PMOAggVO[] pmoAggVOS) {
|
||||||
BaseDAO dao = new BaseDAO();
|
BaseDAO dao = new BaseDAO();
|
||||||
try {
|
try {
|
||||||
for (PMOAggVO pmoAggVO : pmoAggVOS) {
|
for (PMOAggVO pmoAggVO : pmoAggVOS) {
|
||||||
for (PMOItemVO pmoItemVO : pmoAggVO.getChildrenVO()) {
|
for (PMOItemVO pmoItemVO : pmoAggVO.getChildrenVO()) {
|
||||||
configParams = MyHelper.getConfigParams("xb-config", null);
|
configParams = MyHelper.getConfigParams("xb-config", null);
|
||||||
if (configParams.isEmpty()) {
|
if (configParams.isEmpty()) {
|
||||||
throw new BusinessException("箱变的QMS接口缺少配置");
|
throw new BusinessException("箱变的QMS接口缺少配置");
|
||||||
}
|
}
|
||||||
String pkOrg = pmoAggVO.getParentVO().getPk_org();
|
String pkOrg = pmoAggVO.getParentVO().getPk_org();
|
||||||
String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
|
String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
|
||||||
if (checkIfOrg(orgCode, configParams)) {
|
if (checkIfOrg(orgCode, configParams)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String pmoid = pmoItemVO.getCmoid();
|
String pmoid = pmoItemVO.getCmoid();
|
||||||
UFDouble nastnum = pmoItemVO.getNastnum();
|
UFDouble nastnum = pmoItemVO.getNastnum();
|
||||||
// 查询备料计划
|
// 查询备料计划
|
||||||
String pickmsql = "select cpickm_bid,cbmaterialvid,nplanoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + pmoid + "' and dr=0) and dr = 0";
|
String pickmsql = "select cpickm_bid,cbmaterialvid,nplanoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + pmoid + "' and dr=0) and dr = 0";
|
||||||
List<Map<String, Object>> hmateral = (List<Map<String, Object>>) dao.executeQuery(pickmsql, new MapListProcessor());
|
List<Map<String, Object>> hmateral = (List<Map<String, Object>>) dao.executeQuery(pickmsql, new MapListProcessor());
|
||||||
|
|
||||||
List<String> pmobids = new ArrayList<String>();
|
List<String> pmobids = new ArrayList<String>();
|
||||||
List<String> pmoids = new ArrayList<String>();
|
List<String> pmoids = new ArrayList<String>();
|
||||||
// 根据 生产订单-备料计划-计划订单-请购单-采购订单-到货单-采购入库 依次更新下游单据
|
// 根据 生产订单-备料计划-计划订单-请购单-采购订单-到货单-采购入库 依次更新下游单据
|
||||||
for (Map<String, Object> map : hmateral) {
|
for (Map<String, Object> map : hmateral) {
|
||||||
if (null == map.get("cbmaterialvid")) {
|
if (null == map.get("cbmaterialvid")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String material = map.get("cbmaterialvid").toString();
|
||||||
|
if (!checkProdect(material, pkOrg)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String material = map.get("cbmaterialvid").toString();
|
// 查询计划订单
|
||||||
if (!checkProdect(material, pkOrg)) {
|
String plosql = "select cpoid from mm_plo where vsrcbid ='" + map.get("cpickm_bid") + "' and dr = 0";
|
||||||
continue;
|
List<Map<String, Object>> ploList = (List<Map<String, Object>>) dao.executeQuery(plosql, new MapListProcessor());
|
||||||
}
|
for (Map<String, Object> plo : ploList) {
|
||||||
// 查询计划订单
|
// 查询请购单
|
||||||
String plosql = "select cpoid from mm_plo where vsrcbid ='" + map.get("cpickm_bid") + "' and dr = 0";
|
String buyingreqsql = "select pk_praybill,pk_praybill_b,nnum from po_praybill_b where csourcebid ='" + plo.get("cpoid") + "' and dr = 0";
|
||||||
List<Map<String, Object>> ploList = (List<Map<String, Object>>) dao.executeQuery(plosql, new MapListProcessor());
|
List<Map<String, Object>> buyingreq = (List<Map<String, Object>>) dao.executeQuery(buyingreqsql, new MapListProcessor());
|
||||||
for (Map<String, Object> plo : ploList) {
|
for (Map<String, Object> map2 : buyingreq) {
|
||||||
// 查询请购单
|
|
||||||
String buyingreqsql = "select pk_praybill,pk_praybill_b,nnum from po_praybill_b where csourcebid ='" + plo.get("cpoid") + "' and dr = 0";
|
|
||||||
List<Map<String, Object>> buyingreq = (List<Map<String, Object>>) dao.executeQuery(buyingreqsql, new MapListProcessor());
|
|
||||||
for (Map<String, Object> map2 : buyingreq) {
|
|
||||||
|
|
||||||
if (UFDouble.ZERO_DBL.compareTo(new UFDouble(map.get("nplanoutnum").toString())) == 0) {
|
if (UFDouble.ZERO_DBL.compareTo(new UFDouble(map.get("nplanoutnum").toString())) == 0) {
|
||||||
pmobids.add(map2.get("pk_praybill_b").toString());
|
pmobids.add(map2.get("pk_praybill_b").toString());
|
||||||
pmoids.add(map2.get("pk_praybill").toString());
|
pmoids.add(map2.get("pk_praybill").toString());
|
||||||
}
|
}
|
||||||
if (new UFDouble((BigDecimal) map2.get("nnum")).compareTo(new UFDouble((BigDecimal) map.get("nplanoutnum"))) > 0) {
|
if (new UFDouble((BigDecimal) map2.get("nnum")).compareTo(new UFDouble((BigDecimal) map.get("nplanoutnum"))) > 0) {
|
||||||
// 更新请购单
|
// 更新请购单
|
||||||
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)) {
|
||||||
String ordersql = "select pk_order_b from po_order_b where csourcebid ='" + map2.get("pk_praybill_b") + "' and dr = 0";
|
SyncSrmPrayBillUtil billUtil = new SyncSrmPrayBillUtil();
|
||||||
List<Map<String, Object>> orders = (List<Map<String, Object>>) dao.executeQuery(ordersql, new MapListProcessor());
|
JSONObject reqData = new JSONObject();
|
||||||
for (Map<String, Object> order : orders) {
|
reqData.put("org", "C030");// 组织编码
|
||||||
// 更新采购订单
|
reqData.put("erpId", map2.get("pk_praybill_b"));// 请购单表体主键
|
||||||
String updateOrderSql = "update po_order_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_order_b='"
|
reqData.put("mainNum", map.get("nplanoutnum"));// 主数量
|
||||||
+ order.get("pk_order_b") + "'";
|
billUtil.reqBIPBill(reqData);
|
||||||
dao.executeUpdate(updateOrderSql);
|
}
|
||||||
// 查询到货单
|
// 查询采购订单
|
||||||
String arriveordersql = "select pk_arriveorder_b from po_arriveorder_b where csourcebid ='" + order.get("pk_order_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>> arriveorders = (List<Map<String, Object>>) dao.executeQuery(arriveordersql, new MapListProcessor());
|
List<Map<String, Object>> orders = (List<Map<String, Object>>) dao.executeQuery(ordersql, new MapListProcessor());
|
||||||
for (Map<String, Object> arriveorder : arriveorders) {
|
for (Map<String, Object> order : orders) {
|
||||||
// 更新到货单
|
// 更新采购订单
|
||||||
String updatearriveorderSql = "update po_arriveorder_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_arriveorder_b='"
|
String updateOrderSql = "update po_order_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_order_b='"
|
||||||
+ arriveorder.get("pk_arriveorder_b") + "'";
|
+ order.get("pk_order_b") + "'";
|
||||||
dao.executeUpdate(updatearriveorderSql);
|
dao.executeUpdate(updateOrderSql);
|
||||||
// 已经采购入库的数据不处理
|
// 查询到货单
|
||||||
|
String arriveordersql = "select pk_arriveorder_b from po_arriveorder_b where csourcebid ='" + order.get("pk_order_b") + "' and dr = 0";
|
||||||
|
List<Map<String, Object>> arriveorders = (List<Map<String, Object>>) dao.executeQuery(arriveordersql, new MapListProcessor());
|
||||||
|
for (Map<String, Object> arriveorder : arriveorders) {
|
||||||
|
// 更新到货单
|
||||||
|
String updatearriveorderSql = "update po_arriveorder_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_arriveorder_b='"
|
||||||
|
+ arriveorder.get("pk_arriveorder_b") + "'";
|
||||||
|
dao.executeUpdate(updatearriveorderSql);
|
||||||
|
// 已经采购入库的数据不处理
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (pmobids.size() > 0) {
|
||||||
|
buyingreqRowClose(pmobids, pmoids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (pmobids.size() > 0) {
|
|
||||||
buyingreqRowClose(pmobids,pmoids);
|
|
||||||
}
|
} catch (DAOException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
} catch (BusinessException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} catch (DAOException ex) {
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
} catch (BusinessException ex) {
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} catch (BusinessException e) {
|
} catch (BusinessException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
@ -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)) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue