Your Name
2023-06-21 903cda6d40ee3f0187e3d81888c8f0ba8ad6d9b2
水电表导入开发中
1个文件已修改
4个文件已添加
420 ■■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/importData/ImportMeterMachineDto.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/importData/adapt/ImportMeterMachineDataCleaningAdapt.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/importData/adapt/ImportMeterMachineQueueDataAdapt.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot/src/main/java/com/java110/boot/importData/adapt/ImportMeterMachineDataCleaningAdapt.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot/src/main/java/com/java110/boot/smo/DefaultAbstractComponentSMO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/importData/ImportMeterMachineDto.java
New file
@@ -0,0 +1,107 @@
package com.java110.dto.importData;
import java.io.Serializable;
/**
 * {"machineId":"","machineName":"1-1-1智能水表","address":"1212","meterType":"102023062029980006","machineModel":"2002","roomId":"75202305221015270788000231",
 * "roomName":"1-1-1001","feeConfigId":"922023062058050004",
 * "implBean":"1","readDay":"1","readHours":"1",
 * "communityId":"2023052267100146"
 * }
 */
public class ImportMeterMachineDto implements Serializable {
    private String machineName;
    private String address;
    private String meterType;
    private String machineModel;
    private String roomName;
    private String feeName;
    private String implBean;
    private String communityId;
    private String value1;
    private String userId;
    public String getMachineName() {
        return machineName;
    }
    public void setMachineName(String machineName) {
        this.machineName = machineName;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getMeterType() {
        return meterType;
    }
    public void setMeterType(String meterType) {
        this.meterType = meterType;
    }
    public String getMachineModel() {
        return machineModel;
    }
    public void setMachineModel(String machineModel) {
        this.machineModel = machineModel;
    }
    public String getRoomName() {
        return roomName;
    }
    public void setRoomName(String roomName) {
        this.roomName = roomName;
    }
    public String getFeeName() {
        return feeName;
    }
    public void setFeeName(String feeName) {
        this.feeName = feeName;
    }
    public String getImplBean() {
        return implBean;
    }
    public void setImplBean(String implBean) {
        this.implBean = implBean;
    }
    public String getCommunityId() {
        return communityId;
    }
    public void setCommunityId(String communityId) {
        this.communityId = communityId;
    }
    public String getValue1() {
        return value1;
    }
    public void setValue1(String value1) {
        this.value1 = value1;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
}
service-api/src/main/java/com/java110/api/importData/adapt/ImportMeterMachineDataCleaningAdapt.java
New file
@@ -0,0 +1,132 @@
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.importData.ImportMeterMachineDto;
import com.java110.dto.system.ComponentValidateResult;
import com.java110.utils.util.Assert;
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.stereotype.Service;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
/**
 * 水电表导入处理类
 *
 * 导入请求参数中必须包含
 * param.append('importAdapt', "importRoomOwner");
 */
@Service("importMeterMachineDataCleaning")
public class ImportMeterMachineDataCleaningAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt {
    @Override
    public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception{
        List<ImportMeterMachineDto> importMeterMachineDtos = new ArrayList<ImportMeterMachineDto>();
        //封装对象
        getOwnerRooms(workbook, importMeterMachineDtos, result);
        //数据格式校验
        validateRoomInfo(importMeterMachineDtos);
        return importMeterMachineDtos;
    }
    /**
     * 获取业主车辆信息
     *
     * @param workbook
     * @param importMeterMachineDtos
     */
    private void getOwnerRooms(Workbook workbook, List<ImportMeterMachineDto> importMeterMachineDtos, ComponentValidateResult result) throws ParseException {
        Sheet sheet = null;
        sheet = ImportExcelUtils.getSheet(workbook, "水电表");
        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
        ImportMeterMachineDto importMeterMachineDto = null;
        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
            Object[] os = oList.get(osIndex);
            if (osIndex == 0) { // 第一行是 头部信息 直接跳过
                continue;
            }
            if (os == null || 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) + "行厂家不能为空");
            importMeterMachineDto = new ImportMeterMachineDto();
            importMeterMachineDto.setCommunityId(result.getCommunityId());
            importMeterMachineDto.setUserId(result.getUserId());
            importMeterMachineDto.setMachineName(os[0].toString().trim());
            importMeterMachineDto.setAddress(os[1].toString().trim());
            importMeterMachineDto.setMeterType(os[2].toString().trim());
            importMeterMachineDto.setMachineModel(os[3].toString().trim());
            importMeterMachineDto.setRoomName(os[4].toString().trim());
            importMeterMachineDto.setFeeName(os[5].toString().trim());
            importMeterMachineDto.setImplBean(os[6].toString().trim());
            if (os.length > 7 && !StringUtil.isNullOrNone(os[7])) {
                importMeterMachineDto.setValue1(os[7].toString().trim());
            }
            importMeterMachineDtos.add(importMeterMachineDto);
        }
    }
    /**
     * 数据格式校验
     *
     * @param importMeterMachineDtos
     */
    private void validateRoomInfo(List<ImportMeterMachineDto> importMeterMachineDtos) {
        ImportMeterMachineDto importOwnerRoomDto = null;
        for (int roomIndex = 0; roomIndex < importMeterMachineDtos.size(); roomIndex++) {
            importOwnerRoomDto = importMeterMachineDtos.get(roomIndex);
            if (StringUtil.isEmpty(importOwnerRoomDto.getRoomName())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行房屋不能为空");
            }
            String[] item = importOwnerRoomDto.getRoomName().split("-",3);
            if(item.length != 3){
                throw new IllegalArgumentException((roomIndex + 1) + "行房屋格式错误 必须为 楼栋-单元-房屋");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getAddress())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行表号不能为空");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getMachineModel())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行模式不能为空");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getFeeName())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行费用项不能为空");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getMeterType())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行表类型不能为空");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getImplBean())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行厂家不能为空");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getMachineName())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行名称不能为空");
            }
        }
    }
}
service-job/src/main/java/com/java110/job/importData/adapt/ImportMeterMachineQueueDataAdapt.java
New file
@@ -0,0 +1,44 @@
package com.java110.job.importData.adapt;
import com.alibaba.fastjson.JSONObject;
import com.java110.dto.importData.ImportMeterMachineDto;
import com.java110.dto.importData.ImportOwnerRoomDto;
import com.java110.dto.log.AssetImportLogDetailDto;
import com.java110.job.importData.DefaultImportData;
import com.java110.job.importData.IImportDataAdapt;
import com.java110.utils.util.BeanConvertUtil;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("importMeterMachineQueueData")
public class ImportMeterMachineQueueDataAdapt extends DefaultImportData implements IImportDataAdapt {
    @Override
    public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) {
        for (AssetImportLogDetailDto assetImportLogDetailDto : assetImportLogDetailDtos) {
            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());
        ImportMeterMachineDto importOwnerRoomDto = BeanConvertUtil.covertBean(data, ImportMeterMachineDto.class);
//        int flag = importOwnerRoomInnerServiceSMOImpl.saveOwnerRoom(importOwnerRoomDto);
//        if (flag < 1) {
//            throw new IllegalArgumentException("导入失败");
//        }
    }
}
springboot/src/main/java/com/java110/boot/importData/adapt/ImportMeterMachineDataCleaningAdapt.java
New file
@@ -0,0 +1,135 @@
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.importData.ImportMeterMachineDto;
import com.java110.dto.importData.ImportOwnerRoomDto;
import com.java110.dto.owner.OwnerDto;
import com.java110.dto.room.RoomDto;
import com.java110.dto.system.ComponentValidateResult;
import com.java110.utils.util.Assert;
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.stereotype.Service;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
/**
 * 水电表导入处理类
 *
 * 导入请求参数中必须包含
 * param.append('importAdapt', "importRoomOwner");
 */
@Service("importMeterMachineDataCleaning")
public class ImportMeterMachineDataCleaningAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt {
    @Override
    public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception{
        List<ImportMeterMachineDto> importMeterMachineDtos = new ArrayList<ImportMeterMachineDto>();
        //封装对象
        getOwnerRooms(workbook, importMeterMachineDtos, result);
        //数据格式校验
        validateRoomInfo(importMeterMachineDtos);
        return importMeterMachineDtos;
    }
    /**
     * 获取业主车辆信息
     *
     * @param workbook
     * @param importMeterMachineDtos
     */
    private void getOwnerRooms(Workbook workbook, List<ImportMeterMachineDto> importMeterMachineDtos, ComponentValidateResult result) throws ParseException {
        Sheet sheet = null;
        sheet = ImportExcelUtils.getSheet(workbook, "水电表");
        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
        ImportMeterMachineDto importMeterMachineDto = null;
        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
            Object[] os = oList.get(osIndex);
            if (osIndex == 0) { // 第一行是 头部信息 直接跳过
                continue;
            }
            if (os == null || 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) + "行厂家不能为空");
            importMeterMachineDto = new ImportMeterMachineDto();
            importMeterMachineDto.setCommunityId(result.getCommunityId());
            importMeterMachineDto.setUserId(result.getUserId());
            importMeterMachineDto.setMachineName(os[0].toString().trim());
            importMeterMachineDto.setAddress(os[1].toString().trim());
            importMeterMachineDto.setMeterType(os[2].toString().trim());
            importMeterMachineDto.setMachineModel(os[3].toString().trim());
            importMeterMachineDto.setRoomName(os[4].toString().trim());
            importMeterMachineDto.setFeeName(os[5].toString().trim());
            importMeterMachineDto.setImplBean(os[6].toString().trim());
            if (os.length > 7 && !StringUtil.isNullOrNone(os[7])) {
                importMeterMachineDto.setValue1(os[7].toString().trim());
            }
            importMeterMachineDtos.add(importMeterMachineDto);
        }
    }
    /**
     * 数据格式校验
     *
     * @param importMeterMachineDtos
     */
    private void validateRoomInfo(List<ImportMeterMachineDto> importMeterMachineDtos) {
        ImportMeterMachineDto importOwnerRoomDto = null;
        for (int roomIndex = 0; roomIndex < importMeterMachineDtos.size(); roomIndex++) {
            importOwnerRoomDto = importMeterMachineDtos.get(roomIndex);
            if (StringUtil.isEmpty(importOwnerRoomDto.getRoomName())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行房屋不能为空");
            }
            String[] item = importOwnerRoomDto.getRoomName().split("-",3);
            if(item.length != 3){
                throw new IllegalArgumentException((roomIndex + 1) + "行房屋格式错误 必须为 楼栋-单元-房屋");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getAddress())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行表号不能为空");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getMachineModel())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行模式不能为空");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getFeeName())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行费用项不能为空");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getMeterType())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行表类型不能为空");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getImplBean())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行厂家不能为空");
            }
            if (StringUtil.isEmpty(importOwnerRoomDto.getMachineName())) {
                throw new IllegalArgumentException((roomIndex + 1) + "行名称不能为空");
            }
        }
    }
}
springboot/src/main/java/com/java110/boot/smo/DefaultAbstractComponentSMO.java
@@ -381,7 +381,7 @@
        Assert.hasLength(pd.getUserId(), "用户未登录请先登录");
        ResultVo resultVo = getCommunityStoreInfoSMOImpl.getStoreInfo(pd, restTemplate, pd.getUserId());
        logger.debug("ruleId getStoreInfo :{}", resultVo.toString());
        logger.debug("查询商户信息 getStoreInfo :{}", resultVo.toString());
        return new ResponseEntity<String>(resultVo.getMsg(), resultVo.getCode() == ResultVo.CODE_OK ? HttpStatus.OK : HttpStatus.BAD_REQUEST);
    }