diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPickmRecalUpdateBuyingreqRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPickmRecalUpdateBuyingreqRule.java index e5c9973b..4b713bf0 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPickmRecalUpdateBuyingreqRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPickmRecalUpdateBuyingreqRule.java @@ -1,14 +1,16 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule; +import com.alibaba.fastjson.JSONObject; import nc.bs.dao.BaseDAO; import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; +import nc.bs.mmpac.pmo.pac0002.bp.rule.util.SyncSrmPrayBillUtil; import nc.bs.uapbd.util.MyHelper; +import nc.impl.pubapp.pattern.rule.IRule; import nc.itf.pu.m20.IPraybillMaintain; import nc.jdbc.framework.processor.MapListProcessor; import nc.vo.bd.material.stock.MaterialStockVO; 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.org.OrgVO; 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.lang.UFDouble; import nc.vo.pubapp.pattern.model.transfer.bill.ClientBillToServer; -import nccloud.framework.service.ServiceLocator; import nccloud.pubitf.pu.buyingreq.service.IBuyingReqQueryCardInfoService; import nccloud.web.pu.buyingreq.util.PublicUtil; @@ -36,89 +37,97 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule { public void process(PMOAggVO[] pmoAggVOS) { BaseDAO dao = new BaseDAO(); try { - for (PMOAggVO pmoAggVO : pmoAggVOS) { - for (PMOItemVO pmoItemVO : pmoAggVO.getChildrenVO()) { - configParams = MyHelper.getConfigParams("xb-config", null); - if (configParams.isEmpty()) { - throw new BusinessException("箱变的QMS接口缺少配置"); - } - String pkOrg = pmoAggVO.getParentVO().getPk_org(); - String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); - if (checkIfOrg(orgCode, configParams)) { - continue; - } + for (PMOAggVO pmoAggVO : pmoAggVOS) { + for (PMOItemVO pmoItemVO : pmoAggVO.getChildrenVO()) { + configParams = MyHelper.getConfigParams("xb-config", null); + if (configParams.isEmpty()) { + throw new BusinessException("箱变的QMS接口缺少配置"); + } + String pkOrg = pmoAggVO.getParentVO().getPk_org(); + String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); + if (checkIfOrg(orgCode, configParams)) { + continue; + } - try { - String pmoid = pmoItemVO.getCmoid(); - 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"; - List> hmateral = (List>) dao.executeQuery(pickmsql, new MapListProcessor()); + try { + String pmoid = pmoItemVO.getCmoid(); + 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"; + List> hmateral = (List>) dao.executeQuery(pickmsql, new MapListProcessor()); - List pmobids = new ArrayList(); - List pmoids = new ArrayList(); - // 根据 生产订单-备料计划-计划订单-请购单-采购订单-到货单-采购入库 依次更新下游单据 - for (Map map : hmateral) { - if (null == map.get("cbmaterialvid")) { + List pmobids = new ArrayList(); + List pmoids = new ArrayList(); + // 根据 生产订单-备料计划-计划订单-请购单-采购订单-到货单-采购入库 依次更新下游单据 + for (Map map : hmateral) { + if (null == map.get("cbmaterialvid")) { + continue; + } + String material = map.get("cbmaterialvid").toString(); + if (!checkProdect(material, pkOrg)) { continue; - } - String material = map.get("cbmaterialvid").toString(); - if (!checkProdect(material, pkOrg)) { - continue; - } - // 查询计划订单 - String plosql = "select cpoid from mm_plo where vsrcbid ='" + map.get("cpickm_bid") + "' and dr = 0"; - List> ploList = (List>) dao.executeQuery(plosql, new MapListProcessor()); - for (Map plo : ploList) { - // 查询请购单 - String buyingreqsql = "select pk_praybill,pk_praybill_b,nnum from po_praybill_b where csourcebid ='" + plo.get("cpoid") + "' and dr = 0"; - List> buyingreq = (List>) dao.executeQuery(buyingreqsql, new MapListProcessor()); - for (Map map2 : buyingreq) { + } + // 查询计划订单 + String plosql = "select cpoid from mm_plo where vsrcbid ='" + map.get("cpickm_bid") + "' and dr = 0"; + List> ploList = (List>) dao.executeQuery(plosql, new MapListProcessor()); + for (Map plo : ploList) { + // 查询请购单 + String buyingreqsql = "select pk_praybill,pk_praybill_b,nnum from po_praybill_b where csourcebid ='" + plo.get("cpoid") + "' and dr = 0"; + List> buyingreq = (List>) dao.executeQuery(buyingreqsql, new MapListProcessor()); + for (Map map2 : buyingreq) { - if (UFDouble.ZERO_DBL.compareTo(new UFDouble(map.get("nplanoutnum").toString())) == 0) { - pmobids.add(map2.get("pk_praybill_b").toString()); - pmoids.add(map2.get("pk_praybill").toString()); - } - 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='" - + map2.get("pk_praybill_b") + "'"; - dao.executeUpdate(sql); - // 查询采购订单 - String ordersql = "select pk_order_b from po_order_b where csourcebid ='" + map2.get("pk_praybill_b") + "' and dr = 0"; - List> orders = (List>) dao.executeQuery(ordersql, new MapListProcessor()); - for (Map order : orders) { - // 更新采购订单 - String updateOrderSql = "update po_order_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_order_b='" - + order.get("pk_order_b") + "'"; - dao.executeUpdate(updateOrderSql); - // 查询到货单 - String arriveordersql = "select pk_arriveorder_b from po_arriveorder_b where csourcebid ='" + order.get("pk_order_b") + "' and dr = 0"; - List> arriveorders = (List>) dao.executeQuery(arriveordersql, new MapListProcessor()); - for (Map 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 (UFDouble.ZERO_DBL.compareTo(new UFDouble(map.get("nplanoutnum").toString())) == 0) { + pmobids.add(map2.get("pk_praybill_b").toString()); + pmoids.add(map2.get("pk_praybill").toString()); + } + 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='" + + map2.get("pk_praybill_b") + "'"; + 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"; + List> orders = (List>) dao.executeQuery(ordersql, new MapListProcessor()); + for (Map order : orders) { + // 更新采购订单 + String updateOrderSql = "update po_order_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_order_b='" + + order.get("pk_order_b") + "'"; + dao.executeUpdate(updateOrderSql); + // 查询到货单 + String arriveordersql = "select pk_arriveorder_b from po_arriveorder_b where csourcebid ='" + order.get("pk_order_b") + "' and dr = 0"; + List> arriveorders = (List>) dao.executeQuery(arriveordersql, new MapListProcessor()); + for (Map 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) { throw new RuntimeException(e); } @@ -134,14 +143,14 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule { } for (PraybillVO vo : rvo) { ClientBillToServer tool = new ClientBillToServer(); - 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(); List newItemVo = new ArrayList<>(lightVOs.length); if (bvos != null && bvos.length > 0) { - for(int i = 0; i < bvos.length; ++i) { - if (pmobids.contains(bvos[i].getPk_praybill_b()) ) { + for (int i = 0; i < bvos.length; ++i) { + if (pmobids.contains(bvos[i].getPk_praybill_b())) { bvos[i].setAttributeValue("vclosereason", reason); newItemVo.add(bvos[i]); } @@ -149,12 +158,11 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule { } storeReqAppVO.setBVO(newItemVo.toArray(new PraybillItemVO[0])); } - IPraybillMaintain orderCloseService =NCLocator.getInstance().lookup(IPraybillMaintain.class); + IPraybillMaintain orderCloseService = NCLocator.getInstance().lookup(IPraybillMaintain.class); orderCloseService.closeBillRow(lightVOs); } - } /** @@ -173,10 +181,11 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule { e.printStackTrace(); } 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; } + private boolean checkIfOrg(String code, Map configParams) throws BusinessException { String targetCode = configParams.get("xbOrg"); if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoBomRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoBomRule.java index c996c11a..bd303296 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoBomRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoBomRule.java @@ -45,13 +45,16 @@ public class BeforePmoBomRule implements IRule { // vsrctype 来源单据类型 来源销售订单的需要赋值 if ("30".equals(pmoItemVO.getVsrctype())) { // BOM状态 (FBomBillstatusEnum) 是否需要判断BOM的状态 + String cmaterialvid = pmoItemVO.getCmaterialvid(); // 根据bom版本号查询BOM(销售订单号+行号) String bomVersion = pmoItemVO.getVsrccode() + "-" + pmoItemVO.getVsrcrowno(); - String whereSql = BomVO.PK_ORG + " = '" + pkOrg + "' AND " + BomVO.HVERSION + " = '" + bomVersion + "'"; + String whereSql = BomVO.PK_ORG + " = '" + pkOrg + "'" + + " AND " + BomVO.HVERSION + " = '" + bomVersion + "'" + + " AND " + BomVO.HCMATERIALID + " = '" + cmaterialvid + "'"; // NCCForUAPLogger.debug("whereSql:" + whereSql); String bomId = MyHelper.getStrValByCondition(BomVO.TABLE_NAME, BomVO.CBOMID, whereSql); if (StringUtils.isEmpty(bomId)) { - throw new BusinessException("未找到版本号(" + bomVersion + ")对应的BOM"); + throw new BusinessException("未找到版本号(" + bomVersion + ")对应的BOM,whereSql = " + whereSql); } pmoItemVO.setVbomversion(bomVersion); // 生产BOM版本号 pmoItemVO.setCbomversionid(bomId); // 生产BOM版本 diff --git a/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java b/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java index 75fff095..7548a2a4 100644 --- a/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java +++ b/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java @@ -4,6 +4,7 @@ import nc.bs.dao.BaseDAO; import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; +import nc.bs.trade.business.HYPubBO; import nc.itf.mmpac.pmo.pac0002.IPMOBusinessService; import nc.itf.mmpac.pmo.pac0002.IPMOQueryService; import nc.jdbc.framework.SQLParameter; @@ -335,11 +336,14 @@ public class PmoResource extends AbstractNCCRestResource { if (MMCollectionUtil.isEmpty(bidList)) { return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含pmobids信息", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); } else { + HYPubBO hy = new HYPubBO(); try { - String[] pmobids = bidList.toArray(new String[0]); - IPMOQueryService pmoQuery = NCLocator.getInstance().lookup(IPMOQueryService.class); - PMOAggVO[] pmoAggVOS = pmoQuery.queryPMOAggVOByBid(pmobids); - return ResultMessageUtil.toJSON(pmoAggVOS, "流程生产订单查询成功"); + List pmoItemVOS = new ArrayList<>(); + for (String bid : bidList) { + PMOItemVO pmoItemVO = (PMOItemVO) hy.queryByPrimaryKey(PMOItemVO.class, bid); + pmoItemVOS.add(pmoItemVO); + } + return ResultMessageUtil.toJSON(pmoItemVOS, "流程生产订单查询成功"); } catch (BusinessException e) { return ResultMessageUtil.exceptionToJSON(e); } diff --git a/uapbd/src/public/nccloud/api/uapbd/materialmanage/material/MaterialManageMaterial.java b/uapbd/src/public/nccloud/api/uapbd/materialmanage/material/MaterialManageMaterial.java index dbbdba92..99d6c455 100644 --- a/uapbd/src/public/nccloud/api/uapbd/materialmanage/material/MaterialManageMaterial.java +++ b/uapbd/src/public/nccloud/api/uapbd/materialmanage/material/MaterialManageMaterial.java @@ -552,4 +552,61 @@ public class MaterialManageMaterial extends AbstractNCCRestResource { return (IOpenApiJsonConvertToExChangeXmlService) NCLocator.getInstance() .lookup(IOpenApiJsonConvertToExChangeXmlService.class); } + + @POST + @Path("queryMaterialView") + @Consumes({ "application/json" }) + @Produces({ "application/json" }) + public JSONString queryMaterialView(JSONString json) { + JSONObject jObject = JSON.parseObject(json.toJSONString()); + if (jObject == null) { + return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null")); + } + + JSONObject data = jObject.getJSONObject("data"); + String createdate = data.getString("createdate"); + String ts_mts = data.getString("ts_mts"); + String ts_mtp = data.getString("ts_mtp"); + String ts_mt = data.getString("ts_mt"); + String createdate_mtp = data.getString("createdate_mtp"); + String createdate_mt = data.getString("createdate_mt"); + String enablestate = data.getString("enablestate"); + Map param = new HashMap(); + + if (StringUtils.isNotBlank(createdate)) { + param.put("CREATEDATE", createdate); + } + if (StringUtils.isNotBlank(ts_mts)) { + param.put("TS_MTS", ts_mts); + } + if (StringUtils.isNotBlank(ts_mtp)) { + param.put("TS_MTP", ts_mtp); + } + if (StringUtils.isNotBlank(ts_mt)) { + param.put("TS_MT", ts_mt); + } + if (StringUtils.isNotBlank(createdate_mtp)) { + param.put("CREATEDATE_MTP", createdate_mtp); + } + if (StringUtils.isNotBlank(createdate_mt)) { + param.put("CREATEDATE_MT", createdate_mt); + } + if (StringUtils.isNotBlank(enablestate)) { + param.put("ENABLESTATE", enablestate); + } + + try { + ApiResourceParamUtils ApiResourceParamUtils = new ApiResourceParamUtils(); + String condition = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param); + String condition1 = condition.replace("=", ">="); + String condition2 = condition1.replaceFirst("ENABLESTATE .", "ENABLESTATE "); + String sql = "select * from BD_MATERIAL_C047 where " + condition2; + List> rows = (List>) (new BaseDAO()).executeQuery(sql, new MapListProcessor()); + return ResultMessageUtil.toJSON(rows, "查询物料视图信息成功"); + + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + + } }