feat(mmpac): 增加C038组织vdef7(启源单据号)重复校验逻辑
This commit is contained in:
		
							parent
							
								
									e39327ab16
								
							
						
					
					
						commit
						3b92d6f854
					
				|  | @ -20,6 +20,7 @@ import nc.vo.pub.billtype.BilltypeVO; | |||
| import nc.vo.pub.lang.UFDate; | ||||
| import nc.vo.pubapp.AppContext; | ||||
| import nc.vo.pubapp.pattern.exception.ExceptionUtils; | ||||
| import nc.ws.opm.pub.utils.result.APIErrCodeEnum; | ||||
| import nccloud.api.mmpac.wr.IAPIWrMaintain; | ||||
| import nccloud.api.rest.utils.NCCRestUtils; | ||||
| import nccloud.api.rest.utils.ResultMessageUtil; | ||||
|  | @ -134,8 +135,8 @@ public class WrResource extends AbstractNCCRestResource { | |||
|                 BaseDAO baseDAO = new BaseDAO(); | ||||
|                 for (AggWrVO aggWrVO : aggWrVOS) { | ||||
|                     List<BilltypeVO> collection = (List<BilltypeVO>) baseDAO.retrieveByClause(BilltypeVO.class, " pk_billtypecode='" + aggWrVO.getParentVO().getVtrantypecode() + "'"); | ||||
|                     if(collection==null||collection.size()==0){ | ||||
|                         throw new BusinessException("翻译报告类型失败,检查报告类型编码【"+aggWrVO.getParentVO().getVtrantypecode()+"】"); | ||||
|                     if (collection == null || collection.size() == 0) { | ||||
|                         throw new BusinessException("翻译报告类型失败,检查报告类型编码【" + aggWrVO.getParentVO().getVtrantypecode() + "】"); | ||||
|                     } | ||||
|                     aggWrVO.getParentVO().setVtrantypeid(collection.get(0).getPk_billtypeid()); | ||||
|                     aggWrVO.getParentVO().setDbilldate(new UFDate()); | ||||
|  | @ -305,6 +306,19 @@ public class WrResource extends AbstractNCCRestResource { | |||
|                     Map<String, Object> bodyInfo = (Map<String, Object>) paramMap.get(BODYTABLE); | ||||
|                     itemInfos.add(bodyInfo); | ||||
|                 } | ||||
|                 // 精密(C038)专项需求,vdef7(启源MES单据号)有值且能在数据库中查到,则返回提示请勿重复添加 | ||||
|                 if ("C038".equals(headInfo.get("pk_org"))) { | ||||
|                     if (MMValueCheck.isEmpty(headInfo.get("vdef7"))) { | ||||
|                         return ResultMessageUtil.exceptionToJSON("精密铸造组织需要传vdef7(启源MES单据号)的值", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); | ||||
|                     } | ||||
|                     String vdef7 = headInfo.get("vdef7") + ""; | ||||
|                     String countSql = "select count(1) from mm_wr where dr = 0 and vdef7 = '" + vdef7 + "'"; | ||||
|                     // NCCForUAPLogger.debug("countSql = " + countSql); | ||||
|                     Integer num = (Integer) new BaseDAO().executeQuery(countSql, new ColumnProcessor()); | ||||
|                     if (num > 0) { | ||||
|                         return ResultMessageUtil.exceptionToJSON("C038组织下单号(" + vdef7 + ")已存在,请勿重复添加", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 // 预处理数据:处理仓库转换和MES相关字段 | ||||
|                 preProcessMesData(headInfo, itemInfos, baseDAO); | ||||
|  | @ -356,11 +370,11 @@ public class WrResource extends AbstractNCCRestResource { | |||
|                 voList.add(vo); | ||||
|                 IAPIWrMaintain server = NCLocator.getInstance().lookup(IAPIWrMaintain.class); | ||||
|                 List<AggWrVO> aggWrVOS = TransferCodeToPKTool.transferAggVO(voList); | ||||
|                 //翻译报告类型 | ||||
|                 // 翻译报告类型 | ||||
|                 for (AggWrVO aggWrVO : aggWrVOS) { | ||||
|                     List<BilltypeVO> collection = (List<BilltypeVO>) baseDAO.retrieveByClause(BilltypeVO.class, " pk_billtypecode='" + aggWrVO.getParentVO().getVtrantypecode() + "'"); | ||||
|                     if(collection==null||collection.size()==0){ | ||||
|                         throw new BusinessException("翻译报告类型失败,检查报告类型编码【"+aggWrVO.getParentVO().getVtrantypecode()+"】"); | ||||
|                     if (collection == null || collection.size() == 0) { | ||||
|                         throw new BusinessException("翻译报告类型失败,检查报告类型编码【" + aggWrVO.getParentVO().getVtrantypecode() + "】"); | ||||
|                     } | ||||
|                     aggWrVO.getParentVO().setVtrantypeid(collection.get(0).getPk_billtypeid()); | ||||
|                     aggWrVO.getParentVO().setDbilldate(new UFDate()); | ||||
|  | @ -573,15 +587,17 @@ 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 headInfo  表头信息 | ||||
|      * @param itemInfos 表体信息列表 | ||||
|      * @param baseDAO 数据库操作对象 | ||||
|      * @param baseDAO   数据库操作对象 | ||||
|      * @throws BusinessException 处理失败时抛出异常 | ||||
|      */ | ||||
|     private void preProcessMesData(Map<String, Object> headInfo, List<Map<String, Object>> itemInfos, BaseDAO baseDAO) | ||||
|  | @ -590,7 +606,7 @@ public class WrResource extends AbstractNCCRestResource { | |||
|         for (Map<String, Object> itemMap : itemInfos) { | ||||
|             // 处理MES相关字段自动赋值 | ||||
|             processMESFields(itemMap, baseDAO); | ||||
|              | ||||
| 
 | ||||
|             // 处理质量信息中的仓库转换 | ||||
|             if (itemMap.containsKey(QUALITYTABLE)) { | ||||
|                 List<Map<String, Object>> qualityInfos = (List<Map<String, Object>>) itemMap.get(QUALITYTABLE); | ||||
|  | @ -598,51 +614,52 @@ public class WrResource extends AbstractNCCRestResource { | |||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
| 
 | ||||
|     /** | ||||
|      * 处理MES相关字段自动赋值 | ||||
|      * 如果用户code是MES,那么将cbmoid保持和vbsrcid一致,cbmobid保持和vbsrcrowid一致 | ||||
|      * 增加vbmobillcode单据号,通过cbmoid查询流程生产订单表的vbillcode | ||||
|      * | ||||
|      * @param itemMap 表体信息 | ||||
|      * @param baseDAO 数据库操作对象 | ||||
|      * @throws BusinessException 查询失败时抛出异常 | ||||
|      */ | ||||
| 
 | ||||
|     private void processMESFields(Map<String, Object> itemMap, BaseDAO baseDAO) throws BusinessException { | ||||
|         //检查是否需要处理MES字段 | ||||
|         // 检查是否需要处理MES字段 | ||||
|         // 这里可以通过上下文、用户信息或其他标识来判断 | ||||
|         // 暂时通过检查是否存在特定字段来判断是MES用户 | ||||
|         boolean isMESUser = isMESUser(itemMap); | ||||
|          | ||||
| 
 | ||||
|         if (!isMESUser) { | ||||
|             return; | ||||
|         } | ||||
|          | ||||
| 
 | ||||
|         try { | ||||
|             //设置cbmoid保持和vbsrcid一致 | ||||
|             // 设置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 | ||||
|             // 通过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; | ||||
|  | @ -650,9 +667,11 @@ public class WrResource extends AbstractNCCRestResource { | |||
|             throw new BusinessException("处理MES字段失败:" + e.getMessage()); | ||||
|         } | ||||
|     } | ||||
|       /** | ||||
| 
 | ||||
|     /** | ||||
|      * 判断是否为MES用户 | ||||
|      * 通过获取线程上下文中的用户编码来判断是否为MES用户 | ||||
|      * | ||||
|      * @param itemMap 表体信息(保留参数以保持方法签名一致性) | ||||
|      * @return 是否为MES用户 | ||||
|      */ | ||||
|  | @ -661,29 +680,30 @@ public class WrResource extends AbstractNCCRestResource { | |||
|         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; | ||||
|         } | ||||
|     } | ||||
|      | ||||
| 
 | ||||
|     /** | ||||
|      * 处理仓库转换(将原有的仓库转换逻辑包装成独立函数) | ||||
|      * | ||||
|      * @param qualityInfos 质量信息列表 | ||||
|      * @param baseDAO 数据库操作对象 | ||||
|      * @param baseDAO      数据库操作对象 | ||||
|      * @throws BusinessException 转换失败时抛出异常 | ||||
|      */ | ||||
|     private void processWarehouseConversion(List<Map<String, Object>> qualityInfos, BaseDAO baseDAO)  | ||||
|     private void processWarehouseConversion(List<Map<String, Object>> qualityInfos, BaseDAO baseDAO) | ||||
|             throws BusinessException { | ||||
|         if (qualityInfos == null || qualityInfos.isEmpty()) { | ||||
|             return; | ||||
|         } | ||||
|          | ||||
| 
 | ||||
|         for (Map<String, Object> qualityInfo : qualityInfos) { | ||||
|             if (qualityInfo.containsKey("cgwarehouseid") && MMValueCheck.isNotEmpty(qualityInfo.get("cgwarehouseid"))) { | ||||
|                 String warehouseValue = String.valueOf(qualityInfo.get("cgwarehouseid")); | ||||
|  | @ -696,8 +716,9 @@ public class WrResource extends AbstractNCCRestResource { | |||
|     /** | ||||
|      * 转换仓库编码为主键 | ||||
|      * 首先假设传入值是主键,如果查询不到,再假设是编码进行查询 | ||||
|      * | ||||
|      * @param warehouseValue 仓库值(可能是主键或编码) | ||||
|      * @param baseDAO 数据库操作对象 | ||||
|      * @param baseDAO        数据库操作对象 | ||||
|      * @return 仓库主键 | ||||
|      * @throws BusinessException 如果仓库不存在 | ||||
|      */ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue