|
|
@@ -106,43 +106,46 @@ public class ProductDetailERPServiceImpl implements ProductDetailERPService {
|
|
|
Double b2cReserve = goodsDao.getSumReserveByEnUUAndUuidAndStatus(enuu, products.get(0).getCmpUuId(), Status.AVAILABLE.value());
|
|
|
b2cReserve = b2cReserve == null ? 0 : b2cReserve;
|
|
|
Double erpReserve = productDetailERP.getReserve();
|
|
|
- if (Double.compare(b2cReserve, erpReserve) > 0) {// 如果商城已上架数量大于erp空闲库存,下架部分在售商品
|
|
|
- BigDecimal b2cDecimal = BigDecimal.valueOf(b2cReserve);
|
|
|
- BigDecimal erpDecimal = BigDecimal.valueOf(erpReserve);
|
|
|
- BigDecimal subtractDecimal = b2cDecimal.subtract(erpDecimal);// 商城已上架数量、erp库存差值
|
|
|
- List<Goods> goods = goodsDao.findByEnUUAndUuidOrderByReserveAsc(enuu, products.get(0).getCmpUuId());// 获取该企业此物料上架商品信息(按库存从小到大排序)
|
|
|
- if (!CollectionUtils.isEmpty(goods)) {
|
|
|
- for (Goods good : goods) {
|
|
|
- if (Double.compare(subtractDecimal.doubleValue(), good.getReserve()) == 0) {// 差值等于此批次数量,直接下架此批次
|
|
|
- goodsService.offShelfGoodsByProvider(good.getBatchCode());
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- if (Double.compare(subtractDecimal.doubleValue(), good.getReserve()) < 0) {// 差值小于此批次数量,下架部分库存
|
|
|
- Goods nowGood = goodsDao.findOne(good.getId());
|
|
|
- good.setReserve(BigDecimal.valueOf(good.getReserve()).subtract(subtractDecimal).doubleValue());
|
|
|
- good.setSelfSale(sysConf.getStoreid().equals(good.getStoreid())? IntegerConstant.B2C_SALE.toString() : IntegerConstant.SELF_SALE.toString());// 设置自营寄售
|
|
|
- loggerInfo.info(SystemSession.getUser().getEnterprise().getEnName() + "更新库存: " + products.get(0).getProdNum() + ",self is" + good.getSelfSale());
|
|
|
- // 如果调整后的库存小于最小起订量直接下架
|
|
|
- if (good.getReserve() < good.getMinBuyQty()) {
|
|
|
+ if (null != erpReserve) {
|
|
|
+ if (Double.compare(b2cReserve, erpReserve) > 0) {// 如果商城已上架数量大于erp空闲库存,下架部分在售商品
|
|
|
+ BigDecimal b2cDecimal = BigDecimal.valueOf(b2cReserve);
|
|
|
+ BigDecimal erpDecimal = BigDecimal.valueOf(erpReserve);
|
|
|
+ BigDecimal subtractDecimal = b2cDecimal.subtract(erpDecimal);// 商城已上架数量、erp库存差值
|
|
|
+ List<Goods> goods = goodsDao.findByEnUUAndUuidOrderByReserveAsc(enuu, products.get(0).getCmpUuId());// 获取该企业此物料上架商品信息(按库存从小到大排序)
|
|
|
+ if (!CollectionUtils.isEmpty(goods)) {
|
|
|
+ for (Goods good : goods) {
|
|
|
+ if (Double.compare(subtractDecimal.doubleValue(), good.getReserve()) == 0) {// 差值等于此批次数量,直接下架此批次
|
|
|
goodsService.offShelfGoodsByProvider(good.getBatchCode());
|
|
|
- } else {
|
|
|
- goodsService.updateGoods(nowGood, good);
|
|
|
- goodsService.updateComponentTradeInfos(nowGood.getUuid());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Double.compare(subtractDecimal.doubleValue(), good.getReserve()) < 0) {// 差值小于此批次数量,下架部分库存
|
|
|
+ Goods nowGood = goodsDao.findOne(good.getId());
|
|
|
+ good.setReserve(BigDecimal.valueOf(good.getReserve()).subtract(subtractDecimal).doubleValue());
|
|
|
+ good.setSelfSale(sysConf.getStoreid().equals(good.getStoreid())? IntegerConstant.B2C_SALE.toString() : IntegerConstant.SELF_SALE.toString());// 设置自营寄售
|
|
|
+ loggerInfo.info(SystemSession.getUser().getEnterprise().getEnName() + "更新库存: " + products.get(0).getProdNum() + ",self is" + good.getSelfSale());
|
|
|
+ // 如果调整后的库存小于最小起订量直接下架
|
|
|
+ if (good.getReserve() < good.getMinBuyQty()) {
|
|
|
+ goodsService.offShelfGoodsByProvider(good.getBatchCode());
|
|
|
+ } else {
|
|
|
+ goodsService.updateGoods(nowGood, good);
|
|
|
+ goodsService.updateComponentTradeInfos(nowGood.getUuid());
|
|
|
+ }
|
|
|
+ break;
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
|
|
|
- if (Double.compare(subtractDecimal.doubleValue(), good.getReserve()) > 0) {// 差值大于此批次数量,下架次批次,并继续下一批次调整
|
|
|
- goodsService.offShelfGoodsByProvider(good.getBatchCode());
|
|
|
- subtractDecimal = subtractDecimal.subtract(BigDecimal.valueOf(good.getReserve()));
|
|
|
+ if (Double.compare(subtractDecimal.doubleValue(), good.getReserve()) > 0) {// 差值大于此批次数量,下架次批次,并继续下一批次调整
|
|
|
+ goodsService.offShelfGoodsByProvider(good.getBatchCode());
|
|
|
+ subtractDecimal = subtractDecimal.subtract(BigDecimal.valueOf(good.getReserve()));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- products.get(0).setErpReserve(productDetailERP.getReserve());
|
|
|
+ products.get(0).setErpReserve(productDetailERP.getReserve() == null ? 0 : productDetailERP.getReserve());
|
|
|
products.get(0).setProduceDate(productDetailERP.getProduceDate());
|
|
|
products.get(0).setPrice(productDetailERP.getPrice());
|
|
|
productList.add(products.get(0));
|