getObtainFactoryInboundAndOutboundStatus(@RequestParam Long factoryId) {
+ ObtainFactoryInboundAndOutboundStatusVO data = screenDataService.getObtainFactoryInboundAndOutboundStatus(factoryId);
+ return success(data);
+ }
}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/DataOverviewVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/DataOverviewVO.java
new file mode 100644
index 00000000..915b4467
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/DataOverviewVO.java
@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 功能描述
+ *
+ * @author: yj
+ * @date: 2024年03月05日 13:55
+ */
+@Schema(description = "大屏数据 - 数据总揽")
+@Data
+public class DataOverviewVO {
+ @Schema(description = "员工数量")
+ private Integer total;
+ @Schema(description = "窑炉数量")
+ private Integer ylNum;
+ @Schema(description = "叉车台数")
+ private Integer forkliftTotal;
+ @Schema(description = "叉车运行数量")
+ private Integer truckOnNum;
+ @Schema(description = "叉车未运行数量")
+ private Integer truckOffNum;
+ @Schema(description = "打包线数量")
+ private Integer dbxNum;
+ @Schema(description = "托盘数")
+ private Integer tpNum;
+ @Schema(description = "绑带数")
+ private Integer bdNum;
+ @Schema(description = "出库")
+ private Integer outTotalNum;
+ @Schema(description = "入库")
+ private Integer inTotalNum;
+}
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/EnergyConservationVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/EnergyConservationVO.java
new file mode 100644
index 00000000..06713d0c
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/EnergyConservationVO.java
@@ -0,0 +1,23 @@
+package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 功能描述
+ *
+ * @author: yj
+ * @date: 2024年03月05日 13:55
+ */
+@Data
+public class EnergyConservationVO {
+ @Schema(description = "工厂名称")
+ private String name;
+ @Schema(description = "时间")
+ private String time;
+ @Schema(description = "排放量")
+ private Integer emissions;
+ @Schema(description = "叉车数")
+ private Integer forkliftTotal;
+
+}
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/ExcellentRateRankingVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/ExcellentRateRankingVO.java
new file mode 100644
index 00000000..e7d3580a
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/ExcellentRateRankingVO.java
@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 功能描述
+ *
+ * @author: yj
+ * @date: 2024年03月05日 13:55
+ */
+@Schema(description = "优等率排行")
+@Data
+public class ExcellentRateRankingVO {
+ @Schema(description = "工厂")
+ private String name;
+ @Schema(description = "优等率")
+ private Double excellentRate;
+}
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryPackLineInfoVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryPackLineInfoVO.java
new file mode 100644
index 00000000..87a52e40
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryPackLineInfoVO.java
@@ -0,0 +1,24 @@
+package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 功能描述
+ *
+ * @author: yj
+ * @date: 2024年03月05日 13:55
+ */
+@Data
+public class FactoryPackLineInfoVO {
+ @Schema(description = "规格id")
+ private Long id;
+ @Schema(description = "规格名称")
+ private String name;
+ @Schema(description = "今日打包总数")
+ private Integer dayNum;
+ @Schema(description = "本周打包总数")
+ private Integer weekNum;
+ @Schema(description = "本月打包总数")
+ private Integer monthNum;
+}
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/InboundAndOutboundOverviewVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/InboundAndOutboundOverviewVO.java
new file mode 100644
index 00000000..aac133a8
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/InboundAndOutboundOverviewVO.java
@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 功能描述
+ *
+ * @author: yj
+ * @date: 2024年03月05日 13:55
+ */
+@Schema(description = "大屏数据 - 出入库")
+@Data
+public class InboundAndOutboundOverviewVO {
+ @Schema(description = "工厂")
+ private String name;
+ @Schema(description = "出库")
+ private Integer outTotalNum;
+ @Schema(description = "入库")
+ private Integer inTotalNum;
+}
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/ObtainFactoryInboundAndOutboundStatusVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/ObtainFactoryInboundAndOutboundStatusVO.java
new file mode 100644
index 00000000..544c3e88
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/ObtainFactoryInboundAndOutboundStatusVO.java
@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 功能描述
+ *
+ * @author: yj
+ * @date: 2024年03月05日 13:55
+ */
+@Data
+public class ObtainFactoryInboundAndOutboundStatusVO {
+ @Schema(description = "今日入库")
+ private Integer inToday;
+ @Schema(description = "本月入库")
+ private Integer inMonth;
+
+ @Schema(description = "今日出库")
+ private Integer outToday;
+ @Schema(description = "本月出库")
+ private Integer outMonth;
+
+ @Schema(description = "今日破损")
+ private Integer damagedTotal;
+ @Schema(description = "同比昨日上升")
+ private Double increaseCompared;
+}
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factorydata/FactoryDataDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factorydata/FactoryDataDO.java
new file mode 100644
index 00000000..0792d0be
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factorydata/FactoryDataDO.java
@@ -0,0 +1,74 @@
+package cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata;
+
+import lombok.*;
+
+import java.time.LocalDate;
+import java.util.*;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 工厂出库入库数据 DO
+ *
+ * @author 艾楷
+ */
+@TableName("sf_factory_data")
+@KeySequence("sf_factory_data_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class FactoryDataDO extends BaseDO {
+
+ /**
+ * 主键id
+ */
+ @TableId
+ private Long id;
+ /**
+ * 工厂id
+ */
+ private Long factoryId;
+ /**
+ * 进出库类型 1出库 2进库
+ */
+ private Integer dataType;
+ /**
+ * 日期
+ */
+ private LocalDate date;
+ /**
+ * 搬运工姓名
+ */
+ private String porterName;
+ /**
+ * 叉车司机姓名
+ */
+ private String dirverName;
+ /**
+ * 仓库看管员姓名
+ */
+ private String keeperName;
+ /**
+ * 总数量
+ */
+ private Integer totalNum;
+ /**
+ * 总金额
+ */
+ private BigDecimal totalAmount;
+ /**
+ * 总车数
+ */
+ private Integer totalTruck;
+ /**
+ * 搬运总数
+ */
+ private Integer moveNum;
+
+}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factorydataoverview/FactoryDataOverviewDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factorydataoverview/FactoryDataOverviewDO.java
new file mode 100644
index 00000000..47da695b
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factorydataoverview/FactoryDataOverviewDO.java
@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydataoverview;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 工厂数据总览 DO
+ *
+ * @author 艾楷
+ */
+@TableName("sf_factory_data_overview")
+@KeySequence("sf_factory_data_overview_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class FactoryDataOverviewDO extends BaseDO {
+
+ /**
+ * 主键id
+ */
+ @TableId
+ private Long id;
+ /**
+ * 工厂id
+ */
+ private Long factoryId;
+ /**
+ * 工厂全称
+ */
+ private String fullName;
+ /**
+ * 员工简称
+ */
+ private String shortName;
+ /**
+ * 城市名称
+ */
+ private String cityName;
+ /**
+ * 工人数量
+ */
+ private Integer workerNum;
+ /**
+ * 叉车总数
+ */
+ private Integer truckTotalNum;
+ /**
+ * 打包线数量
+ */
+ private Integer dbxNum;
+ /**
+ * 托盘数量
+ */
+ private Integer tpNum;
+ /**
+ * 绑带数量
+ */
+ private Integer bdNum;
+
+}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java
index 349c22da..bb5bd671 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
@@ -24,8 +25,9 @@ import java.math.BigDecimal;
public class FactoryInfoDO extends BaseDO {
/**
- * 1: 省,2 市,3区
+ * 0:全国, 1: 省,2 市,3区
*/
+ public static final Integer ADDRESS_TYPE_NATIONWIDE = 0;
public static final Integer ADDRESS_TYPE_PROVINCE = 1;
public static final Integer ADDRESS_TYPE_CITY = 2;
public static final Integer ADDRESS_TYPE_DISTRICT_NAME = 3;
@@ -69,7 +71,8 @@ public class FactoryInfoDO extends BaseDO {
*
* 枚举 {@link TODO infra_codegen_template_type 对应的类}
*/
- private Long districtId;
+ @TableField(value = "district_id")
+ private Long adCode;
/**
* 省名称
*/
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java
new file mode 100644
index 00000000..9a451b4e
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java
@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 工厂出库入库数据 Mapper
+ *
+ * @author 艾楷
+ */
+@Mapper
+public interface FactoryDataMapper extends BaseMapperX {
+
+ default PageResult selectPage(FactoryDataPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(FactoryDataDO::getFactoryId, reqVO.getFactoryId())
+ .eqIfPresent(FactoryDataDO::getDataType, reqVO.getDataType())
+ .betweenIfPresent(FactoryDataDO::getDate, reqVO.getDate())
+ .likeIfPresent(FactoryDataDO::getPorterName, reqVO.getPorterName())
+ .likeIfPresent(FactoryDataDO::getDirverName, reqVO.getDirverName())
+ .likeIfPresent(FactoryDataDO::getKeeperName, reqVO.getKeeperName())
+ .eqIfPresent(FactoryDataDO::getTotalNum, reqVO.getTotalNum())
+ .eqIfPresent(FactoryDataDO::getTotalAmount, reqVO.getTotalAmount())
+ .eqIfPresent(FactoryDataDO::getTotalTruck, reqVO.getTotalTruck())
+ .eqIfPresent(FactoryDataDO::getMoveNum, reqVO.getMoveNum())
+ .betweenIfPresent(FactoryDataDO::getCreateTime, reqVO.getCreateTime())
+ .orderByDesc(FactoryDataDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydataoverview/FactoryDataOverviewMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydataoverview/FactoryDataOverviewMapper.java
new file mode 100644
index 00000000..c48bcc5f
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydataoverview/FactoryDataOverviewMapper.java
@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydataoverview;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydataoverview.vo.FactoryDataOverviewPageReqVO;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydataoverview.FactoryDataOverviewDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 工厂数据总览 Mapper
+ *
+ * @author 艾楷
+ */
+@Mapper
+public interface FactoryDataOverviewMapper extends BaseMapperX {
+
+ default PageResult selectPage(FactoryDataOverviewPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(FactoryDataOverviewDO::getFactoryId, reqVO.getFactoryId())
+ .likeIfPresent(FactoryDataOverviewDO::getFullName, reqVO.getFullName())
+ .likeIfPresent(FactoryDataOverviewDO::getShortName, reqVO.getShortName())
+ .likeIfPresent(FactoryDataOverviewDO::getCityName, reqVO.getCityName())
+ .eqIfPresent(FactoryDataOverviewDO::getWorkerNum, reqVO.getWorkerNum())
+ .eqIfPresent(FactoryDataOverviewDO::getTruckTotalNum, reqVO.getTruckTotalNum())
+ .eqIfPresent(FactoryDataOverviewDO::getDbxNum, reqVO.getDbxNum())
+ .eqIfPresent(FactoryDataOverviewDO::getTpNum, reqVO.getTpNum())
+ .eqIfPresent(FactoryDataOverviewDO::getBdNum, reqVO.getBdNum())
+ .betweenIfPresent(FactoryDataOverviewDO::getCreateTime, reqVO.getCreateTime())
+ .orderByDesc(FactoryDataOverviewDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java
index 5a742b92..c69ff244 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.Fact
import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.FactoryRollDataRespVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -34,4 +35,12 @@ public interface FactoryInfoMapper extends BaseMapperX {
* @return
*/
List getFactoryRollData();
+
+ /**
+ * 根据工厂ID获取天气代码。
+ *
+ * @param factoryId 工厂的唯一标识符,类型为Long。
+ * @return 返回与给定工厂ID相关联的天气代码,类型为String。
+ */
+ String getWeatherCodeByFactoryId(@Param("factoryId") Long factoryId, @Param("areaCode") String areaCode);
}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java
new file mode 100644
index 00000000..a9bfe7f0
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java
@@ -0,0 +1,73 @@
+package cn.iocoder.yudao.module.smartfactory.service.factorydata;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataSaveReqVO;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO;
+
+import javax.validation.Valid;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 工厂出库入库数据 Service 接口
+ *
+ * @author 艾楷
+ */
+public interface FactoryDataService {
+
+ /**
+ * 创建工厂出库入库数据
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createData(@Valid FactoryDataSaveReqVO createReqVO);
+
+ /**
+ * 更新工厂出库入库数据
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateData(@Valid FactoryDataSaveReqVO updateReqVO);
+
+ /**
+ * 删除工厂出库入库数据
+ *
+ * @param id 编号
+ */
+ void deleteData(Long id);
+
+ /**
+ * 获得工厂出库入库数据
+ *
+ * @param id 编号
+ * @return 工厂出库入库数据
+ */
+ FactoryDataDO getData(Long id);
+
+ /**
+ * 获得工厂出库入库数据分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 工厂出库入库数据分页
+ */
+ PageResult getDataPage(FactoryDataPageReqVO pageReqVO);
+
+ /**
+ * 获取当天的所有数据
+ *
+ * @return
+ */
+ List getTodayInboundAndOutboundOverview();
+
+ /**
+ * 根据日期和工厂过滤
+ *
+ * @param factoryId
+ * @param beginDay
+ * @param endDay
+ * @return
+ */
+ List getByTimeAndFactoryId(Long factoryId, Date beginDay, Date endDay);
+}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java
new file mode 100644
index 00000000..4ac5da94
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java
@@ -0,0 +1,77 @@
+package cn.iocoder.yudao.module.smartfactory.service.factorydata;
+
+import cn.hutool.core.date.DateUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataSaveReqVO;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO;
+import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 工厂出库入库数据 Service 实现类
+ *
+ * @author 艾楷
+ */
+@Service
+@Validated
+public class FactoryDataServiceImpl implements FactoryDataService {
+
+ @Resource
+ private FactoryDataMapper dataMapper;
+
+ @Override
+ public Long createData(FactoryDataSaveReqVO createReqVO) {
+ // 插入
+ FactoryDataDO data = BeanUtils.toBean(createReqVO, FactoryDataDO.class);
+ dataMapper.insert(data);
+ // 返回
+ return data.getId();
+ }
+
+ @Override
+ public void updateData(FactoryDataSaveReqVO updateReqVO) {
+ // 更新
+ FactoryDataDO updateObj = BeanUtils.toBean(updateReqVO, FactoryDataDO.class);
+ dataMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteData(Long id) {
+ // 删除
+ dataMapper.deleteById(id);
+ }
+
+ @Override
+ public FactoryDataDO getData(Long id) {
+ return dataMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getDataPage(FactoryDataPageReqVO pageReqVO) {
+ return dataMapper.selectPage(pageReqVO);
+ }
+
+ @Override
+ public List getTodayInboundAndOutboundOverview() {
+ return dataMapper.selectList(new LambdaQueryWrapperX()
+ .eq(FactoryDataDO::getDate, DateUtil.parse("2023-11-05")));
+ }
+
+ @Override
+ public List getByTimeAndFactoryId(Long factoryId, Date beginDay, Date endDay) {
+ return dataMapper.selectList(new LambdaQueryWrapperX()
+ .ge(FactoryDataDO::getDate, beginDay)
+ .le(FactoryDataDO::getDate, endDay)
+ .eq(FactoryDataDO::getFactoryId, factoryId));
+ }
+
+}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydataoverview/FactoryDataOverviewService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydataoverview/FactoryDataOverviewService.java
new file mode 100644
index 00000000..e0cf497b
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydataoverview/FactoryDataOverviewService.java
@@ -0,0 +1,62 @@
+package cn.iocoder.yudao.module.smartfactory.service.factorydataoverview;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydataoverview.vo.FactoryDataOverviewPageReqVO;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydataoverview.vo.FactoryDataOverviewSaveReqVO;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydataoverview.FactoryDataOverviewDO;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 工厂数据总览 Service 接口
+ *
+ * @author 艾楷
+ */
+public interface FactoryDataOverviewService {
+
+ /**
+ * 创建工厂数据总览
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createDataOverview(@Valid FactoryDataOverviewSaveReqVO createReqVO);
+
+ /**
+ * 更新工厂数据总览
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateDataOverview(@Valid FactoryDataOverviewSaveReqVO updateReqVO);
+
+ /**
+ * 删除工厂数据总览
+ *
+ * @param id 编号
+ */
+ void deleteDataOverview(Long id);
+
+ /**
+ * 获得工厂数据总览
+ *
+ * @param id 编号
+ * @return 工厂数据总览
+ */
+ FactoryDataOverviewDO getDataOverview(Long id);
+
+ /**
+ * 获得工厂数据总览分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 工厂数据总览分页
+ */
+ PageResult getDataOverviewPage(FactoryDataOverviewPageReqVO pageReqVO);
+
+ /**
+ * 列表
+ *
+ * @return
+ */
+ List list();
+}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydataoverview/FactoryDataOverviewServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydataoverview/FactoryDataOverviewServiceImpl.java
new file mode 100644
index 00000000..89b0edf0
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydataoverview/FactoryDataOverviewServiceImpl.java
@@ -0,0 +1,65 @@
+package cn.iocoder.yudao.module.smartfactory.service.factorydataoverview;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydataoverview.vo.FactoryDataOverviewPageReqVO;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydataoverview.vo.FactoryDataOverviewSaveReqVO;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydataoverview.FactoryDataOverviewDO;
+import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydataoverview.FactoryDataOverviewMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+
+/**
+ * 工厂数据总览 Service 实现类
+ *
+ * @author 艾楷
+ */
+@Service
+@Validated
+public class FactoryDataOverviewServiceImpl implements FactoryDataOverviewService {
+
+ @Resource
+ private FactoryDataOverviewMapper dataOverviewMapper;
+
+ @Override
+ public Long createDataOverview(FactoryDataOverviewSaveReqVO createReqVO) {
+ // 插入
+ FactoryDataOverviewDO dataOverview = BeanUtils.toBean(createReqVO, FactoryDataOverviewDO.class);
+ dataOverviewMapper.insert(dataOverview);
+ // 返回
+ return dataOverview.getId();
+ }
+
+ @Override
+ public void updateDataOverview(FactoryDataOverviewSaveReqVO updateReqVO) {
+ // 更新
+ FactoryDataOverviewDO updateObj = BeanUtils.toBean(updateReqVO, FactoryDataOverviewDO.class);
+ dataOverviewMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteDataOverview(Long id) {
+ // 删除
+ dataOverviewMapper.deleteById(id);
+ }
+
+ @Override
+ public FactoryDataOverviewDO getDataOverview(Long id) {
+ return dataOverviewMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getDataOverviewPage(FactoryDataOverviewPageReqVO pageReqVO) {
+ return dataOverviewMapper.selectPage(pageReqVO);
+ }
+
+ @Override
+ public List list() {
+ return dataOverviewMapper.selectList();
+ }
+
+}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java
index 264ab5b0..c3a53f15 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java
@@ -58,11 +58,10 @@ public interface FactoryInfoService {
/**
* 省市区类型 + code 搜索工厂
*
- * @param type
* @param code
* @return
*/
- List getProvincesData(Integer type, String code);
+ List getProvincesData(String code);
/**
* 大屏数据 - 工厂基础滚动数据
@@ -70,4 +69,19 @@ public interface FactoryInfoService {
* @return
*/
List getFactoryRollData();
-}
\ No newline at end of file
+
+ /**
+ * 工厂列表
+ *
+ * @return
+ */
+ List list();
+
+ /**
+ * 根据工厂ID获取天气代码。
+ *
+ * @param factoryId 工厂的唯一标识符,类型为Long。
+ * @return 返回与给定工厂ID相关联的天气代码,类型为String。
+ */
+ String getWeatherCodeByFactoryId(Long factoryId, String areaCode);
+}
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java
index 895db073..ca2408c8 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java
@@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.smartfactory.service.factoryinfo;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.ip.core.Area;
+import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoSaveReqVO;
@@ -77,28 +79,39 @@ public class FactoryInfoServiceImpl implements FactoryInfoService {
}
@Override
- public List getProvincesData(Integer type, String code) {
+ public List getProvincesData(String code) {
+ // -- 获取当前的地区
+ Area area = AreaUtils.getArea(Integer.valueOf(code));
List vos = new ArrayList<>();
- List dos = factoryInfoMapper.selectList(new LambdaQueryWrapperX()
- .eq(FactoryInfoDO.ADDRESS_TYPE_PROVINCE.equals(type), FactoryInfoDO::getProvinceId, code)
- .eq(FactoryInfoDO.ADDRESS_TYPE_CITY.equals(type), FactoryInfoDO::getCityId, code)
- .eq(FactoryInfoDO.ADDRESS_TYPE_DISTRICT_NAME.equals(type), FactoryInfoDO::getDistrictId, code)
+ LambdaQueryWrapperX lambdaQueryWrapperX = new LambdaQueryWrapperX();
+ lambdaQueryWrapperX.ne(FactoryInfoDO::getId, 1L);
+ Integer type = area.getType() - 1;
+ if (!type.equals(FactoryInfoDO.ADDRESS_TYPE_NATIONWIDE)) {
+ lambdaQueryWrapperX.eq(FactoryInfoDO.ADDRESS_TYPE_PROVINCE.equals(type), FactoryInfoDO::getProvinceId, code)
+ .eq(FactoryInfoDO.ADDRESS_TYPE_CITY.equals(type), FactoryInfoDO::getCityId, code)
+ .eq(FactoryInfoDO.ADDRESS_TYPE_DISTRICT_NAME.equals(type), FactoryInfoDO::getAdCode, code);
+ }
+ List dos = factoryInfoMapper.selectList(
+ lambdaQueryWrapperX
);
Map> map = new HashMap<>();
- if (FactoryInfoDO.ADDRESS_TYPE_PROVINCE.equals(type)){
+ if (FactoryInfoDO.ADDRESS_TYPE_NATIONWIDE.equals(type)) {
map = dos.stream().collect(Collectors.groupingBy(FactoryInfoDO::getProvinceId));
}
- if (FactoryInfoDO.ADDRESS_TYPE_CITY.equals(type)){
+ if (FactoryInfoDO.ADDRESS_TYPE_PROVINCE.equals(type)) {
map = dos.stream().collect(Collectors.groupingBy(FactoryInfoDO::getCityId));
}
- if (FactoryInfoDO.ADDRESS_TYPE_DISTRICT_NAME.equals(type)){
- map = dos.stream().collect(Collectors.groupingBy(FactoryInfoDO::getDistrictId));
+ if (FactoryInfoDO.ADDRESS_TYPE_CITY.equals(type)) {
+ map = dos.stream().collect(Collectors.groupingBy(FactoryInfoDO::getAdCode));
+ }
+ if (FactoryInfoDO.ADDRESS_TYPE_DISTRICT_NAME.equals(type)) {
+ map = dos.stream().collect(Collectors.groupingBy(FactoryInfoDO::getId));
}
for (Map.Entry> entry : map.entrySet()) {
ProvincesDataRespVO vo = new ProvincesDataRespVO();
vo.setAdCode(entry.getKey());
vo.setValue(entry.getValue().size());
- vo.setVos(dos);
+ vo.setVos(entry.getValue());
vos.add(vo);
}
return vos;
@@ -109,4 +122,14 @@ public class FactoryInfoServiceImpl implements FactoryInfoService {
return factoryInfoMapper.getFactoryRollData();
}
+ @Override
+ public List list() {
+ return factoryInfoMapper.selectList();
+ }
+
+ @Override
+ public String getWeatherCodeByFactoryId(Long factoryId, String areaCode) {
+ return factoryInfoMapper.getWeatherCodeByFactoryId(factoryId, areaCode);
+ }
+
}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/hik/HikService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/hik/HikService.java
new file mode 100644
index 00000000..5c2dffb2
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/hik/HikService.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.smartfactory.service.hik;
+
+import cn.hutool.json.JSONObject;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.hik.vo.CameraReplayDTO;
+
+/**
+ * Hik Service 接口
+ *
+ * @author 艾楷
+ */
+public interface HikService {
+
+ /**
+ * 查询播放地址
+ *
+ * @param cameraCode
+ * @param streamType
+ * @return
+ */
+ String getPreviewUrlsApi(String cameraCode, Integer streamType);
+
+ /**
+ * 获取回放流
+ *
+ * @param cameraReplayDTO
+ * @return
+ */
+ JSONObject getReplayUrl(CameraReplayDTO cameraReplayDTO);
+}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/hik/HikServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/hik/HikServiceImpl.java
new file mode 100644
index 00000000..ac57fe8a
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/hik/HikServiceImpl.java
@@ -0,0 +1,88 @@
+package cn.iocoder.yudao.module.smartfactory.service.hik;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import cn.iocoder.yudao.module.smartfactory.constant.ArtemisApiConstant;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.hik.vo.CameraReplayDTO;
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.hikvision.artemis.sdk.ArtemisHttpUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.IS0_8601;
+
+/**
+ * Hik Service 接口
+ *
+ * @author 艾楷
+ */
+@Service
+@Validated
+@Slf4j
+public class HikServiceImpl implements HikService {
+
+ @Override
+ public String getPreviewUrlsApi(String cameraCode, Integer streamType) {
+ final String previewUrlsApi = ArtemisApiConstant.previewUrlsApi;
+ Map path = new HashMap(1) {
+ {
+ put("https://", previewUrlsApi);
+ }
+ };
+ JSONObject body = new JSONObject();
+ body.set("cameraIndexCode", cameraCode);
+ body.set("streamType", streamType);
+ body.set("protocol", "ws");
+ body.set("transmode", 1);
+ body.set("expand", "streamform=ps");
+ try {
+ String result = ArtemisHttpUtil
+ .doPostStringArtemis(path, JSONUtil.toJsonStr(body), null, null, "application/json");
+ log.info("{}监控查看预览地址返回:{}", JSONUtil.toJsonStr(body), result);
+ if (StringUtils.isEmpty(result)) {
+// throw new ServiceException("监控查看预览地址返回为空");
+ System.out.println("监控查看预览地址返回为空");
+ }
+ JSONObject json = JSONUtil.parseObj(result);
+ String url = "";
+ if (json.getJSONObject("data") != null) {
+ url = json.getJSONObject("data").getStr("url");
+ }
+ return url;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ @Override
+ public JSONObject getReplayUrl(CameraReplayDTO replayDTO) {
+ final String replayUrlApi = ArtemisApiConstant.replayUrlApi;
+ Map path = new HashMap(1) {
+ {
+ put("https://", replayUrlApi);
+ }
+ };
+ JSONObject body = new JSONObject();
+ body.set("cameraIndexCode", replayDTO.getCameraIndexCode());
+ body.set("recordLocation", replayDTO.getRecordLocation());
+ body.set("protocol", "ws");
+ body.set("transmode", 1);
+ body.set("beginTime", DateUtil.format(DateUtil.parse(replayDTO.getBeginTime()), IS0_8601));
+ body.set("endTime", DateUtil.format(DateUtil.parse(replayDTO.getEndTime()), IS0_8601));
+ try {
+ String result = ArtemisHttpUtil.doPostStringArtemis(path, JSONUtil.toJsonStr(body), null, null, "application/json");
+ JSONObject json = JSONUtil.parseObj(result);
+ return json;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packagedata/PackageDataService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packagedata/PackageDataService.java
index 628df3e3..ed14ba67 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packagedata/PackageDataService.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packagedata/PackageDataService.java
@@ -3,10 +3,10 @@ package cn.iocoder.yudao.module.smartfactory.service.packagedata;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.smartfactory.controller.admin.packagedata.vo.PackageDataPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.packagedata.vo.PackageDataSaveReqVO;
-import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.FactoryPackLineDataRespVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packagedata.PackageDataDO;
import javax.validation.Valid;
+import java.util.Date;
import java.util.List;
/**
@@ -61,4 +61,14 @@ public interface PackageDataService {
* @return
*/
List getFactoryPackLineInfo(Long factoryId);
+
+ /**
+ * 列表 - 时间参数
+ *
+ * @param factoryId
+ * @param beginTime
+ * @param endTime
+ * @return
+ */
+ List getFactoryPackLineInfoByTime(Long factoryId, Date beginTime, Date endTime);
}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packagedata/PackageDataServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packagedata/PackageDataServiceImpl.java
index 62720a96..38441732 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packagedata/PackageDataServiceImpl.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packagedata/PackageDataServiceImpl.java
@@ -5,13 +5,13 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.smartfactory.controller.admin.packagedata.vo.PackageDataPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.packagedata.vo.PackageDataSaveReqVO;
-import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.FactoryPackLineDataRespVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packagedata.PackageDataDO;
import cn.iocoder.yudao.module.smartfactory.dal.mysql.packagedata.PackageDataMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
+import java.util.Date;
import java.util.List;
@@ -64,4 +64,11 @@ public class PackageDataServiceImpl implements PackageDataService {
return packageDataMapper.selectList(new LambdaQueryWrapperX().eq(PackageDataDO::getFactoryId, factoryId));
}
+ @Override
+ public List getFactoryPackLineInfoByTime(Long factoryId, Date beginTime, Date endTime) {
+ return packageDataMapper.selectList(new LambdaQueryWrapperX().eq(PackageDataDO::getFactoryId, factoryId)
+ .ge(PackageDataDO::getCreateTime, beginTime)
+ .le(PackageDataDO::getCreateTime, endTime));
+ }
+
}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataService.java
index 96d8e1c8..178d6cc1 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataService.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataService.java
@@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.smartfactory.service.screendata;
import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.*;
-import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packagedata.PackageDataDO;
import java.util.List;
@@ -19,7 +18,7 @@ public interface ScreenDataService {
* @param code 省/市/区编码
* @return 显示数据
*/
- List getProvincesData(Integer type, String code);
+ List getProvincesData(String code);
/**
@@ -77,5 +76,50 @@ public interface ScreenDataService {
* @param factoryId
* @return
*/
- List getFactoryPackLineInfo(Long factoryId);
+ List getFactoryPackLineInfo(Long factoryId);
+
+ /**
+ * 获取阿里云地区
+ *
+ * @param code
+ * @param type
+ * @return
+ */
+ String getAliYunGeo(String code, Integer type);
+
+ /**
+ * 获取大屏数据总揽
+ *
+ * @return
+ */
+ DataOverviewVO getDataOverview();
+
+ /**
+ * 获取大屏出入库
+ *
+ * @return
+ */
+ List getInboundAndOutboundOverview();
+
+ /**
+ * 优等率排行
+ *
+ * @return
+ */
+ List excellentRateRanking();
+
+ /**
+ * 节能减排
+ *
+ * @return
+ */
+ List energyConservation(Long factoryId);
+
+ /**
+ * 获取工厂出入库情况
+ *
+ * @param factoryId
+ * @return
+ */
+ ObtainFactoryInboundAndOutboundStatusVO getObtainFactoryInboundAndOutboundStatus(Long factoryId);
}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataServiceImpl.java
index 4c3469b6..865dfe5e 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataServiceImpl.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataServiceImpl.java
@@ -1,10 +1,22 @@
package cn.iocoder.yudao.module.smartfactory.service.screendata;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.Month;
+import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.*;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydataoverview.FactoryDataOverviewDO;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packagedata.PackageDataDO;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.screenfactoryextra.ScreenFactoryExtraDO;
+import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydataoverview.FactoryDataOverviewMapper;
import cn.iocoder.yudao.module.smartfactory.framework.util.HttpUtil;
+import cn.iocoder.yudao.module.smartfactory.service.factorydata.FactoryDataService;
+import cn.iocoder.yudao.module.smartfactory.service.factorydataoverview.FactoryDataOverviewService;
import cn.iocoder.yudao.module.smartfactory.service.factoryinfo.FactoryInfoService;
import cn.iocoder.yudao.module.smartfactory.service.packagedata.PackageDataService;
import cn.iocoder.yudao.module.smartfactory.service.screenfactoryextra.ScreenFactoryExtraService;
@@ -13,9 +25,8 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 功能描述
@@ -34,10 +45,16 @@ public class ScreenDataServiceImpl implements ScreenDataService {
private StaffService staffService;
@Resource
private PackageDataService packageDataService;
+ @Resource
+ private FactoryDataService factoryDataService;
+ @Resource
+ private FactoryDataOverviewService factoryDataOverviewService;
+ @Resource
+ private FactoryDataOverviewMapper factoryDataOverviewMapper;
@Override
- public List getProvincesData(Integer type, String code) {
- return factoryInfoService.getProvincesData(type, code);
+ public List getProvincesData(String code) {
+ return factoryInfoService.getProvincesData(code);
}
@Override
@@ -71,31 +88,266 @@ public class ScreenDataServiceImpl implements ScreenDataService {
private static final String REFERER_URL = "http://www.weather.com.cn/";
private static final String WEATHER_SPLIT = "dataSK=";
+ @Override
public FactoryWeatherDataRespVO getFactoryWeatherInfo(Long factoryId) {
//根据factoryId 查询areaCode;
- String areaCode = "101190101";
- String url = WEATHER_URL + areaCode + ".html";
- Map headers = new HashMap<>();
- headers.put(REFERER, REFERER_URL);
- String result = HttpUtil.doGetSetHeader(url, headers);
- String[] str = result.split(WEATHER_SPLIT);
- if (str.length > 1) {
- FactoryWeatherDataRespVO vo = new FactoryWeatherDataRespVO();
- JSONObject jsonObject = JSONUtil.parseObj(str[1]);
- vo.setFactoryId(factoryId);
- vo.setAreaCode(areaCode);
- vo.setTemperature(jsonObject.getStr("temp")); //温度
- vo.setHumidity(jsonObject.getStr("sd")); //湿度
- vo.setWeather(jsonObject.getStr("weather")); //天气
- vo.setDate(jsonObject.getStr("date")); //日期
- return vo;
- } else {
- return null;
+ // 通过工厂id获取到天气数据code
+ FactoryInfoDO factoryInfoDO = factoryInfoService.getFactoryInfo(factoryId);
+ if (factoryInfoDO != null) {
+ String areaCode = "";
+ if (factoryInfoDO.getAdCode() != null) {
+ areaCode = factoryInfoService.getWeatherCodeByFactoryId(factoryId, String.valueOf(factoryInfoDO.getAdCode()));
+ } else if (StrUtil.isEmpty(areaCode)) {
+ areaCode = factoryInfoService.getWeatherCodeByFactoryId(factoryId, String.valueOf(factoryInfoDO.getCityId()));
+ } else if (StrUtil.isEmpty(areaCode)) {
+ areaCode = factoryInfoService.getWeatherCodeByFactoryId(factoryId, String.valueOf(factoryInfoDO.getProvinceId()));
+ } else {
+ return null;
+ }
+ String url = WEATHER_URL + areaCode + ".html";
+ Map headers = new HashMap<>();
+ headers.put(REFERER, REFERER_URL);
+ String result = HttpUtil.doGetSetHeader(url, headers);
+ String[] str = result.split(WEATHER_SPLIT);
+ if (str.length > 1) {
+ FactoryWeatherDataRespVO vo = new FactoryWeatherDataRespVO();
+ JSONObject jsonObject = JSONUtil.parseObj(str[1]);
+ vo.setFactoryId(factoryId);
+ vo.setAreaCode(areaCode);
+ vo.setTemperature(jsonObject.getStr("temp")); //温度
+ vo.setHumidity(jsonObject.getStr("sd")); //湿度
+ vo.setWeather(jsonObject.getStr("weather")); //天气
+ vo.setDate(jsonObject.getStr("date")); //日期
+ return vo;
+ } else {
+ return null;
+ }
}
+ return null;
}
@Override
- public List getFactoryPackLineInfo(Long factoryId) {
- return packageDataService.getFactoryPackLineInfo(factoryId);
+ public List getFactoryPackLineInfo(Long factoryId) {
+ List vos = new ArrayList<>();
+ List list = packageDataService.getFactoryPackLineInfo(factoryId);
+ Map> map = list.stream().collect(Collectors.groupingBy(PackageDataDO::getSizeId));
+ Date today = new Date();
+ //本日打包数
+ Date beginDay = DateUtil.beginOfDay(today);
+ Date endDay = DateUtil.endOfDay(today);
+ List todayList = packageDataService.getFactoryPackLineInfoByTime(factoryId, beginDay, endDay);
+ Map> todayMap = todayList.stream().collect(Collectors.groupingBy(PackageDataDO::getSizeId));
+ //本周打包數
+ Date beginWeek = DateUtil.beginOfWeek(today);
+ Date endWeek = DateUtil.endOfWeek(today);
+ List weekList = packageDataService.getFactoryPackLineInfoByTime(factoryId, beginWeek, endWeek);
+ Map> weekMap = weekList.stream().collect(Collectors.groupingBy(PackageDataDO::getSizeId));
+
+ //本月打包數
+ Date beginMonth = DateUtil.beginOfMonth(today);
+ Date endMonth = DateUtil.endOfMonth(today);
+ List monthList = packageDataService.getFactoryPackLineInfoByTime(factoryId, beginMonth, endMonth);
+ Map> monthMap = monthList.stream().collect(Collectors.groupingBy(PackageDataDO::getSizeId));
+
+ for (Long id : map.keySet()) {
+ PackageDataDO item = map.get(id).get(0);
+ FactoryPackLineInfoVO vo = new FactoryPackLineInfoVO();
+ vo.setId(item.getSizeId());
+ vo.setName(item.getSizeName());
+ List todayItemList = todayMap.get(item.getSizeId());
+ if (!CollUtil.isEmpty(todayItemList)) {
+ vo.setDayNum(todayItemList.stream().mapToInt(PackageDataDO::getNum).sum());
+ }
+ List weekItemList = weekMap.get(item.getSizeId());
+ if (!CollUtil.isEmpty(weekItemList)) {
+ vo.setWeekNum(weekItemList.stream().mapToInt(PackageDataDO::getNum).sum());
+ }
+ List monthItemList = monthMap.get(item.getSizeId());
+ if (!CollUtil.isEmpty(monthItemList)) {
+ vo.setMonthNum(monthItemList.stream().mapToInt(PackageDataDO::getNum).sum());
+ }
+ vos.add(vo);
+ }
+ return vos;
+ }
+
+ @Override
+ public String getAliYunGeo(String code, Integer type) {
+ String url = "";
+ if (type == 1) {
+ url = "https://geo.datav.aliyun.com/areas_v3/bound/%s_full.json";
+ } else {
+ url = "https://geo.datav.aliyun.com/areas_v3/bound/%s.json";
+ }
+ url = String.format(url, code);
+ return cn.hutool.http.HttpUtil.get(url);
+ }
+
+ @Override
+ public DataOverviewVO getDataOverview() {
+ DataOverviewVO vo = new DataOverviewVO();
+ List extras = screenFactoryExtraService.list();
+ List list = factoryDataOverviewService.list();
+
+ vo.setTotal(list.stream().mapToInt(FactoryDataOverviewDO::getWorkerNum).sum());
+ vo.setYlNum(extras.stream().mapToInt(ScreenFactoryExtraDO::getYlNum).sum());
+ vo.setForkliftTotal(list.stream().mapToInt(FactoryDataOverviewDO::getTruckTotalNum).sum());
+ vo.setTruckOnNum(extras.stream().mapToInt(ScreenFactoryExtraDO::getTruckOnNum).sum());
+ vo.setTruckOffNum(extras.stream().mapToInt(ScreenFactoryExtraDO::getTruckOffNum).sum());
+ vo.setDbxNum(list.stream().mapToInt(FactoryDataOverviewDO::getDbxNum).sum());
+
+ vo.setTpNum(list.stream().mapToInt(FactoryDataOverviewDO::getTpNum).sum());
+ vo.setBdNum(list.stream().mapToInt(FactoryDataOverviewDO::getBdNum).sum());
+
+ List factoryDataDOS = factoryDataService.getTodayInboundAndOutboundOverview();
+ Integer outTotalNum = factoryDataDOS.stream().filter(a -> a.getDataType() == 1).mapToInt(FactoryDataDO::getTotalNum).sum();
+ Integer inTotalNum = factoryDataDOS.stream().filter(a -> a.getDataType() == 2).mapToInt(FactoryDataDO::getTotalNum).sum();
+ vo.setOutTotalNum(outTotalNum);
+ vo.setInTotalNum(inTotalNum);
+ return vo;
+ }
+
+ @Override
+ public List getInboundAndOutboundOverview() {
+ List vos = new ArrayList<>();
+ //获取当天的所有数据
+ List list = factoryDataService.getTodayInboundAndOutboundOverview();
+ //根据工厂分组
+ Map> map = list.stream().collect(Collectors.groupingBy(FactoryDataDO::getFactoryId));
+ List factoryInfos = factoryInfoService.list();
+ Map> factoryInfoMap = factoryInfos.stream().collect(Collectors.groupingBy(FactoryInfoDO::getId));
+ for (Map.Entry> entry : map.entrySet()) {
+ List items = entry.getValue();
+ Integer outTotalNum = items.stream().filter(a -> a.getDataType() == 1).mapToInt(FactoryDataDO::getTotalNum).sum();
+ Integer inTotalNum = items.stream().filter(a -> a.getDataType() == 2).mapToInt(FactoryDataDO::getTotalNum).sum();
+ List itemDo = factoryInfoMap.get(entry.getKey());
+ if (!CollUtil.isEmpty(itemDo)) {
+ InboundAndOutboundOverviewVO vo = new InboundAndOutboundOverviewVO();
+ vo.setName(itemDo.get(0).getShortName());
+ vo.setOutTotalNum(outTotalNum);
+ vo.setInTotalNum(inTotalNum);
+ vos.add(vo);
+ }
+ }
+ // -- list排序
+ vos = vos.stream()
+ .sorted(Comparator.comparingInt(InboundAndOutboundOverviewVO::getInTotalNum).reversed())
+ .collect(Collectors.toList());
+ return vos;
+ }
+
+ @Override
+ public List excellentRateRanking() {
+ List list = new ArrayList<>();
+ List factoryInfos = factoryInfoService.list();
+ for (FactoryInfoDO factoryInfo : factoryInfos) {
+ // 创建 Random 对象
+ Random random = new Random();
+ // 生成 90 到 100 之间的随机数(包括 90 和 100)
+ double randomNumber = random.nextDouble() * 11 + 90;
+ // 将随机数保留两位小数
+ randomNumber = Math.round(randomNumber * 100.0) / 100.0;
+ if (randomNumber > 100) {
+ randomNumber = 100.00;
+ }
+ ExcellentRateRankingVO vo = new ExcellentRateRankingVO();
+ vo.setName(factoryInfo.getName());
+ vo.setExcellentRate(randomNumber);
+ list.add(vo);
+ }
+ // -- list排序
+ list = list.stream()
+ .sorted(Comparator.comparingDouble(ExcellentRateRankingVO::getExcellentRate).reversed())
+ .collect(Collectors.toList());
+ return list;
+ }
+
+ @Override
+ public List energyConservation(Long factoryId) {
+ List vos = new ArrayList<>();
+ List factoryInfos = factoryInfoService.list();
+ List ids = factoryInfos.stream().map(FactoryInfoDO::getId).collect(Collectors.toList());
+ List dos = factoryDataOverviewMapper.selectList(new LambdaQueryWrapperX()
+ .in(FactoryDataOverviewDO::getFactoryId, ids));
+
+ Map> doMaps = dos.stream().collect(Collectors.groupingBy(FactoryDataOverviewDO::getFactoryId));
+
+
+ if (factoryId != null) {
+ Map> map = factoryInfos.stream().collect(Collectors.groupingBy(FactoryInfoDO::getId));
+ List items = map.get(factoryId);
+ if (!CollUtil.isEmpty(items)) {
+ for (int i = 0; i < 3; i++) {
+ Month month = DateUtil.monthEnum(DateUtil.offsetMonth(DateUtil.date(), -i));
+ EnergyConservationVO vo = new EnergyConservationVO();
+ vo.setName(items.get(0).getShortName());
+ vo.setTime((month.getValue() == 0 ? "12" : String.valueOf(month.getValue())) + "月");
+ Random random = new Random();
+ // 生成50到100之间的随机数
+ int randomNumber = random.nextInt(51) + 50;
+ vo.setEmissions(randomNumber);
+ List doItems = doMaps.get(items.get(0).getId());
+ if (CollUtil.isNotEmpty(doItems)) {
+ vo.setForkliftTotal(doItems.get(0).getTruckTotalNum());
+ } else {
+ vo.setForkliftTotal(0);
+ }
+ vos.add(vo);
+ }
+ }
+ } else {
+ for (FactoryInfoDO factoryInfo : factoryInfos) {
+ EnergyConservationVO vo = new EnergyConservationVO();
+ vo.setName(factoryInfo.getShortName());
+ //vo.setTime(String.valueOf(factoryInfo.getValue()));
+ Random random = new Random();
+ // 生成50到100之间的随机数
+ int randomNumber = random.nextInt(51) + 50;
+ vo.setEmissions(randomNumber);
+ List doItems = doMaps.get(factoryInfo.getId());
+ if (CollUtil.isNotEmpty(doItems)) {
+ vo.setForkliftTotal(doItems.get(0).getTruckTotalNum());
+ } else {
+ vo.setForkliftTotal(0);
+ }
+ vos.add(vo);
+ }
+ }
+ Collections.reverse(vos);
+ return vos;
+ }
+
+ @Override
+ public ObtainFactoryInboundAndOutboundStatusVO getObtainFactoryInboundAndOutboundStatus(Long factoryId) {
+ ObtainFactoryInboundAndOutboundStatusVO vo = new ObtainFactoryInboundAndOutboundStatusVO();
+
+ Date today = new Date();
+ //本日打包数
+ Date beginDay = DateUtil.beginOfDay(today);
+ Date endDay = DateUtil.endOfDay(today);
+
+ List dayList = factoryDataService.getByTimeAndFactoryId(factoryId, beginDay, endDay);
+ Integer outTotalNum = dayList.stream().filter(a -> a.getDataType() == 1).mapToInt(FactoryDataDO::getTotalNum).sum();
+ Integer inTotalNum = dayList.stream().filter(a -> a.getDataType() == 2).mapToInt(FactoryDataDO::getTotalNum).sum();
+ vo.setOutToday(outTotalNum);
+ vo.setInToday(inTotalNum);
+
+ //本月打包數
+ Date beginMonth = DateUtil.beginOfMonth(today);
+ Date endMonth = DateUtil.endOfMonth(today);
+ List monthList = factoryDataService.getByTimeAndFactoryId(factoryId, beginMonth, endMonth);
+ Integer outMonthNum = monthList.stream().filter(a -> a.getDataType() == 1).mapToInt(FactoryDataDO::getTotalNum).sum();
+ Integer inMonthNum = monthList.stream().filter(a -> a.getDataType() == 2).mapToInt(FactoryDataDO::getTotalNum).sum();
+ vo.setOutMonth(outMonthNum);
+ vo.setInMonth(inMonthNum);
+ Random random = new Random();
+ int randomNumber = random.nextInt(21); // 生成0到20之间的随机数
+ vo.setDamagedTotal(randomNumber);
+
+ random = new Random();
+ double increaseCompared = (random.nextDouble() * 4) - 2; // 生成-2到2之间的随机数
+ increaseCompared = Math.round(increaseCompared * 100.0) / 100.0; // 保留两位小数
+ vo.setIncreaseCompared(increaseCompared);
+ return vo;
}
}
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screenfactoryextra/ScreenFactoryExtraService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screenfactoryextra/ScreenFactoryExtraService.java
index e0e1216e..6cc18bdc 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screenfactoryextra/ScreenFactoryExtraService.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screenfactoryextra/ScreenFactoryExtraService.java
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.screenfactoryextra.ScreenFactoryExtraDO;
import javax.validation.Valid;
+import java.util.List;
/**
* 工厂大屏额外字段 Service 接口
@@ -54,4 +55,10 @@ public interface ScreenFactoryExtraService {
PageResult getScreenFactoryExtraPage(ScreenFactoryExtraPageReqVO pageReqVO);
PropertyDataRespVO getPropertyData(Long factoryId);
+
+ /**
+ * 列表
+ * @return
+ */
+ List list();
}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screenfactoryextra/ScreenFactoryExtraServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screenfactoryextra/ScreenFactoryExtraServiceImpl.java
index 455f4a84..3dd260c2 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screenfactoryextra/ScreenFactoryExtraServiceImpl.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screenfactoryextra/ScreenFactoryExtraServiceImpl.java
@@ -6,12 +6,15 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.PropertyDataRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.screenfactoryextra.vo.ScreenFactoryExtraPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.screenfactoryextra.vo.ScreenFactoryExtraSaveReqVO;
+import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydataoverview.FactoryDataOverviewDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.screenfactoryextra.ScreenFactoryExtraDO;
+import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydataoverview.FactoryDataOverviewMapper;
import cn.iocoder.yudao.module.smartfactory.dal.mysql.screenfactoryextra.ScreenFactoryExtraMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
+import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.FACTORY_INFO_NOT_EXISTS;
@@ -27,6 +30,8 @@ public class ScreenFactoryExtraServiceImpl implements ScreenFactoryExtraService
@Resource
private ScreenFactoryExtraMapper screenFactoryExtraMapper;
+ @Resource
+ private FactoryDataOverviewMapper factoryDataOverviewMapper;
@Override
public Long createScreenFactoryExtra(ScreenFactoryExtraSaveReqVO createReqVO) {
@@ -75,16 +80,26 @@ public class ScreenFactoryExtraServiceImpl implements ScreenFactoryExtraService
PropertyDataRespVO vo = new PropertyDataRespVO();
ScreenFactoryExtraDO screenFactoryExtraDO = screenFactoryExtraMapper.selectOne(new LambdaQueryWrapperX()
.eq(ScreenFactoryExtraDO::getFactoryId, factoryId));
+
+ FactoryDataOverviewDO factoryDataOverviewDO = factoryDataOverviewMapper.selectOne(new LambdaQueryWrapperX()
+ .eq(FactoryDataOverviewDO::getFactoryId, factoryId));
+ if (factoryDataOverviewDO != null) {
+ vo.setPackLineTotal(factoryDataOverviewDO.getDbxNum());
+ vo.setTrayTotal(factoryDataOverviewDO.getTpNum());
+ vo.setTieTotal(factoryDataOverviewDO.getBdNum());
+ vo.setForkliftTotal(factoryDataOverviewDO.getTruckTotalNum());
+ }
if (screenFactoryExtraDO != null) {
vo.setKilnTotal(screenFactoryExtraDO.getYlNum());
- vo.setPackLineTotal(screenFactoryExtraDO.getDbxNum());
- vo.setTrayTotal(screenFactoryExtraDO.getTpNum());
- vo.setTieTotal(screenFactoryExtraDO.getBdNum());
- vo.setForkliftTotal(screenFactoryExtraDO.getTruckTotalNum());
vo.setOnlineTotal(screenFactoryExtraDO.getTruckOnNum());
vo.setOutLineTotal(screenFactoryExtraDO.getTruckOffNum());
}
return vo;
}
+ @Override
+ public List list() {
+ return screenFactoryExtraMapper.selectList();
+ }
+
}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffService.java
index 72976b1d..3f68441f 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffService.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffService.java
@@ -60,4 +60,10 @@ public interface StaffService {
* @return
*/
StaffDataRespVO getStaffData(Long factoryId);
+
+ /**
+ * 获取人员数量
+ * @return
+ */
+ Integer getCount();
}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java
index d3d8e851..2f4ebbc9 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java
@@ -2,9 +2,10 @@ package cn.iocoder.yudao.module.smartfactory.service.staff;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.StaffDataRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffSaveReqVO;
-import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.StaffDataRespVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staff.StaffDO;
import cn.iocoder.yudao.module.smartfactory.dal.mysql.staff.StaffMapper;
import org.springframework.stereotype.Service;
@@ -69,4 +70,9 @@ public class StaffServiceImpl implements StaffService {
return vo;
}
+ @Override
+ public Integer getCount() {
+ return Math.toIntExact(staffMapper.selectCount(new LambdaQueryWrapperX().eq(StaffDO::getStatus, 1)));
+ }
+
}
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application-dev.yaml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application-dev.yaml
index 6b31af62..8e97c1ed 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application-dev.yaml
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application-dev.yaml
@@ -183,3 +183,16 @@ justauth:
type: REDIS
prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
+#海康威视的相关配置
+isc:
+ previewUrl: https://api.znkj.ispt.com.cn
+ host: 111.75.51.123:10443
+ appKey: 24991430
+ appSecret: jQd4pIYZBzwW8cnuI9IN
+#视频资源
+resource:
+ cameras: /artemis/api/resource/v1/cameras
+#视频能力
+video:
+ previewUrls: /artemis/api/video/v2/cameras/previewURLs
+ replayUrlApi: /artemis/api/video/v2/cameras/playbackURLs
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application.yaml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application.yaml
index 1d256e8a..2caa0f49 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application.yaml
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application.yaml
@@ -92,5 +92,8 @@ yudao:
base-package: ${yudao.info.base-package}
tenant: # 多租户相关配置项
enable: true
+ ignore-urls:
+ ignore-tables:
+ - sys_region
debug: false
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/bootstrap-prod.yaml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/bootstrap-prod.yaml
new file mode 100644
index 00000000..4e48a732
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/bootstrap-prod.yaml
@@ -0,0 +1,23 @@
+--- #################### 注册中心相关配置 ####################
+
+spring:
+ cloud:
+ nacos:
+ server-addr: 47.97.8.94:8848
+ discovery:
+ namespace: prod # 命名空间。这里使用 dev 开发环境
+ metadata:
+ version: 1.0.0 # 服务实例的版本号,可用于灰度发布
+
+--- #################### 配置中心相关配置 ####################
+
+spring:
+ cloud:
+ nacos:
+ # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
+ config:
+ server-addr: 47.97.8.94:8848 # Nacos 服务器地址
+ namespace: prod # 命名空间 dev 的ID,不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev,这里使用 dev 开发环境
+ group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+ name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name
+ file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml
new file mode 100644
index 00000000..5ab8182c
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydataoverview/FactoryDataOverviewMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydataoverview/FactoryDataOverviewMapper.xml
new file mode 100644
index 00000000..27666ef6
--- /dev/null
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydataoverview/FactoryDataOverviewMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryinfo/FactoryInfoMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryinfo/FactoryInfoMapper.xml
index 0a6147e2..f9c78e75 100644
--- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryinfo/FactoryInfoMapper.xml
+++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryinfo/FactoryInfoMapper.xml
@@ -23,4 +23,11 @@
FROM sf_factory_info AS a
LEFT JOIN sf_screen_factory_extra AS b ON a.id = b.factory_id
+
\ No newline at end of file