czt
2025-12-23 8dbce7c8f9569f66c34854b723d4aa1c1e092f7e
系统首页数据交互提交
已添加1个文件
已修改10个文件
661 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/MainData.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CoreDeptService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/EventInfoService.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapRecordService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/PatrolPR.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/PatrolSuper.view.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/common/manager/CommonManager.java 186 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/SysIndexController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/main.html 302 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/MainData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.fzzy.igds.data;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
 * @Description  é¦–页信息统计封装
 * @Author CZT
 * @Date 2025/12/23 10:28
 */
@Data
public class MainData implements Serializable {
    /**
     * ç¬¬ä¸€è¡Œç»Ÿè®¡
     */
    private Integer orderNum = 0; //待办工单数
    private Double inSum = 0.0;   //今日入库数量
    private Double outSum = 0.0;  //今日出库数量;
    private Integer aiNum = 0;    //近7天AI事件数;
    /**
     * ç¬¬äºŒè¡Œç»Ÿè®¡
     */
    private Integer inNumDay = 0;        //日入库车数;
    private Integer outNumDay = 0;       //日出库车数;
    //出入库周统计
    private List<String> weekDateList = new ArrayList<>();
    private List<Integer> weekInNumList = new ArrayList<>();
    private List<Integer> weekOutNumList = new ArrayList<>();
    //出入库月统计
    private List<String> monthDateList = new ArrayList<>();
    private List<Integer> monthInNumList = new ArrayList<>();
    private List<Integer> monthOutNumList = new ArrayList<>();
    //AI事件周统计
    private List<String> weekAiDateList = new ArrayList<>();
    private List<Integer> weekAiNumList = new ArrayList<>();
    //抓拍周统计
    private List<String> weekSnapDateList = new ArrayList<>();
    private List<Integer> weekSnapNumList = new ArrayList<>();
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CoreDeptService.java
@@ -49,7 +49,7 @@
        if(StringUtils.isNotBlank(parentId)){
            queryWrapper.likeRight("id", parentId);
        }
        queryWrapper.orderByAsc("id");
        return coreDeptMapper.selectList(queryWrapper);
    }
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/EventInfoService.java
@@ -7,6 +7,8 @@
import com.fzzy.igds.domain.EventInfo;
import com.fzzy.igds.mapper.EventInfoMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.fzzy.work.domain.WorkOrder;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -65,34 +67,28 @@
        return queryWrapper;
    }
    public List<EventInfo> listAll(IgdsBaseParam param) {
        if (null == param)
            return eventInfoMapper.selectList(null);
    /**
     *
     * @param param
     * @return
     */
    public List<EventInfo> getListByParam(IgdsBaseParam param) {
        if (null == param){
            param = new IgdsBaseParam();
        }
        QueryWrapper<EventInfo> queryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotEmpty(param.getName())) {
            queryWrapper.like("name", param.getName());
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.likeRight("dept_id", param.getDeptId());
        }
        if (null != param.getStart()) {
            queryWrapper.ge("time", DateUtil.getCurZero(param.getStart()));
        }
        if (null != param.getEnd()) {
            queryWrapper.le("time", DateUtil.getNextZero(param.getEnd()));
        }
        return eventInfoMapper.selectList(queryWrapper);
    }
    public BaseResp addData(EventInfo eventInfo) {
        eventInfo.setId(ContextUtil.generateId());
        eventInfo.setCompanyId(ContextUtil.getCompanyId());
        eventInfo.setUpdateBy(ContextUtil.getLoginUserName());
        eventInfo.setUpdateTime(new Date());
        eventInfo.setCreateBy(ContextUtil.getLoginUserName());
        eventInfo.setCreateTime(new Date());
        return eventInfoMapper.insert(eventInfo) > 0 ? BaseResp.success() : BaseResp.error("添加失败");
    }
    public BaseResp updateData(EventInfo eventInfo) {
        eventInfo.setUpdateBy(ContextUtil.getLoginUserName());
        eventInfo.setUpdateTime(new Date());
        return eventInfoMapper.updateById(eventInfo) > 0 ? BaseResp.success() : BaseResp.error("更新失败");
    }
    public BaseResp deleteData(EventInfo eventInfo) {
        return eventInfoMapper.deleteById(eventInfo) > 0 ? BaseResp.success() : BaseResp.error("删除失败");
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java
@@ -91,7 +91,7 @@
            queryWrapper.eq("company_id", param.getCompanyId());
        }
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.eq("dept_id", param.getDeptId());
            queryWrapper.likeRight("dept_id", param.getDeptId());
        }
        if (StringUtils.isNotBlank(param.getCustomerName())) {
            queryWrapper.like("customer_name", param.getCustomerName());
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapRecordService.java
@@ -7,6 +7,7 @@
import com.fzzy.igds.domain.SnapRecord;
import com.fzzy.igds.mapper.SnapRecordMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -69,14 +70,20 @@
     * @author sgj
     * @date 2025/12/10
     */
    public List<SnapRecord> listAll(IgdsBaseParam param) {
        if (null == param)
            return snapRecordMapper.selectList(null);
    public List<SnapRecord> getListByParam(IgdsBaseParam param) {
        if (null == param){
            param = new IgdsBaseParam();
        }
        QueryWrapper<SnapRecord> queryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotEmpty(param.getName())) {
            queryWrapper.like("name", param.getName());
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.likeRight("dept_id", param.getDeptId());
        }
        if (null != param.getStart()) {
            queryWrapper.ge("snap_time", DateUtil.getCurZero(param.getStart()));
        }
        if (null != param.getEnd()) {
            queryWrapper.le("snap_time", DateUtil.getNextZero(param.getEnd()));
        }
        return snapRecordMapper.selectList(queryWrapper);
    }
fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java
@@ -10,6 +10,7 @@
import com.fzzy.work.mapper.WorkOrderMapper;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -61,4 +62,23 @@
            }
            return list;
    }
    /**
     * èŽ·å–ç”¨æˆ·å¾…å¤„ç†å·¥å•æ•°
     * @param status
     * @param userId
     * @return
     */
    public Integer getNumByUser(String status, String userId) {
        QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
        if(StringUtils.isBlank(userId) || StringUtils.isBlank(status)){
            return 0;
        }
        queryWrapper.eq("assignee_id", userId);
        queryWrapper.eq("status", status);
        return workOrderMapper.selectCount(queryWrapper);
    }
}
fzzy-igdss-view/src/main/java/com/fzzy/igds/PatrolPR.java
@@ -49,7 +49,7 @@
        //库区转换
        Map<String, PatrolSuperData> map = new HashMap<>();
        for (Dept dept : deptList) {
            map.put(dept.getId(), new PatrolSuperData(dept.getCompanyId(), dept.getId()));
            map.put(dept.getId(), new PatrolSuperData(dept.getId().substring(0,(dept.getId().length()-3)), dept.getId()));
        }
        List<Patrol> weekList = patrolService.getWeekList();
@@ -77,7 +77,14 @@
            }
        }
        return new ArrayList<>(map.values());
        ArrayList<PatrolSuperData> list = new ArrayList<>(map.values());
        Collections.sort(list, new Comparator<PatrolSuperData>() {
            @Override
            public int compare(PatrolSuperData o1, PatrolSuperData o2) {
                return o1.getDeptId().compareTo(o2.getDeptId());
            }
        });
        return list;
    }
    /*-------------------电子巡更记录主表信息--------------------*/
fzzy-igdss-view/src/main/java/com/fzzy/igds/PatrolSuper.view.xml
@@ -16,7 +16,12 @@
      </PropertyDef>
      <PropertyDef name="companyId">
        <Property></Property>
        <Property name="label">系统组织编码</Property>
        <Property name="label">收储公司</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;companyPR#getData&quot;).getResult()}</Property>
          <Property name="keyProperty">id</Property>
          <Property name="valueProperty">dwmc</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="weekNum">
        <Property name="dataType">Integer</Property>
@@ -100,6 +105,9 @@
        <Property name="selectionMode">singleRow</Property>
        <RowSelectorColumn/>
        <RowNumColumn/>
        <DataColumn name="companyId">
          <Property name="property">companyId</Property>
        </DataColumn>
        <DataColumn name="deptId">
          <Property name="property">deptId</Property>
        </DataColumn>
@@ -123,10 +131,6 @@
          <Property name="property">isPatrol</Property>
          <Property name="align">center</Property>
          <Property name="width">120</Property>
        </DataColumn>
        <DataColumn name="remark">
          <Property name="property">remark</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="updateTime">
          <Property name="property">updateTime</Property>
fzzy-igdss-web/src/main/java/com/fzzy/common/manager/CommonManager.java
@@ -2,21 +2,27 @@
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.DepotType;
import com.fzzy.igds.data.IgdsBaseParam;
import com.fzzy.igds.data.MainData;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.domain.*;
import com.fzzy.igds.service.*;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.fzzy.work.data.OrderStatus;
import com.fzzy.work.service.WorkOrderService;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
import java.util.*;
/**
 * @Description
@@ -36,8 +42,6 @@
    @Autowired
    private SecCameraService secCameraService;
    @Resource
    private ISysUserService userService;
    @Resource
    private ISysDeptService iSysDeptService;
    @Resource
    private FileService fileService;
@@ -45,6 +49,14 @@
    private CoreCompanyService coreCompanyService;
    @Resource
    private SloganService sloganService;
    @Resource
    private WorkOrderService workOrderService;
    @Resource
    private InoutRecordService inoutRecordService;
    @Resource
    private EventInfoService eventInfoService;
    @Resource
    private SnapRecordService snapRecordService;
    /**
     * æ ¹æ®åº“区编码获取库区下所有仓库列表
@@ -59,6 +71,7 @@
    /**
     * èŽ·å–åº“åŒºé¸Ÿçž°å›¾
     *
     * @param deptId
     * @return
     */
@@ -72,6 +85,7 @@
    /**
     * åˆ¤æ–­è·¯å¾„下文件是否存在,不存在则给默认
     *
     * @param imgPath
     * @param tag
     * @return
@@ -98,12 +112,16 @@
     * @return
     */
    public List<Depot> listDepotByDeptId(String deptId) {
        try{
            if (StringUtils.isEmpty(deptId)) {
                deptId = ContextUtil.subDeptId(null);
            }
        if (StringUtils.isEmpty(deptId)) {
            deptId = ContextUtil.subDeptId(null);
            return depotService.getCacheDepotList(ContextUtil.getCompanyId(), deptId);
        }catch (Exception e){
            return null;
        }
        return depotService.getCacheDepotList(ContextUtil.getCompanyId(), deptId);
    }
    /**
@@ -142,27 +160,13 @@
    }
    /**
     * èŽ·å–ç”¨æˆ·åˆ—è¡¨
     *
     * @author sgj
     * @date 2025/12/12
     */
    public List<SysUser>  listUserData() {
        SysUser user = new SysUser() ;
        user.setCompanyId(ContextUtil.getCompanyId());
        user.setDeptId(Long.valueOf(ContextUtil.subDeptId(null)));
        return userService.selectUserList(user);
    }
    /**
     * èŽ·å–è®¾å¤‡åˆ—è¡¨
     *
     * @author sgj
     * @date 2025/12/12
     */
    public  List<Camera>  listCameraData() {
        return secCameraService.listCamera(ContextUtil.getCompanyId(),ContextUtil.subDeptId(null));
    public List<Camera> listCameraData() {
        return secCameraService.listCamera(ContextUtil.getCompanyId(), ContextUtil.subDeptId(null));
    }
    /**
@@ -171,7 +175,7 @@
     * @author sgj
     * @date 2025/12/17
     */
    public  List<Company>  listCompanyData() {
    public List<Company> listCompanyData() {
        SysUser user = ContextUtil.getLoginUser();
        return coreCompanyService.listCompany(null, null, user.getDeptId() + "");
    }
@@ -179,13 +183,143 @@
    /**
     * èŽ·å–å¯ç”¨çš„å¤§å±æ ‡è¯­
     *
     * @return
     */
    public Slogan getDicSlogan() {
        List<Slogan> slogans = sloganService.listData(Constant.YN_Y);
        if(null == slogans || slogans.isEmpty()){
        if (null == slogans || slogans.isEmpty()) {
            return null;
        }
        return slogans.get(0);
    }
    /**
     * èŽ·å–å¯ç”¨çš„å¤§å±æ ‡è¯­
     *
     * @return
     */
    public MainData getIndexData(SysUser user) {
        MainData mainData = new MainData();
        //待办工单数
        Integer orderNum = workOrderService.getNumByUser(OrderStatus.STATUS_30.getCode(), user.getLoginName());
        mainData.setOrderNum(orderNum);
        //统计出入库信息
        Double inSum = 0.0;
        Double outSum = 0.0;
        LinkedHashMap<String, Integer> mapWeekInNum = new LinkedHashMap<>();
        LinkedHashMap<String, Integer> mapWeekOutNum = new LinkedHashMap<>();
        LinkedHashMap<String, Integer> mapMonthInNum = new LinkedHashMap<>();
        LinkedHashMap<String, Integer> mapMonthOutNum = new LinkedHashMap<>();
        LinkedHashMap<String, Integer> mapWeekAiNum = new LinkedHashMap<>();
        LinkedHashMap<String, Integer> mapWeekSnapNum = new LinkedHashMap<>();
        String key;
        for (int i = -29; i <= 0; i++) {
            mapMonthInNum.put(DateFormatUtils.format(DateUtil.getNewByDay(new Date(), i), "MM-dd"), 0);
            mapMonthOutNum.put(DateFormatUtils.format(DateUtil.getNewByDay(new Date(), i), "MM-dd"), 0);
            if(i >=-6){
                mapWeekInNum.put(DateFormatUtils.format(DateUtil.getNewByDay(new Date(), i), "MM-dd"), 0);
                mapWeekOutNum.put(DateFormatUtils.format(DateUtil.getNewByDay(new Date(), i), "MM-dd"), 0);
                mapWeekAiNum.put(DateFormatUtils.format(DateUtil.getNewByDay(new Date(), i), "MM-dd"), 0);
                mapWeekSnapNum.put(DateFormatUtils.format(DateUtil.getNewByDay(new Date(), i), "MM-dd"), 0);
            }
        }
        //近7天AI事件数
        IgdsBaseParam param = new IgdsBaseParam();
        param.setDeptId(user.getDeptId() + "");
        param.setStart(DateUtil.getNewByDay(new Date(), -6));
        param.setEnd(new Date());
        List<EventInfo> listEvent = eventInfoService.getListByParam(param);
        if (null != listEvent && !listEvent.isEmpty()) {
            mainData.setAiNum(listEvent.size());
            for (EventInfo event : listEvent) {
                key = DateFormatUtils.format(event.getTime(),"MM-dd");
                if(null != mapWeekAiNum.get(key)){
                    mapWeekAiNum.put(key, mapWeekAiNum.get(key) + 1);
                }
            }
        }
        for (String mapKey : mapWeekAiNum.keySet()) {
            mainData.getWeekAiDateList().add(mapKey);
            mainData.getWeekAiNumList().add(mapWeekAiNum.get(mapKey));
        }
        //近7天抓拍信息统计
        List<SnapRecord> listSnap = snapRecordService.getListByParam(param);
        if (null != listSnap && !listSnap.isEmpty()) {
            for (SnapRecord snap : listSnap) {
                key = DateFormatUtils.format(snap.getSnapTime(),"MM-dd");
                if(null != mapWeekSnapNum.get(key)){
                    mapWeekSnapNum.put(key, mapWeekSnapNum.get(key) + 1);
                }
            }
        }
        for (String mapKey : mapWeekSnapNum.keySet()) {
            mainData.getWeekSnapDateList().add(mapKey);
            mainData.getWeekSnapNumList().add(mapWeekSnapNum.get(mapKey));
        }
        //查询近30天所有出入库信息
        InoutParam inoutParam = new InoutParam();
        param.setDeptId(user.getDeptId() + "");
        param.setStart(DateUtil.getNewByDay(new Date(), -29));
        param.setEnd(new Date());
        List<InoutRecord> inoutRecords = inoutRecordService.listInout(inoutParam);
        if (null != inoutRecords && !inoutRecords.isEmpty()) {
            for (InoutRecord record : inoutRecords) {
                key = DateFormatUtils.format(record.getRegisterTime(),"MM-dd");
                if(Constant.TYPE_IN.equals(record.getType())){
                    if(null != mapWeekInNum.get(key)){
                        mapWeekInNum.put(key, mapWeekInNum.get(key) + 1);
                    }
                    if(null != mapMonthInNum.get(key)){
                        mapMonthInNum.put(key, mapMonthInNum.get(key) + 1);
                    }
                    if(key.equals(DateFormatUtils.format(new Date(),"MM-dd"))){
                        mainData.setInNumDay(mainData.getInNumDay() + 1);
                        inSum += record.getRecordWeight();
                    }
                }
                if(Constant.TYPE_OUT.equals(record.getType())){
                    if(null != mapWeekOutNum.get(key)){
                        mapWeekOutNum.put(key, mapWeekOutNum.get(key) + 1);
                    }
                    if(null != mapMonthOutNum.get(key)){
                        mapMonthOutNum.put(key, mapMonthOutNum.get(key) + 1);
                    }
                    if(key.equals(DateFormatUtils.format(new Date(),"MM-dd"))){
                        mainData.setOutNumDay(mainData.getOutNumDay() + 1);
                        outSum += record.getRecordWeight();
                    }
                }
            }
        }
        for (String mapKey : mapWeekInNum.keySet()) {
            mainData.getWeekDateList().add(mapKey);
            mainData.getWeekInNumList().add(mapWeekInNum.get(mapKey));
        }
        for (String mapKey : mapWeekOutNum.keySet()) {
            mainData.getWeekOutNumList().add(mapWeekOutNum.get(mapKey));
        }
        for (String mapKey : mapMonthInNum.keySet()) {
            mainData.getMonthDateList().add(mapKey);
            mainData.getMonthInNumList().add(mapMonthInNum.get(mapKey));
        }
        for (String mapKey : mapMonthOutNum.keySet()) {
            mainData.getMonthOutNumList().add(mapMonthOutNum.get(mapKey));
        }
        mainData.setInSum(inSum / 1000);
        mainData.setOutSum(outSum / 1000);
        return mainData;
    }
}
fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/SysIndexController.java
@@ -1,6 +1,8 @@
package com.fzzy.sys.controller;
import com.fzzy.common.manager.CommonManager;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.data.MainData;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.config.FrameworkConfig;
import com.ruoyi.common.constant.ShiroConstants;
@@ -43,6 +45,8 @@
    private SysPasswordService passwordService;
    @Resource
    private ISysDeptService iSysDeptService;
    @Resource
    private CommonManager commonManager;
    /**
     * é¡µé¢è·¯ç”±
@@ -69,7 +73,14 @@
    @GetMapping("/home")
    public String home(ModelMap mmap) {
        mmap.put("version", FrameworkConfig.getVersion());
        //获取登录人信息
        SysUser user = getSysUser();
        //获取统计信息
        MainData mainData = commonManager.getIndexData(user);
        mmap.put("mainData", mainData);
        return "main";
    }
fzzy-igdss-web/src/main/resources/templates/main.html
@@ -94,7 +94,7 @@
    <div class="layui-row layui-col-space15 p-top">
        <div class="layui-col-sm3  layui-col-xs6">
            <div class="console-link-block">
                <div class="console-link-block-num">2</div>
                <div class="console-link-block-num" th:text="${mainData.orderNum}">2</div>
                <div class="console-link-block-text">待办工单</div>
                <i class="console-link-block-icon layui-icon layui-icon-survey"></i>
                <div class="console-link-block-band">待处理</div>
@@ -102,15 +102,15 @@
        </div>
        <div class="layui-col-sm3 layui-col-xs6">
            <div class="console-link-block">
                <div class="console-link-block-num">0</div>
                <div class="console-link-block-num" th:text="${mainData.inSum}">0</div>
                <div class="console-link-block-text">今日入库(吨)</div>
                <i class="console-link-block-icon layui-icon layui-icon-form"></i>
                <div class="console-link-block-band">去查看</div>
            </div>
        </div>
        <div class="layui-col-sm3   layui-col-xs6">
        <div class="layui-col-sm3 layui-col-xs6">
            <div class="console-link-block">
                <div class="console-link-block-num">0</div>
                <div class="console-link-block-num" th:text="${mainData.outSum}">0</div>
                <div class="console-link-block-text">今日出库(吨)</div>
                <i class="console-link-block-icon layui-icon layui-icon-form"></i>
                <div class="console-link-block-band">去查看</div>
@@ -118,7 +118,7 @@
        </div>
       <div class="layui-col-sm3 layui-col-xs6">
            <div class="console-link-block">
                <div class="console-link-block-num">0</div>
                <div class="console-link-block-num" th:text="${mainData.aiNum}">0</div>
                <div class="console-link-block-text">AI事件(近7天)</div>
                <i class="console-link-block-icon layui-icon layui-icon-chart"></i>
                <div class="console-link-block-band">去查看</div>
@@ -131,12 +131,9 @@
    <div class="layui-row layui-col-space15">
        <div class="layui-col-md4 layui-col-sm6">
            <div class="layui-card" style="overflow: hidden;">
                <div class="layui-card-header">日出库统计</div>
                <div class="layui-card-header">日出入库统计</div>
                <div class="layui-card-body">
                    <div id="consoleChartsDay" style="height: 300px;"></div>
                    <div style="color: #10B4E8;font-size: 18px;position: absolute;bottom: 85px;left: 0;right:0;text-align: center;cursor: pointer;">
                        å‡ºå…¥åº“明细<i class="layui-icon layui-icon-right" style="font-size: 16px;"></i>
                    </div>
                </div>
            </div>
        </div>
@@ -157,68 +154,19 @@
                </div>
            </div>
        </div>
        <div class="layui-col-md4 layui-col-sm6">
            <div class="layui-card" style="overflow: hidden;">
                <div class="layui-card-header">热门搜索</div>
        <div class="layui-col-md6">
            <div class="layui-card">
                <div class="layui-card-header">近7天AI事件统计</div>
                <div class="layui-card-body">
                    <div id="consoleChartsWord" style="height: 300px;"></div>
                    <div id="aiChartsWeek" style="height: 300px;"></div>
                </div>
            </div>
        </div>
        <div class="layui-col-md8 layui-col-sm12">
            <div class="layui-card" style="overflow: hidden;">
                <div class="layui-card-header">用户分布</div>
        <div class="layui-col-md6">
            <div class="layui-card">
                <div class="layui-card-header">近7天抓拍统计</div>
                <div class="layui-card-body">
                    <div class="layui-row">
                        <div class="layui-col-md8 layui-col-sm7">
                            <div id="consoleChartsMap" style="height: 300px;"></div>
                        </div>
                        <div class="layui-col-md4 layui-col-sm5">
                            <table class="layui-table" lay-skin="line" style="margin-top: 15px;">
                                <thead>
                                <tr>
                                    <td>排名</td>
                                    <td>地区</td>
                                    <td>人数</td>
                                </tr>
                                </thead>
                                <tbody>
                                <tr>
                                    <td>1</td>
                                    <td>浙江</td>
                                    <td>62310</td>
                                </tr>
                                <tr>
                                    <td>2</td>
                                    <td>上海</td>
                                    <td>59190</td>
                                </tr>
                                <tr>
                                    <td>3</td>
                                    <td>广东</td>
                                    <td>55891</td>
                                </tr>
                                <tr>
                                    <td>4</td>
                                    <td>北京</td>
                                    <td>51919</td>
                                </tr>
                                <tr>
                                    <td>5</td>
                                    <td>山东</td>
                                    <td>39231</td>
                                </tr>
                                <tr>
                                    <td>6</td>
                                    <td>湖北</td>
                                    <td>37109</td>
                                </tr>
                                </tbody>
                            </table>
                        </div>
                    </div>
                    <div id="snapChartsWeek" style="height: 300px;"></div>
                </div>
            </div>
        </div>
@@ -226,11 +174,11 @@
</div>
<!-- js部分 -->
<script th:src="@{/ajax/libs/layui-ruoyi/layui.js}"></script>
<!--<script src="${ctxPath}/assets/js/common.js"></script>-->
<script th:src="@{/ajax/libs/echarts/echarts.min.js}"></script>
<script th:src="@{/ajax/libs/echarts/china.js}"></script>
<script th:src="@{/ajax/libs/echarts/echarts-wordcloud.min.js}"></script>
<script>
<script th:inline="javascript">
    var mainData = [[${mainData}]];
    layui.use(['layer'], function () {
        var $ = layui.jquery;
        var layer = layui.layer;
@@ -239,7 +187,7 @@
        var myCharts1 = echarts.init(document.getElementById('consoleChartsDay'));
        var options1 = {
            title: {
                text: '入库数量/出库数量', x: 'center', y: '32%',
                text: '入库车次/出库车次', x: 'center', y: '32%',
                textStyle: {fontSize: 18, color: '#262626', fontWeight: 'normal'},
                subtextStyle: {fontSize: 56, color: '#10B4E8'}, itemGap: 20
            },
@@ -247,14 +195,14 @@
            tooltip: {trigger: 'item'},
            legend: {
                orient: 'vertical', right: '0px', top: '0px',
                data: ['入库数量', '出库数量'], textStyle: {color: '#595959'}
                data: ['入库车次', '出库车次'], textStyle: {color: '#595959'}
            },
            series: [{name: '数量', type: 'pie', radius: ['75%', '80%'], label: {normal: {show: false}}}]
        };
        myCharts1.setOption(options1);
        // èµ‹å€¼
        myCharts1.setOption({
            title: {subtext: '38/60'}, series: [{data: [{name: '入库数量', value: 38}, {name: '出库数量', value: 22}]}]
            title: {subtext: mainData.inNumDay + "/" + mainData.outNumDay}, series: [{data: [{name: '入库车次', value: mainData.inNumDay}, {name: '出库车次', value: mainData.outNumDay}]}]
        });
        /** æ¸²æŸ“周统计图表 */
@@ -264,14 +212,14 @@
            color: ['#10B4E8', '#FFA800'],
            legend: {
                orient: 'vertical', right: '0px', top: '0px',
                data: ['入库数量', '出库数量'], textStyle: {color: '#595959'}
                data: ['入库车次', '出库车次'], textStyle: {color: '#595959'}
            },
            grid: {top: '75px', left: '35px', right: '55px', bottom: '40px'},
            xAxis: {
                name: '星期',
                name: '日期',
                nameTextStyle: {color: '#595959'},
                type: 'category',
                data: ['周一', '周二', '周三', '周四', '周五'],
                data: mainData.weekDateList,
                axisLine: {lineStyle: {color: '#E0E0E0'}, symbol: ['none', 'arrow'], symbolOffset: [0, 10]},
                axisLabel: {color: '#8c8c8c'},
                axisTick: {alignWithLabel: true}
@@ -289,16 +237,16 @@
                minInterval: 1
            },
            series: [{
                name: '入库数量', type: 'bar', stack: 'one', barMaxWidth: '30px',
                name: '入库车次', type: 'bar', stack: 'one', barMaxWidth: '30px',
                label: {normal: {show: true, position: 'inside'}}
            }, {
                name: '出库数量', type: 'bar', stack: 'one', barMaxWidth: '30px',
                name: '出库车次', type: 'bar', stack: 'one', barMaxWidth: '30px',
                label: {normal: {show: true, position: 'inside'}}
            }]
        };
        myCharts2.setOption(options2);
        // èµ‹å€¼
        myCharts2.setOption({series: [{data: [5, 9, 6, 3, 10]}, {data: [10, 6, 9, 12, 5]}]});
        myCharts2.setOption({series: [{data: mainData.weekInNumList}, {data: mainData.weekOutNumList}]});
        /** æ¸²æŸ“月统计图表 */
        var myCharts3 = echarts.init(document.getElementById('consoleChartsMonth'));
@@ -311,14 +259,14 @@
            color: ['#10B4E8', '#FFA800'],
            legend: {
                orient: 'vertical', right: '0px', top: '0px',
                data: ['入库数量', '出库数量'], textStyle: {color: '#595959'}
                data: ['入库车次', '出库车次'], textStyle: {color: '#595959'}
            },
            grid: {top: '75px', left: '35px', right: '55px', bottom: '40px'},
            xAxis: {
                name: '日期',
                nameTextStyle: {color: '#595959'},
                type: 'category',
                data: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31'],
                data: mainData.monthDateList,
                axisLine: {lineStyle: {color: '#E0E0E0'}, symbol: ['none', 'arrow'], symbolOffset: [0, 10]},
                axisLabel: {
                    color: '#8c8c8c', interval: function (index, value) {
@@ -340,151 +288,98 @@
                minInterval: 1
            },
            series: [
                {name: '入库数量', type: 'line', smooth: false},
                {name: '出库数量', type: 'line', smooth: false}
                {name: '入库车次', type: 'line', smooth: false},
                {name: '出库车次', type: 'line', smooth: false}
            ]
        };
        myCharts3.setOption(options3);
        // èµ‹å€¼
        myCharts3.setOption({
            series: [
                {data: [15, 14, 13, 13, 13, 14, 15, 16, 17, 18, 19, 18, 18, 19, 20, 19, 18, 16, 14, 12, 10, 10, 12, 14, 16, 16, 14, 13, 12, 11, 10]},
                {data: [24, 22, 20, 18, 16, 14, 13, 12, 11, 11, 10, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 23, 24, 25, 26, 26, 24, 22, 20, 18, 16]}
                {data: mainData.monthInNumList},
                {data: mainData.monthOutNumList}
            ]
        });
        /** æ¸²æŸ“地图图表 */
        var myCharts4 = echarts.init(document.getElementById('consoleChartsMap'));
        /** æ¸²æŸ“周统计图表 */
        var myCharts4 = echarts.init(document.getElementById('aiChartsWeek'));
        var options4 = {
            tooltip: {trigger: 'item'},
            dataRange: {
                min: 0, max: 6e4, text: ['高', '低'], color: ['#2395FF', '#f2f2f2'], itemHeight: 60, itemWidth: 12
            }, series: [{
                name: '出库数量', type: 'map', mapType: "china",
                itemStyle: {normal: {label: {show: true, color: '#262626'}, borderColor: '#dddddd'}},
                emphasis: {label: {show: true, color: '#fff'}, itemStyle: {areaColor: '#FACF20'}},
                top: '0px', left: '15px', bottom: '0px'
            tooltip: {trigger: 'axis', axisPointer: {lineStyle: {color: '#E0E0E0'}}},
            color: ['#10B4E8'],
            legend: {
                orient: 'vertical', right: '0px', top: '0px',
                data: ['AI事件数'], textStyle: {color: '#595959'}
            },
            grid: {top: '75px', left: '35px', right: '55px', bottom: '40px'},
            xAxis: {
                name: '日期',
                nameTextStyle: {color: '#595959'},
                type: 'category',
                data: mainData.weekAiDateList,
                axisLine: {lineStyle: {color: '#E0E0E0'}, symbol: ['none', 'arrow'], symbolOffset: [0, 10]},
                axisLabel: {color: '#8c8c8c'},
                axisTick: {alignWithLabel: true}
            },
            yAxis: {
                name: '数量',
                nameTextStyle: {color: '#595959'},
                type: 'value',
                boundaryGap: ['0', '20%'],
                axisTick: {show: false},
                axisLine: {lineStyle: {color: '#E0E0E0'}, symbol: ['none', 'arrow'], symbolOffset: [0, 10]},
                axisLabel: {color: '#8c8c8c'},
                splitLine: {show: false},
                splitArea: {show: false},
                minInterval: 1
            },
            series: [{
                name: 'AI事件', type: 'bar', stack: 'one', barMaxWidth: '30px',
                label: {normal: {show: true, position: 'inside'}}
            }]
        };
        myCharts4.setOption(options4);
        // èµ‹å€¼
        myCharts4.setOption({
            series: [{
                data: [
                    {name: "西藏", value: 60},
                    {name: "青海", value: 167},
                    {name: "宁夏", value: 210},
                    {name: "海南", value: 252},
                    {name: "甘肃", value: 502},
                    {name: "贵州", value: 570},
                    {name: "新疆", value: 661},
                    {name: "云南", value: 8890},
                    {name: "重庆", value: 10010},
                    {name: "吉林", value: 5056},
                    {name: "山西", value: 2123},
                    {name: "天津", value: 9130},
                    {name: "江西", value: 10170},
                    {name: "广西", value: 6172},
                    {name: "陕西", value: 9251},
                    {name: "黑龙江", value: 5125},
                    {name: "内蒙古", value: 1435},
                    {name: "安徽", value: 9530},
                    {name: "北京", value: 51919},
                    {name: "福建", value: 3756},
                    {name: "上海", value: 59190},
                    {name: "湖北", value: 37109},
                    {name: "湖南", value: 8966},
                    {name: "四川", value: 31020},
                    {name: "辽宁", value: 7222},
                    {name: "河北", value: 3451},
                    {name: "河南", value: 9693},
                    {name: "浙江", value: 62310},
                    {name: "山东", value: 39231},
                    {name: "江苏", value: 35911},
                    {name: "广东", value: 55891}
                ]
            }]
        });
        myCharts4.setOption({series: [{data: mainData.weekAiNumList}]});
        /** æ¸²æŸ“词云图表 */
        var myCharts5 = echarts.init(document.getElementById('consoleChartsWord'));
        /** æ¸²æŸ“周统计图表 */
        var myCharts5 = echarts.init(document.getElementById('snapChartsWeek'));
        var options5 = {
            tooltip: {show: true},
            tooltip: {trigger: 'axis', axisPointer: {lineStyle: {color: '#E0E0E0'}}},
            color: ['#FFA800'],
            legend: {
                orient: 'vertical', right: '0px', top: '0px',
                data: ['抓拍数'], textStyle: {color: '#595959'}
            },
            grid: {top: '75px', left: '35px', right: '55px', bottom: '40px'},
            xAxis: {
                name: '日期',
                nameTextStyle: {color: '#595959'},
                type: 'category',
                data: mainData.weekSnapDateList,
                axisLine: {lineStyle: {color: '#E0E0E0'}, symbol: ['none', 'arrow'], symbolOffset: [0, 10]},
                axisLabel: {color: '#8c8c8c'},
                axisTick: {alignWithLabel: true}
            },
            yAxis: {
                name: '数量',
                nameTextStyle: {color: '#595959'},
                type: 'value',
                boundaryGap: ['0', '20%'],
                axisTick: {show: false},
                axisLine: {lineStyle: {color: '#E0E0E0'}, symbol: ['none', 'arrow'], symbolOffset: [0, 10]},
                axisLabel: {color: '#8c8c8c'},
                splitLine: {show: false},
                splitArea: {show: false},
                minInterval: 1
            },
            series: [{
                name: "搜索量",
                type: 'wordCloud',
                shape: 'diamond',
                width: '100%',
                height: '100%',
                sizeRange: [12, 23],
                gridSize: 6,
                textStyle: {
                    normal: {
                        color: function () {
                            return 'rgb(' + [
                                Math.round(Math.random() * 160),
                                Math.round(Math.random() * 160),
                                Math.round(Math.random() * 160)
                            ].join(',') + ')';
                        }
                    },
                    emphasis: {shadowBlur: 10, shadowColor: '#666'}
                }, data: []
                name: '抓拍信息', type: 'bar', stack: 'one', barMaxWidth: '30px',
                label: {normal: {show: true, position: 'inside'}}
            }]
        };
        myCharts5.setOption(options5);
        // èµ‹å€¼
        myCharts5.setOption({
            series: [{
                data: [
                    {name: "软妹子", value: 23},
                    {name: "汪星人", value: 23},
                    {name: "长腿欧巴", value: 23},
                    {name: "萝莉", value: 22},
                    {name: "è¾£~", value: 22},
                    {name: "K歌", value: 22},
                    {name: "大长腿", value: 21},
                    {name: "川妹子", value: 21},
                    {name: "女神", value: 21},
                    {name: "米粉", value: 20},
                    {name: "专注设计", value: 20},
                    {name: "逛街", value: 20},
                    {name: "黑长直", value: 20},
                    {name: "海纳百川", value: 19},
                    {name: "萌萌哒", value: 19},
                    {name: "坚持", value: 19},
                    {name: "话唠", value: 19},
                    {name: "果粉", value: 18},
                    {name: "喵星人", value: 18},
                    {name: "花粉", value: 18},
                    {name: "衬衫控", value: 18},
                    {name: "宅男", value: 17},
                    {name: "小清新", value: 17},
                    {name: "眼镜男", value: 17},
                    {name: "琼瑶", value: 17},
                    {name: "穷游党", value: 16},
                    {name: "铲屎官", value: 16},
                    {name: "正太", value: 16},
                    {name: "中二病", value: 16},
                    {name: "夜猫子", value: 15},
                    {name: "逗比", value: 15},
                    {name: "腹黑", value: 15},
                    {name: "吃鸡", value: 15},
                    {name: "为了联盟", value: 14},
                    {name: "背包客", value: 14},
                    {name: "民谣", value: 14},
                    {name: "为了部落", value: 14},
                    {name: "懒癌患者", value: 13},
                    {name: "追剧", value: 13},
                    {name: "IT民工", value: 13},
                    {name: "CNB成员", value: 13},
                    {name: "选择困难", value: 12},
                    {name: "锤粉", value: 12},
                    {name: "欧皇", value: 12},
                    {name: "仙气十足", value: 12}
                ]
            }]
        });
        myCharts5.setOption({series: [{data: mainData.weekSnapNumList}]});
        /** çª—口大小改变事件 */
        window.onresize = function () {
@@ -496,6 +391,7 @@
        };
    });
</script>
</body>
</html>