杨凯
2023-10-18 21f14947f2a3d3e5a034f383cd1c87e7d42dbc8d
consum-base/src/main/java/com/consum/base/core/WarehouseBusinessService.java
@@ -1,7 +1,10 @@
package com.consum.base.core;
import com.consum.base.core.tools.SqlParameter;
import com.consum.base.core.tools.SuperMap;
import com.consum.base.core.util.DateUtil;
import com.consum.model.po.*;
import com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer;
import com.walker.infrastructure.utils.NumberGenerator;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
@@ -9,6 +12,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * 进出库 业务处 类
@@ -455,4 +459,110 @@
            insert(model);
        }
    }
    /**
     * 统一处理库存预警(定时任务调用服务)
     * 计划:每天中午13:00、晚上1:00执行两次
     */
    public void insertWarning(){
        String sql = "SELECT\n" +
                "   SUM(b.WH_COUNT) AS WH_COUNT,\n" +
                "   b.BASE_GOODS_TEMPLATE_ID,\n" +
                "   b.GOODS_TEMPLATE_NAME,\n" +
                "   b.WAREHOUSE_ID,\n" +
                "   a.UPPER_LIMIT,\n" +
                "   a.LOWER_LIMIT \n" +
                "FROM\n" +
                "   WH_WARNING_CONFIG a\n" +
                "   LEFT JOIN wh_goods b ON a.BASE_GOODS_TEMPLATE_ID = b.BASE_GOODS_TEMPLATE_ID \n" +
                "WHERE\n" +
                "   a.BASE_WAREHOUSE_ID = b.WAREHOUSE_ID \n" +
                "   AND b.STATES = 1 \n" +
                "   AND a.GOODS_TYPE=1\n" +
                "    AND  ( a.UPPER_LIMIT <= WH_COUNT OR a.LOWER_LIMIT >= WH_COUNT ) \n" +
                "GROUP BY\n" +
                "   b.BASE_GOODS_TEMPLATE_ID,\n" +
                "   b.GOODS_TEMPLATE_NAME,\n" +
                "   b.WAREHOUSE_ID,\n" +
                "   a.UPPER_LIMIT,\n" +
                "   a.LOWER_LIMIT";
        List<Map> goodslist = select(sql,new SqlParameter());
        sql = "SELECT\n" +
                "   SUM(b.WH_COUNT) AS WH_COUNT,\n" +
                "   b.BASE_GOODS_TEMPLATE_ID,\n" +
                "   b.GOODS_TEMPLATE_NAME,\n" +
                "   b.BASE_GOODS_MODELS_ID,\n" +
                "   b.BASE_GOODS_MODELS_NAME,\n" +
                "   b.WAREHOUSE_ID,\n" +
                "   a.UPPER_LIMIT,\n" +
                "   a.LOWER_LIMIT \n" +
                "FROM\n" +
                "   WH_WARNING_CONFIG a\n" +
                "   LEFT JOIN wh_goods b ON a.BASE_GOODS_MODELS_ID = b.BASE_GOODS_MODELS_ID \n" +
                "WHERE\n" +
                "   a.BASE_WAREHOUSE_ID = b.WAREHOUSE_ID \n" +
                "   AND b.STATES = 1 \n" +
                "   AND a.GOODS_TYPE=2\n" +
                "    AND  ( a.UPPER_LIMIT <= WH_COUNT OR a.LOWER_LIMIT >= WH_COUNT ) \n" +
                "GROUP BY\n" +
                "   b.BASE_GOODS_TEMPLATE_ID,\n" +
                "   b.GOODS_TEMPLATE_NAME,\n" +
                "   b.BASE_GOODS_MODELS_ID,\n" +
                "   b.BASE_GOODS_MODELS_NAME,\n" +
                "   b.WAREHOUSE_ID,\n" +
                "   a.UPPER_LIMIT,\n" +
                "   a.LOWER_LIMIT";
        List<Map> modeslist = select(sql,new SqlParameter());
        List<Map> list = new ArrayList<>();
        list.addAll(goodslist);
        list.addAll(modeslist);
        List<WhWarning> warningList = new ArrayList<>();
        for (Map map : list) {
            SuperMap superMap = new SuperMap(map);
            BaseWarehouse warehouse = get(new BaseWarehouse(),"ID=?",new Object[]{superMap.get("WAREHOUSE_ID")});
            WhWarning warning = new WhWarning();
            warning.setId(NumberGenerator.getLongSequenceNumber());
            warning.setBaseWarehouseId(warehouse.getId());
            warning.setBaseWarehouseName(warehouse.getWarehouseName());
            warning.setBaseGoodsTemplateId(superMap.getLong("BASE_GOODS_TEMPLATE_ID"));
            warning.setBaseGoodsTemplateName(superMap.getString("GOODS_TEMPLATE_NAME"));
            if (superMap.getString("BASE_GOODS_MODELS_ID") == null){
                warning.setGoodsType(1);
            } else {
                warning.setBaseGoodsModelsId(superMap.getLong("BASE_GOODS_MODELS_ID"));
                warning.setBaseGoodsModelsName(superMap.getString("BASE_GOODS_MODELS_NAME"));
                warning.setGoodsType(2);
            }
            int whCount = superMap.getInteger("WH_COUNT");
            int upCount = superMap.getInteger("UPPER_LIMIT");
            int lowCount = superMap.getInteger("LOWER_LIMIT");
            if (whCount >= upCount){
                warning.setWarningType(1);
            }
            if (whCount<=lowCount){
                warning.setWarningType(2);
            }
            warning.setUpperLimit(upCount);
            warning.setLowerLimit(lowCount);
            warning.setWarehouseCount(whCount);
            warning.setStates(1);
            warning.setWarningTime(DateUtil.getCurrentDateFor14());
            warning.setAgencyId(warehouse.getAgencyId());
            warning.setAgencyName(warehouse.getAgencyName());
            warningList.add(warning);
        }
        insertBatch(warningList);
    }
}