chengf
2025-07-23 95c8b98c6b8f837d3ca0d1e717cfcd845d1557fb
添加导入白单流水功能2025/07/23
6个文件已添加
513 ■■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/PropertyWhiteListFlowDto.java 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/PropertyWhiteListFlowDaoImplMapper.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-interface/src/main/java/com/java110/intf/IImportPropertyWhiteListfFlowServiceSMO.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/importData/adapt/ImportPropertyWhiteListfFlowAdapt.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-community/src/main/java/com/java110/community/smo/impl/IImportPropertyWhiteListfFlowServiceSMOImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/importData/adapt/ImportPropertyWhiteListfFlowQueueDataAdapt.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/PropertyWhiteListFlowDto.java
New file
@@ -0,0 +1,230 @@
package com.java110.dto;
import java.math.BigDecimal;
import java.util.Date;
/**
 * 物业白单流水DTO类,用于ORM操作
 */
public class PropertyWhiteListFlowDto {
    private String id; // 自增主键,唯一标识一条白单流水
    private String chargeTime; // 收费日期,格式YYYY-MM-DD(必输)
    private String invoiceReceiptNo; // 发票、收据号码(字符类型,非必输)
    private String roomId; // 房号,格式如111-2-804(非必输)
    private String propertyAddress; // 业主地址(非必输)
    private String doorRoomNum; // 门幢室号(非必输)
    private String secondaryFeeTypeCd; // 收费内容(费用子类型,二级分类,非必输)
    private String chargeAmount; // 收费金额(数值型,小数点后两位)
    private String charger; // 收费人(字符类型,非必输)
    private String bankDepositDate; // 银行解款日期(非必输)
    private String bankDepositor; // 银行解款人(非必输)
    private String splitBankDepositAmount; // 拆分后银行解款金额(只记录不计算,非必输)
    private String bankDepositAmount; // 银行解款金额(只记录不计算,非必输)
    private String checkAmount; // 核对金额(只记录不计算,非必输)
    private String whiteListArchiveNo; // 白单存档编号(字符类型,只记录不计算,非必输)
    private String sheetCount; // 张数(只记录不计算,非必输)
    private String financialReceiver; // 财务收账人(收款人,手工输入,暂不开发,非必输)
    private String inputTime; // 输入时间(格式YYYY-MM-DD,非必输)
    private String inputPerson; // 输入人员(非必输)
    private String orderNo; // 单号(字符类型,非必输)
    private String licensePlate; // 车牌号(非必输)
    private String category22; // 22项分类(非必输)
    private String chargeStart; // 收费起(格式YYYY-MM-DD)
    private String chargeEnd; // 收费止(格式YYYY-MM-DD)
    // 无参构造函数
    public PropertyWhiteListFlowDto() {
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getChargeTime() {
        return chargeTime;
    }
    public void setChargeTime(String chargeTime) {
        this.chargeTime = chargeTime;
    }
    public String getInvoiceReceiptNo() {
        return invoiceReceiptNo;
    }
    public void setInvoiceReceiptNo(String invoiceReceiptNo) {
        this.invoiceReceiptNo = invoiceReceiptNo;
    }
    public String getRoomId() {
        return roomId;
    }
    public void setRoomId(String roomId) {
        this.roomId = roomId;
    }
    public String getPropertyAddress() {
        return propertyAddress;
    }
    public void setPropertyAddress(String propertyAddress) {
        this.propertyAddress = propertyAddress;
    }
    public String getDoorRoomNum() {
        return doorRoomNum;
    }
    public void setDoorRoomNum(String doorRoomNum) {
        this.doorRoomNum = doorRoomNum;
    }
    public String getSecondaryFeeTypeCd() {
        return secondaryFeeTypeCd;
    }
    public void setSecondaryFeeTypeCd(String secondaryFeeTypeCd) {
        this.secondaryFeeTypeCd = secondaryFeeTypeCd;
    }
    public String getChargeAmount() {
        return chargeAmount;
    }
    public void setChargeAmount(String chargeAmount) {
        this.chargeAmount = chargeAmount;
    }
    public String getCharger() {
        return charger;
    }
    public void setCharger(String charger) {
        this.charger = charger;
    }
    public String getBankDepositDate() {
        return bankDepositDate;
    }
    public void setBankDepositDate(String bankDepositDate) {
        this.bankDepositDate = bankDepositDate;
    }
    public String getBankDepositor() {
        return bankDepositor;
    }
    public void setBankDepositor(String bankDepositor) {
        this.bankDepositor = bankDepositor;
    }
    public String getSplitBankDepositAmount() {
        return splitBankDepositAmount;
    }
    public void setSplitBankDepositAmount(String splitBankDepositAmount) {
        this.splitBankDepositAmount = splitBankDepositAmount;
    }
    public String getBankDepositAmount() {
        return bankDepositAmount;
    }
    public void setBankDepositAmount(String bankDepositAmount) {
        this.bankDepositAmount = bankDepositAmount;
    }
    public String getCheckAmount() {
        return checkAmount;
    }
    public void setCheckAmount(String checkAmount) {
        this.checkAmount = checkAmount;
    }
    public String getWhiteListArchiveNo() {
        return whiteListArchiveNo;
    }
    public void setWhiteListArchiveNo(String whiteListArchiveNo) {
        this.whiteListArchiveNo = whiteListArchiveNo;
    }
    public String getSheetCount() {
        return sheetCount;
    }
    public void setSheetCount(String sheetCount) {
        this.sheetCount = sheetCount;
    }
    public String getFinancialReceiver() {
        return financialReceiver;
    }
    public void setFinancialReceiver(String financialReceiver) {
        this.financialReceiver = financialReceiver;
    }
    public String getInputTime() {
        return inputTime;
    }
    public void setInputTime(String inputTime) {
        this.inputTime = inputTime;
    }
    public String getInputPerson() {
        return inputPerson;
    }
    public void setInputPerson(String inputPerson) {
        this.inputPerson = inputPerson;
    }
    public String getOrderNo() {
        return orderNo;
    }
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }
    public String getLicensePlate() {
        return licensePlate;
    }
    public void setLicensePlate(String licensePlate) {
        this.licensePlate = licensePlate;
    }
    public String getCategory22() {
        return category22;
    }
    public void setCategory22(String category22) {
        this.category22 = category22;
    }
    public String getChargeStart() {
        return chargeStart;
    }
    public void setChargeStart(String chargeStart) {
        this.chargeStart = chargeStart;
    }
    public String getChargeEnd() {
        return chargeEnd;
    }
    public void setChargeEnd(String chargeEnd) {
        this.chargeEnd = chargeEnd;
    }
}
java110-db/src/main/resources/mapper/PropertyWhiteListFlowDaoImplMapper.xml
New file
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="propertyWhiteListFlowDaoImplMapper">
    <insert id="savePropertyWhiteListFlow" parameterType="Map">
        INSERT INTO property_white_list_flow (
        charge_time,
        <if test="invoiceReceiptNo != null">invoice_receipt_no,</if>
        <if test="roomId != null">room_id,</if>
        <if test="propertyAddress != null">property_address,</if>
        <if test="doorRoomNum != null">door_room_num,</if>
        <if test="secondaryFeeTypeCd != null">secondary_fee_type_cd,</if>
        <if test="chargeAmount != null">charge_amount,</if>
        <if test="charger != null">charger,</if>
        <if test="bankDepositDate != null">bank_deposit_date,</if>
        <if test="bankDepositor != null">bank_depositor,</if>
        <if test="splitBankDepositAmount != null">split_bank_deposit_amount,</if>
        <if test="bankDepositAmount != null">bank_deposit_amount,</if>
        <if test="checkAmount != null">check_amount,</if>
        <if test="whiteListArchiveNo != null">white_list_archive_no,</if>
        <if test="sheetCount != null">sheet_count,</if>
        <if test="financialReceiver != null">financial_receiver,</if>
        <if test="inputTime != null">input_time,</if>
        <if test="inputPerson != null">input_person,</if>
        <if test="orderNo != null">order_no,</if>
        <if test="licensePlate != null">license_plate,</if>
        <if test="category22 != null">category_22,</if>
        <if test="chargeStart != null">charge_start,</if>
        <if test="chargeEnd != null">charge_end</if>
        ) VALUES (
        #{chargeTime},
        <if test="invoiceReceiptNo != null">#{invoiceReceiptNo},</if>
        <if test="roomId != null">#{roomId},</if>
        <if test="propertyAddress != null">#{propertyAddress},</if>
        <if test="doorRoomNum != null">#{doorRoomNum},</if>
        <if test="secondaryFeeTypeCd != null">#{secondaryFeeTypeCd},</if>
        <if test="chargeAmount != null">#{chargeAmount},</if>
        <if test="charger != null">#{charger},</if>
        <if test="bankDepositDate != null">#{bankDepositDate},</if>
        <if test="bankDepositor != null">#{bankDepositor},</if>
        <if test="splitBankDepositAmount != null">#{splitBankDepositAmount},</if>
        <if test="bankDepositAmount != null">#{bankDepositAmount},</if>
        <if test="checkAmount != null">#{checkAmount},</if>
        <if test="whiteListArchiveNo != null">#{whiteListArchiveNo},</if>
        <if test="sheetCount != null">#{sheetCount},</if>
        <if test="financialReceiver != null">#{financialReceiver},</if>
        <if test="inputTime != null">#{inputTime},</if>
        <if test="inputPerson != null">#{inputPerson},</if>
        <if test="orderNo != null">#{orderNo},</if>
        <if test="licensePlate != null">#{licensePlate},</if>
        <if test="category22 != null">#{category22},</if>
        <if test="chargeStart != null">#{chargeStart},</if>
        <if test="chargeEnd != null">#{chargeEnd}</if>
        )
    </insert>
</mapper>
java110-interface/src/main/java/com/java110/intf/IImportPropertyWhiteListfFlowServiceSMO.java
New file
@@ -0,0 +1,25 @@
package com.java110.intf;
import com.java110.config.feign.FeignConfiguration;
import com.java110.dto.PropertyWhiteListFlowDto;
import com.java110.dto.importData.ImportOwnerRoomDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;
/**
 * @ClassName IFloorInnerServiceSMO
 * @Description 小区楼接口类
 * @Author wuxw
 * @Date 2019/4/24 9:04
 * @Version 1.0
 * add by wuxw 2019/4/24
 **/
@FeignClient(name = "community-service", configuration = {FeignConfiguration.class})
public interface IImportPropertyWhiteListfFlowServiceSMO {
    int savePropertyWhiteListFlow(@RequestBody List<PropertyWhiteListFlowDto> importOwnerRoomDtos);
}
service-api/src/main/java/com/java110/api/importData/adapt/ImportPropertyWhiteListfFlowAdapt.java
New file
@@ -0,0 +1,91 @@
package com.java110.api.importData.adapt;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.importData.DefaultImportDataAdapt;
import com.java110.api.importData.IImportDataCleaningAdapt;
import com.java110.dto.PropertyWhiteListFlowDto;
import com.java110.dto.importData.ImportRoomFee;
import com.java110.dto.system.ComponentValidateResult;
import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO;
import com.java110.intf.user.IUserInnerServiceSMO;
import com.java110.utils.util.Assert;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.ImportExcelUtils;
import com.java110.utils.util.StringUtil;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service("importPropertyWhiteListfFlowDataCleaning")
public class ImportPropertyWhiteListfFlowAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt {
    @Autowired
    private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
    @Autowired
    private IUserInnerServiceSMO userInnerServiceSMOImpl;
    @Override
    public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception {
        generatorBatch(paramIn);
        List<PropertyWhiteListFlowDto> whiteLists = new ArrayList<PropertyWhiteListFlowDto>();
        //获取车辆信息
        getPropertyWhiteListFlowDtos(workbook, whiteLists);
        return whiteLists;
    }
    private void getPropertyWhiteListFlowDtos(Workbook workbook, List<PropertyWhiteListFlowDto> whiteLists) {
        Sheet sheet = null;
        sheet = ImportExcelUtils.getSheet(workbook, "白单流水(归档数据)");
        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
        PropertyWhiteListFlowDto white = null;
        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
            Object[] os = oList.get(osIndex);
            if (osIndex == 0) { // 第一行是 头部信息 直接跳过
                continue;
            }
            if (StringUtil.isNullOrNone(os[0])) {
                continue;
            }
            Assert.hasValue(os[0], (osIndex + 1) + "行收费日期不能为空");
            white = new PropertyWhiteListFlowDto();
            white.setChargeTime(os[0].toString());
            white.setInvoiceReceiptNo(os[1] == null ? null : os[1].toString());
            white.setRoomId(os[2] == null ? null : os[2].toString());
            white.setPropertyAddress(os[3] == null ? null : os[3].toString());
            white.setDoorRoomNum(os[4] == null ? null : os[4].toString());
            white.setSecondaryFeeTypeCd(os[5] == null ? null : os[5].toString());
            white.setChargeAmount(os[6] == null ? null : os[6].toString());
            white.setCharger(os[7] == null ? null : os[7].toString());
            white.setBankDepositDate(os[8] == null ? null : os[8].toString());
            white.setSheetCount(os[9] == null ? null : os[9].toString());
            white.setFinancialReceiver(os[10] == null ? null : os[10].toString());
            white.setInputTime(os[11] == null ? null : os[11].toString());
            white.setInputPerson(os[12] == null ? null : os[12].toString());
            white.setOrderNo(os[13] == null ? null : os[13].toString());
            white.setLicensePlate(os[14] == null ? null : os[14].toString());
            white.setCategory22(os[15] == null ? null : os[15].toString());
            white.setChargeStart(os[16] == null ? null : os[16].toString());
            white.setChargeEnd(os[17] == null ? null : os[17].toString());
            whiteLists.add(white);
        }
    }
    /**
     * 生成批次号
     *
     * @param reqJson
     */
}
service-community/src/main/java/com/java110/community/smo/impl/IImportPropertyWhiteListfFlowServiceSMOImpl.java
New file
@@ -0,0 +1,47 @@
package com.java110.community.smo.impl;
import com.java110.core.base.smo.BaseServiceSMO;
import com.java110.core.client.RestTemplate;
import com.java110.core.log.LoggerFactory;
import com.java110.dto.PropertyWhiteListFlowDto;
import com.java110.dto.importData.ImportOwnerRoomDto;
import com.java110.intf.IImportPropertyWhiteListfFlowServiceSMO;
import com.java110.intf.user.IUserV1InnerServiceSMO;
import com.java110.utils.util.BeanConvertUtil;
import org.mybatis.spring.SqlSessionTemplate;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
 * 小区服务内部类
 */
@RestController
public class IImportPropertyWhiteListfFlowServiceSMOImpl extends BaseServiceSMO implements IImportPropertyWhiteListfFlowServiceSMO {
    private static Logger logger = LoggerFactory.getLogger(IImportPropertyWhiteListfFlowServiceSMOImpl.class);
    @Autowired
    protected SqlSessionTemplate sqlSessionTemplate;
    @Override
    public int savePropertyWhiteListFlow(@RequestBody List<PropertyWhiteListFlowDto> importOwnerRoomDtos) {
        int successCount = 0;
        if (importOwnerRoomDtos == null || importOwnerRoomDtos.size() < 1) {
            return 0;
        }
        // 1.0 查看 楼栋是否存在
        for (PropertyWhiteListFlowDto importOwnerRoomDto : importOwnerRoomDtos) {
            successCount += sqlSessionTemplate.insert("propertyWhiteListFlowDaoImplMapper.savePropertyWhiteListFlow",BeanConvertUtil.beanCovertMap(importOwnerRoomDto));
        }
        return successCount;
    }
}
service-job/src/main/java/com/java110/job/importData/adapt/ImportPropertyWhiteListfFlowQueueDataAdapt.java
New file
@@ -0,0 +1,65 @@
package com.java110.job.importData.adapt;
import com.alibaba.fastjson.JSONObject;
import com.java110.dto.importData.ImportOwnerRoomDto;
import com.java110.dto.log.AssetImportLogDetailDto;
import com.java110.intf.community.IImportOwnerRoomInnerServiceSMO;
import com.java110.job.importData.DefaultImportData;
import com.java110.job.importData.IImportDataAdapt;
import com.java110.utils.util.BeanConvertUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * 房产信息导入 适配器
 * 前端请求 时 必须传入
 *   param.append('importAdapt', "importRoomOwner");
 */
@Service("importPropertyWhiteListfFlowQueueData")
public class ImportPropertyWhiteListfFlowQueueDataAdapt extends DefaultImportData implements IImportDataAdapt {
    @Autowired
    private IImportOwnerRoomInnerServiceSMO importOwnerRoomInnerServiceSMOImpl;
    @Override
    public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) {
        importDatas(assetImportLogDetailDtos);
    }
    private void importDatas(List<AssetImportLogDetailDto> infos) {
        String state = "";
        String msg = "";
        for (AssetImportLogDetailDto assetImportLogDetailDto : infos) {
            try {
                doImportData(assetImportLogDetailDto);
                updateImportLogDetailState(assetImportLogDetailDto.getDetailId());
            } catch (Exception e) {
                e.printStackTrace();
                updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e);
            }
        }
    }
    /**
     * 导入数据
     *
     * @param assetImportLogDetailDto
     */
    private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) {
        JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent());
        ImportOwnerRoomDto importOwnerRoomDto = BeanConvertUtil.covertBean(data, ImportOwnerRoomDto.class);
        int flag = importOwnerRoomInnerServiceSMOImpl.saveOwnerRoom(importOwnerRoomDto);
        if (flag < 1) {
            throw new IllegalArgumentException("导入失败");
        }
    }
}