价格库查询API

This commit is contained in:
zzs01@yunemao.com 2024-08-27 11:35:45 +08:00
parent f0288c563b
commit f3e95505a5

View File

@ -9,13 +9,13 @@ import com.yem.em.utils.SubRelationUtils;
import com.yem.or.utils.OrderUtils;
import com.yem.rf.utils.RFUtils;
import com.yem.wm.utils.DynamicObjectUtil;
import com.yem.wm.utils.RptUtil;
import com.yem.wm.utils.YEM;
import com.yem.wm.utils.groupfunc.GroupTopOneFunction;
import kd.bos.algo.DataSet;
import kd.bos.algo.Row;
import kd.bos.algo.sql.tree.OrderBy;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.entity.OrmLocaleValue;
import kd.bos.openapi.common.custom.annotation.ApiController;
import kd.bos.openapi.common.custom.annotation.ApiParam;
import kd.bos.openapi.common.custom.annotation.ApiPostMapping;
@ -538,8 +538,8 @@ public class AssepcDynamic {
@ApiPostMapping("/assepcdynamic/colorlibrary")
public CustomApiResult<Object> colorlibrary(@NotNull @ApiParam("产品类型") String modnumber,
@NotNull @ApiParam("物料编码") String material,
@NotNull @ApiParam("页码") int page,
@NotNull @ApiParam("每一页个数") int number) {
@ApiParam("页码") int page,
@ApiParam("每一页个数") int number) {
material = material.trim();
JSONArray jsonArray = new JSONArray();
QFilter qFilter = new QFilter("yem_productclass.number", QCP.equals, modnumber + "PJ");
@ -701,4 +701,73 @@ public class AssepcDynamic {
rowMap.put("rows", rows);
return CustomApiResult.success(rowMap);
}
@ApiPostMapping("/assepcdynamic/page/pricelib")
public CustomApiResult<Object> queryPriceLibPage(@ApiParam("产品机型") String type, @ApiParam("每页个数") int pageSize, @ApiParam("页码") int pageNum) {
String algoKey = this.getClass().getName();
HashMap<Object, Object> resMap = Maps.newHashMap();
QFilter qFilter = RFUtils.getBaseQFilter();
qFilter.and("yem_productclass.number", QCP.equals, type + "PJ");
ArrayList<String> selectfields = Lists.newArrayList();
selectfields.add("id");
selectfields.add("yem_bizdate");
selectfields.add("yem_bd_products.id products_id");
selectfields.add("yem_accessory entry_id");
selectfields.add("yem_accessory.yem_material.id yem_material_id");
selectfields.add("yem_accessory.yem_material.number yem_material_number");
selectfields.add("yem_accessory.yem_material.name yem_material_name");
selectfields.add("yem_accessory.yem_materialename yem_material_ename");
selectfields.add("yem_accessory.yem_material.modelnum yem_material_modelnum");
selectfields.add("yem_accessory.yem_standsalesprice price");
DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_pricelibrary", String.join(",", selectfields), qFilter.toArray());
DataSet origin = dataSet.copy();
dataSet = dataSet.orderBy(new String[]{"yem_bizdate DESC"})
.groupBy(new String[]{"yem_material_id"})
.agg(new GroupTopOneFunction(), "entry_id", "entry_id")
.finish();
dataSet = dataSet.select("entry_id ordered_entry_id");
dataSet = dataSet.leftJoin(origin)
.on("ordered_entry_id", "entry_id")
.select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(origin))
.finish();
dataSet = dataSet.orderBy(new String[]{"yem_bizdate DESC"});
ArrayList<Object> rows = Lists.newArrayList();
DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet.copy());
resMap.put("total", collection.size());
dataSet.close();
if (pageSize > collection.size()) {
pageSize = collection.size();
}
for (DynamicObject dynamicObject : collection) {
HashMap<String, Object> map = Maps.newHashMap();
map.put("yem_bizdate", dynamicObject.get("yem_bizdate"));
map.put("yem_material_id", dynamicObject.get("yem_material_id"));
map.put("yem_material_number", dynamicObject.get("yem_material_number"));
map.put("yem_material_name", dynamicObject.get("yem_material_name"));
map.put("yem_material_ename", dynamicObject.get("yem_material_ename"));
map.put("yem_material_modelnum", dynamicObject.get("yem_material_modelnum"));
map.put("price", dynamicObject.get("price"));
rows.add(map);
}
resMap.put("rows", getPageData(rows, pageSize, pageNum));
int totalPage = (int) Math.ceil((double) rows.size() / pageSize);
if (pageNum > totalPage) {
pageNum = totalPage;
}
resMap.put("pageSize", pageSize);
resMap.put("pageNum", pageNum);
resMap.put("isLastPage", pageNum == totalPage);
return CustomApiResult.success(resMap);
}
public static List<Object> getPageData(List<Object> rows, int pageSize, int pageNum) {
int startIndex = (pageNum - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, rows.size());
return rows.subList(startIndex, endIndex);
}
}