cy
2023-11-27 20c30d26f8bab22a4cb6b6459962fa92d6da490f
consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java
@@ -3,11 +3,13 @@
import com.consum.base.core.utils.MapperUtil;
import com.consum.base.pojo.query.WhWarningQry;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@@ -25,14 +27,14 @@
    public GenericPager<Map<String, Object>> getListWithPage(WhWarningQry param) {
        StringBuilder sql = new StringBuilder(GET_LIST_WITH_PAGE);
        HashMap<String, Object> paramts = new HashMap<>();
        if (param.getStates() != null){
        if (param.getStates() != null) {
            sql.append(" AND wareWarn.states = :states");
            paramts.put("states", param.getStates());
        }
        //机构
        if (param.getAgencyId() != null) {
            sql.append(" and left(ware.AGENCY_ID, length(:lengthAgencyId)) = :agencyId");
            paramts.put("lengthAgencyId", param.getAgencyId());
            sql.append(" and ware.AGENCY_ID=:agencyId");
//            paramts.put("lengthAgencyId", param.getAgencyId());
            paramts.put("agencyId", param.getAgencyId());
        }
        //仓库类型
@@ -49,6 +51,10 @@
            sql.append(" AND goodsTemp.GOODS_NAME like :goodsTemplateName");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getGoodsTemplateId() != null) {
            sql.append(" AND goodsTemp.id=:goodsTemplateId");
            paramts.put("goodsTemplateId", param.getGoodsTemplateId());
        }
        //分类
        if (param.getCategoryId() != null) {
            sql.append(" AND cate.id=:categoryId");
@@ -61,9 +67,73 @@
            sql.append(" AND cate.CLASSIFICATION=':costType'");
            paramts.put("costType", costType);
        }
        if (param.getWarningType() != null) {
            sql.append(" AND wareWarn.WARNING_TYPE=:warningType");
            paramts.put("warningType", param.getWarningType());
        }
        sql.append(" ORDER BY wareWarn.id DESC ");
        sql.append(" ORDER BY wareWarn.DEAL_TIME DESC ");
        return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
    }
    /**
     * 查询指定仓库的库存是否超预警
     *
     * @param warehouseType
     * @param warehouseId
     * @param baseModelId
     */
    private String CHECK_KUCUN_PREFIX = "SELECT warnConf.*,goods.goods_Num,CASE WHEN warnConf.LOWER_LIMIT>=goods.goods_Num THEN 2 WHEN warnConf.UPPER_LIMIT<=goods.goods_Num THEN 1 END AS WARNING_TYPE FROM (";
    private String CHECK_KUCUN_CONFIG_PREFIX = "SELECT WAREHOUSE_TYPE,BASE_WAREHOUSE_ID,BASE_GOODS_MODELS_ID,LOWER_LIMIT,UPPER_LIMIT FROM WH_WARNING_CONFIG";
    private String CHECK_KUCUN_CONFIG_WHERE = " WHERE 1=1";
    private String CHECK_KUCUN_CONFIG_JOINTKUCUN = ") warnConf LEFT JOIN (";
    private String CHECK_KUCUN_KUCUN_PREFIX = "SELECT WAREHOUSE_TYPE,WAREHOUSE_ID,BASE_GOODS_MODELS_ID,count(1) goods_Num FROM L_WH_GOODS";
    private String CHECK_KUCUN_KUCUN_WHERE = " WHERE 1=1 and STATES=1";
    private String CHECK_KUCUN_KUCUN_END = " GROUP BY BASE_GOODS_MODELS_ID)";
    private String CHECK_KUCUN_END = "goods ON goods.BASE_GOODS_MODELS_ID=warnConf.BASE_GOODS_MODELS_ID AND goods.WAREHOUSE_TYPE=warnConf.WAREHOUSE_TYPE AND goods.BASE_GOODS_MODELS_ID=warnConf.BASE_GOODS_MODELS_ID WHERE (warnConf.LOWER_LIMIT>=goods.goods_Num OR warnConf.UPPER_LIMIT<=goods.goods_Num)";
    public List<Map<String, Object>> checkKuCun(Short warehouseType, Long warehouseId, List<Long> baseModelIdList) {
        StringBuilder checkKucunPrefix = new StringBuilder(CHECK_KUCUN_PREFIX);
        StringBuilder checkKucunConfigPrefix = new StringBuilder(CHECK_KUCUN_CONFIG_PREFIX);
        StringBuilder checkKucunConfigWhere = new StringBuilder(CHECK_KUCUN_CONFIG_WHERE);
        StringBuilder checkKucunConfigJointkucun = new StringBuilder(CHECK_KUCUN_CONFIG_JOINTKUCUN);
        StringBuilder checkKucunKucunPrefix = new StringBuilder(CHECK_KUCUN_KUCUN_PREFIX);
        StringBuilder checkKucunKucunWhere = new StringBuilder(CHECK_KUCUN_KUCUN_WHERE);
        StringBuilder checkKucunKucunEnd = new StringBuilder(CHECK_KUCUN_KUCUN_END);
        StringBuilder checkKucunEnd = new StringBuilder(CHECK_KUCUN_END);
        Map<String, Object> paramMap = new HashMap<>();
        if (warehouseType != null) {
            checkKucunConfigWhere.append(" and WAREHOUSE_TYPE =:ConfigWarehouseType");
            paramMap.put("ConfigWarehouseType", warehouseType);
            checkKucunKucunWhere.append(" and WAREHOUSE_TYPE =:KuCunWarehouseType");
            paramMap.put("KuCunWarehouseType", warehouseType);
        }
        if (warehouseId != null) {
            checkKucunConfigWhere.append(" and BASE_WAREHOUSE_ID =:ConfigWarehouseId");
            paramMap.put("ConfigWarehouseId", warehouseId);
            checkKucunKucunWhere.append(" and WAREHOUSE_ID =:KuCunWarehouseId");
            paramMap.put("KuCunWarehouseId", warehouseId);
        }
        if (!CollectionUtils.isEmpty(baseModelIdList)) {
            checkKucunConfigWhere.append(" and BASE_GOODS_MODELS_ID in(:ConfigBaseModelIds)");
            paramMap.put("ConfigBaseModelIds", baseModelIdList);
            checkKucunKucunWhere.append(" and BASE_GOODS_MODELS_ID in(:KuCunBaseModelIds)");
            paramMap.put("KuCunBaseModelIds", baseModelIdList);
        }
        checkKucunPrefix.append(checkKucunConfigPrefix)
                .append(checkKucunConfigWhere)
                .append(checkKucunConfigJointkucun)
                .append(checkKucunKucunPrefix)
                .append(checkKucunKucunWhere)
                .append(checkKucunKucunEnd)
                .append(checkKucunEnd);
        return select(checkKucunPrefix.toString(), paramMap, new MapperUtil());
    }
}