diff --git a/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmByIdsQueryAction.java b/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmByIdsQueryAction.java index 387b3911..b40d5e74 100644 --- a/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmByIdsQueryAction.java +++ b/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmByIdsQueryAction.java @@ -1,19 +1,10 @@ package nccloud.web.mmpac.pickm.query; -import nc.bs.dao.BaseDAO; +import nc.bs.trade.business.HYPubBO; import nc.itf.mmpac.pickm.IPickmQueryService; -import nc.jdbc.framework.processor.ColumnProcessor; -import nc.jdbc.framework.processor.MapProcessor; -import nc.util.mmf.framework.base.MMValueCheck; -import nc.vo.bd.material.MaterialVO; import nc.vo.ml.NCLangRes4VoTransl; import nc.vo.mmpac.pickm.entity.AggPickmVO; -import nc.vo.mmpac.pickm.entity.PickmHeadVO; -import nc.vo.mmpac.pickm.entity.PickmItemVO; -import nc.vo.mmpac.pickm.enumeration.FbillstatusEnum; -import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFDouble; -import nccloud.commons.lang.StringUtils; import nccloud.dto.mmpac.pickm.pub.entity.PickmQueryInfoDTO; import nccloud.framework.core.exception.ExceptionUtils; import nccloud.framework.core.json.IJson; @@ -21,13 +12,17 @@ import nccloud.framework.service.ServiceLocator; import nccloud.framework.web.action.itf.ICommonAction; import nccloud.framework.web.container.IRequest; import nccloud.framework.web.json.JsonFactory; +import nccloud.framework.web.ui.model.GridModel; import nccloud.framework.web.ui.model.row.Cell; import nccloud.framework.web.ui.model.row.Row; +import nccloud.framework.web.ui.pattern.billcard.BillCard; +import nccloud.framework.web.ui.pattern.billcard.BillCardOperator; import nccloud.framework.web.ui.pattern.grid.Grid; -import nccloud.framework.web.ui.pattern.grid.GridOperator; -import nccloud.web.mmpub.pub.action.NCCTempletQueryAction; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 备料计划列表-借料入库弹窗-查询 @@ -41,124 +36,77 @@ public class PickmByIdsQueryAction implements ICommonAction { IJson json = JsonFactory.create(); PickmQueryInfoDTO query = json.fromJson(read, PickmQueryInfoDTO.class); try { - String pageid = query.getPageid(); - String appcode = query.getAppcode(); + String pageid ="50080102_card"; String[] pks = query.getPks(); IPickmQueryService service = ServiceLocator.find(IPickmQueryService.class); AggPickmVO[] vos = service.queryBillsByPks(pks); if (null == vos || vos.length == 0) { ExceptionUtils.wrapBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("5008100_0", "05008100-0005")); } - List bids = new ArrayList<>(); - Map pickmHeadMap = new HashMap<>(); + List list=new ArrayList<>(); + List bodyList = new ArrayList<>(); for (AggPickmVO vo : vos) { - PickmHeadVO headVO = vo.getParentVO(); - if (FbillstatusEnum.AUDIT_STATE.equalsValue(headVO.getFbillstatus())) { - PickmItemVO[] itemVOS = (PickmItemVO[]) vo.getChildren(PickmItemVO.class); - if (itemVOS == null || itemVOS.length == 0) { + if(vo.getParentVO().getFbillstatus()!=-1){ + BillCardOperator operator = new BillCardOperator(pageid); + BillCard billCard = operator.toCard(vo); + if(billCard.getBody()==null){ continue; } - Set codeSet = new HashSet<>(); - for (PickmItemVO itemVO : itemVOS) { - String cpickmbid = itemVO.getCpickm_bid(); - String countSql = "SELECT h.vbillcode" + - " FROM ic_generalin_b b" + - " LEFT JOIN ic_generalin_h h ON b.cgeneralhid = h.cgeneralhid" + - " WHERE b.dr = 0" + - " AND b.csourcebillbid = '" + cpickmbid + "'"; - String vbillcode = (String) new BaseDAO().executeQuery(countSql, new ColumnProcessor()); - if (StringUtils.isNotEmpty(vbillcode) && - !"~".equals(vbillcode) && !"null".equals(vbillcode)) { - codeSet.add(vbillcode); - } else { - bids.add(itemVO); - } - } - if (!MMValueCheck.isEmpty(codeSet)) { - String codeStr = String.join(",", codeSet); - ExceptionUtils.wrapBusinessException("存在有关联的其它入库,单号:" + codeStr); - } - // 备料计划主表 - pickmHeadMap.put(headVO.getCpickmid(), headVO); - } - } - if (MMValueCheck.isEmpty(bids)) { - Map returnMap = new HashMap<>(); - returnMap.put("data", null); - returnMap.put("success", false); - return returnMap; - } - GridOperator operator = new GridOperator(pageid); - if (MMValueCheck.isNotEmpty(appcode)) { - String templetid = NCCTempletQueryAction.getTempletIdByAppCode(appcode, pageid); - operator = new GridOperator(templetid, pageid); - } - Grid grid = operator.toGrid(bids.toArray(new PickmItemVO[0])); - Row[] rows = grid.getModel().getRows(); - + List rows = List.of(billCard.getBody().getModel().getRows()); for (Row row : rows) { - Map rowValues = row.getValues(); - String cpickmid = (String) rowValues.get("cpickmid").getValue(); - PickmHeadVO hvo = pickmHeadMap.get(cpickmid); - - UFDouble nplanoutastnum = (UFDouble) rowValues.get("nplanoutastnum").getValue(); - UFDouble naccoutastnum = rowValues.get("naccoutastnum").getValue() != null ? (UFDouble) rowValues.get("naccoutastnum").getValue() : UFDouble.ZERO_DBL; - UFDouble nshouldastnum = rowValues.get("nshouldastnum").getValue() != null ? (UFDouble) rowValues.get("nshouldastnum").getValue() : UFDouble.ZERO_DBL; - UFDouble npscastnum = rowValues.get("npscastnum").getValue() != null ? (UFDouble) rowValues.get("npscastnum").getValue() : UFDouble.ZERO_DBL; + UFDouble nplanoutastnum = (UFDouble) row.getValues().get("nplanoutastnum").getValue(); + UFDouble naccoutastnum = (UFDouble) row.getValues().get("naccoutastnum").getValue()!=null? (UFDouble)row.getValues().get("naccoutastnum").getValue():UFDouble.ZERO_DBL; + UFDouble nshouldastnum = (UFDouble) row.getValues().get("nshouldastnum").getValue()!=null? (UFDouble)row.getValues().get("nshouldastnum").getValue():UFDouble.ZERO_DBL; + UFDouble npscastnum = (UFDouble) row.getValues().get("npscastnum").getValue()!=null? (UFDouble)row.getValues().get("npscastnum").getValue():UFDouble.ZERO_DBL; UFDouble borrowedQty = nplanoutastnum.sub(naccoutastnum).sub(nshouldastnum).sub(npscastnum); // 新增备料数量字段,取值为:计划出库数量-累计出库数量-累计发货数量-累计委外数量 if (borrowedQty.doubleValue() <= 0) { continue; } - - // 新增借料数量字段 - Cell borrowedQtyCell = new Cell<>(); + Cell borrowedQtyCell = new Cell(); borrowedQtyCell.setValue(borrowedQty); - rowValues.put("borrowedQty", borrowedQtyCell); - if (hvo != null) { - // 产品编码 - String cmaterialvid = hvo.getCmaterialvid(); - Cell cmaterialvidCell = new Cell<>(); - cmaterialvidCell.setValue(cmaterialvid); - if (cmaterialvid != null && !cmaterialvid.isEmpty()) { - Map materialMap = getMapValByCondition(MaterialVO.getDefaultTableName(), "code,name,def26", - MaterialVO.PK_MATERIAL + " = '" + cmaterialvid + "' "); - if (materialMap != null) { - cmaterialvidCell.setValue(cmaterialvid); - cmaterialvidCell.setDisplay((materialMap.getOrDefault(MaterialVO.CODE, "") + "")); - rowValues.put("cmaterialvid", cmaterialvidCell); - // 物料名称 - Cell materialCell = new Cell<>(); - materialCell.setDisplay(materialMap.getOrDefault(MaterialVO.NAME, "") + ""); - materialCell.setValue(materialMap.getOrDefault(MaterialVO.NAME, "")); - rowValues.put("cmaterialvid.name", materialCell); + row.getValues().put("borrowedQty", borrowedQtyCell); + // 产品编码 取备料计划表头产品编码 + Cell cmaterialvid = new Cell(); + cmaterialvid.setValue(vo.getParentVO().getCmaterialvid()); + row.getValues().put("cmaterialvid", borrowedQtyCell); + // 产品名称 取备料计划表头产品名称 + Cell cmaterialvidName = new Cell(); + HYPubBO hybo = new HYPubBO(); + Object cmaterialvidName1 = hybo.findColValue("bd_material", "name", "pk_material = '"+vo.getParentVO().getCmaterialvid()+"' "); + cmaterialvidName.setValue(cmaterialvidName1); + row.getValues().put("cmaterialvidName", cmaterialvidName); // 生产序号 取备料计划表头物料档案对应表头自定义项26 - materialCell = new Cell<>(); - Object def26 = ""; - if (materialMap.getOrDefault(MaterialVO.DEF26, "") != null) { - def26 = materialMap.getOrDefault(MaterialVO.DEF26, ""); - } - materialCell.setDisplay(def26 + ""); - materialCell.setValue(def26); - rowValues.put("cmaterialvid.def26", materialCell); - } - } + Cell cmaterialvidDef26 = new Cell(); + Object cmaterialvidDef261 = hybo.findColValue("bd_material", "def26", "pk_material = '"+vo.getParentVO().getCmaterialvid()+"' "); + cmaterialvidDef26.setValue(cmaterialvidDef261); + row.getValues().put("cmaterialvidDef26", cmaterialvidDef26); + list.add(row); + // 备料计划单号 取备料计划表头 Cell vbillcode = new Cell(); - vbillcode.setValue(hvo.getVbillcode()); - vbillcode.setDisplay(hvo.getVbillcode()); - rowValues.put("vbillcode", vbillcode); + vbillcode.setValue(vo.getParentVO().getVbillcode()); + row.getValues().put("vbillcode", vbillcode); + list.add(row); // 来源计划单号 取备料计划表头 Cell vsourcebillcode = new Cell(); - vsourcebillcode.setValue(hvo.getVsourcebillcode()); - vsourcebillcode.setDisplay(hvo.getVsourcebillcode()); - rowValues.put("vsourcebillcode", vsourcebillcode); + vsourcebillcode.setValue(vo.getParentVO().getVsourcebillcode()); + row.getValues().put("vsourcebillcode", vsourcebillcode); + list.add(row); } - } +// bodyList.add(billCard.getBody()); + } + } + Grid grid = new Grid(); + GridModel model = new GridModel(); + model.add(list); + grid.setModel(model); Map returnMap = new HashMap<>(); - returnMap.put("data", grid); + Map list1 = new HashMap<>(); + list1.put("rows",list); + returnMap.put("data", list1); returnMap.put("success", true); return returnMap; } catch (Exception ex) { @@ -169,16 +117,4 @@ public class PickmByIdsQueryAction implements ICommonAction { return returnMap; } } - - public Map getMapValByCondition(String tableName, String fieldName, String condition) throws BusinessException { - String sql = " SELECT " + fieldName + " FROM " + tableName + " " + - " WHERE nvl(" + tableName + " .dr,0)= 0 " + - " and " + condition + " "; - Map result = (Map) new BaseDAO().executeQuery(sql, new MapProcessor()); - if (result == null || result.isEmpty()) { - result = new HashMap<>(); - } - return result; - } - } diff --git a/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmItemsQuery.java b/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmItemsQuery.java index 5f306c2b..0547124b 100644 --- a/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmItemsQuery.java +++ b/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmItemsQuery.java @@ -1,29 +1,15 @@ package nccloud.web.mmpac.pickm.query; import nc.bs.dao.BaseDAO; -import nc.itf.mmpac.pickm.IPickmQueryService; import nc.jdbc.framework.processor.ColumnProcessor; -import nc.jdbc.framework.processor.MapProcessor; import nc.util.mmf.framework.base.MMValueCheck; -import nc.vo.bd.material.MaterialVO; -import nc.vo.mmpac.pickm.consts.PickmLangConsts; -import nc.vo.mmpac.pickm.entity.PickmHeadVO; -import nc.vo.mmpac.pickm.entity.PickmItemVO; -import nc.vo.pub.BusinessException; -import nc.vo.pub.lang.UFDouble; import nccloud.commons.lang.StringUtils; import nccloud.dto.mmpac.pickm.pub.entity.PickmQueryInfoDTO; import nccloud.framework.core.exception.ExceptionUtils; import nccloud.framework.core.json.IJson; -import nccloud.framework.service.ServiceLocator; import nccloud.framework.web.action.itf.ICommonAction; import nccloud.framework.web.container.IRequest; import nccloud.framework.web.json.JsonFactory; -import nccloud.framework.web.ui.model.row.Cell; -import nccloud.framework.web.ui.model.row.Row; -import nccloud.framework.web.ui.pattern.grid.Grid; -import nccloud.framework.web.ui.pattern.grid.GridOperator; -import nccloud.web.mmpub.pub.action.NCCTempletQueryAction; import java.util.*; @@ -63,106 +49,9 @@ public class PickmItemsQuery implements ICommonAction { String codeStr = String.join(",", codeSet); ExceptionUtils.wrapBusinessException("存在有关联的其它入库,单号:" + codeStr); } - IPickmQueryService service = ServiceLocator.find(IPickmQueryService.class); - PickmItemVO[] itemVOS = service.queryItemsByIds(bids.toArray(new String[0])); - if (MMValueCheck.isEmpty(itemVOS)) { - ExceptionUtils.wrapBusinessException(PickmLangConsts.getHIT_BODYNOTNULL()); - } - GridOperator operator = new GridOperator(queryInfo.getPageid()); - if (MMValueCheck.isNotEmpty(queryInfo.getAppcode())) { - String templetid = NCCTempletQueryAction.getTempletIdByAppCode(queryInfo.getAppcode(), queryInfo.getPageid()); - operator = new GridOperator(templetid, queryInfo.getPageid()); - } - // HYPubBO hybo = new HYPubBO(); - Grid grid = operator.toGrid(itemVOS); - Row[] rows = grid.getModel().getRows(); - // 收集所有唯一的cpickmid - Set pickmIdSet = new HashSet<>(); - for (Row row : rows) { - Map rowValues = row.getValues(); - String cpickmid = (String) rowValues.get("cpickmid").getValue(); - if (cpickmid != null && !cpickmid.isEmpty()) { - pickmIdSet.add(cpickmid); - } - } - - // 批量查询所有需要的PickmHeadVO - Map pickmHeadMap = new HashMap<>(); - if (!pickmIdSet.isEmpty()) { - String[] pickmIds = pickmIdSet.toArray(new String[0]); - PickmHeadVO[] headVOs = service.queryHeadByIds(pickmIds); - if (headVOs != null) { - for (PickmHeadVO headVO : headVOs) { - if (headVO != null && headVO.getCpickmid() != null) { - pickmHeadMap.put(headVO.getCpickmid(), headVO); - } - } - } - } - - for (Row row : rows) { - Map rowValues = row.getValues(); - String cpickmid = (String) rowValues.get("cpickmid").getValue(); - PickmHeadVO hvo = pickmHeadMap.get(cpickmid); - - UFDouble nplanoutastnum = (UFDouble) rowValues.get("nplanoutastnum").getValue(); - UFDouble naccoutastnum = rowValues.get("naccoutastnum").getValue() != null ? (UFDouble) rowValues.get("naccoutastnum").getValue() : UFDouble.ZERO_DBL; - UFDouble nshouldastnum = rowValues.get("nshouldastnum").getValue() != null ? (UFDouble) rowValues.get("nshouldastnum").getValue() : UFDouble.ZERO_DBL; - UFDouble npscastnum = rowValues.get("npscastnum").getValue() != null ? (UFDouble) rowValues.get("npscastnum").getValue() : UFDouble.ZERO_DBL; - UFDouble borrowedQty = nplanoutastnum.sub(naccoutastnum).sub(nshouldastnum).sub(npscastnum); - // 新增备料数量字段,取值为:计划出库数量-累计出库数量-累计发货数量-累计委外数量 - if (borrowedQty.doubleValue() <= 0) { - continue; - } - - // 新增借料数量字段 - Cell borrowedQtyCell = new Cell<>(); - borrowedQtyCell.setValue(borrowedQty); - rowValues.put("borrowedQty", borrowedQtyCell); - if (hvo != null) { - // 产品编码 - String cmaterialvid = hvo.getCmaterialvid(); - Cell cmaterialvidCell = new Cell<>(); - cmaterialvidCell.setValue(cmaterialvid); - if (cmaterialvid != null && !cmaterialvid.isEmpty()) { - Map materialMap = getMapValByCondition(MaterialVO.getDefaultTableName(), "code,name,def26", - MaterialVO.PK_MATERIAL + " = '" + cmaterialvid + "' "); - if (materialMap != null) { - cmaterialvidCell.setValue(cmaterialvid); - cmaterialvidCell.setDisplay((materialMap.getOrDefault(MaterialVO.CODE, "") + "")); - rowValues.put("cmaterialvid", cmaterialvidCell); - // 物料名称 - Cell materialCell = new Cell<>(); - materialCell.setDisplay(materialMap.getOrDefault(MaterialVO.NAME, "") + ""); - materialCell.setValue(materialMap.getOrDefault(MaterialVO.NAME, "")); - rowValues.put("cmaterialvid.name", materialCell); - // 生产序号 取备料计划表头物料档案对应表头自定义项26 - materialCell = new Cell<>(); - Object def26 = ""; - if (materialMap.getOrDefault(MaterialVO.DEF26, "") != null) { - def26 = materialMap.getOrDefault(MaterialVO.DEF26, ""); - } - materialCell.setDisplay(def26 + ""); - materialCell.setValue(def26); - rowValues.put("cmaterialvid.def26", materialCell); - } - } - // 备料计划单号 取备料计划表头 - Cell vbillcode = new Cell(); - vbillcode.setValue(hvo.getVbillcode()); - vbillcode.setDisplay(hvo.getVbillcode()); - rowValues.put("vbillcode", vbillcode); - - // 来源计划单号 取备料计划表头 - Cell vsourcebillcode = new Cell(); - vsourcebillcode.setValue(hvo.getVsourcebillcode()); - vsourcebillcode.setDisplay(hvo.getVsourcebillcode()); - rowValues.put("vsourcebillcode", vsourcebillcode); - } - } Map returnMap = new HashMap<>(); - returnMap.put("data", grid); + returnMap.put("data", bids); returnMap.put("success", true); return returnMap; } else { @@ -179,15 +68,4 @@ public class PickmItemsQuery implements ICommonAction { return returnMap; } } - - public Map getMapValByCondition(String tableName, String fieldName, String condition) throws BusinessException { - String sql = " SELECT " + fieldName + " FROM " + tableName + " " + - " WHERE nvl(" + tableName + " .dr,0)= 0 " + - " and " + condition + " "; - Map result = (Map) new BaseDAO().executeQuery(sql, new MapProcessor()); - if (result == null || result.isEmpty()) { - result = new HashMap<>(); - } - return result; - } } diff --git a/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToQmsAction.java b/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToQmsAction.java index 43a98771..a3045331 100644 --- a/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToQmsAction.java +++ b/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToQmsAction.java @@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import nc.bs.dao.BaseDAO; -import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; @@ -21,6 +20,7 @@ import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; import nc.vo.org.OrgVO; import nc.vo.pmpub.project.ProjectHeadVO; import nc.vo.pub.BusinessException; +import nc.vo.pub.lang.UFBoolean; import nc.vo.pub.lang.UFDateTime; import nccloud.api.rest.utils.ResultMessageUtil; import nccloud.framework.service.ServiceLocator; @@ -50,7 +50,7 @@ public class PmoToQmsAction implements ICommonAction { @Override public Object doAction(IRequest iRequest) { String json = iRequest.read(); - logger.error("PmoToQmsAction-Param:" + json); + // logger.error("PmoToQmsAction-Param:" + json); Map paraMap = (Map) JsonFactory.create().fromJson(json, Map.class); try { // 获取主键 @@ -75,7 +75,7 @@ public class PmoToQmsAction implements ICommonAction { * 构建同步数据 */ private void buildSyncData(PMOAggVO[] useVOs) throws BusinessException { - IPMOQueryService pmoQuery = NCLocator.getInstance().lookup(IPMOQueryService.class); + IPMOQueryService pmoQuery = ServiceLocator.find(IPMOQueryService.class); Set vbatchcodeSet = new HashSet<>(); PMOAggVO aggVO = useVOs[0]; PMOHeadVO headVO = aggVO.getParentVO(); @@ -139,13 +139,18 @@ public class PmoToQmsAction implements ICommonAction { Map mrlmap = (Map) dao.executeQuery(whereSql, new MapProcessor()); String cprojectid = item.getCprojectid();// 项目id - String projectCode = MyHelper.getStrValByCondition(nc.vo.pmpub.project.ProjectHeadVO.getDefaultTableName(), nc.vo.pmpub.project.ProjectHeadVO.PROJECT_CODE, + String projectCode = MyHelper.getStrValByCondition(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_CODE, ProjectHeadVO.PK_PROJECT + " = '" + cprojectid + "'"); // 序列号 String vsnCodeSql = " select vsncode from mm_pmo_serialno where cmoid = '" + cmoid + "' and dr = 0 "; List> vsnCodeList = (List>) dao.executeQuery(vsnCodeSql, new MapListProcessor()); - if (vsnCodeList == null || vsnCodeList.isEmpty()) { - throw new BusinessException("箱变同步启源流程生产订单失败,请检查是否存在序列号"); + // 检查物料是否开启序列号,开启查不到序列号则提示异常,未开启直接跳过 + if (checkMaterialSn(cmaterialvid, item.getPk_org())) { + if (MMValueCheck.isEmpty(vsnCodeList)) { + throw new BusinessException("箱变同步启源流程生产订单失败,请检查是否存在序列号"); + } + } else { + throw new BusinessException("箱变推启源流程生产订单,物料的序列号未启用"); } for (Map vsnMap : vsnCodeList) { JSONObject itemObj = new JSONObject(); @@ -211,8 +216,12 @@ public class PmoToQmsAction implements ICommonAction { singleObj.put("jhy", billmakerName); singleObj.put("bz", headVO.getVnote()); singleObj.put("Content", contentArray); - pushData(singleObj); - updatePmo(hidSet); + if (MMValueCheck.isNotEmpty(contentArray)) { + pushData(singleObj); + updatePmo(hidSet); + } else { + logger.error("QMS-PMO-XB-无同步数据:" + singleObj.toJSONString()); + } } } @@ -274,4 +283,19 @@ public class PmoToQmsAction implements ICommonAction { } return false; } + + /** + * 检查物料是否开启序列号 + */ + private boolean checkMaterialSn(String pk_material, String pk_org) throws BusinessException { + String sql = "SELECT DISTINCT bd_materialstock.serialmanaflag" + + " FROM bd_materialstock" + + " WHERE bd_materialstock.pk_material = '[pk_material]' AND bd_materialstock.pk_org = '[pk_org]'"; + sql = sql.replace("[pk_material]", pk_material); + sql = sql.replace("[pk_org]", pk_org); + String flag = (String) dao.executeQuery(sql, new ColumnProcessor()); + UFBoolean serialmanaflag = UFBoolean.valueOf(flag); + return serialmanaflag.booleanValue(); + } + } diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java index 3bc679b6..a388363e 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java @@ -1,6 +1,5 @@ package nc.bs.mmpac.pmo.pac0002.bp; -import nc.bs.mmpac.pickm.bp.rule.AfterApproveRuleHighpressureIms; import nc.bs.mmpac.pmo.pac0002.bp.rule.*; import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint; import nc.bs.mmpac.pmo.pac0002.rule.*; @@ -54,9 +53,9 @@ public class PMOApproveBP { processer.addAfterRule(new AfterApprovingSynchronizeRuleRZ(true)); // 审批后推送流程生产订单到MES processer.addAfterRule(new AfterApproveRuleSyncMes()); - // 审批后推送流程生产订单到艾普MES + // 审批后推送流程生产订单到艾普MES-电力电子 processer.addAfterRule(new AfterApproveSyncEpicMesRule()); - // 审批后推送流程生产订单到启源qms + // 审批后推送流程生产订单到启源qms-箱变 processer.addAfterRule(new AfterApproveSyncQMSRule()); // 流程生产订单审批后推送高压MES processer.addAfterRule(new AfterApproveSyncHighpressureMesRule()); diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncQMSRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncQMSRule.java index ac7ecaac..cc3e3457 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncQMSRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncQMSRule.java @@ -23,6 +23,7 @@ import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; import nc.vo.org.OrgVO; import nc.vo.pmpub.project.ProjectHeadVO; import nc.vo.pub.BusinessException; +import nc.vo.pub.lang.UFBoolean; import nc.vo.pub.lang.UFDateTime; import java.util.HashSet; @@ -82,7 +83,7 @@ public class AfterApproveSyncQMSRule implements IRule { } for (PMOItemVO itemVO : nowItemVOS) { String vbatchcode = itemVO.getVbatchcode(); - if(null == vbatchcode){ + if (null == vbatchcode) { continue; } vbatchcodeSet.add(vbatchcode); @@ -128,14 +129,23 @@ public class AfterApproveSyncQMSRule implements IRule { Map mrlmap = (Map) dao.executeQuery(whereSql, new MapProcessor()); String cprojectid = item.getCprojectid();// 项目id - String projectCode = MyHelper.getStrValByCondition(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_CODE, - ProjectHeadVO.PK_PROJECT + " = '" + cprojectid + "'"); + String projectCode = MyHelper.getStrValByCondition(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_CODE, ProjectHeadVO.PK_PROJECT + " = '" + cprojectid + "'"); // 序列号 String vsnCodeSql = " select vsncode from mm_pmo_serialno where cmoid = '" + cmoid + "' and dr = 0 "; List> vsnCodeList = (List>) dao.executeQuery(vsnCodeSql, new MapListProcessor()); - if (vsnCodeList == null || vsnCodeList.isEmpty()) { - throw new BusinessException("箱变同步启源流程生产订单失败,请检查是否存在序列号"); + // 检查物料是否开启序列号,开启查不到序列号则提示异常,未开启直接跳过 + if (checkMaterialSn(cmaterialvid, item.getPk_org())) { + if (MMValueCheck.isEmpty(vsnCodeList)) { + throw new BusinessException("箱变同步启源流程生产订单失败,请检查是否存在序列号"); + } + } else { + logger.error(String.format( + "箱变推启源流程生产订单,物料的序列号未启用,物料id = [%S], 单号 = [%S], 行号 = [%S]", + cmaterialvid, vbillcode, item.getVrowno() + )); + continue; } + for (Map vsnMap : vsnCodeList) { JSONObject itemObj = new JSONObject(); itemObj.put("sgdh", vsnMap.get("vsncode"));// QMS施工单号-BIP的序列号 @@ -200,8 +210,12 @@ public class AfterApproveSyncQMSRule implements IRule { singleObj.put("jhy", billmakerName); singleObj.put("bz", headVO.getVnote()); singleObj.put("Content", contentArray); - pushData(singleObj); - updatePmo(hidSet); + if (MMValueCheck.isNotEmpty(contentArray)) { + pushData(singleObj); + updatePmo(hidSet); + } else { + logger.error("QMS-PMO-XB-无同步数据:" + singleObj.toJSONString()); + } } } @@ -218,10 +232,7 @@ public class AfterApproveSyncQMSRule implements IRule { private void pushData(JSONObject param) throws BusinessException { // String jsonString = param.toJSONString(); // 转json字符串的时候保留null值 - String jsonStr = JSON.toJSONString(param, - SerializerFeature.WriteMapNullValue, - SerializerFeature.WriteNullStringAsEmpty - ); + String jsonStr = JSON.toJSONString(param, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty); logger.error("QMS-PMO-XB-param = " + jsonStr); // NCCForUAPLogger.debug("QMS-PMO-XB-param = " + jsonStr); String baseUrl = configParams.get("qmsBaseUrl"); @@ -264,4 +275,19 @@ public class AfterApproveSyncQMSRule implements IRule { } return false; } + + /** + * 检查物料是否开启序列号 + */ + private boolean checkMaterialSn(String pk_material, String pk_org) throws BusinessException { + String sql = "SELECT DISTINCT bd_materialstock.serialmanaflag" + + " FROM bd_materialstock" + + " WHERE bd_materialstock.pk_material = '[pk_material]' AND bd_materialstock.pk_org = '[pk_org]'"; + sql = sql.replace("[pk_material]", pk_material); + sql = sql.replace("[pk_org]", pk_org); + String flag = (String) dao.executeQuery(sql, new ColumnProcessor()); + UFBoolean serialmanaflag = UFBoolean.valueOf(flag); + return serialmanaflag.booleanValue(); + } + }