chengf
2026-01-27 b6184e2ddf3db37a94f7efb3b619bbc64642a292
service-job/src/main/java/com/java110/job/importData/adapt/ImportRoomOwnerV2QueueDataAdapt.java
@@ -3,21 +3,41 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.community.CommunityDto;
import com.java110.dto.dict.DictDto;
import com.java110.dto.importData.*;
import com.java110.dto.log.AssetImportLogDetailDto;
import com.java110.dto.menu.MenuDto;
import com.java110.dto.oweFeeCallable.OweFeeCallableDto;
import com.java110.dto.owner.OwnerDto;
import com.java110.dto.room.RoomDto;
import com.java110.fee.api.ApplyRoomDiscountApi;
import com.java110.fee.dao.IApplyRoomDiscountServiceDao;
import com.java110.intf.community.ICommunityInnerServiceSMO;
import com.java110.intf.community.IImportOwnerRoomInnerServiceSMO;
import com.java110.intf.community.IMenuInnerServiceSMO;
import com.java110.intf.dev.IDictV1InnerServiceSMO;
import com.java110.intf.fee.IOweFeeCallableV1InnerServiceSMO;
import com.java110.intf.user.IOwnerInnerServiceSMO;
import com.java110.intf.user.IOwnerV1InnerServiceSMO;
import com.java110.job.importData.DefaultImportData;
import com.java110.job.importData.IImportDataAdapt;
import com.java110.po.oweFeeCallable.OweFeeCallablePo;
import com.java110.po.owner.OwnerPo;
import com.java110.po.room.ApplyRoomDiscountPo;
import com.java110.po.room.LitigationInfoPo;
import com.java110.po.room.PayeeReceiveInfoPo;
import com.java110.utils.cache.MappingCache;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 房产信息导入 适配器
@@ -29,11 +49,29 @@
    @Autowired
    private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl;
    @Autowired
    private IOweFeeCallableV1InnerServiceSMO oweFeeCallableV1InnerServiceSMOImpl;
    @Autowired
    private IImportOwnerRoomInnerServiceSMO importOwnerRoomInnerServiceSMOImpl;
    @Autowired
    protected SqlSessionTemplate sqlSessionTemplate;
    @Autowired
    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
    @Autowired
    private IApplyRoomDiscountServiceDao applyRoomDiscountServiceDaoImpl;
    @Autowired
    private IDictV1InnerServiceSMO dictV1InnerServiceSMOImpl;
    @Autowired
    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
    @Override
    public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) {
@@ -65,115 +103,220 @@
    private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) {
        JSONArray objects = JSONObject.parseArray(assetImportLogDetailDto.getContent());
        ImportOwnerRoomDto importOwnerRoomDto = new ImportOwnerRoomDto();
        ImportOwnerRoomDto importOwnerRoomDto = new ImportOwnerRoomDto();//房屋
        importOwnerRoomDto.setRoomId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_roomId));
        importOwnerRoomDto.setOwnerId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId));
        importOwnerRoomDto.setCommunityId(assetImportLogDetailDto.getCommunityId());
        importOwnerRoomDto.setFloorNum(objects.get(5).toString());
        importOwnerRoomDto.setUnitNum(objects.get(6).toString());
        importOwnerRoomDto.setRoomNum(objects.get(7).toString());
        importOwnerRoomDto.setDoorRoomNum(objects.get(8).toString());
        importOwnerRoomDto.setPropertyType(objects.get(2).toString());
        importOwnerRoomDto.setPropertyAddress(objects.get(9).toString());
        importOwnerRoomDto.setHouseCertificateNo("");
        importOwnerRoomDto.setLift("1010");
        importOwnerRoomDto.setRoomSubType(objects.get(2).toString());
        importOwnerRoomDto.setUserId(objects.getString(169));
        importOwnerRoomDto.setLayerCount("0");
        importOwnerRoomDto.setLayer("0");
        importOwnerRoomDto.setLift("未知");
        importOwnerRoomDto.setSection("10102");
        importOwnerRoomDto.setBuiltUpArea(objects.get(15).toString());
        importOwnerRoomDto.setRoomRent(objects.get(15).toString());
        importOwnerRoomDto.setRoomState("0");
        importOwnerRoomDto.setOwnerName(objects.get(53).toString());
        importOwnerRoomDto.setSex(objects.get(57).toString());
        importOwnerRoomDto.setAge("1");
        importOwnerRoomDto.setTel(objects.get(52).toString());
        importOwnerRoomDto.setIdCard(objects.get(55).toString());
        importOwnerRoomDto.setOwnerTypeCd("1001");
        importOwnerRoomDto.setPersonType("P");
        importOwnerRoomDto.setPersonRole("1");
        importOwnerRoomDto.setConcactPerson(objects.get(53).toString());
        importOwnerRoomDto.setConcactLink(objects.get(52).toString());
        importOwnerRoomDto.setHouseholdPoliceStation(objects.get(58).toString());
        importOwnerRoomDto.setPersonType(OwnerDto.PERSON_TYPE_PERSON);
        importOwnerRoomDto.setPersonRole(OwnerDto.PERSON_ROLE_OWNER);
        //--------设置物业类型
        DictDto dictDto = new DictDto();
        dictDto.setTableName("building_room");
        dictDto.setTableColumns("room_sub_type");
        dictDto.setName(defaultValue(objects.get(1)));
        List<DictDto> dictDtos = dictV1InnerServiceSMOImpl.queryDictAndSpecs(dictDto);
        if (dictDtos.isEmpty()) {
            throw new IllegalArgumentException("导入失败:字典中不存在物业类型:" + defaultValue(objects.get(1)));
        }
        importOwnerRoomDto.setRoomSubType(dictDtos.get(0).getStatusCd());
        //----------
        importOwnerRoomDto.setRoadName(objects.get(4).toString());
        importOwnerRoomDto.setBuyDate(objects.get(10).toString());
        importOwnerRoomDto.setSellDate(objects.get(11).toString());
        importOwnerRoomDto.setSellState(objects.get(12).toString());
        importOwnerRoomDto.setRoomBuyer(objects.get(13).toString());
        importOwnerRoomDto.setEoc(objects.get(32).toString());
        importOwnerRoomDto.setPropertyType(defaultValue(objects.get(2)));//住宅类型
        importOwnerRoomDto.setPropertyCertificateNo(objects.get(59).toString());
        importOwnerRoomDto.setIsEvChargerInstalled(objects.get(60).toString());
        //--------匹配小区
        CommunityDto communityDto = new CommunityDto();
        communityDto.setCommunityCode(defaultValue(objects.get(3)));
        communityDto.setName(defaultValue(objects.get(4)));
        List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
        if (communityDtos.isEmpty()) {
            throw new IllegalArgumentException("导入失败:小区中不存在小区编码为‘" + defaultValue(objects.get(1)) + "’的小区");
        } else if (communityDtos.size() > 1) {
            String communityNames = communityDtos.stream()
                    .map(CommunityDto::getName) // 提取每个小区的名称
                    .collect(Collectors.joining(", "));
        int flag = importOwnerRoomInnerServiceSMOImpl.saveOwnerRoom(importOwnerRoomDto);
        if (flag < 1) {
            throw new IllegalArgumentException("导入失败");
            throw new IllegalArgumentException("导入失败:小区编码(" + communityDto.getCommunityCode() + ") + 小区名称(" + communityDto.getName() + ")条件存在多个小区:" + communityNames);
        }
        String communityId = communityDtos.get(0).getCommunityId();
        importOwnerRoomDto.setCommunityId(communityId);//小区编号
        //---------
        importOwnerRoomDto.setRoadName(defaultValue(objects.get(5)));//路名
        importOwnerRoomDto.setFloorNum(defaultValue(objects.get(6)));//弄
        importOwnerRoomDto.setUnitNum(defaultValue(objects.get(7)));//门
        importOwnerRoomDto.setRoomNum(defaultValue(objects.get(8)));//室
        importOwnerRoomDto.setDoorRoomNum(defaultValue(objects.get(9)));//门市号
        importOwnerRoomDto.setPropertyAddress(defaultValue(objects.get(10)));//业主地址
        importOwnerRoomDto.setRoomBuyer(defaultValue(objects.get(11)));//购房人
        RoomDto roomDto = new RoomDto();
        roomDto.setCommunityId(importOwnerRoomDto.getCommunityId());
        roomDto.setRoadName(importOwnerRoomDto.getRoadName());
        roomDto.setFloorNum(importOwnerRoomDto.getFloorNum());
        roomDto.setUnitNum(importOwnerRoomDto.getUnitNum());
        roomDto.setRoomNum(importOwnerRoomDto.getRoomNum());
        List<Object> objects1 = sqlSessionTemplate.selectList("roomServiceDaoImpl.getRoomInfo", BeanConvertUtil.beanCovertMap(roomDto));
        if (!objects1.isEmpty()) {
            throw new IllegalArgumentException("重复的房屋");
        }
        //---------家庭成员、租客
        OwnerPo ownerPoTo3 = new OwnerPo();//
        if (!defaultValue(objects.get(13)).isEmpty()) {
            String link = defaultValue(objects.get(13));
            OwnerDto ownerDto = new OwnerDto();
            ownerDto.setLink(link);
            ownerDto.setCommunityId(communityId);
            List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryAllOwners(ownerDto);
            if (!ownerDtos.isEmpty()) {
                throw new IllegalArgumentException("导入失败:该小区已存在手机号:" + link + "的业主");
            }
            ownerPoTo3.setOwnerId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId));
            ownerPoTo3.setAge("0");
            ownerPoTo3.setState(OwnerDto.STATE_FINISH);
            ownerPoTo3.setPersonType(OwnerDto.PERSON_TYPE_PERSON);
            ownerPoTo3.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_MEMBER);
            ownerPoTo3.setName(defaultValue(objects.get(12)));
            ownerPoTo3.setLink(link);
            ownerPoTo3.setSex("2");
            ownerPoTo3.setPersonRole(OwnerDto.PERSON_ROLE_MEMBER);
        }
        OwnerCollectionDto ownerCollectionDto = new OwnerCollectionDto();
        OwnerPo ownerPoTo2 = new OwnerPo();//TODO 租客未导入
        if (!defaultValue(objects.get(15)).isEmpty()) {
            String link = defaultValue(objects.get(15));
            OwnerDto ownerDto = new OwnerDto();
            ownerDto.setLink(link);
            ownerDto.setCommunityId(communityId);
            List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryAllOwners(ownerDto);
            if (!ownerDtos.isEmpty()) {
                throw new IllegalArgumentException("导入失败:该小区已存在手机号:" + link + "的业主");
            }
            ownerPoTo2.setOwnerId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId));
            ownerPoTo2.setAge("0");
//        ownerPo.setUserId(userId);
            ownerPoTo2.setState(OwnerDto.STATE_FINISH);
            ownerPoTo2.setPersonType(OwnerDto.PERSON_ROLE_RENT);
            ownerPoTo2.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_MEMBER);
            ownerPoTo2.setName(defaultValue(objects.get(21)));
            ownerPoTo2.setLink(link);
            ownerPoTo2.setSex("2");
            ownerPoTo2.setPersonRole(OwnerDto.PERSON_ROLE_MEMBER);
        }
        //---------
        importOwnerRoomDto.setBuiltUpArea(defaultValue(objects.get(16)));//面积
        importOwnerRoomDto.setRoomArea(defaultValue(objects.get(16)));//面积
        importOwnerRoomDto.setRoomRent(defaultValue(objects.get(16)));//面积
        importOwnerRoomDto.setBuyDate(defaultValueToDate(objects.get(20)));//购入日期
        importOwnerRoomDto.setSellDate(defaultValueToDate(objects.get(22)));//卖出日期
        importOwnerRoomDto.setSellState(defaultValue(objects.get(23)));//房屋状态
        ownerCollectionDto.setCollectionId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_collId));
        ownerCollectionDto.setRoomId(importOwnerRoomDto.getRoomId());
        ownerCollectionDto.setOwnerId(importOwnerRoomDto.getOwnerId());
        ownerCollectionDto.setCollectionStartDate(objects.get(33).toString());
        ownerCollectionDto.setCollectionEndDate(objects.get(34).toString());
        ownerCollectionDto.setAmount(objects.get(35).toString());
        ownerCollectionDto.setFirstCollector(objects.get(36).toString());
        ownerCollectionDto.setSecondCollectorName(objects.get(37).toString());
        ownerCollectionDto.setSecondCollectorPhone(objects.get(38).toString());
        ownerCollectionDto.setSecondCollectorAddress(objects.get(39).toString());
        ownerCollectionDto.setReceiptNumber(objects.get(40).toString());
        ownerCollectionDto.setReceiptPhotoUrl(objects.get(41).toString());
        ownerCollectionDto.setRemark(objects.get(42).toString());
        importOwnerRoomDto.setEoc(defaultNum(objects.get(24)).toString());//设备运行费
        importOwnerRoomInnerServiceSMOImpl.saveOwnerCollection(ownerCollectionDto);
        //-----TODO 待导入  催缴信息
        if (!defaultValue(objects.get(27)).isEmpty()) {
            OwnerCollectionDto ownerCollection = new OwnerCollectionDto();
            ownerCollection.setOwnerId(importOwnerRoomDto.getOwnerId());
            ownerCollection.setRoomId(importOwnerRoomDto.getRoomId());
            ownerCollection.setCollectionStartDate(defaultValueToDate(objects.get(25)));
            ownerCollection.setCollectionEndDate(defaultValueToDate(objects.get(26)));
            ownerCollection.setAmount(defaultValue(objects.get(27)));
            ownerCollection.setFirstCollector(defaultValue(objects.get(28)));
            ownerCollection.setSecondCollectorName(defaultValue(objects.get(29)));
            ownerCollection.setSecondCollectorPhone(defaultValue(objects.get(30)));
            ownerCollection.setSecondCollectorAddress(defaultValue(objects.get(31)));
            ownerCollection.setReceiptNumber(defaultValue(objects.get(32)));
            ownerCollection.setReceiptPhotoUrl(defaultValue(objects.get(33)));
            ownerCollection.setRemark(defaultValue(objects.get(34)));
        }
        //-----
        if (objects.get(46) != null) {
            ApplyRoomDiscountPo applyRoomDiscountPo = new ApplyRoomDiscountPo();
        //-----打折信息 TODO 未添加重复校验
        if (!defaultValue(objects.get(38)).isEmpty()) {
            ApplyRoomDiscountPo applyRoomDiscountPo = new ApplyRoomDiscountPo();//打折
            applyRoomDiscountPo.setArdId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ardId));
            applyRoomDiscountPo.setCommunityId(importOwnerRoomDto.getCommunityId());
            applyRoomDiscountPo.setRoomId(importOwnerRoomDto.getRoomId());
            applyRoomDiscountPo.setRoomName(importOwnerRoomDto.getPropertyAddress());
            applyRoomDiscountPo.setDiscountId("132025112781200067");
            applyRoomDiscountPo.setApplyType("152025112756040048");
            String dateStr = "2019/3-2019/12";
            // 1. 拆分字符串
            String[] dateParts = dateStr.split("-", 2);
            if (dateParts.length != 2) {
                throw new IllegalArgumentException("日期格式错误,需符合 '年/月-年/月'");
            }
            applyRoomDiscountPo.setFixedDiscountValue(defaultNum(objects.get(36)));
            applyRoomDiscountPo.setDiscountedAmount(defaultNum(objects.get(37)));
            // 2. 定义格式化器(注意:SimpleDateFormat 线程不安全,每次使用新建实例)
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M");
            try {
                SimpleDateFormat outputSdf = new SimpleDateFormat("yyyy-MM-dd");
                applyRoomDiscountPo.setStartTime(outputSdf.format(sdf.parse(dateParts[0])));
                applyRoomDiscountPo.setEndTime(outputSdf.format(sdf.parse(dateParts[1])));
                applyRoomDiscountPo.setStartTime(defaultValueToDate(objects.get(38)));
                applyRoomDiscountPo.setEndTime(defaultValueToDate(objects.get(39)));
            }catch (Exception e){
                throw new IllegalArgumentException("导入失败:处理折扣日期区间时出错");
            }
            applyRoomDiscountPo.setCreateUserName(objects.get(49).toString());
            applyRoomDiscountPo.setDiscountArchiveDate(defaultValueToDate(objects.get(40)));
            applyRoomDiscountPo.setCreateRemark(defaultValue(objects.get(41)));
            applyRoomDiscountPo.setCheckRemark("审批人:" + defaultValue(objects.get(42)));
            applyRoomDiscountPo.setReviewRemark("审批人:" + defaultValue(objects.get(43)));
            applyRoomDiscountPo.setCreateUserTel("无");
            applyRoomDiscountPo.setCreateUserName("由系统导入");
            applyRoomDiscountPo.setState("4");
            applyRoomDiscountPo.setCreateRemark("由系统导入");
            applyRoomDiscountPo.setCheckRemark("审批人:" + objects.get(50).toString());
            applyRoomDiscountPo.setReviewRemark("审批人:" + objects.get(50).toString());
            applyRoomDiscountPo.setStatusCd("0");
            applyRoomDiscountPo.setInUse("0");
            applyRoomDiscountPo.setReturnWay("1001");
            applyRoomDiscountPo.setRelatedAttachments(defaultValue(objects.get(44)));
            try {
                applyRoomDiscountServiceDaoImpl.saveApplyRoomDiscountInfo(BeanConvertUtil.beanCovertMap(applyRoomDiscountPo));
            }catch (Exception e){
                throw new IllegalArgumentException("导入失败");
                throw new IllegalArgumentException("导入失败:打折信息导入存在错误");
            }
        }
        //-----
        //-----业主信息
        importOwnerRoomDto.setTel(defaultValue(objects.get(45)));//手机号
        importOwnerRoomDto.setIdCard(defaultValue(objects.get(46)));//身份证
        importOwnerRoomDto.setAddress(defaultValue(objects.get(47)));//TODO 导入逻辑未添加该字段  联络地址
        importOwnerRoomDto.setSex(defaultValue(objects.get(48)).equals("") ?"2" :  defaultValue(objects.get(48)));
        importOwnerRoomDto.setOwnerName(defaultValue(objects.get(11)));
        importOwnerRoomDto.setHouseholdPoliceStation(defaultValue(objects.get(50)));
        importOwnerRoomDto.setPropertyCertificateNo(defaultValue(objects.get(51)));
        importOwnerRoomDto.setIsEvChargerInstalled(defaultValue(objects.get(52)));
        OweFeeCallablePo oweFeeCallablePo = new OweFeeCallablePo();
        oweFeeCallablePo.setOfcId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
        oweFeeCallablePo.setAmountdOwed("0");
        oweFeeCallablePo.setCallableWay(OweFeeCallableDto.CALLABLE_WAY_PRINT);
        oweFeeCallablePo.setOfcId(GenerateCodeFactory.getGeneratorId("11"));
        oweFeeCallablePo.setFeeId("");
        oweFeeCallablePo.setFeeName("导入催收信息");
        oweFeeCallablePo.setCommunityId(communityId);
        oweFeeCallablePo.setConfigId("");
        oweFeeCallablePo.setOwnerId(importOwnerRoomDto.getOwnerId());
        oweFeeCallablePo.setOwnerName(importOwnerRoomDto.getOwnerName());
        oweFeeCallablePo.setPayerObjId("");
        oweFeeCallablePo.setPayerObjName(importOwnerRoomDto.getPropertyAddress());
        oweFeeCallablePo.setPayerObjType("3333");
        oweFeeCallablePo.setRemark(defaultValue(objects.get(57)));
        oweFeeCallablePo.setStaffId("302025062612580518");
        oweFeeCallablePo.setStaffName("刘志勇");
        oweFeeCallablePo.setState(OweFeeCallableDto.STATE_COMPLETE);
        oweFeeCallablePo.setStartTime(defaultValueToDate(objects.get(56)));//TODO 时间段需要拆分
        oweFeeCallablePo.setEndTime(defaultValueToDate(objects.get(56)));
        oweFeeCallablePo.setCreateTime(defaultValueToDate(objects.get(53)));
        int flag = oweFeeCallableV1InnerServiceSMOImpl.saveOweFeeCallable(oweFeeCallablePo);
        if (flag < 1) {
            throw new IllegalArgumentException("催收信息导入失败");
        }
        for (int i = 0; i < 5 ; i++) {
            int index = i*4 + 67;
            int index = i*4 + 59;
            if(objects.get(index) == null){
                break;
            }
@@ -181,98 +324,188 @@
            houseMailRecord.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_houseId));
            houseMailRecord.setOwnerId(importOwnerRoomDto.getOwnerId());
            houseMailRecord.setHouseId(importOwnerRoomDto.getRoomId());
            houseMailRecord.setCreateTime(objects.get(index).toString());
            houseMailRecord.setMailNo(objects.get(index+1).toString());
            houseMailRecord.setServiceFee(objects.get(index+2).toString());
            houseMailRecord.setMailResult(objects.get(index+3).toString());
            houseMailRecord.setRemark(objects.get(87).toString());
            houseMailRecord.setCallableId(oweFeeCallablePo.getOfcId());
            houseMailRecord.setCreateTime(defaultValueToDate(objects.get(index)));
            houseMailRecord.setMailNo(defaultValue(objects.get(index+1)));
            houseMailRecord.setServiceFee(defaultValue(objects.get(index+2)));
            houseMailRecord.setMailResult(defaultValue(objects.get(index+3)));
            houseMailRecord.setRemark(defaultValue(objects.get(79)));
            int save = applyRoomDiscountServiceDaoImpl.saveHouseMailRecord(BeanConvertUtil.beanCovertMap(houseMailRecord));
        }
        for (int i = 0 ; i < 9 ; i++) {
            int index = i * 3 + 88;
            if(objects.get(index) == null){
                if (i == 0){
                    MailCallRecord mailCallRecord = new MailCallRecord();
                    mailCallRecord.setRemark(objects.get(115).toString());
        //----对方收款单位表
        PayeeReceiveInfoPo payeeReceiveInfoPo = new PayeeReceiveInfoPo();
        payeeReceiveInfoPo.setCallableId(oweFeeCallablePo.getOfcId());
        payeeReceiveInfoPo.setCallerName(defaultValue(objects.get(80)));
        payeeReceiveInfoPo.setContactInfo(defaultValue(objects.get(81)));
        payeeReceiveInfoPo.setPayeeInfo(defaultValue(objects.get(82)));
        payeeReceiveInfoPo.setInvoiceNo(defaultValue(objects.get(83)));
        payeeReceiveInfoPo.setInvoiceDate(objects.getDate(84));
        payeeReceiveInfoPo.setReceiptNo(defaultValue(objects.get(85)));
        payeeReceiveInfoPo.setReceiptDate(objects.getDate(86));
        payeeReceiveInfoPo.setReceiptNote(defaultValue(objects.get(87)));
        payeeReceiveInfoPo.setReceiptNoteDate(objects.getDate(88));
        payeeReceiveInfoPo.setImageFile(defaultValue(objects.get(89)));
        payeeReceiveInfoPo.setOurCompanyReceiveDate(objects.getDate(90));
        payeeReceiveInfoPo.setAttachmentFile(defaultValue(objects.get(91)));
        payeeReceiveInfoPo.setOwnerId(importOwnerRoomDto.getOwnerId());
        payeeReceiveInfoPo.setRoomId(importOwnerRoomDto.getRoomId());
        int insert = sqlSessionTemplate.insert("payeeReceiveInfoServiceDaoImpl.savePayeeReceiveInfo",
                BeanConvertUtil.beanCovertMap(payeeReceiveInfoPo));
                    int save = applyRoomDiscountServiceDaoImpl.saveMailCallRecord(BeanConvertUtil.beanCovertMap(mailCallRecord));
                }
        //----添加电联
        List<MailCallRecord> mailCallRecords = new ArrayList<MailCallRecord>();
        for (int i = 0 ; i < 9 ; i++) {
            int index = i * 3 + 92;
            if(defaultValue(objects.get(index)).isEmpty()){
//                if (i == 0){
//                    MailCallRecord mailCallRecord = new MailCallRecord();
//                    mailCallRecord.setRemark(objects.get(115).toString());
//
//                    int save = applyRoomDiscountServiceDaoImpl.saveMailCallRecord(BeanConvertUtil.beanCovertMap(mailCallRecord));
//                }
                break;
            }
            MailCallRecord mailCallRecord = new MailCallRecord();
            mailCallRecord.setCallDate(objects.get(index).toString());
            mailCallRecord.setCallResult(objects.get(index+1).toString());
            mailCallRecord.setCallContact(objects.get(index+2).toString());
            mailCallRecord.setRemark(objects.get(115).toString());
            int save = applyRoomDiscountServiceDaoImpl.saveMailCallRecord(BeanConvertUtil.beanCovertMap(mailCallRecord));
            mailCallRecord.setMailId(importOwnerRoomDto.getOwnerId());
            mailCallRecord.setCallDate(defaultValueToDate(objects.get(index)));
            mailCallRecord.setCallResult(defaultValue(objects.get(index+1)));
            mailCallRecord.setCallContact(defaultValue(objects.get(index+2)));
            mailCallRecord.setRemark(defaultValue(objects.get(119)));
            mailCallRecords.add(mailCallRecord);
        }
        if (objects.get(116) != null) {
        if (mailCallRecords.size() > 0) {
            Map<String, Object> param = new HashMap<>();
            param.put("mailCallRecordList", BeanConvertUtil.beanCovertMap(mailCallRecords));
            sqlSessionTemplate.insert("mailCallRecordServiceDaoImpl.batchSaveMailCallRecord", param);
        }
        //----
        //产调日期
        if (!defaultValue(objects.get(120)).isEmpty()) {
            OwnerPropertySurvey ownerPropertySurvey = new OwnerPropertySurvey();
            ownerPropertySurvey.setOwnerId(importOwnerRoomDto.getOwnerId());
            ownerPropertySurvey.setRoomId(importOwnerRoomDto.getRoomId());
            ownerPropertySurvey.setSurveyWarrantApplyDate(objects.get(119).toString());
            ownerPropertySurvey.setPropertySurveyDate(objects.get(116).toString());
            ownerPropertySurvey.setName(objects.get(117).toString());
            ownerPropertySurvey.setExtraDate(objects.get(118).toString());
            ownerPropertySurvey.setSurveyWarrantApplyDate(defaultValueToDate(objects.get(123)));
            ownerPropertySurvey.setPropertySurveyDate(defaultValueToDate(objects.get(120)));
            ownerPropertySurvey.setName(defaultValue(objects.get(121)));
            ownerPropertySurvey.setExtraDate(defaultValueToDate(objects.get(122)));
            int save = applyRoomDiscountServiceDaoImpl.saveOwnerPropertySurvey(BeanConvertUtil.beanCovertMap(ownerPropertySurvey));
        }
        //----
        if (objects.get(120) != null){
            CourtExecutionProcedure courtExecutionProcedure = new CourtExecutionProcedure();
            courtExecutionProcedure.setOwnerId(importOwnerRoomDto.getOwnerId());
            courtExecutionProcedure.setApplyTime(objects.get(120).toString());
            courtExecutionProcedure.setArrearsPeriod(objects.get(121).toString());
            courtExecutionProcedure.setArrearsAmount(objects.get(122).toString());
            courtExecutionProcedure.setLateFee(objects.get(123).toString());
            courtExecutionProcedure.setAcceptanceFee(objects.get(124).toString());
            courtExecutionProcedure.setOtherFee(objects.get(125).toString());
            courtExecutionProcedure.setTotalAmount(objects.get(126).toString());
            courtExecutionProcedure.setRemark("送件人:"+objects.get(127).toString());
            int save = applyRoomDiscountServiceDaoImpl.saveCourtExecutionProcedure(BeanConvertUtil.beanCovertMap(courtExecutionProcedure));
        //诉讼
        if (!defaultValue(objects.get(124)).isEmpty()) {
            LitigationInfoPo litigationInfoPo = new LitigationInfoPo();
            litigationInfoPo.setLitigationDate(defaultValue(objects.get(124)));
            litigationInfoPo.setArrearsPeriod(defaultValue(objects.get(125)));
            litigationInfoPo.setArrearsAmount(defaultValue(objects.get(126)));
            litigationInfoPo.setLateFee(defaultValue(objects.get(127)));
            litigationInfoPo.setAcceptanceFee(defaultValue(objects.get(128)));
            litigationInfoPo.setOtherFee(defaultValue(objects.get(129)));
            litigationInfoPo.setTotalAmount(defaultValue(objects.get(130)));
            litigationInfoPo.setSubmitter(defaultValue(objects.get(131)));
            litigationInfoPo.setOwnerId(importOwnerRoomDto.getOwnerId());
            sqlSessionTemplate.insert("litigationInfoServiceDaoImpl.saveLitigationInfo",
                    BeanConvertUtil.beanCovertMap(litigationInfoPo));
        }
        //----
        if (objects.get(128) != null) {
        //----法院审理程序
        if (!defaultValue(objects.get(132)).isEmpty()) {
            CourtTrialProcedure courtTrialProcedure = new CourtTrialProcedure();
            courtTrialProcedure.setCallableId(oweFeeCallablePo.getOfcId());
            courtTrialProcedure.setOwnerId(importOwnerRoomDto.getOwnerId());
            courtTrialProcedure.setAcceptCourtName(objects.get(128).toString());
            courtTrialProcedure.setJudgeName(objects.get(129).toString());
            courtTrialProcedure.setJudgeContact(objects.get(130).toString());
            courtTrialProcedure.setJudgeNoticeAcceptDate(objects.get(131).toString());
            courtTrialProcedure.setCourtMediationDate(objects.get(132).toString());
            courtTrialProcedure.setMediationResult(objects.get(133).toString());
            courtTrialProcedure.setSubpoenaSignDate(objects.get(134).toString());
            courtTrialProcedure.setUndeliveredDate(objects.get(135).toString());
            courtTrialProcedure.setCourtSessionDate1(objects.get(136).toString());
            courtTrialProcedure.setCourtSessionDate2(objects.get(137).toString());
            courtTrialProcedure.setCaseNumber(objects.get(138).toString());
            courtTrialProcedure.setCourtSessionResult(objects.get(139).toString());
            courtTrialProcedure.setJudgmentDate(objects.get(140).toString());
            courtTrialProcedure.setJudgmentResult(objects.get(141).toString());
            courtTrialProcedure.setRemark(objects.get(142).toString());
            int save = applyRoomDiscountServiceDaoImpl.saveCourtTrialProcedure(BeanConvertUtil.beanCovertMap(courtTrialProcedure));
            courtTrialProcedure.setAcceptCourtName(defaultValue(objects.get(132)));
            courtTrialProcedure.setJudgeName(defaultValue(objects.get(133)));
            courtTrialProcedure.setJudgeContact(defaultValue(objects.get(134)));
            courtTrialProcedure.setJudgeNoticeAcceptDate(defaultValueToDate(objects.get(135)));
            courtTrialProcedure.setCourtMediationDate(defaultValueToDate(objects.get(136)));
            courtTrialProcedure.setMediationResult(defaultValue(objects.get(137)));
            courtTrialProcedure.setSubpoenaSignDate(defaultValueToDate(objects.get(138)));
            courtTrialProcedure.setUndeliveredDate(defaultValueToDate(objects.get(139)));
            courtTrialProcedure.setCourtSessionDate1(defaultValueToDate(objects.get(140)));
            courtTrialProcedure.setCourtSessionDate2(defaultValueToDate(objects.get(141)));
            courtTrialProcedure.setCaseNumber(defaultValue(objects.get(142)));
            courtTrialProcedure.setCourtSessionResult(defaultValue(objects.get(143)));
            courtTrialProcedure.setJudgmentDate(defaultValueToDate(objects.get(144)));
            courtTrialProcedure.setJudgmentResult(defaultValue(objects.get(145)));
            courtTrialProcedure.setRemark(defaultValue(objects.get(146)));
            applyRoomDiscountServiceDaoImpl.saveCourtTrialProcedure(BeanConvertUtil.beanCovertMap(courtTrialProcedure));
        }
        //-----
        if (objects.get(143) != null) {
        //法院执行程序
        if (!defaultValue(objects.get(147)).isEmpty()) {
            CourtExecutionProcedure courtExecutionProcedure = new CourtExecutionProcedure();
            courtExecutionProcedure.setCallableId(oweFeeCallablePo.getOfcId());
            courtExecutionProcedure.setOwnerId(importOwnerRoomDto.getOwnerId());
            courtExecutionProcedure.setApplyTime(objects.get(143).toString());
            courtExecutionProcedure.setJudgmentDocNumber(objects.get(144).toString());
            courtExecutionProcedure.setArrearsPeriod(objects.get(145).toString());
            courtExecutionProcedure.setArrearsAmount(objects.get(146).toString());
            courtExecutionProcedure.setLateFee(objects.get(147).toString());
            courtExecutionProcedure.setAcceptanceFee(objects.get(148).toString());
            courtExecutionProcedure.setOtherFee(objects.get(149).toString());
            courtExecutionProcedure.setTotalAmount(objects.get(150).toString());
            courtExecutionProcedure.setApplyTime(defaultValueToDate(objects.get(147)));
            courtExecutionProcedure.setJudgmentDocNumber(defaultValue(objects.get(148)));
            courtExecutionProcedure.setArrearsPeriod(defaultValue(objects.get(149)));
            courtExecutionProcedure.setArrearsAmount(defaultValue(objects.get(150)));
            courtExecutionProcedure.setLateFee(defaultValue(objects.get(151)));
            courtExecutionProcedure.setAcceptanceFee(defaultValue(objects.get(152)));
            courtExecutionProcedure.setOtherFee(defaultValue(objects.get(153)));
            courtExecutionProcedure.setTotalAmount(defaultValue(objects.get(154)));
            courtExecutionProcedure.setRemark(defaultValue(objects.get(160)));
            int save = applyRoomDiscountServiceDaoImpl.saveCourtExecutionProcedure(BeanConvertUtil.beanCovertMap(courtExecutionProcedure));
            applyRoomDiscountServiceDaoImpl.saveCourtExecutionProcedure(BeanConvertUtil.beanCovertMap(courtExecutionProcedure));
        }
        importOwnerRoomDto.setRoomState(importOwnerRoomDto.getOwnerName().equals("") ? "2004" : "2001");
        importOwnerRoomInnerServiceSMOImpl.saveOwnerRoom(importOwnerRoomDto);
        OwnerDto ownerDto = new OwnerDto();
        ownerDto.setOwnerId(importOwnerRoomDto.getOwnerId());
        List<OwnerDto> ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto);
        if (ownerDtos.size() == 1) {
            ownerPoTo2.setUserId(ownerDtos.get(0).getUserId());
            ownerPoTo3.setUserId(ownerDtos.get(0).getUserId());
            if (ownerPoTo2.getLink() != null) {
                ownerV1InnerServiceSMOImpl.saveOwner(ownerPoTo2);
            }
            if (ownerPoTo2.getLink() != null) {
                ownerV1InnerServiceSMOImpl.saveOwner(ownerPoTo3);
            }
        }
    }
    private String defaultValueToDate(Object o) {
        // 空值直接返回null(原有逻辑)
        if (o == null) {
            return null;
        }
        try {
            // 尝试将对象转换为数字(兼容Excel日期序列号,如44747)
            double excelDateNum = Double.parseDouble(o.toString());
            // Excel 1900日期系统基准(修正闰日bug,实际基准是1899-12-30)
            Calendar calendar = Calendar.getInstance();
            calendar.set(1899, 11, 30, 0, 0, 0); // 月份从0开始,11代表12月
            calendar.set(Calendar.MILLISECOND, 0);
            // 计算对应的实际日期
            calendar.add(Calendar.DAY_OF_MONTH, (int) excelDateNum);
            // 格式化为yyyy-MM-dd的日期字符串
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format(calendar.getTime());
        } catch (NumberFormatException e) {
            // 非数字类型,执行原有逻辑返回toString()
            return o.toString();
        }
    }
    public String defaultValue(Object o) {
        return o == null ? "" : o.toString();
    }
    public BigDecimal defaultNum(Object o) {
        return o == null ? new BigDecimal(0) : new BigDecimal(o.toString());
    }
}