From 941dec1543344041466c5d995002bb5ab8ab7ceb Mon Sep 17 00:00:00 2001 From: maolei Date: Fri, 6 Jun 2025 11:13:04 +0800 Subject: [PATCH] =?UTF-8?q?mmpac=E7=94=9F=E4=BA=A7=E6=8A=A5=E5=91=8A:=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20MES=20=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 preProcessMesData 方法预处理 MES 数据 - 实现 processMESFields 方法自动赋值 MES 相关字段 - 添加 processWarehouseConversion 方法处理仓库转换逻辑 -优化 convertWarehouseCodeToPk 方法查询仓库主键 --- .../nccloud/openapi/mmpac/wr/WrResource.java | 186 ++++++++++++++++-- 1 file changed, 171 insertions(+), 15 deletions(-) diff --git a/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java b/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java index e291e10..7e640e9 100644 --- a/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java +++ b/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java @@ -1,18 +1,18 @@ package nccloud.openapi.mmpac.wr; + import nc.bs.dao.BaseDAO; +import nc.bs.framework.common.InvocationInfoProxy; import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.uif2.validation.ValidationFailure; +import nc.jdbc.framework.SQLParameter; +import nc.jdbc.framework.processor.ColumnProcessor; import nc.util.mmf.framework.base.MMArrayUtil; import nc.util.mmf.framework.base.MMCollectionUtil; import nc.util.mmf.framework.base.MMNumberUtil; import nc.util.mmf.framework.base.MMValueCheck; -import nc.vo.mmpac.wr.entity.AggWrVO; -import nc.vo.mmpac.wr.entity.WrItemVO; -import nc.vo.mmpac.wr.entity.WrQualityVO; -import nc.vo.mmpac.wr.entity.WrSerialNoVO; -import nc.vo.mmpac.wr.entity.WrVO; +import nc.vo.mmpac.wr.entity.*; import nc.vo.mmpac.wr.enumeration.WrBillStatusEnum; import nc.vo.pub.BusinessException; import nc.vo.pub.VOStatus; @@ -31,14 +31,7 @@ import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; @Path("mmpac/wr") public class WrResource extends AbstractNCCRestResource { @@ -312,6 +305,9 @@ public class WrResource extends AbstractNCCRestResource { Map bodyInfo = (Map) paramMap.get(BODYTABLE); itemInfos.add(bodyInfo); } + + // ԤݣֿתMESֶ + preProcessMesData(headInfo, itemInfos, baseDAO); AggWrVO vo = new AggWrVO(); WrVO head = new WrVO(); head.setPk_group(AppContext.getInstance().getPkGroup()); @@ -577,9 +573,169 @@ public class WrResource extends AbstractNCCRestResource { } server.delete(deleteVos.toArray(new AggWrVO[0])); return ResultMessageUtil.toJSON(new String[0], "ɾɹ"); - } catch (Exception e) { - return ResultMessageUtil.exceptionToJSON(e); + } catch (Exception e) { return ResultMessageUtil.exceptionToJSON(e); } } + /** + * ԤݣֿתMESֶδ + * @param headInfo ͷϢ + * @param itemInfos Ϣб + * @param baseDAO ݿ + * @throws BusinessException ʧʱ׳쳣 + */ + private void preProcessMesData(Map headInfo, List> itemInfos, BaseDAO baseDAO) + throws BusinessException { + // Ϣеת + for (Map itemMap : itemInfos) { + // MESֶԶֵ + processMESFields(itemMap, baseDAO); + + // ϢеIJֿת + if (itemMap.containsKey(QUALITYTABLE)) { + List> qualityInfos = (List>) itemMap.get(QUALITYTABLE); + processWarehouseConversion(qualityInfos, baseDAO); + } + } + } + + /** + * MESֶԶֵ + * ûcodeMESôcbmoidֺvbsrcidһ£cbmobidֺvbsrcrowidһ + * vbmobillcodeݺţͨcbmoidѯvbillcode + * @param itemMap Ϣ + * @param baseDAO ݿ + * @throws BusinessException ѯʧʱ׳쳣 + */ + + private void processMESFields(Map itemMap, BaseDAO baseDAO) throws BusinessException { + // ǷҪMESֶ + // ͨġûϢʶж + // ʱͨǷضֶжMESû + boolean isMESUser = isMESUser(itemMap); + + if (!isMESUser) { + return; + } + + try { + // cbmoidֺvbsrcidһ + if (itemMap.containsKey("vbsrcid") && MMValueCheck.isNotEmpty(itemMap.get("vbsrcid"))) { + itemMap.put("cbmoid", itemMap.get("vbsrcid")); + } + + // cbmobidֺvbsrcrowidһ + if (itemMap.containsKey("vbsrcrowid") && MMValueCheck.isNotEmpty(itemMap.get("vbsrcrowid"))) { + itemMap.put("cbmobid", itemMap.get("vbsrcrowid")); + } + // ͨcbmoidѯvbillcode + if (itemMap.containsKey("cbmoid") && MMValueCheck.isNotEmpty(itemMap.get("cbmoid"))) { + String cbmoid = String.valueOf(itemMap.get("cbmoid")); + String sql = "SELECT vbillcode FROM mm_pmo WHERE cpmohid = ? AND dr = 0"; + SQLParameter param = new SQLParameter(); + param.addParam(cbmoid); + String vbillcode = (String) baseDAO.executeQuery(sql, param, new ColumnProcessor()); + + if (MMValueCheck.isEmpty(vbillcode)) { + throw new BusinessException("ͨ" + cbmoid + "ѯӦĵݺţ"); + } + + itemMap.put("vbmobillcode", vbillcode); + } + + } catch (Exception e) { + if (e instanceof BusinessException) { + throw e; + } + throw new BusinessException("MESֶʧܣ" + e.getMessage()); + } + } + /** + * жǷΪMESû + * ͨȡ߳еûжǷΪMESû + * @param itemMap ϢԱַǩһԣ + * @return ǷΪMESû + */ + + private boolean isMESUser(Map itemMap) { + try { + // ȡǰ߳еû + String userCode = InvocationInfoProxy.getInstance().getUserCode(); + + // жûǷΪMES + return "MES".equals(userCode); + + } catch (Exception e) { + // ȡûʧܣ¼־false + Log.getInstance("mm-mes").error("ȡûʧܣ" + e.getMessage(), e); + return false; + } + } + + /** + * ֿתԭеIJֿת߼װɶ + * @param qualityInfos Ϣб + * @param baseDAO ݿ + * @throws BusinessException תʧʱ׳쳣 + */ + private void processWarehouseConversion(List> qualityInfos, BaseDAO baseDAO) + throws BusinessException { + if (qualityInfos == null || qualityInfos.isEmpty()) { + return; + } + + for (Map qualityInfo : qualityInfos) { + if (qualityInfo.containsKey("cgwarehouseid") && MMValueCheck.isNotEmpty(qualityInfo.get("cgwarehouseid"))) { + String warehouseValue = String.valueOf(qualityInfo.get("cgwarehouseid")); + String warehousePk = convertWarehouseCodeToPk(warehouseValue, baseDAO); + qualityInfo.put("cgwarehouseid", warehousePk); + } + } + } + + /** + * תֿΪ + * ȼ贫ֵѯټDZвѯ + * @param warehouseValue ֵֿ룩 + * @param baseDAO ݿ + * @return ֿ + * @throws BusinessException ֿⲻ + */ + private String convertWarehouseCodeToPk(String warehouseValue, BaseDAO baseDAO) throws BusinessException { + if (MMValueCheck.isEmpty(warehouseValue)) { + return warehouseValue; + } + try { + // ȼֱӲѯ + String sql = "SELECT pk_stordoc FROM bd_stordoc WHERE pk_stordoc = ? AND dr = 0"; + SQLParameter param = new SQLParameter(); + param.addParam(warehouseValue); + String result = (String) baseDAO.executeQuery(sql, param, new ColumnProcessor()); + + if (MMValueCheck.isNotEmpty(result)) { + // ѯɹֱӷ + return warehouseValue; + } + + // ѯʧܣDZѯ + sql = "SELECT pk_stordoc FROM bd_stordoc WHERE code = ? AND dr = 0"; + param = new SQLParameter(); + param.addParam(warehouseValue); + result = (String) baseDAO.executeQuery(sql, param, new ColumnProcessor()); + + if (MMValueCheck.isNotEmpty(result)) { + // ѯɹ + return result; + } + + // ѯ׳쳣 + throw new BusinessException("ֿ⡾" + warehouseValue + "ڣֿ"); + + } catch (Exception e) { + if (e instanceof BusinessException) { + throw e; + } + throw new BusinessException("ѯֿϢʧܣ" + e.getMessage()); + } + } }