1.完善库存预警消息提醒,添加测试环境配置文件

master
x_z 2 years ago
parent deefec3fa6
commit f0f4b215c0

@ -40,6 +40,7 @@ public class InvRemindMsgController {
*
*
* @param id
* @param handleMsg
* @return
*/
@GetMapping("/udiwms/inv/remind/msg/confirmMsg")
@ -47,4 +48,17 @@ public class InvRemindMsgController {
return invRemindMsgService.confirmMsg(id, handleMsg);
}
/**
*
*
* @param id ID
* @param ignoreStatus
* @return
*/
@GetMapping("/udiwms/inv/remind/msg/ignoreMsg")
public BaseResponse ignoreMsg(Integer id, Integer ignoreStatus) {
return invRemindMsgService.ignoreMsg(id, ignoreStatus);
}
}

@ -34,4 +34,13 @@ public interface InvRemindMsgService {
* @param invRemindSetEntity
*/
void createRemindMsg(InvRemindSetEntity invRemindSetEntity);
/**
*
*
* @param id ID
* @param ignoreStatus 017215330
* @return
*/
BaseResponse ignoreMsg(Integer id, Integer ignoreStatus);
}

@ -3,7 +3,6 @@ package com.glxp.api.service.inv.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
@ -16,6 +15,7 @@ import com.glxp.api.entity.inv.InvRemindSetEntity;
import com.glxp.api.req.inv.FilterInvRemindMsgRequest;
import com.glxp.api.res.inv.InvRemindMsgResponse;
import com.glxp.api.service.inv.InvRemindMsgService;
import com.glxp.api.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -70,13 +70,6 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService {
List<InvProductEntity> invDataList = new CopyOnWriteArrayList<>(invProductList);
invDataList.parallelStream().forEach(invProductEntity -> {
//根据预警设置,查询对应的预警消息
QueryWrapper<InvRemindMsgEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StrUtil.isNotBlank(invRemindSetEntity.getRelId()), "relId", invRemindSetEntity.getRelId())
.eq("invCode", invRemindSetEntity.getInvCode())
.eq(StrUtil.isNotBlank(invRemindSetEntity.getInvSpaceCode()), "invSpaceCode", invRemindSetEntity.getInvSpaceCode());
//初始化查询预警消息参数
FilterInvRemindMsgRequest invRemindMsgRequest = new FilterInvRemindMsgRequest();
invRemindMsgRequest.setRelId(invProductEntity.getRelIdFk().toString());
@ -88,7 +81,7 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService {
//根据预警设置,添加类型参数
if (invRemindSetEntity.getLowStock()) {
//开启低库存预警
invRemindMsgRequest.setType("1"); //库存不足类型
invRemindMsgRequest.setType("1"); //库存不足预警
InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity);
//判断是否需要生成/刷新库存预警
if (msgEntity.getNextRemindTime().getTime() >= new Date().getTime() && invProductEntity.getReCount() < invRemindSetEntity.getLowStockNum()) {
@ -100,7 +93,7 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService {
if (invRemindSetEntity.getLackStock()) {
//开启负库存预警
invRemindMsgRequest.setType("2");//负库存类型
invRemindMsgRequest.setType("2");//库存负数预警
InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity);
//判断是否需要生成/刷新库存预警
if (msgEntity.getNextRemindTime().getTime() >= new Date().getTime() && invProductEntity.getReCount() < 0) {
@ -112,20 +105,72 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService {
if (invRemindSetEntity.getOverStock()) {
//开启库存积压预警
invRemindMsgRequest.setType("3"); //库存积压类型
invRemindMsgRequest.setType("3"); //库存积压预警
InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity);
//判断是否需要生成/刷新库存预警
if (msgEntity.getNextRemindTime().getTime() > new Date().getTime() && invProductEntity.getReCount() > invRemindSetEntity.getOverStockNum()) {
//设置预警消息
msgEntity.setMsg(StrUtil.format("库存积压,当前库存数量:{}", invProductEntity.getReCount()));
saveMsg(msgEntity);
}
}
if (invRemindSetEntity.getExpireDate()) {
//开启产品过期预警
invRemindMsgRequest.setType("4"); //库存过期预警
InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity);
//判断是否需要生成/刷新库存预警
if (msgEntity.getNextRemindTime().getTime() > new Date().getTime() && StrUtil.isNotBlank(invProductEntity.getExpireDate()) && DateUtil.compareExpire(invProductEntity.getExpireDate(), null)) {
//设置预警消息
msgEntity.setMsg(StrUtil.format("产品已过期,产品失效日期:{}", invProductEntity.getExpireDate()));
saveMsg(msgEntity);
}
}
if (invRemindSetEntity.getRecentDate()) {
//开启库存近效期预警
invRemindMsgRequest.setType("5"); //库存近效期预警
InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity);
//判断是否需要生成/刷新库存预警
if (msgEntity.getNextRemindTime().getTime() > new Date().getTime() && StrUtil.isNotBlank(invProductEntity.getExpireDate())) {
//计算产品记录失效的天数
long recentDay = Long.parseLong(DateUtil.getDate("yyMMdd")) - Long.parseLong(invProductEntity.getExpireDate());
if (invRemindSetEntity.getRecentDateDay() > recentDay) {
//设置预警消息
msgEntity.setMsg(StrUtil.format("库存即将过期,产品失效日期:{}", invProductEntity.getExpireDate()));
saveMsg(msgEntity);
}
}
}
});
} else {
log.info("此仓库或产品库存信息不存在");
}
}
@Override
public BaseResponse ignoreMsg(Integer id, Integer ignoreStatus) {
InvRemindMsgEntity msgEntity = invRemindMsgDao.selectById(id);
//根据忽略状态,更新忽略时间
Date updateTime = msgEntity.getUpdateTime();
switch (ignoreStatus) {
case 1: //忽略7天
msgEntity.setNextRemindTime(DateUtil.getBeforeDay(updateTime, 7 * 24));
break;
case 2: //忽略15天
msgEntity.setNextRemindTime(DateUtil.getBeforeDay(updateTime, 15 * 24));
break;
case 3: //忽略30天
msgEntity.setNextRemindTime(DateUtil.getBeforeDay(updateTime, 30 * 24));
break;
default:
break;
}
msgEntity.setIgnoreStatus(ignoreStatus);
invRemindMsgDao.updateById(msgEntity);
return ResultVOUtils.success("已忽略提醒");
}
/**
*
*

@ -1,7 +1,10 @@
package com.glxp.api.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.thread.ThreadUtil;
import com.glxp.api.dao.inv.InvRemindSetDao;
import com.glxp.api.dao.schedule.ScheduledDao;
import com.glxp.api.entity.inv.InvRemindSetEntity;
import com.glxp.api.entity.system.ScheduledEntity;
import com.glxp.api.req.system.ScheduledRequest;
import com.glxp.api.service.inv.InvRemindMsgService;
@ -12,6 +15,7 @@ import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
@Slf4j
@Component
@ -40,7 +44,7 @@ public class InvRemindMsgTask implements SchedulingConfigurer {
}
private void process() {
/*log.info("开始扫描库存信息,生成库存预警消息");
log.info("开始扫描库存信息,生成库存预警消息");
List<InvRemindSetEntity> invRemindSetEntities = invRemindSetDao.selectList(null);
if (CollUtil.isNotEmpty(invRemindSetEntities)) {
log.info("库存预警设置条数:{}", invRemindSetEntities.size());
@ -50,6 +54,6 @@ public class InvRemindMsgTask implements SchedulingConfigurer {
}
} else {
log.info("无库存预警设置,结束库存扫描");
}*/
}
}
}

@ -604,4 +604,21 @@ public class DateUtil extends DateUtils {
log.error("日期类型转字符串异常,日期数据为空");
return null;
}
/**
*
*
* @param expireDate yyMMdd
* @param time , yyMMdd
* @return
*/
public static boolean compareExpire(String expireDate, String time) {
if (StrUtil.isBlank(time)) {
time = DateUtil.getDate("yyMMdd");
}
long t1 = Long.parseLong(expireDate);
long t2 = Long.parseLong(time);
return t2 > t1;
}
}

@ -0,0 +1,50 @@
server:
port: 9991
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://192.168.0.66:3364/udi_wms_wmd?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: Glxp@6066
hikari:
connection-timeout: 60000
maximum-pool-size: 60
minimum-idle: 10
redis:
database: 8
host: 192.168.0.66
port: 6400
# password: 123456
timeout: 300
jedis:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
ok:
http:
connect-timeout: 3000
read-timeout: 3000
write-timeout: 3000
max-idle-connections: 200
keep-alive-duration: 300
logging:
level:
com.glxp.api.dao: debug
file_path: /usr/local/develop/udi/udiwms/udiwmsfile/
UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df
UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test
SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs
Loading…
Cancel
Save