134 lines
5.5 KiB
Java
134 lines
5.5 KiB
Java
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;
|
|
import kd.bos.openapi.common.custom.annotation.ApiParam;
|
|
import kd.bos.openapi.common.custom.annotation.ApiPostMapping;
|
|
import kd.bos.openapi.common.result.CustomApiResult;
|
|
import kd.bos.orm.query.QCP;
|
|
import kd.bos.orm.query.QFilter;
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
import kd.bos.servicehelper.QueryServiceHelper;
|
|
import oadd.org.apache.commons.lang3.StringUtils;
|
|
import tqq9.lc123.cloud.app.api.model.FWInvQueryModel;
|
|
import tqq9.lc123.cloud.app.api.result.FWInvQueryResult;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.util.*;
|
|
|
|
@ApiController(value = "FWInvQueryController", desc = "泛微查询库存接口")
|
|
public class FWInvQueryController {
|
|
|
|
@ApiPostMapping(value = "/FWInvQuery", desc = "泛微查询物料库存api接口")
|
|
public CustomApiResult<FWInvQueryResult> invQuery
|
|
(@NotNull @ApiParam(value = "入参", example = "") FWInvQueryModel model) {
|
|
FWInvQueryResult resultExt = new FWInvQueryResult();
|
|
List<FWInvQueryResult.ResultBean> resultBeanList = new ArrayList<>();
|
|
int failCount = 0;//失败数量
|
|
|
|
List<FWInvQueryModel.QueryModel> queryModels = model.getQueryModels();
|
|
for (FWInvQueryModel.QueryModel queryModel : queryModels) {
|
|
String materialNumber = queryModel.getMaterialNumber();
|
|
String lot = queryModel.getLot();
|
|
String warehouseNumber = queryModel.getWarehouseNumber();
|
|
Date producedate = queryModel.getProducedate();
|
|
Date expirydate = queryModel.getExpirydate();
|
|
String orgNumber = queryModel.getOrgNumber();
|
|
|
|
String orgName = "";
|
|
if("SHLC".equals(orgNumber)){
|
|
orgName = "上海励齿";
|
|
}else if("BJLC".equals(orgNumber)){
|
|
orgName = "北京励齿";
|
|
}else if("GZLC".equals(orgNumber)){
|
|
orgName = "广州励齿";
|
|
}else{
|
|
|
|
}
|
|
|
|
boolean existLot = false;
|
|
boolean existWh = false;
|
|
|
|
String key = materialNumber;
|
|
List<QFilter> list = 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);
|
|
if(StringUtils.isNotBlank(lot)){
|
|
QFilter qf2 = new QFilter("lotnum", QCP.equals, lot);
|
|
list.add(qf2);
|
|
existLot = true;
|
|
}
|
|
if(StringUtils.isNotBlank(warehouseNumber)){
|
|
QFilter qf3 = new QFilter("warehouse.number", QCP.equals, warehouseNumber);
|
|
list.add(qf3);
|
|
existWh = true;
|
|
}
|
|
if(producedate != null){
|
|
QFilter qf4 = new QFilter("producedate", QCP.equals, producedate);
|
|
list.add(qf4);
|
|
}
|
|
if(expirydate != null){
|
|
QFilter qf5 = new QFilter("expirydate", QCP.equals, expirydate);
|
|
list.add(qf5);
|
|
}
|
|
|
|
String groupbyStr = "material,org";
|
|
if(existLot){
|
|
groupbyStr = groupbyStr + ",lotnum,producedate,expirydate";
|
|
}
|
|
if(existWh){
|
|
groupbyStr = groupbyStr + ",warehouse";
|
|
}
|
|
|
|
|
|
|
|
QFilter[] filterArr = new QFilter[list.size()];
|
|
filterArr = list.toArray(filterArr);
|
|
DataSet dataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "im_inv_realbalance",
|
|
"qty,"+groupbyStr, filterArr, null);
|
|
DataSet groupbyDataSet = dataSet.groupBy(groupbyStr.split(",")).count("qty").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");
|
|
|
|
if(existLot){
|
|
String lotnum = row.getString("lotnum");
|
|
Date producedate1 = row.getDate("producedate");
|
|
Date expirydate1 = row.getDate("expirydate");
|
|
|
|
resultBean.setLot(lotnum);
|
|
resultBean.setProducedate(producedate1);
|
|
resultBean.setExpirydate(expirydate1);
|
|
}
|
|
if(existWh){
|
|
Long warehouseId = row.getLong("warehouse");
|
|
DynamicObject warehouse = BusinessDataServiceHelper.loadSingle(warehouseId, "bd_warehouse");
|
|
resultBean.setWarehouseCode(warehouse.getString("number"));
|
|
resultBean.setWarehouseName(warehouse.getString("name"));
|
|
}
|
|
|
|
resultBean.setOrgCode(orgNumber);
|
|
resultBean.setOrgName(org.getString("name"));
|
|
resultBean.setNumber(materialNumber);
|
|
resultBean.setQty(qty);
|
|
resultBeanList.add(resultBean);
|
|
}
|
|
}
|
|
|
|
resultExt.setFailCount(failCount);
|
|
resultExt.setSuccessCount(queryModels.size() - failCount);
|
|
resultExt.setResult(resultBeanList);
|
|
return CustomApiResult.success(resultExt);
|
|
|
|
}
|
|
|
|
}
|