diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/PaymentProcessingListPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/PaymentProcessingListPlugin.java index d1b914c..5755732 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/PaymentProcessingListPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/PaymentProcessingListPlugin.java @@ -48,73 +48,49 @@ public class PaymentProcessingListPlugin extends AbstractListPlugin implements P if ("hitback".equals(operateKey)) { if (selectedRows.isEmpty()) { this.getView().showTipNotification("请选择一条数据"); - return; } else if (selectedRows.size() > 1) { this.getView().showTipNotification("涉及流程中断,只能选择一条数据打回"); - return; } else { ListSelectedRow listSelectedRow = selectedRows.get(0); Object primaryKeyValue = listSelectedRow.getPrimaryKeyValue(); DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "cas_paybill"); - DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle(dynamicObject.getDynamicObjectType().getName(), "id,billno,name,billstatus,shkd_businessname", new QFilter("id", QCP.equals, dynamicObject.getPkValue()).toArray()); - String billno = loadSingle.getString("billno"); + String billno = dynamicObject.getString("billno"); logger.info("进入打回操作 → hitback\nbillno:{}", billno); - Object businessname = loadSingle.get("shkd_businessname"); - String billstatus = loadSingle.getString("billstatus"); + Object businessname = dynamicObject.get("shkd_businessname"); + String billstatus = dynamicObject.getString("billstatus"); if (businessname != null) { String shkd_businessname = businessname.toString(); - if (("共享系统".equals(shkd_businessname) || "XK".equals(shkd_businessname)) && (("B".equals(billstatus) || "C".equals(billstatus)))) { - boolean outcome = whetherToInterruptTheProcess(loadSingle.getPkValue().toString()); - if (outcome) { - OperationResult operation; - if ("共享系统".equals(shkd_businessname)) { - DynamicObject[] objects = BusinessDataServiceHelper.load("cas_paybill", - "id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,acttradedate," + - "payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," + - "org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname," + - "billstatus,bankpaystatus", new QFilter("billno", QCP.equals, loadSingle.getString("billno")).toArray()); - List dynamicObjects = new ArrayList<>(); - String pushResult = ApiService.paymentSlipsJson(objects[0], "BIPRE", dynamicObjects, null); - logger.info("result信息:{}", pushResult); - if (pushResult.contains("成功")) { - SaveServiceHelper.save(dynamicObjects.toArray(new DynamicObject[0])); - } else { - String returnResults = extractMessageFromResult(pushResult); - if (!returnResults.isEmpty()) { - this.getView().showTipNotification("打回失败,失败原因:BIP单据" + returnResults); - } else { - this.getView().showTipNotification("打回失败,请找业务老师处理"); + if (("共享系统".equals(shkd_businessname) || "XK".equals(shkd_businessname)) && (("A".equals(billstatus) || "B".equals(billstatus) || "C".equals(billstatus)))) { + if ("共享系统".equals(shkd_businessname)) { + List dynamicObjects = new ArrayList<>(); + String pushResult = ApiService.paymentSlipsJson(dynamicObject, "BIPRE", dynamicObjects, null); + logger.info("result信息:{}", pushResult); + if (pushResult.contains("成功")) { + boolean outcome = whetherToInterruptTheProcess(dynamicObject.getPkValue().toString()); + if (outcome) { + if ("B".equals(billstatus) || "C".equals(billstatus)) { + dynamicObject.set("billstatus", "A"); } - return; + + SaveServiceHelper.save(dynamicObjects.toArray(new DynamicObject[0])); + this.getView().showSuccessNotification("打回成功"); + logger.info("单据:{}打回成功", billno); + list.refresh(); + } else { + this.getView().showTipNotification("来源系统为(BIP或星空)且单据状态为(提交或审核)才允许打回"); + logger.info("单据:{}打回失败,失败原因:来源系统为(BIP或星空)且单据状态为(提交或审核)才允许打回", billno); + } + } else { + String returnResults = extractMessageFromResult(pushResult); + if (!returnResults.isEmpty()) { + this.getView().showTipNotification("打回失败,失败原因:BIP单据" + returnResults); + } else { + this.getView().showTipNotification("打回失败,请找业务老师处理"); } } - - if ("B".equals(dynamicObject.getString("billstatus"))) { - operation = OperationServiceHelper.executeOperate("unsubmit", "cas_paybill", new DynamicObject[]{dynamicObject}, OperateOption.create()); - } else if ("C".equals(dynamicObject.getString("billstatus"))) { - operation = OperationServiceHelper.executeOperate("unaudit", "cas_paybill", new DynamicObject[]{dynamicObject}, OperateOption.create()); - } else { - this.getView().showTipNotification("单据不为已提交或已审核状态,无法打回"); - logger.info("单据:{}打回失败,失败原因:单据不为已提交或已审核状态", billno); - return; - } - List allErrorOrValidateInfo = operation.getAllErrorOrValidateInfo(); - if (!allErrorOrValidateInfo.isEmpty()) { - this.getView().showTipNotification("打回失败,失败原因:撤销(反审核)操作失败 → " + allErrorOrValidateInfo.get(0).getMessage()); - logger.info("单据:{}打回失败,失败原因:撤销(反审核)操作失败 → " + allErrorOrValidateInfo.get(0).getMessage()); - return; - } else { - this.getView().showSuccessNotification("打回成功"); - logger.info("单据:{}打回成功", billno); - list.refresh(); - } - } else { - this.getView().showTipNotification("流程中断失败,请找业务老师处理"); } } else { - this.getView().showTipNotification("来源系统为(BIP或星空)且单据状态为(提交或审核)才允许打回"); - logger.info("单据:{}打回失败,失败原因:来源系统为(BIP或星空)且单据状态为(提交或审核)才允许打回", billno); - return; + this.getView().showTipNotification("流程中断失败,请找业务老师处理"); } } else { this.getView().showTipNotification("来源系统为(BIP或星空)且单据状态为(提交或审核)才允许打回"); @@ -144,26 +120,20 @@ public class PaymentProcessingListPlugin extends AbstractListPlugin implements P try { // 中断流程 abandonByBusienssKey(billId); - - // 等待一段时间再检查 - Thread.sleep(1000); // 等待1秒 - // 判断单据是否在流程中 boolean inProcess = WorkflowServiceHelper.inProcess(billId); - // 如果不在流程中,返回true - if (!inProcess) { + if (inProcess) { logger.info("流程中断成功,单据ID: {}", billId); return true; } - // 如果仍在流程中,增加重试次数 retryCount++; logger.warn("流程中断失败,第{}次重试,单据ID: {}", retryCount, billId); // 如果还没达到最大重试次数,等待更长时间 if (retryCount < maxRetries) { - Thread.sleep(1000L * retryCount); // 逐步增加等待时间 + Thread.sleep(1000L); // 逐步增加等待时间 } } catch (Exception e) {