1.添加采购单据实体类,修改预警消息生成逻辑

master
x_z 2 years ago
parent fcd89137c6
commit 17798d6057

@ -19,4 +19,12 @@ public interface InvRemindMsgDao extends BaseMapper<InvRemindMsgEntity> {
* @return
*/
List<InvRemindMsgResponse> filterList(FilterInvRemindMsgRequest filterInvRemindMsgRequest);
/**
*
*
* @param invRemindMsgRequest
* @return
*/
InvRemindMsgEntity selectRemindMsg(FilterInvRemindMsgRequest invRemindMsgRequest);
}

@ -0,0 +1,7 @@
package com.glxp.api.dao.purchase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.purchase.PurOrderEntity;
public interface PurOrderDao extends BaseMapper<PurOrderEntity> {
}

@ -0,0 +1,7 @@
package com.glxp.api.dao.purchase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.purchase.PurOrderDetailEntity;
public interface PurOrderDetailDao extends BaseMapper<PurOrderDetailEntity> {
}

@ -66,7 +66,7 @@ public class InvProductEntity {
* ID
*/
@TableField(value = "customerId")
private String customerId;
private String customerId;
/**
* ID
@ -86,6 +86,12 @@ public class InvProductEntity {
@TableField(value = "invCode")
private String invCode;
/**
*
*/
@TableField(value = "invSpaceCode")
private String invSpaceCode;
/**
*
*/

@ -0,0 +1,64 @@
package com.glxp.api.entity.purchase;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName(value = "pur_order_detail")
public class PurOrderDetailEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
*
*/
@TableField(value = "orderIdFk")
private String orderIdFk;
/**
* ID
*/
@TableField(value = "productId")
private Integer productId;
/**
*
*/
@TableField(value = "productName")
private String productName;
/**
*
*/
@TableField(value = "`count`")
private Integer count;
/**
* ID
*/
@TableField(value = "supId")
private String supId;
/**
*
*/
@TableField(value = "zczbhhzbapzbh")
private String zczbhhzbapzbh;
public static final String COL_ID = "id";
public static final String COL_ORDERIDFK = "orderIdFk";
public static final String COL_PRODUCTID = "productId";
public static final String COL_PRODUCTNAME = "productName";
public static final String COL_COUNT = "count";
public static final String COL_SUPID = "supId";
public static final String COL_ZCZBHHZBAPZBH = "zczbhhzbapzbh";
}

@ -0,0 +1,169 @@
package com.glxp.api.entity.purchase;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import lombok.Data;
@Data
@TableName(value = "pur_order")
public class PurOrderEntity {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
*
*/
@TableField(value = "billNo")
private String billNo;
/**
*
*/
@TableField(value = "billDate")
private Date billDate;
/**
* 1.稿2.3.
*/
@TableField(value = "`status`")
private Byte status;
/**
*
*/
@TableField(value = "billType")
private String billType;
/**
*
*/
@TableField(value = "remark")
private String remark;
/**
*
*/
@TableField(value = "invCode")
private String invCode;
/**
*
*/
@TableField(value = "deptCode")
private String deptCode;
/**
*
*/
@TableField(value = "`createUser`")
private String createUser;
/**
*
*/
@TableField(value = "createTime")
private Date createTime;
/**
*
*/
@TableField(value = "auditUser")
private String auditUser;
/**
*
*/
@TableField(value = "auditTime")
private Date auditTime;
/**
*
*/
@TableField(value = "auditRemark")
private String auditRemark;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
/**
*
*/
@TableField(value = "updateUser")
private String updateUser;
/**
*
*/
@TableField(value = "applyCreateUser")
private String applyCreateUser;
/**
*
*/
@TableField(value = "applyAuditUser")
private String applyAuditUser;
/**
*
*/
@TableField(value = "applyRemark")
private String applyRemark;
/**
*
*/
@TableField(value = "applyBillNo")
private String applyBillNo;
/**
*
*/
@TableField(value = "stockOrderNo")
private String stockOrderNo;
public static final String COL_ID = "id";
public static final String COL_BILLNO = "billNo";
public static final String COL_BILLDATE = "billDate";
public static final String COL_STATUS = "status";
public static final String COL_BILLTYPE = "billType";
public static final String COL_REMARK = "remark";
public static final String COL_INVCODE = "invCode";
public static final String COL_DEPTCODE = "deptCode";
public static final String COL_CREATEUSER = "createUser";
public static final String COL_CREATETIME = "createTime";
public static final String COL_AUDITUSER = "auditUser";
public static final String COL_AUDITTIME = "auditTime";
public static final String COL_AUDITREMARK = "auditRemark";
public static final String COL_UPDATETIME = "updateTime";
public static final String COL_UPDATEUSER = "updateUser";
public static final String COL_APPLYCREATEUSER = "applyCreateUser";
public static final String COL_APPLYAUDITUSER = "applyAuditUser";
public static final String COL_APPLYREMARK = "applyRemark";
public static final String COL_APPLYBILLNO = "applyBillNo";
public static final String COL_STOCKORDERNO = "stockOrderNo";
}

@ -19,6 +19,11 @@ public class FilterInvRemindMsgRequest extends ListPageRequest {
*/
private String batchNo;
/**
*
*/
private String deptCode;
/**
*
*/

@ -69,10 +69,36 @@ 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());
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() && msgEntity.getReCount() < invRemindSetEntity.getLowStockNum()) {
msgEntity.setStatus(1); //重置成为未确认消息
msgEntity.setIgnoreStatus(0); //消息忽略状态修改为不忽略
msgEntity.setUpdateTime(new Date());
msgEntity.setNextRemindTime(new Date());
}
}
InvRemindMsgEntity invRemindMsgEntity = invRemindMsgDao.selectOne(wrapper);
if (null == invRemindMsgEntity) {
invRemindMsgEntity = new InvRemindMsgEntity();
@ -112,4 +138,40 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService {
}
}
/**
*
*
* @param invRemindMsgRequest
* @param invProductEntity
* @return
*/
private InvRemindMsgEntity getInvRemindMsgEntity(FilterInvRemindMsgRequest invRemindMsgRequest, InvProductEntity invProductEntity) {
InvRemindMsgEntity msgEntity = invRemindMsgDao.selectRemindMsg(invRemindMsgRequest);
if (null == msgEntity) {
//数据库不存在对应的预警消息,生成新的预警消息
msgEntity = new InvRemindMsgEntity();
msgEntity.setRelId(invProductEntity.getRelIdFk().toString()); //耗材字典产品ID
msgEntity.setBatchNo(invProductEntity.getBatchNo()); //批次号
msgEntity.setDeptCode(invProductEntity.getDeptCode()); //部门编码
msgEntity.setInvCode(invProductEntity.getInvCode()); //仓库编码
msgEntity.setInvSpaceCode(invProductEntity.getInvSpaceCode()); //货位号
msgEntity.setStatus(1); //消息状态:未确认
msgEntity.setIgnoreStatus(0); //消息忽略状态:不忽略
msgEntity.setType(Integer.valueOf(invRemindMsgRequest.getType())); //预警类型
Date date = new Date();
msgEntity.setCreateTime(date);
msgEntity.setUpdateTime(date);
msgEntity.setNextRemindTime(date);
}
//更新预警消息的产品日期,数量等信息
msgEntity.setProductionDate(invProductEntity.getProductionDate());
msgEntity.setExpireDate(invProductEntity.getExpireDate());
msgEntity.setInCount(invProductEntity.getInCount());
msgEntity.setOutCount(invProductEntity.getOutCount());
msgEntity.setReCount(invProductEntity.getReCount());
return msgEntity;
}
}

@ -44,4 +44,28 @@
</where>
order by irm.updateTime desc
</select>
<select id="selectRemindMsg" resultType="com.glxp.api.entity.inv.InvRemindMsgEntity">
select * from inv_remind_msg
<where>
<if test="relId != null and relId != ''">
AND relId = #{relId}
</if>
<if test="deptCode != null and deptCode != ''">
AND deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
<if test="type != null and type != ''">
AND type = #{type}
</if>
</where>
</select>
</mapper>

@ -237,29 +237,31 @@
</where>
</select>
<select id="selectInvProductInfo" resultType="java.util.List">
select relIdFk,
deptCode,
invCode,
invSpaceCode,
batchNo,
productionDate,
expireDate,
sum(inCount),
sum(outCount),
sum(reCount)
from inv_product
<select id="selectInvProductInfo" resultType="com.glxp.api.entity.inv.InvProductEntity">
select ip.relIdFk,
ip.deptCode,
ip.invCode,
ipd.invSpaceCode,
ip.batchNo,
ip.productionDate,
ip.expireDate,
sum(ip.inCount),
sum(ip.outCount),
sum(ip.reCount)
from inv_product ip
left join inv_product_detail ipd
on ip.relIdFk = ipd.relId and ifnull(ip.batchNo, 'empty') = ifnull(ipd.batchNo, 'empty')
<where>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
AND ip.invCode = #{invCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode}
AND ipd.invSpaceCode = #{invSpaceCode}
</if>
<if test="relId != null and relId != ''">
AND relIdFk = #{relId}
AND ip.relIdFk = #{relId}
</if>
</where>
group by relIdFk, batchNo, invCode, invSpaceCode
group by ip.relIdFk, ip.batchNo, ip.invCode, ipd.invSpaceCode
</select>
</mapper>

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.purchase.PurOrderDao">
<resultMap id="BaseResultMap" type="com.glxp.api.entity.purchase.PurOrderEntity">
<!--@mbg.generated-->
<!--@Table pur_order-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="billNo" jdbcType="VARCHAR" property="billNo" />
<result column="billDate" jdbcType="TIMESTAMP" property="billDate" />
<result column="status" jdbcType="TINYINT" property="status" />
<result column="billType" jdbcType="VARCHAR" property="billType" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="invCode" jdbcType="VARCHAR" property="invCode" />
<result column="deptCode" jdbcType="VARCHAR" property="deptCode" />
<result column="createUser" jdbcType="VARCHAR" property="createUser" />
<result column="createTime" jdbcType="TIMESTAMP" property="createTime" />
<result column="auditUser" jdbcType="VARCHAR" property="auditUser" />
<result column="auditTime" jdbcType="TIMESTAMP" property="auditTime" />
<result column="auditRemark" jdbcType="VARCHAR" property="auditRemark" />
<result column="updateTime" jdbcType="TIMESTAMP" property="updateTime" />
<result column="updateUser" jdbcType="VARCHAR" property="updateUser" />
<result column="applyCreateUser" jdbcType="VARCHAR" property="applyCreateUser" />
<result column="applyAuditUser" jdbcType="VARCHAR" property="applyAuditUser" />
<result column="applyRemark" jdbcType="VARCHAR" property="applyRemark" />
<result column="applyBillNo" jdbcType="VARCHAR" property="applyBillNo" />
<result column="stockOrderNo" jdbcType="VARCHAR" property="stockOrderNo" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, billNo, billDate, `status`, billType, remark, invCode, deptCode, `createUser`,
createTime, auditUser, auditTime, auditRemark, updateTime, updateUser, applyCreateUser,
applyAuditUser, applyRemark, applyBillNo, stockOrderNo
</sql>
</mapper>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.purchase.PurOrderDetailDao">
<resultMap id="BaseResultMap" type="com.glxp.api.entity.purchase.PurOrderDetailEntity">
<!--@mbg.generated-->
<!--@Table pur_order_detail-->
<id column="id" jdbcType="INTEGER" property="id" />
<result column="orderIdFk" jdbcType="VARCHAR" property="orderIdFk" />
<result column="productId" jdbcType="INTEGER" property="productId" />
<result column="productName" jdbcType="VARCHAR" property="productName" />
<result column="count" jdbcType="INTEGER" property="count" />
<result column="supId" jdbcType="VARCHAR" property="supId" />
<result column="zczbhhzbapzbh" jdbcType="VARCHAR" property="zczbhhzbapzbh" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, orderIdFk, productId, productName, `count`, supId, zczbhhzbapzbh
</sql>
</mapper>
Loading…
Cancel
Save