package com.consum.base.core.service;
|
|
import cn.hutool.core.convert.Convert;
|
import com.consum.base.core.utils.IdUtil;
|
import com.consum.base.service.BaseGoodsModelsService;
|
import com.consum.base.service.BaseWarehouseService;
|
import com.consum.base.service.LWhWarningServiceImpl;
|
import com.consum.model.po.BaseWarehouse;
|
import com.consum.model.po.FinSysTenantUser;
|
import com.consum.model.po.WhWarning;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
import javax.annotation.Resource;
|
import org.apache.commons.collections4.CollectionUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
/**
|
* @ClassName LWhWarningCoreServiceImpl
|
* @Author cy
|
* @Date 2023/11/24
|
* @Description
|
* @Version 1.0
|
**/
|
@Service
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
|
public class LWhWarningCoreServiceImpl {
|
|
@Resource
|
private LWhWarningServiceImpl lWhWarningService;
|
@Resource
|
private BaseWarehouseService baseWarehouseService;
|
@Resource
|
private BaseGoodsModelsService baseGoodsModelsService;
|
|
/**
|
* 当库存变动时调用该方法
|
*
|
* @param warehouseType
|
* @param warehouseId
|
* @param baseModelIdList
|
*/
|
public void updateKuCun(Short warehouseType, Long warehouseId, List<Long> baseModelIdList, FinSysTenantUser sysInfo, Long dealTime) {
|
if (baseModelIdList == null) {
|
baseModelIdList = new ArrayList<>();
|
}
|
sysInfo = sysInfo == null ? new FinSysTenantUser() : sysInfo;
|
// 获取到达到阈值的物品
|
List<Map<String, Object>> kuCunNotifyList = lWhWarningService.checkKuCun(warehouseType, warehouseId, baseModelIdList);
|
//
|
// log.info("没有达到阈值的物品");
|
if (CollectionUtils.isEmpty(kuCunNotifyList)) {
|
kuCunNormalModel(warehouseType, warehouseId, baseModelIdList);
|
return;
|
}
|
List<Long> allChangModelList = baseModelIdList.stream()
|
.distinct()
|
.collect(Collectors.toList());
|
baseModelIdList = allChangModelList;
|
|
// 将数据插入库存预警【WH_WARNING】
|
BaseWarehouse baseWarehouses = baseWarehouseService.get(new BaseWarehouse(warehouseId));
|
|
List<Long> kuCunNotifyModelIdList = new ArrayList<>(kuCunNotifyList.size());
|
List<WhWarning> warningList = new ArrayList<>(kuCunNotifyList.size());
|
|
for (Map<String, Object> notifyKuCun : kuCunNotifyList) {
|
Long baseGoodsModelsId = Convert.toLong(notifyKuCun.get("baseGoodsModelsId"));
|
kuCunNotifyModelIdList.add(baseGoodsModelsId);
|
Integer lowerLimit = Convert.toInt(notifyKuCun.get("lowerLimit"));
|
Integer upperLimit = Convert.toInt(notifyKuCun.get("upperLimit"));
|
Integer warningType = Convert.toInt(notifyKuCun.get("warningType"));
|
Integer goodsNum = Convert.toInt(notifyKuCun.get("goodsNum"));
|
|
WhWarning whWarning = new WhWarning();
|
List<Map<String, Object>> modelInfoList = baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId);
|
Map<String, Object> modelInfo = modelInfoList.get(0);
|
|
whWarning.setId(IdUtil.generateId());
|
whWarning.setWarehouseType(0);
|
whWarning.setBaseWarehouseId(warehouseId);
|
whWarning.setBaseWarehouseName(baseWarehouses.getWarehouseName());
|
whWarning.setBaseGoodsTemplateId(Convert.toLong(modelInfo.get("goodsId")));
|
whWarning.setBaseGoodsTemplateName(Convert.toStr(modelInfo.get("goodsName")));
|
whWarning.setBaseGoodsModelsId(baseGoodsModelsId);
|
whWarning.setBaseGoodsModelsName((String) modelInfo.get("modelName"));
|
whWarning.setGoodsType(2);
|
whWarning.setWarningType(warningType);
|
whWarning.setUpperLimit(upperLimit);
|
whWarning.setLowerLimit(lowerLimit);
|
whWarning.setWarehouseCount(goodsNum);
|
whWarning.setWarningTime(dealTime);
|
whWarning.setStates(1);
|
whWarning.setOperatorId(sysInfo.getId());
|
whWarning.setOperatorName(sysInfo.getUserName());
|
whWarning.setDealTime(dealTime);
|
whWarning.setAgencyId(Convert.toLong(sysInfo.getTenantId()));
|
whWarning.setAgencyName(sysInfo.getTenantName());
|
warningList.add(whWarning);
|
}
|
|
//修改以前的预警状态
|
baseModelIdList.removeAll(kuCunNotifyModelIdList);
|
kuCunNormalModel(warehouseType, warehouseId, baseModelIdList);
|
|
//批量插入预警
|
lWhWarningService.insertBatch(warningList);
|
|
}
|
|
private String KU_CUN_NORMAL_MODEL = "update WH_WARNING set STATES=2 where WAREHOUSE_TYPE=? and BASE_WAREHOUSE_ID=?";
|
|
/**
|
* @param warehouseType
|
* @param warehouseId
|
* @param normalBaseModelIdList 库存正常的
|
* @return
|
*/
|
private int kuCunNormalModel(Short warehouseType, Long warehouseId, List<Long> normalBaseModelIdList) {
|
if (CollectionUtils.isEmpty(normalBaseModelIdList)) {
|
return 1;
|
}
|
ArrayList<Object> params = new ArrayList<>();
|
params.add(warehouseType);
|
params.add(warehouseId);
|
|
StringBuilder sql = new StringBuilder(KU_CUN_NORMAL_MODEL);
|
if (!org.springframework.util.CollectionUtils.isEmpty(normalBaseModelIdList)) {
|
sql.append(" and BASE_GOODS_MODELS_ID in(").append(org.apache.commons.lang3.StringUtils.join(normalBaseModelIdList, ",")).append(")");
|
}
|
return lWhWarningService.update(sql.toString(), params.toArray());
|
}
|
}
|