czt
2026-01-19 ac44ace07789c84c3a2612555417c58a3593a027
fzzy-igdss-web/src/main/java/com/fzzy/common/manager/CommonManager.java
@@ -2,20 +2,28 @@
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.DepotType;
import com.fzzy.igds.data.IgdsBaseParam;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.data.MainData;
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.WorkStatus;
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.springframework.beans.factory.annotation.Autowired;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
/**
@@ -33,10 +41,8 @@
    private DicService dicService;
    @Resource
    private CoreDeptService coreDeptService;
    @Autowired
    private SecCameraService secCameraService;
    @Resource
    private ISysUserService userService;
    private SecCameraService secCameraService;
    @Resource
    private ISysDeptService iSysDeptService;
    @Resource
@@ -45,6 +51,29 @@
    private CoreCompanyService coreCompanyService;
    @Resource
    private SloganService sloganService;
    @Resource
    private WorkOrderService workOrderService;
    @Resource
    private InoutRecordService inoutRecordService;
    @Resource
    private EventInfoService eventInfoService;
    @Resource
    private SnapRecordService snapRecordService;
    @Resource
    private GatewaySerService gatewaySerService;
    /**
     * 根据库区编码获取库区网关信息
     * @param deptId
     * @return
     */
    public GatewaySer getGatewaySerByDeptId(String deptId) {
        if(StringUtils.isBlank(deptId)){
            deptId = ContextUtil.subDeptId(null);
        }
        return gatewaySerService.getCacheSerByDeptId(deptId);
    }
    /**
     * 根据库区编码获取库区下所有仓库列表
@@ -59,6 +88,7 @@
    /**
     * 获取库区鸟瞰图
     *
     * @param deptId
     * @return
     */
@@ -72,6 +102,7 @@
    /**
     * 判断路径下文件是否存在,不存在则给默认
     *
     * @param imgPath
     * @param tag
     * @return
@@ -98,12 +129,38 @@
     * @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;
        }
    }
    /**
     * 根据仓库类型获取库区下仓库列表
     * @param deptId
     * @param depotTypes  类型多个,用逗号隔开
     * @return
     */
    public List<Depot> listAllDepot(String deptId, String depotTypes) {
        List<Depot> depots = this.listDepotByDeptId(deptId);
        if(null == depots || depots.isEmpty()){
            return null;
        }
        return depotService.getCacheDepotList(ContextUtil.getCompanyId(), deptId);
        List<Depot> result = new ArrayList<>();
        for (Depot depot : depots) {
            if (depotTypes.contains(depot.getDepotType())) {
                result.add(depot);
            }
        }
        return result;
    }
    /**
@@ -115,13 +172,13 @@
    /**
     * 获取分库列表
     * 根据公司ID获取公司下的分库列表
     *
     * @author sgj
     * @date 2025/12/12
     */
    public List<Dept> listDeptData() {
        return coreDeptService.getDeptData();
    public List<Dept> listDeptData(String parentId) {
        return coreDeptService.getDeptByUserType(parentId);
    }
    /**
@@ -142,27 +199,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 +214,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 +222,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.getTodoNumByUser(user);
        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;
    }
}