From 9ab4bf8bdc92410972d455057613daeb285692d0 Mon Sep 17 00:00:00 2001 From: lihao Date: Fri, 17 Oct 2025 19:03:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B7=E8=B4=AD=E5=8D=95=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E5=A2=9E=E5=8A=A0=E6=9C=80?= =?UTF-8?q?=E7=BB=88=E9=9C=80=E6=B1=82=E6=95=B0=E9=87=8F=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../transfer/action/Transfer20To21Action.java | 269 ++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100644 pu/src/client/nccloud/web/pu/poorder/transfer/action/Transfer20To21Action.java diff --git a/pu/src/client/nccloud/web/pu/poorder/transfer/action/Transfer20To21Action.java b/pu/src/client/nccloud/web/pu/poorder/transfer/action/Transfer20To21Action.java new file mode 100644 index 00000000..b7028010 --- /dev/null +++ b/pu/src/client/nccloud/web/pu/poorder/transfer/action/Transfer20To21Action.java @@ -0,0 +1,269 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nccloud.web.pu.poorder.transfer.action; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import nc.itf.scmpub.reference.uap.bd.supplier.SupplierPubService; +import nc.itf.uap.pf.IPfExchangeService; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pu.m20.entity.PraybillHeaderVO; +import nc.vo.pu.m20.entity.PraybillItemVO; +import nc.vo.pu.m20.entity.PraybillVO; +import nc.vo.pu.m21.entity.OrderItemVO; +import nc.vo.pu.m21.entity.OrderVO; +import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; +import nc.vo.pub.compiler.PfParameterVO; +import nc.vo.pub.lang.UFDate; +import nc.vo.pub.lang.UFDateTime; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nc.vo.pubapp.pattern.model.entity.bill.AbstractBill; +import nc.vo.scmpub.res.billtype.POBillType; +import nc.vo.scmpub.util.TransferSortUtil; +import nccloud.dto.pu.poorder.entity.PkTsVODTO; +import nccloud.dto.pu.poorder.entity.TransferData; +import nccloud.dto.pu.poorder.entity.TransferInfo; +import nccloud.framework.core.json.IJson; +import nccloud.framework.service.ServiceLocator; +import nccloud.framework.web.json.JsonFactory; +import nccloud.framework.web.processor.template.BillGridConvertProcessor; +import nccloud.framework.web.ui.pattern.billgrid.BillGrid; +import nccloud.pubitf.pu.poorder.transfer.service.ITransferVOQueryService; + +public class Transfer20To21Action extends AbstractTransferAction { + protected static final int BEGININDEX = 0; + protected static final int ENDINDEX = 20; + + public Transfer20To21Action() { + } + + public AbstractBill[] getDestAbstractBill(TransferInfo transferInfo, String read) throws Exception { + PraybillVO[] sorceVOs = this.getAggVO(read); + for (PraybillVO vo : sorceVOs) { + for (PraybillItemVO itemVO:vo.getBVO()){ + if(null!=itemVO.getAttributeValue("vbdef33") && itemVO.getNastnum().compareTo(itemVO.getAttributeValue("vbdef33"))<0){ + throw new BusinessException("采购数量大于最终需求数量不能生成采购订单!"); + } + } + } + IPfExchangeService service = (IPfExchangeService)ServiceLocator.find(IPfExchangeService.class); + OrderVO[] vos = (OrderVO[])service.runChangeDataAry(POBillType.PrayBill.getCode(), POBillType.Order.getCode(), sorceVOs, (PfParameterVO)null); + vos = (OrderVO[])(new TransferSortUtil("vsourcerowno", "vsourcecode")).sort(vos); + if (vos != null && vos.length > 0) { + for(OrderVO orderVO : vos) { + UFDate dbilldate = orderVO.getHVO().getDbilldate(); + OrderItemVO[] bvos = orderVO.getBVO(); + + for(OrderItemVO bvo : bvos) { + UFDate dplanarrvdate = bvo.getDplanarrvdate(); + if (dbilldate != null && (null == dplanarrvdate || dbilldate.compareTo(dplanarrvdate) > 0)) { + bvo.setDplanarrvdate(dbilldate); + } + } + } + } + + return vos; + } + + public Boolean isNeedRelateCT() { + return Boolean.TRUE; + } + + private PraybillVO[] getAggVOByBillGrid(String read) { + IJson json = JsonFactory.create(); + BillGrid[] billGrids = (BillGrid[])json.fromJson(read, BillGrid[].class); + BillGridConvertProcessor processor = new BillGridConvertProcessor(); + List list = new ArrayList(); + + for(BillGrid billGrid : billGrids) { + PraybillVO vos = (PraybillVO)processor.fromBillCard(billGrid, "pk_praybill_b"); + list.add(vos); + } + + return (PraybillVO[])list.toArray(new PraybillVO[0]); + } + + private PraybillVO[] getAggVO(String read) { + IJson json = JsonFactory.create(); + TransferInfo queryInfo = (TransferInfo)json.fromJson(read, TransferInfo.class); + PraybillVO[] aggctvos = null; + Map idTsHeadMap = this.getIdTsIndex(queryInfo, "pk_praybill"); + Map idTsIndex = this.getIdTsIndex(queryInfo, "pk_praybill_b"); + Map> idUserObjectIndex = this.getBodyIdUserObjectIndex(queryInfo); + if (idTsHeadMap.size() == 0) { + return aggctvos; + } else { + String[] hpks = new String[idTsHeadMap.size()]; + String[] bpks = null; + hpks = (String[])idTsHeadMap.keySet().toArray(hpks); + if (idTsIndex != null && idTsIndex.size() > 0) { + bpks = new String[idTsIndex.size()]; + bpks = (String[])idTsIndex.keySet().toArray(bpks); + } + + ITransferVOQueryService query = (ITransferVOQueryService)ServiceLocator.find(ITransferVOQueryService.class); + PraybillHeaderVO[] hvos = (PraybillHeaderVO[])query.query(hpks, PraybillHeaderVO.class); + PraybillItemVO[] bvos = (PraybillItemVO[])query.query(bpks, PraybillItemVO.class); + this.tsCheck(idTsHeadMap, hvos); + if (hvos == null) { + return aggctvos; + } else { + aggctvos = this.getAggCtPuVOS(hvos, bvos, idTsHeadMap, idTsIndex, idUserObjectIndex); + return aggctvos; + } + } + } + + private void tsCheck(Map idTsHeadMap, PraybillHeaderVO[] hvos) { + Map hvoHeadTsMap = new HashMap(); + + for(PraybillHeaderVO hvo : hvos) { + hvoHeadTsMap.put(hvo.getPk_praybill(), hvo.getTs()); + } + + for(Map.Entry item : idTsHeadMap.entrySet()) { + if (item.getValue() == null || hvoHeadTsMap.get(item.getKey()) == null || !((UFDateTime)item.getValue()).equals(hvoHeadTsMap.get(item.getKey()))) { + ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4004100_0", "04004100-0048")); + } + } + + } + + private Map getIdTsIndex(TransferInfo queryInfo, String attrcode) { + Map idTsIndex = new LinkedHashMap(); + TransferData[] tData = queryInfo.getData(); + if (tData != null && tData.length > 0) { + for(TransferData element : tData) { + if ("pk_praybill".equalsIgnoreCase(attrcode)) { + PkTsVODTO head = element.getHead(); + if (head != null) { + idTsIndex.put(head.getPk(), head.getTs()); + } + } else { + PkTsVODTO[] bodys = element.getBodys(); + if (bodys != null) { + for(PkTsVODTO body : bodys) { + String pk = body.getPk(); + pk = pk.length() > 20 ? pk.substring(0, 20) : pk; + idTsIndex.put(pk, body.getTs()); + } + } + } + } + } + + return idTsIndex; + } + + private Map> getBodyIdUserObjectIndex(TransferInfo queryInfo) { + Map> idTsIndex = new HashMap(); + TransferData[] tData = queryInfo.getData(); + if (tData != null && tData.length > 0) { + for(TransferData element : tData) { + PkTsVODTO[] bodys = element.getBodys(); + if (bodys != null) { + for(PkTsVODTO body : bodys) { + Map userObject = body.getUserObject(); + Map var14 = userObject != null ? userObject : new HashMap(); + idTsIndex.put(body.getPk(), var14); + } + } + } + } + + return idTsIndex; + } + + private PraybillVO[] getAggCtPuVOS(PraybillHeaderVO[] hvos, PraybillItemVO[] bvos, Map idTsHeadMap, Map idTsIndex, Map> idUserObjectIndex) { + Set supplieroidList = new HashSet(); + Iterator>> iterator1 = idUserObjectIndex.entrySet().iterator(); + if (idUserObjectIndex != null && idUserObjectIndex.size() > 0) { + while(iterator1.hasNext()) { + Map.Entry> next = (Map.Entry)iterator1.next(); + Map object = (Map)next.getValue(); + String pk_suggestsupplier = String.valueOf(object.get("pk_suggestsupplier")); + if (pk_suggestsupplier != null) { + supplieroidList.add(pk_suggestsupplier); + } + } + } + + Map vidsByOids = SupplierPubService.querySupplierVidsByOids((String[])supplieroidList.toArray(new String[supplieroidList.size()])); + PraybillVO[] aggvos = new PraybillVO[hvos.length]; + + for(int n = 0; n < aggvos.length; ++n) { + hvos[n].setTs((UFDateTime)idTsHeadMap.get(hvos[n].getPk_praybill())); + PraybillVO aggvo = new PraybillVO(); + aggvo.setParentVO(hvos[n]); + String pk_praybill = hvos[n].getPk_praybill(); + List lbvo = new ArrayList(); + if (bvos != null) { + for(PraybillItemVO bvo : bvos) { + String pk_praybill_b = bvo.getPk_praybill_b(); + bvo.setTs((UFDateTime)idTsIndex.get(pk_praybill_b)); + Iterator>> iterator = idUserObjectIndex.entrySet().iterator(); + if (idUserObjectIndex != null && idUserObjectIndex.size() > 0) { + while(iterator.hasNext()) { + Map.Entry> next = (Map.Entry)iterator.next(); + if (((String)next.getKey()).startsWith(pk_praybill_b)) { + Map object = (Map)next.getValue(); + PraybillItemVO clone = (PraybillItemVO)bvo.clone(); + this.moifyBodyItem(lbvo, clone, object, pk_praybill); + } + } + } else { + Map hashMap = new HashMap(); + this.moifyBodyItem(lbvo, bvo, hashMap, pk_praybill); + } + } + } + + if (lbvo != null) { + PraybillItemVO[] arr = new PraybillItemVO[lbvo.size()]; + aggvo.setChildrenVO((CircularlyAccessibleValueObject[])lbvo.toArray(arr)); + + for(PraybillItemVO bvo : aggvo.getBVO()) { + bvo.setPk_suggestsupplier_v(vidsByOids.get(bvo.getPk_suggestsupplier()) == null ? bvo.getPk_suggestsupplier() : (String)vidsByOids.get(bvo.getPk_suggestsupplier())); + } + } + + aggvos[n] = aggvo; + } + + return aggvos; + } + + private void moifyBodyItem(List lbvo, PraybillItemVO bvo, Map map, String pk_praybill) { + Map var8 = map != null ? map : new HashMap(); + String nnum = String.valueOf(((Map)var8).get("nnum")); + String nastnum = String.valueOf(((Map)var8).get("nastnum")); + String pk_suggestsupplier = String.valueOf(((Map)var8).get("pk_suggestsupplier")); + if (nnum != null && !"null".equals(nnum) && !"".equals(nnum)) { + bvo.setAttributeValue("nnum", ((Map)var8).get("nnum")); + } + + if (nastnum != null && !"null".equals(nastnum) && !"".equals(nastnum)) { + bvo.setAttributeValue("nastnum", ((Map)var8).get("nastnum")); + } + + if (pk_suggestsupplier != null && !"null".equals(pk_suggestsupplier) && !"".equals(pk_suggestsupplier)) { + bvo.setPk_suggestsupplier(pk_suggestsupplier); + } + + if (bvo.getPk_praybill().equalsIgnoreCase(pk_praybill)) { + lbvo.add(bvo); + } + + } +}