From 25fcff74c76f4d8d8dd9d8aef973334594a81739 Mon Sep 17 00:00:00 2001 From: hefengkai <958118178@qq.com> Date: Wed, 23 Oct 2024 10:13:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B8=E7=AE=97=E5=85=B6=E5=AE=83=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bs/ic/m4i/util/Bill4IFinanceProcess.java | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 ic/src/private/nc/bs/ic/m4i/util/Bill4IFinanceProcess.java diff --git a/ic/src/private/nc/bs/ic/m4i/util/Bill4IFinanceProcess.java b/ic/src/private/nc/bs/ic/m4i/util/Bill4IFinanceProcess.java new file mode 100644 index 0000000..46f3f0d --- /dev/null +++ b/ic/src/private/nc/bs/ic/m4i/util/Bill4IFinanceProcess.java @@ -0,0 +1,142 @@ +package nc.bs.ic.m4i.util; + +import java.util.ArrayList; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; + +import nc.bs.framework.common.NCLocator; +import nc.bs.ic.general.util.GenFinanceProcess; +import nc.bs.ic.general.util.GeneralFinanceContext; +import nc.itf.uap.IUAPQueryBS; +import nc.jdbc.framework.processor.ColumnProcessor; +import nc.pubitf.ia.mi7.ic.IIAI7ForIC4ISign; +import nc.vo.ia.bill.entity.base.AbstractBaseBill; +import nc.vo.ia.mi4.entity.I4BillVO; +import nc.vo.ia.mi4.entity.I4HeadVO; +import nc.vo.ia.mi4.entity.I4ItemVO; +import nc.vo.ia.mi7.entity.I7BillVO; +import nc.vo.ia.mi7.entity.I7HeadVO; +import nc.vo.ia.mi7.entity.I7ItemVO; +import nc.vo.ic.general.define.ICBillBodyVO; +import nc.vo.ic.general.define.ICBillHeadVO; +import nc.vo.ic.general.define.ICBillVO; +import nc.vo.ic.m4a.entity.GeneralInBodyVO; +import nc.vo.ic.m4a.entity.GeneralInHeadVO; +import nc.vo.ic.m4a.entity.GeneralInVO; +import nc.vo.ic.m4i.entity.GeneralOutBodyVO; +import nc.vo.ic.m4i.entity.GeneralOutHeadVO; +import nc.vo.ic.m4i.entity.GeneralOutVO; +import nc.vo.ic.pub.util.VOEntityUtil; +import nc.vo.pub.BusinessException; +import nc.vo.pubapp.pattern.pub.SqlBuilder; +import nc.vo.scmpub.res.billtype.IABillType; + + +public class Bill4IFinanceProcess + extends GenFinanceProcess +{ + public Bill4IFinanceProcess() { super(GeneralFinanceContext.createOneDomainContext(IABillType.QTCK)); } + + protected void deleteIABill(String[] billids) throws BusinessException { + ((IIAI7ForIC4ISign)NCLocator.getInstance().lookup(IIAI7ForIC4ISign.class)) + .deleteI7ForIC4IUnsign(billids); + } + + protected void insertOneDomainIAByService(AbstractBaseBill[] iaBills, GeneralOutVO[] icbills) throws BusinessException { + String[] costorgs = loadCostInfoForCalbody( + (ICBillHeadVO[])VOEntityUtil.getHeadVOs(icbills)); + fillIABillCostOrg(iaBills, costorgs); + GeneralOutVO[] _icbills = filterIcbills(icbills);//库存其它出库单筛选-华丰 + I7BillVO[] _iaBills = filterIabills(iaBills, _icbills);//筛选核算出库库存信息-华丰 + ((IIAI7ForIC4ISign)NCLocator.getInstance().lookup(IIAI7ForIC4ISign.class)).insertI7ForIC4ISign((I7BillVO[])_iaBills); + } + + + //处理备料计划-转库-其它出库,如果寄存供应商有值,则这一行物料信息不生成存货核算单据 + private I7BillVO[] filterIabills(AbstractBaseBill[] iaBills, GeneralOutVO[] icbills) throws BusinessException { + // I7BillVO _iabill = null; + ArrayList iabillsList = new ArrayList(); + ArrayList itemList = new ArrayList(); + + ICBillBodyVO[] icBillBodys = (ICBillBodyVO[])VOEntityUtil.getBodyVOs(icbills);//获取所有出库单表体 + Set values = VOEntityUtil.getVOsValueSet(icBillBodys, "cgeneralbid");//获取所有出库单子表主键 + + for(int i = 0; i < iaBills.length; i++) { + I7BillVO iabill = (I7BillVO)iaBills[i]; + I7HeadVO headVO = iabill.getParentVO(); + I7ItemVO[] itemVOs = iabill.getChildrenVO(); + if(itemVOs != null && itemVOs.length > 0) { + for(int j = 0; j < itemVOs.length; j++) {//核算库存子表过滤筛选 + I7ItemVO itemVO = itemVOs[j]; + String csrcbid = itemVO.getCsrcbid();//获取来源单据id + if(values.contains(csrcbid)) { + itemList.add(itemVO); + } + } + } + + if(itemList != null && itemList.size() > 0) {//筛选后的核算库存子表数大于0 + iabill.setChildrenVO(itemList.toArray(new I7ItemVO[0]));//子表设置 + iabillsList.add(iabill); + } + + } + + return iabillsList.toArray(new I7BillVO[0]); + } + + + //库存其它出库单筛选 + private GeneralOutVO[] filterIcbills(GeneralOutVO[] icbills) throws BusinessException { + // GeneralOutVO _icbill = null; + ArrayList icbillsList = new ArrayList(); + ArrayList itemList = new ArrayList(); + + for(int i = 0; i < icbills.length; i++) { + GeneralOutVO icbill = (GeneralOutVO)icbills[i]; + GeneralOutHeadVO headVO = icbill.getHead(); + GeneralOutBodyVO[] itemVOs = icbill.getBodys(); + if(itemVOs != null && itemVOs.length > 0) { + for(int j = 0; j < itemVOs.length; j++) {//库存子表过滤筛选 + GeneralOutBodyVO itemVO = itemVOs[j]; + String csourcetype = itemVO.getCsourcetype();//获取核算库存来源单据类型 + String cvmivenderid = itemVO.getCvmivenderid();//获取寄存商户id + String csourcebillbid = itemVO.getCsourcebillbid();//获取来源单据子表id + String csourcetype_zk = querySourceType(csourcebillbid);//转库单来源单据类型 + //处理备料计划-转库-其它出库,如果寄存供应商有值 + if("4K".equals(csourcetype) && StringUtils.isNotEmpty(cvmivenderid) + && "55A3".equals(csourcetype_zk)) { + continue; + }else { + itemList.add(itemVO); + } + } + } + + if(itemList != null && itemList.size() > 0) {//筛选后的核算库存子表数大于0 + icbill.setChildrenVO(itemList.toArray(new GeneralOutBodyVO[0]));//子表设置 + icbillsList.add(icbill); + } + } + + return icbillsList.toArray(new GeneralOutVO[0]); + } + + + //转库单来源单据类型查询 + public String querySourceType(String id) throws BusinessException { + if(StringUtils.isNotEmpty(id)) { + SqlBuilder sb = new SqlBuilder(); + sb.reset(); + sb.append("select csourcetype from ic_whstrans_b where cspecialbid = '" + id + "' and dr = 0"); + IUAPQueryBS querybs = NCLocator.getInstance().lookup(IUAPQueryBS.class); + Object result = querybs.executeQuery(sb.toString(), new ColumnProcessor()); + if(result != null && !"".equals(result)) { + return result.toString(); + } + } + return ""; + } + +}