deb8a2c32ba0cb7a88819b54d720418cdc2f7ebb..a23f3acdf2a09dd056778d2217964a1878b66ea6
2026-03-25 sgj
大屏首页,AI事件统计,添加当日库区网关掉线的针对文案表述
a23f3a 对比 | 目录
2026-03-25 sgj
监管gis,两侧背景图颜色调整
a1282a 对比 | 目录
2026-03-25 sgj
gis树桩菜单修复
8bb88e 对比 | 目录
已修改4个文件
已添加1个文件
575 ■■■■■ 文件已修改
fzzy-igdss-web/src/main/java/com/fzzy/group/GroupController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/group/manager/GroupManager.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/group/gis_modeling.css 454 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/group/index.js 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/group/gis_modeling.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/group/GroupController.java
@@ -157,8 +157,7 @@
        List<GroupDeptData> deptList = groupManager.getDeptData(user.getCompanyId());
        view.put("deptList", deptList);
        String deptId = (deptList != null && !deptList.isEmpty()) ? deptList.get(0).getDeptId() : null;
//        view.put("defaultDeptId", deptId != null ? deptId : "00");
        view.put("defaultDeptId","5372001001");
        view.put("defaultDeptId", deptId != null ? deptId : "5372001001");
        //获取所有仓库
        List<GroupDepotData> depotList = groupManager.getDepotData(user.getCompanyId());
        view.put("depotList", depotList);
fzzy-igdss-web/src/main/java/com/fzzy/group/manager/GroupManager.java
@@ -21,6 +21,7 @@
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @Description
@@ -51,9 +52,12 @@
    private SecCameraService cameraService;
    @Resource
    private BankService bankService;
    @Resource
    private PledgeContractService pledgeContractService;
    @Resource
    private PledgeContractDepotService pledgeContractDepotService;
    @Resource
    private GatewaySerService gatewaySerService;
    /**
     * èŽ·å–çœåŠä¸‹å±žå¸‚å·žé›†åˆ
@@ -132,11 +136,11 @@
        if (null == area) {
            return null;
        }
        List<DicArea> areaChildren =  new ArrayList<>();
        List<DicArea> areaChildren = new ArrayList<>();
        List<DicArea> list = new ArrayList<>();
        if (Constant.AREA_TYPE_1.equals(area.getType())) {
           //查询所有的质押合同
            //查询所有的质押合同
            List<PledgeContract> pledgeContractList = pledgeContractService.listAll(null);
            //查询所有的库区
            List<Dept> depotList = deptService.listDept(null, ContextUtil.getCompanyId(), null);
@@ -150,7 +154,15 @@
            for (Dept dept : depotList) {
                Boolean isPledge = false;
                for (PledgeContract pledgeContract : pledgeContractList) {
                    if( dept.getId().equals(pledgeContract.getPledgeDept())){
                    IgdsBaseParam param = new IgdsBaseParam();
                    param.setParentId(pledgeContract.getId());
                    List<PledgeContractDepot> pledgeContractDepots = pledgeContractDepotService.listAll(param);
                    if (null == pledgeContractDepots || pledgeContractDepots.isEmpty()) {
                        continue;
                    }
                    //找到pledgeContractDepots中的deptId集合,并去重
                    List<String> deptIdList = pledgeContractDepots.stream().map(PledgeContractDepot::getPledgeDept).distinct().collect(Collectors.toList());
                    if (deptIdList.contains(dept.getId())) {
                        //从list中找到当前质押银行的数据
                        DicArea pledgeBank = null;
                        int indexBank = -1;
@@ -161,11 +173,11 @@
                                break;
                            }
                        }
                        if( null == pledgeBank){
                        if (null == pledgeBank) {
                            //未找到质押银行数据则新建
                            pledgeBank = new DicArea();
                            pledgeBank.setCode(pledgeContract.getPledgeBank());
                            pledgeBank.setName("质押银行_"+pledgeContract.getPledgeBank());
                            pledgeBank.setName("质押银行_" + pledgeContract.getPledgeBank());
                            //从银行数据中找到质押银行的信息
                            for (Bank bank : bankList) {
                                if (pledgeContract.getPledgeBank().equals(bank.getId())) {
@@ -184,9 +196,9 @@
                            pledgeBank.getChildren().add(deptDic);
                            //新增质押银行数据到list中
                            areaChildren.add(pledgeBank);
                            isPledge=true;
                            isPledge = true;
                            break;
                        }else{
                        } else {
                            //添加质押银行下的库区数据
                            DicArea deptDic = new DicArea();
                            deptDic.setCode(dept.getId());
@@ -198,16 +210,14 @@
                            }
                            pledgeBank.getChildren().add(deptDic);
                            //更新list中的质押银行数据
                            areaChildren.set(indexBank,pledgeBank);
                            isPledge=true;
                            areaChildren.set(indexBank, pledgeBank);
                            isPledge = true;
                            break;
                        }
                    }
                }
                if(!isPledge){
                if (!isPledge) {
                    DicArea deptDic = new DicArea();
                    deptDic.setCode(dept.getId());
                    deptDic.setName(dept.getKqmc());
@@ -220,7 +230,7 @@
                }
            }
            List<DicArea> defaultBankChildren = defaultBank.getChildren();
            if (defaultBankChildren.size()>0) {
            if (defaultBankChildren.size() > 0) {
                areaChildren.add(defaultBank);
            }
            area.setChildren(areaChildren);
@@ -511,7 +521,11 @@
                        }
                    }
                }
                //判断网关是否在线
                GatewaySer cacheSerByDeptId = gatewaySerService.getCacheSerByDeptId(dept.getId());
                if (null == cacheSerByDeptId || (null != cacheSerByDeptId && StringUtils.isNotBlank(cacheSerByDeptId.getStatus()) && cacheSerByDeptId.getStatus().equals(Constant.YN_N))) {
                    deptData.setDailyTotal(-1);
                }
                list.add(deptData);
            }
        }
@@ -588,7 +602,6 @@
    }
    public GroupGisData getGisDataByCompanyId() {
        GroupGisData groupGisData = new GroupGisData();
@@ -651,6 +664,7 @@
        return groupGisData;
    }
    /**
     * å¤§å±é¦–页-抓拍跟踪信息
     *
fzzy-igdss-web/src/main/resources/static/group/gis_modeling.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,454 @@
@font-face {
    font-family: DINCond-Bold;
    src: url('../fonts/DINCond-Bold.otf');
}
.i-nav3.on {
    background-image: url(../img/web/group/c-btn3.png);
}
.c-main {
    position: relative;
    height: 910px;
}
.c-left {
    position: absolute;
    top: 10px;
    left: 0;
    padding-left: 20px;
    transition: .4s;
}
.c-left.hidden {
    transform: translateX(-518px);
}
.c-right.hidden {
    transform: translateX(380px);
}
.hidden .o-btn {
    transition: .4s;
    opacity: 1;
    visibility: visible;
}
.c-left .inner {
    padding: 90px 20px 20px;
    width: 518px;
    height: 910px;
    /*background: url(../img/web/group/cd-bg1.png) no-repeat center;*/
    background: linear-gradient(to top, rgba(6, 35, 77, 0.5), rgba(6, 35, 77, 0.1)), url(../img/web/group/cd-bg1.png);
    background-size: 100% 100%;
    box-sizing: border-box;
}
.c-right {
    position: absolute;
    top: 0;
    right: 0;
    padding-right: 12px;
    transition: .4s;
}
.c-right .inner {
    padding-top: 80px;
    width: 399px;
    height: 910px;
    /*background: url(../img/web/group/cd-bg2.png) no-repeat center;*/
    background: linear-gradient(to top, rgba(6, 35, 77, 0.5), rgba(6, 35, 77, 0.1)), url(../img/web/group/cd-bg2.png);
    background-size: 100% 100%;
    box-sizing: border-box;
}
.c-left .close {
    cursor: pointer;
    width: 45px;
    height: 45px;
    position: absolute;
    top: 10px;
    right: 35px;
}
.c-right .close {
    cursor: pointer;
    width: 45px;
    height: 45px;
    position: absolute;
    top: 10px;
    right: 40px;
}
.o-btn {
    position: absolute;
    top: 50%;
    width: 89px;
    cursor: pointer;
    transform: translateY(-50%);
    opacity: 0;
    visibility: hidden;
}
.o-btn img {
    display: block;
    width: 100%;
}
.c-left .o-btn {
    left: 100%;
    margin-left: -4px;
}
.c-right .o-btn {
    right: 100%;
    margin-right: -18px;
}
.modeling-left-topInfo-box2 {
    background: url("../img/web/group/left-box2.png") no-repeat;
    width: 100%;
    height: 362px;
    box-sizing: border-box;
    padding: 56px 20px 20px 20px;
    position: relative;
}
.modeling-left-topInfo-kd {
    width: 287px;
    height: 90px;
    margin: 20px auto;
    overflow: hidden;
    border-top: 1px solid #113359;
    border-bottom: 1px solid #113359;
    background: radial-gradient(circle, #062251, rgba(6, 35, 77, 0));
}
.modeling-left-topInfo-ck {
    width: 100%;
    height: 100%;
    color: #fff;
    display: flex;
    justify-content: center;
    align-items: center;
}
.modeling-left-topInfo-kd-list li {
    width: 100%;
}
.m-box1 {
    display: flex;
    align-items: center;
    padding-left: 20px;
    margin-bottom: 30px;
}
.m-box1 .l {
    width: 212px;
    margin-right: 24px;
}
.m-box1 .r {
    flex: 1;
}
.m-box1 .chartbox {
    position: relative;
    width: 212px;
    height: 212px;
}
.m-box1 .chartbox::before {
    content: "";
    display: block;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    display: block;
    background: url(../img/web/group/c-bg1.png) no-repeat center;
    background-size: contain;
}
.m-box1 .chartbox::after {
    content: "";
    display: block;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    display: block;
    background: url(../img/web/group/c-bg2.png) no-repeat center;
    background-size: contain;
}
.m-box1 .chartbox .txt {
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -55px;
    margin-left: -55px;
    width: 110px;
    height: 110px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    font-size: 16px;
    color: #fff;
    z-index: 2;
}
.m-box1 .chartbox .txt .n {
    font-size: 40px;
    color: #ffd100;
    font-family: DINCond-Bold;
}
.m-box1 .chart {
    width: 100%;
    height: 100%;
    position: relative;
    z-index: 3;
}
/* .m-box1 .chart::before{
  content: "";
  display: block;
  width:  135px;
  height: 135px;
  border-radius: 50%;
  background-color: #000;
  opacity: .3;
  position: absolute;
  z-index: 1;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
  pointer-events: none;
} */
.ul-listb1 {
    height: 270px;
    overflow-y: auto;
    overflow-x: hidden;
}
.ul-listb1::-webkit-scrollbar { /*滚动条整体样式*/
    width: 6px; /*高宽分别对应横竖滚动条的尺寸*/
    height: 1px;
}
.ul-listb1::-webkit-scrollbar-thumb { /*滚动条里面小方块*/
    border-radius: 6px;
    background: #00ccff;
}
.ul-listb1::-webkit-scrollbar-track { /*滚动条里面轨道*/
    border-radius: 6px;
    background: rgba(0, 204, 255, .1);
}
.ul-listb1 .con {
    display: flex;
    align-items: center;
    overflow: hidden;
    height: 38px;
    margin-bottom: 1px;
    padding: 0 20px;
}
.ul-listb1 .dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    margin-right: 10px;
    position: relative;
}
.ul-listb1 .dot::before {
    content: "";
    display: block;
    width: 13px;
    height: 13px;
    border-radius: 50%;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -7px;
    margin-left: -7px;
    background-color: inherit;
    opacity: .5;
}
.ul-listb1 .num {
    font-size: 22px;
    font-family: DINCond-Bold;
}
.ul-listb1 .type {
    flex: 1;
    text-align: right;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    font-size: 14px;
    color: #fff;
}
.m-box2 .top {
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.m-box2 .tit {
    font-size: 18px;
    color: #fff;
    padding-left: 25px;
    background: url(../img/web/group/c-i1.png) no-repeat left center;
    background-size: 17px;
}
.m-box2 .num {
    font-size: 20px;
    color: #ffd12b;
    font-family: DINCond-Bold;
}
.m-box2 .chart {
    height: 540px;
}
.m-box3 {
    margin-bottom: 30px;
}
.m-box3 .top {
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.m-box3 .tit {
    font-size: 18px;
    color: #fff;
    padding-left: 25px;
    background: url(../img/web/group/c-i1.png) no-repeat left center;
    background-size: 17px;
}
.m-box3 .num {
    font-size: 20px;
    color: #ffd12b;
    font-family: DINCond-Bold;
}
.m-box3 .chart {
    height: 100px;
}
.m-nav {
    height: 820px;
    overflow-y: auto;
    overflow-x: hidden;
    /* padding: 0 10px 0 37px; */
    padding-right: 15px;
    padding-left: 20px;
}
.m-nav::-webkit-scrollbar { /*滚动条整体样式*/
    width: 6px; /*高宽分别对应横竖滚动条的尺寸*/
    height: 1px;
}
.m-nav::-webkit-scrollbar-thumb { /*滚动条里面小方块*/
    border-radius: 6px;
    background: #00ccff;
}
.m-nav::-webkit-scrollbar-track { /*滚动条里面轨道*/
    border-radius: 6px;
    background: rgba(0, 204, 255, .1);
}
.m-nav .tit {
    display: flex;
    align-items: center;
    padding-left: 16px;
}
.m-nav .arr {
    width: 24px;
    height: 20px;
    background: url(../img/web/group/c-i3.png) no-repeat center;
    background-size: contain;
}
.m-nav .icon {
    width: 50px;
    height: 50px;
    background: url(../img/web/group/c-i2.png) no-repeat center;
    background-size: contain;
    flex-shrink: 0;
}
.m-nav .v1 {
    display: flex;
    align-items: center;
    font-size: 18px;
    color: #fff;
}
/* .m-nav .two,
.m-nav .three{
  padding-left: 30px;
} */
.m-nav .three {
    padding: 19px 0 10px;
}
.m-nav .three > .tit {
    padding-left: 102px;
    padding-right: 14px;
    margin-bottom: 17px;
}
.m-nav .two > .con > .tit {
    padding-left: 55px;
}
.m-nav .three {
    background-color: rgba(6, 133, 255, .1);
}
.m-nav .three .icon {
    width: 16px;
    height: 16px;
    background-image: url(../img/web/group/c-i4.png);
    margin: 4px 8px 0 0;
}
.m-nav .three .v1 {
    align-items: flex-start;
}
.m-nav .sub {
    display: none;
}
.c-cen {
    position: absolute;
    top: 10px;
    /*left: 540px;*/
    /*right: 420px;*/
    display: flex;
    align-items: center;
    bottom: 10px;
}
fzzy-igdss-web/src/main/resources/static/group/index.js
@@ -98,27 +98,27 @@
            html += '<li style="float: left; width: 246px;">';
            html += '<div class="item">';
            html += '<div class="pic">';
            html += '<img src="'+item.imgName+'" alt="">';
            html += '</div><div class="tit">'+item.snapTime+'</div>';
            html += '<div class="tit" style="white-space: nowrap;">'+deptListMap[item.deptId]+'</div>';
            html += '<img src="' + item.imgName + '" alt="">';
            html += '</div><div class="tit">' + item.snapTime + '</div>';
            html += '<div class="tit" style="white-space: nowrap;">' + deptListMap[item.deptId] + '</div>';
            html += '</div></li>';
        })
    }else {
    } else {
        $.each(deptAllList, function (index, item) {
            html += '<li style="float: left; width: 246px;">';
            html += '<div class="item">';
            html += '<div class="pic">';
            html += '<img src="/img/img-fail.jpg" alt="">';
            html += '</div><div class="tit">近期暂无抓拍图</div>';
            html += '<div class="tit" style="white-space: nowrap;">'+item.kqmc+'</div>';
            html += '<div class="tit" style="white-space: nowrap;">' + item.kqmc + '</div>';
            html += '</div></li>';
        })
    }
    $("#snapList").html(html);
    //抓拍跟踪滚动
    jQuery(".block2").slide({ mainCell: ".bd ul", autoPage: true, effect: "topLoop", autoPlay: true, vis: 4 });
    jQuery(".follow").slide({ mainCell: ".bd ul", autoPlay: true, effect: "leftMarquee", vis: 5, interTime: 40 });
    jQuery(".block2").slide({mainCell: ".bd ul", autoPage: true, effect: "topLoop", autoPlay: true, vis: 4});
    jQuery(".follow").slide({mainCell: ".bd ul", autoPlay: true, effect: "leftMarquee", vis: 5, interTime: 40});
}
@@ -126,8 +126,8 @@
 * åº“区定时切换
 */
function timing() {
    timer = setInterval(function() {
        if(deptNum === deptList.length){
    timer = setInterval(function () {
        if (deptNum === deptList.length) {
            deptNum = 0;
        }
@@ -148,11 +148,11 @@
//加载指定地区地图和点位
function renderMapPoints(areaName) {
    if(!areaName){
    if (!areaName) {
        return;
    }
    var names = areaName.split(",");
    if(names.length < 1){
    if (names.length < 1) {
        return;
    }
@@ -167,13 +167,13 @@
    geoMap = [];
    for (var j = 0; j < names.length; j++) {
        for (var i = 0; i < all.length; i++) {
            if(all[i].properties.name === names[j]){
            if (all[i].properties.name === names[j]) {
                map.features.push(all[i]);
                // if(all[i].properties.name === "伊犁哈萨克自治州"){
                    geoMap.push({
                        name: all[i].properties.centerName,
                        value: [all[i].properties.center[0], all[i].properties.center[1], 12]
                    });
                geoMap.push({
                    name: all[i].properties.centerName,
                    value: [all[i].properties.center[0], all[i].properties.center[1], 12]
                });
                // }
                // renderMap();
                break;
@@ -193,7 +193,7 @@
    echarts.registerMap('chinaMapOutline', map);
    var option = {
        backgroundColor:'transparent',
        backgroundColor: 'transparent',
        tooltip: {
            show: false,
            trigger: 'item'
@@ -310,7 +310,7 @@
                type: 'effectScatter',
                coordinateSystem: 'geo',
                data: geoMap,
                symbolSize:  function (val) {
                symbolSize: function (val) {
                    return val[2];
                },
                rippleEffect: {
@@ -339,7 +339,7 @@
        ]
    };
    myChart.setOption( option );
    myChart.setOption(option);
    mapChart = {"chart": myChart, "option": option};
}
@@ -354,15 +354,17 @@
    var flag = false;
    if (deptList != null && deptList.length > 0) {
        $.each(deptList, function (index, item) {
            if(item.dailyTotal === 0){
            if (item.dailyTotal === 0) {
                num1 = '当日一切正常';
            }else{
                num1 = '当日数量'+ item.dailyTotal + '个';
            } else if (item.dailyTotal < 0) {
                num1 = '未检测到网关';
            } else {
                num1 = '当日数量' + item.dailyTotal + '个';
            }
            if(item.warnNum7 === 0){
            if (item.warnNum7 === 0) {
                num7 = '近七天一切正常';
            }else{
                num7 = '近七天数量'+ item.warnNum7 + '个';
            } else {
                num7 = '近七天数量' + item.warnNum7 + '个';
            }
            html += '<div class="panel-content-body-tr">';
            if (item.dailyTotal > 0) {
@@ -379,14 +381,14 @@
            //     html += '<span class="body-item sp" style="color: #f37b3d;">' + num1+ '</span>';
            //     html += '<span class="body-item sp" style="color: #f37b3d;">' + num7 + '</span>';
            // }else {
                html += '<span class="body-item sp" style="flex: 1.5;">' + item.deptName + '</span>';
                html += '<span class="body-item sp">' + num1 + '</span>';
                html += '<span class="body-item sp">' + num7 + '</span>';
            html += '<span class="body-item sp" style="flex: 1.5;">' + item.deptName + '</span>';
            html += '<span class="body-item sp">' + num1 + '</span>';
            html += '<span class="body-item sp">' + num7 + '</span>';
            // }
            html += '</div>';
        })
    }
    if(flag){
    if (flag) {
        $("#panel-title").html('库区AI事件信息  <i class="dot"></i>');
    }
    $("#inventoryInfo").html(html);
@@ -441,13 +443,13 @@
function updateDeptMap() {
    var points = [];
    $.each(deptList, function(index, item) {
    $.each(deptList, function (index, item) {
        var val = [];
        var name = '';
        if(index === deptNum){
        if (index === deptNum) {
            name = item.deptName;
            val = [item.jd, item.wd, 17];
        }else {
        } else {
            val = [item.jd, item.wd, 8];
        }
        points.push({
@@ -563,7 +565,7 @@
function initChart() {
    /* åº“存图表加载 */
    allInventoryChartLoad(
        ['小麦', '玉米', '稻谷', '成品粮',  '成品油', '其他'],
        ['小麦', '玉米', '稻谷', '成品粮', '成品油', '其他'],
        [1000, 1200, 1500, 1300, 1100, 1600]
    );
}
fzzy-igdss-web/src/main/resources/templates/group/gis_modeling.html
@@ -11,7 +11,7 @@
    <link th:href="@{/group/pc-reset.css}" rel="stylesheet" type="text/css">
    <link th:href="@{/group/master.css}" rel="stylesheet" type="text/css">
    <link th:href="@{/group/gis.css}" rel="stylesheet" type="text/css">
    <link th:href="@{/group/gis_modeling.css}" rel="stylesheet" type="text/css">
    <style>
        .anchorBL,
        .BMap_cpyCtrl.anchorBL {