Sfoglia il codice sorgente

优化自定义费用创建

Your Name 3 anni fa
parent
commit
8d62b0752f

+ 20 - 0
java110-bean/src/main/java/com/java110/dto/importData/ImportRoomFee.java

@@ -5,6 +5,8 @@ package com.java110.dto.importData;
  */
 public class ImportRoomFee {
 
+    private String payerObjName;
+
     private String floorNum;
 
     private String unitNum;
@@ -52,6 +54,8 @@ public class ImportRoomFee {
 
     private String configId;
 
+    private String feeTypeCd;
+
 
     public String getFloorNum() {
         return floorNum;
@@ -256,4 +260,20 @@ public class ImportRoomFee {
     public void setConfigId(String configId) {
         this.configId = configId;
     }
+
+    public String getFeeTypeCd() {
+        return feeTypeCd;
+    }
+
+    public void setFeeTypeCd(String feeTypeCd) {
+        this.feeTypeCd = feeTypeCd;
+    }
+
+    public String getPayerObjName() {
+        return payerObjName;
+    }
+
+    public void setPayerObjName(String payerObjName) {
+        this.payerObjName = payerObjName;
+    }
 }

+ 151 - 0
service-api/src/main/java/com/java110/api/importData/adapt/ImportRoomFeeDataCleaningAdapt.java

@@ -0,0 +1,151 @@
+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.fee.FeeDto;
+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;
+
+/**
+ * 一次性费用导入
+ * 方式1
+ */
+@Service("importRoomFeeDataCleaning")
+public class ImportRoomFeeDataCleaningAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt {
+
+    @Autowired
+    private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IUserInnerServiceSMO userInnerServiceSMOImpl;
+
+    @Override
+    public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception {
+        List<ImportRoomFee> importRoomFees = new ArrayList<ImportRoomFee>();
+        if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(paramIn.getString("objType"))) {
+            getRooms(workbook, importRoomFees);
+        }else{
+            getCars(workbook, importRoomFees);
+        }
+        generatorBatch(paramIn);
+        for (ImportRoomFee importRoomFee : importRoomFees) {
+            importRoomFee.setBatchId(paramIn.getString("batchId"));
+            importRoomFee.setUserId(paramIn.getString("userId"));
+            importRoomFee.setStoreId(paramIn.getString("storeId"));
+            importRoomFee.setCommunityId(paramIn.getString("communityId"));
+            importRoomFee.setFeeTypeCd(paramIn.getString("feeTypeCd"));
+            importRoomFee.setObjType(paramIn.getString("objType"));
+
+        }
+        return importRoomFees;
+    }
+
+    /**
+     * 获取 房屋信息
+     *
+     * @param workbook
+     * @param rooms
+     */
+    private void getRooms(Workbook workbook, List<ImportRoomFee> rooms) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "房屋费用信息");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportRoomFee importRoomFee = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0 || osIndex == 1) { // 第一行是 头部信息 直接跳过
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+
+            //费用名称没有填写,默认跳过
+            if (StringUtil.isNullOrNone(os[4])) {
+                continue;
+            }
+            Assert.hasValue(os[1], (osIndex + 1) + "行费用名称不能为空");
+            Assert.hasValue(os[2], (osIndex + 1) + "行开始时间不能为空");
+            Assert.hasValue(os[3], (osIndex + 1) + "行结束时间不能为空");
+            Assert.hasValue(os[4], (osIndex + 1) + "行费用不能为空");
+
+//
+
+            String startTime = excelDoubleToDate(os[2].toString());
+            String endTime = excelDoubleToDate(os[3].toString());
+            Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD 文本格式");
+            Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD 文本格式");
+
+
+            importRoomFee = new ImportRoomFee();
+            importRoomFee.setPayerObjName(os[0].toString());
+            importRoomFee.setFeeName(os[1].toString());
+            importRoomFee.setStartTime(startTime);
+            importRoomFee.setEndTime(endTime);
+            importRoomFee.setAmount(os[4].toString());
+            rooms.add(importRoomFee);
+        }
+    }
+
+    /**
+     * 获取 房屋信息
+     *
+     * @param workbook
+     * @param cars
+     */
+    private void getCars(Workbook workbook, List<ImportRoomFee> cars) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "车位费用信息");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportRoomFee importRoomFee = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0 || osIndex == 1) { // 第一行是 头部信息 直接跳过
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+
+            //费用名称没有填写,默认跳过
+            if (StringUtil.isNullOrNone(os[1])) {
+                continue;
+            }
+            Assert.hasValue(os[2], (osIndex + 1) + "行开始时间不能为空");
+            Assert.hasValue(os[3], (osIndex + 1) + "行结束时间不能为空");
+            Assert.hasValue(os[4], (osIndex + 1) + "行费用不能为空");
+
+//
+
+            String startTime = excelDoubleToDate(os[2].toString());
+            String endTime = excelDoubleToDate(os[3].toString());
+            Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD 文本格式");
+            Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD 文本格式");
+
+
+            importRoomFee = new ImportRoomFee();
+            importRoomFee.setPayerObjName(os[0].toString());
+            importRoomFee.setFeeName(os[1].toString());
+            importRoomFee.setStartTime(startTime);
+            importRoomFee.setEndTime(endTime);
+            importRoomFee.setAmount(os[4].toString());
+            cars.add(importRoomFee);
+        }
+    }
+
+
+}

+ 283 - 0
service-job/src/main/java/com/java110/job/importData/adapt/ImportRoomFeeQueueDataAdapt.java

@@ -0,0 +1,283 @@
+package com.java110.job.importData.adapt;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.fee.FeeAttrDto;
+import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.importData.ImportCustomCreateFeeDto;
+import com.java110.dto.importData.ImportRoomFee;
+import com.java110.dto.log.AssetImportLogDetailDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.payFee.PayFeeDetailRefreshFeeMonthDto;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
+import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.fee.IPayFeeConfigV1InnerServiceSMO;
+import com.java110.intf.fee.IPayFeeMonthInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
+import com.java110.intf.user.IUserInnerServiceSMO;
+import com.java110.job.importData.DefaultImportData;
+import com.java110.job.importData.IImportDataAdapt;
+import com.java110.po.fee.FeeAttrPo;
+import com.java110.po.fee.PayFeePo;
+import com.java110.po.importFee.ImportFeeDetailPo;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service("importRoomFeeQueueData")
+public class ImportRoomFeeQueueDataAdapt extends DefaultImportData implements IImportDataAdapt {
+
+    @Autowired
+    private IUserInnerServiceSMO userInnerServiceSMOImpl;
+
+    @Autowired
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeConfigV1InnerServiceSMO payFeeConfigV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeMonthInnerServiceSMO payFeeMonthInnerServiceSMOImpl;
+
+    //    @Autowired
+//    private IPayFeeMonth payFeeMonthImpl;
+    @Override
+    public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) {
+
+        for (AssetImportLogDetailDto assetImportLogDetailDto : assetImportLogDetailDtos) {
+
+            try {
+                doImportData(assetImportLogDetailDto);
+                updateImportLogDetailState(assetImportLogDetailDto.getDetailId());
+            } catch (Exception e) {
+                e.printStackTrace();
+                updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e);
+            }
+        }
+    }
+
+    private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) {
+        JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent());
+        ImportRoomFee importRoomFee = BeanConvertUtil.covertBean(data, ImportRoomFee.class);
+
+        String communityId = importRoomFee.getCommunityId();
+        String batchId = importRoomFee.getCommunityId();
+
+        doImportRoomCreateFee(importRoomFee, batchId);
+        doImportCarCreateFee(importRoomFee, batchId);
+
+
+    }
+
+    /**
+     * 房屋创建费用
+     *
+     * @param importRoomFee
+     * @param batchId
+     */
+    private void doImportRoomCreateFee(ImportRoomFee importRoomFee, String batchId) {
+        if (!ImportCustomCreateFeeDto.TYPE_ROOM.equals(importRoomFee.getObjType())) {
+            return;
+        }
+        List<ImportRoomFee> rooms = new ArrayList<>();
+
+        String[] objNames;
+        objNames = importRoomFee.getPayerObjName().split("-", 3);
+        if (objNames.length != 3) {
+            throw new IllegalArgumentException("收费对象格式错误:" + importRoomFee.getPayerObjName());
+        }
+        importRoomFee.setFloorNum(objNames[0]);
+        importRoomFee.setUnitNum(objNames[1]);
+        importRoomFee.setRoomNum(objNames[2]);
+
+        rooms.add(importRoomFee);
+
+
+        List<ImportRoomFee> importRoomFees = roomInnerServiceSMOImpl.freshRoomIds(rooms);
+        List<String> roomIds = new ArrayList<>();
+        for (ImportRoomFee tmpImportRoomFee : importRoomFees) {
+            if (StringUtil.isEmpty(tmpImportRoomFee.getRoomId())) {
+                throw new IllegalArgumentException("房屋不存在," + importRoomFee.getFloorNum() + "-" + importRoomFee.getUnitNum() + "-" + importRoomFee.getRoomNum());
+            }
+            roomIds.add(tmpImportRoomFee.getRoomId());
+        }
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setCommunityId(importRoomFee.getCommunityId());
+        ownerDto.setRoomIds(roomIds.toArray(new String[roomIds.size()]));
+        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto);
+        for (ImportRoomFee tmpImportRoomFee : importRoomFees) {
+            for (OwnerDto tmpOwnerDto : ownerDtos) {
+                if (tmpImportRoomFee.getRoomId().equals(tmpOwnerDto.getRoomId())) {
+                    importRoomFee.setOwnerId(tmpOwnerDto.getOwnerId());
+                    importRoomFee.setOwnerName(tmpOwnerDto.getName());
+                    importRoomFee.setOwnerLink(tmpOwnerDto.getLink());
+                }
+            }
+        }
+        doCreateFeeAndAttrs(importRoomFees.get(0), batchId);
+    }
+
+
+    /**
+     * 创建车辆费用
+     *
+     * @param importRoomFee
+     * @param batchId
+     */
+    private void doImportCarCreateFee(ImportRoomFee importRoomFee, String batchId) {
+        if (!ImportCustomCreateFeeDto.TYPE_CAR.equals(importRoomFee.getObjType())) {
+            return;
+        }
+        List<ImportRoomFee> cars = new ArrayList<>();
+        importRoomFee.setCarNum(importRoomFee.getPayerObjName());
+        cars.add(importRoomFee);
+
+
+        List<ImportRoomFee> importRoomFees = ownerCarInnerServiceSMOImpl.freshCarIds(cars);
+        for (ImportRoomFee tmpImportRoomFee : importRoomFees) {
+            if (StringUtil.isEmpty(tmpImportRoomFee.getRoomId())) {
+                throw new IllegalArgumentException(tmpImportRoomFee.getCarNum() + "不存在");
+            }
+        }
+        doCreateFeeAndAttrs(importRoomFees.get(0), batchId);
+    }
+
+
+    private void doCreateFeeAndAttrs(ImportRoomFee importRoomFee, String batchId) {
+        List<PayFeePo> payFeePos = new ArrayList<>();
+        List<FeeAttrPo> feeAttrPos = new ArrayList<>();
+        PayFeePo payFeePo = null;
+        ImportFeeDetailPo importFeeDetailPo = null;
+
+        if (StringUtil.isEmpty(importRoomFee.getRoomId())) {
+            throw new IllegalArgumentException("收费对象不存在");
+        }
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setCommunityId(importRoomFee.getCommunityId());
+        if (!StringUtil.isEmpty(importRoomFee.getConfigId())) {
+            feeConfigDto.setConfigId(importRoomFee.getConfigId());
+        } else {
+            feeConfigDto.setFeeNameEq(importRoomFee.getFeeName());
+        }
+        feeConfigDto.setComputingFormula(FeeConfigDto.COMPUTING_FORMULA_DYNAMIC);
+        List<FeeConfigDto> feeConfigDtos = payFeeConfigV1InnerServiceSMOImpl.queryPayFeeConfigs(feeConfigDto);
+        if (feeConfigDtos == null || feeConfigDtos.size() < 1) {
+            throw new IllegalArgumentException("费用项不存在");
+        }
+        payFeePo = new PayFeePo();
+        payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId, true));
+        payFeePo.setEndTime(importRoomFee.getStartTime());
+        payFeePo.setState(FeeDto.STATE_DOING);
+        payFeePo.setCommunityId(importRoomFee.getCommunityId());
+        payFeePo.setConfigId(feeConfigDtos.get(0).getConfigId());
+        if (FeeDto.PAYER_OBJ_TYPE_CONTRACT.equals(importRoomFee.getObjType())) {
+            payFeePo.setPayerObjId(importRoomFee.getContractId());
+            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CONTRACT);
+        } else if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(importRoomFee.getObjType())) {
+            payFeePo.setPayerObjId(importRoomFee.getCarId());
+            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
+        } else {
+            payFeePo.setPayerObjId(importRoomFee.getRoomId());
+            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+        }
+        payFeePo.setUserId(importRoomFee.getUserId());
+        payFeePo.setIncomeObjId(importRoomFee.getStoreId());
+        payFeePo.setFeeTypeCd(feeConfigDtos.get(0).getFeeTypeCd());
+        payFeePo.setFeeFlag(feeConfigDtos.get(0).getFeeFlag());
+        payFeePo.setAmount("-1");
+        payFeePo.setBatchId(batchId);
+        payFeePo.setEndTime(importRoomFee.getStartTime());
+        payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+
+        payFeePos.add(payFeePo);
+
+        FeeAttrPo feeAttrPo = new FeeAttrPo();
+        feeAttrPo.setCommunityId(importRoomFee.getCommunityId());
+        feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_IMPORT_FEE_NAME);
+        feeAttrPo.setValue(feeConfigDtos.get(0).getFeeName());
+        feeAttrPo.setFeeId(payFeePo.getFeeId());
+        feeAttrPos.add(feeAttrPo);
+
+        feeAttrPo = new FeeAttrPo();
+        feeAttrPo.setCommunityId(importRoomFee.getCommunityId());
+        feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_PAY_OBJECT_NAME);
+        feeAttrPo.setValue(importRoomFee.getRoomName());
+        feeAttrPo.setFeeId(payFeePo.getFeeId());
+        feeAttrPos.add(feeAttrPo);
+
+        //todo 不是周期性费用的场景需要写入结束时间
+
+        feeAttrPo = new FeeAttrPo();
+        feeAttrPo.setCommunityId(importRoomFee.getCommunityId());
+        feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
+        feeAttrPo.setValue(importRoomFee.getEndTime());
+        feeAttrPo.setFeeId(payFeePo.getFeeId());
+        feeAttrPos.add(feeAttrPo);
+
+
+        if (!StringUtil.isEmpty(importRoomFee.getOwnerId())) {
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(importRoomFee.getCommunityId());
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
+            feeAttrPo.setValue(importRoomFee.getOwnerId());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(importRoomFee.getCommunityId());
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
+            feeAttrPo.setValue(importRoomFee.getOwnerName());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(importRoomFee.getCommunityId());
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK);
+            feeAttrPo.setValue(importRoomFee.getOwnerLink());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+        }
+
+
+        if (payFeePos.size() < 1) {
+            return;
+        }
+
+        feeInnerServiceSMOImpl.saveFee(payFeePos);
+
+        feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos);
+
+        // todo 这里异步的方式计算 月数据 和欠费数据
+
+        PayFeeDetailRefreshFeeMonthDto payFeeDetailRefreshFeeMonthDto = new PayFeeDetailRefreshFeeMonthDto();
+        payFeeDetailRefreshFeeMonthDto.setCommunityId(importRoomFee.getCommunityId());
+        payFeeDetailRefreshFeeMonthDto.setFeeId(payFeePos.get(0).getFeeId());
+        payFeeMonthInnerServiceSMOImpl.doGeneratorOrRefreshFeeMonth(payFeeDetailRefreshFeeMonthDto);
+    }
+}

+ 152 - 0
springboot/src/main/java/com/java110/boot/importData/adapt/ImportRoomFeeDataCleaningAdapt.java

@@ -0,0 +1,152 @@
+package com.java110.boot.importData.adapt;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.boot.importData.DefaultImportDataAdapt;
+import com.java110.boot.importData.IImportDataCleaningAdapt;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.importData.ImportCustomCreateFeeDto;
+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;
+
+/**
+ * 一次性费用导入
+ * 方式1
+ */
+@Service("importRoomFeeDataCleaning")
+public class ImportRoomFeeDataCleaningAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt {
+
+    @Autowired
+    private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IUserInnerServiceSMO userInnerServiceSMOImpl;
+
+    @Override
+    public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception {
+        List<ImportRoomFee> importRoomFees = new ArrayList<ImportRoomFee>();
+        if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(paramIn.getString("objType"))) {
+            getRooms(workbook, importRoomFees);
+        } else {
+            getCars(workbook, importRoomFees);
+        }
+        generatorBatch(paramIn);
+        for (ImportRoomFee importRoomFee : importRoomFees) {
+            importRoomFee.setBatchId(paramIn.getString("batchId"));
+            importRoomFee.setUserId(paramIn.getString("userId"));
+            importRoomFee.setStoreId(paramIn.getString("storeId"));
+            importRoomFee.setCommunityId(paramIn.getString("communityId"));
+            importRoomFee.setFeeTypeCd(paramIn.getString("feeTypeCd"));
+            importRoomFee.setObjType(paramIn.getString("objType"));
+
+        }
+        return importRoomFees;
+    }
+
+    /**
+     * 获取 房屋信息
+     *
+     * @param workbook
+     * @param rooms
+     */
+    private void getRooms(Workbook workbook, List<ImportRoomFee> rooms) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "房屋费用信息");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportRoomFee importRoomFee = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0 || osIndex == 1) { // 第一行是 头部信息 直接跳过
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+
+            //费用名称没有填写,默认跳过
+            if (StringUtil.isNullOrNone(os[4])) {
+                continue;
+            }
+            Assert.hasValue(os[1], (osIndex + 1) + "行费用名称不能为空");
+            Assert.hasValue(os[2], (osIndex + 1) + "行开始时间不能为空");
+            Assert.hasValue(os[3], (osIndex + 1) + "行结束时间不能为空");
+            Assert.hasValue(os[4], (osIndex + 1) + "行费用不能为空");
+
+//
+
+            String startTime = excelDoubleToDate(os[2].toString());
+            String endTime = excelDoubleToDate(os[3].toString());
+            Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD 文本格式");
+            Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD 文本格式");
+
+
+            importRoomFee = new ImportRoomFee();
+            importRoomFee.setPayerObjName(os[0].toString());
+            importRoomFee.setFeeName(os[1].toString());
+            importRoomFee.setStartTime(startTime);
+            importRoomFee.setEndTime(endTime);
+            importRoomFee.setAmount(os[4].toString());
+            rooms.add(importRoomFee);
+        }
+    }
+
+    /**
+     * 获取 房屋信息
+     *
+     * @param workbook
+     * @param cars
+     */
+    private void getCars(Workbook workbook, List<ImportRoomFee> cars) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "车位费用信息");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportRoomFee importRoomFee = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0 || osIndex == 1) { // 第一行是 头部信息 直接跳过
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+
+            //费用名称没有填写,默认跳过
+            if (StringUtil.isNullOrNone(os[1])) {
+                continue;
+            }
+            Assert.hasValue(os[2], (osIndex + 1) + "行开始时间不能为空");
+            Assert.hasValue(os[3], (osIndex + 1) + "行结束时间不能为空");
+            Assert.hasValue(os[4], (osIndex + 1) + "行费用不能为空");
+
+//
+
+            String startTime = excelDoubleToDate(os[2].toString());
+            String endTime = excelDoubleToDate(os[3].toString());
+            Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD 文本格式");
+            Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD 文本格式");
+
+
+            importRoomFee = new ImportRoomFee();
+            importRoomFee.setPayerObjName(os[0].toString());
+            importRoomFee.setFeeName(os[1].toString());
+            importRoomFee.setStartTime(startTime);
+            importRoomFee.setEndTime(endTime);
+            importRoomFee.setAmount(os[4].toString());
+            cars.add(importRoomFee);
+        }
+    }
+
+
+}