From a4da9047c3d86ceff9ddc0d3156b0f537742918b Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 28 Jul 2025 18:54:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(so):=20=E4=BC=98=E5=8C=96=E9=94=80=E5=94=AE?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3=E7=9A=84?= =?UTF-8?q?=E6=94=B6=E6=AC=BE=E5=8D=95=E5=92=8C=E9=94=80=E5=94=AE=E5=8F=91?= =?UTF-8?q?=E7=A5=A8=E6=9B=B4=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/so/m30/APISaleOrderMaitainImpl.java | 101 ++++++++++-------- 1 file changed, 56 insertions(+), 45 deletions(-) diff --git a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java index 439cd76..e454211 100644 --- a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java +++ b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java @@ -16,11 +16,11 @@ import nc.itf.so.m30.self.ISaleOrderMaintain; import nc.itf.so.m30.self.ISaleOrderScriptMaintain; import nc.itf.uap.IUAPQueryBS; import nc.itf.uap.pf.IPFBusiAction; -import nc.jdbc.framework.SQLParameter; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapProcessor; import nc.pubimpl.so.m30.pub.SaleOrderSaveUtil; import nc.pubitf.so.m30.api.ISaleOrderQueryAPI; +import nc.vo.arap.gathering.GatheringBillItemVO; import nc.vo.arap.gathering.GatheringBillVO; import nc.vo.bd.defdoc.DefdocVO; import nc.vo.ml.NCLangRes4VoTransl; @@ -42,6 +42,7 @@ import nc.vo.scmpub.util.StringUtil; import nc.vo.so.m30.entity.SaleOrderBVO; import nc.vo.so.m30.entity.SaleOrderHVO; import nc.vo.so.m30.entity.SaleOrderVO; +import nc.vo.so.m32.entity.SaleInvoiceBVO; import nc.vo.so.m32.entity.SaleInvoiceHVO; import nc.vo.so.pub.SOConstant; import nc.vo.so.pub.enumeration.BillStatus; @@ -1775,6 +1776,11 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { for (SaleOrderVO vo : vos) { SaleOrderHVO hvo = vo.getParentVO(); String csaleorderid = hvo.getCsaleorderid();// 销售订单ID + String ccustomerid = hvo.getCcustomerid(); + String ccustomervid = hvo.getCcustomervid(); + String cemployeeid = hvo.getCemployeeid(); + String cdeptid = hvo.getCdeptid(); + String cdeptvid = hvo.getCdeptvid(); SaleOrderBVO[] bvos = vo.getChildrenVO(); // 同步修改流程生产订单的国网行项目号、国内采购订单号 for (SaleOrderBVO bvo : bvos) { @@ -1810,39 +1816,40 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { * 单据和凭证的关联 查询`fip_relation`表可知,src_relationid 存的是关联单据的主键 */ SqlBuilder strWhere = new SqlBuilder(); - strWhere.append("dr = 0 and "); strWhere.append("src_billid", csaleorderid); - GatheringBillVO[] payBillVOs = (GatheringBillVO[]) hypub.queryByCondition(GatheringBillVO.class, strWhere.toString()); - String ccustomerid = hvo.getCcustomerid(); - String ccustomervid = hvo.getCcustomervid(); - String cemployeeid = hvo.getCemployeeid(); - String cdeptid = hvo.getCdeptid(); - String cdeptvid = hvo.getCdeptvid(); - if (null != payBillVOs) { - for (GatheringBillVO payBillVO : payBillVOs) { + GatheringBillItemVO[] payItemVOS = (GatheringBillItemVO[]) hypub.queryByCondition(GatheringBillItemVO.class, strWhere.toString()); + if (null != payItemVOS) { + Set billIds = new HashSet<>(); + for (GatheringBillItemVO itemVO : payItemVOS) { // 查询收款单是否已生成凭证 String countSql = "SELECT count(1) FROM fip_relation " + " WHERE dr = 0 and src_relationid = '[billId]' "; - countSql = countSql.replace("[billId]", payBillVO.getPk_gatherbill()); + countSql = countSql.replace("[billId]", itemVO.getPk_gatherbill()); Integer num = (Integer) getDao().executeQuery(countSql, new ColumnProcessor()); if (num > 0) { continue; } - // 修改收款单 - payBillVO.setPk_psndoc(cemployeeid); - payBillVO.setCustomer(ccustomerid); - payBillVO.setPk_deptid(cdeptid); - payBillVO.setPk_deptid_v(cdeptvid); - payBillVO.setStatus(VOStatus.UPDATED); - hypub.update(payBillVO); // 修改收款单子表 - String updateSql = "update ar_gatheritem set pk_psndoc=?,customer=?,pk_deptid=?,pk_deptid_v=? where pk_gatherbill=?"; - SQLParameter parameter = new SQLParameter(); - parameter.addParam(cemployeeid); - parameter.addParam(ccustomerid); - parameter.addParam(cdeptid); - parameter.addParam(cdeptvid); - int num1 = getDao().executeUpdate(updateSql); + itemVO.setPk_psndoc(cemployeeid); + itemVO.setCustomer(ccustomerid); + itemVO.setPk_deptid(cdeptid); + itemVO.setPk_deptid_v(cdeptvid); + itemVO.setStatus(VOStatus.UPDATED); + hypub.update(itemVO); + billIds.add(itemVO.getPk_gatherbill()); + } + if (!billIds.isEmpty()) { + // 修改收款单 + for (String billId : billIds) { + GatheringBillVO billVO = new GatheringBillVO(); + billVO.setPk_gatherbill(billId); + billVO.setPk_psndoc(cemployeeid); + billVO.setCustomer(ccustomerid); + billVO.setPk_deptid(cdeptid); + billVO.setPk_deptid_v(cdeptvid); + billVO.setStatus(VOStatus.UPDATED); + hypub.update(billVO); + } } } @@ -1851,11 +1858,11 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { * 首先根据源头单据id查询关联的销售发票,如果有则循环判断应收单是否生效,未生效则更新字段值为销售订单同字段的值 */ SqlBuilder strWhereInv = new SqlBuilder(); - strWhereInv.append("dr = 0 and "); strWhereInv.append("cfirstid", csaleorderid); - SaleInvoiceHVO[] invoiceHvos = (SaleInvoiceHVO[]) hypub.queryByCondition(SaleInvoiceHVO.class, strWhereInv.toString()); - if (null != invoiceHvos) { - for (SaleInvoiceHVO invoiceHVO : invoiceHvos) { + SaleInvoiceBVO[] invoiceBVOS = (SaleInvoiceBVO[]) hypub.queryByCondition(SaleInvoiceBVO.class, strWhereInv.toString()); + if (null != invoiceBVOS) { + Set billIds = new HashSet<>(); + for (SaleInvoiceBVO invoiceBVO : invoiceBVOS) { // 查询应收单是否生效 String countSql = "SELECT count(1) FROM ar_recitem b " + " left join ar_recbill a on a.pk_recbill = b.pk_recbill " @@ -1865,22 +1872,26 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { if (num > 0) { continue; } - invoiceHVO.setCinvoicecustid(ccustomerid); - invoiceHVO.setCinvoicecustvid(ccustomervid); - invoiceHVO.setStatus(VOStatus.UPDATED); - hypub.update(invoiceHVO); - // 修改销售发票子表 - String updateSql = "update so_saleinvoice_b set " + - "cordercustid=?,cordercustvid=?,cdeptid=?,cdeptvid=?,cemployeeid=?, " + - "where csaleinvoiceid=?"; - SQLParameter parameter = new SQLParameter(); - parameter.addParam(ccustomerid); - parameter.addParam(ccustomerid); - parameter.addParam(cdeptid); - parameter.addParam(cdeptvid); - parameter.addParam(cemployeeid); - parameter.addParam(invoiceHVO.getPrimaryKey()); - int num1 = getDao().executeUpdate(updateSql); + invoiceBVO.setCordercustid(ccustomerid); + invoiceBVO.setCordercustvid(ccustomervid); + invoiceBVO.setCdeptid(cdeptid); + invoiceBVO.setCdeptvid(cdeptvid); + invoiceBVO.setCemployeeid(cemployeeid); + invoiceBVO.setStatus(VOStatus.UPDATED); + hypub.update(invoiceBVO); + billIds.add(invoiceBVO.getCsaleinvoiceid()); + // 修改销售发票表 + } + if (!billIds.isEmpty()) { + // 修改销售发票表 + for (String billId : billIds) { + SaleInvoiceHVO invoiceHVO = new SaleInvoiceHVO(); + invoiceHVO.setCsaleinvoiceid(billId); + invoiceHVO.setCinvoicecustid(ccustomerid); + invoiceHVO.setCinvoicecustvid(ccustomervid); + invoiceHVO.setStatus(VOStatus.UPDATED); + hypub.update(invoiceHVO); + } } } }