1、需求

2、service层
public OverviewAResp overview(String depotCode) {
if (ObjectUtils.isEmpty(depotInfoService.getDepotInfoByCode(depotCode.trim()))){
throw new BizException(BizErrorCode.NO_DATA,"仓库编码不存在");
}
OverviewAResp redisData = (OverviewAResp) redisService.get(REDIS_KEY_FOR + depotCode.trim());
if (ObjectUtils.isNotEmpty(redisData)) {
return redisData;
}
OverviewAResp data = overviewDataDeal(depotCode);
redisService.add(REDIS_KEY_FOR + depotCode.trim(),data, null);
return overviewDataDeal(depotCode);
}
public OverviewAResp overviewDataDeal(String depotCode) {
OverviewAResp overviewAResp = new OverviewAResp();
overviewAResp.setReceiptInfoDtoList(orderReceiptService.getReceiptInfoDto(depotCode));
overviewAResp.setOutboundInfoDtoList(orderShipmentService.getOutboundInfoDto(depotCode));
return overviewAResp;
}
public void refreshOverviewPageDataAllDepotInfo() {
List<DepotInfo> depotInfoList = depotInfoService.getAllDepotInfo();
SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_TIME_PATTERN);
if (depotInfoList != null && depotInfoList.size() > 0) {
for (DepotInfo depotInfo : depotInfoList) {
OverviewAResp data = overviewDataDeal(depotInfo.getDepotCode());
redisService.add(REDIS_KEY_FOR + depotInfo.getDepotCode(),data, null);
}
log.info("执行时间:" + df.format(new Date()) + ",此次更新数据的仓库有:" + depotInfoList.toString());
} else {
log.error("执行时间:" + df.format(new Date()) + "未获取到仓库信息");
}
}
3、sql
SELECT
a.dt,
b.addNum,
c.cancelNUm
FROM
( SELECT DATE_SUB( CURRENT_DATE, INTERVAL help_topic_id DAY ) dt FROM mysql.help_topic WHERE help_topic_id BETWEEN 0 AND 6 ) a
LEFT JOIN (
SELECT
DATE_FORMAT(create_time,'%Y-%m-%d') AS dt,
count( * ) AS addNum
FROM
order_receipt
WHERE
create_time > DATE_SUB( curdate( ), INTERVAL 8 DAY )
AND mark > 0
AND order_state NOT IN ( "11" )
AND depot_code = "HMD-051-00"
GROUP BY
TO_DAYS( create_time )
) b ON a.dt = b.dt
LEFT JOIN (
SELECT
DATE_FORMAT(create_time,'%Y-%m-%d') AS dt,
count( * ) AS cancelNUm
FROM
order_receipt
WHERE
create_time > DATE_SUB( curdate( ), INTERVAL 8 DAY )
AND mark > 0
AND order_state = "11"
AND depot_code = "HMD-051-00"
GROUP BY
TO_DAYS( create_time )
) c ON c.dt = a.dt
ORDER BY a.dt