|
@@ -3,9 +3,11 @@ package com.kmall.admin.service.impl.alarm;
|
|
|
import com.kmall.admin.dao.MerchDao;
|
|
|
import com.kmall.admin.dao.ProductStoreRelaDao;
|
|
|
import com.kmall.admin.dao.StoreDao;
|
|
|
+import com.kmall.admin.dao.alarm.Mall2ReminderRulesConfigDao;
|
|
|
import com.kmall.admin.entity.MerchEntity;
|
|
|
import com.kmall.admin.entity.ProductStoreRelaEntity;
|
|
|
import com.kmall.admin.entity.StoreEntity;
|
|
|
+import com.kmall.admin.entity.alarm.Mall2ReminderRulesConfigEntity;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -29,6 +31,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
public class Mall2ShippingReminderAlarmServiceImpl implements Mall2ShippingReminderAlarmService {
|
|
|
@Autowired
|
|
|
private Mall2ShippingReminderAlarmDao mall2ShippingReminderAlarmDao;
|
|
|
+ @Autowired
|
|
|
+ private Mall2ReminderRulesConfigDao mall2ReminderRulesConfigDao;
|
|
|
|
|
|
|
|
|
@Autowired
|
|
@@ -87,6 +91,13 @@ public class Mall2ShippingReminderAlarmServiceImpl implements Mall2ShippingRemin
|
|
|
|
|
|
// 遍历商户集合,查询商户下所有的门店
|
|
|
for(MerchEntity merchEntity : merchEntities){
|
|
|
+
|
|
|
+ // 查询商户的出货预警规则,若无规则,则不继续进行
|
|
|
+ Mall2ReminderRulesConfigEntity rulesConfigEntity = mall2ReminderRulesConfigDao.queryByMerchSn(merchEntity.getMerchSn(),"0");
|
|
|
+ if(rulesConfigEntity == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
Map<String,Object> storeParam = new HashMap();
|
|
|
storeParam.put("merchSn",merchEntity.getMerchSn());
|
|
|
storeParam.put("isValid","0");
|
|
@@ -105,59 +116,26 @@ public class Mall2ShippingReminderAlarmServiceImpl implements Mall2ShippingRemin
|
|
|
for(StoreEntity storeEntity : storeEntityList){
|
|
|
Long storeId = storeEntity.getId();
|
|
|
List<ProductStoreRelaEntity> productStoreRelaEntities = productStoreRelaDao.queryByStoreId(storeId);
|
|
|
- // 遍历商品集合,计算商品的平均销量
|
|
|
+ // 遍历商品集合
|
|
|
for(ProductStoreRelaEntity productStoreRelaEntity : productStoreRelaEntities){
|
|
|
- // 商品id
|
|
|
- Long goodsId = productStoreRelaEntity.getGoodsId();
|
|
|
- // 该商品的销售量
|
|
|
- Integer sellVolume = productStoreRelaEntity.getSellVolume();
|
|
|
- // 获取当前时间
|
|
|
- Date date = new Date();
|
|
|
- // 获取该商品的创建时间
|
|
|
- Date createTime = productStoreRelaEntity.getCreateTime();
|
|
|
- // 相差的天数
|
|
|
- int days = (int) ((date.getTime() - createTime.getTime()) / (1000*3600*24));
|
|
|
- days = days == 0? 1 : days;
|
|
|
- // 一周平均销售量
|
|
|
- Integer avaerageSellVolume = new BigDecimal(sellVolume).divide(new BigDecimal(days),2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(7))
|
|
|
- .setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
|
|
|
- // 该商品的库存
|
|
|
- Integer stockNum = productStoreRelaEntity.getStockNum();
|
|
|
- if(stockNum <= avaerageSellVolume){
|
|
|
- Mall2ShippingReminderAlarmEntity mall2ShippingReminderAlarmEntity = mall2ShippingReminderAlarmDao.queryByGoodsIdAndStoreId(goodsId,storeId);
|
|
|
- if(mall2ShippingReminderAlarmEntity == null){
|
|
|
- mall2ShippingReminderAlarmEntity = new Mall2ShippingReminderAlarmEntity();
|
|
|
- mall2ShippingReminderAlarmEntity.setGoodsId(goodsId.intValue());
|
|
|
- mall2ShippingReminderAlarmEntity.setGoodsName(productStoreRelaEntity.getGoodsName());
|
|
|
- mall2ShippingReminderAlarmEntity.setAverageSales(new BigDecimal(avaerageSellVolume));
|
|
|
- mall2ShippingReminderAlarmEntity.setStoreId(storeId.intValue());
|
|
|
- mall2ShippingReminderAlarmEntity.setStoreName(storeEntity.getStoreName());
|
|
|
- mall2ShippingReminderAlarmEntity.setSku(productStoreRelaEntity.getSku());
|
|
|
- mall2ShippingReminderAlarmEntity.setStockNum(productStoreRelaEntity.getStockNum());
|
|
|
- mall2ShippingReminderAlarmEntity.setAlarmType("00");
|
|
|
- mall2ShippingReminderAlarmEntity.setAlarmTime(new Date());
|
|
|
- mall2ShippingReminderAlarmEntity.setIsWarning(1); // 1.为预警 0.为不预警
|
|
|
- mall2ShippingReminderAlarmEntity.setCreateTime(new Date());
|
|
|
-
|
|
|
- insertRemiderList.add(mall2ShippingReminderAlarmEntity);
|
|
|
- }else{
|
|
|
- mall2ShippingReminderAlarmEntity.setAverageSales(new BigDecimal(avaerageSellVolume));
|
|
|
- mall2ShippingReminderAlarmEntity.setStockNum(productStoreRelaEntity.getStockNum());
|
|
|
- mall2ShippingReminderAlarmEntity.setIsWarning(1);
|
|
|
- mall2ShippingReminderAlarmEntity.setAlarmTime(new Date());
|
|
|
- mall2ShippingReminderAlarmEntity.setModTime(new Date());
|
|
|
-
|
|
|
- updateRemiderList.add(mall2ShippingReminderAlarmEntity);
|
|
|
- }
|
|
|
- }else{
|
|
|
- Mall2ShippingReminderAlarmEntity mall2ShippingReminderAlarmEntity = mall2ShippingReminderAlarmDao.queryByGoodsIdAndStoreId(goodsId,storeId);
|
|
|
- if( mall2ShippingReminderAlarmEntity != null){
|
|
|
- mall2ShippingReminderAlarmEntity.setIsWarning(0);
|
|
|
- mall2ShippingReminderAlarmEntity.setModTime(new Date());
|
|
|
- updateRemiderList.add(mall2ShippingReminderAlarmEntity);
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+ // 提醒类型 00.固定值 10.周期计算
|
|
|
+ String reminderType = rulesConfigEntity.getReminderType();
|
|
|
+ // 提醒值
|
|
|
+ Integer reminderValue = rulesConfigEntity.getReminderValue();
|
|
|
+ if("00".equalsIgnoreCase(reminderType)){
|
|
|
+ // 固定值计算
|
|
|
+ fixedValue(insertRemiderList, updateRemiderList, storeEntity, storeId, productStoreRelaEntity, reminderValue);
|
|
|
+
|
|
|
+ }else if("10".equalsIgnoreCase(reminderType)){
|
|
|
+ // 周期计算
|
|
|
+ averageCalculation(insertRemiderList, updateRemiderList, storeEntity, storeId, productStoreRelaEntity, reminderValue);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -177,4 +155,102 @@ public class Mall2ShippingReminderAlarmServiceImpl implements Mall2ShippingRemin
|
|
|
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ private void fixedValue(List<Mall2ShippingReminderAlarmEntity> insertRemiderList, List<Mall2ShippingReminderAlarmEntity> updateRemiderList, StoreEntity storeEntity, Long storeId, ProductStoreRelaEntity productStoreRelaEntity, Integer reminderValue) {
|
|
|
+ // 商品id
|
|
|
+ Long goodsId = productStoreRelaEntity.getGoodsId();
|
|
|
+ // 该商品的库存
|
|
|
+ Integer stockNum = productStoreRelaEntity.getStockNum();
|
|
|
+ if(stockNum <= reminderValue){
|
|
|
+ Mall2ShippingReminderAlarmEntity mall2ShippingReminderAlarmEntity = mall2ShippingReminderAlarmDao.queryByGoodsIdAndStoreId(goodsId,storeId);
|
|
|
+ if(mall2ShippingReminderAlarmEntity == null){
|
|
|
+ mall2ShippingReminderAlarmEntity = new Mall2ShippingReminderAlarmEntity();
|
|
|
+ mall2ShippingReminderAlarmEntity.setGoodsId(goodsId.intValue());
|
|
|
+ mall2ShippingReminderAlarmEntity.setGoodsName(productStoreRelaEntity.getGoodsName());
|
|
|
+ mall2ShippingReminderAlarmEntity.setAverageSales(new BigDecimal(0));
|
|
|
+ mall2ShippingReminderAlarmEntity.setStoreId(storeId.intValue());
|
|
|
+ mall2ShippingReminderAlarmEntity.setStoreName(storeEntity.getStoreName());
|
|
|
+ mall2ShippingReminderAlarmEntity.setSku(productStoreRelaEntity.getSku());
|
|
|
+ mall2ShippingReminderAlarmEntity.setStockNum(productStoreRelaEntity.getStockNum());
|
|
|
+ mall2ShippingReminderAlarmEntity.setAlarmType("00");
|
|
|
+ mall2ShippingReminderAlarmEntity.setAlarmTime(new Date());
|
|
|
+ mall2ShippingReminderAlarmEntity.setIsWarning(1); // 1.为预警 0.为不预警
|
|
|
+ mall2ShippingReminderAlarmEntity.setCreateTime(new Date());
|
|
|
+
|
|
|
+ insertRemiderList.add(mall2ShippingReminderAlarmEntity);
|
|
|
+ }else{
|
|
|
+ mall2ShippingReminderAlarmEntity.setAverageSales(new BigDecimal(0));
|
|
|
+ mall2ShippingReminderAlarmEntity.setStockNum(productStoreRelaEntity.getStockNum());
|
|
|
+ mall2ShippingReminderAlarmEntity.setIsWarning(1);
|
|
|
+ mall2ShippingReminderAlarmEntity.setAlarmTime(new Date());
|
|
|
+ mall2ShippingReminderAlarmEntity.setModTime(new Date());
|
|
|
+
|
|
|
+ updateRemiderList.add(mall2ShippingReminderAlarmEntity);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ Mall2ShippingReminderAlarmEntity mall2ShippingReminderAlarmEntity = mall2ShippingReminderAlarmDao.queryByGoodsIdAndStoreId(goodsId,storeId);
|
|
|
+ if( mall2ShippingReminderAlarmEntity != null){
|
|
|
+ mall2ShippingReminderAlarmEntity.setIsWarning(0);
|
|
|
+ mall2ShippingReminderAlarmEntity.setModTime(new Date());
|
|
|
+ updateRemiderList.add(mall2ShippingReminderAlarmEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void averageCalculation(List<Mall2ShippingReminderAlarmEntity> insertRemiderList, List<Mall2ShippingReminderAlarmEntity> updateRemiderList, StoreEntity storeEntity, Long storeId, ProductStoreRelaEntity productStoreRelaEntity, Integer reminderValue) {
|
|
|
+ // 商品id
|
|
|
+ Long goodsId = productStoreRelaEntity.getGoodsId();
|
|
|
+ // 该商品的销售量
|
|
|
+ Integer sellVolume = productStoreRelaEntity.getSellVolume();
|
|
|
+ // 获取当前时间
|
|
|
+ Date date = new Date();
|
|
|
+ // 获取该商品的创建时间
|
|
|
+ Date createTime = productStoreRelaEntity.getCreateTime();
|
|
|
+ // 相差的天数
|
|
|
+ int days = (int) ((date.getTime() - createTime.getTime()) / (1000*3600*24));
|
|
|
+ days = days == 0? 1 : days;
|
|
|
+ // 平均销量
|
|
|
+ Integer avaerageSellVolume = new BigDecimal(sellVolume).divide(new BigDecimal(days),2, BigDecimal.ROUND_HALF_UP)
|
|
|
+ .setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
|
|
|
+
|
|
|
+ if(days >= reminderValue){
|
|
|
+ avaerageSellVolume = avaerageSellVolume * reminderValue;
|
|
|
+ }
|
|
|
+ // 该商品的库存
|
|
|
+ Integer stockNum = productStoreRelaEntity.getStockNum();
|
|
|
+ if(stockNum <= avaerageSellVolume){
|
|
|
+ Mall2ShippingReminderAlarmEntity mall2ShippingReminderAlarmEntity = mall2ShippingReminderAlarmDao.queryByGoodsIdAndStoreId(goodsId,storeId);
|
|
|
+ if(mall2ShippingReminderAlarmEntity == null){
|
|
|
+ mall2ShippingReminderAlarmEntity = new Mall2ShippingReminderAlarmEntity();
|
|
|
+ mall2ShippingReminderAlarmEntity.setGoodsId(goodsId.intValue());
|
|
|
+ mall2ShippingReminderAlarmEntity.setGoodsName(productStoreRelaEntity.getGoodsName());
|
|
|
+ mall2ShippingReminderAlarmEntity.setAverageSales(new BigDecimal(avaerageSellVolume));
|
|
|
+ mall2ShippingReminderAlarmEntity.setStoreId(storeId.intValue());
|
|
|
+ mall2ShippingReminderAlarmEntity.setStoreName(storeEntity.getStoreName());
|
|
|
+ mall2ShippingReminderAlarmEntity.setSku(productStoreRelaEntity.getSku());
|
|
|
+ mall2ShippingReminderAlarmEntity.setStockNum(productStoreRelaEntity.getStockNum());
|
|
|
+ mall2ShippingReminderAlarmEntity.setAlarmType("00");
|
|
|
+ mall2ShippingReminderAlarmEntity.setAlarmTime(new Date());
|
|
|
+ mall2ShippingReminderAlarmEntity.setIsWarning(1); // 1.为预警 0.为不预警
|
|
|
+ mall2ShippingReminderAlarmEntity.setCreateTime(new Date());
|
|
|
+
|
|
|
+ insertRemiderList.add(mall2ShippingReminderAlarmEntity);
|
|
|
+ }else{
|
|
|
+ mall2ShippingReminderAlarmEntity.setAverageSales(new BigDecimal(avaerageSellVolume));
|
|
|
+ mall2ShippingReminderAlarmEntity.setStockNum(productStoreRelaEntity.getStockNum());
|
|
|
+ mall2ShippingReminderAlarmEntity.setIsWarning(1);
|
|
|
+ mall2ShippingReminderAlarmEntity.setAlarmTime(new Date());
|
|
|
+ mall2ShippingReminderAlarmEntity.setModTime(new Date());
|
|
|
+
|
|
|
+ updateRemiderList.add(mall2ShippingReminderAlarmEntity);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ Mall2ShippingReminderAlarmEntity mall2ShippingReminderAlarmEntity = mall2ShippingReminderAlarmDao.queryByGoodsIdAndStoreId(goodsId,storeId);
|
|
|
+ if( mall2ShippingReminderAlarmEntity != null){
|
|
|
+ mall2ShippingReminderAlarmEntity.setIsWarning(0);
|
|
|
+ mall2ShippingReminderAlarmEntity.setModTime(new Date());
|
|
|
+ updateRemiderList.add(mall2ShippingReminderAlarmEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|