Parcourir la source

支持车辆导入 自动创建业主信息功能

wuxw il y a 1 an
Parent
commit
d5793ebefe

+ 116 - 0
service-api/src/main/java/com/java110/api/importData/adapt/ImportOwnerCarDataCleaningAdapt.java

@@ -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 (出租)");
+            }
+
+
+        }
+    }
+}

+ 192 - 0
service-job/src/main/java/com/java110/job/importData/adapt/ImportOwnerCarQueueDataAdapt.java

@@ -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());
+        }
+
+    }
+
+
+}
+
+

+ 1 - 13
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;
@@ -23,21 +22,10 @@ public class ImportOwnerCarComponent {
 
     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);
-    }
+
 
     /**
      * 添加应用数据

+ 117 - 0
springboot/src/main/java/com/java110/boot/importData/adapt/ImportOwnerCarDataCleaningAdapt.java

@@ -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 (出租)");
+            }
+
+
+        }
+    }
+}

+ 0 - 22
springboot/src/main/java/com/java110/boot/smo/assetImport/IImportOwnerCarSMO.java

@@ -1,22 +0,0 @@
-package com.java110.boot.smo.assetImport;
-
-import com.java110.core.context.IPageData;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.multipart.MultipartFile;
-
-/**
- * @author fqz
- * @date 2021-12-21
- */
-public interface IImportOwnerCarSMO {
-
-    /**
-     * 导入excel数据
-     *
-     * @param pd         前台数据封装
-     * @param uploadFile excel 文件
-     * @return ResponseEntity
-     */
-    public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception;
-
-}

+ 0 - 291
springboot/src/main/java/com/java110/boot/smo/assetImport/impl/ImportOwnerCarSMOImpl.java

@@ -1,291 +0,0 @@
-package com.java110.boot.smo.assetImport.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.boot.smo.DefaultAbstractComponentSMO;
-import com.java110.boot.smo.assetImport.IImportOwnerCarSMO;
-import com.java110.core.context.IPageData;
-import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.core.log.LoggerFactory;
-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.dto.system.ComponentValidateResult;
-import com.java110.intf.community.*;
-import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
-import com.java110.intf.user.IOwnerInnerServiceSMO;
-import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
-import com.java110.po.car.OwnerCarPo;
-import com.java110.po.parking.ParkingAreaPo;
-import com.java110.po.parking.ParkingSpacePo;
-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 org.springframework.beans.factory.annotation.Autowired;
-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.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-
-@Service("importOwnerCarSMOImpl")
-public class ImportOwnerCarSMOImpl extends DefaultAbstractComponentSMO implements IImportOwnerCarSMO {
-
-    private final static Logger logger = LoggerFactory.getLogger(ImportOwnerCarSMOImpl.class);
-
-    @Autowired
-    private RestTemplate restTemplate;
-
-    @Autowired
-    private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl;
-
-    @Autowired
-    private IFloorInnerServiceSMO floorInnerServiceSMOImpl;
-
-    @Autowired
-    private IUnitInnerServiceSMO unitInnerServiceSMOImpl;
-
-    @Autowired
-    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
-
-    @Autowired
-    private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
-
-    @Autowired
-    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
-
-    @Autowired
-    private IParkingAreaInnerServiceSMO parkingAreaInnerServiceSMOImpl;
-
-    @Autowired
-    private IParkingAreaV1InnerServiceSMO parkingAreaV1InnerServiceSMOImpl;
-
-    @Autowired
-    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
-
-    @Autowired
-    private IParkingSpaceV1InnerServiceSMO parkingSpaceV1InnerServiceSMOImpl;
-
-    @Override
-    public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception {
-        try {
-            ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
-            //InputStream is = uploadFile.getInputStream();
-            Workbook workbook = ImportExcelUtils.createWorkbook(uploadFile);  //工作簿
-            List<OwnerCarDto> ownerCars = new ArrayList<OwnerCarDto>();
-            //获取楼信息
-            getOwnerCars(workbook, ownerCars);
-            // 保存数据
-            return dealExcelData(pd, ownerCars, result);
-        } catch (Exception e) {
-            logger.error("导入失败 ", e);
-            return new ResponseEntity<String>("非常抱歉,您填写的模板数据有误:" + e.getMessage(), HttpStatus.BAD_REQUEST);
-        }
-    }
-
-    /**
-     * 获取业主车辆信息
-     *
-     * @param workbook
-     * @param ownerCarDtos
-     */
-    private void getOwnerCars(Workbook workbook, List<OwnerCarDto> ownerCarDtos) 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);
-            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-            importOwnerCar.setStartTime(simpleDateFormat.parse(startTime));
-            importOwnerCar.setEndTime(simpleDateFormat.parse(endTime));
-            importOwnerCar.setTypeCd(os[10].toString().trim());
-            importOwnerCar.setSpaceSate(os[11].toString().trim());
-            ownerCarDtos.add(importOwnerCar);
-
-
-        }
-    }
-
-
-    /**
-     * 处理ExcelData数据
-     */
-    private ResponseEntity<String> dealExcelData(IPageData pd, List<OwnerCarDto> ownerCarDtos, ComponentValidateResult result) {
-        ResponseEntity<String> responseEntity = null;
-        //保存单元信息 和 楼栋信息
-        responseEntity = savedOwnerCars(pd, ownerCarDtos, result);
-        if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) {
-            return responseEntity;
-        }
-        return responseEntity;
-    }
-
-    private ResponseEntity<String> savedOwnerCars(IPageData pd, List<OwnerCarDto> ownerCars, ComponentValidateResult result) {
-        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
-        if (ownerCars.size() < 1) {
-            throw new IllegalArgumentException("没有数据需要处理");
-        }
-        String psId = "";
-        String paId = "";
-
-        validateOwnerData(ownerCars, reqJson);
-        for (OwnerCarDto ownerCarDto : ownerCars) {
-            OwnerCarPo ownerCarPo = BeanConvertUtil.covertBean(ownerCarDto, OwnerCarPo.class);
-            //获取房屋名称
-            ownerCarPo.setCarTypeCd("1001"); //主车辆
-            ParkingAreaDto parkingAreaDto = new ParkingAreaDto();
-            parkingAreaDto.setNum(ownerCarDto.getAreaNum());
-            parkingAreaDto.setTypeCd(ownerCarDto.getTypeCd());
-            //查询停车场
-            List<ParkingAreaDto> parkingAreaDtos = parkingAreaInnerServiceSMOImpl.queryParkingAreas(parkingAreaDto);
-            //Assert.listOnlyOne(parkingAreaDtos, "查询停车场错误!");
-            if (parkingAreaDtos == null || parkingAreaDtos.size() < 1) {
-                paId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_paId);
-                ParkingAreaPo parkingAreaPo = new ParkingAreaPo();
-                parkingAreaPo.setCommunityId(reqJson.getString("communityId"));
-                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);
-            //查询停车位
-            List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
-            String state = "";
-            if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) {
-                psId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_psId);
-                ParkingSpacePo parkingSpacePo = new ParkingSpacePo();
-                parkingSpacePo.setCommunityId(reqJson.getString("communityId"));
-                parkingSpacePo.setNum(ownerCarDto.getNum());
-                parkingSpacePo.setPaId(paId);
-                parkingSpacePo.setArea("1");
-                parkingSpacePo.setParkingType(ParkingSpaceDto.TYPE_CD_COMMON);
-                parkingSpacePo.setState(ParkingSpaceDto.STATE_FREE);
-                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.setUserId("-1");
-            ownerCarPo.setCommunityId(reqJson.getString("communityId"));
-            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());
-            parkingSpaceInnerServiceSMOImpl.updateParkingSpace(parkingSpacePo);
-        }
-        return ResultVo.success();
-    }
-
-    private void validateOwnerData(List<OwnerCarDto> ownerCars, JSONObject reqJson) {
-
-        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 (出租)");
-            }
-
-
-            OwnerDto ownerDto = new OwnerDto();
-            ownerDto.setName(ownerCarDto.getOwnerName());
-            ownerDto.setLink(ownerCarDto.getLink());
-            ownerDto.setCommunityId(reqJson.getString("communityId"));
-            //查询业主
-            List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
-            //Assert.listOnlyOne(ownerDtos, ownerCarDto.getCarNum() + "查询业主信息错误!");
-            if(ownerDtos == null || ownerDtos.size() < 1){
-                throw new IllegalArgumentException(ownerCarDto.getCarNum()+"的业主不存在");
-            }
-            ownerCarDto.setOwnerId(ownerDtos.get(0).getOwnerId());
-        }
-
-    }
-
-    //解析Excel日期格式
-    public static String excelDoubleToDate(String strDate) {
-        if (strDate.length() == 5) {
-            try {
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                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;
-    }
-}

+ 6 - 6
springboot/src/main/resources/application-debug.yml

@@ -29,15 +29,15 @@ spring:
   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