| service-api/src/main/java/com/java110/api/importData/adapt/ImportOwnerCarDataCleaningAdapt.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| service-job/src/main/java/com/java110/job/importData/adapt/ImportOwnerCarQueueDataAdapt.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| springboot/src/main/java/com/java110/boot/components/assetImport/ImportOwnerCarComponent.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| springboot/src/main/java/com/java110/boot/importData/adapt/ImportOwnerCarDataCleaningAdapt.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| springboot/src/main/java/com/java110/boot/smo/assetImport/IImportOwnerCarSMO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| springboot/src/main/java/com/java110/boot/smo/assetImport/impl/ImportOwnerCarSMOImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| springboot/src/main/resources/application-debug.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
service-api/src/main/java/com/java110/api/importData/adapt/ImportOwnerCarDataCleaningAdapt.java
New file @@ -0,0 +1,116 @@ 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.owner.OwnerCarDto; import com.java110.dto.system.ComponentValidateResult; import com.java110.intf.user.IOwnerV1InnerServiceSMO; 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.text.ParseException; import java.util.ArrayList; import java.util.List; @Service("importOwnerCarDataCleaning") public class ImportOwnerCarDataCleaningAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt { @Autowired private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl; @Override public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception{ List<OwnerCarDto> ownerCars = new ArrayList<OwnerCarDto>(); //封装对象 getOwnerCars(workbook, ownerCars, result); //数据格式校验 validateCarInfo(ownerCars); return ownerCars; } /** * 获取业主车辆信息 * * @param workbook * @param ownerCars */ private void getOwnerCars(Workbook workbook, List<OwnerCarDto> ownerCars, ComponentValidateResult result) throws ParseException { Sheet sheet = null; sheet = ImportExcelUtils.getSheet(workbook, "业主车辆信息"); List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); OwnerCarDto importOwnerCar = 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; } 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.hasValue(os[6], (osIndex + 1) + "停车场不能为空"); 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) + "车位类型不能为空"); String startTime = excelDoubleToDate(os[8].toString()); String endTime = excelDoubleToDate(os[9].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文本格式"); importOwnerCar = new OwnerCarDto(); importOwnerCar.setCarNum(os[0].toString().trim()); importOwnerCar.setOwnerName(os[1].toString().trim()); importOwnerCar.setLink(os[2].toString().trim()); importOwnerCar.setCarBrand(os[3].toString().trim()); importOwnerCar.setCarType(os[4].toString().trim()); importOwnerCar.setCarColor(os[5].toString().trim()); importOwnerCar.setAreaNum(os[6].toString().trim()); //获取车位 String parkingLot = os[7].toString().trim(); importOwnerCar.setNum(parkingLot); importOwnerCar.setLogStartTime(startTime); importOwnerCar.setLogEndTime(endTime); importOwnerCar.setTypeCd(os[10].toString().trim()); importOwnerCar.setSpaceSate(os[11].toString().trim()); importOwnerCar.setCommunityId(result.getCommunityId()); importOwnerCar.setUserId(result.getUserId()); ownerCars.add(importOwnerCar); } } /** * 数据格式校验 * * @param ownerCars */ private void validateCarInfo(List<OwnerCarDto> ownerCars) { for (OwnerCarDto ownerCarDto : ownerCars) { if (!"1001".equals(ownerCarDto.getTypeCd()) && !"2001".equals(ownerCarDto.getTypeCd())) { throw new IllegalArgumentException(ownerCarDto.getCarNum() + "停车场类型应填写 1001(地上停车场)或者 2001 (地下停车场)"); } if (!"H".equals(ownerCarDto.getSpaceSate()) && !"S".equals(ownerCarDto.getSpaceSate())) { throw new IllegalArgumentException(ownerCarDto.getCarNum() + "车位状态应填写 S(出售)或者 H (出租)"); } } } } service-job/src/main/java/com/java110/job/importData/adapt/ImportOwnerCarQueueDataAdapt.java
New file @@ -0,0 +1,192 @@ package com.java110.job.importData.adapt; import com.alibaba.fastjson.JSONObject; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.log.AssetImportLogDetailDto; import com.java110.dto.owner.OwnerCarDto; import com.java110.dto.owner.OwnerDto; import com.java110.dto.parking.ParkingAreaDto; import com.java110.dto.parking.ParkingSpaceDto; import com.java110.intf.community.IParkingAreaV1InnerServiceSMO; import com.java110.intf.community.IParkingSpaceV1InnerServiceSMO; import com.java110.intf.user.IOwnerCarV1InnerServiceSMO; import com.java110.intf.user.IOwnerV1InnerServiceSMO; import com.java110.job.importData.DefaultImportData; import com.java110.job.importData.IImportDataAdapt; import com.java110.po.car.OwnerCarPo; import com.java110.po.owner.OwnerPo; import com.java110.po.parking.ParkingAreaPo; import com.java110.po.parking.ParkingSpacePo; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.ListUtil; import com.java110.utils.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * 车辆导入 适配器 * 前端请求 时 必须传入 * param.append('importAdapt', "importRoomOwner"); */ @Service("importOwnerCarQueueData") public class ImportOwnerCarQueueDataAdapt extends DefaultImportData implements IImportDataAdapt { @Autowired private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl; @Autowired private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl; @Autowired private IParkingSpaceV1InnerServiceSMO parkingSpaceV1InnerServiceSMOImpl; @Autowired private IParkingAreaV1InnerServiceSMO parkingAreaV1InnerServiceSMOImpl; @Override public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) { importDatas(assetImportLogDetailDtos); } private void importDatas(List<AssetImportLogDetailDto> infos) { String state = ""; String msg = ""; for (AssetImportLogDetailDto assetImportLogDetailDto : infos) { try { doImportData(assetImportLogDetailDto); updateImportLogDetailState(assetImportLogDetailDto.getDetailId()); } catch (Exception e) { e.printStackTrace(); updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e); } } } /** * 导入数据 * * @param assetImportLogDetailDto */ private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) { JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent()); OwnerCarDto ownerCarDto = BeanConvertUtil.covertBean(data, OwnerCarDto.class); //todo 导入业主信息 importOwnerData(ownerCarDto); OwnerCarPo ownerCarPo = BeanConvertUtil.covertBean(ownerCarDto, OwnerCarPo.class); ownerCarPo.setStartTime(ownerCarDto.getLogStartTime()); ownerCarPo.setEndTime(ownerCarDto.getLogEndTime()); //获取房屋名称 ownerCarPo.setCarTypeCd("1001"); //主车辆 ParkingAreaDto parkingAreaDto = new ParkingAreaDto(); parkingAreaDto.setNum(ownerCarDto.getAreaNum()); parkingAreaDto.setTypeCd(ownerCarDto.getTypeCd()); parkingAreaDto.setCommunityId(ownerCarDto.getCommunityId()); //查询停车场 List<ParkingAreaDto> parkingAreaDtos = parkingAreaV1InnerServiceSMOImpl.queryParkingAreas(parkingAreaDto); //Assert.listOnlyOne(parkingAreaDtos, "查询停车场错误!"); String paId = ""; if (ListUtil.isNull(parkingAreaDtos)) { paId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_paId); ParkingAreaPo parkingAreaPo = new ParkingAreaPo(); parkingAreaPo.setCommunityId(ownerCarDto.getCommunityId()); parkingAreaPo.setNum(ownerCarDto.getAreaNum()); parkingAreaPo.setPaId(paId); parkingAreaPo.setTypeCd(ownerCarDto.getTypeCd()); parkingAreaPo.setRemark("导入数据"); parkingAreaV1InnerServiceSMOImpl.saveParkingArea(parkingAreaPo); } else { paId = parkingAreaDtos.get(0).getPaId(); } ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto(); parkingSpaceDto.setNum(ownerCarDto.getNum()); parkingSpaceDto.setPaId(paId); parkingSpaceDto.setCommunityId(ownerCarDto.getCommunityId()); //查询停车位 List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceV1InnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto); String state = ""; String psId = ""; if (ListUtil.isNull(parkingSpaceDtos)) { psId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_psId); ParkingSpacePo parkingSpacePo = new ParkingSpacePo(); parkingSpacePo.setCommunityId(ownerCarDto.getCommunityId()); parkingSpacePo.setNum(ownerCarDto.getNum()); parkingSpacePo.setPaId(paId); parkingSpacePo.setParkingType(ParkingSpaceDto.TYPE_CD_COMMON); parkingSpacePo.setState(ParkingSpaceDto.STATE_FREE); parkingSpacePo.setArea("1"); parkingSpacePo.setPsId(psId); parkingSpacePo.setRemark("导入数据"); parkingSpaceV1InnerServiceSMOImpl.saveParkingSpace(parkingSpacePo); state = ParkingSpaceDto.STATE_FREE; } else { psId = parkingSpaceDtos.get(0).getPsId(); //获取停车位状态(出售 S,出租 H ,空闲 F) state = parkingSpaceDtos.get(0).getState(); } if (!StringUtil.isEmpty(state) && !state.equals("F")) { throw new IllegalArgumentException(ownerCarDto.getAreaNum() + "停车场-" + ownerCarDto.getNum() + "停车位不是空闲状态!"); } ownerCarPo.setPsId(psId); ownerCarPo.setOwnerId(ownerCarDto.getOwnerId()); ownerCarPo.setCommunityId(ownerCarDto.getCommunityId()); ownerCarPo.setCarId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_carId)); ownerCarPo.setMemberId(ownerCarPo.getCarId()); ownerCarPo.setState("1001"); //1001 正常状态,2002 车位释放欠费状态,3003 车位释放 ownerCarPo.setLeaseType(ownerCarDto.getSpaceSate()); ownerCarV1InnerServiceSMOImpl.saveOwnerCar(ownerCarPo); ParkingSpacePo parkingSpacePo = new ParkingSpacePo(); parkingSpacePo.setPsId(psId); //车位id parkingSpacePo.setState(ownerCarDto.getSpaceSate()); parkingSpaceV1InnerServiceSMOImpl.updateParkingSpace(parkingSpacePo); } private void importOwnerData(OwnerCarDto ownerCarDto) { OwnerDto ownerDto = new OwnerDto(); ownerDto.setName(ownerCarDto.getOwnerName()); ownerDto.setLink(ownerCarDto.getLink()); ownerDto.setCommunityId(ownerCarDto.getCommunityId()); //查询业主 List<OwnerDto> ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto); //Assert.listOnlyOne(ownerDtos, ownerCarDto.getCarNum() + "查询业主信息错误!"); if (ListUtil.isNull(ownerDtos)) { OwnerPo ownerPo = new OwnerPo(); ownerPo.setUserId("-1"); ownerPo.setAge("1"); ownerPo.setCommunityId(ownerCarDto.getCommunityId()); ownerPo.setIdCard(""); ownerPo.setLink(ownerCarDto.getLink()); ownerPo.setSex("1"); ownerPo.setMemberId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId)); ownerPo.setName(ownerCarDto.getOwnerName()); ownerPo.setOwnerId(ownerPo.getMemberId()); //业主 所以和成员ID需要一样 ownerPo.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER); ownerPo.setRemark("导入车辆导入"); ownerPo.setState(OwnerDto.STATE_FINISH); ownerPo.setAddress("无"); ownerPo.setOwnerFlag(OwnerDto.OWNER_FLAG_TRUE); int flag = ownerV1InnerServiceSMOImpl.saveOwner(ownerPo); if (flag < 1) { throw new IllegalArgumentException("保存业主失败"); } ownerCarDto.setOwnerId(ownerPo.getOwnerId()); }else{ ownerCarDto.setOwnerId(ownerDtos.get(0).getOwnerId()); } } } springboot/src/main/java/com/java110/boot/components/assetImport/ImportOwnerCarComponent.java
@@ -1,7 +1,6 @@ package com.java110.boot.components.assetImport; import com.java110.boot.smo.assetExport.IExportOwnerCarSMO; import com.java110.boot.smo.assetImport.impl.ImportOwnerCarSMOImpl; import com.java110.core.context.IPageData; import com.java110.core.context.PageData; import com.java110.core.log.LoggerFactory; @@ -24,20 +23,9 @@ private final static Logger logger = LoggerFactory.getLogger(ImportOwnerCarComponent.class); @Autowired private ImportOwnerCarSMOImpl importOwnerCarSMOImpl; @Autowired private IExportOwnerCarSMO exportOwnerCarSMOImpl; /** * 添加应用数据 * * @param pd 页面数据封装 * @return ResponseEntity 对象 */ public ResponseEntity<String> importData(IPageData pd, MultipartFile uploadFile) throws Exception { return importOwnerCarSMOImpl.importExcelData(pd, uploadFile); } /** * 添加应用数据 springboot/src/main/java/com/java110/boot/importData/adapt/ImportOwnerCarDataCleaningAdapt.java
New file @@ -0,0 +1,117 @@ 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.owner.OwnerCarDto; import com.java110.dto.system.ComponentValidateResult; import com.java110.intf.user.IOwnerV1InnerServiceSMO; 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.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; @Service("importOwnerCarDataCleaning") public class ImportOwnerCarDataCleaningAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt { @Autowired private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl; @Override public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception{ List<OwnerCarDto> ownerCars = new ArrayList<OwnerCarDto>(); //封装对象 getOwnerCars(workbook, ownerCars, result); //数据格式校验 validateCarInfo(ownerCars); return ownerCars; } /** * 获取业主车辆信息 * * @param workbook * @param ownerCars */ private void getOwnerCars(Workbook workbook, List<OwnerCarDto> ownerCars, ComponentValidateResult result) throws ParseException { Sheet sheet = null; sheet = ImportExcelUtils.getSheet(workbook, "业主车辆信息"); List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); OwnerCarDto importOwnerCar = 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; } 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.hasValue(os[6], (osIndex + 1) + "停车场不能为空"); 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) + "车位类型不能为空"); String startTime = excelDoubleToDate(os[8].toString()); String endTime = excelDoubleToDate(os[9].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文本格式"); importOwnerCar = new OwnerCarDto(); importOwnerCar.setCarNum(os[0].toString().trim()); importOwnerCar.setOwnerName(os[1].toString().trim()); importOwnerCar.setLink(os[2].toString().trim()); importOwnerCar.setCarBrand(os[3].toString().trim()); importOwnerCar.setCarType(os[4].toString().trim()); importOwnerCar.setCarColor(os[5].toString().trim()); importOwnerCar.setAreaNum(os[6].toString().trim()); //获取车位 String parkingLot = os[7].toString().trim(); importOwnerCar.setNum(parkingLot); importOwnerCar.setLogStartTime(startTime); importOwnerCar.setLogEndTime(endTime); importOwnerCar.setTypeCd(os[10].toString().trim()); importOwnerCar.setSpaceSate(os[11].toString().trim()); importOwnerCar.setCommunityId(result.getCommunityId()); importOwnerCar.setUserId(result.getUserId()); ownerCars.add(importOwnerCar); } } /** * 数据格式校验 * * @param ownerCars */ private void validateCarInfo(List<OwnerCarDto> ownerCars) { for (OwnerCarDto ownerCarDto : ownerCars) { if (!"1001".equals(ownerCarDto.getTypeCd()) && !"2001".equals(ownerCarDto.getTypeCd())) { throw new IllegalArgumentException(ownerCarDto.getCarNum() + "停车场类型应填写 1001(地上停车场)或者 2001 (地下停车场)"); } if (!"H".equals(ownerCarDto.getSpaceSate()) && !"S".equals(ownerCarDto.getSpaceSate())) { throw new IllegalArgumentException(ownerCarDto.getCarNum() + "车位状态应填写 S(出售)或者 H (出租)"); } } } } springboot/src/main/java/com/java110/boot/smo/assetImport/IImportOwnerCarSMO.java
File was deleted springboot/src/main/java/com/java110/boot/smo/assetImport/impl/ImportOwnerCarSMOImpl.java
File was deleted springboot/src/main/resources/application-debug.yml
@@ -29,15 +29,15 @@ activiti: database-schema-update: false datasource: url: jdbc:mysql://116.147.38.39:63306/tt_new?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false username: root password: huanfa@2024#mysql url: jdbc:mysql://192.168.100.108:3306/TT?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false username: TT password: hc12345678 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver druid: initial-size: 20 max-active: 50 min-idle: 20 initial-size: 5 max-active: 10 min-idle: 5 max-wait: 60000