You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							376 lines
						
					
					
						
							16 KiB
						
					
					
				
			
		
		
	
	
							376 lines
						
					
					
						
							16 KiB
						
					
					
				package com.mh.user.controller; | 
						|
 | 
						|
import com.mh.common.http.HttpResult; | 
						|
import com.mh.common.utils.StringUtils; | 
						|
import com.mh.user.annotation.BusinessType; | 
						|
import com.mh.user.annotation.SysLogger; | 
						|
import com.mh.user.entity.BuildingEntity; | 
						|
import com.mh.user.entity.DeviceInstallEntity; | 
						|
import com.mh.user.model.DeviceModel; | 
						|
import com.mh.user.service.BuildingService; | 
						|
import com.mh.user.service.DealDataService; | 
						|
import com.mh.user.service.DeviceInstallService; | 
						|
import com.mh.user.service.SummaryService; | 
						|
import org.apache.poi.hssf.usermodel.HSSFCell; | 
						|
import org.apache.poi.hssf.usermodel.HSSFSheet; | 
						|
import org.apache.poi.hssf.usermodel.HSSFWorkbook; | 
						|
import org.apache.poi.ss.usermodel.CellType; | 
						|
import org.springframework.beans.factory.annotation.Autowired; | 
						|
import org.springframework.web.bind.annotation.*; | 
						|
import org.springframework.web.multipart.MultipartFile; | 
						|
import javax.servlet.http.HttpServletRequest; | 
						|
import java.io.IOException; | 
						|
import java.io.InputStream; | 
						|
import java.text.SimpleDateFormat; | 
						|
import java.util.*; | 
						|
 | 
						|
@RestController | 
						|
@RequestMapping("device") | 
						|
public class DeviceInstallController { | 
						|
 | 
						|
    @Autowired | 
						|
    private DeviceInstallService deviceInstallService; | 
						|
 | 
						|
    @Autowired | 
						|
    BuildingService buildingService; | 
						|
 | 
						|
    private final DealDataService dealDataService; | 
						|
 | 
						|
    public DeviceInstallController(DealDataService dealDataService) | 
						|
    { | 
						|
        this.dealDataService = dealDataService; | 
						|
    } | 
						|
 | 
						|
    //保存 | 
						|
    @SysLogger(title="基表信息",optDesc = "保存基表信息") | 
						|
    @PostMapping(value="/save") | 
						|
    public HttpResult saveDevice(@RequestBody DeviceInstallEntity deviceInstallEntity) { | 
						|
        return HttpResult.ok(deviceInstallService.saveDevice(deviceInstallEntity)); | 
						|
    } | 
						|
 | 
						|
    //修改 | 
						|
    @SysLogger(title="基表信息",optDesc = "修改基表信息") | 
						|
    @PostMapping(value="/update") | 
						|
    public HttpResult updateDevice(@RequestBody DeviceInstallEntity deviceInstallEntity) { | 
						|
        // 根据id查询对应的deviceInstall | 
						|
        DeviceInstallEntity oldEntity = deviceInstallService.selectDeviceById(deviceInstallEntity.getId()); | 
						|
        // 删除全部的device_code_param值 | 
						|
        deviceInstallService.deleteParamCode(oldEntity); | 
						|
        // 设置校验位 | 
						|
        if (StringUtils.isBlank(deviceInstallEntity.getParity())) { | 
						|
            deviceInstallEntity.setParity(oldEntity.getParity()); | 
						|
        } | 
						|
        // 在创建新的device_code_param值 | 
						|
        deviceInstallService.createParamCode(deviceInstallEntity); | 
						|
        // 更新device_install | 
						|
        deviceInstallService.updateDevice(deviceInstallEntity); | 
						|
        String isUse=""; | 
						|
        if (deviceInstallEntity.isUse()){ | 
						|
            isUse="1"; | 
						|
        }else{ | 
						|
            isUse="0"; | 
						|
        } | 
						|
        String deviceAddr=deviceInstallEntity.getDeviceAddr(); | 
						|
        String deviceType=deviceInstallEntity.getDeviceType(); | 
						|
        String buildingId=deviceInstallEntity.getBuildingId(); | 
						|
        deviceInstallService.updateIsUse(isUse,deviceAddr,deviceType,buildingId); | 
						|
        deviceInstallService.updateIsUse2(isUse,deviceAddr,deviceType,buildingId); | 
						|
        deviceInstallService.updateIsUse3(isUse,deviceAddr,deviceType,buildingId); | 
						|
 | 
						|
        return HttpResult.ok(); | 
						|
    } | 
						|
 | 
						|
    //查询所有 | 
						|
    @SysLogger(title="基表信息",optDesc = "查询基表信息") | 
						|
    @PostMapping(value = "/getAll") | 
						|
    public HttpResult getAllDevice(@RequestParam int page, @RequestParam int limit) { | 
						|
        Map<Object,Object> map=new HashMap<>(); | 
						|
        map.put("count",deviceInstallService.getAllCount()); //记录数 | 
						|
        map.put("data",deviceInstallService.getAllDevice(page,limit)); //数据集 | 
						|
        return HttpResult.ok(map); | 
						|
    } | 
						|
 | 
						|
    // 删除多 | 
						|
    @PostMapping(value="/deletes") | 
						|
    public HttpResult delete(@RequestBody List<DeviceInstallEntity> records) { | 
						|
        return HttpResult.ok(deviceInstallService.deleteDevice(records)); | 
						|
    } | 
						|
 | 
						|
    // 删除单个 | 
						|
    @SysLogger(title="基表信息",optDesc = "删除基表信息") | 
						|
    @PostMapping(value="/delete") | 
						|
    public HttpResult delete(@RequestParam String id ) { | 
						|
        return HttpResult.ok(deviceInstallService.deleteDevice(id)); | 
						|
    } | 
						|
 | 
						|
    // 按条件查询 | 
						|
    @SysLogger(title="基表信息",optDesc = "按条件查询基表信息") | 
						|
    @PostMapping(value="/query") | 
						|
    public HttpResult queryDevice( @RequestParam(value = "buildingId", required = false)String buildingId, | 
						|
                                   @RequestParam(value = "deviceType", required = false)String deviceType, | 
						|
                                   @RequestParam(value = "startDate", required = false)String startDate, | 
						|
                                   @RequestParam(value = "endDate", required = false)String endDate, | 
						|
                                   @RequestParam(value = "isOnline", required=false)String isOnline, | 
						|
                                   @RequestParam(value = "isUse", required=false)String isUse, | 
						|
                                   @RequestParam(value = "isFault", required=false)String isFault, | 
						|
                                   @RequestParam(value = "page", required=true)Integer page, | 
						|
                                   @RequestParam(value = "limit", required=true)Integer limit) { | 
						|
        try{ | 
						|
            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
						|
            Date date = new Date(); | 
						|
            String curDate=sdf1.format(date); | 
						|
            dealDataService.proDeviceState(curDate); //刷新统计设备状态数据 | 
						|
 | 
						|
            int count=deviceInstallService.getCount(buildingId,deviceType, startDate, endDate,isOnline,isUse,isFault, page,limit); | 
						|
            List<DeviceInstallEntity> records=deviceInstallService.queryDevice(buildingId,deviceType, startDate, endDate,isOnline,isUse,isFault, page,limit); | 
						|
            return HttpResult.ok(count,records); | 
						|
        }catch (Exception e){ | 
						|
            //e.printStackTrace(); | 
						|
            return HttpResult.error(); | 
						|
        } | 
						|
    } | 
						|
 | 
						|
    //查询设备在线情况 | 
						|
    @PostMapping(value="/getIsOnline") | 
						|
    public HttpResult getIsOnlineCount(){ | 
						|
        try { | 
						|
            Map<Object, Object> map = new HashMap<>(); | 
						|
            int electCount = deviceInstallService.getIsOnlineCount("在线", "电表"); | 
						|
            int wtCount = deviceInstallService.getIsOnlineCount("在线", "水表"); | 
						|
            int pumpCount = deviceInstallService.getIsOnlineCount("在线", "热泵"); | 
						|
            int pressCount = deviceInstallService.getIsOnlineCount("在线", "压变"); | 
						|
            int deviceCount = deviceInstallService.getAllCount(); | 
						|
 | 
						|
            map.put("electCount", electCount); | 
						|
            map.put("wtCount", wtCount); | 
						|
            map.put("pumpCount", pumpCount); | 
						|
            map.put("pressCount", pressCount); | 
						|
            map.put("deviceCount", deviceCount); | 
						|
 | 
						|
            return HttpResult.ok(map); | 
						|
        } catch(Exception e){ | 
						|
            return HttpResult.error(); | 
						|
        } | 
						|
    } | 
						|
 | 
						|
    // 资料批量上传 | 
						|
    @PostMapping("/import_devices") | 
						|
    public HttpResult importExcel(@RequestParam(value = "file") MultipartFile file, HttpServletRequest req) { | 
						|
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
						|
        HttpResult httpResult=new HttpResult(); | 
						|
        String token = req.getHeader("token"); | 
						|
        try { | 
						|
            int is=0;     //判断是否有重复表号 | 
						|
            String msg=""; | 
						|
            List<String> a = new ArrayList(); | 
						|
            InputStream inputStream = file.getInputStream(); | 
						|
            //创建工作簿 | 
						|
            HSSFWorkbook hssfWorkbook = new HSSFWorkbook(inputStream); | 
						|
            System.out.println("xssfWorkbook对象:" + hssfWorkbook); | 
						|
            //读取第一个工作表 | 
						|
            HSSFSheet sheet = hssfWorkbook.getSheetAt(0); | 
						|
            System.out.println("sheet对象:" + sheet); | 
						|
            //获取最后一行的num,即总行数。此处从0开始计数 | 
						|
            int maxRow = sheet.getLastRowNum(); | 
						|
            System.out.println("总行数为:" + maxRow); | 
						|
            if (maxRow >= 500){ | 
						|
                msg = "总行数不能超出500行"; | 
						|
                httpResult.setMsg(msg); | 
						|
                httpResult.setCode(500); | 
						|
                return httpResult; | 
						|
            } | 
						|
            if (maxRow == 0){ | 
						|
                msg = "请先录入数据到excel文件"; | 
						|
                httpResult.setMsg(msg); | 
						|
                httpResult.setCode(500); | 
						|
                return httpResult; | 
						|
            } | 
						|
            //先清临时表 | 
						|
//            deviceInstallService.deleteDevice_install_temp(); | 
						|
            // 创建数组集合 | 
						|
            List<DeviceInstallEntity> uploadEntityList = new ArrayList<>(); | 
						|
            List<String> deviceList = new ArrayList<>(); | 
						|
            for (int row = 1; row <= maxRow; row++) { | 
						|
                //获取最后单元格num,即总单元格数 ***注意:此处从1开始计数*** | 
						|
                int maxRol = sheet.getRow(row).getLastCellNum(); | 
						|
                System.out.println("总列数为:" + maxRol); | 
						|
                System.out.println("--------第" + row + "行的数据如下--------"); | 
						|
                for (int rol = 0; rol < maxRol; rol++){ | 
						|
                    String sCell; | 
						|
                    if (sheet.getRow(row).getCell(rol) == null){ | 
						|
                        sCell=""; | 
						|
                    }else{ | 
						|
                        HSSFCell cell = sheet.getRow(row).getCell(rol); | 
						|
                        cell.setCellType(CellType.STRING); | 
						|
                        sCell = cell.getStringCellValue(); | 
						|
                    } | 
						|
                    sCell = sCell.trim();                                     //去首尾空格 | 
						|
                    sCell = sCell.replaceAll(" ", "");      //去掉所有空格,包括首尾、中间 | 
						|
                    sCell = sCell.replaceAll("\\s*", "");   //可以替换大部分空白字符, 不限于空格,\s 可以匹配空格、制表符、换页符等空白字符的其中任意一个 | 
						|
                    System.out.print(sCell + "  "); | 
						|
                    deviceList.add(sCell); | 
						|
                    String rolName = ""; | 
						|
                    switch (rol){ | 
						|
                        case 1 : | 
						|
                            rolName = "通讯编号"; | 
						|
                            break; | 
						|
                        case 2 : | 
						|
                            rolName = "设备名称"; | 
						|
                            break; | 
						|
                        case 3 : | 
						|
                            rolName = "设备类型"; | 
						|
                            break; | 
						|
                        case 4 : | 
						|
                            rolName = "通讯端口"; | 
						|
                            break; | 
						|
                        case 5 : | 
						|
                            rolName = "波特率"; | 
						|
                            break; | 
						|
                        case 6 : | 
						|
                            rolName = "倍率"; | 
						|
                            break; | 
						|
                        case 7 : | 
						|
                            rolName = "品牌"; | 
						|
                            break; | 
						|
                        case 8 : | 
						|
                            rolName = "型号"; | 
						|
                            break; | 
						|
                        case 9 : | 
						|
                            rolName = "安装人员"; | 
						|
                            break; | 
						|
                        case 10 : | 
						|
                            rolName = "所属楼栋"; | 
						|
                            break; | 
						|
                    } | 
						|
                    if ((rol >= 1)&&(rol <= 4)&&(sCell.equals(""))){ | 
						|
                        msg = rolName + "不能为空" ; | 
						|
                        httpResult.setMsg(msg); | 
						|
                        httpResult.setCode(500); | 
						|
                        return httpResult; | 
						|
                    } | 
						|
                } | 
						|
                // 创建实体类 | 
						|
                DeviceInstallEntity uploadEntity=new DeviceInstallEntity(); | 
						|
                uploadEntity.setDeviceAddr(deviceList.get(0));//通讯编号 | 
						|
                uploadEntity.setDeviceName(deviceList.get(1));//设备名称 | 
						|
                uploadEntity.setDeviceType(deviceList.get(2));//设备类型 | 
						|
                uploadEntity.setDataCom(deviceList.get(3));//通讯端口 | 
						|
                uploadEntity.setBaudRate(Integer.parseInt(deviceList.get(4)));//波特率 | 
						|
                uploadEntity.setRatio(Double.parseDouble(deviceList.get(5)));//倍率 | 
						|
                uploadEntity.setBrand(deviceList.get(6));//品牌 | 
						|
                uploadEntity.setModel(deviceList.get(7));//型号 | 
						|
                uploadEntity.setInstaller(deviceList.get(8));//安装人员 | 
						|
                uploadEntity.setBuildingId(deviceList.get(9));//所属楼栋 | 
						|
                deviceList.clear(); | 
						|
 | 
						|
                uploadEntityList.add(uploadEntity); | 
						|
                is=deviceInstallService.selectDeviceCount(uploadEntity.getDeviceAddr(),uploadEntity.getDeviceType()); | 
						|
                if (is>0){ | 
						|
                    httpResult.setMsg("通讯编号有重复!"); | 
						|
                    httpResult.setCode(500); | 
						|
//                    return httpResult; | 
						|
                } | 
						|
            } | 
						|
 | 
						|
            if (is==0){ | 
						|
                for (DeviceInstallEntity deviceInstallEntity:uploadEntityList){ | 
						|
                    deviceInstallService.saveDevice(deviceInstallEntity); | 
						|
                } | 
						|
                httpResult.setMsg("success"); | 
						|
                httpResult.setCode(200); | 
						|
                return  httpResult; | 
						|
            } | 
						|
        } catch (IOException e) { | 
						|
            // TODO Auto-generated catch block | 
						|
            e.printStackTrace(); | 
						|
        } | 
						|
        return httpResult; | 
						|
    } | 
						|
 | 
						|
    // 修改使用状态 | 
						|
    @PostMapping(value="/isUse") | 
						|
    public HttpResult updateDeviceIsUse(@RequestParam(value = "isUse") String isUse, | 
						|
                                        @RequestParam(value = "deviceAddr") String deviceAddr) { | 
						|
        deviceInstallService.updateDeviceIsUse(isUse,deviceAddr); | 
						|
        return HttpResult.ok(); | 
						|
    } | 
						|
 | 
						|
    @PostMapping(value="/name") | 
						|
    public HttpResult selectDevices(@RequestParam(value = "buildingId", required = false)String buildingId, | 
						|
                                    @RequestParam(value = "deviceType", required = false)String deviceType) { | 
						|
        try{ | 
						|
            List<DeviceModel> list; | 
						|
            if(deviceType.equals("热泵")){ | 
						|
                list=deviceInstallService.selectDevices(buildingId,deviceType); | 
						|
                if (list.size()==0){ | 
						|
                    String addr; | 
						|
                    String name; | 
						|
                    for(int i=1;i<8;i++){ | 
						|
                        DeviceModel d1=new DeviceModel(); | 
						|
                        addr=String.valueOf(i); | 
						|
                        name="热泵"+addr; | 
						|
                        d1.setDeviceAddr(addr); | 
						|
                        d1.setDeviceName(name); | 
						|
                        list.add(d1); | 
						|
                    } | 
						|
                    //System.out.println(list); | 
						|
//                    DeviceModel d2=new DeviceModel(); | 
						|
//                    d2.setDeviceAddr("2"); | 
						|
//                    d2.setDeviceName("热泵2"); | 
						|
//                    list.add(d2); | 
						|
// | 
						|
//                    DeviceModel d3=new DeviceModel(); | 
						|
//                    d3.setDeviceAddr("3"); | 
						|
//                    d3.setDeviceName("热泵3"); | 
						|
//                    list.add(d3); | 
						|
// | 
						|
//                    DeviceModel d4=new DeviceModel(); | 
						|
//                    d4.setDeviceAddr("4"); | 
						|
//                    d4.setDeviceName("热泵4"); | 
						|
//                    list.add(d4); | 
						|
// | 
						|
//                    DeviceModel d5=new DeviceModel(); | 
						|
//                    d5.setDeviceAddr("5"); | 
						|
//                    d5.setDeviceName("热泵5"); | 
						|
//                    list.add(d5); | 
						|
                } | 
						|
            }else{ | 
						|
                list=deviceInstallService.selectDevices(buildingId,deviceType); | 
						|
            } | 
						|
 | 
						|
            return HttpResult.ok(list); | 
						|
        }catch (Exception e){ | 
						|
            e.printStackTrace(); | 
						|
            return HttpResult.error(); | 
						|
        } | 
						|
    } | 
						|
 | 
						|
    // 查询品牌 | 
						|
    @PostMapping(value="/brand") | 
						|
    public HttpResult selectBrand(@RequestParam(value = "buildingId") String buildingId, | 
						|
                                  @RequestParam(value = "deviceAddr") String deviceAddr) { | 
						|
        return HttpResult.ok(deviceInstallService.selectBrand(buildingId,deviceAddr)); | 
						|
    } | 
						|
 | 
						|
    //判断楼栋是否有热泵设备 | 
						|
    @PostMapping(value="/pump") | 
						|
    public HttpResult judgePump(@RequestParam(value = "buildingId") String buildingId) { | 
						|
        int data=deviceInstallService.judgePump(buildingId); | 
						|
        return HttpResult.ok("success",data); | 
						|
    } | 
						|
 | 
						|
    @PostMapping(value = "/calibration") | 
						|
    public HttpResult calibration(@RequestParam(value = "buildingId") Integer buildingId, | 
						|
                                  @RequestParam(value = "deviceType") Integer deviceType, | 
						|
                                  @RequestParam(value = "param") Integer param, | 
						|
                                  @RequestParam(value = "readValue") String readValue, | 
						|
                                  @RequestParam(value = "realValue") String realValue) { | 
						|
        boolean isUpdate = deviceInstallService.updateDeviation(buildingId,deviceType,param,readValue,realValue); | 
						|
        if (isUpdate) { | 
						|
            return HttpResult.ok("success"); | 
						|
        } else { | 
						|
            return HttpResult.error(); | 
						|
        } | 
						|
    } | 
						|
 | 
						|
}
 | 
						|
 |