From 5f718ba1cbcc207d3e0aea60c99bf544df0d3a20 Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Dec 2024 15:45:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=201.=E5=8F=91=E8=BF=90=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=20=20=E5=A6=82=E6=9E=9C=E8=AF=A5?= =?UTF-8?q?=E5=90=88=E5=90=8C=E4=B8=8B=E5=8F=91=E8=BF=90=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E5=8E=86=E5=8F=B2=E6=80=BB=E6=95=B0=E9=87=8F?= =?UTF-8?q?+=E6=9C=AC=E6=AC=A1=E5=8F=91=E8=BF=90=E6=80=BB=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E7=AD=89=E4=BA=8E=20=20=E5=85=B3=E8=81=94=E5=90=88?= =?UTF-8?q?=E5=90=8C=E7=9A=84=E6=80=BB=E6=95=B0=E9=87=8F=EF=BC=8C=E9=82=A3?= =?UTF-8?q?=E4=B9=88=E5=8E=86=E5=8F=B2=E5=8F=91=E8=BF=90=E9=87=91=E9=A2=9D?= =?UTF-8?q?+=E5=BD=93=E5=89=8D=E5=8F=91=E8=BF=90=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E7=9A=84=E6=B1=87=E6=80=BB=E5=80=BC=E5=BF=85=E9=A1=BB=E7=AD=89?= =?UTF-8?q?=E4=BA=8E=E5=90=88=E5=90=8C=E9=87=91=E9=A2=9D=20=20=20=E5=90=A6?= =?UTF-8?q?=E5=88=99=EF=BC=8C=E4=B8=8D=E9=9C=80=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ShippingDetailSubmitValidator.java | 96 ++++++++++++------- 1 file changed, 59 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/yem/wm/es/shippingdetails/validator/ShippingDetailSubmitValidator.java b/src/main/java/com/yem/wm/es/shippingdetails/validator/ShippingDetailSubmitValidator.java index 97352b7b..9bee650b 100644 --- a/src/main/java/com/yem/wm/es/shippingdetails/validator/ShippingDetailSubmitValidator.java +++ b/src/main/java/com/yem/wm/es/shippingdetails/validator/ShippingDetailSubmitValidator.java @@ -22,29 +22,50 @@ public class ShippingDetailSubmitValidator extends AbstractValidator { @Override public void validate() { ExtendedDataEntity[] dataEntities = this.getDataEntities(); - for(ExtendedDataEntity dataEntitie : dataEntities){ + for (ExtendedDataEntity dataEntitie : dataEntities) { DynamicObject dataEntity = dataEntitie.getDataEntity(); long aLong = dataEntity.getLong("yem_sourcebillid"); + //外销合同 String selectfield = DynamicObjectUtil.getSelectfields("yem_es_salesorder", false); String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_es_salesorder", "yem_es_materialinfo", false); - DynamicObject yemEsSaleorder = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", selectfields, new QFilter[]{new QFilter("id", QCP.equals, aLong)}); - DynamicObjectCollection materialInfos = dataEntity.getDynamicObjectCollection("yem_es_materialinfo"); -// String billtype = dataEntity.getString("yem_billtype.number"); -// if("yem_shippingdetails_zj".equals(billtype)||"yem_shippingdetails_nmzj".equals(billtype)){ - for (int i = 0; i < materialInfos.size(); i++) { - DynamicObject materialInfo = materialInfos.get(i); -// String businesssort = materialInfo.getString("yem_businesssort"); -// if ("Z".equals(businesssort)){ - BigDecimal qty = materialInfo.getBigDecimal("yem_qty"); - DynamicObject resourceNog = materialInfo.getDynamicObject("yem_resourcenog"); - DynamicObjectCollection completeProductions = materialInfo.getDynamicObjectCollection("yem_es_salesorder_z"); -// int completeProductionRows = completeProductions.size(); -// if(qty.compareTo(new BigDecimal(completeProductionRows)) != 0){ -// this.addErrorMessage(dataEntitie,"明细信息第%s行%s资源号的出运数量与对应的整机数量不一致,请检查数据后,点击保存,在点击提交!!"); -// } -// } + DynamicObject yemEsSaleorder = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", selectfields + , new QFilter[]{new QFilter("id", QCP.equals, aLong)}); + BigDecimal yemQty = BigDecimal.ZERO;//合同数量 + BigDecimal yemSumcost = BigDecimal.ZERO;//合同金额 + if (yemEsSaleorder != null) { + yemSumcost = yemEsSaleorder.getBigDecimal("yem_sumcost"); + DynamicObjectCollection yemEsMaterialinfo = yemEsSaleorder.getDynamicObjectCollection("yem_es_materialinfo"); + for (DynamicObject dynamicObject : yemEsMaterialinfo) { + yemQty = yemQty.add(dynamicObject.getBigDecimal("yem_qty")); } -// } + } + DynamicObjectCollection materialInfos = dataEntity.getDynamicObjectCollection("yem_es_materialinfo"); + BigDecimal qty = BigDecimal.ZERO;//发运数量 + BigDecimal sumcost = dataEntity.getBigDecimal("yem_sumcost");//发运金额 + for (int i = 0; i < materialInfos.size(); i++) { + DynamicObject materialInfo = materialInfos.get(i); + qty = qty.add(materialInfo.getBigDecimal("yem_qty")); + } + String yemShippingdetails = DynamicObjectUtil.getSelectfields("yem_shippingdetails", false); + String yemShippingdetail = DynamicObjectUtil.getEntrySelectfields(yemShippingdetails,"yem_shippingdetails","yem_es_materialinfo", false); + DynamicObject[] yem_shippingdetails = BusinessDataServiceHelper.load("yem_shippingdetails", yemShippingdetail, new QFilter[]{new QFilter("id" + , QCP.not_equals, dataEntity.getLong("id")), new QFilter("yem_sourcebillid", QCP.equals, yemEsSaleorder.getLong("id"))}); + if (YEM.isNotEmpty(yem_shippingdetails)){ + for (DynamicObject yem_shippingdetail : yem_shippingdetails) { + DynamicObjectCollection yemEsMaterialinfo = yem_shippingdetail.getDynamicObjectCollection("yem_es_materialinfo"); + sumcost = sumcost.add(yem_shippingdetail.getBigDecimal("yem_sumcost")); + for (int i = 0; i < yemEsMaterialinfo.size(); i++) { + DynamicObject materialInfo = yemEsMaterialinfo.get(i); + qty = qty.add(materialInfo.getBigDecimal("yem_qty")); + } + } + } + if (yemQty.compareTo(qty) == 0){ + if (sumcost.compareTo(yemSumcost)!=0){ + this.addMessage(dataEntitie,"历史发运金额:"+sumcost.subtract(dataEntity.getBigDecimal("yem_sumcost"))+"元+当前发运金额:"+ + dataEntity.getBigDecimal("yem_sumcost")+"元,不等于合同金额:"+yemSumcost+"元,请自行修改发运金额!"); + } + } vehicleNoSingle(dataEntitie); validateTaxRefundRate(dataEntitie); } @@ -52,6 +73,7 @@ public class ShippingDetailSubmitValidator extends AbstractValidator { /** * 发运明细:是否报关为是,提交时需要校验商品信息非赠品行,退税率必须都有值 + * * @param dataEntitie */ private void validateTaxRefundRate(ExtendedDataEntity dataEntitie) { @@ -85,17 +107,17 @@ public class ShippingDetailSubmitValidator extends AbstractValidator { * @time 2023/10/19 18:19 */ - public void vehicleNoSingle(ExtendedDataEntity dataEntitie){ + public void vehicleNoSingle(ExtendedDataEntity dataEntitie) { DynamicObject dataEntity = dataEntitie.getDataEntity(); String name = dataEntity.getDynamicObjectType().getName(); Map>> map = new HashMap(); - String selectfields = DynamicObjectUtil.getSelectfields(name,false); - selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields,name,"yem_es_materialinfo",false); - selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields,name,"yem_es_materialinfo","yem_es_salesorder_z",false); + String selectfields = DynamicObjectUtil.getSelectfields(name, false); + selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, name, "yem_es_materialinfo", false); + selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, name, "yem_es_materialinfo", "yem_es_salesorder_z", false); DynamicObject[] shippingDetails = BusinessDataServiceHelper.load(name, selectfields, - new QFilter[]{new QFilter("billno", QCP.not_equals,dataEntity.getString("billno")), - new QFilter("billstatus", QCP.in,new String[]{"B","C"})}); - for(DynamicObject shippingDetail : shippingDetails){ + new QFilter[]{new QFilter("billno", QCP.not_equals, dataEntity.getString("billno")), + new QFilter("billstatus", QCP.in, new String[]{"B", "C"})}); + for (DynamicObject shippingDetail : shippingDetails) { String billNo = shippingDetail.getString("billno"); DynamicObjectCollection materialInfos = shippingDetail.getDynamicObjectCollection("yem_es_materialinfo"); HashMap> materialInfoMap = new HashMap<>(); @@ -103,13 +125,13 @@ public class ShippingDetailSubmitValidator extends AbstractValidator { DynamicObject materialInfo = materialInfos.get(i); DynamicObjectCollection machineProductInfos = materialInfo.getDynamicObjectCollection("yem_es_salesorder_z"); List vehicleNoList = new ArrayList<>(); - for(DynamicObject machineProductInfo : machineProductInfos){ + for (DynamicObject machineProductInfo : machineProductInfos) { String vehicleNo = machineProductInfo.getString("yem_vehicleno"); vehicleNoList.add(vehicleNo); } - materialInfoMap.put(i + 1,vehicleNoList); + materialInfoMap.put(i + 1, vehicleNoList); } - map.put(billNo,materialInfoMap); + map.put(billNo, materialInfoMap); } DynamicObjectCollection materialInfos = dataEntity.getDynamicObjectCollection("yem_es_materialinfo"); @@ -119,16 +141,16 @@ public class ShippingDetailSubmitValidator extends AbstractValidator { for (int j = 0; j < machineProductInfos.size(); j++) { DynamicObject machineProductInfo = machineProductInfos.get(j); String vehicleNo = machineProductInfo.getString("yem_vehicleno"); - if(YEM.isNotEmpty(vehicleNo)){ + if (YEM.isNotEmpty(vehicleNo)) { Set mapKeys = map.keySet(); - for(String mapKey : mapKeys){ + for (String mapKey : mapKeys) { Map> materialInfoMap = map.get(mapKey); Set materialInfoMapKeys = materialInfoMap.keySet(); - for (Integer materialInfoMapKey : materialInfoMapKeys){ + for (Integer materialInfoMapKey : materialInfoMapKeys) { List vehicleNoList = materialInfoMap.get(materialInfoMapKey); - if(vehicleNoList.contains(vehicleNo)){ + if (vehicleNoList.contains(vehicleNo)) { this.addErrorMessage(dataEntitie, - String.format("明细信息第%s行的子分录整机生产信息第%s行的整机编号【%s】,与出运明细单号【%s】的明细信息第%s行的子分录整机生产信息中的整机编号【%s】重复!",i + 1,j + 1,vehicleNo,mapKey,materialInfoMapKey,vehicleNo)); + String.format("明细信息第%s行的子分录整机生产信息第%s行的整机编号【%s】,与出运明细单号【%s】的明细信息第%s行的子分录整机生产信息中的整机编号【%s】重复!", i + 1, j + 1, vehicleNo, mapKey, materialInfoMapKey, vehicleNo)); } } } @@ -143,11 +165,11 @@ public class ShippingDetailSubmitValidator extends AbstractValidator { for (int j = 0; j < machineProductInfos.size(); j++) { DynamicObject machineProductInfo = machineProductInfos.get(j); String vehicleNo = machineProductInfo.getString("yem_vehicleno"); - if(YEM.isNotEmpty(vehicleNo)){ - if(list.contains(vehicleNo)){ + if (YEM.isNotEmpty(vehicleNo)) { + if (list.contains(vehicleNo)) { this.addErrorMessage(dataEntitie, - String.format("商品明细第%s行的子分录整机生产信息第%s行的整机编号【%s】与本单的整机生产信息中的整机编号重复!",i + 1,j + 1,vehicleNo)); - }else{ + String.format("商品明细第%s行的子分录整机生产信息第%s行的整机编号【%s】与本单的整机生产信息中的整机编号重复!", i + 1, j + 1, vehicleNo)); + } else { list.add(vehicleNo); } }