package tqq9.lc123.cloud.app.api.controller; import com.drew.lang.annotations.NotNull; 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 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 invQuery (@NotNull @ApiParam(value = "入参", example = "") FWInvQueryModel model) { FWInvQueryResult resultExt = new FWInvQueryResult(); List resultBeanList = new ArrayList<>(); int failCount = 0;//失败数量 List 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(); List list = new ArrayList<>(); QFilter qf1 = new QFilter("material.number", QCP.equals, materialNumber); list.add(qf1); if(StringUtils.isNotBlank(lot)){ QFilter qf2 = new QFilter("lotnum", QCP.equals, lot); list.add(qf2); } if(StringUtils.isNotBlank(warehouseNumber)){ QFilter qf3 = new QFilter("warehouse.number", QCP.equals, warehouseNumber); list.add(qf3); } 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); } QFilter[] filterArr = new QFilter[list.size()]; DynamicObject[] realbalances = BusinessDataServiceHelper.load("im_inv_realbalance", "id,material,org,warehouse,lotnum,avbbaseqty,qty", filterArr); if(realbalances != null && realbalances.length > 0){ Map map = new HashMap<>(); for (DynamicObject realbalance : realbalances) { //获取数量 BigDecimal qty = realbalance.getBigDecimal("qty"); //获取组织数据 DynamicObject org = realbalance.getDynamicObject("org"); String orgCode = org.getString("number"); String orgName = org.getString("name"); //获取仓库数据 DynamicObject warehouse = realbalance.getDynamicObject("warehouse"); String warehouseCode = warehouse.getString("number"); String warehouseName = warehouse.getString("name"); //批号 String lotnum = realbalance.getString("lotnum"); String key = orgCode+"<>"+orgName+"<>"+warehouseCode+"<>"+warehouseName+"<>"+lotnum+"<>"+materialNumber; if(map.containsKey(key)){ BigDecimal sl = map.get(key); map.put(key, qty.add(sl)); }else{ map.put(key, qty); } } if(map.size() > 0){ for (String s : map.keySet()) { String[] split = s.split("<>"); FWInvQueryResult.ResultBean resultBean = new FWInvQueryResult.ResultBean(); resultBean.setOrgCode(split[0]); resultBean.setOrgName(split[1]); resultBean.setWarehouseCode(split[2]); resultBean.setWarehouseName(split[3]); resultBean.setLot(split[4]); resultBean.setNumber(split[5]); resultBean.setQty(map.get(s)); resultBeanList.add(resultBean); } } } } resultExt.setFailCount(failCount); resultExt.setSuccessCount(queryModels.size() - failCount); resultExt.setResult(resultBeanList); return CustomApiResult.success(resultExt); } }