1. 程式人生 > >關於推薦庫位 java前端與SQL語句後面的結合

關於推薦庫位 java前端與SQL語句後面的結合

run sel null chl java request 說明 emp 升序

-----------------------------------------------------------------------------------

select a1.id,a1.name,a1.sort,a1.type,a3.value - (a1.nums/a2.nums)*100 as nums,a3.value,a1.nums,a2.nums,a1.packageNum
from (

select swr.id,swr.name,swr.sort,srscm.area_id as type,count(swl.id) as nums,ifnull(sum(swl.package_num),0) packageNum
from sys_warehouse_roadway swr
join sys_warehouse_location swl on swr.id = swl.roadway_id
and swl.status = 1 and swl.delete_status = 0 and swl.package_num > 0
join sys_recommend_store_code_mapping srscm on srscm.area_id = swr.area_id
where swr.status = 1 AND swr.delete_status = 0 and swr.name=‘A10‘
GROUP BY swr.id,swr.name,swr.sort,srscm.area_id
) a1,
(
select swr.id,swr.name,swr.sort,srscm.area_id as type,count(1) as nums
from sys_warehouse_roadway swr
left join sys_warehouse_location swl on swr.id = swl.roadway_id and swl.status = 1 and swl.delete_status = 0
left join sys_recommend_store_code_mapping srscm on srscm.area_id = swr.area_id
where swr.status = 1 AND swr.delete_status = 0 and swr.name=‘A10‘
GROUP BY swr.id,swr.name,swr.sort,srscm.area_id
) a2,
(
select * from sys_key_value skv where skv.key = ‘RecommandStorePercent‘
) a3
where a1.id = a2.id
-- -------------------------------------------------------------------------------------

select swr.id,swr.name,swr.sort as type,count(swl.id) as nums,ifnull(sum(swl.package_num),0) packageNum
from sys_warehouse_roadway swr
left join sys_warehouse_location swl on swr.id = swl.roadway_id
and swl.status = 1 and swl.delete_status = 0 and swl.package_num > 0


where swr.status = 1 AND swr.delete_status = 0
GROUP BY swr.id,swr.name,swr.sort


select swr.id,swr.name,swr.sort,count(1) as nums,count(swl.id) as nums2
from sys_warehouse_roadway swr
left join sys_warehouse_location swl on swr.id = swl.roadway_id and swl.status = 1 and swl.delete_status = 0
where swr.status = 1 AND swr.delete_status = 0
GROUP BY swr.id,swr.name,swr.sort



-- --巷道是通過(包裹類型 國家等決定選取那個巷道).
-- --說明:1.首先統計巷道下包裹庫存率在80%以下的巷道 (swl.package_num>0 查詢此巷道下的有包裹的庫位(swl.package_num>0)數/ 此巷道下的總庫位數)

---選擇庫位:(在庫位表 根據庫位包裹數的升序 查到最少包裹巷道的庫位)

select swl.id,swl.name from sys_warehouse_location swl

where swl.roadway_id = #{roadWayId} and swl.status = 1

ORDER BY swl.package_num
LIMIT 1

-------------------------------------------------------------------------在JaVA 裏面的寫法


// 過濾巷道是否飽和
List<RoadWayInfoRecommendDTO> baoheList = roadWayInfoList.stream().filter(a -> a.getNums() > 0).collect(Collectors.toList());

//記錄日誌
logDTO.setRequest("a.getNums() > 0,過濾掉已經飽和的巷道");
logDTO.setResponse("過濾已經飽和的巷道" + JSONObject.toJSON(baoheList));
recommendStoreCodeManager.insertRecommendStoreCodeLog(logDTO);

List<RoadWayInfoRecommendDTO> serchList = new ArrayList<>();

if (CollectionUtils.isNotEmpty(baoheList)) {
// 未飽和
ListUtils.sort(baoheList, "nums", true);

ListUtils.sort(baoheList, "sort", true);

serchList = baoheList;
} else {
// 已飽和
ListUtils.sort(roadWayInfoList, "packageNum", true);

serchList = roadWayInfoList;
}

long roadwayId = serchList.get(0).getId();

// 獲取開始時間
startTime = System.currentTimeMillis();

LocationInfoRecommendDTO randomLocationInfo = recommendDAO.getRandomLocation(roadwayId, 0);

// 獲取結束時間
endTime = System.currentTimeMillis();
runTime = (endTime - startTime) + "ms";
logDTO.setRequest("首單根據巷道獲取任意庫位查詢時間");
logDTO.setResponse(runTime);
recommendStoreCodeManager.insertRecommendStoreCodeLog(logDTO);

if (randomLocationInfo == null) {
message = "根據巷道" + roadwayId + "未獲取到任意庫位";
logDTO.setRequest("{\"roadwayId\":\"" + roadwayId + "\"}");
logDTO.setResponse(message);
recommendStoreCodeManager.insertRecommendStoreCodeLog(logDTO);

response.setSucess(false);
response.setMessage(message);
response.setRecommendStoreCode("");
return response;
}

//記錄日誌
logDTO.setRequest("{\"roadwayId\":\"" + roadwayId + "\"}");
logDTO.setResponse("根據巷道,獲取庫位信息" + JSONObject.toJSON(randomLocationInfo));
recommendStoreCodeManager.insertRecommendStoreCodeLog(logDTO);

response.setSucess(true);
response.setRecommendStoreCode(randomLocationInfo.getName());
response.setMessage("");
return response;

-----------------------------------------------------------------

關於推薦庫位 java前端與SQL語句後面的結合