jiazx0107@163.com
2023-09-18 4dc585d5bf2fd0a01602aba0d9fa25adbaf4a7fb
提交仓内抓拍和后台配置
已重命名1个文件
已删除1个文件
已添加6个文件
已修改12个文件
942 ■■■■ 文件已修改
igds-basic/src/main/java/com/ld/igds/timer/ScheduledBasic.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-basic/src/main/java/com/ld/igds/timer/ThScheduled.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-basic/src/main/java/com/ld/igds/timer/WeatherTimerService.java 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/camera/data/ApiCameraResp.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/data/ConfigData.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/file/CoreFileService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/file/impl/CoreFileServiceImpl.java 233 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/manager/InoutEventControlManager.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-security/src/main/java/com/ld/igds/models/SecSnapConf.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-security/src/main/java/com/ld/igds/models/SecSnapDepot.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-security/src/main/java/com/ld/igds/sec/controller/FireController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-security/src/main/java/com/ld/igds/sec/controller/PatrolController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-security/src/main/java/com/ld/igds/sec/service/SecSnapService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-security/src/main/java/com/ld/igds/sec/service/SecurityService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-security/src/main/java/com/ld/igds/sec/service/impl/CoreSecFireServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-security/src/main/java/com/ld/igds/sec/view/SecSnapDepot.view.xml 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-security/src/main/java/com/ld/igds/timer/JobLampService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-security/src/main/java/com/ld/igds/timer/ScheduledSec.java 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/java/com/ld/igds/TestAction.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/application.yml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-basic/src/main/java/com/ld/igds/timer/ScheduledBasic.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.ld.igds.timer;
import com.bstek.bdf2.core.model.DefaultCompany;
import com.ld.igds.common.CoreCommonService;
import com.ld.igds.view.manager.TempManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
 * åŸºç¡€æ¨¡å—标准定时器业务配置
 */
@Slf4j
@Component(ScheduledBasic.BEAN_ID)
public class ScheduledBasic {
    public static final String BEAN_ID = "basic.scheduled";
    @Resource
    private TempManager thManager;
    @Resource
    private CoreCommonService coreCommonService;
    @Resource
    private WeatherTimerService weatherTimerService;
    /**
     * æ¯é—´éš”30分钟执行一次
     */
    @Scheduled(cron = "0 0/30 * * * ?")
    public void scheduled30() {
        //定时获取分机的温湿度检测结果
        doExeTh();
        //定时获取气象信息
        weatherTimerService.doExe();
    }
    /**
     * å®šæ—¶èŽ·å–åˆ†æœºçš„æ¸©æ¹¿åº¦æ£€æµ‹ç»“æžœ
     */
    private void doExeTh() {
        List<DefaultCompany> list = coreCommonService.getCompanyList();
        if (null == list || list.isEmpty()) return;
        try {
            for (DefaultCompany company : list) {
                log.info("===================系统定时获取分机下的温湿度信息-{}=======================", company.getId());
                thManager.scheduledCheck(company.getId());
                Thread.sleep(500);
            }
        } catch (Exception e) {
            e.getStackTrace();
        }
    }
}
igds-basic/src/main/java/com/ld/igds/timer/ThScheduled.java
ÎļþÒÑɾ³ý
igds-basic/src/main/java/com/ld/igds/timer/WeatherTimerService.java
ÎļþÃû´Ó igds-basic/src/main/java/com/ld/igds/timer/WeatherScheduled.java ÐÞ¸Ä
@@ -24,9 +24,9 @@
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@@ -46,7 +46,7 @@
 */
@Slf4j
@Component
public class WeatherScheduled {
public class WeatherTimerService {
    @Resource(name = NotifyWeatherService.BEAN_ID)
    private NotifyWeatherService notifyService;
@@ -74,8 +74,7 @@
    /**
     * å®šæ—¶èŽ·å–æ°”è±¡ä¿¡æ¯ï¼Œè¯·æ³¨æ„ï¼Œç”±äºŽæ°”è±¡æ”¯æŒå¤–ç½‘å’Œè‡ªå®šä¹‰æ°”è±¡ç«™ï¼Œç³»ç»Ÿé»˜è®¤åªæ‰§è¡Œå…¶ä¸­ä¸€ç§æ–¹å¼
     */
    @Scheduled(cron = "0 0/30 * * * ?")
    public void scheduled() {
    public void doExe() {
        log.info("===========================系统定时获获取气象信息======================");
@@ -179,9 +178,9 @@
    private void getWeatherByRkV30(Date date, WeatherConf conf) {
        //若用户、密码、IP地址有一为空则返回
        if(StringUtils.isEmpty(conf.getAccount())
        if (StringUtils.isEmpty(conf.getAccount())
                || StringUtils.isEmpty(conf.getPassword())
                || StringUtils.isEmpty(conf.getIp())){
                || StringUtils.isEmpty(conf.getIp())) {
            return;
        }
@@ -199,15 +198,15 @@
        String body = ans.getBody();
        log.debug("-----当前建大仁科平台获取气象信息-----,返回数据={}", body);
        RkResult response = JSONObject.parseObject(body, RkResult.class);
        if(StringUtils.isEmpty(response.getCode()) || !"1000".equals(response.getCode())){
        if (StringUtils.isEmpty(response.getCode()) || !"1000".equals(response.getCode())) {
            log.error("当前建大仁科平台获取气象信息失败......");
            return;
        }
        List<JSONObject> result = JSON.parseArray(JSONObject.toJSONString(response.getData()), JSONObject.class);
        JSONArray lists = (JSONArray)result.get(0).get("dataItem");
        JSONArray lists = (JSONArray) result.get(0).get("dataItem");
        List<RkDto> list = JSON.parseArray(JSONObject.toJSONString(lists), RkDto.class);
        if(null == list || list.isEmpty()){
        if (null == list || list.isEmpty()) {
            return;
        }
        WeatherInfo info = new WeatherInfo();
@@ -221,55 +220,55 @@
        //根据地址判断选项
        for (RkDto rkDto : list) {
            //温湿度
            if("11".equals(rkDto.getNodeId())){
            if ("11".equals(rkDto.getNodeId())) {
                dataList = rkDto.getRegisterItem();
                for (RkData rkData : dataList) {
                    //温度
                    if("1".equals(rkData.getRegisterId())){
                    if ("1".equals(rkData.getRegisterId())) {
                        info.setTemp(rkData.getData());
                    }
                    //湿度
                    if("2".equals(rkData.getRegisterId())){
                    if ("2".equals(rkData.getRegisterId())) {
                        info.setHumidity(rkData.getData());
                    }
                }
            }
            //风力风速
            if("1".equals(rkDto.getNodeId())){
            if ("1".equals(rkDto.getNodeId())) {
                dataList = rkDto.getRegisterItem();
                for (RkData rkData : dataList) {
                    //风力
                    if("1".equals(rkData.getRegisterId())){
                    if ("1".equals(rkData.getRegisterId())) {
                        info.setWindSpeed(rkData.getData() + "级");
                    }
                    //风速
                    if("2".equals(rkData.getRegisterId())){
                    if ("2".equals(rkData.getRegisterId())) {
                        info.setWindMeter(rkData.getData());
                    }
                }
            }
            //风向
            if("2".equals(rkDto.getNodeId())){
            if ("2".equals(rkDto.getNodeId())) {
                dataList = rkDto.getRegisterItem();
                for (RkData rkData : dataList) {
                    //风向
                    if("1".equals(rkData.getRegisterId())){
                    if ("1".equals(rkData.getRegisterId())) {
                        info.setWindDirection(rkData.getData());
                    }
                }
            }
            //大气压
            if("14".equals(rkDto.getNodeId())){
            if ("14".equals(rkDto.getNodeId())) {
                dataList = rkDto.getRegisterItem();
                for (RkData rkData : dataList) {
                    //大气压
                    if("2".equals(rkData.getRegisterId())){
                    if ("2".equals(rkData.getRegisterId())) {
                        info.setPressure(rkData.getData());
                    }
                }
            }
            //雨量
            if("21".equals(rkDto.getNodeId())){
            if ("21".equals(rkDto.getNodeId())) {
                dataList = rkDto.getRegisterItem();
                for (RkData rkData : dataList) {
//                    //瞬时雨量
@@ -277,33 +276,33 @@
//                        info.setRainfall(rkData.getData());
//                    }
                    //当前雨量
                    if("2".equals(rkData.getRegisterId())){
                    if ("2".equals(rkData.getRegisterId())) {
                        info.setRainfall(rkData.getData());
                    }
                }
            }
            //有无雨雪
            if("16".equals(rkDto.getNodeId())){
            if ("16".equals(rkDto.getNodeId())) {
                weatherList = rkDto.getRegisterItem();
            }
        }
        for (RkData rkData : weatherList) {
            //天气
            if("1".equals(rkData.getRegisterId())){
            if ("1".equals(rkData.getRegisterId())) {
                info.setWeather(rkData.getData());
                //有雨雪时判断当前雨量
                if("有雨雪".equals(rkData.getData())){
                if ("有雨雪".equals(rkData.getData())) {
                    Double rainfall = Double.valueOf(info.getRainfall());
                    if(rainfall <= 10){
                    if (rainfall <= 10) {
                        info.setWeather("小雨");
                    }
                    if(rainfall > 10 && rainfall <= 25){
                    if (rainfall > 10 && rainfall <= 25) {
                        info.setWeather("中雨");
                    }
                    if(rainfall > 25 && rainfall <= 50){
                    if (rainfall > 25 && rainfall <= 50) {
                        info.setWeather("大雨");
                    }
                    if(rainfall > 50){
                    if (rainfall > 50) {
                        info.setWeather("暴雨");
                    }
                }
@@ -316,6 +315,7 @@
    /**
     * èŽ·å–èº«ä»½è®¤è¯çš„æŽˆæƒaccessToken
     *
     * @param conf
     * @return
     */
@@ -334,7 +334,7 @@
            }
            log.info("获取的身份认证信息={}", response);
            if(StringUtils.isEmpty(response.getCode()) || !"1000".equals(response.getCode())){
            if (StringUtils.isEmpty(response.getCode()) || !"1000".equals(response.getCode())) {
                log.error("当前建大仁科平台获取身份认证信息失败......");
                return null;
            }
@@ -345,9 +345,10 @@
            token = (String) result.get("token");
            //将token存入缓存,
            redisUtil.set(key, token, 2*60*60);
            redisUtil.set(key, token, 2 * 60 * 60);
        }
        return token;
    }
}
igds-core/src/main/java/com/ld/igds/camera/data/ApiCameraResp.java
@@ -13,6 +13,8 @@
    private String msg;
    private String fileName;
    /**
     * æ’­æ”¾åœ°å€
     */
igds-core/src/main/java/com/ld/igds/data/ConfigData.java
@@ -36,4 +36,10 @@
    @Value("${igds.weather-path}")
    private String weatherPath;
    /**
     * æŠ“拍时间配置
     */
    @Value("${igds.snap-time}")
    private int snapTime = -1;
}
igds-core/src/main/java/com/ld/igds/file/CoreFileService.java
@@ -39,6 +39,16 @@
     */
    public String getInoutFilePath(Date date);
    /**
     * æ ¹æ®æ—¶é—´èŽ·å–ç³»ç»Ÿé…ç½®çš„ä»“å†…è§†é¢‘æŠ“æ‹è·¯å¾„
     * ç³»ç»Ÿé™„件路径以yyyyMM为目录进行划分
     *
     * @param date
     * @return
     */
    public String getSnapFilePath(Date date);
    /**
     * æ ¹æ®æ—¶é—´èŽ·å–ç³»ç»Ÿé…ç½®çš„é™„ä»¶è·¯å¾„åœ°å€
     * ç³»ç»Ÿé™„件路径以yyyyMM为目录进行划分
igds-core/src/main/java/com/ld/igds/file/impl/CoreFileServiceImpl.java
@@ -21,138 +21,149 @@
@Component
public class CoreFileServiceImpl implements CoreFileService {
    @Autowired
    private FileServiceMapper fileServiceMapper;
    @Autowired
    private FileServiceMapper fileServiceMapper;
    @Autowired
    private ConfigData configData;
    @Autowired
    private ConfigData configData;
    @Override
    public String getInoutFilePath(Date date) {
        if (null == date) date = new Date();
        String basePath = configData.getFilePath() + "INOUT/" + DateFormatUtils.format(date, "yyyyMM") + "/";
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
    @Override
    public String getInoutFilePath(Date date) {
        if (null == date) date = new Date();
        String basePath = configData.getFilePath() + "INOUT/" + DateFormatUtils.format(date, "yyyyMM") + "/";
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
    @Override
    public String getCommonFilePath(Date date) {
        if (null == date)
            date = new Date();
    @Override
    public String getSnapFilePath(Date date) {
        if (null == date) date = new Date();
        String basePath = configData.getFilePath() + "SNAP/" + DateFormatUtils.format(date, "yyyyMM") + "/";
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
        String basePath = configData.getFilePath() + "COMMON/" + DateFormatUtils.format(date, "yyyyMM") + "/";
    @Override
    public String getCommonFilePath(Date date) {
        if (null == date)
            date = new Date();
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
        String basePath = configData.getFilePath() + "COMMON/" + DateFormatUtils.format(date, "yyyyMM") + "/";
    @Override
    public String getTempFilePath() {
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
        String basePath = configData.getFilePath() + "TEMP/";
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
    @Override
    public String getTempFilePath() {
    @Override
    public void baseImg2Disk(String basePath, String fileName, String imgData) {
        Base64Util.generateImage(imgData, basePath + fileName);
    }
        String basePath = configData.getFilePath() + "TEMP/";
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
    @Override
    public void addRecord(FileData fileData) {
        fileServiceMapper.addFile(fileData);
    }
    @Override
    public void baseImg2Disk(String basePath, String fileName, String imgData) {
        Base64Util.generateImage(imgData, basePath + fileName);
    }
    @Override
    public void saveInoutFiles(List<FileData> files, String companyId,
            String bizId, String bizTag) throws Exception, SQLException {
    @Override
    public void addRecord(FileData fileData) {
        fileServiceMapper.addFile(fileData);
    }
        if (null == files || files.size() == 0) return;
    @Override
    public void saveInoutFiles(List<FileData> files, String companyId,
                               String bizId, String bizTag) throws Exception, SQLException {
        for (FileData data : files) {
            // å¦‚果没有附件名称,则不保存附件信息
            if (StringUtils.isEmpty(data.getFileName())) {
                continue;
            }
            data.setCreateTime(new Date());
            data.setBizId(bizId);
            if(StringUtils.isNotEmpty(bizTag)){
                data.setBizTag(bizTag);
            }
            data.setCompanyId(companyId);
            data.setFileId(ContextUtil.getUUID());
            fileServiceMapper.addFile(data);
        }
    }
        if (null == files || files.size() == 0) return;
    @Override
    public List<FileData> listFile(String companyId, String bizId) {
        if (StringUtils.isEmpty(companyId)) {
            companyId = ContextUtil.getDefaultCompanyId();
        }
        for (FileData data : files) {
            // å¦‚果没有附件名称,则不保存附件信息
            if (StringUtils.isEmpty(data.getFileName())) {
                continue;
            }
            data.setCreateTime(new Date());
            data.setBizId(bizId);
            if (StringUtils.isNotEmpty(bizTag)) {
                data.setBizTag(bizTag);
            }
            data.setCompanyId(companyId);
            data.setFileId(ContextUtil.getUUID());
            fileServiceMapper.addFile(data);
        }
    }
        if (StringUtils.isEmpty(bizId))
            return null;
    @Override
    public List<FileData> listFile(String companyId, String bizId) {
        if (StringUtils.isEmpty(companyId)) {
            companyId = ContextUtil.getDefaultCompanyId();
        }
        List<FileData> listFile = fileServiceMapper.listFile(companyId, bizId);
        if (StringUtils.isEmpty(bizId))
            return null;
        if (null == listFile || listFile.isEmpty())
            return null;
        List<FileData> listFile = fileServiceMapper.listFile(companyId, bizId);
        return listFile;
    }
        if (null == listFile || listFile.isEmpty())
            return null;
    @Override
    public void delFile(String fileId) {
        fileServiceMapper.delFile(fileId);
    }
        return listFile;
    }
    @Override
    public void delFile(String fileId) {
        fileServiceMapper.delFile(fileId);
    }
    @Override
    public void saveFiles(List<FileInfo> files, String bizId, String bizTag) {
        if (null == files || files.size() == 0){
            return;
        }
        FileData fileData = null;
        for (FileInfo data : files) {
            if (StringUtils.isEmpty(data.getFileName())) {
                continue;
            }
            if (StringUtils.isNotEmpty(data.getBizId())) {
                continue;
            }
            if (null == data.getCreateTime()) {
                data.setCreateTime(new Date());
            }
            if (null == data.getBizTag()) {
                data.setBizTag(bizTag);
            }
    @Override
    public void saveFiles(List<FileInfo> files, String bizId, String bizTag) {
        if (null == files || files.size() == 0) {
            return;
        }
        FileData fileData = null;
        for (FileInfo data : files) {
            if (StringUtils.isEmpty(data.getFileName())) {
                continue;
            }
            if (StringUtils.isNotEmpty(data.getBizId())) {
                continue;
            }
            if (null == data.getCreateTime()) {
                data.setCreateTime(new Date());
            }
            if (null == data.getBizTag()) {
                data.setBizTag(bizTag);
            }
            data.setBizId(bizId);
            data.setCompanyId(ContextUtil.getCompanyId());
            data.setBizId(bizId);
            data.setCompanyId(ContextUtil.getCompanyId());
            if (null == data.getFileId()) {
                data.setFileId(ContextUtil.getUUID());
            }
            if (null == data.getFileId()) {
                data.setFileId(ContextUtil.getUUID());
            }
            fileData = new FileData();
            fileData.setFileId(data.getFileId());
            fileData.setBizId(data.getBizId());
            fileData.setBizTag(data.getBizTag());
            fileData.setCompanyId(data.getCompanyId());
            fileData.setFileName(data.getFileName());
            fileData.setCreateTime(data.getCreateTime());
            fileServiceMapper.addFile(fileData);
        }
    }
            fileData = new FileData();
            fileData.setFileId(data.getFileId());
            fileData.setBizId(data.getBizId());
            fileData.setBizTag(data.getBizTag());
            fileData.setCompanyId(data.getCompanyId());
            fileData.setFileName(data.getFileName());
            fileData.setCreateTime(data.getCreateTime());
            fileServiceMapper.addFile(fileData);
        }
    }
}
igds-inout/src/main/java/com/ld/igds/inout/manager/InoutEventControlManager.java
@@ -126,27 +126,7 @@
    }
    /**
     * @param param
     * @return
     */
//    public String noticeWeightDone(ApiInoutData param) {
//        //获取称重主控器配置
//        InoutConf conf = getWeightGateway(param.getCompanyId(), param.getDeptId(), param.getSort());
//
//        if (null == conf) {
//            return "称重主控未配置,支持失败";
//        }
//
//        ApiInoutData apiData = new ApiInoutData(conf);
//        apiData.setPlateNum(param.getPlateNum());
//        apiData.setTime(new Date());
//
//        ApiInoutService inoutApiService = apiInoutManager.getApiService(conf.getProtocol());
//
//        // return inoutApiService.noticeWeightDone(apiData); TODO
//        return null;
//    }
    /**
     * å‡ºå…¥åº“抓拍
igds-security/src/main/java/com/ld/igds/models/SecSnapConf.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.ld.igds.models;
import com.bstek.dorado.annotation.PropertyDef;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
 * ä»“内视频抓拍配置
 */
@Data
@Entity
@Table(name = "D_SEC_SNAP_CONF")
public class SecSnapConf {
    @Id
    @Column(name = "ID_", length = 40)
    @PropertyDef(label = "主键")
    private String id;
    @Column(name = "COMPANY_ID_", length = 10)
    @PropertyDef(label = "组织编码")
    private String companyId;
    @Column(name = "DEPT_ID_", length = 30)
    @PropertyDef(label = "所属分库")
    private String deptId;
    @Column(name = "DEPOT_ID_", length = 50)
    @PropertyDef(label = "所属仓库")
    private String depotId;
    @Column(name = "CAMERA_ID_", length = 50)
    @PropertyDef(label = "关联摄像头")
    private String cameraId;
    @Column(name = "UPDATE_TIME_", length = 1)
    @PropertyDef(label = "更新时间")
    private Date updateTime;
}
igds-security/src/main/java/com/ld/igds/models/SecSnapDepot.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.ld.igds.models;
import com.alibaba.fastjson.annotation.JSONField;
import com.bstek.dorado.annotation.PropertyDef;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
 * ä»“内视频图像数据表
 */
@Data
@Entity
@Table(name = "D_SEC_SNAP_DEPOT")
public class SecSnapDepot {
    @Id
    @Column(name = "ID_", length = 40)
    @PropertyDef(label = "主键")
    private String id;
    @Column(name = "COMPANY_ID_", length = 10)
    @PropertyDef(label = "组织编码")
    private String companyId;
    @Column(name = "DEPT_ID_", length = 30)
    @PropertyDef(label = "所属分库")
    private String deptId;
    @Column(name = "DEPOT_ID_", length = 50)
    @PropertyDef(label = "所属仓库")
    private String depotId;
    @Column(name = "CAMERA_ID_", length = 50)
    @PropertyDef(label = "关联摄像头")
    private String cameraId;
    @Column(name = "RESULT_", length = 30)
    @PropertyDef(label = "抓拍结果")
    private String result="SUCCESS";
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "UPDATE_TIME_", length = 1)
    @PropertyDef(label = "抓拍时间")
    private Date updateTime;
    @Column(name = "FILE_SUFFIX_", length = 6)
    @PropertyDef(label = "图像文件后缀名")
    private String fileSuffix = "jpg";
    @Column(name = "FILE_NAME_", length = 100)
    @PropertyDef(label = "文件名称")
    private String fileName;
    @Column(name = "PRESET_ ", length = 4)
    @PropertyDef(label = "预置位编号")
    private String preset;
}
igds-security/src/main/java/com/ld/igds/sec/controller/FireController.java
@@ -8,7 +8,6 @@
import com.ld.igds.sec.dto.SecurityParam;
import com.ld.igds.sec.manager.SecManager;
import com.ld.igds.util.ContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
@@ -17,7 +16,6 @@
/**
 * å®‰é˜²--消防管理控制层
 */
@Slf4j
@RestController
@RequestMapping("basic/security")
public class FireController {
igds-security/src/main/java/com/ld/igds/sec/controller/PatrolController.java
@@ -2,7 +2,6 @@
import com.ld.igds.sec.dto.SecPatrolRecordDto;
import com.ld.igds.sec.manager.SecManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
@@ -11,7 +10,6 @@
/**
 * å®‰é˜²--电子巡更管理控制层
 */
@Slf4j
@RestController
@RequestMapping("basic/security")
public class PatrolController {
igds-security/src/main/java/com/ld/igds/sec/service/SecSnapService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.ld.igds.sec.service;
import com.bstek.bdf2.core.orm.hibernate.HibernateDao;
import com.ld.igds.models.SecSnapConf;
import com.ld.igds.models.SecSnapDepot;
import com.ld.igds.util.ContextUtil;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.Session;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class SecSnapService extends HibernateDao {
    /**
     * æ ¹æ®æ¡ä»¶èŽ·å–é…ç½®ç±»åˆ«
     *
     * @param companyId ç»„织编码,不可为空
     * @param deptId    æ‰€å±žåˆ†åº“,可为空
     * @return æŸ¥è¯¢ç»“æžœ
     */
    public List<SecSnapConf> listSnapConf(String companyId, String deptId) {
        String hql = " from " + SecSnapConf.class.getName()
                + " where companyId=:companyId";
        Map<String, Object> args = new HashMap<>();
        args.put("companyId", companyId);
        if (StringUtils.isNotEmpty(deptId)) {
            hql += " and deptId =:deptId";
            args.put("deptId", deptId);
        }
        return this.query(hql, args);
    }
    public void addData(SecSnapConf snapConf, String fileName, String result) {
        Session session = this.getSessionFactory().openSession();
        try {
            SecSnapDepot data = new SecSnapDepot();
            data.setId(ContextUtil.getUUID());
            data.setCompanyId(snapConf.getCompanyId());
            data.setDeptId(snapConf.getDeptId());
            data.setCameraId(snapConf.getCameraId());
            data.setResult(result);
            data.setUpdateTime(new Date());
            data.setFileSuffix("jpg");
            data.setFileName(fileName);
            session.save(data);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            session.flush();
            session.close();
        }
    }
}
igds-security/src/main/java/com/ld/igds/sec/service/SecurityService.java
@@ -11,6 +11,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -19,7 +20,7 @@
@Component
public class SecurityService extends HibernateDao {
    @Autowired
    @Resource
    private CoreSecCameraService coreSecCameraService;
    public List<SecCamera> listCamera(Map<String, Object> param) {
igds-security/src/main/java/com/ld/igds/sec/service/impl/CoreSecFireServiceImpl.java
@@ -16,8 +16,6 @@
    @Autowired
    private SecFireServiceMapper serviceMapper;
    @Autowired
    private RedisUtil redisUtil;
    @Override
    public List<SecFireDto> getAllFire(String companyId) {
igds-security/src/main/java/com/ld/igds/sec/view/SecSnapDepot.view.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<ViewConfig>
  <Arguments/>
  <Context/>
  <Model>
    <DataType name="dtMain">
      <Property name="creationType">com.ld.igds.models.SecSnapDepot</Property>
      <PropertyDef name="id">
        <Property></Property>
        <Property name="label">主键</Property>
      </PropertyDef>
      <PropertyDef name="companyId">
        <Property></Property>
        <Property name="label">组织编码</Property>
      </PropertyDef>
      <PropertyDef name="deptId">
        <Property></Property>
        <Property name="label">所属分库</Property>
      </PropertyDef>
      <PropertyDef name="depotId">
        <Property></Property>
        <Property name="label">所属仓库</Property>
      </PropertyDef>
      <PropertyDef name="cameraId">
        <Property></Property>
        <Property name="label">关联摄像头</Property>
      </PropertyDef>
      <PropertyDef name="updateTime">
        <Property name="dataType">Date</Property>
        <Property name="label">更新时间</Property>
      </PropertyDef>
      <PropertyDef name="zpsj">
        <Property name="dataType">Date</Property>
        <Property name="label">抓拍时间</Property>
      </PropertyDef>
      <PropertyDef name="txwjhzm">
        <Property></Property>
        <Property name="label">图像文件后缀名</Property>
      </PropertyDef>
      <PropertyDef name="wjmc">
        <Property></Property>
        <Property name="label">文件名称</Property>
      </PropertyDef>
      <PropertyDef name="yzwbh">
        <Property></Property>
        <Property name="label">预置位编号</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtConf">
      <Property name="creationType">com.ld.igds.models.SecSnapConf</Property>
      <PropertyDef name="id">
        <Property></Property>
        <Property name="label">主键</Property>
      </PropertyDef>
      <PropertyDef name="companyId">
        <Property></Property>
        <Property name="label">组织编码</Property>
      </PropertyDef>
      <PropertyDef name="deptId">
        <Property></Property>
        <Property name="label">所属分库</Property>
      </PropertyDef>
      <PropertyDef name="depotId">
        <Property></Property>
        <Property name="label">所属仓库</Property>
      </PropertyDef>
      <PropertyDef name="cameraId">
        <Property></Property>
        <Property name="label">关联摄像头</Property>
      </PropertyDef>
      <PropertyDef name="updateTime">
        <Property name="dataType">Date</Property>
        <Property name="label">更新时间</Property>
      </PropertyDef>
    </DataType>
  </Model>
  <View layout="padding:5;regionPadding:5">
    <Property name="packages">font-awesome,css-common</Property>
    <DataSet id="dsMain">
      <Property name="loadMode">lazy</Property>
      <Property name="dataType">[dtMain]</Property>
    </DataSet>
    <DataSet id="dsConf">
      <Property name="dataType">[dtConf]</Property>
    </DataSet>
    <ToolBar>
      <ToolBarLabel>
        <Property name="text">菜单栏:</Property>
      </ToolBarLabel>
      <Fill/>
      <ToolBarButton>
        <ClientEvent name="onClick">view.get(&quot;#dialogConf&quot;).show();&#xD;
</ClientEvent>
        <Property name="caption">抓拍配置</Property>
      </ToolBarButton>
    </ToolBar>
    <Container layout="regionPadding:10" layoutConstraint="center">
      <Property name="exClassName">bg-color</Property>
      <DataGrid layoutConstraint="center padding:5px">
        <Property name="dataSet">dsMain</Property>
        <Property name="readOnly">true</Property>
        <RowNumColumn>
          <Property name="width">50</Property>
        </RowNumColumn>
        <DataColumn name="depotId">
          <Property name="property">depotId</Property>
        </DataColumn>
        <DataColumn name="updateTime">
          <Property name="property">updateTime</Property>
        </DataColumn>
        <DataColumn name="zpsj">
          <Property name="property">zpsj</Property>
        </DataColumn>
        <DataColumn name="txwjhzm">
          <Property name="property">txwjhzm</Property>
        </DataColumn>
        <DataColumn name="wjmc">
          <Property name="property">wjmc</Property>
        </DataColumn>
        <DataColumn name="yzwbh">
          <Property name="property">yzwbh</Property>
        </DataColumn>
      </DataGrid>
    </Container>
    <Dialog id="dialogConf">
      <Buttons/>
      <Children>
        <ToolBar>
          <ToolBarButton>
            <Property name="caption">新增</Property>
          </ToolBarButton>
        </ToolBar>
        <DataGrid>
          <Property name="dataSet">dsConf</Property>
          <DataColumn name="depotId">
            <Property name="property">depotId</Property>
          </DataColumn>
          <DataColumn name="cameraId">
            <Property name="property">cameraId</Property>
          </DataColumn>
          <DataColumn name="updateTime">
            <Property name="property">updateTime</Property>
          </DataColumn>
        </DataGrid>
      </Children>
      <Tools/>
    </Dialog>
  </View>
</ViewConfig>
igds-security/src/main/java/com/ld/igds/timer/JobLampService.java
@@ -15,6 +15,8 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -28,9 +30,9 @@
@Service(Constant.JOB_BEAN_LAMP)
public class JobLampService implements Job {
    @Autowired
    @Resource
    private LampManager lampManager;
    @Autowired
    @Resource
    private CoreDeviceService coreDeviceService;
    @Override
igds-security/src/main/java/com/ld/igds/timer/ScheduledSec.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@
package com.ld.igds.timer;
import com.bstek.bdf2.core.model.DefaultCompany;
import com.ld.igds.camera.ApiCameraManager;
import com.ld.igds.camera.CameraUtil;
import com.ld.igds.camera.data.ApiCameraResp;
import com.ld.igds.camera.data.ApiSnapReq;
import com.ld.igds.common.CoreCommonService;
import com.ld.igds.data.ConfigData;
import com.ld.igds.file.CoreFileService;
import com.ld.igds.models.SecCamera;
import com.ld.igds.models.SecSnapConf;
import com.ld.igds.models.SecSnapDepot;
import com.ld.igds.models.SnapSer;
import com.ld.igds.sec.service.CoreSecCameraService;
import com.ld.igds.sec.service.SecSnapService;
import com.ld.igds.sec.service.SecurityService;
import com.ld.igds.util.ContextUtil;
import com.ld.igds.util.DateUtil;
import com.ld.igds.view.manager.TempManager;
import com.ld.igds.view.service.SnapSerService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * å®‰é˜²æ¨¡å—标定时器配置
 */
@Slf4j
@Component(ScheduledSec.BEAN_ID)
public class ScheduledSec {
    public static final String BEAN_ID = "sec.scheduled";
    @Resource
    private ConfigData configData;
    @Resource
    private SecSnapService secSnapService;
    @Resource
    private CoreSecCameraService coreSecCameraService;
    @Resource
    private SnapSerService snapSerService;
    @Resource
    private CoreFileService fileService;
    @Resource
    private ApiCameraManager apiCameraManager;
    /**
     * æ¯é—´éš”30分钟执行一次
     */
    @Scheduled(cron = "0 0/30 * * * ?")
    public void scheduled30() {
        //执行抓拍判断
        doExeSnap(new Date());
    }
    /**
     * å®šæ—¶æ‰§è¡ŒæŠ“拍
     */
    private void doExeSnap(Date date) {
        if (configData.getSnapTime() < 0) return;
        //获取当前系统时间
        int curHour = DateUtil.getHour(date);
        if (curHour != configData.getSnapTime()) return;
        log.info("===================系统执行定时仓内视频抓拍==================");
        try {
            List<SecSnapConf> list = secSnapService.listSnapConf(configData.getDefaultCompanyId(), null);
            if (null == list || list.isEmpty()) return;
            SecCamera secCamera;
            Map<String, SnapSer> snapSerMap = new HashMap<>();
            SnapSer snapSer;
            for (SecSnapConf snapConf : list) {
                if (null == snapConf.getDepotId()) continue;
                secCamera = coreSecCameraService.getCameraById(snapConf.getCompanyId(), snapConf.getCameraId());
                if (null == secCamera) continue;
                snapSer = snapSerMap.get(snapConf.getDeptId());
                if (null == snapSer) {
                    snapSer = snapSerService.getCacheByDeptId(snapConf.getDeptId());
                    snapSerMap.put(snapConf.getDeptId(), snapSer);
                }
                if (null == snapSer) {
                    log.error("------------抓拍为配置抓拍分机----------");
                    continue;
                }
                doExeSnapToData(secCamera, snapSer, snapConf);
                Thread.sleep(500);
            }
        } catch (Exception e) {
            log.error("----------抓拍后台出错---------{}", e);
        }
    }
    private void doExeSnapToData(SecCamera secCamera, SnapSer snapSer, SecSnapConf snapConf) {
        ApiSnapReq req = new ApiSnapReq();
        req.setCompanyId(secCamera.getCompanyId());
        req.setDeptId(secCamera.getDeptId());
        req.setSn(secCamera.getSn());
        req.setSnapType(secCamera.getSnapType());
        req.setPlayType(secCamera.getPlayType());
        req.setSerSn(snapSer.getSn());
        req.setCameraName(secCamera.getName());
        req.setBizId(null);
        req.setMediaAddr(CameraUtil.updateMediaAddr(secCamera.getMediaAddr(), secCamera.getLoginId(),
                secCamera.getPwd(), secCamera.getIpIn(), secCamera.getPortInC(), secCamera.getChanNum()));
        String filePath = fileService.getSnapFilePath(new Date());
        req.setFilePath(filePath);
        //调整附件名称,避免出现中文
        String fileName = snapConf.getDepotId() + "_" + ContextUtil.getTimeId(1000) + ".jpg";
        req.setFileName(fileName);
        //执行抓拍
        ApiCameraResp resp = apiCameraManager.getApiCameraService(secCamera.getPlayType()).snapImg(req);
        resp.setFileName(fileName);
        //执行记录保存
        secSnapService.addData(snapConf, fileName, resp.getCode());
    }
}
igds-web/src/main/java/com/ld/igds/TestAction.java
@@ -11,7 +11,7 @@
import com.ld.igds.grain.service.CoreGrainService;
import com.ld.igds.models.WeatherConf;
import com.ld.igds.models.WeatherInfo;
import com.ld.igds.timer.WeatherScheduled;
import com.ld.igds.timer.WeatherTimerService;
import com.ld.igds.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -37,7 +37,7 @@
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private WeatherScheduled weatherScheduled;
    private WeatherTimerService weatherTimerService;
    @Override
    public String getUrl() {
@@ -137,7 +137,7 @@
        }
        if (t.equals("weather11")) {
            weatherScheduled.scheduled();
            weatherTimerService.doExe();
        }
    }
@@ -168,7 +168,7 @@
            log.info("-----测试调用气象----deptId={},cityId={}", deptId, cityId);
            Date date = new Date();
            WeatherInfo info = weatherScheduled.getWeatherByWeb(date, conf);
            WeatherInfo info = weatherTimerService.getWeatherByWeb(date, conf);
            if (null == info) {
                response.getWriter().print("MSG:ERROR");
            } else {
igds-web/src/main/resources/application.yml
@@ -1,7 +1,7 @@
##########################  Server   ########################## ä¸¹æ£±åŸŽå…³çœç²®é£Ÿå‚¨å¤‡åº“
spring:
  profiles:
    active: linux
    active: dev
  application:
    name: igds
  main:
@@ -47,6 +47,8 @@
    phone: 400-627-1116
    website: http://www.fzzygf.com
    address: éƒ‘州市高新区长椿路11号河南省国家大学科技园孵化1号楼
    ##仓内视频抓拍时间配置0-24
    snap-time: 12
  file-path: D:/IGDS/FILE/
  ## æŽ¨é€å¾®ä¿¡å¹³å°çš„地址
  warn-path: http://124.71.162.207:8299/igds-wx/gateway