diff --git a/uapbd/src/client/nccloud/web/uapbd/material/action/MaterialJmPushToQyMesAction.java b/uapbd/src/client/nccloud/web/uapbd/material/action/MaterialJmPushToQyMesAction.java index 917b3996..e26ba9b5 100644 --- a/uapbd/src/client/nccloud/web/uapbd/material/action/MaterialJmPushToQyMesAction.java +++ b/uapbd/src/client/nccloud/web/uapbd/material/action/MaterialJmPushToQyMesAction.java @@ -14,12 +14,15 @@ import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.jdbc.framework.processor.MapProcessor; import nc.pubitf.uapbd.IMaterialPubService; +import nc.util.mmf.busi.service.MaterialPubService; import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.bd.defdoc.DefdocVO; import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.plan.MaterialPlanVO; +import nc.vo.bd.material.prod.MaterialProdVO; import nc.vo.bd.material.stock.MaterialStockVO; import nc.vo.bd.stordoc.StordocVO; +import nc.vo.org.DeptVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFDouble; @@ -79,6 +82,7 @@ public class MaterialJmPushToQyMesAction implements ICommonAction { } useVOs.add(materialVO); } + checkMaterialVO(useVOs); buildSyncData(useVOs); return ResultMessageUtil.toJSON(true, "推送成功"); } catch (Exception ex) { @@ -86,6 +90,58 @@ public class MaterialJmPushToQyMesAction implements ICommonAction { } } + private void checkMaterialVO(List useVOs) throws BusinessException { + // 定义各车间编码常量,便于维护 + String PROCESS_DEPT_CODE = "C038D0019"; // 加工车间 + String CAST_DEPT_CODE = "C038D0017"; // 铸造车间 + String HENGMU_DEPT_CODE = "C038D0023"; // 横目事业部 + for (MaterialVO materialVO : useVOs) { + // 助记码 + String materialmnecode =materialVO.getMaterialmnecode(); + if(null == materialmnecode || materialmnecode.equals("")){ + continue; + } + // 查询物料生产信息 + Set marSet =new HashSet<>(); + marSet.add(materialVO.getPk_material()); + + Map resultMap = MaterialPubService.queryMaterialProduceInfoByPks((String[])marSet.toArray(new String[0]), pkOrg1, new String[]{"pk_prodeptdoc"}); + MaterialProdVO materialProdVO = resultMap.get(materialVO.getPk_material()); + // 部门编码 + String deptCode= null !=materialProdVO.getPk_prodeptdoc() ? MyHelper.getStrValByCondition(DeptVO.getDefaultTableName(), DeptVO.CODE, + DeptVO.PK_DEPT + " = '" + materialProdVO.getPk_prodeptdoc() + "' and dr = 0"):""; + + // 助记码匹配判断与生产部门校验 + boolean isDeptValid = false; + String expectedDeptCode = ""; + String materialPk = materialVO.getPk_material(); + + // 1. 助记码以0501开头 - 加工车间(C03800019) + if (materialmnecode.startsWith("0501")) { + expectedDeptCode = PROCESS_DEPT_CODE; + isDeptValid = deptCode.equals(expectedDeptCode); + } + // 2. 助记码以0502/0503/0504开头 - 铸造车间(C038D0017) + else if (materialmnecode.startsWith("0502") + || materialmnecode.startsWith("0503") + || materialmnecode.startsWith("0504")) { + expectedDeptCode = CAST_DEPT_CODE; + isDeptValid = deptCode.equals(expectedDeptCode); + } + // 3. 助记码以04/06开头 - 横目事业部(C038D0023) + else if (materialmnecode.startsWith("04") || materialmnecode.startsWith("06")) { + expectedDeptCode = HENGMU_DEPT_CODE; + isDeptValid = deptCode.equals(expectedDeptCode); + } + + // 校验不通过则抛出异常 + if (!isDeptValid) { + throw new BusinessException("该物料对应的生产部门错误,请先修改生产部门后,再传启源"); + } + + } + } + private JSONObject getParamJson(IRequest iRequest) { String json = iRequest.getJson(); JSONObject jsonObject = JSONObject.parseObject(json);