package com.consum.base.core.service; 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; 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 cn.hutool.core.convert.Convert; /** * @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 baseModelIdList, FinSysTenantUser sysInfo, Long dealTime) { if (baseModelIdList == null) { baseModelIdList = new ArrayList<>(); } sysInfo = sysInfo == null ? new FinSysTenantUser() : sysInfo; // 获取到达到阈值的物品 List> kuCunNotifyList = lWhWarningService.checkKuCun(warehouseType, warehouseId, baseModelIdList); // log.info("没有达到阈值的物品"); if (CollectionUtils.isEmpty(kuCunNotifyList)) { kuCunNormalModel(warehouseType, warehouseId, baseModelIdList); return; } List allChangModelList = baseModelIdList.stream().distinct().collect(Collectors.toList()); baseModelIdList = allChangModelList; // 将数据插入库存预警【WH_WARNING】 BaseWarehouse baseWarehouses = baseWarehouseService.get(new BaseWarehouse(warehouseId)); List kuCunNotifyModelIdList = new ArrayList<>(kuCunNotifyList.size()); List warningList = new ArrayList<>(kuCunNotifyList.size()); for (Map 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> modelInfoList = baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId); Map 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 normalBaseModelIdList) { if (CollectionUtils.isEmpty(normalBaseModelIdList)) { return 1; } ArrayList 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()); } }