Browse Source

Merge branch 'dev-mysql' into feature_release-tomysql

wangdy 8 years ago
parent
commit
63f88bac8f

+ 31 - 28
src/main/java/com/uas/platform/b2c/external/erp/commodity/service/impl/ProductDetailERPServiceImpl.java

@@ -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));