diff --git a/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java b/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java index 40db4aa8..a6afd8de 100644 --- a/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java +++ b/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java @@ -17,6 +17,7 @@ import nc.itf.mmpac.pmo.pac0002.IPMOQueryService; import nc.jdbc.framework.processor.MapListProcessor; import nc.util.mmf.framework.base.MMCollectionUtil; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; +import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; import nc.ws.opm.pub.utils.result.APIErrCodeEnum; @@ -158,6 +159,116 @@ public class PmoResource extends AbstractNCCRestResource { return ResultMessageUtil.exceptionToJSON(e); } } + + /** + * 回写行状态(包含从其他状态回到审核通过状态的功能) + * @param paramMap + * @return + */ + @POST + @Path("fitemstatusChange") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString fitemstatusChange(Map paramMap) { + List> paramList = (List) paramMap.get("data"); + PMOAggVO[] updateBills = null; + + try { + if (MMCollectionUtil.isEmpty(paramList)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含data", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + + IPMOQueryService queryService = NCLocator.getInstance().lookup(IPMOQueryService.class); + IPMOBusinessService businessService = NCLocator.getInstance().lookup(IPMOBusinessService.class); + + for (Map map : paramList) { + // 验证必要参数 + if (!map.containsKey("pks")) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含生产订单id", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + if (!map.containsKey("fitemstatus")) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含行状态fitemstatus", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + + String pk = (String) map.get("pks"); + int targetStatus; + try { + targetStatus = Integer.parseInt(map.get("fitemstatus").toString()); + } catch (NumberFormatException e) { + return ResultMessageUtil.exceptionToJSON("行状态格式错误,必须为整数", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + + // 不处理自由状态(0)的修改 + if (targetStatus == 0) { + return ResultMessageUtil.exceptionToJSON("不支持修改为自由状态", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + + // 验证状态值是否合法 + if (targetStatus < 1 || targetStatus > 4) { + return ResultMessageUtil.exceptionToJSON("行状态值无效,必须是1-4之间的整数", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + + // 查询当前订单信息 + PMOAggVO[] currentVOs = queryService.queryPMOAggVOByBid(new String[]{pk}); + if (currentVOs == null || currentVOs.length == 0) { + return ResultMessageUtil.exceptionToJSON("未找到订单: " + pk, APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + for (PMOAggVO vo : currentVOs) { + for(PMOItemVO itemVOS:vo.getChildrenVO()){ + // 获取当前行状态 + int currentStatus = itemVOS.getFitemstatus(); // 假设存在此方法获取当前状态 + // 只有审核通过(4)的订单才能修改为其他状态 + if (targetStatus != 4 && currentStatus != 4) { + return ResultMessageUtil.exceptionToJSON( + "订单" + pk + "当前状态为" + currentStatus + ",只有审核通过的订单才能修改行状态", + APIErrCodeEnum.BUSINESSEXCCODE.getCode() + ); + } + // 根据当前状态和目标状态决定调用哪个方法 + if (targetStatus == 4) { + // 目标状态是审核通过,需要从其他状态返回,调用对应的cancel方法 + switch (currentStatus) { + case 1: // 从投放状态回到审核通过 + updateBills = businessService.rowputCancel(currentVOs); + break; + case 2: // 从完工状态回到审核通过 + updateBills = businessService.rowfinishCancel(currentVOs); + break; + case 3: // 从关闭状态回到审核通过 + updateBills = businessService.rowcloseCancel(currentVOs); + break; + case 4: // 已经是审核通过状态,无需处理 + break; + default: + return ResultMessageUtil.exceptionToJSON("不支持的当前行状态值: " + currentStatus, APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + } else { + // 目标状态是1-3,从审核通过状态变更,调用对应的方法 + switch (targetStatus) { + case 1: // 投放 + updateBills = businessService.rowput(currentVOs); + break; + case 2: // 完工 + updateBills = businessService.rowfinish(currentVOs); + break; + case 3: // 关闭 + updateBills = businessService.rowclose(currentVOs); + break; + } + } + + } + + + } + + } + + return ResultMessageUtil.toJSON(updateBills, "流程生产订单行状态修改成功"); + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } @POST @Path("delete") @Consumes({"application/json"})