diff --git a/qc/src/public/nc/api/qc/resource/QcconclusionRestResource.java b/qc/src/public/nc/api/qc/resource/QcconclusionRestResource.java index 1d5d51ac..28c4eb48 100644 --- a/qc/src/public/nc/api/qc/resource/QcconclusionRestResource.java +++ b/qc/src/public/nc/api/qc/resource/QcconclusionRestResource.java @@ -9,6 +9,7 @@ import nc.vo.pub.BusinessException; import nc.vo.pub.VOStatus; import nc.vo.pub.lang.UFBoolean; import nc.vo.pub.lang.UFDouble; +import nc.vo.pubapp.pattern.model.entity.bill.AbstractBill; import nc.vo.pubapp.pflow.PfUserObject; import nc.vo.qc.c003.entity.ReportHeaderVO; import nc.vo.qc.c003.entity.ReportItemVO; @@ -93,7 +94,14 @@ public class QcconclusionRestResource extends QcBaseRestResource { if (pkReportbill == null) { continue; } + ReportItemVO[] itemVO= vo.getBVO(); + UFDouble crowno=UFDouble.ZERO_DBL; + for (ReportItemVO itemVO1 : itemVO) { + if(new UFDouble(itemVO1.getCrowno()).compareTo(crowno) > 0) { + crowno = new UFDouble(itemVO1.getCrowno()); + } + } for (Map itemMap : itemMaps) { // 校验itemMap的id是否为必填(存在且不为null) if (itemMap == null || !itemMap.containsKey("id") || itemMap.get("id") == null) { @@ -247,11 +255,23 @@ public class QcconclusionRestResource extends QcBaseRestResource { ISCMPubSaveCommitService service = NCLocator.getInstance().lookup(ISCMPubSaveCommitService.class);; try { - SCMScriptResultDTO obj = service.saveCommit(vos, (PfUserObject)null, ReportVO.class, "SAVEBASE", "SAVE", QCBillType.ReportBill.getCode()); - resultVos = (ReportVO[]) obj.getSucessVOs(); + List reportVOList=new ArrayList<>(Arrays.asList(vos)); + for (ReportVO reportVO:vos){ + SCMScriptResultDTO obj = service.saveCommit(new ReportVO[]{reportVO}, (PfUserObject)null, ReportVO.class, "SAVEBASE", "SAVE", QCBillType.ReportBill.getCode()); + if(obj.getErrorMessage()!=null && !"".equals(obj.getErrorMessage())){ + throw new BusinessException(obj.getErrorMessage()); + } + if(obj!=null){ + reportVOList.add((ReportVO) obj.getSucessVOs()[0]); + } + } + resultVos = reportVOList.toArray(new ReportVO[0]); + // SCMScriptResultDTO obj = service.saveCommit(vos, (PfUserObject)null, ReportVO.class, "SAVEBASE", "SAVE", QCBillType.ReportBill.getCode()); + // resultVos =(ReportVO[]) obj.getSucessVOs(); // resultVos = reportMaintain.saveBase(vos, new Object(), updatevos); } catch (BusinessException e) { - return ResultMessageUtil.exceptionToJSON(e); + throw new BusinessException(e.getMessage()); + // return ResultMessageUtil.exceptionToJSON(e); } } else { for (ReportVO vo : vos) { @@ -270,7 +290,21 @@ public class QcconclusionRestResource extends QcBaseRestResource { IBatchRunScriptService iReportApprove = NCLocator.getInstance().lookup(IBatchRunScriptService.class); SCMScriptResultDTO obj = iReportApprove.runBacth(context, ReportVO.class); - resultVos=(ReportVO[]) obj.getSucessVOs(); + if(obj.getErrorMessage()!=null && !"".equals(obj.getErrorMessage()) ){ + // return ResultMessageUtil.exceptionToJSON(new BusinessException(obj.getErrorMessage())); + throw new BusinessException(obj.getErrorMessage()); + } + // 1. 先获取原始数组(明确类型为AbstractBill[]) + AbstractBill[] originalVOs = obj.getSucessVOs(); + +// 2. 创建同长度的ReportVO数组 + resultVos = new ReportVO[originalVOs.length]; + +// 3. 逐个元素转换(需确保每个元素实际是ReportVO类型,否则会抛ClassCastException) + for (int i = 0; i < originalVOs.length; i++) { + // 这里的转换需要确保originalVOs[i]确实是ReportVO实例 + resultVos[i] = (ReportVO) originalVOs[i]; + } }