From 90dd44579f44bcd346b50d22c7a2dcd447736d02 Mon Sep 17 00:00:00 2001 From: x_z Date: Fri, 10 Mar 2023 14:46:28 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=B0=83=E6=95=B4=E5=BA=93=E5=AD=98=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E5=8A=9F=E8=83=BD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/api/dao/basic/UdiRelevanceDao.java | 10 +- .../api/entity/inv/InvRemindMsgEntity.java | 6 + .../api/entity/inv/InvRemindSetEntity.java | 58 ------- .../req/inv/FilterInvRemindMsgRequest.java | 5 + .../api/res/inv/InvRemindMsgResponse.java | 20 +++ .../api/res/inv/InvRemindSetResponse.java | 5 + .../inv/impl/InvRemindMsgServiceImpl.java | 143 ++++++++++-------- .../mybatis/mapper/basic/UdiRelevanceDao.xml | 6 + .../mybatis/mapper/inv/InvRemindMsgDao.xml | 18 ++- .../mybatis/mapper/inv/InvRemindSetDao.xml | 1 + .../mybatis/mapper/inv/invProductDao.xml | 2 +- 11 files changed, 152 insertions(+), 122 deletions(-) diff --git a/src/main/java/com/glxp/api/dao/basic/UdiRelevanceDao.java b/src/main/java/com/glxp/api/dao/basic/UdiRelevanceDao.java index 0f82d34f3..189217a9c 100644 --- a/src/main/java/com/glxp/api/dao/basic/UdiRelevanceDao.java +++ b/src/main/java/com/glxp/api/dao/basic/UdiRelevanceDao.java @@ -1,9 +1,7 @@ package com.glxp.api.dao.basic; import com.glxp.api.dao.BaseMapperPlus; -import com.glxp.api.dao.inout.IoCodeDao; import com.glxp.api.entity.basic.UdiRelevanceEntity; -import com.glxp.api.entity.inout.IoCodeEntity; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; import org.apache.ibatis.annotations.Mapper; @@ -86,5 +84,13 @@ public interface UdiRelevanceDao extends BaseMapperPlus list); } diff --git a/src/main/java/com/glxp/api/entity/inv/InvRemindMsgEntity.java b/src/main/java/com/glxp/api/entity/inv/InvRemindMsgEntity.java index 4d9280fc6..8ac570389 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvRemindMsgEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvRemindMsgEntity.java @@ -42,6 +42,12 @@ public class InvRemindMsgEntity { @TableField(value = "expireDate") private String expireDate; + /** + * 供应商ID + */ + @TableField(value = "supId") + private String supId; + /** * 部门 */ diff --git a/src/main/java/com/glxp/api/entity/inv/InvRemindSetEntity.java b/src/main/java/com/glxp/api/entity/inv/InvRemindSetEntity.java index 2d8a164a1..cb58f944c 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvRemindSetEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvRemindSetEntity.java @@ -48,12 +48,6 @@ public class InvRemindSetEntity { @TableField(value = "lowStock") private Boolean lowStock; - /** - * 库存低于多少数量时预警 - */ - @TableField(value = "lowStockNum") - private Integer lowStockNum; - /** * 是否开启库存负数预警 */ @@ -66,12 +60,6 @@ public class InvRemindSetEntity { @TableField(value = "overStock") private Boolean overStock; - /** - * 库存高于多少数量时预警 - */ - @TableField(value = "overStockNum") - private Integer overStockNum; - /** * 是否开启库存产品过期提醒 */ @@ -84,12 +72,6 @@ public class InvRemindSetEntity { @TableField(value = "recentDate") private Boolean recentDate; - /** - * 近效期达到多少天时提醒 - */ - @TableField(value = "recentDateDay") - private Integer recentDateDay; - /** * 备注 */ @@ -108,43 +90,6 @@ public class InvRemindSetEntity { @TableField(value = "updateTime") private Date updateTime; - public static final String COL_ID = "id"; - - public static final String COL_RELID = "relId"; - - public static final String COL_DEPTCODE = "deptCode"; - - public static final String COL_INVCODE = "invCode"; - - public static final String COL_INVSPACECODE = "invSpaceCode"; - - public static final String COL_LOWSTOCK = "lowStock"; - - public static final String COL_LOWSTOCKNUM = "lowStockNum"; - - public static final String COL_LACKSTOCK = "lackStock"; - - public static final String COL_OVERSTOCK = "overStock"; - - public static final String COL_OVERSTOCKNUM = "overStockNum"; - - public static final String COL_EXPIREDATE = "expireDate"; - - public static final String COL_RECENTDATE = "recentDate"; - - public static final String COL_RECENTDATEDAY = "recentDateDay"; - - public static final String COL_REMARK = "remark"; - - public static final String COL_CREATEUSER = "createUser"; - - public static final String COL_CREATETIME = "createTime"; - - public static final String COL_UPDATEUSER = "updateUser"; - - public static final String COL_UPDATETIME = "updateTime"; - - @Override public String toString() { return "InvRemindSetEntity{" + @@ -153,13 +98,10 @@ public class InvRemindSetEntity { ", 仓库编码:='" + invCode + '\'' + ", 货位编码:='" + invSpaceCode + '\'' + ", 是否开启低库存预警:=" + lowStock + - ", 库存低于多少数量时预警:=" + lowStockNum + ", 是否开启库存负数预警:=" + lackStock + ", 是否开启库存积压预警:=" + overStock + - ", 库存高于多少数量时预警:=" + overStockNum + ", 是否开启库存产品过期提醒:=" + expireDate + ", 是否开启近效期提醒:=" + recentDate + - ", 近效期达到多少天时提醒:=" + recentDateDay + ", 备注:='" + remark + '\'' + '}'; } diff --git a/src/main/java/com/glxp/api/req/inv/FilterInvRemindMsgRequest.java b/src/main/java/com/glxp/api/req/inv/FilterInvRemindMsgRequest.java index 6738ef6ed..9da2dec10 100644 --- a/src/main/java/com/glxp/api/req/inv/FilterInvRemindMsgRequest.java +++ b/src/main/java/com/glxp/api/req/inv/FilterInvRemindMsgRequest.java @@ -54,4 +54,9 @@ public class FilterInvRemindMsgRequest extends ListPageRequest { */ private Integer ignoreStatus; + /** + * 供应商ID + */ + private String supId; + } diff --git a/src/main/java/com/glxp/api/res/inv/InvRemindMsgResponse.java b/src/main/java/com/glxp/api/res/inv/InvRemindMsgResponse.java index e3785c3ec..8107656f8 100644 --- a/src/main/java/com/glxp/api/res/inv/InvRemindMsgResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvRemindMsgResponse.java @@ -112,4 +112,24 @@ public class InvRemindMsgResponse { */ private Integer ignoreStatus; + /** + * 规格型号 + */ + private String ggxh; + + /** + * 供应商名称 + */ + private String supName; + + /** + * 生产厂家 + */ + private String manufactory; + + /** + * 批注文号 + */ + private String zczbhhzbapzbh; + } diff --git a/src/main/java/com/glxp/api/res/inv/InvRemindSetResponse.java b/src/main/java/com/glxp/api/res/inv/InvRemindSetResponse.java index 252a6b834..e2b7ab384 100644 --- a/src/main/java/com/glxp/api/res/inv/InvRemindSetResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvRemindSetResponse.java @@ -90,4 +90,9 @@ public class InvRemindSetResponse { */ private String invSpaceName; + /** + * 规格型号 + */ + private String ggxh; + } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvRemindMsgServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvRemindMsgServiceImpl.java index 16d64b281..2ecc10596 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvRemindMsgServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvRemindMsgServiceImpl.java @@ -1,14 +1,17 @@ package com.glxp.api.service.inv.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.github.pagehelper.PageHelper; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.dao.inv.InvProductDao; import com.glxp.api.dao.inv.InvRemindMsgDao; +import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.inv.InvProductEntity; import com.glxp.api.entity.inv.InvRemindMsgEntity; import com.glxp.api.entity.inv.InvRemindSetEntity; @@ -35,6 +38,8 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService { private InvRemindMsgDao invRemindMsgDao; @Resource private InvProductDao invProductDao; + @Resource + private UdiRelevanceDao udiRelevanceDao; @Override public List filterList(FilterInvRemindMsgRequest filterInvRemindMsgRequest) { @@ -70,77 +75,94 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService { List invDataList = new CopyOnWriteArrayList<>(invProductList); invDataList.parallelStream().forEach(invProductEntity -> { - //初始化查询预警消息参数 - FilterInvRemindMsgRequest invRemindMsgRequest = new FilterInvRemindMsgRequest(); - invRemindMsgRequest.setRelId(invProductEntity.getRelIdFk().toString()); - invRemindMsgRequest.setBatchNo(invProductEntity.getBatchNo()); - invRemindMsgRequest.setDeptCode(invProductEntity.getDeptCode()); - invRemindMsgRequest.setInvCode(invProductEntity.getInvCode()); - invRemindMsgRequest.setInvSpaceCode(invProductEntity.getInvSpaceCode()); - - //根据预警设置,添加类型参数 - if (invRemindSetEntity.getLowStock()) { - //开启低库存预警 - invRemindMsgRequest.setType("1"); //库存不足预警 - InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity); - //判断是否需要生成/刷新库存预警 - if (msgEntity.getNextRemindTime().getTime() >= new Date().getTime() && invProductEntity.getReCount() < invRemindSetEntity.getLowStockNum()) { - //设置预警消息 - msgEntity.setMsg(StrUtil.format("库存数量已不足:{},当前库存数量:{} ", invRemindSetEntity.getLowStockNum(), invProductEntity.getReCount())); - saveMsg(msgEntity); + //查询产品在耗材字典中设置的预警参数 + UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectRemindParams(invProductEntity.getRelIdFk()); + if (null == udiRelevanceEntity) { + log.info("此库存产品在耗材字典中不存在,无法生成库存数量及近效期相关预警信息"); + } else { + //初始化查询预警消息参数 + FilterInvRemindMsgRequest invRemindMsgRequest = new FilterInvRemindMsgRequest(); + invRemindMsgRequest.setRelId(invProductEntity.getRelIdFk().toString()); + invRemindMsgRequest.setBatchNo(invProductEntity.getBatchNo()); + invRemindMsgRequest.setDeptCode(invProductEntity.getDeptCode()); + invRemindMsgRequest.setInvCode(invProductEntity.getInvCode()); + invRemindMsgRequest.setInvSpaceCode(invProductEntity.getInvSpaceCode()); + + //根据预警设置,添加类型参数 + if (invRemindSetEntity.getLowStock() && null != udiRelevanceEntity.getLowStockNum()) { + //开启低库存预警 + invRemindMsgRequest.setType("1"); //库存不足预警 + InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity); + //判断是否需要生成/刷新库存预警 + if ((null == msgEntity.getNextRemindTime() || msgEntity.getNextRemindTime().getTime() <= new Date().getTime()) && udiRelevanceEntity.getLowStockNum() > invProductEntity.getReCount()) { + //设置预警消息 + msgEntity.setMsg(StrUtil.format("库存数量已不足:{},当前库存数量:{} ", udiRelevanceEntity.getLowStockNum(), invProductEntity.getReCount())); + saveMsg(msgEntity); + } + } else { + String logInfo = invRemindSetEntity.getLowStock() ? "产品 " + invProductEntity.getRelIdFk() + " 未设置低库存预警数量" : "产品 " + invProductEntity.getRelIdFk() + " 未开启低库存预警"; + log.info(logInfo); } - } - if (invRemindSetEntity.getLackStock()) { - //开启负库存预警 - invRemindMsgRequest.setType("2");//库存负数预警 - InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity); - //判断是否需要生成/刷新库存预警 - if (msgEntity.getNextRemindTime().getTime() >= new Date().getTime() && invProductEntity.getReCount() < 0) { - //设置预警消息 - msgEntity.setMsg(StrUtil.format("库存数量为负,当前库存数量:{}", invProductEntity.getReCount())); - saveMsg(msgEntity); - } - } - if (invRemindSetEntity.getOverStock()) { - //开启库存积压预警 - 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.getLackStock()) { + //开启负库存预警 + invRemindMsgRequest.setType("2");//库存负数预警 + InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity); + //判断是否需要生成/刷新库存预警 + if ((null == msgEntity.getNextRemindTime() || msgEntity.getNextRemindTime().getTime() <= new Date().getTime()) && invProductEntity.getReCount() < 0) { + //设置预警消息 + 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.getOverStock() && null != udiRelevanceEntity.getOverStockNum()) { + //开启库存积压预警 + invRemindMsgRequest.setType("3"); //库存积压预警 + InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity); + //判断是否需要生成/刷新库存预警 + if ((null == msgEntity.getNextRemindTime() || msgEntity.getNextRemindTime().getTime() <= new Date().getTime()) && invProductEntity.getReCount() > udiRelevanceEntity.getOverStockNum()) { + //设置预警消息 + msgEntity.setMsg(StrUtil.format("库存积压,当前库存数量:{}", invProductEntity.getReCount())); + saveMsg(msgEntity); + } + } else { + String logInfo = invRemindSetEntity.getOverStock() ? "产品 " + invProductEntity.getRelIdFk() + " 未设置库存积压预警数量" : "产品 " + invProductEntity.getRelIdFk() + " 未开启库存积压预警"; + log.info(logInfo); } - } - 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) { + if (invRemindSetEntity.getExpireDate()) { + //开启产品过期预警 + invRemindMsgRequest.setType("4"); //库存过期预警 + InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity); + //判断是否需要生成/刷新库存预警 + if ((null == msgEntity.getNextRemindTime() || msgEntity.getNextRemindTime().getTime() <= new Date().getTime()) && StrUtil.isNotBlank(invProductEntity.getExpireDate()) && DateUtil.compareExpire(invProductEntity.getExpireDate(), null)) { //设置预警消息 - msgEntity.setMsg(StrUtil.format("库存即将过期,产品失效日期:{}", invProductEntity.getExpireDate())); + msgEntity.setMsg(StrUtil.format("产品已过期,产品失效日期:{}", invProductEntity.getExpireDate())); saveMsg(msgEntity); } } + + if (invRemindSetEntity.getRecentDate() && null != udiRelevanceEntity.getRecentDateTime()) { + //开启库存近效期预警 + invRemindMsgRequest.setType("5"); //库存近效期预警 + InvRemindMsgEntity msgEntity = getInvRemindMsgEntity(invRemindMsgRequest, invProductEntity); + //判断是否需要生成/刷新库存预警 + if ((null == msgEntity.getNextRemindTime() || msgEntity.getNextRemindTime().getTime() <= new Date().getTime()) && StrUtil.isNotBlank(invProductEntity.getExpireDate())) { + //当前时间 - 近效期预警时间 > 产品失效日期,则进行预警 + DateTime dateTime = cn.hutool.core.date.DateUtil.offsetHour(new Date(), udiRelevanceEntity.getRecentDateTime()); + + if (Long.parseLong(dateTime.toString("yyMMdd")) > Long.parseLong(invProductEntity.getExpireDate())) { + //设置预警消息 + msgEntity.setMsg(StrUtil.format("库存即将过期,产品失效日期:{}", invProductEntity.getExpireDate())); + saveMsg(msgEntity); + } + } + } else { + String logInfo = invRemindSetEntity.getRecentDate() ? "产品 " + invProductEntity.getRelIdFk() + " 未设置近效期预警时间" : "产品 " + invProductEntity.getRelIdFk() + " 未开启近效期预警"; + log.info(logInfo); + } } }); } else { @@ -206,6 +228,7 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService { msgEntity = new InvRemindMsgEntity(); msgEntity.setRelId(invProductEntity.getRelIdFk().toString()); //耗材字典产品ID msgEntity.setBatchNo(invProductEntity.getBatchNo()); //批次号 + msgEntity.setSupId(invProductEntity.getSupId()); //供应商ID msgEntity.setDeptCode(invProductEntity.getDeptCode()); //部门编码 msgEntity.setInvCode(invProductEntity.getInvCode()); //仓库编码 msgEntity.setInvSpaceCode(invProductEntity.getInvSpaceCode()); //货位号 diff --git a/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml b/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml index fa162fb3e..3d8134d2e 100644 --- a/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml +++ b/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml @@ -886,4 +886,10 @@ + + diff --git a/src/main/resources/mybatis/mapper/inv/InvRemindMsgDao.xml b/src/main/resources/mybatis/mapper/inv/InvRemindMsgDao.xml index 1a149755b..e7bbbb679 100644 --- a/src/main/resources/mybatis/mapper/inv/InvRemindMsgDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvRemindMsgDao.xml @@ -14,11 +14,18 @@ irm.outCount, irm.reCount, irm.status, + irm.ignoreStatus, irm.type, + irm.msg, + irm.handleMsg, irm.remark, + bp.ggxh, + bp.manufactory, + bp.zczbhhzbapzbh, bp.cpmctymc productName, (select `name` from auth_warehouse where `code` = irm.invCode) invName, - (select `name` from auth_space where `code` = irm.invSpaceCode and invCode = irm.invCode) invSpaceName + (select `name` from auth_space where `code` = irm.invSpaceCode and invCode = irm.invCode) invSpaceName, + (select `name` from basic_corp where erpId = irm.supId) supName from inv_remind_msg irm left join basic_udirel bu on bu.id = irm.relId left join basic_products bp on bp.uuid = bu.uuid @@ -38,6 +45,12 @@ AND irm.status = #{status} + + AND irm.ignoreStatus = #{ignoreStatus} + + + AND bp.ggxh = #{ggxh} + AND type = #{type} @@ -66,6 +79,9 @@ AND type = #{type} + + AND supId = #{supId} + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/inv/InvRemindSetDao.xml b/src/main/resources/mybatis/mapper/inv/InvRemindSetDao.xml index b53724255..b475b38f6 100644 --- a/src/main/resources/mybatis/mapper/inv/InvRemindSetDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvRemindSetDao.xml @@ -17,6 +17,7 @@ irs.recentDateDay, irs.remark, bp.cpmctymc productName, + bp.ggxh, (select `name` from auth_warehouse where `code` = irs.invCode) invName, (select `name` from auth_space where `code` = irs.invSpaceCode and invCode = irs.invCode) invSpaceName from inv_remind_set irs diff --git a/src/main/resources/mybatis/mapper/inv/invProductDao.xml b/src/main/resources/mybatis/mapper/inv/invProductDao.xml index 56e349324..6de8cbab9 100644 --- a/src/main/resources/mybatis/mapper/inv/invProductDao.xml +++ b/src/main/resources/mybatis/mapper/inv/invProductDao.xml @@ -266,7 +266,7 @@