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.store.IContractPartyaInnerServiceSMO; 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.HashMap; import java.util.List; import java.util.Map; /** * 一次性费用导入 * 方式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 importRoomFees = new ArrayList(); // if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(paramIn.getString("objType"))) { // getRooms(workbook, importRoomFees); // }else{ // getCars(workbook, importRoomFees); // } //// getRoomsAndCars(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; // } @Override public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception { List importRoomFees = new ArrayList(); getRoomsAndCars(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")); } return importRoomFees; } private void getRoomsAndCars(Workbook workbook, List importRoomFees) { Sheet sheet = null; sheet = ImportExcelUtils.getSheet(workbook, "费用导入模板"); List oList = ImportExcelUtils.listFromSheet(sheet); ImportRoomFee importRoomFee = null; Map debugs = new HashMap(); for (int osIndex = 0; osIndex < oList.size(); osIndex++) { Object[] os = oList.get(osIndex); if (osIndex == 0 || osIndex == 1) { // 第一行是 头部信息 直接跳过 continue; } if((os[0] == null && os[2] == null && os[1] == null)){ break; } String startTime = handleExcelDateString(os[5].toString()); String endTime = handleExcelDateString(os[6].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(); if(!(os[0] == null && os[1] == null)){ importRoomFee.setPayerObjName(os[0] == null || (os[0] != null && os[1] != null)?os[1].toString():os[0].toString()); importRoomFee.setObjType(os[0] == null || (os[0] != null && os[1] != null) ? "6666" : "3333"); importRoomFee.setExpenseSubject(os[0] == null || (os[0] != null && os[1] != null)?os[1].toString():os[0].toString()); }else{ importRoomFee.setPayerObjName(os[2] == null?null:os[2].toString()); importRoomFee.setObjType(os[2] == null?null:os[2].toString()); importRoomFee.setExpenseSubject(os[2] == null?null:os[2].toString()); } importRoomFee.setIsContractFee(os[0] != null && os[1] ==null && os[2] != null ? "O" : null); importRoomFee.setObjType(os[2] != null ? "7777" : null); importRoomFee.setContractId(os[0] != null && os[1] ==null && os[2] != null ? os[2].toString() : null); importRoomFee.setFeeTypeCd(os[3] == null ? null : os[3].toString()); importRoomFee.setFeeName(os[4] == null ? null : os[4].toString()); if(startTime != null){ importRoomFee.setStartTime(startTime); } if(endTime != null){ importRoomFee.setEndTime(endTime); } if (os.length > 7){ importRoomFee.setCreateTime(os[8] == null ? null : excelDoubleToDate(os[8].toString())); importRoomFee.setAmount(os[7] == null ? null : os[7].toString()); }else{ importRoomFee.setCreateTime(null); importRoomFee.setAmount("0"); } importRoomFees.add(importRoomFee); } } /** * 获取 房屋信息 * * @param workbook * @param rooms */ private void getRooms(Workbook workbook, List rooms) { Sheet sheet = null; sheet = ImportExcelUtils.getSheet(workbook, "房屋费用信息"); List 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 cars) { Sheet sheet = null; sheet = ImportExcelUtils.getSheet(workbook, "车位费用信息"); List 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); } } }