feat(api): 修改物料分类查询接口并优化仓库查询功能
- 修改物料分类查询接口,可以传入code和name数组 - 优化存储文档查询功能 StordocManageResource - 更新 .gitignore 文件,忽略 .project 文件 - 修复物料管理中空条件查询导致的 SQL 错误
This commit is contained in:
parent
40aa6dbe93
commit
756afff77e
|
@ -2,6 +2,7 @@
|
||||||
/out/
|
/out/
|
||||||
/.idea/
|
/.idea/
|
||||||
/taikai2312.iml
|
/taikai2312.iml
|
||||||
.project
|
|
||||||
.classpath
|
.classpath
|
||||||
.settings
|
.settings
|
||||||
|
# 忽略任意目录下的 .project
|
||||||
|
**/.project
|
|
@ -0,0 +1,68 @@
|
||||||
|
package nccloud.api.uapbd.material.materialclass;
|
||||||
|
|
||||||
|
|
||||||
|
import nc.bs.framework.common.NCLocator;
|
||||||
|
import nc.itf.bd.material.marbasclass.IMaterialBasClassQueryService;
|
||||||
|
import nc.vo.bd.material.marbasclass.MarBasClassVO;
|
||||||
|
import nccloud.api.rest.utils.ApiResourceParamUtils;
|
||||||
|
import nccloud.api.rest.utils.IJsonForAPI;
|
||||||
|
import nccloud.api.rest.utils.JsonFactoryForAPI;
|
||||||
|
import nccloud.api.rest.utils.ResultMessageUtil;
|
||||||
|
import nccloud.api.rest.utils.vo.ApiDataVO;
|
||||||
|
import nccloud.api.rest.utils.vo.ApiQueryParam;
|
||||||
|
import nccloud.api.rest.utils.vo.PageInfo;
|
||||||
|
import nccloud.ws.rest.resource.AbstractNCCRestResource;
|
||||||
|
import org.json.JSONString;
|
||||||
|
|
||||||
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Path("/uapbd/materialclass")
|
||||||
|
public class MaterialClassQueryResources extends AbstractNCCRestResource {
|
||||||
|
|
||||||
|
public String getModule() {
|
||||||
|
return "uapbd";
|
||||||
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("query")
|
||||||
|
@Consumes({"application/json"})
|
||||||
|
@Produces({"application/json"})
|
||||||
|
public JSONString query(JSONString json) {
|
||||||
|
IJsonForAPI iJsonForAPI = JsonFactoryForAPI.create();
|
||||||
|
ApiQueryParam apiQueryParam = (ApiQueryParam) iJsonForAPI.fromJson(json.toJSONString(), ApiQueryParam.class);
|
||||||
|
String sender = apiQueryParam.getUfinterface().getSender();
|
||||||
|
ApiDataVO apiDataVO = apiQueryParam.getUfinterface().getData();
|
||||||
|
PageInfo pageInfo = apiQueryParam.getUfinterface().getPageInfo();
|
||||||
|
Map<String, Object> param = apiDataVO.getParamdata();
|
||||||
|
if (param.containsKey("name") && param.get("name") != null) {
|
||||||
|
List<String> names = (List<String>) param.get("name");
|
||||||
|
if (!names.isEmpty()) {
|
||||||
|
param.put("name", names.toArray(new String[0]));
|
||||||
|
} else {
|
||||||
|
param.remove("name");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (param.containsKey("code") && param.get("code") != null) {
|
||||||
|
List<String> codes = (List<String>) param.get("code");
|
||||||
|
if (!codes.isEmpty()) {
|
||||||
|
param.put("code", codes.toArray(new String[0]));
|
||||||
|
} else {
|
||||||
|
param.remove("code");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
String querycondition = (new ApiResourceParamUtils()).parseParmToSqlByCode(new MarBasClassVO(), param);
|
||||||
|
MarBasClassVO[] vos = NCLocator.getInstance().lookup(IMaterialBasClassQueryService.class).queryMaterialClassByCondition(null, querycondition);
|
||||||
|
return vos != null && vos.length > 0 ? ResultMessageUtil.toJSON(vos) : null;
|
||||||
|
} catch (Exception ex) {
|
||||||
|
return ResultMessageUtil.exceptionToJSON(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,28 +1,22 @@
|
||||||
package nccloud.api.uapbd.materialmanage.material;
|
package nccloud.api.uapbd.materialmanage.material;
|
||||||
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import javax.ws.rs.Consumes;
|
|
||||||
import javax.ws.rs.POST;
|
|
||||||
import javax.ws.rs.Path;
|
|
||||||
import javax.ws.rs.Produces;
|
|
||||||
import nc.bs.dao.BaseDAO;
|
import nc.bs.dao.BaseDAO;
|
||||||
import nc.ws.opm.pub.utils.result.APIErrCodeEnum;
|
|
||||||
import nc.bs.dao.DAOException;
|
import nc.bs.dao.DAOException;
|
||||||
import nc.bs.framework.common.NCLocator;
|
import nc.bs.framework.common.NCLocator;
|
||||||
import nc.bs.framework.core.util.ObjectCreator;
|
import nc.bs.framework.core.util.ObjectCreator;
|
||||||
import nc.impl.pubapp.pattern.database.SqlBuilderUtil;
|
import nc.impl.pubapp.pattern.database.SqlBuilderUtil;
|
||||||
import nc.itf.bd.material.assign.IMaterialAssignService;
|
import nc.itf.bd.material.assign.IMaterialAssignService;
|
||||||
import nc.jdbc.framework.processor.ColumnListProcessor;
|
import nc.jdbc.framework.processor.ColumnListProcessor;
|
||||||
|
import nc.jdbc.framework.processor.MapListProcessor;
|
||||||
import nc.vo.bd.material.MaterialVO;
|
import nc.vo.bd.material.MaterialVO;
|
||||||
import nc.vo.bd.material.prod.MaterialProdVO;
|
import nc.vo.bd.material.prod.MaterialProdVO;
|
||||||
import nc.vo.bd.material.sale.MaterialSaleVO;
|
import nc.vo.bd.material.sale.MaterialSaleVO;
|
||||||
import nc.vo.bd.material.stock.MaterialStockVO;
|
import nc.vo.bd.material.stock.MaterialStockVO;
|
||||||
|
import nc.ws.opm.pub.utils.result.APIErrCodeEnum;
|
||||||
import nccloud.api.baseapp.exchange.convert.IOpenApiJsonConvertToExChangeXmlService;
|
import nccloud.api.baseapp.exchange.convert.IOpenApiJsonConvertToExChangeXmlService;
|
||||||
import nccloud.api.baseapp.exchange.convert.OpenApiConvertDataObject;
|
import nccloud.api.baseapp.exchange.convert.OpenApiConvertDataObject;
|
||||||
import nccloud.api.baseapp.exchange.convert.OpenApiConvertDataResult;
|
import nccloud.api.baseapp.exchange.convert.OpenApiConvertDataResult;
|
||||||
|
@ -32,10 +26,18 @@ import nccloud.api.rest.utils.OpenApiPageInfo;
|
||||||
import nccloud.api.rest.utils.ResultMessageUtil;
|
import nccloud.api.rest.utils.ResultMessageUtil;
|
||||||
import nccloud.api.uapbd.common.utils.OpenApiPagenationUtils;
|
import nccloud.api.uapbd.common.utils.OpenApiPagenationUtils;
|
||||||
import nccloud.commons.lang.StringUtils;
|
import nccloud.commons.lang.StringUtils;
|
||||||
import nc.jdbc.framework.processor.MapListProcessor;
|
|
||||||
import nccloud.ws.rest.resource.AbstractNCCRestResource;
|
import nccloud.ws.rest.resource.AbstractNCCRestResource;
|
||||||
import org.json.JSONString;
|
import org.json.JSONString;
|
||||||
|
|
||||||
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ÎïÁϽӿÚÊÊÅä2312
|
* ÎïÁϽӿÚÊÊÅä2312
|
||||||
*/
|
*/
|
||||||
|
@ -171,6 +173,10 @@ public class MaterialManageMaterial extends AbstractNCCRestResource {
|
||||||
ApiResourceParamUtils.addTranslatorMap("pk_org", IParamTranslator);
|
ApiResourceParamUtils.addTranslatorMap("pk_org", IParamTranslator);
|
||||||
String condition = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param);
|
String condition = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param);
|
||||||
|
|
||||||
|
if (condition.isBlank()) {
|
||||||
|
condition = "1=1";// 没有条件就拼接个1=1,防止sql报错
|
||||||
|
}
|
||||||
|
|
||||||
String sql = "select pk_material from bd_material where " + condition;
|
String sql = "select pk_material from bd_material where " + condition;
|
||||||
List<String> allPks = (List) (new BaseDAO()).executeQuery(sql, new ColumnListProcessor());
|
List<String> allPks = (List) (new BaseDAO()).executeQuery(sql, new ColumnListProcessor());
|
||||||
OpenApiPageInfo openApiPageInfo = new OpenApiPageInfo();
|
OpenApiPageInfo openApiPageInfo = new OpenApiPageInfo();
|
||||||
|
|
|
@ -5,9 +5,8 @@ import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import nc.bs.dao.BaseDAO;
|
import nc.bs.dao.BaseDAO;
|
||||||
import nc.impl.pubapp.pattern.database.SqlBuilderUtil;
|
|
||||||
import nc.jdbc.framework.processor.ColumnListProcessor;
|
import nc.jdbc.framework.processor.ColumnListProcessor;
|
||||||
import nc.vo.bd.stordoc.StordocVO;
|
import nc.jdbc.framework.processor.MapListProcessor;
|
||||||
import nccloud.api.rest.utils.OpenApiPageInfo;
|
import nccloud.api.rest.utils.OpenApiPageInfo;
|
||||||
import nccloud.api.rest.utils.ResultMessageUtil;
|
import nccloud.api.rest.utils.ResultMessageUtil;
|
||||||
import nccloud.api.uapbd.common.utils.OpenApiPagenationUtils;
|
import nccloud.api.uapbd.common.utils.OpenApiPagenationUtils;
|
||||||
|
@ -219,7 +218,6 @@ public class StordocManageResource extends AbstractNCCRestResource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 使用自定义方法替代工具类
|
|
||||||
String condition = buildCondition(paramMap);
|
String condition = buildCondition(paramMap);
|
||||||
if (StringUtils.isNotBlank(condition)) {
|
if (StringUtils.isNotBlank(condition)) {
|
||||||
condition = "dr = 0 and " + condition;
|
condition = "dr = 0 and " + condition;
|
||||||
|
@ -233,16 +231,71 @@ public class StordocManageResource extends AbstractNCCRestResource {
|
||||||
String[] currPks = OpenApiPagenationUtils.getCurrentPagePksAndPageInfo(allPks, pageInfoJson, openApiPageInfo);
|
String[] currPks = OpenApiPagenationUtils.getCurrentPagePksAndPageInfo(allPks, pageInfoJson, openApiPageInfo);
|
||||||
|
|
||||||
if (currPks == null || currPks.length == 0) {
|
if (currPks == null || currPks.length == 0) {
|
||||||
return ResultMessageUtil.toJSONByPage(new StordocVO[0], openApiPageInfo, false);
|
return ResultMessageUtil.toJSONByPage(new JSONObject[0], openApiPageInfo, false);
|
||||||
|
}
|
||||||
|
StringJoiner stringJoiner = new StringJoiner(",");
|
||||||
|
for (String pk : currPks) {
|
||||||
|
stringJoiner.add("'" + pk + "'");
|
||||||
|
}
|
||||||
|
String pks = stringJoiner.toString();
|
||||||
|
|
||||||
|
String mainSql = "SELECT sd.*, " +
|
||||||
|
"so.code AS org_code, so.name AS org_name, " +
|
||||||
|
"og.code AS group_code, og.name AS group_name, " +
|
||||||
|
"ad.code AS address_code, ad.name AS address_name, " +
|
||||||
|
"ba.code AS storaddr_code " +
|
||||||
|
"FROM bd_stordoc sd " +
|
||||||
|
"LEFT JOIN org_stockorg so ON sd.pk_org = so.pk_stockorg " +
|
||||||
|
"LEFT JOIN org_group og ON sd.pk_group = og.pk_group " +
|
||||||
|
"LEFT JOIN bd_addressdoc ad ON sd.pk_address = ad.pk_addressdoc " +
|
||||||
|
"LEFT JOIN bd_address ba ON sd.storaddr = ba.pk_address " +
|
||||||
|
"WHERE sd.pk_stordoc IN (" + pks + ")";
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
List<Map<String, Object>> rows = (List<Map<String, Object>>) BASE_DAO.executeQuery(mainSql, new MapListProcessor());
|
||||||
|
|
||||||
|
List<JSONObject> resultList = new ArrayList<>();
|
||||||
|
for (Map<String, Object> row : rows) {
|
||||||
|
JSONObject stordocJson = new JSONObject(true); // ʹÓÃÓÐÐòMap
|
||||||
|
|
||||||
|
for (Map.Entry<String, Object> entry : row.entrySet()) {
|
||||||
|
String key = entry.getKey().toLowerCase();
|
||||||
|
if ("org_code".equals(key) || "org_name".equals(key) ||
|
||||||
|
"group_code".equals(key) || "group_name".equals(key) ||
|
||||||
|
"address_code".equals(key) || "address_name".equals(key) ||
|
||||||
|
"storaddr_code".equals(key)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
stordocJson.put(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject pkOrgDetailsJson = new JSONObject(true);
|
||||||
|
pkOrgDetailsJson.put("pk_org", row.get("pk_org"));
|
||||||
|
pkOrgDetailsJson.put("code", row.get("org_code"));
|
||||||
|
pkOrgDetailsJson.put("name", row.get("org_name"));
|
||||||
|
stordocJson.put("pk_org", pkOrgDetailsJson);
|
||||||
|
|
||||||
|
JSONObject pkGroupDetailsJson = new JSONObject(true);
|
||||||
|
pkGroupDetailsJson.put("pk_group", row.get("pk_group"));
|
||||||
|
pkGroupDetailsJson.put("code", row.get("group_code"));
|
||||||
|
pkGroupDetailsJson.put("name", row.get("group_name"));
|
||||||
|
stordocJson.put("pk_group", pkGroupDetailsJson);
|
||||||
|
|
||||||
|
JSONObject pkAddressDetailsJson = new JSONObject(true);
|
||||||
|
pkAddressDetailsJson.put("pk_address", row.get("pk_address"));
|
||||||
|
pkAddressDetailsJson.put("code", row.get("address_code"));
|
||||||
|
pkAddressDetailsJson.put("name", row.get("address_name"));
|
||||||
|
stordocJson.put("pk_address", pkAddressDetailsJson);
|
||||||
|
|
||||||
|
JSONObject storaddrDetailsJson = new JSONObject(true);
|
||||||
|
storaddrDetailsJson.put("pk_address", row.get("storaddr"));
|
||||||
|
storaddrDetailsJson.put("code", row.get("storaddr_code"));
|
||||||
|
stordocJson.put("storaddr", storaddrDetailsJson);
|
||||||
|
|
||||||
|
resultList.add(stordocJson);
|
||||||
}
|
}
|
||||||
|
|
||||||
SqlBuilderUtil sqlBuilderUtil = new SqlBuilderUtil();
|
return ResultMessageUtil.toJSONByPage(resultList.toArray(new JSONObject[0]), openApiPageInfo, false);
|
||||||
String wherePartForRetrieve = sqlBuilderUtil.buildSQL("pk_stordoc", currPks, null);
|
|
||||||
|
|
||||||
StordocVO[] vos = (StordocVO[]) BASE_DAO.retrieveByClause(StordocVO.class, wherePartForRetrieve)
|
|
||||||
.toArray(new StordocVO[0]);
|
|
||||||
|
|
||||||
return ResultMessageUtil.toJSONByPage(vos, openApiPageInfo, false);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return ResultMessageUtil.exceptionToJSON(e);
|
return ResultMessageUtil.exceptionToJSON(e);
|
||||||
|
|
Loading…
Reference in New Issue