1.同步库存预警设置代码

master
x_z 2 years ago
parent d47ff60dd6
commit 9bab80a61e

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inv.InvRemindSetEntity; import com.glxp.api.entity.inv.InvRemindSetEntity;
import com.glxp.api.req.inv.FilterInvRemindSetRequest; import com.glxp.api.req.inv.FilterInvRemindSetRequest;
import com.glxp.api.res.inv.InvRemindSetResponse; import com.glxp.api.res.inv.InvRemindSetResponse;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -19,4 +20,12 @@ public interface InvRemindSetDao extends BaseMapper<InvRemindSetEntity> {
* @return * @return
*/ */
List<InvRemindSetResponse> filterList(FilterInvRemindSetRequest filterInvRemindSetRequest); List<InvRemindSetResponse> filterList(FilterInvRemindSetRequest filterInvRemindSetRequest);
/**
* ID
*
* @param invId
* @return
*/
InvRemindSetResponse selectInfoByInvId(@Param("invId") Integer invId);
} }

@ -90,6 +90,12 @@ public class InvRemindSetEntity {
@TableField(value = "updateTime") @TableField(value = "updateTime")
private Date updateTime; private Date updateTime;
/**
* 0 1
*/
@TableField(value = "`status`")
private Integer status;
@Override @Override
public String toString() { public String toString() {
return "InvRemindSetEntity{" + return "InvRemindSetEntity{" +

@ -2,6 +2,8 @@ package com.glxp.api.req.inv;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* *
*/ */
@ -65,4 +67,8 @@ public class AddInvRemindSetRequest {
*/ */
private String remark; private String remark;
/**
* ID
*/
private List<String> relIdList;
} }

@ -80,4 +80,28 @@ public class InvRemindSetResponse {
*/ */
private String ggxh; private String ggxh;
/**
*
*/
private Integer lowStockNum;
/**
*
*/
private Integer overStockNum;
/**
*
*/
private Integer recentDateTime;
/**
* 12
*/
private Integer isDateBy;
/**
* 0 1
*/
private Integer status;
} }

@ -45,4 +45,19 @@ public interface InvRemindSetService {
*/ */
BaseResponse deleteInvRemindSet(Integer id); BaseResponse deleteInvRemindSet(Integer id);
/**
* ID
*
* @param invId
* @return
*/
BaseResponse getInfoByInvId(Integer invId);
/**
*
*
* @param addInvRemindSetRequest
* @return
*/
BaseResponse batchAddInvRemindSet(AddInvRemindSetRequest addInvRemindSetRequest);
} }

@ -1,12 +1,16 @@
package com.glxp.api.service.inv.impl; package com.glxp.api.service.inv.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.dao.basic.UdiRelevanceDao;
import com.glxp.api.dao.inv.InvRemindSetDao; import com.glxp.api.dao.inv.InvRemindSetDao;
import com.glxp.api.entity.basic.UdiRelevanceEntity;
import com.glxp.api.entity.inv.InvRemindSetEntity; import com.glxp.api.entity.inv.InvRemindSetEntity;
import com.glxp.api.req.inv.AddInvRemindSetRequest; import com.glxp.api.req.inv.AddInvRemindSetRequest;
import com.glxp.api.req.inv.FilterInvRemindSetRequest; import com.glxp.api.req.inv.FilterInvRemindSetRequest;
@ -14,6 +18,10 @@ import com.glxp.api.res.inv.InvRemindSetResponse;
import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.inv.InvRemindSetService; import com.glxp.api.service.inv.InvRemindSetService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.TransactionIsolationLevel;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -31,6 +39,10 @@ public class InvRemindSetServiceImpl implements InvRemindSetService {
private InvRemindSetDao invRemindSetDao; private InvRemindSetDao invRemindSetDao;
@Resource @Resource
private CustomerService customerService; private CustomerService customerService;
@Resource
private UdiRelevanceDao udiRelevanceDao;
@Resource
private SqlSessionFactory sqlSessionFactory;
@Override @Override
public List<InvRemindSetResponse> filterList(FilterInvRemindSetRequest filterInvRemindSetRequest) { public List<InvRemindSetResponse> filterList(FilterInvRemindSetRequest filterInvRemindSetRequest) {
@ -51,10 +63,31 @@ public class InvRemindSetServiceImpl implements InvRemindSetService {
if (false == addInvRemindSetRequest.getLowStock() && false == addInvRemindSetRequest.getLackStock() && false == addInvRemindSetRequest.getOverStock() && false == addInvRemindSetRequest.getExpireDate() && false == addInvRemindSetRequest.getRecentDate()) { if (false == addInvRemindSetRequest.getLowStock() && false == addInvRemindSetRequest.getLackStock() && false == addInvRemindSetRequest.getOverStock() && false == addInvRemindSetRequest.getExpireDate() && false == addInvRemindSetRequest.getRecentDate()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "预警设置至少开启一项预警!"); return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "预警设置至少开启一项预警!");
} }
InvRemindSetEntity invRemindSetEntity = new InvRemindSetEntity(); //查询此设置项是否已经存在,若已经存在,则直接覆盖,没有则新增
BeanUtil.copyProperties(addInvRemindSetRequest, invRemindSetEntity); InvRemindSetEntity invRemindSetEntity = invRemindSetDao.selectOne(new QueryWrapper<InvRemindSetEntity>()
setUpdateInfo(invRemindSetEntity); .eq("invCode", addInvRemindSetRequest.getInvCode())
invRemindSetDao.insert(invRemindSetEntity); .eq(StrUtil.isNotBlank(addInvRemindSetRequest.getInvSpaceCode()), "invSpaceCode", addInvRemindSetRequest.getInvSpaceCode())
.eq(StrUtil.isNotBlank(addInvRemindSetRequest.getRelId()), "relId", addInvRemindSetRequest.getRelId())
);
if (null == invRemindSetEntity) {
invRemindSetEntity = new InvRemindSetEntity();
BeanUtil.copyProperties(addInvRemindSetRequest, invRemindSetEntity);
verifySetParams(invRemindSetEntity);
setUpdateInfo(invRemindSetEntity);
invRemindSetDao.insert(invRemindSetEntity);
} else {
//设置预警参数设置
invRemindSetEntity.setLackStock(addInvRemindSetRequest.getLackStock());
invRemindSetEntity.setLowStock(addInvRemindSetRequest.getLowStock());
invRemindSetEntity.setOverStock(addInvRemindSetRequest.getOverStock());
invRemindSetEntity.setExpireDate(addInvRemindSetRequest.getExpireDate());
invRemindSetEntity.setRecentDate(addInvRemindSetRequest.getRecentDate());
//校验预警参数是否符合开启条件
verifySetParams(invRemindSetEntity);
setUpdateInfo(invRemindSetEntity);
invRemindSetDao.updateById(invRemindSetEntity);
}
return ResultVOUtils.success("添加成功"); return ResultVOUtils.success("添加成功");
} }
@ -63,6 +96,7 @@ public class InvRemindSetServiceImpl implements InvRemindSetService {
if (false == invRemindSetEntity.getLowStock() && false == invRemindSetEntity.getLackStock() && false == invRemindSetEntity.getOverStock() && false == invRemindSetEntity.getExpireDate() && false == invRemindSetEntity.getRecentDate()) { if (false == invRemindSetEntity.getLowStock() && false == invRemindSetEntity.getLackStock() && false == invRemindSetEntity.getOverStock() && false == invRemindSetEntity.getExpireDate() && false == invRemindSetEntity.getRecentDate()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "预警设置至少开启一项预警!"); return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "预警设置至少开启一项预警!");
} }
verifySetParams(invRemindSetEntity);
setUpdateInfo(invRemindSetEntity); setUpdateInfo(invRemindSetEntity);
invRemindSetDao.updateById(invRemindSetEntity); invRemindSetDao.updateById(invRemindSetEntity);
return ResultVOUtils.success("更新成功"); return ResultVOUtils.success("更新成功");
@ -77,6 +111,72 @@ public class InvRemindSetServiceImpl implements InvRemindSetService {
return ResultVOUtils.success("删除成功"); return ResultVOUtils.success("删除成功");
} }
@Override
public BaseResponse getInfoByInvId(Integer invId) {
InvRemindSetResponse response = invRemindSetDao.selectInfoByInvId(invId);
if (null != response) {
if (response.getIsDateBy() == 1 && null != response.getRecentDateTime()) {
//将近效期预警值由小时换算成天
response.setRecentDateTime(response.getRecentDateTime() / 24);
}
return ResultVOUtils.success(response);
}
return ResultVOUtils.error(500, "未查询到指定的库存产品信息");
}
@Override
public BaseResponse batchAddInvRemindSet(AddInvRemindSetRequest addInvRemindSetRequest) {
if (CollUtil.isNotEmpty(addInvRemindSetRequest.getRelIdList())) {
//生成多条库存预警设置
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, TransactionIsolationLevel.READ_COMMITTED);
addInvRemindSetRequest.getRelIdList().forEach(relId -> {
//查询此产品是否存在预警设置
//查询此设置项是否已经存在,若已经存在,则直接覆盖,没有则新增
InvRemindSetEntity invRemindSetEntity = invRemindSetDao.selectOne(new QueryWrapper<InvRemindSetEntity>()
.eq("invCode", addInvRemindSetRequest.getInvCode())
.eq(StrUtil.isNotBlank(addInvRemindSetRequest.getInvSpaceCode()), "invSpaceCode", addInvRemindSetRequest.getInvSpaceCode())
.eq("relId", relId)
.eq(StrUtil.isNotBlank(addInvRemindSetRequest.getGgxh()), "ggxh", addInvRemindSetRequest.getGgxh())
);
if (null == invRemindSetEntity) {
invRemindSetEntity = new InvRemindSetEntity();
BeanUtil.copyProperties(addInvRemindSetRequest, invRemindSetEntity);
invRemindSetEntity.setRelId(relId);
verifySetParams(invRemindSetEntity);
setUpdateInfo(invRemindSetEntity);
invRemindSetDao.insert(invRemindSetEntity);
} else {
//校验预警参数是否符合开启条件
verifySetParams(invRemindSetEntity);
setUpdateInfo(invRemindSetEntity);
invRemindSetDao.updateById(invRemindSetEntity);
}
});
sqlSession.commit();
sqlSession.close();
} else {
//只选择了仓库货位信息,未选择产品列表,直接添加单条预警设置
//查询有无相同设置,有则更新时间
InvRemindSetEntity invRemindSetEntity = invRemindSetDao.selectOne(new QueryWrapper<InvRemindSetEntity>()
.eq("invCode", addInvRemindSetRequest.getInvCode())
.eq(StrUtil.isNotBlank(addInvRemindSetRequest.getInvSpaceCode()), "invSpaceCode", addInvRemindSetRequest.getInvSpaceCode())
.isNull("relId")
);
if (null == invRemindSetEntity) {
invRemindSetEntity = new InvRemindSetEntity();
BeanUtil.copyProperties(addInvRemindSetRequest, invRemindSetEntity);
invRemindSetEntity.setStatus(1);
setUpdateInfo(invRemindSetEntity);
invRemindSetDao.insert(invRemindSetEntity);
} else {
verifySetParams(invRemindSetEntity);
setUpdateInfo(invRemindSetEntity);
invRemindSetDao.updateById(invRemindSetEntity);
}
}
return ResultVOUtils.success("添加成功");
}
/** /**
* *
* *
@ -93,4 +193,29 @@ public class InvRemindSetServiceImpl implements InvRemindSetService {
invRemindSetEntity.setUpdateTime(date); invRemindSetEntity.setUpdateTime(date);
} }
/**
*
*
* @param invRemindSetEntity
*/
private void verifySetParams(InvRemindSetEntity invRemindSetEntity) {
//判断开启的预警设置,是否有设置对应的参数,若未设置,则修改状态为不启用
if (null != invRemindSetEntity.getRelId()) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectRemindParams(Long.valueOf(invRemindSetEntity.getRelId()));
if (null == udiRelevanceEntity) {
invRemindSetEntity.setStatus(0);
} else {
if (invRemindSetEntity.getLowStock() && null == udiRelevanceEntity.getLowStockNum()) {
invRemindSetEntity.setStatus(0);
} else if (invRemindSetEntity.getOverStock() && null == udiRelevanceEntity.getOverStockNum()) {
invRemindSetEntity.setStatus(0);
} else if (invRemindSetEntity.getRecentDate() && null == udiRelevanceEntity.getRecentDateTime()) {
invRemindSetEntity.setStatus(0);
} else {
invRemindSetEntity.setStatus(1);
}
}
}
}
} }

@ -3,23 +3,23 @@
<mapper namespace="com.glxp.api.dao.inv.InvRemindSetDao"> <mapper namespace="com.glxp.api.dao.inv.InvRemindSetDao">
<select id="filterList" resultType="com.glxp.api.res.inv.InvRemindSetResponse"> <select id="filterList" resultType="com.glxp.api.res.inv.InvRemindSetResponse">
select irs.id, select irs.id,
irs.relId, irs.relId,
irs.deptCode, irs.deptCode,
irs.invCode, irs.invCode,
irs.invSpaceCode, irs.invSpaceCode,
irs.lowStock, irs.lowStock,
irs.lackStock, irs.lackStock,
irs.overStock, irs.overStock,
irs.expireDate, irs.expireDate,
irs.recentDate, irs.recentDate,
irs.remark, irs.remark,
bp.cpmctymc productName, bp.cpmctymc productName,
bp.ggxh, bp.ggxh,
(select `name` from auth_warehouse where `code` = irs.invCode) invName, (select `name` from auth_warehouse where `code` = irs.invCode) invName,
(select `name` from auth_space where `code` = irs.invSpaceCode and invCode = irs.invCode) invSpaceName (select `name` from auth_space where `code` = irs.invSpaceCode and invCode = irs.invCode) invSpaceName
from inv_remind_set irs from inv_remind_set irs
left join basic_udirel bu on bu.id = irs.relId left join basic_udirel bu on bu.id = irs.relId
left join basic_products bp on bp.uuid = bu.uuid left join basic_products bp on bp.uuid = bu.uuid
<where> <where>
<if test="relId != null and relId != ''"> <if test="relId != null and relId != ''">
AND irs.relId = #{relId} AND irs.relId = #{relId}
@ -30,7 +30,35 @@
<if test="invSpaceCode != null and invSpaceCode != ''"> <if test="invSpaceCode != null and invSpaceCode != ''">
AND irs.invSpaceCode = #{invSpaceCode} AND irs.invSpaceCode = #{invSpaceCode}
</if> </if>
<if test="status != null">
AND irs.status = #{status}
</if>
</where> </where>
order by irs.updateTime desc order by irs.updateTime desc
</select> </select>
<select id="selectInfoByInvId" resultType="com.glxp.api.res.inv.InvRemindSetResponse">
select ip.relIdFk relId,
ip.deptCode,
ip.invCode,
ipd.invSpaceCode,
(select `name` from auth_warehouse where code = ip.invCode) invName,
(select `name`
from auth_space
where code = ipd.invSpaceCode and invWarehouseCode = ip.invCode) invSpaceName,
bp.ggxh,
bp.cpmctymc productName,
bu.lowStockNum,
bu.overStockNum,
bu.recentDateTime,
bu.isDateBy
from inv_product ip
left join basic_udirel bu on ip.relIdFk = bu.id
left join basic_products bp on bu.uuid = bp.uuid
left join inv_product_detail ipd
on ip.relIdFk = ipd.relId and IFNULL(ip.batchNo, 'empty') = ifnull(ipd.batchNo, 'empty')
and ip.invCode = ipd.invCode
where ip.id = #{invId}
group by ip.id
</select>
</mapper> </mapper>

@ -101,4 +101,6 @@ CALL Pro_Temp_ColumnWork('io_order', 'suppleCount', 'tinyint ', 1);
CALL Pro_Temp_ColumnWork('io_order', 'relKey', 'varchar(255) ', 1); CALL Pro_Temp_ColumnWork('io_order', 'relKey', 'varchar(255) ', 1);
CALL Pro_Temp_ColumnWork('io_order', 'checkTime', 'datetime ', 1); CALL Pro_Temp_ColumnWork('io_order', 'checkTime', 'datetime ', 1);
CALL Pro_Temp_ColumnWork('inv_remind_set', 'status', 'tinyint ', 1);

Loading…
Cancel
Save