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

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语句后面的结合的更多相关文章

  1. java中的sql语句中如果有like怎么写

    我先是在SQL server中写了如下语句: 这样是顺利执行的,可是我把这句话复制到Java代码中打出来却报错了, 刚开始我还以为是前端没有传回来值,待我一句一句打印发现,它提示我rs没有next.到 ...

  2. java中写sql语句的小小细节

    来源于:http://www.cnblogs.com/reine98/p/6180472.html 看如下一条sql语句 1 2 3 4 5 6 String sql="SELECT * F ...

  3. Java 实现对Sql语句解析

    原文地址:http://www.cnblogs.com/zcftech/archive/2013/06/10/3131286.html 最近要实现一个简易的数据库系统,除了要考虑如何高效的存储和访问数 ...

  4. java/jsp执行sql语句的方式

    首先给出sql驱动包 引入sql包 import java.sql.*;//java <%@ page import="java.sql.*"%>//jsp 连接mys ...

  5. java动态拼接sql语句并且执行时给sql语句的参数赋值

    问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 ...

  6. mysql 遍历所有的库并根据表和sql语句备份

    建库.用户语句 create database test_hb; create user ' test_hb'@'%' identified by '123456'; grant all privil ...

  7. JAVA程序中SQL语句无法传递中文参数

    vi /etc/my.cnf [mysqld]# The default character set that will be used when a new schema or table is# ...

  8. 查看SQL语句的真实执行计划

    DBMS_XPLAN包中display_cursor函数不同于display函数,display_cursor用于显示SQL语句的真实的执行计划,在大多数情况下,显示真实的执行计划有助于更好的分析SQ ...

  9. SQL语句备份和还原数据库

    1,使用SQL最简单备份,还原数据库 1 /* 备份 */ 2 backup database Test to disk='D:/Test.bak' 3 /* 还原 */ 4 restore data ...

随机推荐

  1. 5.如何调节ubuntu的分辨率

    http://jingyan.baidu.com/article/0964eca2351ed58285f5361d.html

  2. SQL Server 2008数据库手动提交的设置

    有时候我们需要对SQL Server 2008数据库手动提交的方法进行设置,使用Oracle的朋友会注意到Oracle中的手工提交的,如果修改错了数据还可以Rollback.但在SQL Server ...

  3. phpstudy2016 redis扩展 windows

    第一步,查看环境的信息. 第二步,根据线程是否安全.架构32位或64位下载redis扩展. http://pecl.php.net/package-stats.php 第三步,php_redis.dl ...

  4. 压力测试工具MySQL mysqlslap

    MySQL mysqlslap压测 2016-09-12 17:49 by pursuer.chen, 771 阅读, 0 评论, 收藏, 编辑 介绍 mysqlslap是mysql自带的一个性能压测 ...

  5. 转载SQL_trace 和10046使用

    SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法.本文就SQL_TRACE的使用作简单探讨,并 ...

  6. 读取Android设备的MAC地址

    读取Android设备的MAC地址   AndroidUtil.java package com.csdn.android.util; import com.csdn.android.framewor ...

  7. C#中获取时间差

    /// <summary> /// 已重载.计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. /// </summary> /// <param name=&q ...

  8. 32. Longest Valid Parentheses(最长括号匹配,hard)

      Given a string containing just the characters '(' and ')', find the length of the longest valid (w ...

  9. git 常用的撤销操作

    git 开发时的使用流程,从同事那里学习的, 第一步,先建立一个新的分支,可以在GITLAB或通过命令git checkout -b newbranch 或通过IDE插件 第二步,让项目切换到该分支, ...

  10. yum安装memchache

    转载地址:http://www.cnblogs.com/jiunadianshi/articles/2001334.html 标准的CentOS5软件仓库里面是没有memcache相应的包的,所以,我 ...