diff --git a/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java b/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java index b81b6ea7..1c9eaa67 100644 --- a/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java +++ b/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java @@ -362,15 +362,15 @@ public class APIMaterialOutMaintainImpl implements IAPIMaterialOutMaintain { // 启源领料 /* 1、传入数据基本非空校验 - 2、根据传入的生产订单主键获取流程备料计划 + 2、根据传入的生产订单行主键获取关联的流程备料计划 3、调用单据转换规则,备料计划VO转为材料出库VO 4、处理材料出库VO部分字段的赋值(行数量 = 本次领料套数(启源传入)*单位主用量(备料计划)) 5、调用材料出库的保存方法 */ List mids; try { - String sql = "SELECT cpickmid from mm_pickm WHERE dr = 0 AND fbillstatus = 1 AND csourcebillid = '[csourcebillid]'"; - sql = sql.replace("[csourcebillid]", paramMap.get("cpmohid").toString()); + String sql = "SELECT cpickmid from mm_pickm WHERE dr = 0 AND fbillstatus = 1 AND csourcebillrowid = '[csourcebillrowid]'"; + sql = sql.replace("[csourcebillrowid]", paramMap.get("cpmobid").toString()); mids = (List) getDao().executeQuery(sql, new ColumnListProcessor()); } catch (DAOException e) { throw new BusinessException(e); @@ -427,22 +427,29 @@ public class APIMaterialOutMaintainImpl implements IAPIMaterialOutMaintain { } IMaterialOutMaintainAPI materialOut = NCLocator.getInstance().lookup(IMaterialOutMaintainAPI.class); MaterialOutVO[] outVOS = materialOut.insertBills(vos); + // 材料出库的来源单据id + Set sourceIds = new HashSet<>(); + for (MaterialOutVO outVO : outVOS) { + MaterialOutBodyVO[] bodys = outVO.getBodys(); + for (MaterialOutBodyVO body : bodys) { + sourceIds.add(body.getCfirstbillhid()); + } + } // 查询备料计划行上的成套套数 nbsetpartsnum - List numList = new ArrayList<>(); - AggPickmVO[] newPickmVOS = queryService.queryBillsByPks(cpickmids); + AggPickmVO[] newPickmVOS = queryService.queryBillsByPks(sourceIds.toArray(new String[0])); + // 获取备料计划行上的成套套数的合计值 + Double sum = 0d; for (AggPickmVO newPickmVO : newPickmVOS) { PickmItemVO[] pickmItemVOS = (PickmItemVO[]) newPickmVO.getChildren(PickmItemVO.class); for (PickmItemVO pickmItemVO : pickmItemVOS) { - JSONObject numJson = new JSONObject(); - String nbsetpartsnum = pickmItemVO.getNbsetpartsnum().toString(); - numJson.put("nbsetpartsnum", nbsetpartsnum); - numJson.put("cbmaterialvid", pickmItemVO.getCbmaterialvid()); - numList.add(numJson); + Double nbsetpartsnum = pickmItemVO.getNbsetpartsnum().toDouble(); + sum += nbsetpartsnum; } } JSONObject result = new JSONObject(); - result.put("outVOS", outVOS); - result.put("numList", numList); + result.put("vbillcode", paramMap.get("vbillcode"));// 生产订单号 + result.put("batchId", paramMap.get("batchId"));// 领料批次id + result.put("nbsetpartsnum", sum);// 累计领料套数 return result; } diff --git a/ic/src/public/nccloud/openapi/ic/m4d/MaterialOutResource.java b/ic/src/public/nccloud/openapi/ic/m4d/MaterialOutResource.java index 92f77b3f..7f946f14 100644 --- a/ic/src/public/nccloud/openapi/ic/m4d/MaterialOutResource.java +++ b/ic/src/public/nccloud/openapi/ic/m4d/MaterialOutResource.java @@ -350,14 +350,13 @@ public class MaterialOutResource extends NCCPubRestResource { @Produces("application/json") public JSONString saveByQyMes(Map paramMap) { try { - if (!paramMap.containsKey("num") || !paramMap.containsKey("cpmohid")) { + if (!paramMap.containsKey("num") || !paramMap.containsKey("cpmobid")) { return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含流程生产订单信息和领料数量信息", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); } IAPIMaterialOutMaintain materialOut = NCLocator.getInstance().lookup(IAPIMaterialOutMaintain.class); JSONObject result = materialOut.destIssue(paramMap); - return ResultMessageUtil.toJSON(result, nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() - .getStrByID("4008027_0", "04008027-0472")/* @res "材料出库单保存成功" */); + return ResultMessageUtil.toJSON(result, "操作成功"); } catch (Exception e) { return ResultMessageUtil.exceptionToJSON(e); }