Your Name
2023-04-04 90d76dcce5fdf966f1bb7bc801e2d781e8402a28
service-api/src/main/java/com/java110/api/smo/assetImport/impl/AssetImportSMOImpl.java
@@ -3,22 +3,21 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.smo.DefaultAbstractComponentSMO;
import com.java110.core.component.BaseComponentSMO;
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.api.smo.assetImport.IAssetImportSMO;
import com.java110.utils.constant.ServiceConstant;
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.slf4j.LoggerFactory;
import com.java110.core.log.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
@@ -171,7 +170,7 @@
                //paramIn = new JSONObject();
                //保存 费用项
                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/feeConfig.saveFeeConfig";
                apiUrl = "feeConfig.saveFeeConfig";
                paramIn = JSONObject.parseObject(JSONObject.toJSONString(fee));
                paramIn.put("communityId", result.getCommunityId());
@@ -246,7 +245,7 @@
                paramIn = new JSONObject();
                // 如果不存在,才插入
                if (savedParkingAreaInfo == null) {
                    apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingArea.saveParkingArea";
                    apiUrl = "parkingArea.saveParkingArea";
                    paramIn.put("communityId", result.getCommunityId());
                    paramIn.put("typeCd", parkingSpace.getTypeCd());
                    paramIn.put("num", parkingSpace.getPaNum());
@@ -296,7 +295,7 @@
                    continue;
                }
                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingSpace.saveParkingSpace";
                apiUrl = "parkingSpace.saveParkingSpace";
                paramIn.put("paId", savedParkingAreaInfo.getString("paId"));
                paramIn.put("communityId", result.getCommunityId());
@@ -373,7 +372,7 @@
                    paramIn.put("cycles", "0");
                }
                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingSpace.sellParkingSpace";
                apiUrl = "parkingSpace.sellParkingSpace";
                responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
                if (responseEntity.getStatusCode() != HttpStatus.OK) {
@@ -445,16 +444,27 @@
        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;
                }
                paramIn = new JSONObject();
                //保存 房屋
                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/room.saveRoom";
                apiUrl = "room.saveRoom";
                paramIn.put("communityId", result.getCommunityId());
                paramIn.put("unitId", room.getFloor().getUnitId());
@@ -517,7 +527,7 @@
                    continue;
                }
                paramIn.clear();
                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/room.sellRoom";
                apiUrl = "room.sellRoom";
                paramIn.put("communityId", result.getCommunityId());
                paramIn.put("ownerId", room.getImportOwner().getOwnerId());
                paramIn.put("roomId", savedRoomInfo.getString("roomId"));
@@ -578,7 +588,7 @@
                        continue;//没有费用项,可能写错了
                    }
                    apiUrl = ServiceConstant.SERVICE_API_URL + "/api/fee.saveRoomCreateFee";
                    apiUrl = "fee.saveRoomCreateFee";
                    paramIn.put("communityId", result.getCommunityId());
                    paramIn.put("locationTypeCd", "3000");
                    paramIn.put("locationObjId", savedRoomInfo.getString("roomId"));
@@ -644,7 +654,7 @@
    private JSONObject getExistsParkSpace(IPageData pd, ComponentValidateResult result, ImportParkingSpace parkingSpace) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingSpace.queryParkingSpaces?page=1&row=1&communityId=" + result.getCommunityId()
        apiUrl = "parkingSpace.queryParkingSpaces?page=1&row=1&communityId=" + result.getCommunityId()
                + "&num=" + parkingSpace.getPsNum() + "&areaNum=" + parkingSpace.getPaNum();
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
@@ -677,7 +687,7 @@
    private JSONObject getExistsFee(IPageData pd, ComponentValidateResult result, ImportFee fee) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/feeConfig.listFeeConfigs?page=1&row=1&communityId=" + result.getCommunityId()
        apiUrl = "feeConfig.listFeeConfigs?page=1&row=1&communityId=" + result.getCommunityId()
                + "&feeName=" + fee.getFeeName();
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
@@ -711,7 +721,7 @@
    private JSONObject getExistsRoom(IPageData pd, ComponentValidateResult result, ImportRoom room) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/room.queryRooms?page=1&row=1&communityId=" + result.getCommunityId()
        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);
@@ -764,7 +774,7 @@
                }
                paramIn = new JSONObject();
                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/owner.saveOwner";
                apiUrl = "owner.saveOwner";
                paramIn.put("communityId", result.getCommunityId());
                paramIn.put("userId", result.getUserId());
@@ -772,9 +782,13 @@
                paramIn.put("age", owner.getAge());
                paramIn.put("link", owner.getTel());
                paramIn.put("sex", owner.getSex());
                paramIn.put("ownerTypeCd", "1001");
                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);
                /***************************************导入日志记录****************************************************/
@@ -820,6 +834,15 @@
        return responseEntity;
    }
    private String getOwnerId(List<ImportOwner> owners, ImportOwner owner) {
        for (ImportOwner owner1 : owners) {
            if (owner1.getOwnerNum().equals(owner.getParentOwnerId())) {
                return owner1.getOwnerId();
            }
        }
        throw new IllegalArgumentException("请将业主成员放到业主后面,或者业主成员未找到对应的业主");
    }
    /**
     * 保存 楼栋和 单元信息
     *
@@ -844,18 +867,20 @@
        long failCount = 0L;
        AssetImportLogDetailDto assetImportLogDetailDto = null;
        try {
            for (ImportFloor importFloor : floors) {
            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 = ServiceConstant.SERVICE_API_URL + "/api/floor.saveFloor";
                    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);
@@ -898,7 +923,7 @@
                    continue;
                }
                apiUrl = ServiceConstant.SERVICE_API_URL + "/api/unit.saveUnit";
                apiUrl = "unit.saveUnit";
                paramIn.put("communityId", result.getCommunityId());
                paramIn.put("floorId", savedFloorInfo.getString("floorId"));
@@ -954,7 +979,7 @@
    private JSONObject getExistsUnit(IPageData pd, ComponentValidateResult result, ImportFloor importFloor) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/unit.queryUnits?communityId=" + result.getCommunityId()
        apiUrl = "unit.queryUnits?communityId=" + result.getCommunityId()
                + "&floorId=" + importFloor.getFloorId() + "&unitNum=" + importFloor.getUnitNum();
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
@@ -976,7 +1001,7 @@
    private JSONObject getExistsFloor(IPageData pd, ComponentValidateResult result, ImportFloor importFloor) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/floor.queryFloors?page=1&row=1&communityId=" + result.getCommunityId() + "&floorNum=" + importFloor.getFloorNum();
        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) { //跳过 保存单元信息
@@ -1005,8 +1030,8 @@
    private JSONObject getExistsOwner(IPageData pd, ComponentValidateResult result, ImportOwner importOwner) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/owner.queryOwners?page=1&row=1&communityId=" + result.getCommunityId()
                + "&ownerTypeCd=1001&name=" + importOwner.getOwnerName() + "&link=" + importOwner.getTel();
        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) { //跳过 保存单元信息
@@ -1035,7 +1060,7 @@
    private JSONObject getExistsParkingArea(IPageData pd, ComponentValidateResult result, ImportParkingSpace parkingSpace) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/parkingArea.listParkingAreas?page=1&row=1&communityId=" + result.getCommunityId()
        apiUrl = "parkingArea.listParkingAreas?page=1&row=1&communityId=" + result.getCommunityId()
                + "&num=" + parkingSpace.getPaNum();
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
@@ -1327,6 +1352,8 @@
                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位,请核实");
@@ -1343,6 +1370,8 @@
                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);