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.req.inv.FilterInvRemindSetRequest;
import com.glxp.api.res.inv.InvRemindSetResponse;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -19,4 +20,12 @@ public interface InvRemindSetDao extends BaseMapper<InvRemindSetEntity> {
* @return
*/
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")
private Date updateTime;
/**
* 0 1
*/
@TableField(value = "`status`")
private Integer status;
@Override
public String toString() {
return "InvRemindSetEntity{" +

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

@ -80,4 +80,28 @@ public class InvRemindSetResponse {
*/
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);
/**
* 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;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
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;
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.entity.basic.UdiRelevanceEntity;
import com.glxp.api.entity.inv.InvRemindSetEntity;
import com.glxp.api.req.inv.AddInvRemindSetRequest;
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.inv.InvRemindSetService;
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.transaction.annotation.Transactional;
@ -31,6 +39,10 @@ public class InvRemindSetServiceImpl implements InvRemindSetService {
private InvRemindSetDao invRemindSetDao;
@Resource
private CustomerService customerService;
@Resource
private UdiRelevanceDao udiRelevanceDao;
@Resource
private SqlSessionFactory sqlSessionFactory;
@Override
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()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "预警设置至少开启一项预警!");
}
InvRemindSetEntity invRemindSetEntity = new InvRemindSetEntity();
BeanUtil.copyProperties(addInvRemindSetRequest, invRemindSetEntity);
setUpdateInfo(invRemindSetEntity);
invRemindSetDao.insert(invRemindSetEntity);
//查询此设置项是否已经存在,若已经存在,则直接覆盖,没有则新增
InvRemindSetEntity invRemindSetEntity = invRemindSetDao.selectOne(new QueryWrapper<InvRemindSetEntity>()
.eq("invCode", addInvRemindSetRequest.getInvCode())
.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("添加成功");
}
@ -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()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "预警设置至少开启一项预警!");
}
verifySetParams(invRemindSetEntity);
setUpdateInfo(invRemindSetEntity);
invRemindSetDao.updateById(invRemindSetEntity);
return ResultVOUtils.success("更新成功");
@ -77,6 +111,72 @@ public class InvRemindSetServiceImpl implements InvRemindSetService {
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);
}
/**
*
*
* @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">
<select id="filterList" resultType="com.glxp.api.res.inv.InvRemindSetResponse">
select irs.id,
irs.relId,
irs.deptCode,
irs.invCode,
irs.invSpaceCode,
irs.lowStock,
irs.lackStock,
irs.overStock,
irs.expireDate,
irs.recentDate,
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
irs.relId,
irs.deptCode,
irs.invCode,
irs.invSpaceCode,
irs.lowStock,
irs.lackStock,
irs.overStock,
irs.expireDate,
irs.recentDate,
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
left join basic_udirel bu on bu.id = irs.relId
left join basic_products bp on bp.uuid = bu.uuid
left join basic_udirel bu on bu.id = irs.relId
left join basic_products bp on bp.uuid = bu.uuid
<where>
<if test="relId != null and relId != ''">
AND irs.relId = #{relId}
@ -30,7 +30,35 @@
<if test="invSpaceCode != null and invSpaceCode != ''">
AND irs.invSpaceCode = #{invSpaceCode}
</if>
<if test="status != null">
AND irs.status = #{status}
</if>
</where>
order by irs.updateTime desc
</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>

@ -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', 'checkTime', 'datetime ', 1);
CALL Pro_Temp_ColumnWork('inv_remind_set', 'status', 'tinyint ', 1);

Loading…
Cancel
Save