diff --git a/lc123/cloud/app/api/controller/FWInvQueryController.java b/lc123/cloud/app/api/controller/FWInvQueryController.java index 96a7144..bcc50e9 100644 --- a/lc123/cloud/app/api/controller/FWInvQueryController.java +++ b/lc123/cloud/app/api/controller/FWInvQueryController.java @@ -2,7 +2,6 @@ package tqq9.lc123.cloud.app.api.controller; import com.drew.lang.annotations.NotNull; import kd.bos.algo.DataSet; -import kd.bos.algo.GroupbyDataSet; import kd.bos.algo.Row; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.openapi.common.custom.annotation.ApiController; @@ -18,7 +17,9 @@ import tqq9.lc123.cloud.app.api.model.FWInvQueryModel; import tqq9.lc123.cloud.app.api.result.FWInvQueryResult; import java.math.BigDecimal; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; @ApiController(value = "FWInvQueryController", desc = "泛微查询库存接口") public class FWInvQueryController { @@ -55,18 +56,27 @@ public class FWInvQueryController { String key = materialNumber; List list = new ArrayList<>(); + List ylList = new ArrayList<>(); QFilter qf0 = new QFilter("material.number", QCP.equals, materialNumber); QFilter qf1 = new QFilter("org.number", QCP.equals, orgNumber); list.add(qf0); list.add(qf1); + QFilter ylf0 = new QFilter("s_materiel.number", QCP.equals, materialNumber); + QFilter ylf1 = new QFilter("s_org.number", QCP.equals, orgNumber); + ylList.add(ylf0); + ylList.add(ylf1); if(StringUtils.isNotBlank(lot)){ QFilter qf2 = new QFilter("lotnum", QCP.equals, lot); list.add(qf2); + QFilter ylf2 = new QFilter("s_lotnum", QCP.equals, lot); + ylList.add(ylf2); existLot = true; } if(StringUtils.isNotBlank(warehouseNumber)){ QFilter qf3 = new QFilter("warehouse.number", QCP.equals, warehouseNumber); list.add(qf3); + QFilter ylf3 = new QFilter("s_warehouse.number", QCP.equals, warehouseNumber); + ylList.add(ylf3); existWh = true; } if(producedate != null){ @@ -86,18 +96,34 @@ public class FWInvQueryController { groupbyStr = groupbyStr + ",warehouse"; } - - QFilter[] filterArr = new QFilter[list.size()]; filterArr = list.toArray(filterArr); + QFilter[] ylFilterArr = new QFilter[ylList.size()]; + ylFilterArr = ylList.toArray(ylFilterArr); + //查询即时库存余额表 DataSet dataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "im_inv_realbalance", - "qty,"+groupbyStr, filterArr, null); - DataSet groupbyDataSet = dataSet.groupBy(groupbyStr.split(",")).count("qty").finish(); + "id,qty,"+groupbyStr, filterArr, null); + //查询预留记录 + DataSet ylDataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "msmod_reserve_record", + "bal_id,qty as qty1", ylFilterArr, null); + //汇总预留记录 + DataSet ylGroupbyDataSet = ylDataSet.groupBy(new String[]{"bal_id"}).sum("qty1").finish(); + //即时库存余额表 关联 预留记录 + DataSet joinDataSet = dataSet.leftJoin(ylGroupbyDataSet).on("id", "bal_id") + .select(("qty,"+groupbyStr).split(","), new String[]{"qty1"}).finish(); + //汇总关联后的数据 + DataSet groupbyDataSet = joinDataSet.groupBy(groupbyStr.split(",")).sum("qty").sum("qty1").finish(); for (Row row : groupbyDataSet) { FWInvQueryResult.ResultBean resultBean = new FWInvQueryResult.ResultBean(); Long orgId = row.getLong("org"); DynamicObject org = BusinessDataServiceHelper.loadSingle(orgId, "bos_org"); BigDecimal qty = row.getBigDecimal("qty"); + qty = qty != null?qty:BigDecimal.ZERO; + BigDecimal qty1 = row.getBigDecimal("qty1"); + qty1 = qty1 != null?qty1:BigDecimal.ZERO; + if(qty.compareTo(qty1) == 0){ + continue; + } if(existLot){ String lotnum = row.getString("lotnum"); @@ -118,7 +144,7 @@ public class FWInvQueryController { resultBean.setOrgCode(orgNumber); resultBean.setOrgName(org.getString("name")); resultBean.setNumber(materialNumber); - resultBean.setQty(qty); + resultBean.setQty(qty.subtract(qty1)); resultBeanList.add(resultBean); } }