puhanshu
2021-10-13 d48aecc6db7ded9a38f9472dc2afd540763b7b0d
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/WarehouseDonatesExcelListen.java
@@ -1,8 +1,10 @@
package com.panzhihua.common.listen;
import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.alibaba.excel.context.AnalysisContext;
@@ -39,26 +41,33 @@
    @Override
    public void invoke(WarehouseDonatesExcelVO warehouseDonatesExcelVO, AnalysisContext analysisContext) {
        if (StringUtils.isEmpty(warehouseDonatesExcelVO.getItem())) {
            throw new ServiceException("捐赠物品名称不可为空");
        }
        Integer quantity = warehouseDonatesExcelVO.getQuantity();
        if (isNull(quantity) || quantity <= 0) {
            throw new ServiceException("捐赠数量有误");
        }
        if (StringUtils.isEmpty(warehouseDonatesExcelVO.getName())) {
            warehouseDonatesExcelVO.setIsAnonymous("是");
        }
        warehouseDonatesExcelVO.setCommunityId(this.communityId);
        warehouseDonatesExcelVO.setStatus(2);
        warehouseDonatesExcelVO.setSurplusQuantity(quantity);
        warehouseDonatesExcelVO.setRegisterBy(this.registerBy);
        warehouseDonatesExcelVO.setSigningBy(this.registerBy);
        list.add(warehouseDonatesExcelVO);
        // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
        if (list.size() >= BATCH_COUNT) {
            doAfterAllAnalysed(analysisContext);
            list.clear();
        if (!StringUtils.isEmpty(warehouseDonatesExcelVO.getItem()) && nonNull(quantity)) {
            if (quantity <= 0) {
                throw new ServiceException("捐赠数量有误");
            }
            if (StringUtils.isEmpty(warehouseDonatesExcelVO.getName())
                    || isNull(warehouseDonatesExcelVO.getIsAnonymous())) {
                warehouseDonatesExcelVO.setIsAnonymous("是");
            }
            if (isNull(warehouseDonatesExcelVO.getSigningAt())) {
                Date nowDate = new Date();
                warehouseDonatesExcelVO.setSigningAt(nowDate);
                warehouseDonatesExcelVO.setRegisterAt(nowDate);
            } else {
                warehouseDonatesExcelVO.setRegisterAt(warehouseDonatesExcelVO.getSigningAt());
            }
            warehouseDonatesExcelVO.setCommunityId(this.communityId);
            warehouseDonatesExcelVO.setStatus(2);
            warehouseDonatesExcelVO.setSurplusQuantity(quantity);
            warehouseDonatesExcelVO.setRegisterBy(this.registerBy);
            warehouseDonatesExcelVO.setSigningBy(this.registerBy);
            list.add(warehouseDonatesExcelVO);
            // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
            if (list.size() >= BATCH_COUNT) {
                doAfterAllAnalysed(analysisContext);
                list.clear();
            }
        }
    }