| | |
| | | package com.java110.api.smo.assetImport.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.fasterxml.jackson.core.JsonParseException; |
| | | import com.fasterxml.jackson.databind.JsonMappingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.java110.api.importData.DefaultImportDataAdapt; |
| | | import com.java110.api.importData.IImportDataCleaningAdapt; |
| | | import com.java110.api.smo.DefaultAbstractComponentSMO; |
| | | import com.java110.api.smo.assetImport.IAssetImportSMO; |
| | | import com.java110.core.context.IPageData; |
| | | import com.java110.core.smo.ISaveTransactionLogSMO; |
| | | import com.java110.dto.RoomDto; |
| | | import com.java110.dto.assetImportLog.AssetImportLogDto; |
| | | import com.java110.dto.assetImportLogDetail.AssetImportLogDetailDto; |
| | | import com.java110.dto.owner.OwnerDto; |
| | | import com.java110.entity.assetImport.*; |
| | | import com.java110.entity.component.ComponentValidateResult; |
| | | import com.java110.core.factory.GenerateCodeFactory; |
| | | import com.java110.dto.PropertyWhiteListFlowDto; |
| | | import com.java110.dto.log.AssetImportLogDetailDto; |
| | | import com.java110.dto.payFee.PayFeeBatchDto; |
| | | import com.java110.dto.system.ComponentValidateResult; |
| | | import com.java110.dto.user.UserDto; |
| | | import com.java110.intf.IImportPropertyWhiteListfFlowServiceSMO; |
| | | import com.java110.intf.common.IAssetImportLogDetailInnerServiceSMO; |
| | | import com.java110.intf.common.IAssetImportLogInnerServiceSMO; |
| | | import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO; |
| | | import com.java110.intf.job.IUserImportDataV1InnerServiceSMO; |
| | | import com.java110.intf.user.IMenuUserV1InnerServiceSMO; |
| | | import com.java110.intf.user.IUserInnerServiceSMO; |
| | | import com.java110.po.log.AssetImportLogDetailPo; |
| | | import com.java110.po.log.AssetImportLogPo; |
| | | import com.java110.po.payFee.PayFeeBatchPo; |
| | | import com.java110.utils.factory.ApplicationContextFactory; |
| | | import com.java110.utils.util.*; |
| | | import com.java110.vo.ResultVo; |
| | | import org.apache.poi.ss.usermodel.Sheet; |
| | | import org.apache.poi.ss.usermodel.Workbook; |
| | | import org.slf4j.Logger; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.client.RestTemplate; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.Calendar; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | public class AssetImportSMOImpl extends DefaultAbstractComponentSMO implements IAssetImportSMO { |
| | | private final static Logger logger = LoggerFactory.getLogger(AssetImportSMOImpl.class); |
| | | |
| | | /** |
| | | * 导入最大行数 |
| | | */ |
| | | @Value("${import.line.max}") |
| | | public int MAX_LINE; |
| | | |
| | | /** |
| | | * 导入最大行数 |
| | | */ |
| | | public static final int DEFAULT_ROWS = 200; |
| | | |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | |
| | | |
| | | private IImportDataCleaningAdapt importDataCleaningAdapt; |
| | | |
| | | @Autowired |
| | | private ISaveTransactionLogSMO saveTransactionLogSMOImpl; |
| | | private IAssetImportLogInnerServiceSMO assetImportLogInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IAssetImportLogDetailInnerServiceSMO assetImportLogDetailInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IUserImportDataV1InnerServiceSMO userImportDataV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IUserInnerServiceSMO iUserInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IImportPropertyWhiteListfFlowServiceSMO importPropertyWhiteListfFlowServiceSMO; |
| | | |
| | | |
| | | @Autowired |
| | | private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl; |
| | | |
| | | @Override |
| | | public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception { |
| | | JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); |
| | | if (paramIn.getString("userId").isEmpty() || paramIn.getString("userId").equals("null")){ |
| | | throw new IllegalArgumentException("userId为空"); |
| | | } |
| | | paramIn.put("userId", pd.getUserId()); |
| | | Assert.hasKeyAndValue(paramIn, "importAdapt", "未包含模板"); |
| | | Assert.hasKeyAndValue(paramIn, "userId", "未包含userId"); |
| | | String importAdapt = paramIn.getString("importAdapt") + "DataCleaning"; |
| | | |
| | | importDataCleaningAdapt = ApplicationContextFactory.getBean(importAdapt, IImportDataCleaningAdapt.class); |
| | | |
| | | if (importDataCleaningAdapt == null) { |
| | | throw new IllegalArgumentException("适配器没有实现" + importAdapt); |
| | | } |
| | | try { |
| | | ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate); |
| | | |
| | | //InputStream is = uploadFile.getInputStream(); |
| | | paramIn.put("storeId", result.getStoreId()); |
| | | |
| | | Workbook workbook = null; //工作簿 |
| | | //工作表 |
| | | String[] headers = null; //表头信息 |
| | | List<ImportFloor> floors = new ArrayList<ImportFloor>(); |
| | | List<ImportOwner> owners = new ArrayList<ImportOwner>(); |
| | | List<ImportFee> fees = new ArrayList<>(); |
| | | List<ImportRoom> rooms = new ArrayList<ImportRoom>(); |
| | | List<ImportParkingSpace> parkingSpaces = new ArrayList<ImportParkingSpace>(); |
| | | workbook = ImportExcelUtils.createWorkbook(uploadFile); |
| | | //获取楼信息 |
| | | getFloors(workbook, floors); |
| | | //获取业主信息 |
| | | getOwners(workbook, owners); |
| | | if(uploadFile == null || uploadFile.getSize() == 0){ |
| | | |
| | | PropertyWhiteListFlowDto propertyWhiteListFlowDto = new PropertyWhiteListFlowDto(); |
| | | propertyWhiteListFlowDto.setCommunityId((String) JSONObject.parseObject(pd.getReqData()).get("communityId")); |
| | | // todo 适配器封装数据 |
| | | List<PropertyWhiteListFlowDto> datas = importPropertyWhiteListfFlowServiceSMO.queryPropertyWhiteListFlow(propertyWhiteListFlowDto); |
| | | PayFeeBatchPo payFeeBatchPo = new PayFeeBatchPo(); |
| | | payFeeBatchPo.setBatchId(GenerateCodeFactory.getGeneratorId("12")); |
| | | payFeeBatchPo.setCommunityId(paramIn.getString("communityId")); |
| | | payFeeBatchPo.setCreateUserId(paramIn.getString("userId")); |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(paramIn.getString("userId")); |
| | | List<UserDto> userDtos = iUserInnerServiceSMOImpl.getUsers(userDto); |
| | | |
| | | Assert.listOnlyOne(userDtos, "用户不存在"); |
| | | payFeeBatchPo.setCreateUserName(userDtos.get(0).getUserName()); |
| | | payFeeBatchPo.setState(PayFeeBatchDto.STATE_NORMAL); |
| | | payFeeBatchPo.setMsg("正常"); |
| | | int flag = payFeeBatchV1InnerServiceSMOImpl.savePayFeeBatch(payFeeBatchPo); |
| | | |
| | | if (flag < 1) { |
| | | throw new IllegalArgumentException("生成批次失败"); |
| | | } |
| | | |
| | | paramIn.put("batchId", payFeeBatchPo.getBatchId()); |
| | | |
| | | for (PropertyWhiteListFlowDto importRoomFee : datas) { |
| | | importRoomFee.setUserId(paramIn.getString("userId")); |
| | | importRoomFee.setStoreId(paramIn.getString("storeId")); |
| | | importRoomFee.setCommunityId(paramIn.getString("communityId")); |
| | | importRoomFee.setBatchId(paramIn.getString("batchId")); |
| | | importRoomFee.setObjType(paramIn.getString("objType")); |
| | | } |
| | | |
| | | if (datas == null || datas.size() > MAX_LINE) { |
| | | throw new IllegalArgumentException("数据为空,或者数据行数大于" + MAX_LINE); |
| | | } |
| | | |
| | | // 保存数据 |
| | | return saveLogAndImportData(pd, datas, result, paramIn.getString("importAdapt")); |
| | | } |
| | | else{ |
| | | workbook = ImportExcelUtils.createWorkbook(uploadFile); |
| | | result.setImportFileName(uploadFile.getOriginalFilename()); |
| | | // todo 适配器封装数据 |
| | | List datas = importDataCleaningAdapt.analysisExcel(workbook, paramIn, result); |
| | | |
| | | |
| | | getFee(workbook, fees); |
| | | if (datas == null || datas.size() > MAX_LINE) { |
| | | throw new IllegalArgumentException("数据为空,或者数据行数大于" + MAX_LINE); |
| | | } |
| | | |
| | | //获取房屋信息 |
| | | getRooms(workbook, rooms, floors, owners); |
| | | |
| | | //获取车位信息 |
| | | getParkingSpaces(workbook, parkingSpaces, owners); |
| | | |
| | | //数据校验 |
| | | importExcelDataValidate(floors, owners, rooms, fees, parkingSpaces); |
| | | |
| | | // 保存数据 |
| | | return dealExcelData(pd, floors, owners, rooms, parkingSpaces, fees, result); |
| | | // 保存数据 |
| | | return saveLogAndImportData(pd, datas, result, paramIn.getString("importAdapt")); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("导入失败 ", e); |
| | | return new ResponseEntity<String>("非常抱歉,您填写的模板数据有误:" + e.getMessage(), HttpStatus.BAD_REQUEST); |
| | |
| | | /** |
| | | * 处理ExcelData数据 |
| | | * |
| | | * @param floors 楼栋单元信息 |
| | | * @param owners 业主信息 |
| | | * @param rooms 房屋信息 |
| | | * @param parkingSpaces 车位信息 |
| | | * @param datas 数据 |
| | | */ |
| | | private ResponseEntity<String> dealExcelData(IPageData pd, |
| | | List<ImportFloor> floors, |
| | | List<ImportOwner> owners, |
| | | List<ImportRoom> rooms, |
| | | List<ImportParkingSpace> parkingSpaces, |
| | | List<ImportFee> fees, |
| | | ComponentValidateResult result) { |
| | | private ResponseEntity<String> saveLogAndImportData(IPageData pd, |
| | | List datas, |
| | | ComponentValidateResult result, String logType) { |
| | | ResponseEntity<String> responseEntity = null; |
| | | //保存单元信息 和 楼栋信息 |
| | | responseEntity = savedFloorAndUnitInfo(pd, floors, result); |
| | | |
| | | if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return responseEntity; |
| | | } |
| | | String logId = GenerateCodeFactory.getGeneratorId("10"); |
| | | |
| | | // 保存业主信息 |
| | | responseEntity = savedOwnerInfo(pd, owners, result); |
| | | if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return responseEntity; |
| | | } |
| | | |
| | | // 保存费用项 |
| | | responseEntity = savedFeeInfo(pd, fees, result); |
| | | if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return responseEntity; |
| | | } |
| | | |
| | | //保存房屋 |
| | | responseEntity = savedRoomInfo(pd, rooms, fees, result); |
| | | if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return responseEntity; |
| | | } |
| | | |
| | | //保存车位 |
| | | responseEntity = savedParkingSpaceInfo(pd, parkingSpaces, result); |
| | | |
| | | if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return responseEntity; |
| | | } |
| | | |
| | | return responseEntity; |
| | | } |
| | | |
| | | private ResponseEntity<String> savedFeeInfo(IPageData pd, List<ImportFee> fees, ComponentValidateResult result) { |
| | | String apiUrl = ""; |
| | | JSONObject paramIn = null; |
| | | ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK); |
| | | ImportOwner owner = null; |
| | | |
| | | AssetImportLogDto assetImportLogDto = new AssetImportLogDto(); |
| | | assetImportLogDto.setSuccessCount(0L); |
| | | assetImportLogDto.setErrorCount(0L); |
| | | assetImportLogDto.setCommunityId(result.getCommunityId()); |
| | | assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_FEE_IMPORT); |
| | | List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>(); |
| | | assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos); |
| | | long successCount = 0L; |
| | | long failCount = 0L; |
| | | AssetImportLogDetailDto assetImportLogDetailDto = null; |
| | | try { |
| | | for (ImportFee fee : fees) { |
| | | JSONObject savedFeeConfigInfo = getExistsFee(pd, result, fee); |
| | | if (savedFeeConfigInfo != null) { |
| | | successCount += 1; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | continue; |
| | | } |
| | | //paramIn = new JSONObject(); |
| | | //保存 费用项 |
| | | |
| | | apiUrl = "feeConfig.saveFeeConfig"; |
| | | |
| | | paramIn = JSONObject.parseObject(JSONObject.toJSONString(fee)); |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | /***************************************导入日志记录****************************************************/ |
| | | failCount += 1; |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | if (Assert.isJsonObject(responseEntity.getBody())) { |
| | | JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody()); |
| | | assetImportLogDetailDto.setState(paramOut.getString("code")); |
| | | assetImportLogDetailDto.setMessage(paramOut.getString("msg")); |
| | | } else { |
| | | assetImportLogDetailDto.setState("F"); |
| | | assetImportLogDetailDto.setMessage(responseEntity.getBody()); |
| | | } |
| | | assetImportLogDetailDto.setObjName(fee.getFeeName()); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | } else { |
| | | JSONObject body = JSONObject.parseObject(responseEntity.getBody()); |
| | | if (body.containsKey("code") && body.getIntValue("code") != 0) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | assetImportLogDetailDto.setState(body.getString("code")); |
| | | assetImportLogDetailDto.setMessage(body.getString("msg")); |
| | | assetImportLogDetailDto.setObjName(fee.getFeeName()); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | } else { |
| | | successCount += 1; |
| | | } |
| | | } |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } |
| | | } finally { |
| | | saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto); |
| | | } |
| | | |
| | | return responseEntity; |
| | | } |
| | | |
| | | /** |
| | | * 保存车位信息 |
| | | * |
| | | * @param pd |
| | | * @param parkingSpaces |
| | | * @param result |
| | | * @return |
| | | */ |
| | | private ResponseEntity<String> savedParkingSpaceInfo(IPageData pd, List<ImportParkingSpace> parkingSpaces, ComponentValidateResult result) { |
| | | String apiUrl = ""; |
| | | JSONObject paramIn = null; |
| | | ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK); |
| | | ImportOwner owner = null; |
| | | AssetImportLogDto assetImportLogDto = new AssetImportLogDto(); |
| | | assetImportLogDto.setSuccessCount(0L); |
| | | assetImportLogDto.setErrorCount(0L); |
| | | assetImportLogDto.setCommunityId(result.getCommunityId()); |
| | | assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_AREA_PARKING_IMPORT); |
| | | List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>(); |
| | | assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos); |
| | | long successCount = 0L; |
| | | long failCount = 0L; |
| | | AssetImportLogDetailDto assetImportLogDetailDto = null; |
| | | try { |
| | | for (ImportParkingSpace parkingSpace : parkingSpaces) { |
| | | responseEntity = ResultVo.success(); |
| | | JSONObject savedParkingAreaInfo = getExistsParkingArea(pd, result, parkingSpace); |
| | | paramIn = new JSONObject(); |
| | | // 如果不存在,才插入 |
| | | if (savedParkingAreaInfo == null) { |
| | | apiUrl = "parkingArea.saveParkingArea"; |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | paramIn.put("typeCd", parkingSpace.getTypeCd()); |
| | | paramIn.put("num", parkingSpace.getPaNum()); |
| | | |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | savedParkingAreaInfo = getExistsParkingArea(pd, result, parkingSpace); |
| | | } |
| | | if (responseEntity != null && responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息 |
| | | failCount += 1; |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | if (Assert.isJsonObject(responseEntity.getBody())) { |
| | | JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody()); |
| | | assetImportLogDetailDto.setState(paramOut.getString("code")); |
| | | assetImportLogDetailDto.setMessage(paramOut.getString("msg")); |
| | | } else { |
| | | assetImportLogDetailDto.setState("F"); |
| | | assetImportLogDetailDto.setMessage(responseEntity.getBody()); |
| | | } |
| | | assetImportLogDetailDto.setObjName(parkingSpace.getPaNum()); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | continue; |
| | | } else { |
| | | JSONObject body = JSONObject.parseObject(responseEntity.getBody()); |
| | | if (body.containsKey("code") && body.getIntValue("code") != 0) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | assetImportLogDetailDto.setState(body.getString("code")); |
| | | assetImportLogDetailDto.setMessage(body.getString("msg")); |
| | | assetImportLogDetailDto.setObjName(parkingSpace.getPaNum()); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | continue; |
| | | } else { |
| | | successCount += 1; |
| | | } |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } |
| | | |
| | | JSONObject savedParkingSpaceInfo = getExistsParkSpace(pd, result, parkingSpace); |
| | | if (savedParkingSpaceInfo != null) { |
| | | continue; |
| | | } |
| | | |
| | | apiUrl = "parkingSpace.saveParkingSpace"; |
| | | |
| | | paramIn.put("paId", savedParkingAreaInfo.getString("paId")); |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | paramIn.put("userId", result.getUserId()); |
| | | paramIn.put("num", parkingSpace.getPsNum()); |
| | | paramIn.put("area", parkingSpace.getArea()); |
| | | paramIn.put("typeCd", parkingSpace.getTypeCd()); |
| | | paramIn.put("parkingType", "1"); |
| | | |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | if (Assert.isJsonObject(responseEntity.getBody())) { |
| | | JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody()); |
| | | assetImportLogDetailDto.setState(paramOut.getString("code")); |
| | | assetImportLogDetailDto.setMessage(paramOut.getString("msg")); |
| | | } else { |
| | | assetImportLogDetailDto.setState("F"); |
| | | assetImportLogDetailDto.setMessage(responseEntity.getBody()); |
| | | } |
| | | assetImportLogDetailDto.setObjName(parkingSpace.getPaNum()); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | successCount = successCount > 0 ? successCount - 1 : successCount; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | continue; |
| | | } else { |
| | | JSONObject body = JSONObject.parseObject(responseEntity.getBody()); |
| | | if (body.containsKey("code") && body.getIntValue("code") != 0) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | assetImportLogDetailDto.setState(body.getString("code")); |
| | | assetImportLogDetailDto.setMessage(body.getString("msg")); |
| | | assetImportLogDetailDto.setObjName(parkingSpace.getPaNum()); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | failCount += 1; |
| | | successCount = successCount > 0 ? successCount - 1 : successCount; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | savedParkingSpaceInfo = getExistsParkSpace(pd, result, parkingSpace); |
| | | if (savedParkingSpaceInfo == null) { |
| | | continue; |
| | | } |
| | | |
| | | //是否有业主信息 |
| | | if (parkingSpace.getImportOwner() == null) { |
| | | continue; |
| | | } |
| | | |
| | | paramIn.clear(); |
| | | |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | paramIn.put("ownerId", parkingSpace.getImportOwner().getOwnerId()); |
| | | paramIn.put("userId", result.getUserId()); |
| | | paramIn.put("carNum", parkingSpace.getCarNum()); |
| | | paramIn.put("carBrand", parkingSpace.getCarBrand()); |
| | | paramIn.put("carType", parkingSpace.getCarType()); |
| | | paramIn.put("carColor", parkingSpace.getCarColor()); |
| | | paramIn.put("psId", savedParkingSpaceInfo.getString("psId")); |
| | | paramIn.put("storeId", result.getStoreId()); |
| | | paramIn.put("sellOrHire", parkingSpace.getSellOrHire()); |
| | | paramIn.put("startTime", parkingSpace.getStartTime()); |
| | | paramIn.put("endTime", parkingSpace.getEndTime()); |
| | | |
| | | if ("H".equals(parkingSpace.getSellOrHire())) { |
| | | paramIn.put("cycles", "0"); |
| | | } |
| | | |
| | | apiUrl = "parkingSpace.sellParkingSpace"; |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | /***************************************导入日志记录****************************************************/ |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | if (Assert.isJsonObject(responseEntity.getBody())) { |
| | | JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody()); |
| | | assetImportLogDetailDto.setState(paramOut.getString("code")); |
| | | assetImportLogDetailDto.setMessage(paramOut.getString("msg")); |
| | | } else { |
| | | assetImportLogDetailDto.setState("F"); |
| | | assetImportLogDetailDto.setMessage(responseEntity.getBody()); |
| | | } |
| | | assetImportLogDetailDto.setObjName(parkingSpace.getCarNum()); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | successCount = successCount > 0 ? successCount - 1 : successCount; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } else { |
| | | JSONObject body = JSONObject.parseObject(responseEntity.getBody()); |
| | | if (body.containsKey("code") && body.getIntValue("code") != 0) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | assetImportLogDetailDto.setState(body.getString("code")); |
| | | assetImportLogDetailDto.setMessage(body.getString("msg")); |
| | | assetImportLogDetailDto.setObjName(parkingSpace.getCarNum()); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | successCount = successCount > 0 ? successCount - 1 : successCount; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("导入车位异常", e); |
| | | saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto); |
| | | throw e; |
| | | } |
| | | |
| | | return responseEntity; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 保存房屋信息 |
| | | * |
| | | * @param pd |
| | | * @param rooms |
| | | * @param result |
| | | * @return |
| | | */ |
| | | private ResponseEntity<String> savedRoomInfo(IPageData pd, List<ImportRoom> rooms, List<ImportFee> fees, ComponentValidateResult result) { |
| | | String apiUrl = ""; |
| | | JSONObject paramIn = null; |
| | | ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK); |
| | | ImportOwner owner = null; |
| | | AssetImportLogDto assetImportLogDto = new AssetImportLogDto(); |
| | | assetImportLogDto.setSuccessCount(0L); |
| | | assetImportLogDto.setErrorCount(0L); |
| | | assetImportLogDto.setCommunityId(result.getCommunityId()); |
| | | assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_ROOM_IMPORT); |
| | | List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>(); |
| | | assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos); |
| | | long successCount = 0L; |
| | | long failCount = 0L; |
| | | AssetImportLogDetailDto assetImportLogDetailDto = null; |
| | | try { |
| | | for (ImportRoom room : rooms) { |
| | | paramIn = new JSONObject(); |
| | | JSONObject savedRoomInfo = getExistsRoom(pd, result, room); |
| | | if (savedRoomInfo != null) { |
| | | //如果空闲入住一下 |
| | | if (RoomDto.STATE_FREE.equals(savedRoomInfo.getString("state")) && room.getImportOwner() != null) { |
| | | paramIn.clear(); |
| | | apiUrl = "room.sellRoom"; |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | paramIn.put("ownerId", room.getImportOwner().getOwnerId()); |
| | | paramIn.put("roomId", savedRoomInfo.getString("roomId")); |
| | | paramIn.put("state", "2001"); |
| | | paramIn.put("storeId", result.getStoreId()); |
| | | if (!StringUtil.isEmpty(room.getRoomFeeId()) && "0".equals(room.getRoomFeeId())) { |
| | | paramIn.put("feeEndDate", room.getFeeEndDate()); |
| | | } |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | } |
| | | continue; |
| | | } |
| | | //保存 房屋 |
| | | apiUrl = "room.saveRoom"; |
| | | |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | paramIn.put("unitId", room.getFloor().getUnitId()); |
| | | paramIn.put("roomNum", room.getRoomNum()); |
| | | paramIn.put("layer", room.getLayer()); |
| | | paramIn.put("section", "1"); |
| | | paramIn.put("apartment", room.getSection()); |
| | | paramIn.put("state", "2002"); |
| | | paramIn.put("builtUpArea", room.getBuiltUpArea()); |
| | | paramIn.put("feeCoefficient", "1.00"); |
| | | paramIn.put("roomSubType", room.getRoomSubType()); |
| | | paramIn.put("roomArea", room.getRoomArea()); |
| | | paramIn.put("roomRent", room.getRoomRent()); |
| | | paramIn.put("roomType", "0".equals(room.getFloor().getUnitNum()) ? RoomDto.ROOM_TYPE_SHOPS : RoomDto.ROOM_TYPE_SHOPS); |
| | | |
| | | |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | failCount += 1; |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | if (Assert.isJsonObject(responseEntity.getBody())) { |
| | | JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody()); |
| | | assetImportLogDetailDto.setState(paramOut.getString("code")); |
| | | assetImportLogDetailDto.setMessage(paramOut.getString("msg")); |
| | | } else { |
| | | assetImportLogDetailDto.setState("F"); |
| | | assetImportLogDetailDto.setMessage(responseEntity.getBody()); |
| | | } |
| | | assetImportLogDetailDto.setObjName(room.getRoomNum() + "室"); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | continue; |
| | | } else { |
| | | JSONObject body = JSONObject.parseObject(responseEntity.getBody()); |
| | | if (body.containsKey("code") && body.getIntValue("code") != 0) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | assetImportLogDetailDto.setState(body.getString("code")); |
| | | assetImportLogDetailDto.setMessage(body.getString("msg")); |
| | | assetImportLogDetailDto.setObjName(room.getRoomNum() + "室"); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | continue; |
| | | } else { |
| | | successCount += 1; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } |
| | | } |
| | | |
| | | savedRoomInfo = getExistsRoom(pd, result, room); |
| | | if (savedRoomInfo == null) { |
| | | continue; |
| | | } |
| | | if (room.getImportOwner() == null) { |
| | | continue; |
| | | } |
| | | paramIn.clear(); |
| | | apiUrl = "room.sellRoom"; |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | paramIn.put("ownerId", room.getImportOwner().getOwnerId()); |
| | | paramIn.put("roomId", savedRoomInfo.getString("roomId")); |
| | | paramIn.put("state", "2001"); |
| | | paramIn.put("storeId", result.getStoreId()); |
| | | if (!StringUtil.isEmpty(room.getRoomFeeId()) && "0".equals(room.getRoomFeeId())) { |
| | | paramIn.put("feeEndDate", room.getFeeEndDate()); |
| | | } |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | if (Assert.isJsonObject(responseEntity.getBody())) { |
| | | JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody()); |
| | | assetImportLogDetailDto.setState(paramOut.getString("code")); |
| | | assetImportLogDetailDto.setMessage(paramOut.getString("msg")); |
| | | } else { |
| | | assetImportLogDetailDto.setState("F"); |
| | | assetImportLogDetailDto.setMessage(responseEntity.getBody()); |
| | | } |
| | | assetImportLogDetailDto.setObjName(room.getRoomNum() + "室"); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | continue; |
| | | } else { |
| | | JSONObject body = JSONObject.parseObject(responseEntity.getBody()); |
| | | if (body.containsKey("code") && body.getIntValue("code") != 0) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | assetImportLogDetailDto.setState(body.getString("code")); |
| | | assetImportLogDetailDto.setMessage(body.getString("msg")); |
| | | assetImportLogDetailDto.setObjName(room.getRoomNum() + "室"); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | continue; |
| | | } |
| | | } |
| | | //创建费用 |
| | | if (StringUtil.isEmpty(room.getRoomFeeId()) || "0".equals(room.getRoomFeeId())) { |
| | | continue; |
| | | } |
| | | String[] feeIds = room.getRoomFeeId().split("#"); |
| | | |
| | | for (int feeIndex = 0; feeIndex < feeIds.length; feeIndex++) { |
| | | String feeId = feeIds[feeIndex]; |
| | | ImportFee tmpFee = null; |
| | | for (ImportFee fee : fees) { |
| | | if (feeId.equals(fee.getId())) { |
| | | tmpFee = fee; |
| | | } |
| | | } |
| | | |
| | | if (tmpFee == null) { |
| | | continue;//没有费用项,可能写错了 |
| | | } |
| | | |
| | | JSONObject ttFee = getExistsFee(pd, result, tmpFee); |
| | | |
| | | if (ttFee == null) { |
| | | continue;//没有费用项,可能写错了 |
| | | } |
| | | |
| | | apiUrl = "fee.saveRoomCreateFee"; |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | paramIn.put("locationTypeCd", "3000"); |
| | | paramIn.put("locationObjId", savedRoomInfo.getString("roomId")); |
| | | paramIn.put("configId", ttFee.getString("configId")); |
| | | paramIn.put("storeId", result.getStoreId()); |
| | | paramIn.put("feeEndDate", room.getFeeEndDate().split("#")[feeIndex]); |
| | | paramIn.put("startTime", paramIn.getString("feeEndDate")); |
| | | |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | /***************************************导入日志记录****************************************************/ |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | if (Assert.isJsonObject(responseEntity.getBody())) { |
| | | JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody()); |
| | | assetImportLogDetailDto.setState(paramOut.getString("code")); |
| | | assetImportLogDetailDto.setMessage(paramOut.getString("msg")); |
| | | } else { |
| | | assetImportLogDetailDto.setState("F"); |
| | | assetImportLogDetailDto.setMessage(responseEntity.getBody()); |
| | | } |
| | | assetImportLogDetailDto.setObjName(room.getRoomNum() + "室"); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | successCount = successCount > 0 ? successCount - 1 : successCount; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } else { |
| | | JSONObject body = JSONObject.parseObject(responseEntity.getBody()); |
| | | if (body.containsKey("code") && body.getIntValue("code") != 0) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | assetImportLogDetailDto.setState(body.getString("code")); |
| | | assetImportLogDetailDto.setMessage(body.getString("msg")); |
| | | assetImportLogDetailDto.setObjName(room.getRoomNum() + "室"); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | successCount = successCount > 0 ? successCount - 1 : successCount; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } finally { |
| | | saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto); |
| | | } |
| | | |
| | | return responseEntity; |
| | | } |
| | | |
| | | /** |
| | | * 查询存在的房屋信息 |
| | | * room.queryRooms |
| | | * |
| | | * @param pd |
| | | * @param result |
| | | * @param parkingSpace |
| | | * @return |
| | | */ |
| | | private JSONObject getExistsParkSpace(IPageData pd, ComponentValidateResult result, ImportParkingSpace parkingSpace) { |
| | | String apiUrl = ""; |
| | | ResponseEntity<String> responseEntity = null; |
| | | apiUrl = "parkingSpace.queryParkingSpaces?page=1&row=1&communityId=" + result.getCommunityId() |
| | | + "&num=" + parkingSpace.getPsNum() + "&areaNum=" + parkingSpace.getPaNum(); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息 |
| | | return null; |
| | | } |
| | | |
| | | JSONObject savedParkingSpaceInfoResults = JSONObject.parseObject(responseEntity.getBody()); |
| | | |
| | | |
| | | if (!savedParkingSpaceInfoResults.containsKey("parkingSpaces") || savedParkingSpaceInfoResults.getJSONArray("parkingSpaces").size() != 1) { |
| | | return null; |
| | | } |
| | | |
| | | |
| | | JSONObject savedParkingSpaceInfo = savedParkingSpaceInfoResults.getJSONArray("parkingSpaces").getJSONObject(0); |
| | | |
| | | return savedParkingSpaceInfo; |
| | | } |
| | | |
| | | /** |
| | | * 查询存在的房屋信息 |
| | | * room.queryRooms |
| | | * |
| | | * @param pd |
| | | * @param result |
| | | * @param fee |
| | | * @return |
| | | */ |
| | | private JSONObject getExistsFee(IPageData pd, ComponentValidateResult result, ImportFee fee) { |
| | | String apiUrl = ""; |
| | | ResponseEntity<String> responseEntity = null; |
| | | apiUrl = "feeConfig.listFeeConfigs?page=1&row=1&communityId=" + result.getCommunityId() |
| | | + "&feeName=" + fee.getFeeName(); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息 |
| | | return null; |
| | | } |
| | | |
| | | JSONObject savedRoomInfoResults = JSONObject.parseObject(responseEntity.getBody()); |
| | | |
| | | |
| | | if (!savedRoomInfoResults.containsKey("feeConfigs") || savedRoomInfoResults.getJSONArray("feeConfigs").size() != 1) { |
| | | return null; |
| | | } |
| | | |
| | | |
| | | JSONObject savedFeeConfigInfo = savedRoomInfoResults.getJSONArray("feeConfigs").getJSONObject(0); |
| | | |
| | | return savedFeeConfigInfo; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询存在的房屋信息 |
| | | * room.queryRooms |
| | | * |
| | | * @param pd |
| | | * @param result |
| | | * @param room |
| | | * @return |
| | | */ |
| | | private JSONObject getExistsRoom(IPageData pd, ComponentValidateResult result, ImportRoom room) { |
| | | String apiUrl = ""; |
| | | ResponseEntity<String> responseEntity = null; |
| | | apiUrl = "room.queryRooms?page=1&row=1&communityId=" + result.getCommunityId() |
| | | + "&floorId=" + room.getFloor().getFloorId() + "&unitId=" + room.getFloor().getUnitId() + "&roomNum=" + room.getRoomNum(); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息 |
| | | return null; |
| | | } |
| | | |
| | | JSONObject savedRoomInfoResults = JSONObject.parseObject(responseEntity.getBody()); |
| | | |
| | | |
| | | if (!savedRoomInfoResults.containsKey("rooms") || savedRoomInfoResults.getJSONArray("rooms").size() != 1) { |
| | | return null; |
| | | } |
| | | |
| | | |
| | | JSONObject savedRoomInfo = savedRoomInfoResults.getJSONArray("rooms").getJSONObject(0); |
| | | |
| | | return savedRoomInfo; |
| | | } |
| | | |
| | | /** |
| | | * 保存业主信息 |
| | | * |
| | | * @param pd |
| | | * @param owners |
| | | * @param result |
| | | * @return |
| | | */ |
| | | private ResponseEntity<String> savedOwnerInfo(IPageData pd, List<ImportOwner> owners, ComponentValidateResult result) { |
| | | String apiUrl = ""; |
| | | JSONObject paramIn = null; |
| | | ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK); |
| | | AssetImportLogDto assetImportLogDto = new AssetImportLogDto(); |
| | | assetImportLogDto.setSuccessCount(0L); |
| | | assetImportLogDto.setErrorCount(0L); |
| | | assetImportLogDto.setCommunityId(result.getCommunityId()); |
| | | assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_OWENR_IMPORT); |
| | | List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>(); |
| | | assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos); |
| | | long successCount = 0L; |
| | | long failCount = 0L; |
| | | AssetImportLogDetailDto assetImportLogDetailDto = null; |
| | | try { |
| | | for (ImportOwner owner : owners) { |
| | | JSONObject savedOwnerInfo = getExistsOwner(pd, result, owner); |
| | | |
| | | if (savedOwnerInfo != null) { |
| | | owner.setOwnerId(savedOwnerInfo.getString("ownerId")); |
| | | continue; |
| | | } |
| | | paramIn = new JSONObject(); |
| | | |
| | | apiUrl = "owner.saveOwner"; |
| | | |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | paramIn.put("userId", result.getUserId()); |
| | | paramIn.put("name", owner.getOwnerName()); |
| | | paramIn.put("age", owner.getAge()); |
| | | paramIn.put("link", owner.getTel()); |
| | | paramIn.put("sex", owner.getSex()); |
| | | paramIn.put("ownerTypeCd", owner.getOwnerTypeCd()); |
| | | paramIn.put("idCard", owner.getIdCard()); |
| | | paramIn.put("source", "BatchImport"); |
| | | if (!OwnerDto.OWNER_TYPE_CD_OWNER.equals(owner.getOwnerTypeCd())) { |
| | | //查询业主ID |
| | | paramIn.put("ownerId", getOwnerId(owners, owner)); |
| | | } |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | |
| | | /***************************************导入日志记录****************************************************/ |
| | | if (responseEntity.getStatusCode() == HttpStatus.OK) { |
| | | JSONObject body = JSONObject.parseObject(responseEntity.getBody()); |
| | | if (body.containsKey("code") && body.getIntValue("code") != 0) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | assetImportLogDetailDto.setState(body.getString("code")); |
| | | assetImportLogDetailDto.setMessage(body.getString("msg")); |
| | | assetImportLogDetailDto.setObjName(owner.getOwnerName()); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | throw new IllegalArgumentException(body.getString("msg")); |
| | | } |
| | | savedOwnerInfo = getExistsOwner(pd, result, owner); |
| | | owner.setOwnerId(savedOwnerInfo.getString("ownerId")); |
| | | successCount += 1; |
| | | } else { |
| | | failCount += 1; |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | if (Assert.isJsonObject(responseEntity.getBody())) { |
| | | JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody()); |
| | | assetImportLogDetailDto.setState(paramOut.getString("code")); |
| | | assetImportLogDetailDto.setMessage(paramOut.getString("msg")); |
| | | } else { |
| | | assetImportLogDetailDto.setState("F"); |
| | | assetImportLogDetailDto.setMessage(responseEntity.getBody()); |
| | | } |
| | | assetImportLogDetailDto.setObjName(owner.getOwnerName()); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | } |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } |
| | | } finally { |
| | | saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto); |
| | | } |
| | | |
| | | return responseEntity; |
| | | } |
| | | |
| | | private String getOwnerId(List<ImportOwner> owners, ImportOwner owner) { |
| | | for (ImportOwner owner1 : owners) { |
| | | if (owner1.getOwnerNum().equals(owner.getParentOwnerId())) { |
| | | return owner1.getOwnerId(); |
| | | AssetImportLogPo assetImportLogPo = new AssetImportLogPo(); |
| | | assetImportLogPo.setCommunityId(result.getCommunityId()); |
| | | assetImportLogPo.setLogId(logId); |
| | | assetImportLogPo.setLogType(logType); |
| | | assetImportLogPo.setErrorCount("0"); |
| | | assetImportLogPo.setSuccessCount("0"); |
| | | String userId = null; |
| | | userId = pd.getUserId(); |
| | | if(userId != null) { |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(userId); |
| | | List<UserDto> users = iUserInnerServiceSMOImpl.getUsers(userDto); |
| | | if(users != null && users.size() > 0) { |
| | | assetImportLogPo.setUserName(users.get(0).getUserName()); |
| | | } |
| | | } |
| | | throw new IllegalArgumentException("请将业主成员放到业主后面,或者业主成员未找到对应的业主"); |
| | | } |
| | | assetImportLogPo.setImportFileName(result.getImportFileName()); |
| | | assetImportLogInnerServiceSMOImpl.saveAssetImportLog(assetImportLogPo); |
| | | |
| | | /** |
| | | * 保存 楼栋和 单元信息 |
| | | * |
| | | * @param pd |
| | | * @param floors |
| | | * @param result |
| | | * @return |
| | | */ |
| | | private ResponseEntity<String> savedFloorAndUnitInfo(IPageData pd, List<ImportFloor> floors, ComponentValidateResult result) { |
| | | String apiUrl = ""; |
| | | JSONObject paramIn = null; |
| | | ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK); |
| | | |
| | | AssetImportLogDto assetImportLogDto = new AssetImportLogDto(); |
| | | assetImportLogDto.setSuccessCount(0L); |
| | | assetImportLogDto.setErrorCount(0L); |
| | | assetImportLogDto.setCommunityId(result.getCommunityId()); |
| | | assetImportLogDto.setLogType(AssetImportLogDto.LOG_TYPE_FLOOR_UNIT_IMPORT); |
| | | List<AssetImportLogDetailDto> assetImportLogDetailDtos = new ArrayList<>(); |
| | | assetImportLogDto.setAssetImportLogDetailDtos(assetImportLogDetailDtos); |
| | | long successCount = 0L; |
| | | long failCount = 0L; |
| | | AssetImportLogDetailDto assetImportLogDetailDto = null; |
| | | try { |
| | | for (int floorIndex = 0; floorIndex < floors.size(); floorIndex++) { |
| | | ImportFloor importFloor = floors.get(floorIndex); |
| | | paramIn = new JSONObject(); |
| | | //先保存 楼栋信息 |
| | | JSONObject savedFloorInfo = getExistsFloor(pd, result, importFloor); |
| | | // 如果不存在,才插入 |
| | | if (savedFloorInfo == null) { |
| | | apiUrl = "floor.saveFloor"; |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | paramIn.put("floorNum", importFloor.getFloorNum()); |
| | | paramIn.put("userId", result.getUserId()); |
| | | paramIn.put("name", importFloor.getFloorNum() + "栋"); |
| | | paramIn.put("floorArea", 1.00); |
| | | paramIn.put("seq",floorIndex+1); |
| | | |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | savedFloorInfo = getExistsFloor(pd, result, importFloor); |
| | | List<AssetImportLogDetailPo> assetImportLogDetailPos = new ArrayList<>(); |
| | | AssetImportLogDetailPo assetImportLogDetailPo = null; |
| | | int flag = 0; |
| | | Calendar createTimeCal = Calendar.getInstance(); |
| | | for (Object data : datas) { |
| | | createTimeCal.add(Calendar.SECOND,1); |
| | | assetImportLogDetailPo = new AssetImportLogDetailPo(); |
| | | assetImportLogDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId("11")); |
| | | assetImportLogDetailPo.setLogId(logId); |
| | | assetImportLogDetailPo.setState(AssetImportLogDetailDto.STATE_WAIT_IMPORT); |
| | | assetImportLogDetailPo.setMessage("待导入"); |
| | | assetImportLogDetailPo.setCommunityId(result.getCommunityId()); |
| | | assetImportLogDetailPo.setContent(JSONObject.toJSONString(data)); |
| | | assetImportLogDetailPo.setCreateTime(DateUtil.getFormatTimeStringA(createTimeCal.getTime())); |
| | | assetImportLogDetailPos.add(assetImportLogDetailPo); |
| | | if (assetImportLogDetailPos.size() > DEFAULT_ROWS) { |
| | | flag = assetImportLogDetailInnerServiceSMOImpl.saveAssetImportLogDetails(assetImportLogDetailPos); |
| | | if (flag < 1) { |
| | | throw new IllegalArgumentException("保存失败"); |
| | | } |
| | | |
| | | /***************************************导入日志记录****************************************************/ |
| | | if (responseEntity != null && responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息 |
| | | failCount += 1; |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | if (Assert.isJsonObject(responseEntity.getBody())) { |
| | | JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody()); |
| | | assetImportLogDetailDto.setState(paramOut.getString("code")); |
| | | assetImportLogDetailDto.setMessage(paramOut.getString("msg")); |
| | | } else { |
| | | assetImportLogDetailDto.setState("F"); |
| | | assetImportLogDetailDto.setMessage(responseEntity.getBody()); |
| | | } |
| | | assetImportLogDetailDto.setObjName(importFloor.getFloorNum() + "栋"); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | continue; |
| | | } else { |
| | | successCount += 1; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } |
| | | |
| | | |
| | | if (savedFloorInfo == null) { |
| | | continue; |
| | | } |
| | | importFloor.setFloorId(savedFloorInfo.getString("floorId")); |
| | | paramIn.clear(); |
| | | //判断单元信息是否已经存在,如果存在则不保存数据unit.queryUnits |
| | | JSONObject savedUnitInfo = getExistsUnit(pd, result, importFloor); |
| | | if (savedUnitInfo != null) { |
| | | importFloor.setUnitId(savedUnitInfo.getString("unitId")); |
| | | continue; |
| | | } |
| | | |
| | | apiUrl = "unit.saveUnit"; |
| | | |
| | | paramIn.put("communityId", result.getCommunityId()); |
| | | paramIn.put("floorId", savedFloorInfo.getString("floorId")); |
| | | paramIn.put("unitNum", importFloor.getUnitNum()); |
| | | paramIn.put("layerCount", importFloor.getLayerCount()); |
| | | paramIn.put("lift", importFloor.getLift()); |
| | | paramIn.put("unitArea", 1.00); |
| | | responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); |
| | | /****************************** 开始记录失败日志 *******************************/ |
| | | if (responseEntity != null && responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息 |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | if (Assert.isJsonObject(responseEntity.getBody())) { |
| | | JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody()); |
| | | assetImportLogDetailDto.setState(paramOut.getString("code")); |
| | | assetImportLogDetailDto.setMessage(paramOut.getString("msg")); |
| | | } else { |
| | | assetImportLogDetailDto.setState("F"); |
| | | assetImportLogDetailDto.setMessage(responseEntity.getBody()); |
| | | } |
| | | assetImportLogDetailDto.setObjName(importFloor.getFloorNum() + "栋" + importFloor.getUnitNum() + "单元"); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | successCount = successCount > 0 ? successCount - 1 : successCount; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } else { |
| | | JSONObject body = JSONObject.parseObject(responseEntity.getBody()); |
| | | if (body.containsKey("code") && body.getIntValue("code") != 0) { |
| | | assetImportLogDetailDto = new AssetImportLogDetailDto(); |
| | | assetImportLogDetailDto.setCommunityId(assetImportLogDto.getCommunityId()); |
| | | assetImportLogDetailDto.setState(body.getString("code")); |
| | | assetImportLogDetailDto.setMessage(body.getString("msg")); |
| | | assetImportLogDetailDto.setObjName(importFloor.getFloorNum() + "栋" + importFloor.getUnitNum() + "单元"); |
| | | assetImportLogDetailDtos.add(assetImportLogDetailDto); |
| | | failCount += 1; |
| | | successCount = successCount > 0 ? successCount - 1 : successCount; |
| | | assetImportLogDto.setSuccessCount(successCount); |
| | | assetImportLogDto.setErrorCount(failCount); |
| | | } |
| | | } |
| | | //将unitId 刷入ImportFloor对象 |
| | | savedUnitInfo = getExistsUnit(pd, result, importFloor); |
| | | importFloor.setUnitId(savedUnitInfo.getString("unitId")); |
| | | |
| | | } |
| | | } finally { |
| | | saveTransactionLogSMOImpl.saveAssetImportLog(assetImportLogDto); |
| | | } |
| | | return responseEntity; |
| | | } |
| | | |
| | | private JSONObject getExistsUnit(IPageData pd, ComponentValidateResult result, ImportFloor importFloor) { |
| | | String apiUrl = ""; |
| | | ResponseEntity<String> responseEntity = null; |
| | | apiUrl = "unit.queryUnits?communityId=" + result.getCommunityId() |
| | | + "&floorId=" + importFloor.getFloorId() + "&unitNum=" + importFloor.getUnitNum(); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息 |
| | | return null; |
| | | } |
| | | |
| | | JSONArray savedFloorInfoResults = JSONArray.parseArray(responseEntity.getBody()); |
| | | |
| | | if (savedFloorInfoResults == null || savedFloorInfoResults.size() != 1) { |
| | | return null; |
| | | } |
| | | |
| | | JSONObject savedUnitInfo = savedFloorInfoResults.getJSONObject(0); |
| | | |
| | | return savedUnitInfo; |
| | | } |
| | | |
| | | private JSONObject getExistsFloor(IPageData pd, ComponentValidateResult result, ImportFloor importFloor) { |
| | | String apiUrl = ""; |
| | | ResponseEntity<String> responseEntity = null; |
| | | apiUrl = "floor.queryFloors?page=1&row=1&communityId=" + result.getCommunityId() + "&floorNum=" + importFloor.getFloorNum(); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息 |
| | | return null; |
| | | } |
| | | |
| | | JSONObject savedFloorInfoResult = JSONObject.parseObject(responseEntity.getBody()); |
| | | |
| | | if (!savedFloorInfoResult.containsKey("apiFloorDataVoList") || savedFloorInfoResult.getJSONArray("apiFloorDataVoList").size() != 1) { |
| | | return null; |
| | | } |
| | | |
| | | JSONObject savedFloorInfo = savedFloorInfoResult.getJSONArray("apiFloorDataVoList").getJSONObject(0); |
| | | |
| | | return savedFloorInfo; |
| | | } |
| | | |
| | | /** |
| | | * 查询存在的业主 |
| | | * |
| | | * @param pd |
| | | * @param result |
| | | * @param importOwner |
| | | * @return |
| | | */ |
| | | private JSONObject getExistsOwner(IPageData pd, ComponentValidateResult result, ImportOwner importOwner) { |
| | | String apiUrl = ""; |
| | | ResponseEntity<String> responseEntity = null; |
| | | apiUrl = "owner.queryOwners?page=1&row=1&communityId=" + result.getCommunityId() |
| | | + "&ownerTypeCd=" + importOwner.getOwnerTypeCd() + "&name=" + importOwner.getOwnerName() + "&link=" + importOwner.getTel(); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息 |
| | | return null; |
| | | } |
| | | |
| | | JSONObject savedOwnerInfoResult = JSONObject.parseObject(responseEntity.getBody()); |
| | | |
| | | if (!savedOwnerInfoResult.containsKey("owners") || savedOwnerInfoResult.getJSONArray("owners").size() != 1) { |
| | | return null; |
| | | } |
| | | |
| | | JSONObject savedOwnerInfo = savedOwnerInfoResult.getJSONArray("owners").getJSONObject(0); |
| | | |
| | | return savedOwnerInfo; |
| | | } |
| | | |
| | | /** |
| | | * 查询存在的停车场 |
| | | * |
| | | * @param pd |
| | | * @param result |
| | | * @param parkingSpace |
| | | * @return |
| | | */ |
| | | private JSONObject getExistsParkingArea(IPageData pd, ComponentValidateResult result, ImportParkingSpace parkingSpace) { |
| | | String apiUrl = ""; |
| | | ResponseEntity<String> responseEntity = null; |
| | | apiUrl = "parkingArea.listParkingAreas?page=1&row=1&communityId=" + result.getCommunityId() |
| | | + "&num=" + parkingSpace.getPaNum(); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息 |
| | | return null; |
| | | } |
| | | |
| | | JSONObject savedParkingAreaInfoResult = JSONObject.parseObject(responseEntity.getBody()); |
| | | |
| | | if (!savedParkingAreaInfoResult.containsKey("parkingAreas") || savedParkingAreaInfoResult.getJSONArray("parkingAreas").size() != 1) { |
| | | return null; |
| | | } |
| | | |
| | | JSONObject savedParkingAreaInfo = savedParkingAreaInfoResult.getJSONArray("parkingAreas").getJSONObject(0); |
| | | |
| | | return savedParkingAreaInfo; |
| | | } |
| | | |
| | | /** |
| | | * 数据校验处理 |
| | | * |
| | | * @param floors |
| | | * @param owners |
| | | * @param rooms |
| | | * @param parkingSpaces |
| | | */ |
| | | private void importExcelDataValidate(List<ImportFloor> floors, List<ImportOwner> owners, List<ImportRoom> rooms, List<ImportFee> fees, List<ImportParkingSpace> parkingSpaces) { |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 获取车位信息 |
| | | * |
| | | * @param workbook |
| | | * @param parkingSpaces |
| | | */ |
| | | private void getParkingSpaces(Workbook workbook, List<ImportParkingSpace> parkingSpaces, List<ImportOwner> owners) { |
| | | Sheet sheet = null; |
| | | sheet = ImportExcelUtils.getSheet(workbook, "车位信息"); |
| | | List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); |
| | | ImportParkingSpace importParkingSpace = 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) + "行停车场编号为空"); |
| | | Assert.hasValue(os[1], "车位信息选项中" + (osIndex + 1) + "行车位编码为空"); |
| | | Assert.hasValue(os[2], "车位信息选项中" + (osIndex + 1) + "行停车场类型为空"); |
| | | Assert.hasValue(os[3], "车位信息选项中" + (osIndex + 1) + "行面积为空,没有请填写规定值 如10"); |
| | | importParkingSpace = new ImportParkingSpace(); |
| | | importParkingSpace.setPaNum(os[0].toString()); |
| | | importParkingSpace.setPsNum(os[1].toString()); |
| | | importParkingSpace.setTypeCd(os[2].toString()); |
| | | importParkingSpace.setArea(Double.parseDouble(os[3].toString())); |
| | | if (os.length < 5 || StringUtil.isNullOrNone(os[4])) { |
| | | parkingSpaces.add(importParkingSpace); |
| | | continue; |
| | | } |
| | | ImportOwner importOwner = getImportOwner(owners, os[4].toString()); |
| | | importParkingSpace.setImportOwner(importOwner); |
| | | if (importOwner != null) { |
| | | importParkingSpace.setCarNum(os[5].toString()); |
| | | importParkingSpace.setCarBrand(os[6].toString()); |
| | | importParkingSpace.setCarType(os[7].toString()); |
| | | importParkingSpace.setCarColor(os[8].toString()); |
| | | importParkingSpace.setSellOrHire(os[9].toString()); |
| | | |
| | | String startTime = excelDoubleToDate(os[10].toString()); |
| | | String endTime = excelDoubleToDate(os[11].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 文本格式"); |
| | | importParkingSpace.setStartTime(startTime); |
| | | importParkingSpace.setEndTime(endTime); |
| | | } |
| | | |
| | | parkingSpaces.add(importParkingSpace); |
| | | } |
| | | } |
| | | |
| | | //解析Excel日期格式 |
| | | public static String excelDoubleToDate(String strDate) { |
| | | if (strDate.length() == 5) { |
| | | try { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | Date tDate = DoubleToDate(Double.parseDouble(strDate)); |
| | | return sdf.format(tDate); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return strDate; |
| | | } |
| | | } |
| | | return strDate; |
| | | } |
| | | |
| | | |
| | | //解析Excel日期格式 |
| | | public static Date DoubleToDate(Double dVal) { |
| | | Date tDate = new Date(); |
| | | long localOffset = tDate.getTimezoneOffset() * 60000; //系统时区偏移 1900/1/1 到 1970/1/1 的 25569 天 |
| | | tDate.setTime((long) ((dVal - 25569) * 24 * 3600 * 1000 + localOffset)); |
| | | |
| | | return tDate; |
| | | } |
| | | |
| | | /** |
| | | * 获取 房屋信息 |
| | | * |
| | | * @param workbook |
| | | * @param rooms |
| | | */ |
| | | private void getRooms(Workbook workbook, List<ImportRoom> rooms, |
| | | List<ImportFloor> floors, List<ImportOwner> owners) { |
| | | Sheet sheet = null; |
| | | sheet = ImportExcelUtils.getSheet(workbook, "房屋信息"); |
| | | List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); |
| | | ImportRoom importRoom = null; |
| | | for (int osIndex = 0; osIndex < oList.size(); osIndex++) { |
| | | try { |
| | | Object[] os = oList.get(osIndex); |
| | | if (osIndex == 0) { // 第一行是 头部信息 直接跳过 |
| | | continue; |
| | | } |
| | | if (StringUtil.isNullOrNone(os[0])) { |
| | | 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) + "行房屋户型为空"); |
| | | Assert.hasValue(os[5], "房屋信息选项中" + (osIndex + 1) + "行建筑面积为空"); |
| | | if (os.length > 6 && !StringUtil.isNullOrNone(os[6])) { |
| | | Assert.hasValue(os[7], "房屋信息选项中" + (osIndex + 1) + "行房屋费用为空"); |
| | | Assert.hasValue(os[8], "房屋信息选项中" + (osIndex + 1) + "行费用到期时间为空"); |
| | | } |
| | | Assert.hasValue(os[9], "房屋信息选项中" + (osIndex + 1) + "行房屋类型为空"); |
| | | Assert.hasValue(os[10], "房屋信息选项中" + (osIndex + 1) + "行室内面积为空"); |
| | | Assert.hasValue(os[11], "房屋信息选项中" + (osIndex + 1) + "行租金为空"); |
| | | importRoom = new ImportRoom(); |
| | | importRoom.setRoomNum(os[0].toString()); |
| | | importRoom.setFloor(getImportFloor(floors, os[1].toString(), os[2].toString())); |
| | | importRoom.setLayer(Integer.parseInt(os[3].toString())); |
| | | importRoom.setSection(os[4].toString()); |
| | | importRoom.setBuiltUpArea(Double.parseDouble(os[5].toString())); |
| | | importRoom.setRoomSubType(os[9].toString()); |
| | | importRoom.setRoomArea(os[10].toString()); |
| | | importRoom.setRoomRent(os[11].toString()); |
| | | |
| | | |
| | | if (os.length > 6 && !StringUtil.isNullOrNone(os[6])) { |
| | | importRoom.setRoomFeeId(os[7].toString()); |
| | | String feeEndDate = excelDoubleToDate(os[8].toString()); |
| | | importRoom.setFeeEndDate(feeEndDate); |
| | | } |
| | | if (os.length < 7 || StringUtil.isNullOrNone(os[6])) { |
| | | rooms.add(importRoom); |
| | | continue; |
| | | } |
| | | importRoom.setImportOwner(getImportOwner(owners, os[6].toString())); |
| | | rooms.add(importRoom); |
| | | } catch (Exception e) { |
| | | logger.error("房屋数据校验失败", e); |
| | | throw new IllegalArgumentException("房屋信息sheet中第" + (osIndex + 1) + "行数据错误,请检查" + e.getLocalizedMessage()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取 房屋信息 |
| | | * |
| | | * @param workbook |
| | | * @param importFees |
| | | */ |
| | | private void getFee(Workbook workbook, List<ImportFee> importFees) { |
| | | Sheet sheet = null; |
| | | sheet = ImportExcelUtils.getSheet(workbook, "费用设置"); |
| | | List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); |
| | | ImportFee importFee = 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) + "行费用编号为空"); |
| | | Assert.hasValue(os[1], "费用设置选项中" + (osIndex + 1) + "行费用类型为空"); |
| | | Assert.hasValue(os[2], "费用设置选项中" + (osIndex + 1) + "行收费项目为空"); |
| | | Assert.hasValue(os[3], "费用设置选项中" + (osIndex + 1) + "行费用标识为空"); |
| | | Assert.hasValue(os[4], "费用设置选项中" + (osIndex + 1) + "行费用类型为空"); |
| | | Assert.hasValue(os[5], "费用设置选项中" + (osIndex + 1) + "行缴费周期为空"); |
| | | Assert.isInteger(os[5].toString(), "费用设置选项中" + (osIndex + 1) + "行缴费周期不是正整数"); |
| | | Assert.hasValue(os[6], "费用设置选项中" + (osIndex + 1) + "行出账类型为空"); |
| | | Assert.isDate(os[7].toString(), DateUtil.DATE_FORMATE_STRING_B, "费用设置选项中" + (osIndex + 1) + "行计费起始时间不是有效时间格式 请输入类似2020-06-01"); |
| | | Assert.isDate(os[8].toString(), DateUtil.DATE_FORMATE_STRING_B, "费用设置选项中" + (osIndex + 1) + "行计费终止时间不是有效时间格式 请输入类似2037-01-01"); |
| | | Assert.hasValue(os[9], "费用设置选项中" + (osIndex + 1) + "行计算公式为空"); |
| | | if (!"1001".equals(os[9].toString()) && !"2002".equals(os[9].toString())) { |
| | | throw new IllegalArgumentException("费用设置选项中" + (osIndex + 1) + "行计算公式错误 请填写1001 或者2002"); |
| | | } |
| | | Assert.hasValue(os[10], "费用设置选项中" + (osIndex + 1) + "行计费单价为空"); |
| | | Assert.hasValue(os[11], "费用设置选项中" + (osIndex + 1) + "行固定费用为空"); |
| | | importFee = new ImportFee(); |
| | | importFee.setId(os[0].toString()); |
| | | importFee.setFeeTypeCd("物业费".equals(os[1]) ? "888800010001" : "888800010002"); |
| | | importFee.setFeeName(os[2].toString()); |
| | | importFee.setFeeFlag("周期性费用".equals(os[3]) ? "1003006" : "2006012"); |
| | | importFee.setPaymentCd("预付费".equals(os[4]) ? "1200" : "2100"); |
| | | String billType = ""; |
| | | if ("每年1月1日".equals(os[6])) { |
| | | billType = "001"; |
| | | } else if ("每月1日".equals(os[6])) { |
| | | billType = "002"; |
| | | } else if ("每日".equals(os[6])) { |
| | | billType = "003"; |
| | | } else { |
| | | billType = "004"; |
| | | } |
| | | importFee.setBillType(billType); |
| | | importFee.setPaymentCycle(os[5].toString()); |
| | | importFee.setStartTime(os[7].toString()); |
| | | importFee.setEndTime(os[8].toString()); |
| | | importFee.setComputingFormula(os[9].toString()); |
| | | importFee.setSquarePrice(os[10].toString()); |
| | | importFee.setAdditionalAmount(os[11].toString()); |
| | | importFees.add(importFee); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 从导入的业主信息中获取业主,如果没有返回 null |
| | | * |
| | | * @param owners |
| | | * @param ownerNum |
| | | * @return |
| | | */ |
| | | private ImportOwner getImportOwner(List<ImportOwner> owners, String ownerNum) { |
| | | for (ImportOwner importOwner : owners) { |
| | | if (ownerNum.equals(importOwner.getOwnerNum())) { |
| | | return importOwner; |
| | | assetImportLogDetailPos = new ArrayList<>(); |
| | | } |
| | | } |
| | | |
| | | return null; |
| | | |
| | | } |
| | | |
| | | /** |
| | | * get 导入楼栋信息 |
| | | * |
| | | * @param floors |
| | | */ |
| | | private ImportFloor getImportFloor(List<ImportFloor> floors, String floorNum, String unitNum) { |
| | | for (ImportFloor importFloor : floors) { |
| | | if (floorNum.equals(importFloor.getFloorNum()) |
| | | && unitNum.equals(importFloor.getUnitNum())) { |
| | | return importFloor; |
| | | if (assetImportLogDetailPos.size() > 0) { |
| | | flag = assetImportLogDetailInnerServiceSMOImpl.saveAssetImportLogDetails(assetImportLogDetailPos); |
| | | if (flag < 1) { |
| | | throw new IllegalArgumentException("保存失败"); |
| | | } |
| | | } |
| | | |
| | | throw new IllegalArgumentException("在楼栋单元sheet中未找到楼栋编号[" + floorNum + "],单元编号[" + unitNum + "]数据"); |
| | | } |
| | | |
| | | /** |
| | | * 获取业主信息 |
| | | * |
| | | * @param workbook |
| | | * @param owners |
| | | */ |
| | | private void getOwners(Workbook workbook, List<ImportOwner> owners) { |
| | | Sheet sheet = null; |
| | | sheet = ImportExcelUtils.getSheet(workbook, "业主信息"); |
| | | List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); |
| | | ImportOwner importOwner = null; |
| | | for (int osIndex = 0; osIndex < oList.size(); osIndex++) { |
| | | try { |
| | | Object[] os = oList.get(osIndex); |
| | | if (osIndex == 0) { // 第一行是 头部信息 直接跳过 |
| | | continue; |
| | | } |
| | | if (StringUtil.isNullOrNone(os[0])) { |
| | | continue; |
| | | } |
| | | Assert.hasValue(os[0], "业主信息选项中" + (osIndex + 1) + "行业主编号为空"); |
| | | Assert.hasValue(os[1], "业主信息选项中" + (osIndex + 1) + "行业主名称为空"); |
| | | Assert.hasValue(os[2], "业主信息选项中" + (osIndex + 1) + "行业主性别为空"); |
| | | String tel = StringUtil.isNullOrNone(os[4]) ? "19999999999" : os[4].toString(); |
| | | String idCard = StringUtil.isNullOrNone(os[5]) ? "10000000000000000001" : os[5].toString(); |
| | | String ownerTypeCd = StringUtil.isNullOrNone(os[6]) ? "1001" : os[6].toString(); |
| | | String parentOwnerId = StringUtil.isNullOrNone(os[7]) ? os[0].toString() : os[7].toString(); |
| | | |
| | | if (os[4].toString().length() > 11) { |
| | | throw new IllegalArgumentException(os[1].toString() + " 的手机号超过11位,请核实"); |
| | | } |
| | | if (os[5].toString().length() > 18) { |
| | | throw new IllegalArgumentException(os[1].toString() + " 的身份证超过18位,请核实"); |
| | | } |
| | | |
| | | String age = StringUtil.isNullOrNone(os[3]) ? CommonUtil.getAgeByCertId(idCard) : os[3].toString(); |
| | | importOwner = new ImportOwner(); |
| | | importOwner.setOwnerNum(os[0].toString()); |
| | | importOwner.setOwnerName(os[1].toString()); |
| | | importOwner.setSex("男".equals(os[2].toString()) ? "0" : "1"); |
| | | importOwner.setAge(Integer.parseInt(age)); |
| | | importOwner.setTel(tel); |
| | | importOwner.setIdCard(idCard); |
| | | importOwner.setOwnerTypeCd(ownerTypeCd); |
| | | importOwner.setParentOwnerId(parentOwnerId); |
| | | owners.add(importOwner); |
| | | } catch (Exception e) { |
| | | logger.error("第" + (osIndex + 1) + "行数据出现问题", e); |
| | | throw new IllegalArgumentException("第" + (osIndex + 1) + "行数据出现问题" + e.getLocalizedMessage(), e); |
| | | } |
| | | // todo 调用 导入队列开始导入 |
| | | flag = userImportDataV1InnerServiceSMOImpl.importExcelData(assetImportLogPo); |
| | | if (flag > 0) { |
| | | return ResultVo.createResponseEntity(assetImportLogPo); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取小区 |
| | | * |
| | | * @param workbook |
| | | * @param floors |
| | | */ |
| | | private void getFloors(Workbook workbook, List<ImportFloor> floors) { |
| | | Sheet sheet = null; |
| | | sheet = ImportExcelUtils.getSheet(workbook, "楼栋单元"); |
| | | List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); |
| | | ImportFloor importFloor = 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) + "行楼栋号为空"); |
| | | Assert.hasValue(os[1], "楼栋单元选项中" + (osIndex + 1) + "行单元编号为空"); |
| | | Assert.hasValue(os[2], "楼栋单元选项中" + (osIndex + 1) + "行总楼层为空"); |
| | | Assert.hasValue(os[3], "楼栋单元选项中" + (osIndex + 1) + "行是否有电梯为空"); |
| | | importFloor = new ImportFloor(); |
| | | importFloor.setFloorNum(os[0].toString()); |
| | | importFloor.setUnitNum(os[1].toString()); |
| | | importFloor.setLayerCount(os[2].toString()); |
| | | importFloor.setLift("有".equals(os[3].toString()) ? "1010" : "2020"); |
| | | floors.add(importFloor); |
| | | } |
| | | return ResultVo.error("导入失败"); |
| | | } |
| | | |
| | | |
| | | public RestTemplate getRestTemplate() { |
| | | return restTemplate; |
| | | } |
| | | |
| | | public void setRestTemplate(RestTemplate restTemplate) { |
| | | this.restTemplate = restTemplate; |
| | | } |
| | | } |