Browse Source

物联网修改

yeshijie 4 years ago
parent
commit
dbe717967a

+ 2 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/iot/IotRequestMapping.java

@ -36,6 +36,7 @@ public class IotRequestMapping {
        public static final String message_success_find = "find success";
        public static final String message_success_create = "create success";
        public static final String message_success_find_functions = "find success";
        public static final String message_success_import = "import success";
        public static final String message_fail_name_is_null = "name is null";
        public static final String message_fail_is_no_exist = "is no exist";
@ -230,6 +231,7 @@ public class IotRequestMapping {
        public static final String updateInventory = "updateInventory";
        public static final String getDeviceInventoryLog = "getDeviceInventoryLog";
        public static final String getDeviceInventoryLogDetail = "getDeviceInventoryLogDetail";
        public static final String deviceInventoryImport = "open/deviceInventoryImport";
        //预警
        public static final String getInventoryWarningHospital = "getInventoryWarningHospital";

+ 11 - 5
svr/svr-iot/src/main/java/com/yihu/iot/controller/device/IotDeviceController.java

@ -23,10 +23,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@ -277,10 +274,19 @@ public class IotDeviceController extends EnvelopRestEndpoint {
    @GetMapping(value = IotRequestMapping.Device.api_findByDeviceSn)
    @ApiOperation(value = "根据sn查找设备", notes = "根据sn查找设备")
    public MixEnvelop<IotDeviceVO, IotDeviceVO> findByDeviceSn(@ApiParam(name = "deviceSn", value = "设备sn码")
                                                           @RequestParam(value = "deviceSn", required = true) String deviceSn
                                                           @RequestParam(value = "deviceSn", required = true) String deviceSn,
                                                               @ApiParam(name = "productId", value = "产品id")
                                                               @RequestParam(value = "productId", required = false) String productId,
                                                               @ApiParam(name = "hospital", value = "单位")
                                                                   @RequestParam(value = "hospital", required = false) String hospital
    ) {
        try {
            IotDeviceDO iotDeviceDO = iotDeviceService.findByDeviceSn(deviceSn);
            IotDeviceDO iotDeviceDO;
            if(StringUtils.isNotEmpty(hospital)){
                iotDeviceDO = iotDeviceService.findDeviceBySn(deviceSn,productId,hospital);
            }else{
                iotDeviceDO = iotDeviceService.findByDeviceSn(deviceSn);
            }
            IotDeviceVO iotDeviceVO = convertToModel(iotDeviceDO,IotDeviceVO.class);
            return MixEnvelop.getSuccess(IotRequestMapping.Device.message_success_find, iotDeviceVO);
        } catch (Exception e) {

+ 29 - 4
svr/svr-iot/src/main/java/com/yihu/iot/controller/device/IotDeviceInventoryController.java

@ -2,10 +2,9 @@ package com.yihu.iot.controller.device;
import com.yihu.iot.service.device.IotDeviceInventoryService;
import com.yihu.iot.service.device.IotDeviceInventoryWarningService;
import com.yihu.iot.service.excelImport.DeviceInventoryExcelReader;
import com.yihu.jw.restmodel.iot.device.IotDeviceInventoryLogVO;
import com.yihu.jw.restmodel.iot.device.IotDeviceInventoryWarningVO;
import com.yihu.jw.restmodel.iot.device.IotDeviceVO;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.iot.IotRequestMapping;
@ -14,6 +13,10 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
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.util.List;
/**
 * @author humingfen on 2020.4.29
@ -27,6 +30,8 @@ public class IotDeviceInventoryController extends EnvelopRestEndpoint {
    private IotDeviceInventoryService deviceInventoryService;
    @Autowired
    private IotDeviceInventoryWarningService deviceInventoryWarningService;
    @Autowired
    private DeviceInventoryExcelReader deviceInventoryExcelReader;
    @GetMapping(value = IotRequestMapping.Device.getDeviceInventoryList)
    @ApiOperation(value = "获取设备库存列表", notes = "获取设备库存列表")
@ -102,7 +107,7 @@ public class IotDeviceInventoryController extends EnvelopRestEndpoint {
    @ApiOperation(value = "库存预警,获取单位接口", notes = "库存预警,获取单位接口")
    public MixEnvelop getInventoryWarningHospital() {
        try {
            return MixEnvelop.getSuccess(IotRequestMapping.Common.message_success_find, deviceInventoryService.getInventoryWarningHospital());
            return deviceInventoryService.getInventoryWarningHospital();
        } catch (Exception e) {
            e.printStackTrace();
            return MixEnvelop.getError(e.getMessage());
@ -114,12 +119,32 @@ public class IotDeviceInventoryController extends EnvelopRestEndpoint {
    public MixEnvelop getInventoryWarningName(@ApiParam(name = "hospital", value = "单位code")
                                                  @RequestParam(value = "hospital", required = true) String hospital) {
        try {
            return MixEnvelop.getSuccess(IotRequestMapping.Common.message_success_find, deviceInventoryService.getInventoryWarningName(hospital));
            return deviceInventoryService.getInventoryWarningName(hospital);
        } catch (Exception e) {
            e.printStackTrace();
            return MixEnvelop.getError(e.getMessage());
        }
    }
    @PostMapping(value = IotRequestMapping.Device.deviceInventoryImport)
    @ApiOperation(value = "设备入库sn导入")
    public MixEnvelop deviceInventoryImport(
            @ApiParam(value = "文件", required = true)
            @RequestParam(value = "file") MultipartFile file,
            HttpServletRequest request) {
        try {
            request.setCharacterEncoding("UTF-8");
            deviceInventoryExcelReader.read(file);
            List<String> errorLs = deviceInventoryExcelReader.getErrorLs();
            List<String> correctLs = deviceInventoryExcelReader.getCorrectLs();
            if(correctLs.size()>0){
            }
            return MixEnvelop.getSuccessList(IotRequestMapping.Common.message_success_import, correctLs);
        }catch (Exception e){
            e.printStackTrace();
            return MixEnvelop.getError("导入异常,请检查导入文件格式" + e.getMessage());
        }
    }
}

+ 3 - 4
svr/svr-iot/src/main/java/com/yihu/iot/controller/product/IotProductController.java

@ -1,17 +1,16 @@
package com.yihu.iot.controller.product;
import com.alibaba.fastjson.JSONObject;
import com.yihu.iot.service.device.IotDeviceInventoryWarningService;
import com.yihu.iot.service.dict.IotSystemDictService;
import com.yihu.iot.service.product.IotProductBaseInfoService;
import com.yihu.jw.entity.iot.device.IotDeviceInventoryWarningDO;
import com.yihu.jw.entity.iot.product.IotProductBaseInfoDO;
import com.yihu.jw.restmodel.iot.device.IotDeviceInventoryWarningVO;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.restmodel.iot.product.IotMaintenanceUnitVO;
import com.yihu.jw.restmodel.iot.product.IotProductBaseInfoVO;
import com.yihu.jw.restmodel.iot.product.IotProductVO;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.iot.IotRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -206,7 +205,7 @@ public class IotProductController extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = IotRequestMapping.Product.setInventoryById)
    @PostMapping(value = IotRequestMapping.Product.setInventoryById)
    @ApiOperation(value = "根据产品id设置库存上下限预警值")
    public MixEnvelop<IotDeviceInventoryWarningVO, IotDeviceInventoryWarningVO> setInventoryById(@ApiParam(name = "jsonData", value = "设置库存预警提醒json数组", defaultValue = "[]")
                                                                       @RequestParam(value = "jsonData", required = true)String jsonData) {

+ 14 - 1
svr/svr-iot/src/main/java/com/yihu/iot/service/device/IotDeviceInventoryService.java

@ -13,7 +13,6 @@ import com.yihu.jw.entity.iot.device.IotDeviceInventoryLogDO;
import com.yihu.jw.entity.iot.device.IotDeviceOrderDO;
import com.yihu.jw.restmodel.iot.device.IotDeviceInventoryLogVO;
import com.yihu.jw.restmodel.iot.device.IotDeviceVO;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.rm.iot.IotRequestMapping;
import com.yihu.mysql.query.BaseJpaService;
@ -157,8 +156,22 @@ public class IotDeviceInventoryService extends BaseJpaService<IotDeviceInventory
                        deviceDO.setUpdateTime(new Date());
                        deviceDOList.add(deviceDO);
                        continue;
                    }else if(type == 2){
                        //设备调拨出库需要新增一条入库记录
                        try {
                            IotDeviceInventoryLogDO deviceInventoryLog = objectMapper.readValue(jsonObject.toString(), IotDeviceInventoryLogDO.class);
                            deviceInventoryLog.setSaasId(getCode());
                            deviceInventoryLog.setOrderId(orderId);
                            deviceInventoryLog.setCreateTime(new Date());
                            deviceInventoryLog.setUpdateTime(new Date());
                            deviceInventoryLog.setType(1);
                            deviceInventoryLogDao.save(deviceInventoryLog);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
                deviceDO.setHospital(jsonObject.getString("hospital"));
                deviceDO.setHospitalName(jsonObject.getString("hospitalName"));
                if (StringUtils.isNotBlank(orderId)) {

+ 1 - 2
svr/svr-iot/src/main/java/com/yihu/iot/service/device/IotDeviceInventoryWarningService.java

@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.iot.dao.device.IotDeviceInventoryWarningDao;
import com.yihu.jw.entity.iot.device.IotDeviceInventoryWarningDO;
import com.yihu.jw.entity.iot.product.IotProductBaseInfoDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -35,7 +34,7 @@ public class IotDeviceInventoryWarningService extends BaseJpaService<IotDeviceIn
            String id  = jsonObject.getString("id");
            String hospital  = jsonObject.getString("hospital");
            String hospitalName  = jsonObject.getString("hospitalName");
            String produceName  = jsonObject.getString("produceName");
            String produceName  = jsonObject.getString("productName");
            Integer inventoryUpper = jsonObject.getInteger("inventoryUpper");
            Integer inventoryFloor = jsonObject.getInteger("inventoryFloor");
            IotDeviceInventoryWarningDO warningDO = new IotDeviceInventoryWarningDO();

+ 30 - 3
svr/svr-iot/src/main/java/com/yihu/iot/service/device/IotDeviceService.java

@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.iot.dao.device.*;
import com.yihu.iot.dao.product.IotProductDataTransmissionDao;
import com.yihu.iot.service.dict.IotSystemDictService;
import com.yihu.iot.util.excel.AExcelReader;
import com.yihu.iot.util.excel.reader.IotDeviceImportVOReader;
import com.yihu.jw.entity.iot.device.*;
import com.yihu.jw.entity.iot.product.IotProductDataTransmissionDO;
@ -17,8 +18,6 @@ import com.yihu.jw.restmodel.iot.product.IotProductDataTransmissionVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.rm.iot.IotRequestMapping;
import com.yihu.iot.util.excel.AExcelReader;
import com.yihu.iot.util.excel.reader.IotDeviceImportVOReader;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -30,7 +29,10 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -367,6 +369,31 @@ public class IotDeviceService extends BaseJpaService<IotDeviceDO,IotDeviceDao> {
        return iotDeviceDao.findByDeviceSn(deviceSn);
    }
    /**
     * 根据设备序列号查找设备
     * @param deviceSn
     * @param productId
     * @param hospital
     * @return
     */
    public IotDeviceDO findDeviceBySn(String deviceSn,String productId,String hospital){
        String sql ="SELECT c.* from iot_device c  WHERE c.del=1 ";
        if(StringUtils.isNotEmpty(deviceSn)){
            sql += " and c.device_sn = '"+deviceSn+"'";
        }
        if(StringUtils.isNotEmpty(productId)){
            sql += " and c.product_id = '"+productId+"'";
        }
        if(StringUtils.isNotEmpty(hospital)){
            sql += " and c.hospital = '"+hospital+"'";
        }
        List<IotDeviceDO> list = jdbcTempalte.query(sql,new BeanPropertyRowMapper(IotDeviceDO.class));
        if(list.size()>0){
            return list.get(0);
        }
        return null;
    }
    /**
     * 设备导入
     */

+ 32 - 4
svr/svr-iot/src/main/java/com/yihu/iot/service/dict/IotSystemDictService.java

@ -4,17 +4,20 @@ import com.alibaba.fastjson.JSONObject;
import com.yihu.iot.dao.dict.IotSystemDictDao;
import com.yihu.iot.service.common.MyJdbcTemplate;
import com.yihu.jw.entity.iot.dict.IotSystemDictDO;
import com.yihu.jw.restmodel.iot.dict.IotSystemDictVO;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.rm.iot.IotRequestMapping;
import com.yihu.mysql.query.BaseJpaService;
import com.zaxxer.hikari.HikariDataSource;
import com.zaxxer.hikari.HikariPoolMXBean;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.management.JMX;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;
import java.util.*;
/**
@ -27,6 +30,8 @@ public class IotSystemDictService extends BaseJpaService<IotSystemDictDO,IotSyst
    private IotSystemDictDao iotSystemDictDao;
    @Autowired
    private MyJdbcTemplate myJdbcTemplate;
    @Autowired
    HikariDataSource dataSource;
    /**
     * 查询字典
@ -76,12 +81,34 @@ public class IotSystemDictService extends BaseJpaService<IotSystemDictDO,IotSyst
        return MixEnvelop.getSuccess(IotRequestMapping.Company.message_success_create,dictDO);
    }
    public void test(){
        try{
            MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
            ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (" + dataSource.getPoolName() + ")");
            HikariPoolMXBean poolProxy = JMX.newMXBeanProxy(mBeanServer, poolName, HikariPoolMXBean.class);
            if(poolProxy == null) {
                System.out.println("Hikari not initialized,please wait...");
            }else {
                System.out.println("HikariPoolState = "
                        + "Active=[" + String.valueOf(poolProxy.getActiveConnections() + "] "
                        + "Idle=[" + String.valueOf(poolProxy.getIdleConnections() + "] "
                        + "Wait=["+poolProxy.getThreadsAwaitingConnection()+"] "
                        + "Total=["+poolProxy.getTotalConnections()+"]")));
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 根据字典类名获取相关字典数据
     * @param dictName
     * @return
     */
    public List<IotSystemDictDO> getListByDictName(String dictName){
        test();
        long start = System.currentTimeMillis();
        System.out.println("start:"+start);
        List<IotSystemDictDO> systemDictDOList = iotSystemDictDao.findByDictName(dictName);
        for(IotSystemDictDO dictDO : systemDictDOList){
            if(StringUtils.isNotBlank(dictDO.getParentCode())){
@ -90,6 +117,7 @@ public class IotSystemDictService extends BaseJpaService<IotSystemDictDO,IotSyst
                dictDO.setParentName(parentDict.getValue());
            }
        }
        System.out.println("used:"+(System.currentTimeMillis()-start));
        return systemDictDOList;
    }

+ 68 - 0
svr/svr-iot/src/main/java/com/yihu/iot/service/excelImport/DeviceInventoryExcelReader.java

@ -0,0 +1,68 @@
package com.yihu.iot.service.excelImport;
import com.yihu.iot.service.device.IotDeviceService;
import com.yihu.jw.util.excel.poi.AExcelReader;
import org.apache.commons.lang3.StringUtils;
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.Component;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
/**
 * 设备入库批量导入列表-excel解析类
 * Created by yeshijie on 2020/06/03.
 */
@Component
public class DeviceInventoryExcelReader extends AExcelReader {
    @Autowired
    private IotDeviceService deviceService;
    @Override
    public void read(Workbook rwb) throws Exception {
        try{
            errorLs = new ArrayList<>();
            correctLs = new ArrayList<>();
            Iterator<Sheet> sheets = rwb.sheetIterator();
            int rows;
            getRepeat().put("deviceSn", new HashSet<>());
            while (sheets.hasNext()){
                Sheet sheet = sheets.next();
                if ((rows = sheet.getLastRowNum()) == 0) {
                    continue;
                }
                for (int i = 3; i <= rows; i++) {
                    String deviceSn = replaceBlank(getCellCont(sheet, i, 0));
                    if (validate(deviceSn)== 0) {
                        errorLs.add(deviceSn);
                    } else {
                        correctLs.add(deviceSn);
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            throw e;
        }finally {
            if (rwb != null) {
                rwb.close();
            }
        }
    }
    public int validate(String deviceSn) {
        int rs = 0;
        if(StringUtils.isNotEmpty(deviceSn)){
            if(deviceService.findByDeviceSn(deviceSn)!=null){
                return 0;
            }
            return 1;
        }
        return rs;
    }
}