cy
2023-11-24 a5e195c4d1cf661ec0f1c03517ce3b5436b7e5b2
feat: 对仓库内物品按型号进行预警判断
1个文件已添加
7个文件已修改
498 ■■■■■ 已修改文件
consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordDetailsService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
deploy-jar-single/src/main/resources/application-dev.yml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
deploy-jar-single/src/main/resources/application-prod.yml 182 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java
@@ -1,11 +1,13 @@
package com.consum.base.controller;
import com.consum.base.BaseController;
import com.consum.base.core.service.LWhWarningCoreServiceImpl;
import com.consum.base.core.utils.CommonUtil;
import com.consum.base.pojo.query.WhWarningQry;
import com.consum.base.service.LWhWarningServiceImpl;
import com.consum.model.po.FinSysTenantUser;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.web.ResponseValue;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.GetMapping;
@@ -50,4 +52,20 @@
        return ResponseValue.success(genericPager);
    }
    @Resource
    private LWhWarningCoreServiceImpl lWhWarningCoreService;
    @GetMapping("/handerChenKuCun")
    public ResponseValue handerChenKuCun() {
        WhWarningQry param = CommonUtil.getObjFromReq(WhWarningQry.class);
        FinSysTenantUser sysInfo = this.getSysInfo();
        long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis());
        lWhWarningCoreService.updateKuCun(param.getWarehouseType(), param.getBaseWarehouseId(), null, sysInfo, dealTime);
        return ResponseValue.success();
    }
}
consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java
New file
@@ -0,0 +1,123 @@
package com.consum.base.core.service;
import cn.hutool.core.convert.Convert;
import com.consum.base.service.BaseGoodsModelsServiceImpl;
import com.consum.base.service.BaseWarehouseServiceImpl;
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 com.walker.infrastructure.utils.NumberGenerator;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @ClassName LWhWarningCoreServiceImpl
 * @Author cy
 * @Date 2023/11/24
 * @Description
 * @Version 1.0
 **/
@Service
public class LWhWarningCoreServiceImpl {
    @Resource
    private LWhWarningServiceImpl lWhWarningService;
    @Resource
    private BaseWarehouseServiceImpl baseWarehouseService;
    @Resource
    private BaseGoodsModelsServiceImpl 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<>();
        }
        // 获取到达到阈值的物品
        List<Map<String, Object>> kuCunNotifyList = lWhWarningService.checkKuCun(warehouseType, warehouseId, baseModelIdList);
        //
//        log.info("没有达到阈值的物品");
        if (CollectionUtils.isEmpty(kuCunNotifyList)) {
            kuCunNormalModel(warehouseType, warehouseId, baseModelIdList);
            return;
        }
        // 将数据插入库存预警【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(NumberGenerator.getLongSequenceNumber());
            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=?";
    private int kuCunNormalModel(Short warehouseType, Long warehouseId, List<Long> baseModelIdList) {
        if (CollectionUtils.isEmpty(baseModelIdList)) {
            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(baseModelIdList)) {
            sql.append(" and BASE_GOODS_MODELS_ID in(?)");
            params.add(baseModelIdList);
        }
        return lWhWarningService.update(sql.toString(), params.toArray());
    }
}
consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java
@@ -32,7 +32,7 @@
    private Long agencyId;
    @ApiModelProperty("仓库类型")
    private Long warehouseType;
    private Short warehouseType;
    @ApiModelProperty("仓库id")
    private Long baseWarehouseId;
consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
@@ -1,23 +1,22 @@
package com.consum.base.service;
import com.consum.base.core.utils.LockManage;
import com.consum.model.po.BaseWarehouse;
import com.consum.model.po.LWarehouseFlow;
import com.consum.model.po.LWhFormProcure;
import com.consum.model.po.LWhGoodsRecord;
import com.consum.model.po.LWhProcureModel;
import com.consum.model.po.*;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.NumberGenerator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @ClassName LWarehouseFlowService
@@ -36,15 +35,22 @@
    private LWhGoodsRecordService lWhGoodsRecordService;
    private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
    @Value("${spring.datasource.dataBaseName}")
    private String dataBaseName;
    @PostConstruct
    public void init() {
        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withCatalogName(dataBaseName).withProcedureName("InsertL_WH_GOODS");
    }
    @Autowired
    public LWarehouseFlowCoreService(JdbcTemplate jdbcTemplate, LWarehouseFlowService lWarehouseFlowService, LWhGoodsService lWhGoodsService,
        BaseGoodsTemplateServiceImpl baseGoodsTemplateService, LWhGoodsRecordService lWhGoodsRecordService) {
                                     BaseGoodsTemplateServiceImpl baseGoodsTemplateService, LWhGoodsRecordService lWhGoodsRecordService) {
        this.jdbcTemplate = jdbcTemplate;
        this.lWarehouseFlowService = lWarehouseFlowService;
        this.baseGoodsTemplateService = baseGoodsTemplateService;
        this.lWhGoodsService = lWhGoodsService;
        this.lWhGoodsRecordService = lWhGoodsRecordService;
        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("InsertL_WH_GOODS");
    }
    /**
@@ -82,11 +88,11 @@
        //统计各型号数量
        Map<Long, Integer> countsSumByBaseGoodsModelsId = goodsModelNumList.stream()
            .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId,
                Collectors.summingInt(LWhProcureModel::getCounts)));
                .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId,
                        Collectors.summingInt(LWhProcureModel::getCounts)));
        Map<Long, List<LWhProcureModel>> sameModelList = goodsModelNumList.stream()
            // 按型号分
            .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId));
                // 按型号分
                .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId));
        countsSumByBaseGoodsModelsId.forEach((baseGoodsModelsId, modelCount) -> {
            //查询型号信息
            Map<String, Object> tempGoodsInfo = baseGoodsTemplateService.queryGoodsInfoByModelId(baseGoodsModelsId);
@@ -136,11 +142,12 @@
                    Long price = item.getPrice();
                    //物品个数
                    Integer counts = item.getCounts();
                    totalPrice = totalPrice + counts*price;
                    totalPrice = totalPrice + counts * price;
                    sameGoodsInsertMore(warehouseFlowId, warehouseType, warehouseId, whGoodsRecordId, (short) 1, warehouseName,
                        classification, tempGoodsId, goodsName, baseGoodsModelsId, modelName,
                        supplier, buyType, goodsUnit, price, procureTime, 1, dealTime, counts);
                };
                            classification, tempGoodsId, goodsName, baseGoodsModelsId, modelName,
                            supplier, buyType, goodsUnit, price, procureTime, 1, dealTime, counts);
                }
                ;
                whGoodsRecord.setTotalPrice(totalPrice);
            }
            lWhGoodsRecordService.insert(whGoodsRecord);
@@ -169,31 +176,31 @@
     * @param pTimes               插入条数
     */
    public void sameGoodsInsertMore(long pWarehouseFlowId, Integer warehouseType, long pWarehouseId, long pWhGoodsRecordId, short pRecordType,
        String pWarehouseName, short pCostType,
        long pBaseGoodsTemplateId, String pGoodsTemplateName, long pBaseGoodsModelsId,
        String pBaseGoodsModelsName, String pSupplier, short pBuyType,
        String pUnit, long pPrice, long pProcureDate,
        int pStates, long pDealTime, int pTimes) {
                                    String pWarehouseName, short pCostType,
                                    long pBaseGoodsTemplateId, String pGoodsTemplateName, long pBaseGoodsModelsId,
                                    String pBaseGoodsModelsName, String pSupplier, short pBuyType,
                                    String pUnit, long pPrice, long pProcureDate,
                                    int pStates, long pDealTime, int pTimes) {
        SqlParameterSource in = new MapSqlParameterSource()
            .addValue("p_WAREHOUSE_FLOW_ID", pWarehouseFlowId)
            .addValue("p_WAREHOUSE_TYPE", warehouseType)
            .addValue("p_WAREHOUSE_ID", pWarehouseId)
            .addValue("p_WH_GOODS_RECORD_ID", pWhGoodsRecordId)
            .addValue("p_RECORD_TYPE", pRecordType)
            .addValue("p_WAREHOUSE_NAME", pWarehouseName)
            .addValue("p_COST_TYPE", pCostType)
            .addValue("p_BASE_GOODS_TEMPLATE_ID", pBaseGoodsTemplateId)
            .addValue("p_GOODS_TEMPLATE_NAME", pGoodsTemplateName)
            .addValue("p_BASE_GOODS_MODELS_ID", pBaseGoodsModelsId)
            .addValue("p_BASE_GOODS_MODELS_NAME", pBaseGoodsModelsName)
            .addValue("p_SUPPLIER", pSupplier)
            .addValue("p_BUY_TYPE", pBuyType)
            .addValue("p_UNIT", pUnit)
            .addValue("p_PRICE", pPrice)
            .addValue("p_PROCURE_DATE", pProcureDate)
            .addValue("p_STATES", pStates)
            .addValue("p_DEAL_TIME", pDealTime)
            .addValue("p_times", pTimes);
                .addValue("p_WAREHOUSE_FLOW_ID", pWarehouseFlowId)
                .addValue("p_WAREHOUSE_TYPE", warehouseType)
                .addValue("p_WAREHOUSE_ID", pWarehouseId)
                .addValue("p_WH_GOODS_RECORD_ID", pWhGoodsRecordId)
                .addValue("p_RECORD_TYPE", pRecordType)
                .addValue("p_WAREHOUSE_NAME", pWarehouseName)
                .addValue("p_COST_TYPE", pCostType)
                .addValue("p_BASE_GOODS_TEMPLATE_ID", pBaseGoodsTemplateId)
                .addValue("p_GOODS_TEMPLATE_NAME", pGoodsTemplateName)
                .addValue("p_BASE_GOODS_MODELS_ID", pBaseGoodsModelsId)
                .addValue("p_BASE_GOODS_MODELS_NAME", pBaseGoodsModelsName)
                .addValue("p_SUPPLIER", pSupplier)
                .addValue("p_BUY_TYPE", pBuyType)
                .addValue("p_UNIT", pUnit)
                .addValue("p_PRICE", pPrice)
                .addValue("p_PROCURE_DATE", pProcureDate)
                .addValue("p_STATES", pStates)
                .addValue("p_DEAL_TIME", pDealTime)
                .addValue("p_times", pTimes);
        Map<String, Object> out = simpleJdbcCall.execute(in);
        System.out.println("Procedure result: " + out);
    }
consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordDetailsService.java
@@ -3,12 +3,14 @@
import com.walker.jdbc.service.BaseServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Map;
@@ -23,10 +25,20 @@
    private final JdbcTemplate jdbcTemplate;
    private SimpleJdbcCall simpleJdbcCall;
    @Value("${spring.datasource.dataBaseName}")
    private String dataBaseName;
    @PostConstruct
    public void init() {
        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate)
                .withCatalogName(dataBaseName)
                .withProcedureName("insert_WH_GOODS_RECORD_DETAILS");
    }
    @Autowired
    public LWhGoodsRecordDetailsService(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("insert_WH_GOODS_RECORD_DETAILS");
    }
    public void sameGoodsInsertMore(List<Long> outGoodsId, long whGoodsRecordId, short thisType) {
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;
/**
@@ -51,7 +53,8 @@
        }
        if (param.getGoodsTemplateId() != null) {
            sql.append(" AND goodsTemp.id=:goodsTemplateId");
            paramts.put("goodsTemplateId", param.getGoodsTemplateId());        }
            paramts.put("goodsTemplateId", param.getGoodsTemplateId());
        }
        //分类
        if (param.getCategoryId() != null) {
            sql.append(" AND cate.id=:categoryId");
@@ -69,4 +72,64 @@
        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";
    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());
    }
}
deploy-jar-single/src/main/resources/application-dev.yml
@@ -5,9 +5,10 @@
    # 是否显示dao中打印的SQL语句
    show-sql: true
# 数据库链接
    dataBaseName: low_consum_manage_dev
    username: root
    password: Bjjmy_2020
    url: jdbc:mysql://116.198.40.76:3306/low_consum_manage_dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    url: jdbc:mysql://116.198.40.76:3306/${spring.datasource.dataBaseName}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
# Druid连接池
    type: com.walker.jdbc.ds.MyDruidDataSource
    druid:
deploy-jar-single/src/main/resources/application-prod.yml
@@ -1,62 +1,15 @@
spring:
  application:
    name: projectProgress
    name: lowConsum
  datasource:
    # 是否显示dao中打印的SQL语句
    show-sql: true
    ##    driver-class-name: sunje.goldilocks.jdbc.GoldilocksDriver
    # 注意:MySQL服务端,需要调整两个参数,否则服务端会主动断开连接
    # wait_timeout: 超过改时间(秒)服务端主动断开
    # interactive_timeout: 客户端工具交互超过这个时间(秒)会端口,表现为navicat
    # Oracle配置,2023-06-25
    #    username: FINANCE_OPS_PROD
    #    password: FINANCE_OPS_PROD
    #    driver-class-name: oracle.jdbc.OracleDriver
    #    url: jdbc:oracle:thin:@10.8.10.2:1521/pdb_YWZC
    #    username: C##FINANCE_OPS_TEST
    #    password: FINANCE_OPS_TEST
    #    driver-class-name: oracle.jdbc.OracleDriver
    #    url: jdbc:oracle:thin:@116.198.40.76:1521/cdb1
    # 数据库链接
    username: root
    password: Bjjmy_2020
    url: jdbc:mysql://116.198.40.76:3306/project_progress_manage_dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    #    username: root
    #    password: Bjjmy_2020
    #    url: jdbc:mysql://116.198.40.76:3306/iplatform?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    # 达梦数据库
    #    driver-class-name: dm.jdbc.driver.DmDriver
    #    username: iplatform
    #    password: iplatform
    #    url: jdbc:dm://116.198.39.83:5236?schema=iplatform
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # 使用 Hikari 连接池
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #    type: com.walker.jdbc.ds.DefaultDataSource
    #    hikari:
    #      minimum-idle: 5
    #      idle-timeout: 600000
    #      pool-name: databasePool_walker
    #      # 连接最大超时时间
    #      connection-timeout: 30000
    #      # 连接池最大数量
    #      maximum-pool-size: 10
    #      # 控制池中连接最大生存期
    #      # max-lifetime: 70000
    #      # 此属性控制测试连接是否活跃的最长时间。此值必须小于 connectionTimeout
    #      validation-timeout: 10000
    #      #
    #      connection-test-query: select 1
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # 使用 Druid 连接池
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    dataBaseName: low_consum_manage_dev
    url: jdbc:mysql://192.200.0.49:3306/${spring.datasource.dataBaseName}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    # Druid连接池
    type: com.walker.jdbc.ds.MyDruidDataSource
    druid:
      initial-size: 5
@@ -77,18 +30,12 @@
      pool-prepared-statements: true
      max-open-prepared-statements: 100
      use-global-data-source-stat: true
  #  redis:
  #    host: 127.0.0.1
  #    port: 6379
  #    database: 10
  #    #password: Jmy2019.
  # Redis
  redis:
    host: 116.198.40.76
    host: 192.200.0.49
    port: 6379
    database: 11
    password: Jmy2019.
  mvc:
    pathmatch:
@@ -104,9 +51,9 @@
      max-request-size: 300MB
server:
  port: 8082
  port: 9301
  servlet:
    context-path: /progress
    context-path: /
    session:
      timeout: 30m
@@ -122,9 +69,7 @@
    com:
      walker: debug
      iplatform: debug
      finance: debug
      cti: debug
      robot: error
      progess: debug
  charset:
    # 控制台编码
@@ -141,9 +86,9 @@
      # 例如: 日期为:2023/07/13 ,则打包文件之后为: log/ota.2023-07-13.0.gz,0表示日志的第一部分,后续就是,1,2,3...
      # 如果是压缩包,里面会多一个名log/ota.2023-07-13.0的日志文件
      # 如下面的例子,打包之后为: log/2023-07/ota.2020-07-13.0.log,这是一个日志文件
      file-name-pattern: ${logging.file.path}%d{yyyy-MM}/finance.%d{yyyy-MM-dd}.%i.log
      file-name-pattern: ${logging.file.path}%d{yyyy-MM}/progess.%d{yyyy-MM-dd}.%i.log
  file:
    name: ${logging.file.path}finance.log
    name: ${logging.file.path}consum.log
    path: D:/log/
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -181,65 +126,25 @@
  security:
    # 匿名可访问地址(开放地址)
    anonymous-list:
      - /platform/fin/sc
      - /chat/auto/robot/**
      - /login
      - /register
      - /captcha/*      # 验证码统一放开
      - /test/**        # 开发测试,仅开发板可用
      - /file/** # 文件上传
      - /platform/fin/sc # 一键生成
      - /login # 登录
      - /register # 注册
      - /captcha/* # 验证码统
      - /test/** # 开发测试,仅开发板可用
      - /swagger-resources/** # swagger
      - /swagger-ui/**  # swagger
      - /v3/**          # swagger
      - /pay/notify/**  # 支付通知
      - /jmreport/**    # 积木报表
      - /api/cti/net/** # 网络连接状态检测
      - /api/cti/customer/** # 客服设置
      - /api/** # 呼叫中心回调
      - /platform/fin/**
      - /platform/fin/sys/org/**
      - /platform/fin/sys/user/**
      - /platform/fin/sys/project/**
      - /platform/fin/sys/tenant/**
      - /platform/fin/sys/tenant/user/**
      - /robot/**
      - /platform/fin/supplier/**
      - /chat/user/** #聊天
      - /third_party/budget/login
      - /platform/fin/project/** # 预算一体化登录对接,前端访问的登录地址。2023-07-03
      - /platform/fin/sys/server/**
      - /platform/fin/project/category/**
      - platform/fin/sys/tenant/user/**   #用户
      - /platform/fin/project/**
      - /platform/fin/event/**
      - /admin/platform/fin/project/*
      - /platform/fin/sla/config/**
      - /platform/fin/library/**
      - /platform/fin/sla/**
      - /platform/fin/supplier/user/getRole
      - /admin/platform/fin/sys/tenant/user/*   # 预算一体化登录对接,前端访问的登录地址。2023-07-03
      - /system/role/**
      - /robot/test/**
      - /platform/fin/node/**
      - /platform/fin/project/member/**   #团队成员
      - /robot/**
      - /platform/fin/init/jn/**  #初始化接口
      - /platform/fin/project/manage/**
      - /platform/fin/sla/config/**  #初始化接口
      - /platform/fin/sla/**  #初始化接口
      - /platform/fin/cate/user/select/sla/**  #初始化接口
      - /platform/fin/sta/template/**  #满意度接口
      - /system/dict/type
      - /platform/fin/chat/reply/** #快捷回复
      - /platform/fin/file/upload #文件上传,请勿禁用和配置
      - /file/** #请勿禁用和配置
      - /platform/fin/node/define/select
      - /platform/fin/cate/user/**
      - /platform/fin/node/define/**
      # 预算一体化登录对接,前端访问的登录地址。2023-07-03
      - /system/** # 系统设置
      - /pc/** # PC端接口
      - /wx/** # 微信端接口
    # 允许所有认证用户都可访问地址,请慎重否则权限都过大,一般API都应该设置在这里
    permit-list:
      #      - /permit # 公用权限,2023-03-13,平台代码已经添加过了,这里不需要配置
      - /getInfo
      - /system/**
      - /p/**
      - /getRouters
      - /getMenus # 新界面菜单,2023-05-12
      - /logout
@@ -310,14 +215,13 @@
    # FileStoreType = FileSystem 本地磁盘存储根路径
    file-root: d:/tmp/
    ftp:
      ip: 116.198.40.76
      ip: 192.200.0.28
      port: 22
      user-name: mysftp
      password: Bjjmy_2020
      password: Jmy@2023
      private-key:
      # ftp服务上面的存储根路径,只能是linux路径
      #      file-root: /files/
      file-root: /train/
      file-root: /lowconsum/
  # 接口文档生成,swagger3,2023-02-23
  swagger:
@@ -326,34 +230,6 @@
    title: 云原生微服务平台
    description: 一个快速web开发框架
  # TCP通信配置,2023-04-17
  tcp:
    # 是否开启引擎
    enabled: true
    # 是否打开心跳
    open-heart-beat: false
    # 心跳时间(秒),2023-08-28
    heart-beat-seconds: 120
    # 是否显示详细日志
    show-log: false
    # 请求队列类型:memory 基于内存
    queue-type: memory
    # tcp方式要扫描的请求对象的包空间
    scan-packages-tcp: com.walker.tcp,com.iplatform.tcp
    # websocket方式要扫描的请求对象的包空间
    scan-packages-ws: com.iplatform.tcp.util.ws,com.finance.chat.util.ws
    # tcp长连接的端口
    port-tcp: 7878
    # websocket连接端口
    port-ws: 60000
    # websocket连接uri
    websocket-uri: ws://172.16.60.41:60000/websocket
    # 通信线程数量
    boss-thread-num: 2
    # 业务处理线程数量
    worker-thread-num: 4
    # 启用自定义连接管理器,如果true则业务需要提供自定义实现(配置),2023-07-18
    custom-connection-manager: true
  # 推送模块配置,2023-04-25
  push:
@@ -373,9 +249,3 @@
    mail-server: smtp.126.com
    mail-from: hnzzzhsl@126.com
    mail-password: test
fin:
  projectCode: CZT_YS_YTH_001
  # 区分省级CODE
  provinceCode: 410000000