mirror of
https://gitee.com/y_project/RuoYi-Cloud.git
synced 2026-01-29 21:11:57 +08:00
推进入出库功能的进度
This commit is contained in:
@@ -61,6 +61,8 @@ public class BaseStock extends ExtBaseEntity implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String pkgUnitName;
|
private String pkgUnitName;
|
||||||
|
|
||||||
|
//==================== ↓↓↓↓↓↓ 扩展方法 ↓↓↓↓↓↓ ====================
|
||||||
|
|
||||||
//==================== ↓↓↓↓↓↓ 表字段 ↓↓↓↓↓↓ ====================
|
//==================== ↓↓↓↓↓↓ 表字段 ↓↓↓↓↓↓ ====================
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,16 +1,23 @@
|
|||||||
package com.ruoyi.wms.service.stock;
|
package com.ruoyi.wms.service.stock;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.core.web.domain.ExtBaseEntity;
|
||||||
import com.ruoyi.wms.domain.BaseStock;
|
import com.ruoyi.wms.domain.BaseStock;
|
||||||
import com.ruoyi.wms.mapper.stock.BaseStockDynamicSqlSupport;
|
import com.ruoyi.wms.mapper.stock.BaseStockDynamicSqlSupport;
|
||||||
import com.ruoyi.wms.mapper.stock.BaseStockExtMapper;
|
import com.ruoyi.wms.mapper.stock.BaseStockExtMapper;
|
||||||
import com.ruoyi.wms.mapper.stock.BaseStockMapper;
|
import com.ruoyi.wms.mapper.stock.BaseStockMapper;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.mybatis.dynamic.sql.SqlBuilder;
|
import org.mybatis.dynamic.sql.SqlBuilder;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.mybatis.dynamic.sql.render.RenderingStrategies;
|
||||||
|
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.Queue;
|
||||||
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基本库存Service业务层处理
|
* 基本库存Service业务层处理
|
||||||
@@ -21,10 +28,14 @@ import java.util.Optional;
|
|||||||
@Service
|
@Service
|
||||||
public class BaseStockServiceImpl implements IBaseStockService {
|
public class BaseStockServiceImpl implements IBaseStockService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private BaseStockMapper baseStockMapper;
|
private BaseStockMapper baseStockMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private BaseStockExtMapper baseStockExtMapper;
|
private BaseStockExtMapper baseStockExtMapper;
|
||||||
|
@Resource
|
||||||
|
private IInvTransHisService invTransHisService;
|
||||||
|
|
||||||
|
private final Queue<BaseStock> dataQueue = new ConcurrentLinkedQueue<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询基本库存
|
* 查询基本库存
|
||||||
@@ -35,11 +46,11 @@ public class BaseStockServiceImpl implements IBaseStockService {
|
|||||||
@Override
|
@Override
|
||||||
public BaseStock selectBaseStockByPK(String whsCd, String stgBinCd, String itemCd, String lotNo, String subLotNo) {
|
public BaseStock selectBaseStockByPK(String whsCd, String stgBinCd, String itemCd, String lotNo, String subLotNo) {
|
||||||
Optional<BaseStock> result = baseStockMapper.selectOne(dsl ->
|
Optional<BaseStock> result = baseStockMapper.selectOne(dsl ->
|
||||||
dsl.where(BaseStockDynamicSqlSupport.whsCd, SqlBuilder.isEqualTo(whsCd))
|
dsl.where(BaseStockDynamicSqlSupport.whsCd, SqlBuilder.isEqualTo(whsCd))
|
||||||
.and(BaseStockDynamicSqlSupport.stgBinCd, SqlBuilder.isEqualTo(stgBinCd))
|
.and(BaseStockDynamicSqlSupport.stgBinCd, SqlBuilder.isEqualTo(stgBinCd))
|
||||||
.and(BaseStockDynamicSqlSupport.itemCd, SqlBuilder.isEqualTo(itemCd))
|
.and(BaseStockDynamicSqlSupport.itemCd, SqlBuilder.isEqualTo(itemCd))
|
||||||
.and(BaseStockDynamicSqlSupport.lotNo, SqlBuilder.isEqualTo(lotNo))
|
.and(BaseStockDynamicSqlSupport.lotNo, SqlBuilder.isEqualTo(lotNo))
|
||||||
.and(BaseStockDynamicSqlSupport.subLotNo, SqlBuilder.isEqualTo(subLotNo))
|
.and(BaseStockDynamicSqlSupport.subLotNo, SqlBuilder.isEqualTo(subLotNo))
|
||||||
);
|
);
|
||||||
return result.orElse(null);
|
return result.orElse(null);
|
||||||
}
|
}
|
||||||
@@ -55,4 +66,86 @@ public class BaseStockServiceImpl implements IBaseStockService {
|
|||||||
return baseStockExtMapper.selectPageList(baseStock);
|
return baseStockExtMapper.selectPageList(baseStock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库
|
||||||
|
*
|
||||||
|
* @param baseStock 库存数据
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public AjaxResult instock(BaseStock baseStock) {
|
||||||
|
//TODO 参数检查
|
||||||
|
|
||||||
|
//队列维持数据一致性
|
||||||
|
dataQueue.offer(baseStock);
|
||||||
|
BaseStock data = dataQueue.remove();
|
||||||
|
doInoutStock(data);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库
|
||||||
|
*
|
||||||
|
* @param baseStock 库存数据
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public AjaxResult outstock(BaseStock baseStock) {
|
||||||
|
//TODO 参数检查
|
||||||
|
|
||||||
|
//队列维持数据一致性
|
||||||
|
dataQueue.offer(baseStock);
|
||||||
|
BaseStock data = dataQueue.remove();
|
||||||
|
doInoutStock(data);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入出库操作
|
||||||
|
*/
|
||||||
|
private void doInoutStock(BaseStock form) {
|
||||||
|
//查询库存
|
||||||
|
List<BaseStock> stockList = queryWhenInoutStock(form);
|
||||||
|
//更新库存
|
||||||
|
if (stockList.isEmpty()) {
|
||||||
|
|
||||||
|
//insert
|
||||||
|
baseStockMapper.insert(form);
|
||||||
|
//TODO 写入出库履历
|
||||||
|
} else {
|
||||||
|
//update
|
||||||
|
BaseStock oldRecord = stockList.getFirst();
|
||||||
|
BigDecimal newStdUnitQty = oldRecord.getStdUnitQty().add(form.getStdUnitQty());
|
||||||
|
BigDecimal newPkgUnitQty = oldRecord.getPkgUnitQty().add(form.getPkgUnitQty());
|
||||||
|
oldRecord.setStdUnitQty(newStdUnitQty);
|
||||||
|
oldRecord.setPkgUnitQty(newPkgUnitQty);
|
||||||
|
baseStockMapper.updateByPrimaryKey(oldRecord);
|
||||||
|
//TODO 写入出库履历
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入出库时查询库存
|
||||||
|
*
|
||||||
|
* @param form 查询条件
|
||||||
|
* @return 库存数据
|
||||||
|
*/
|
||||||
|
private List<BaseStock> queryWhenInoutStock(BaseStock form) {
|
||||||
|
SelectStatementProvider query = SqlBuilder.select(BaseStockMapper.selectList)
|
||||||
|
.from(BaseStockDynamicSqlSupport.baseStock)
|
||||||
|
.where(BaseStockDynamicSqlSupport.deleteFlag, SqlBuilder.isEqualTo(ExtBaseEntity.NOT_DELETE))
|
||||||
|
.and(BaseStockDynamicSqlSupport.whsCd, SqlBuilder.isEqualTo(form.getWhsCd()))
|
||||||
|
.and(BaseStockDynamicSqlSupport.stgBinCd, SqlBuilder.isEqualTo(form.getStgBinCd()))
|
||||||
|
.and(BaseStockDynamicSqlSupport.itemCd, SqlBuilder.isEqualTo(form.getItemCd()))
|
||||||
|
.and(BaseStockDynamicSqlSupport.lotNo, SqlBuilder.isEqualTo(form.getLotNo()))
|
||||||
|
.and(BaseStockDynamicSqlSupport.subLotNo, SqlBuilder.isEqualTo(form.getSubLotNo()))
|
||||||
|
.orderBy(BaseStockDynamicSqlSupport.createTime.descending())
|
||||||
|
.limit(1)
|
||||||
|
.build()
|
||||||
|
.render(RenderingStrategies.MYBATIS3);
|
||||||
|
return baseStockMapper.selectMany(query);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.ruoyi.wms.service.stock;
|
package com.ruoyi.wms.service.stock;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||||
import com.ruoyi.wms.domain.BaseStock;
|
import com.ruoyi.wms.domain.BaseStock;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -28,4 +29,20 @@ public interface IBaseStockService {
|
|||||||
*/
|
*/
|
||||||
List<BaseStock> selectBaseStockList(BaseStock baseStock);
|
List<BaseStock> selectBaseStockList(BaseStock baseStock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库
|
||||||
|
*
|
||||||
|
* @param baseStock 库存数据
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
AjaxResult instock(BaseStock baseStock) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出库
|
||||||
|
*
|
||||||
|
* @param baseStock 库存数据
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
AjaxResult outstock(BaseStock baseStock) throws Exception;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user