【泛微库存查询】增加排除预留数量的逻辑
This commit is contained in:
parent
3e200c85e6
commit
1ec046f32d
|
|
@ -2,7 +2,6 @@ package tqq9.lc123.cloud.app.api.controller;
|
||||||
|
|
||||||
import com.drew.lang.annotations.NotNull;
|
import com.drew.lang.annotations.NotNull;
|
||||||
import kd.bos.algo.DataSet;
|
import kd.bos.algo.DataSet;
|
||||||
import kd.bos.algo.GroupbyDataSet;
|
|
||||||
import kd.bos.algo.Row;
|
import kd.bos.algo.Row;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.openapi.common.custom.annotation.ApiController;
|
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 tqq9.lc123.cloud.app.api.result.FWInvQueryResult;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@ApiController(value = "FWInvQueryController", desc = "泛微查询库存接口")
|
@ApiController(value = "FWInvQueryController", desc = "泛微查询库存接口")
|
||||||
public class FWInvQueryController {
|
public class FWInvQueryController {
|
||||||
|
|
@ -55,18 +56,27 @@ public class FWInvQueryController {
|
||||||
|
|
||||||
String key = materialNumber;
|
String key = materialNumber;
|
||||||
List<QFilter> list = new ArrayList<>();
|
List<QFilter> list = new ArrayList<>();
|
||||||
|
List<QFilter> ylList = new ArrayList<>();
|
||||||
QFilter qf0 = new QFilter("material.number", QCP.equals, materialNumber);
|
QFilter qf0 = new QFilter("material.number", QCP.equals, materialNumber);
|
||||||
QFilter qf1 = new QFilter("org.number", QCP.equals, orgNumber);
|
QFilter qf1 = new QFilter("org.number", QCP.equals, orgNumber);
|
||||||
list.add(qf0);
|
list.add(qf0);
|
||||||
list.add(qf1);
|
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)){
|
if(StringUtils.isNotBlank(lot)){
|
||||||
QFilter qf2 = new QFilter("lotnum", QCP.equals, lot);
|
QFilter qf2 = new QFilter("lotnum", QCP.equals, lot);
|
||||||
list.add(qf2);
|
list.add(qf2);
|
||||||
|
QFilter ylf2 = new QFilter("s_lotnum", QCP.equals, lot);
|
||||||
|
ylList.add(ylf2);
|
||||||
existLot = true;
|
existLot = true;
|
||||||
}
|
}
|
||||||
if(StringUtils.isNotBlank(warehouseNumber)){
|
if(StringUtils.isNotBlank(warehouseNumber)){
|
||||||
QFilter qf3 = new QFilter("warehouse.number", QCP.equals, warehouseNumber);
|
QFilter qf3 = new QFilter("warehouse.number", QCP.equals, warehouseNumber);
|
||||||
list.add(qf3);
|
list.add(qf3);
|
||||||
|
QFilter ylf3 = new QFilter("s_warehouse.number", QCP.equals, warehouseNumber);
|
||||||
|
ylList.add(ylf3);
|
||||||
existWh = true;
|
existWh = true;
|
||||||
}
|
}
|
||||||
if(producedate != null){
|
if(producedate != null){
|
||||||
|
|
@ -86,18 +96,34 @@ public class FWInvQueryController {
|
||||||
groupbyStr = groupbyStr + ",warehouse";
|
groupbyStr = groupbyStr + ",warehouse";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QFilter[] filterArr = new QFilter[list.size()];
|
QFilter[] filterArr = new QFilter[list.size()];
|
||||||
filterArr = list.toArray(filterArr);
|
filterArr = list.toArray(filterArr);
|
||||||
|
QFilter[] ylFilterArr = new QFilter[ylList.size()];
|
||||||
|
ylFilterArr = ylList.toArray(ylFilterArr);
|
||||||
|
//查询即时库存余额表
|
||||||
DataSet dataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "im_inv_realbalance",
|
DataSet dataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "im_inv_realbalance",
|
||||||
"qty,"+groupbyStr, filterArr, null);
|
"id,qty,"+groupbyStr, filterArr, null);
|
||||||
DataSet groupbyDataSet = dataSet.groupBy(groupbyStr.split(",")).count("qty").finish();
|
//查询预留记录
|
||||||
|
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) {
|
for (Row row : groupbyDataSet) {
|
||||||
FWInvQueryResult.ResultBean resultBean = new FWInvQueryResult.ResultBean();
|
FWInvQueryResult.ResultBean resultBean = new FWInvQueryResult.ResultBean();
|
||||||
Long orgId = row.getLong("org");
|
Long orgId = row.getLong("org");
|
||||||
DynamicObject org = BusinessDataServiceHelper.loadSingle(orgId, "bos_org");
|
DynamicObject org = BusinessDataServiceHelper.loadSingle(orgId, "bos_org");
|
||||||
BigDecimal qty = row.getBigDecimal("qty");
|
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){
|
if(existLot){
|
||||||
String lotnum = row.getString("lotnum");
|
String lotnum = row.getString("lotnum");
|
||||||
|
|
@ -118,7 +144,7 @@ public class FWInvQueryController {
|
||||||
resultBean.setOrgCode(orgNumber);
|
resultBean.setOrgCode(orgNumber);
|
||||||
resultBean.setOrgName(org.getString("name"));
|
resultBean.setOrgName(org.getString("name"));
|
||||||
resultBean.setNumber(materialNumber);
|
resultBean.setNumber(materialNumber);
|
||||||
resultBean.setQty(qty);
|
resultBean.setQty(qty.subtract(qty1));
|
||||||
resultBeanList.add(resultBean);
|
resultBeanList.add(resultBean);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue