From 46476badc7f92533c9bbaf7199387b952ee246fe Mon Sep 17 00:00:00 2001
From: hejiayang <296714699@qq.com>
Date: Sat, 29 Nov 2025 20:54:54 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD=E5=8F=8Abug?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../jeecg/common/constant/CommonConstant.java | 8 ++
.../jeecg-system-local-api/pom.xml | 8 ++
.../org/jeecg/emp/vo/StUserBalanceVo.java | 4 +
.../jeecg/equipment/dto/StEquipmentDto.java | 16 +++
.../equipment/entity/StCanteenEquipment.java | 63 ++++++++
.../jeecg/equipment/entity/StEquipment.java | 6 +
.../StClientMemberTransactionRecordDTO.java | 5 +
.../payment/dto/StExceptionRecordDTO.java | 46 ++++++
.../jeecg/payment/entity/StBbzxOrderInfo.java | 4 +
.../StClientMemberTransactionRecord.java | 3 +
.../entity/StConsumptionExceptionRecord.java | 66 +++++++++
.../payment/vo/StCanteenEquipmentVo.java | 34 +++++
.../jeecg/payment/vo/StExceptionRecordVo.java | 51 +++++++
.../org/jeecg/payment/vo/StRecordNumVo.java | 14 ++
.../java/org/jeecg/payment/vo/StRfidVo.java | 12 ++
.../jeecg/system/vo/SwHeartbeatFaceVo.java | 20 +++
.../emp/mapper/xml/CqBaseEmployeeMapper.xml | 61 +++++++-
.../controller/StEquipmentController.java | 24 ----
.../StRestaurantEquipmentController.java | 77 +++++++++-
.../mapper/StCanteenEquipmentMapper.java | 23 +++
.../equipment/mapper/StEquipmentMapper.java | 4 +
.../mapper/xml/StCanteenEquipmentMapper.xml | 58 ++++++++
.../mapper/xml/StEquipmentMapper.xml | 9 ++
.../service/IStCanteenEquipmentService.java | 16 +++
.../service/IStEquipmentService.java | 3 +
.../impl/StCanteenEquipmentServiceImpl.java | 64 +++++++++
.../service/impl/StEquipmentServiceImpl.java | 7 +
.../jeecg/pay/controller/StPayController.java | 107 ++++++++++----
.../controller/StBbzxOrderInfoController.java | 1 +
.../StClientMemberBalanceController.java | 6 +
...tConsumptionExceptionRecordController.java | 122 ++++++++++++++++
.../StConsumptionExceptionRecordMapper.java | 18 +++
.../StClientMemberTransactionRecordMapper.xml | 3 +
.../StConsumptionExceptionRecordMapper.xml | 53 +++++++
...IStClientMemberLevelDeductRuleService.java | 9 +-
.../IStConsumptionExceptionRecordService.java | 24 ++++
.../impl/StBbzxOrderInfoServiceImpl.java | 2 +
.../StClientMemberBalanceServiceImpl.java | 1 +
...lientMemberLevelDeductRuleServiceImpl.java | 83 +++++++++--
...ConsumptionExceptionRecordServiceImpl.java | 135 ++++++++++++++++++
.../StBaseRestaurantDeptController.java | 18 +++
.../SwUserFaceimgSubController.java | 52 ++++++-
42 files changed, 1259 insertions(+), 81 deletions(-)
create mode 100644 jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/dto/StEquipmentDto.java
create mode 100644 jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/entity/StCanteenEquipment.java
create mode 100644 jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/dto/StExceptionRecordDTO.java
create mode 100644 jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StConsumptionExceptionRecord.java
create mode 100644 jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StCanteenEquipmentVo.java
create mode 100644 jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StExceptionRecordVo.java
create mode 100644 jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRecordNumVo.java
create mode 100644 jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/system/vo/SwHeartbeatFaceVo.java
delete mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/controller/StEquipmentController.java
create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/StCanteenEquipmentMapper.java
create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/xml/StCanteenEquipmentMapper.xml
create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/IStCanteenEquipmentService.java
create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/impl/StCanteenEquipmentServiceImpl.java
create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/payment/controller/StConsumptionExceptionRecordController.java
create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/payment/mapper/StConsumptionExceptionRecordMapper.java
create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/payment/mapper/xml/StConsumptionExceptionRecordMapper.xml
create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/payment/service/IStConsumptionExceptionRecordService.java
create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/payment/service/impl/StConsumptionExceptionRecordServiceImpl.java
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
index 9d1c9a4..1b289f5 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
@@ -445,4 +445,12 @@ public interface CommonConstant {
// 食堂支付人脸数据键名
String FACE_CACHE_PAY = "FACE_CACHE_PAY";
+ /**
+ * 设备状态缓存 key: 设备编号 value 时间戳
+ */
+ String DEVICE_STATUS = "device_status";
+ /**
+ * 下发信息缓存 key: 设备编号
+ */
+ String ISSUE_INFORMATION = "issue_information";
}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/pom.xml b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/pom.xml
index a6fad21..4e1857d 100644
--- a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/pom.xml
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/pom.xml
@@ -10,5 +10,13 @@
4.0.0
jeecg-system-local-api
+
+
+ com.opencsv
+ opencsv
+ 5.7.1
+ compile
+
+
\ No newline at end of file
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/emp/vo/StUserBalanceVo.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/emp/vo/StUserBalanceVo.java
index 82e4d53..b453c0b 100644
--- a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/emp/vo/StUserBalanceVo.java
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/emp/vo/StUserBalanceVo.java
@@ -46,6 +46,10 @@ public class StUserBalanceVo {
* 用户类型 0正式 1非正式 2家庭成员
*/
private String userType;
+ /**
+ * 家庭成员 对应主用户id
+ */
+ private String mainUserId;
/**
* 食堂id
*/
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/dto/StEquipmentDto.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/dto/StEquipmentDto.java
new file mode 100644
index 0000000..7e88d95
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/dto/StEquipmentDto.java
@@ -0,0 +1,16 @@
+package org.jeecg.equipment.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class StEquipmentDto {
+
+ @Schema(title = "设备名称编码")
+ private String appPackageLocalUrl;
+ @Schema(title = "所在位置")
+ private String placement;
+ @Schema(title = "备注")
+ private String remark;
+
+}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/entity/StCanteenEquipment.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/entity/StCanteenEquipment.java
new file mode 100644
index 0000000..03faf47
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/entity/StCanteenEquipment.java
@@ -0,0 +1,63 @@
+package org.jeecg.equipment.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 设备管理表
+ * @Author: jeecg-boot
+ * @Date: 2022-08-30
+ * @Version: V1.0
+ */
+@Data
+@TableName("st_canteen_equipment")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Tag(name="st_canteen_equipment对象", description="食堂设备表")
+public class StCanteenEquipment implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**主键*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @Schema(title = "设备编码")
+ private String equipmentCode;
+
+ /**食堂id*/
+ @Schema(title = "食堂id")
+ private String canteenId;
+
+ @Schema(title = "设备ip")
+ private String equipmentIp;
+ /**
+ * 本地人脸数
+ */
+ @Schema(title = "本地人脸数")
+ private Integer faceNum;
+ /**
+ * 设备剩余存储量
+ */
+ @Schema(title = "设备剩余存储量")
+ private String availableMemory;
+ /**创建日期*/
+ @Schema(title = "创建日期")
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**更新日期*/
+ @Schema(title = "更新日期")
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/entity/StEquipment.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/entity/StEquipment.java
index c98de08..805d9cd 100644
--- a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/entity/StEquipment.java
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/equipment/entity/StEquipment.java
@@ -117,4 +117,10 @@ public class StEquipment implements Serializable {
/**所属餐道餐道中的顺序*/
@Schema(title = "所属餐道餐道中的顺序")
private Integer owningTrackOrder;
+
+ @Schema(title = "所在位置")
+ private String placement;
+
+ @Schema(title = "备注")
+ private String remark;
}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/dto/StClientMemberTransactionRecordDTO.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/dto/StClientMemberTransactionRecordDTO.java
index b7c24c3..7d05cd7 100644
--- a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/dto/StClientMemberTransactionRecordDTO.java
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/dto/StClientMemberTransactionRecordDTO.java
@@ -19,6 +19,8 @@ public class StClientMemberTransactionRecordDTO {
@DateTimeFormat(pattern="yyyy-MM-dd")
@Schema(title ="就餐时间")
private String mainTimeDay;
+ private String startDate;
+ private String endDate;
private String startTime;
@@ -82,4 +84,7 @@ public class StClientMemberTransactionRecordDTO {
//直接部门ID
private String departId;
+
+ @Schema(title ="餐次")
+ private String dinnerType;
}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/dto/StExceptionRecordDTO.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/dto/StExceptionRecordDTO.java
new file mode 100644
index 0000000..58f51b5
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/dto/StExceptionRecordDTO.java
@@ -0,0 +1,46 @@
+package org.jeecg.payment.dto;
+
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ */
+@Data
+@Tag(name= "StExceptionRecordDTO对象", description = "消费异常记录")
+public class StExceptionRecordDTO {
+
+ /**
+ * 时间区间
+ */
+ private List dates;
+ private String startTime;
+ private String endTime;
+
+ @Schema(title ="手机号")
+ private String phone;
+
+ @Schema(title ="会员姓名")
+ private String userName;
+
+ @Schema(title ="工号")
+ private String workNo;
+
+ @Schema(title ="卡号")
+ private String cardCode;
+
+ //直接部门ID
+ private String departId;
+ @Schema(title="部门集合")
+ private List list;
+
+ @Schema(title ="当前页")
+ private Integer pageNo;
+ @Schema(title ="数量/页")
+ private Integer pageSize;
+
+}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StBbzxOrderInfo.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StBbzxOrderInfo.java
index 8c0a608..a626abf 100644
--- a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StBbzxOrderInfo.java
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StBbzxOrderInfo.java
@@ -43,6 +43,10 @@ public class StBbzxOrderInfo extends JeecgEntity implements Serializable {
@Schema(title ="餐次名称")
private String dinnerType;
+
+ @Schema(title ="设备编码")
+ private String deviceCode;
+
/**
* 经营模式、扣费类型(1:固定扣费,2:固定+补贴扣费,3:按量扣费)
*/
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StClientMemberTransactionRecord.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StClientMemberTransactionRecord.java
index d6c5caf..600214f 100644
--- a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StClientMemberTransactionRecord.java
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StClientMemberTransactionRecord.java
@@ -38,6 +38,9 @@ public class StClientMemberTransactionRecord extends JeecgEntity implements Seri
@Schema(title ="交易流水号")
private String serialNo;
+ @Schema(title ="设备编码")
+ private String deviceCode;
+
/**
* 订单号
*/
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StConsumptionExceptionRecord.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StConsumptionExceptionRecord.java
new file mode 100644
index 0000000..47ebe97
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/entity/StConsumptionExceptionRecord.java
@@ -0,0 +1,66 @@
+/**
+ * use shuwei code generator created
+ */
+package org.jeecg.payment.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+@Data
+@TableName("st_consumption_exception_record")
+@EqualsAndHashCode(callSuper = false)
+@Tag(name= "StConsumptionExceptionRecord对象", description = "异常消费流水")
+public class StConsumptionExceptionRecord implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(type = IdType.ASSIGN_ID)
+ @Schema(title ="ID")
+ private String id;
+ @Schema(title ="用户id")
+ private String userId;
+ @Schema(title ="设备编码")
+ private String deviceCode;
+ @Schema(title ="食堂ID")
+ private String canteenId;
+ @Schema(title ="卡号")
+ private String cardCode;
+ @Schema(title ="支付唯一id")
+ private String payId;
+ @Schema(title ="消费时间(时间戳)")
+ private String dateTime;
+ @Schema(title ="消费时间")
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date payTime;
+ @Schema(title ="消费金额")
+ private BigDecimal spendMoney;
+ @Schema(title ="二次扣费标记 1 是; 0 否")
+ private Integer secondChargeFlag;
+ @Schema(title ="自定义扣费标记 1 是 ; 0 否")
+ private Integer isCustom;
+ @Schema(title ="恢复标记 1 是; 0 否")
+ private Integer isRestore;
+
+
+ /**创建日期*/
+ @Schema(title = "创建日期")
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**更新日期*/
+ @Schema(title = "更新日期")
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StCanteenEquipmentVo.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StCanteenEquipmentVo.java
new file mode 100644
index 0000000..bdb14e2
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StCanteenEquipmentVo.java
@@ -0,0 +1,34 @@
+package org.jeecg.payment.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class StCanteenEquipmentVo {
+
+ @Schema(description = "食堂id")
+ private String canteenId;
+ @Schema(description = "食堂名称")
+ private String restName;
+ @Schema(description = "设备名称")
+ private String equipmentName;
+ @Schema(description = "设备编码")
+ private String equipmentCode;
+ @Schema(description = "设备编码(前端展示)")
+ private String appPackageLocalUrl;
+ @Schema(description = "所在位置")
+ private String placement;
+ @Schema(description = "设备描述")
+ private String remark;
+ @Schema(description = "设备ip")
+ private String equipmentIp;
+ @Schema(description = "本地人脸数")
+ private Integer faceNum;
+ @Schema(description = "设备剩余存储量")
+ private String availableMemory;
+ @Schema(description = "设备状态: 0离线 1在线")
+ private String status;
+ @Schema(description = "上传数量")
+ private Integer totalNum;
+
+}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StExceptionRecordVo.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StExceptionRecordVo.java
new file mode 100644
index 0000000..4da6be5
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StExceptionRecordVo.java
@@ -0,0 +1,51 @@
+package org.jeecg.payment.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.jeecg.common.util.BigDecimalSerialize;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class StExceptionRecordVo {
+
+ @Schema(title ="id")
+ private String id;
+
+ @Schema(title ="卡号")
+ private String cardCode;
+
+ @Schema(title ="会员姓名")
+ private String userName;
+ @Schema(title ="会员电话")
+ private String phone;
+ @Schema(title ="工号")
+ private String workNo;
+ @Schema(title ="本次扣费金额")
+ private BigDecimal spendMoney;
+ @Schema(title ="自定义扣费标记 1 是 ; 0 否")
+ private Integer isCustom;
+ @Schema(title ="恢复标记 1 已恢复; 0 否")
+ private Integer isRestore;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @Schema(title ="消费时间")
+ private Date payTime;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @Schema(title ="数据上传时间")
+ private Date createTime;
+
+ @Schema(title ="食堂名称")
+ private String restName;
+
+ @Schema(title ="餐次名称")
+ private String dinnerType;
+
+ @Schema(title ="部门名称")
+ private String deptName;
+
+}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRecordNumVo.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRecordNumVo.java
new file mode 100644
index 0000000..10d4a9a
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRecordNumVo.java
@@ -0,0 +1,14 @@
+package org.jeecg.payment.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class StRecordNumVo {
+
+ @Schema(description = "数量")
+ private Integer num;
+
+ @Schema(description = "设备编码")
+ private String deviceCode;
+}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRfidVo.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRfidVo.java
index 4802f19..84a8ea3 100644
--- a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRfidVo.java
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRfidVo.java
@@ -1,5 +1,6 @@
package org.jeecg.payment.vo;
+import com.opencsv.bean.CsvBindByName;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
@@ -14,6 +15,7 @@ import java.math.BigDecimal;
@Data
public class StRfidVo {
// @NotEmpty(message = "用户ID不能为空")
+ @CsvBindByName(column = "user_id")
private String userId;
@NotEmpty(message = "设备编码不能为空")
private String deviceCode;
@@ -22,25 +24,35 @@ public class StRfidVo {
/**
* 卡号
*/
+ @CsvBindByName(column = "card_code")
private String cardCode;
/**
* 闸机记录的支付唯一id(用于判断防止重复支付的标记)
*/
+ @CsvBindByName(column = "pay_id")
private String payId;
//===离线扣费场景参数
//消费时间(时间戳)
+ @CsvBindByName(column = "date_time")
private String dateTime;
//本次扣费金额(后端根据规则计算)
+ @CsvBindByName(column = "spend_money")
private BigDecimal spendMoney;
/**
* 二次扣费标记 1 是; 0 否
*/
+ @CsvBindByName(column = "second_charge_flag")
private Integer secondChargeFlag;
/**
* 自定义扣费标记 1 是 ; 0 否
*/
+ @CsvBindByName(column = "is_custom")
private Integer isCustom;
+ /**
+ * 恢复标记 1 是; 0 否
+ */
+ private Integer isRestore;
}
diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/system/vo/SwHeartbeatFaceVo.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/system/vo/SwHeartbeatFaceVo.java
new file mode 100644
index 0000000..7bd5350
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/system/vo/SwHeartbeatFaceVo.java
@@ -0,0 +1,20 @@
+package org.jeecg.system.vo;
+
+import lombok.Data;
+import org.jeecg.user.entity.StUserFaceimgSubIncremInfo;
+
+import java.util.List;
+
+@Data
+public class SwHeartbeatFaceVo {
+
+ /**
+ * 是否下发
+ */
+ private boolean isIssue;
+
+ /**
+ * 人脸数据
+ */
+ private List faceList;
+}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/xml/CqBaseEmployeeMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/xml/CqBaseEmployeeMapper.xml
index 7dc6e1f..e50c409 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/xml/CqBaseEmployeeMapper.xml
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/xml/CqBaseEmployeeMapper.xml
@@ -521,6 +521,34 @@
limit 1
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/controller/StEquipmentController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/controller/StEquipmentController.java
deleted file mode 100644
index 6e21167..0000000
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/controller/StEquipmentController.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.jeecg.equipment.controller;
-
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.extern.slf4j.Slf4j;
-import org.jeecg.common.system.base.controller.JeecgController;
-import org.jeecg.equipment.entity.StEquipment;
-import org.jeecg.equipment.service.IStEquipmentService;
-import org.springframework.web.bind.annotation.*;
-
- /**
- * @Description: 设备管理表
- * @Author: jeecg-boot
- * @Date: 2022-08-30
- * @Version: V1.0
- */
-@Tag(name="设备管理表")
-@RestController
-@RequestMapping("/equipment/stEquipment")
-@Slf4j
-public class StEquipmentController extends JeecgController {
-
-
-
-}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/controller/StRestaurantEquipmentController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/controller/StRestaurantEquipmentController.java
index 0def169..33abd79 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/controller/StRestaurantEquipmentController.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/controller/StRestaurantEquipmentController.java
@@ -1,18 +1,26 @@
package org.jeecg.equipment.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
-import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.util.JwtUtil;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.equipment.dto.StEquipmentDto;
import org.jeecg.equipment.entity.StEquipment;
+import org.jeecg.equipment.service.IStCanteenEquipmentService;
import org.jeecg.equipment.service.IStEquipmentService;
+import org.jeecg.payment.vo.StCanteenEquipmentVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
import java.util.List;
/**
@@ -25,9 +33,13 @@ import java.util.List;
@RestController
@RequestMapping("/restaurant/equipment/stEquipment")
@Slf4j
-public class StRestaurantEquipmentController extends JeecgController {
+public class StRestaurantEquipmentController {
@Autowired
private IStEquipmentService stEquipmentService;
+ @Resource
+ private IStCanteenEquipmentService stCanteenEquipmentService;
+ @Resource
+ private RedisUtil redisUtil;
/**
@@ -52,4 +64,65 @@ public class StRestaurantEquipmentController extends JeecgController> getEquipmentListByCanteenId(@RequestParam(name = "canteenId", required = true) String canteenId) {
+ if(StringUtils.isBlank(canteenId)){
+ return Result.error("参数异常");
+ }
+ List stEquipmentList = stEquipmentService.getEquipmentList(canteenId);
+ return Result.OK(stEquipmentList);
+ }
+
+ /**
+ * 保存设备
+ * @param dto 设备信息
+ * @return 保存结果
+ */
+ @Operation(summary = "保存设备", description = "保存设备")
+ @PostMapping("/saveEquipment")
+ @AutoLog(value = "保存设备")
+ public Result saveEquipment(@RequestBody StEquipmentDto dto) {
+ if(StringUtils.isBlank(dto.getAppPackageLocalUrl())){
+ return Result.error("设备编码不能为空");
+ }
+ LambdaUpdateWrapper stEquipmentLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+ stEquipmentLambdaUpdateWrapper
+ .eq(StEquipment::getAppPackageLocalUrl, dto.getAppPackageLocalUrl())
+ .set(StEquipment::getPlacement, dto.getPlacement())
+ .set(StEquipment::getRemark, dto.getRemark());
+ stEquipmentService.update(stEquipmentLambdaUpdateWrapper);
+ return Result.OK("操作成功");
+ }
+
+ /**
+ * 设备管理列表
+ * @param canteenId 食堂id
+ * @param appPackageLocalUrl 设备编码
+ * @param pageNo 页码
+ * @param pageSize 每页条数
+ * @return 设备管理列表
+ */
+ @Operation(summary = "设备管理列表", description = "设备管理列表")
+ @GetMapping("/pageList")
+ @AutoLog(value = "设备管理列表")
+ public Result> pageList(@RequestParam(name = "canteenId",required = false) String canteenId,
+ @RequestParam(name = "appPackageLocalUrl",required = false) String appPackageLocalUrl,
+ @RequestParam(name = "pageNo",required = false,defaultValue = "1") Integer pageNo,
+ @RequestParam(name = "pageSize",required = false,defaultValue = "10") Integer pageSize){
+
+ return Result.OK(stCanteenEquipmentService.pageList(canteenId,appPackageLocalUrl,pageNo,pageSize));
+ }
+
+ @Operation(summary = "下发用户信息", description = "下发用户信息")
+ @GetMapping("/issueInformation")
+ @AutoLog(value = "下发用户信息")
+ public Result issueInformation(@RequestParam(name = "equipmentCode") String equipmentCode){
+ redisUtil.hset(CommonConstant.ISSUE_INFORMATION,equipmentCode,"1");
+ return Result.OK("命令发送成功");
+ }
}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/StCanteenEquipmentMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/StCanteenEquipmentMapper.java
new file mode 100644
index 0000000..be77be2
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/StCanteenEquipmentMapper.java
@@ -0,0 +1,23 @@
+package org.jeecg.equipment.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.equipment.entity.StCanteenEquipment;
+import org.jeecg.payment.vo.StCanteenEquipmentVo;
+import org.jeecg.payment.vo.StRecordNumVo;
+
+import java.util.List;
+
+
+public interface StCanteenEquipmentMapper extends BaseMapper {
+
+
+ IPage pageList(@Param("page") Page page, @Param("canteenId") String canteenId,@Param("appPackageLocalUrl") String appPackageLocalUrl);
+
+ List getNormalNum(@Param("list") List deviceCodes);
+
+ List getAbnormalNum(@Param("list") List deviceCodes);
+
+}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/StEquipmentMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/StEquipmentMapper.java
index 77679b7..ef86de5 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/StEquipmentMapper.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/StEquipmentMapper.java
@@ -1,8 +1,11 @@
package org.jeecg.equipment.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
import org.jeecg.equipment.entity.StEquipment;
+import java.util.List;
+
/**
* @Description: 设备管理表
* @Author: jeecg-boot
@@ -11,4 +14,5 @@ import org.jeecg.equipment.entity.StEquipment;
*/
public interface StEquipmentMapper extends BaseMapper {
+ List getEquipmentList(@Param("canteenId") String canteenId);
}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/xml/StCanteenEquipmentMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/xml/StCanteenEquipmentMapper.xml
new file mode 100644
index 0000000..05738e0
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/xml/StCanteenEquipmentMapper.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/xml/StEquipmentMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/xml/StEquipmentMapper.xml
index 36a6c7b..65b77d0 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/xml/StEquipmentMapper.xml
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/mapper/xml/StEquipmentMapper.xml
@@ -2,4 +2,13 @@
+
\ No newline at end of file
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/IStCanteenEquipmentService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/IStCanteenEquipmentService.java
new file mode 100644
index 0000000..a5309ff
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/IStCanteenEquipmentService.java
@@ -0,0 +1,16 @@
+package org.jeecg.equipment.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.equipment.entity.StCanteenEquipment;
+import org.jeecg.equipment.entity.StEquipment;
+import org.jeecg.payment.vo.StCanteenEquipmentVo;
+
+import java.util.List;
+
+
+public interface IStCanteenEquipmentService extends IService {
+
+ IPage pageList(String canteenId, String appPackageLocalUrl, Integer pageNo, Integer pageSize);
+
+}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/IStEquipmentService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/IStEquipmentService.java
index 28735d9..00cdf4f 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/IStEquipmentService.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/IStEquipmentService.java
@@ -3,6 +3,8 @@ package org.jeecg.equipment.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.equipment.entity.StEquipment;
+import java.util.List;
+
/**
* @Description: 设备管理表
* @Author: jeecg-boot
@@ -11,4 +13,5 @@ import org.jeecg.equipment.entity.StEquipment;
*/
public interface IStEquipmentService extends IService {
+ List getEquipmentList(String canteenId);
}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/impl/StCanteenEquipmentServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/impl/StCanteenEquipmentServiceImpl.java
new file mode 100644
index 0000000..d8c745a
--- /dev/null
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/equipment/service/impl/StCanteenEquipmentServiceImpl.java
@@ -0,0 +1,64 @@
+package org.jeecg.equipment.service.impl;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.collections4.CollectionUtils;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.equipment.entity.StCanteenEquipment;
+import org.jeecg.equipment.mapper.StCanteenEquipmentMapper;
+import org.jeecg.equipment.service.IStCanteenEquipmentService;
+import org.jeecg.payment.vo.StCanteenEquipmentVo;
+import org.jeecg.payment.vo.StRecordNumVo;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Service
+public class StCanteenEquipmentServiceImpl extends ServiceImpl implements IStCanteenEquipmentService {
+
+ @Resource
+ private RedisUtil redisUtil;
+ @Override
+ public IPage pageList(String canteenId,String appPackageLocalUrl,Integer pageNo,Integer pageSize){
+ Page page = new Page<>(pageNo, pageSize);
+ IPage stCanteenEquipmentVoIPage = baseMapper.pageList(page, canteenId, appPackageLocalUrl);
+ if(CollectionUtils.isNotEmpty(stCanteenEquipmentVoIPage.getRecords())){
+ List collect = stCanteenEquipmentVoIPage.getRecords().stream().map(StCanteenEquipmentVo::getEquipmentCode).collect(Collectors.toList());
+ List normalNum = baseMapper.getNormalNum(collect);
+ List abnormalNum = baseMapper.getAbnormalNum(collect);
+ Map normalNumMap = normalNum.stream().collect(Collectors.toMap(StRecordNumVo::getDeviceCode, StRecordNumVo::getNum));
+ Map abnormalNumMap = abnormalNum.stream().collect(Collectors.toMap(StRecordNumVo::getDeviceCode,StRecordNumVo::getNum));
+
+ Map