现存量查询同步其它仓库的代码
This commit is contained in:
parent
734b0d7aac
commit
24713f6670
|
|
@ -56,6 +56,29 @@ public class APIOnhandQueryIpml implements IAPIOnhandQuery {
|
||||||
return onhandVOs;
|
return onhandVOs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OnhandVO[] queryOnhandVOByDimsNoTrans(List<Map<String, Object>> paramMapList) throws BusinessException {
|
||||||
|
|
||||||
|
|
||||||
|
//±ØÊäÏî¼ì²é
|
||||||
|
try {
|
||||||
|
List<OnhandDimVO> onhandDimVOS = new ArrayList<>();
|
||||||
|
for (Map<String, Object> paramMap : paramMapList) {
|
||||||
|
this.requiredFieldCheck(requiredField, paramMap);
|
||||||
|
// ·Òë
|
||||||
|
// paramMap = TransferCodeToPKTool.doTranslateFields(jsonParamMapping, paramMap);
|
||||||
|
OnhandDataSupplement dataSupplement = new OnhandDataSupplement();
|
||||||
|
OnhandDimVO onhandDimVO = new OnhandDimVO();
|
||||||
|
onhandDimVO = dataSupplement.process(paramMap);
|
||||||
|
onhandDimVOS.add(onhandDimVO);
|
||||||
|
}
|
||||||
|
OnhandVO[] onhandVOs = NCLocator.getInstance().lookup(OnhandResService.class)
|
||||||
|
.queryOnhandVOByDims(onhandDimVOS.toArray(new OnhandDimVO[0]));
|
||||||
|
return onhandVOs;
|
||||||
|
} catch (Exception e) {
|
||||||
|
ExceptionUtils.marsh(e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public OnhandVO[] queryOnhandVOByDims(List<Map<String, Object>> paramMapList) throws Exception {
|
public OnhandVO[] queryOnhandVOByDims(List<Map<String, Object>> paramMapList) throws Exception {
|
||||||
// ±ØÊäÏî¼ì²é
|
// ±ØÊäÏî¼ì²é
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,8 @@ public interface IAPIOnhandQuery {
|
||||||
*/
|
*/
|
||||||
OnhandVO[] queryOnhandVOByDims(Map<String, Object> paramMap) throws BusinessException;
|
OnhandVO[] queryOnhandVOByDims(Map<String, Object> paramMap) throws BusinessException;
|
||||||
|
|
||||||
|
OnhandVO[] queryOnhandVOByDimsNoTrans(List<Map<String, Object>> paramMapList) throws BusinessException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据多个维度查询现存量信息
|
* 根据多个维度查询现存量信息
|
||||||
* 此方法接收一个参数映射列表,每个映射包含一组查询条件,用于批量查询
|
* 此方法接收一个参数映射列表,每个映射包含一组查询条件,用于批量查询
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@ import nc.vo.pubapp.pattern.pub.SqlBuilder;
|
||||||
import nc.ws.opm.pub.utils.result.APIErrCodeEnum;
|
import nc.ws.opm.pub.utils.result.APIErrCodeEnum;
|
||||||
import nccloud.api.ic.onhand.IAPIOnhandQuery;
|
import nccloud.api.ic.onhand.IAPIOnhandQuery;
|
||||||
import nccloud.api.rest.utils.ResultMessageUtil;
|
import nccloud.api.rest.utils.ResultMessageUtil;
|
||||||
|
import nccloud.openapi.ic.onhand.mapping.OnhandMapping;
|
||||||
|
import nccloud.openapi.scmpub.pub.TransferCodeToPKTool;
|
||||||
import org.json.JSONString;
|
import org.json.JSONString;
|
||||||
|
|
||||||
import javax.ws.rs.Consumes;
|
import javax.ws.rs.Consumes;
|
||||||
|
|
@ -319,4 +321,439 @@ public class OnhandResource {
|
||||||
Map map = (Map) new BaseDAO().executeQuery(sql, new MapProcessor());
|
Map map = (Map) new BaseDAO().executeQuery(sql, new MapProcessor());
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 现存量查询 WMS富勒
|
||||||
|
* 支持库存组织+仓库+批次+辅助属性+项目+供应商+生产厂商+客户等条件查询
|
||||||
|
*
|
||||||
|
* @param paramMap 查询参数
|
||||||
|
* - pk_org: 库存组织
|
||||||
|
* - cwarehouseid: 仓库
|
||||||
|
* - vbatchcode: 批次号
|
||||||
|
* - cmaterialoid: 物料
|
||||||
|
* - cprojectid: 项目
|
||||||
|
* - cvendorid: 供应商
|
||||||
|
* - cproductorid: 生产厂商
|
||||||
|
* - casscustid: 客户
|
||||||
|
*/
|
||||||
|
@POST
|
||||||
|
@Path("onhandWmsQuery")
|
||||||
|
@Consumes("application/json")
|
||||||
|
@Produces("application/json")
|
||||||
|
public JSONString onhandQueryWms(Map<String, Object> paramMap) {
|
||||||
|
if (paramMap == null) {
|
||||||
|
return ResultMessageUtil.exceptionToJSON("传入参数错误", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
String orgCode = (String) paramMap.get("pk_org");
|
||||||
|
// 构建动态SQL查询现存量
|
||||||
|
paramMap = TransferCodeToPKTool.doTranslateFields(new OnhandMapping(), this.deleteUnNessaryField(paramMap));
|
||||||
|
String sql = buildOnhandQuerySql(paramMap);
|
||||||
|
|
||||||
|
// 执行SQL查询
|
||||||
|
List<Map<String, Object>> onhandList = (List<Map<String, Object>>) new BaseDAO()
|
||||||
|
.executeQuery(sql, new nc.jdbc.framework.processor.MapListProcessor());
|
||||||
|
|
||||||
|
if (onhandList != null && !onhandList.isEmpty()) {
|
||||||
|
// 收集所有相关ID用于批量查询
|
||||||
|
Set<String> materialIds = new HashSet<>();
|
||||||
|
Set<String> warehouseIds = new HashSet<>();
|
||||||
|
Set<String> projectIds = new HashSet<>();
|
||||||
|
Set<String> vendorIds = new HashSet<>();
|
||||||
|
Set<String> producerIds = new HashSet<>();
|
||||||
|
Set<String> customerIds = new HashSet<>();
|
||||||
|
|
||||||
|
for (Map<String, Object> onhandData : onhandList) {
|
||||||
|
if (onhandData.get("cmaterialvid") != null) {
|
||||||
|
materialIds.add(onhandData.get("cmaterialvid").toString());
|
||||||
|
}
|
||||||
|
if (onhandData.get("cwarehouseid") != null) {
|
||||||
|
warehouseIds.add(onhandData.get("cwarehouseid").toString());
|
||||||
|
}
|
||||||
|
if (onhandData.get("cprojectid") != null) {
|
||||||
|
projectIds.add(onhandData.get("cprojectid").toString());
|
||||||
|
}
|
||||||
|
if (onhandData.get("cvendorid") != null) {
|
||||||
|
vendorIds.add(onhandData.get("cvendorid").toString());
|
||||||
|
}
|
||||||
|
if (onhandData.get("cproductorid") != null) {
|
||||||
|
producerIds.add(onhandData.get("cproductorid").toString());
|
||||||
|
}
|
||||||
|
if (onhandData.get("casscustid") != null) {
|
||||||
|
customerIds.add(onhandData.get("casscustid").toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量查询相关信息
|
||||||
|
Map<String, Map<String, Object>> materialInfoMap = new HashMap<>();
|
||||||
|
Map<String, Map<String, Object>> warehouseInfoMap = new HashMap<>();
|
||||||
|
Map<String, Map<String, Object>> projectInfoMap = new HashMap<>();
|
||||||
|
Map<String, Map<String, Object>> vendorInfoMap = new HashMap<>();
|
||||||
|
Map<String, Map<String, Object>> producerInfoMap = new HashMap<>();
|
||||||
|
Map<String, Map<String, Object>> customerInfoMap = new HashMap<>();
|
||||||
|
|
||||||
|
// 物料信息
|
||||||
|
for (String materialId : materialIds) {
|
||||||
|
Map<String, Object> materialMap = this.getMaterialInfo(materialId);
|
||||||
|
materialInfoMap.put(materialId, materialMap != null ? materialMap : new HashMap<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 仓库信息
|
||||||
|
String warehouseSelectFields = StordocVO.CODE + "," + StordocVO.NAME;
|
||||||
|
for (String warehouseId : warehouseIds) {
|
||||||
|
Map<String, Object> warehouseMap = this.transferFields(
|
||||||
|
StordocVO.getDefaultTableName(), warehouseSelectFields, StordocVO.PK_STORDOC, warehouseId);
|
||||||
|
warehouseInfoMap.put(warehouseId, warehouseMap != null ? warehouseMap : new HashMap<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目信息
|
||||||
|
for (String projectId : projectIds) {
|
||||||
|
Map<String, Object> projectMap = this.transferFields(
|
||||||
|
"bd_project", "project_code,project_name", "pk_project", projectId);
|
||||||
|
projectInfoMap.put(projectId, projectMap != null ? projectMap : new HashMap<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 供应商信息
|
||||||
|
for (String vendorId : vendorIds) {
|
||||||
|
Map<String, Object> vendorMap = this.transferFields(
|
||||||
|
"bd_supplier", "code,name", "pk_supplier", vendorId);
|
||||||
|
vendorInfoMap.put(vendorId, vendorMap != null ? vendorMap : new HashMap<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生产厂商信息
|
||||||
|
for (String producerId : producerIds) {
|
||||||
|
Map<String, Object> producerMap = this.transferFields(
|
||||||
|
"bd_defdoc", "code,name", "pk_defdoc", producerId);
|
||||||
|
producerInfoMap.put(producerId, producerMap != null ? producerMap : new HashMap<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 客户信息
|
||||||
|
for (String customerId : customerIds) {
|
||||||
|
Map<String, Object> customerMap = this.transferFields(
|
||||||
|
"bd_customer", "code,name", "pk_customer", customerId);
|
||||||
|
customerInfoMap.put(customerId, customerMap != null ? customerMap : new HashMap<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONArray reArray = new JSONArray();
|
||||||
|
for (Map<String, Object> onhandData : onhandList) {
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
// 基本信息
|
||||||
|
JSONObject baseInfo = new JSONObject();
|
||||||
|
baseInfo.put("pk_org", onhandData.get("pk_org"));
|
||||||
|
baseInfo.put("onhandnum", onhandData.get("nonhandnum"));
|
||||||
|
baseInfo.put("vbatchcode", onhandData.get("vbatchcode"));
|
||||||
|
baseInfo.put("orgcode", orgCode);
|
||||||
|
jsonObject.put("baseInfo", baseInfo);
|
||||||
|
|
||||||
|
// 物料信息
|
||||||
|
JSONObject materialInfoDetail = new JSONObject();
|
||||||
|
String cmaterialvid = onhandData.get("cmaterialvid") != null ? onhandData.get("cmaterialvid").toString() : null;
|
||||||
|
Map<String, Object> materialInfo = materialInfoMap.getOrDefault(cmaterialvid, Collections.emptyMap());
|
||||||
|
materialInfoDetail.put("materialPk", cmaterialvid);
|
||||||
|
materialInfoDetail.put("materialCode", materialInfo.getOrDefault(MaterialVO.CODE, ""));
|
||||||
|
materialInfoDetail.put("materialName", materialInfo.getOrDefault(MaterialVO.NAME, ""));
|
||||||
|
materialInfoDetail.put("materialtype", materialInfo.getOrDefault(MaterialVO.MATERIALTYPE, ""));
|
||||||
|
materialInfoDetail.put("materialspec", materialInfo.getOrDefault(MaterialVO.MATERIALSPEC, ""));
|
||||||
|
materialInfoDetail.put("unitcode", materialInfo.getOrDefault("unitcode", ""));
|
||||||
|
materialInfoDetail.put("unitname", materialInfo.getOrDefault("unitname", ""));
|
||||||
|
jsonObject.put("materialInfo", materialInfoDetail);
|
||||||
|
|
||||||
|
// 仓库信息
|
||||||
|
String cwarehouseid = onhandData.get("cwarehouseid") != null ? onhandData.get("cwarehouseid").toString() : null;
|
||||||
|
JSONObject warehouseInfoDetail = new JSONObject();
|
||||||
|
Map<String, Object> warehouseInfo = warehouseInfoMap.getOrDefault(cwarehouseid, Collections.emptyMap());
|
||||||
|
warehouseInfoDetail.put("warehousePk", cwarehouseid);
|
||||||
|
warehouseInfoDetail.put("warehouseCode", warehouseInfo.getOrDefault(StordocVO.CODE, ""));
|
||||||
|
warehouseInfoDetail.put("warehouseName", warehouseInfo.getOrDefault(StordocVO.NAME, ""));
|
||||||
|
jsonObject.put("warehouseInfo", warehouseInfoDetail);
|
||||||
|
|
||||||
|
// 项目信息
|
||||||
|
String cprojectid = onhandData.get("cprojectid") != null ? onhandData.get("cprojectid").toString() : null;
|
||||||
|
JSONObject projectInfoDetail = new JSONObject();
|
||||||
|
Map<String, Object> projectInfo = projectInfoMap.getOrDefault(cprojectid, Collections.emptyMap());
|
||||||
|
projectInfoDetail.put("projectPk", cprojectid);
|
||||||
|
projectInfoDetail.put("projectCode", projectInfo.getOrDefault("project_code", ""));
|
||||||
|
projectInfoDetail.put("projectName", projectInfo.getOrDefault("project_name", ""));
|
||||||
|
jsonObject.put("projectInfo", projectInfoDetail);
|
||||||
|
|
||||||
|
// 供应商信息
|
||||||
|
String cvendorid = onhandData.get("cvendorid") != null ? onhandData.get("cvendorid").toString() : null;
|
||||||
|
JSONObject venderInfoDetail = new JSONObject();
|
||||||
|
Map<String, Object> vendorInfo = vendorInfoMap.getOrDefault(cvendorid, Collections.emptyMap());
|
||||||
|
venderInfoDetail.put("vendorPk", cvendorid);
|
||||||
|
venderInfoDetail.put("vendorCode", vendorInfo.getOrDefault("code", ""));
|
||||||
|
venderInfoDetail.put("vendorName", vendorInfo.getOrDefault("name", ""));
|
||||||
|
jsonObject.put("venderInfo", venderInfoDetail);
|
||||||
|
|
||||||
|
// 生产厂商信息
|
||||||
|
String cproductorid = onhandData.get("cproductorid") != null ? onhandData.get("cproductorid").toString() : null;
|
||||||
|
JSONObject producerInfoDetail = new JSONObject();
|
||||||
|
Map<String, Object> producerInfo = producerInfoMap.getOrDefault(cproductorid, Collections.emptyMap());
|
||||||
|
producerInfoDetail.put("producerPk", cproductorid);
|
||||||
|
producerInfoDetail.put("producerCode", producerInfo.getOrDefault("code", ""));
|
||||||
|
producerInfoDetail.put("producerName", producerInfo.getOrDefault("name", ""));
|
||||||
|
jsonObject.put("producerInfo", producerInfoDetail);
|
||||||
|
|
||||||
|
// 客户信息
|
||||||
|
String casscustid = onhandData.get("casscustid") != null ? onhandData.get("casscustid").toString() : null;
|
||||||
|
JSONObject customerInfoDetail = new JSONObject();
|
||||||
|
Map<String, Object> customerInfo = customerInfoMap.getOrDefault(casscustid, Collections.emptyMap());
|
||||||
|
customerInfoDetail.put("customerPk", casscustid);
|
||||||
|
customerInfoDetail.put("customerCode", customerInfo.getOrDefault("code", ""));
|
||||||
|
customerInfoDetail.put("customerName", customerInfo.getOrDefault("name", ""));
|
||||||
|
jsonObject.put("customerInfo", customerInfoDetail);
|
||||||
|
|
||||||
|
// 辅助属性信息(物料自由属性)
|
||||||
|
jsonObject.put("vfree1", onhandData.get("vfree1"));
|
||||||
|
jsonObject.put("vfree2", onhandData.get("vfree2"));
|
||||||
|
jsonObject.put("vfree3", onhandData.get("vfree3"));
|
||||||
|
jsonObject.put("vfree4", onhandData.get("vfree4"));
|
||||||
|
jsonObject.put("vfree5", onhandData.get("vfree5"));
|
||||||
|
jsonObject.put("vfree6", onhandData.get("vfree6"));
|
||||||
|
jsonObject.put("vfree7", onhandData.get("vfree7"));
|
||||||
|
jsonObject.put("vfree8", onhandData.get("vfree8"));
|
||||||
|
jsonObject.put("vfree9", onhandData.get("vfree9"));
|
||||||
|
jsonObject.put("vfree10", onhandData.get("vfree10"));
|
||||||
|
|
||||||
|
reArray.add(jsonObject);
|
||||||
|
}
|
||||||
|
return ResultMessageUtil.toJSON(reArray, "现存量查询成功!");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return ResultMessageUtil.toJSON(null, "现存量查询成功,无数据!");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
return ResultMessageUtil.exceptionToJSON(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private Map<String, Object> deleteUnNessaryField(Map<String, Object> paramMap) {
|
||||||
|
Map<String, Object> newParamMap = new HashMap<>();
|
||||||
|
// 然后校验如果非必填项有传递空或者null 手动删除属性
|
||||||
|
for (String field : paramMap.keySet()) {
|
||||||
|
Object keyValue = paramMap.get(field);
|
||||||
|
if (null == keyValue || "".equals(keyValue)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
newParamMap.put(field, keyValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
return newParamMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建现存量查询SQL
|
||||||
|
*
|
||||||
|
* @param paramMap 查询参数
|
||||||
|
* @return 动态构建的SQL语句
|
||||||
|
*/
|
||||||
|
private String buildOnhandQuerySql(Map<String, Object> paramMap) {
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
|
||||||
|
// 基础SQL结构
|
||||||
|
sql.append("select onhand.pk_org pk_org, ");
|
||||||
|
sql.append("onhand.cmaterialoid cmaterialoid, ");
|
||||||
|
sql.append("meta.pk_material cmaterialvid, ");
|
||||||
|
sql.append("meta.pk_measdoc cunitid, ");
|
||||||
|
sql.append("sum(onhand.nonhandnum) nonhandnum, ");
|
||||||
|
sql.append("sum(onhand.nonhandastnum) nonhandastnum, ");
|
||||||
|
sql.append("sum(onhand.ngrossnum) ngrossnum, ");
|
||||||
|
sql.append("sum(onhand.nnum1) nnum1, ");
|
||||||
|
sql.append("sum(onhand.nastnum1) nastnum1, ");
|
||||||
|
sql.append("sum(onhand.ngrossnum1) ngrossnum1, ");
|
||||||
|
sql.append("sum(onhand.nnum2) nnum2, ");
|
||||||
|
sql.append("sum(onhand.nastnum2) nastnum2, ");
|
||||||
|
sql.append("sum(onhand.ngrossnum2) ngrossnum2, ");
|
||||||
|
sql.append("sum(onhand.nlocknum) nlocknum, ");
|
||||||
|
sql.append("sum(onhand.nlockastnum) nlockastnum, ");
|
||||||
|
sql.append("sum(onhand.nlockgrossnum) nlockgrossnum, ");
|
||||||
|
sql.append("sum(onhand.nrsnum) nrsnum, ");
|
||||||
|
sql.append("sum(onhand.nrsastnum) nrsastnum, ");
|
||||||
|
sql.append("sum(onhand.nrsgrossnum) nrsgrossnum, ");
|
||||||
|
sql.append("sum(onhand.nonhandnumrpt) nonhandnumrpt, ");
|
||||||
|
sql.append("sum(onhand.nonhandastnumrpt) nonhandastnumrpt, ");
|
||||||
|
sql.append("sum(onhand.ngrossnumrpt) ngrossnumrpt, ");
|
||||||
|
sql.append("sum(onhand.nlocknumrpt) nlocknumrpt, ");
|
||||||
|
sql.append("sum(onhand.nlockastnumrpt) nlockastnumrpt, ");
|
||||||
|
sql.append("sum(onhand.nlockgrossnumrpt) nlockgrossnumrpt, ");
|
||||||
|
sql.append("sum(onhand.nvmionhandnum) nvmionhandnum, ");
|
||||||
|
sql.append("sum(onhand.nvmionhandastnum) nvmionhandastnum, ");
|
||||||
|
sql.append("sum(onhand.nvmilocknum) nvmilocknum, ");
|
||||||
|
sql.append("sum(onhand.nvmilockastnum) nvmilockastnum, ");
|
||||||
|
sql.append("sum(onhand.ntplonhandnum) ntplonhandnum, ");
|
||||||
|
sql.append("sum(onhand.ntplonhandastnum) ntplonhandastnum, ");
|
||||||
|
sql.append("sum(onhand.ntpllocknum) ntpllocknum, ");
|
||||||
|
sql.append("sum(onhand.ntpllockastnum) ntpllockastnum, ");
|
||||||
|
sql.append("onhand.cwarehouseid, ");
|
||||||
|
sql.append("onhand.vbatchcode, ");
|
||||||
|
sql.append("onhand.cvendorid, ");
|
||||||
|
sql.append("onhand.cprojectid, ");
|
||||||
|
sql.append("onhand.casscustid, ");
|
||||||
|
sql.append("onhand.cproductorid, ");
|
||||||
|
sql.append("onhand.vfree1, ");
|
||||||
|
sql.append("onhand.vfree2, ");
|
||||||
|
sql.append("onhand.vfree3, ");
|
||||||
|
sql.append("onhand.vfree4, ");
|
||||||
|
sql.append("onhand.vfree5, ");
|
||||||
|
sql.append("onhand.vfree6, ");
|
||||||
|
sql.append("onhand.vfree7, ");
|
||||||
|
sql.append("onhand.vfree8, ");
|
||||||
|
sql.append("onhand.vfree9, ");
|
||||||
|
sql.append("onhand.vfree10 ");
|
||||||
|
|
||||||
|
sql.append("from (select hand.nonhandnum nonhandnumrpt, ");
|
||||||
|
sql.append("hand.nonhandastnum nonhandastnumrpt, ");
|
||||||
|
sql.append("hand.ngrossnum ngrossnumrpt, ");
|
||||||
|
sql.append("hand.nlocknum nlocknumrpt, ");
|
||||||
|
sql.append("hand.nlockastnum nlockastnumrpt, ");
|
||||||
|
sql.append("hand.nlockgrossnum nlockgrossnumrpt, ");
|
||||||
|
sql.append("CASE WHEN nvl(hand.cvmivenderid, '~') = '~' THEN 0.0 ELSE hand.nonhandnum END nvmionhandnum, ");
|
||||||
|
sql.append("CASE WHEN nvl(hand.ctplcustomerid, '~') = '~' THEN 0.0 ELSE hand.nonhandnum END ntplonhandnum, ");
|
||||||
|
sql.append("CASE WHEN nvl(hand.cvmivenderid, '~') = '~' THEN 0.0 ELSE hand.nlocknum END nvmilocknum, ");
|
||||||
|
sql.append("CASE WHEN nvl(hand.ctplcustomerid, '~') = '~' THEN 0.0 ELSE hand.nlocknum END ntpllocknum, ");
|
||||||
|
sql.append("CASE WHEN nvl(hand.cvmivenderid, '~') = '~' THEN 0.0 ELSE hand.nonhandastnum END nvmionhandastnum, ");
|
||||||
|
sql.append("CASE WHEN nvl(hand.ctplcustomerid, '~') = '~' THEN 0.0 ELSE hand.nonhandastnum END ntplonhandastnum, ");
|
||||||
|
sql.append("CASE WHEN nvl(hand.cvmivenderid, '~') = '~' THEN 0.0 ELSE hand.nlockastnum END nvmilockastnum, ");
|
||||||
|
sql.append("CASE WHEN nvl(hand.ctplcustomerid, '~') = '~' THEN 0.0 ELSE hand.nlockastnum END ntpllockastnum, ");
|
||||||
|
sql.append("hand.pk_group, hand.pk_org, hand.cwarehouseid, hand.cmaterialvid, hand.cmaterialoid, ");
|
||||||
|
sql.append("hand.castunitid, hand.clocationid, hand.pk_batchcode, hand.vbatchcode, hand.vchangerate, ");
|
||||||
|
sql.append("hand.cvmivenderid, hand.ctplcustomerid, hand.cstateid, hand.cvendorid, hand.cprojectid, ");
|
||||||
|
sql.append("hand.casscustid, hand.cproductorid, hand.cffileid, hand.vfree1, hand.vfree2, hand.vfree3, ");
|
||||||
|
sql.append("hand.vfree4, hand.vfree5, hand.vfree6, hand.vfree7, hand.vfree8, hand.vfree9, hand.vfree10, ");
|
||||||
|
sql.append("'~' pk_marbasclass, hand.nonhandnum, hand.nonhandastnum, hand.ngrossnum, hand.nnum1, ");
|
||||||
|
sql.append("hand.nastnum1, hand.ngrossnum1, hand.nnum2, hand.nastnum2, hand.ngrossnum2, hand.nlocknum, ");
|
||||||
|
sql.append("hand.nlockastnum, hand.nlockgrossnum, hand.nrsnum, hand.nrsastnum, hand.nrsgrossnum ");
|
||||||
|
|
||||||
|
sql.append("from (select handdim.pk_group, handdim.pk_org, handdim.cwarehouseid, handdim.cmaterialvid, ");
|
||||||
|
sql.append("handdim.cmaterialoid, handdim.castunitid, handdim.clocationid, handdim.pk_batchcode, ");
|
||||||
|
sql.append("handdim.vbatchcode, handdim.vchangerate, handdim.cvmivenderid, handdim.ctplcustomerid, ");
|
||||||
|
sql.append("handdim.cstateid, handdim.cvendorid, handdim.cprojectid, handdim.casscustid, ");
|
||||||
|
sql.append("handdim.cproductorid, handdim.cffileid, handdim.vfree1, handdim.vfree2, handdim.vfree3, ");
|
||||||
|
sql.append("handdim.vfree4, handdim.vfree5, handdim.vfree6, handdim.vfree7, handdim.vfree8, ");
|
||||||
|
sql.append("handdim.vfree9, handdim.vfree10, ic_onhandnum.nonhandnum, ic_onhandnum.nonhandastnum, ");
|
||||||
|
sql.append("ic_onhandnum.ngrossnum, ic_onhandnum.nnum1, ic_onhandnum.nastnum1, ic_onhandnum.ngrossnum1, ");
|
||||||
|
sql.append("ic_onhandnum.nnum2, ic_onhandnum.nastnum2, ic_onhandnum.ngrossnum2, ic_onhandnum.nlocknum, ");
|
||||||
|
sql.append("ic_onhandnum.nlockastnum, ic_onhandnum.nlockgrossnum, ic_onhandnum.nrsnum, ");
|
||||||
|
sql.append("ic_onhandnum.nrsastnum, ic_onhandnum.nrsgrossnum ");
|
||||||
|
|
||||||
|
sql.append("from ic_onhandnum ic_onhandnum ");
|
||||||
|
sql.append("INNER JOIN ic_onhanddim handdim ON (ic_onhandnum.pk_onhanddim = handdim.pk_onhanddim) ");
|
||||||
|
sql.append("LEFT outer JOIN scm_batchcode scm_batchcode ON (handdim.pk_batchcode = scm_batchcode.pk_batchcode) ");
|
||||||
|
sql.append("INNER JOIN bd_stordoc bd_stordoc ON (handdim.cwarehouseid = bd_stordoc.pk_stordoc) ");
|
||||||
|
|
||||||
|
sql.append("where 1 = 1 AND ic_onhandnum.dr = 0 ");
|
||||||
|
|
||||||
|
// 动态添加查询条件
|
||||||
|
sql.append("AND handdim.pk_group = '").append("0001A110000000000677").append("' ");
|
||||||
|
|
||||||
|
// 组织条件(必输)- 处理可能是数组的情况
|
||||||
|
String pk_org = getStringValue(paramMap.get("pk_org"));
|
||||||
|
if (pk_org != null && !pk_org.trim().isEmpty()) {
|
||||||
|
sql.append("AND handdim.pk_org = '").append(pk_org).append("' ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 仓库条件
|
||||||
|
String cwarehouseid = getStringValue(paramMap.get("cwarehouseid"));
|
||||||
|
if (cwarehouseid != null && !cwarehouseid.trim().isEmpty()) {
|
||||||
|
sql.append("AND handdim.cwarehouseid = '").append(cwarehouseid).append("' ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批次条件
|
||||||
|
String vbatchcode = getStringValue(paramMap.get("vbatchcode"));
|
||||||
|
if (vbatchcode != null && !vbatchcode.trim().isEmpty()) {
|
||||||
|
sql.append("AND handdim.vbatchcode = '").append(vbatchcode).append("' ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 物料条件
|
||||||
|
String cmaterialoid = getStringValue(paramMap.get("cmaterialoid"));
|
||||||
|
if (cmaterialoid != null && !cmaterialoid.trim().isEmpty()) {
|
||||||
|
sql.append("AND handdim.cmaterialoid = '").append(cmaterialoid).append("' ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目条件
|
||||||
|
String cprojectid = getStringValue(paramMap.get("cprojectid"));
|
||||||
|
if (cprojectid != null && !cprojectid.trim().isEmpty()) {
|
||||||
|
sql.append("AND handdim.cprojectid = '").append(cprojectid).append("' ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 供应商条件
|
||||||
|
String cvendorid = getStringValue(paramMap.get("cvendorid"));
|
||||||
|
if (cvendorid != null && !cvendorid.trim().isEmpty()) {
|
||||||
|
sql.append("AND handdim.cvendorid = '").append(cvendorid).append("' ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生产厂商条件
|
||||||
|
String cproductorid = getStringValue(paramMap.get("cproductorid"));
|
||||||
|
if (cproductorid != null && !cproductorid.trim().isEmpty()) {
|
||||||
|
sql.append("AND handdim.cproductorid = '").append(cproductorid).append("' ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 客户条件
|
||||||
|
String casscustid = getStringValue(paramMap.get("casscustid"));
|
||||||
|
if (casscustid != null && !casscustid.trim().isEmpty()) {
|
||||||
|
sql.append("AND handdim.casscustid = '").append(casscustid).append("' ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 仓库相关条件
|
||||||
|
sql.append("AND bd_stordoc.gubflag = 'N' ");
|
||||||
|
// 不差虚拟仓
|
||||||
|
sql.append("AND (bd_stordoc.def1 = '~' or bd_stordoc.def1 = 'Y' or bd_stordoc.def1 IS NULL) ");
|
||||||
|
sql.append("AND (nvl(ic_onhandnum.nonhandnum, 0) <> 0 OR nvl(ic_onhandnum.nonhandastnum, 0) <> 0 OR ");
|
||||||
|
sql.append("nvl(ic_onhandnum.ngrossnum, 0) <> 0 OR nvl(ic_onhandnum.nnum1, 0) <> 0 OR ");
|
||||||
|
sql.append("nvl(ic_onhandnum.nastnum1, 0) <> 0 OR nvl(ic_onhandnum.ngrossnum1, 0) <> 0 OR ");
|
||||||
|
sql.append("nvl(ic_onhandnum.nnum2, 0) <> 0 OR nvl(ic_onhandnum.nastnum2, 0) <> 0 OR ");
|
||||||
|
sql.append("nvl(ic_onhandnum.ngrossnum2, 0) <> 0 OR nvl(ic_onhandnum.nlocknum, 0) <> 0 OR ");
|
||||||
|
sql.append("nvl(ic_onhandnum.nlockastnum, 0) <> 0 OR nvl(ic_onhandnum.nlockgrossnum, 0) <> 0 OR ");
|
||||||
|
sql.append("nvl(ic_onhandnum.nrsnum, 0) <> 0 OR nvl(ic_onhandnum.nrsastnum, 0) <> 0 OR ");
|
||||||
|
sql.append("nvl(ic_onhandnum.nrsgrossnum, 0) <> 0)) hand) onhand ");
|
||||||
|
|
||||||
|
sql.append("LEFT outer JOIN bd_material_v meta ON onhand.cmaterialoid = meta.pk_source ");
|
||||||
|
sql.append("LEFT outer JOIN org_stockorg meta_1 ON onhand.pk_org = meta_1.pk_stockorg ");
|
||||||
|
sql.append("LEFT outer JOIN bd_material meta_2 ON onhand.cmaterialvid = meta_2.pk_material ");
|
||||||
|
|
||||||
|
sql.append("where 1 = 1 ");
|
||||||
|
// 如果有组织条件,添加到最终查询条件中
|
||||||
|
if (pk_org != null && !pk_org.trim().isEmpty()) {
|
||||||
|
sql.append("AND onhand.pk_org = '").append(pk_org).append("' ");
|
||||||
|
}
|
||||||
|
|
||||||
|
sql.append("GROUP BY onhand.pk_org, onhand.cmaterialoid, meta.pk_material, meta.pk_measdoc, ");
|
||||||
|
sql.append("onhand.cwarehouseid, onhand.vbatchcode, onhand.cvendorid, onhand.cprojectid, ");
|
||||||
|
sql.append("onhand.casscustid, onhand.cproductorid, onhand.vfree1, onhand.vfree2, onhand.vfree3, ");
|
||||||
|
sql.append("onhand.vfree4, onhand.vfree5, onhand.vfree6, onhand.vfree7, onhand.vfree8, ");
|
||||||
|
sql.append("onhand.vfree9, onhand.vfree10");
|
||||||
|
|
||||||
|
return sql.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取字符串值,处理可能的数组情况
|
||||||
|
*
|
||||||
|
* @param value 参数值,可能是字符串或数组
|
||||||
|
* @return 字符串值,如果是数组则取第一个元素
|
||||||
|
*/
|
||||||
|
private String getStringValue(Object value) {
|
||||||
|
if (value == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value instanceof String) {
|
||||||
|
return (String) value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value instanceof String[]) {
|
||||||
|
String[] arr = (String[]) value;
|
||||||
|
return arr.length > 0 ? arr[0] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value instanceof List) {
|
||||||
|
List<?> list = (List<?>) value;
|
||||||
|
return list.size() > 0 && list.get(0) != null ? list.get(0).toString() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return value.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue