stjdydayou 4 năm trước cách đây
mục cha
commit
bcd58f4d23

+ 43 - 0
src/main/java/com/zhiqiyun/open/core/enmus/PassengerType.java

@@ -0,0 +1,43 @@
+package com.zhiqiyun.open.core.enmus;
+
+public enum PassengerType implements IBaseEnum {
+
+    /**
+     *
+     */
+    IN(1, "待处理"), OUT(2, "已处理");
+
+    private final int value;
+    private final String text;
+
+
+    PassengerType(int value, String text) {
+        this.value = value;
+        this.text = text;
+    }
+
+    public static PassengerType valueOf(int code) {
+        PassengerType[] values = PassengerType.values();
+        for (PassengerType type : values) {
+            if (type.value == code) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public String getText() {
+        return text;
+    }
+
+    @Override
+    public Integer getValue() {
+        return value;
+    }
+
+    @Override
+    public String getName() {
+        return this.name();
+    }
+}

+ 9 - 0
src/main/java/com/zhiqiyun/open/core/mapper/DictCityMapper.java

@@ -0,0 +1,9 @@
+package com.zhiqiyun.open.core.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhiqiyun.open.core.models.DictCity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DictCityMapper extends BaseMapper<DictCity> {
+}

+ 12 - 0
src/main/java/com/zhiqiyun/open/core/models/DictCity.java

@@ -0,0 +1,12 @@
+package com.zhiqiyun.open.core.models;
+
+import lombok.Data;
+
+@Data
+public class DictCity {
+    private String parentId;
+    private String fullName;
+    private String shortName;
+    private String grade;
+    private String childrenNum;
+}

+ 5 - 0
src/main/java/com/zhiqiyun/open/core/models/equipment/EquipmentPassengerPeople.java

@@ -2,10 +2,14 @@ package com.zhiqiyun.open.core.models.equipment;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.zhiqiyun.open.core.enmus.Gender;
+import com.zhiqiyun.open.core.enmus.PassengerType;
 import lombok.Data;
 
 import java.util.Date;
 
+/**
+ * @author jtoms
+ */
 @Data
 @TableName("equipment_passenger_people")
 public class EquipmentPassengerPeople {
@@ -13,6 +17,7 @@ public class EquipmentPassengerPeople {
     private Long placeBaseInfoId;
     private Long equipmentId;
     private String faceId;
+    private PassengerType passengerType;
     private Date createdTime;
     private Gender gender;
     private String fromSource;

+ 63 - 37
src/main/java/com/zhiqiyun/open/core/schedule/EquipmentPeople.java

@@ -1,16 +1,23 @@
 package com.zhiqiyun.open.core.schedule;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.zhiqiyun.open.core.enmus.Gender;
+import com.zhiqiyun.open.core.enmus.PassengerType;
+import com.zhiqiyun.open.core.models.DictCity;
 import com.zhiqiyun.open.core.models.equipment.EquipmentPassenger;
 import com.zhiqiyun.open.core.models.equipment.EquipmentPassengerPeople;
+import com.zhiqiyun.open.core.service.DictCityService;
 import com.zhiqiyun.open.core.service.EquipmentPassengerPeopleService;
 import com.zhiqiyun.open.core.service.EquipmentPassengerService;
 import com.zhiqiyun.open.core.service.SequenceService;
 import com.zhiqiyun.open.utils.DateUtil;
 import com.zhiqiyun.open.utils.RandomUtil;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.time.DateUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.BoundListOperations;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -19,40 +26,59 @@ import java.util.List;
 @Slf4j
 @Component
 public class EquipmentPeople {
-	@Autowired
-	private EquipmentPassengerService equipmentPassengerService;
-
-	@Autowired
-	private EquipmentPassengerPeopleService equipmentPassengerPeopleService;
-
-	@Autowired
-	private SequenceService sequenceService;
-
-	@Scheduled(cron = "0/10 * * * * ?")
-	public void createPeople() {
-		List<EquipmentPassenger> listData = this.equipmentPassengerService.list();
-		for (EquipmentPassenger equipment : listData) {
-			int r = RandomUtil.getInt(0, 5);
-			if (r == 0 || r == 1) {
-
-				Long id = this.sequenceService.nextId();
-				int retentionTime = RandomUtil.getInt(10, 10000);
-
-				EquipmentPassengerPeople people = new EquipmentPassengerPeople();
-				people.setId(id);
-				people.setEquipmentId(equipment.getId());
-				people.setFaceId(RandomUtil.getuuid());
-				people.setGender(Gender.valueOf(r));
-				people.setFromSource("南宁");
-
-				people.setInTime(DateUtil.current());
-				int r1 = RandomUtil.getInt(0, 2);
-				if (r1 == 1) {
-					people.setOutTime(DateUtils.addSeconds(people.getInTime(), retentionTime));
-				}
-				people.setRetentionTime(retentionTime);
-				this.equipmentPassengerPeopleService.save(people);
-			}
-		}
-	}
+    @Autowired
+    private EquipmentPassengerService equipmentPassengerService;
+
+    @Autowired
+    private EquipmentPassengerPeopleService equipmentPassengerPeopleService;
+
+    @Autowired
+    private DictCityService dictCityService;
+
+    @Autowired
+    private SequenceService sequenceService;
+
+    @Autowired
+    private StringRedisTemplate stringRedisTemplate;
+
+    @Scheduled(cron = "0/10 * * * * ?")
+    public void createPeople() {
+        QueryWrapper<DictCity> wrapper = new QueryWrapper<>();
+        wrapper.eq("parent_id", "0");
+        List<DictCity> listDictCity = this.dictCityService.list(wrapper);
+        List<EquipmentPassenger> listData = this.equipmentPassengerService.list();
+        for (EquipmentPassenger equipment : listData) {
+
+            int r1 = RandomUtil.getInt(0, listDictCity.size() - 1);
+            int r2 = r1 % 2 + 1;
+            PassengerType type = PassengerType.valueOf(r2);
+
+            EquipmentPassengerPeople people = new EquipmentPassengerPeople();
+            people.setId(this.sequenceService.nextId());
+            people.setPlaceBaseInfoId(equipment.getPlaceBaseInfoId());
+            people.setEquipmentId(equipment.getId());
+            people.setPassengerType(type);
+            people.setCreatedTime(DateUtil.current());
+            people.setGender(Gender.valueOf(r2));
+
+
+            people.setFromSource(listDictCity.get(r1).getFullName());
+
+
+            String redisKey = String.format("equipment%s", equipment.getId());
+            BoundListOperations<String, String> boundListOps = this.stringRedisTemplate.boundListOps(redisKey);
+            log.info("{}>>>>>{}", boundListOps.size(), JSON.toJSONString(boundListOps.range(0, 10000)));
+            String faceId;
+            if (PassengerType.IN.equals(type)) {
+                faceId = RandomUtil.getuuid();
+                boundListOps.leftPush(faceId);
+            } else {
+                faceId = boundListOps.rightPop();
+            }
+            if (StringUtils.isNotBlank(faceId)) {
+                people.setFaceId(faceId);
+                this.equipmentPassengerPeopleService.save(people);
+            }
+        }
+    }
 }

+ 10 - 0
src/main/java/com/zhiqiyun/open/core/service/DictCityService.java

@@ -0,0 +1,10 @@
+package com.zhiqiyun.open.core.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhiqiyun.open.core.models.DictCity;
+
+/**
+ * @author jtoms
+ */
+public interface DictCityService extends IService<DictCity> {
+}

+ 14 - 0
src/main/java/com/zhiqiyun/open/core/service/impl/DictCityServiceImpl.java

@@ -0,0 +1,14 @@
+package com.zhiqiyun.open.core.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhiqiyun.open.core.mapper.DictCityMapper;
+import com.zhiqiyun.open.core.models.DictCity;
+import com.zhiqiyun.open.core.service.DictCityService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author jtoms
+ */
+@Service
+public class DictCityServiceImpl extends ServiceImpl<DictCityMapper, DictCity> implements DictCityService {
+}

+ 15 - 6
src/main/java/com/zhiqiyun/open/mvc/controller/EquipmentPassengerController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zhiqiyun.open.annotation.Permission;
+import com.zhiqiyun.open.core.enmus.PassengerType;
 import com.zhiqiyun.open.core.models.equipment.EquipmentPassenger;
 import com.zhiqiyun.open.core.models.equipment.EquipmentPassengerPeople;
 import com.zhiqiyun.open.core.models.user.OauthInfo;
@@ -62,16 +63,24 @@ public class EquipmentPassengerController {
         page.addOrder(OrderItem.desc("id"));
 
         Page<EquipmentPassenger> resultData = this.equipmentPassengerService.page(page, queryWrapper);
+        QueryWrapper<EquipmentPassengerPeople> passengerWrapper;
         for (EquipmentPassenger equipment : resultData.getRecords()) {
-            QueryWrapper<EquipmentPassengerPeople> wrapper = new QueryWrapper<>();
-            wrapper.eq("equipment_id", equipment.getId());
+            passengerWrapper = new QueryWrapper<>();
+            passengerWrapper.eq("equipment_id", equipment.getId());
+            passengerWrapper.eq("passenger_type", PassengerType.IN);
             if (params.getRangeDate() != null) {
-                queryWrapper.between("in_time", params.getRangeDate().getStatDate(), params.getRangeDate().getEndDate());
+                passengerWrapper.between("created_time", params.getRangeDate().getStatDate(), params.getRangeDate().getEndDate());
             }
-            Long inPeopleCount = this.equipmentPassengerPeopleService.count(wrapper);
+            Long inPeopleCount = this.equipmentPassengerPeopleService.count(passengerWrapper);
 
-            wrapper.isNotNull("out_time");
-            Long outPeopleCount = this.equipmentPassengerPeopleService.count(wrapper);
+
+            passengerWrapper = new QueryWrapper<>();
+            passengerWrapper.eq("equipment_id", equipment.getId());
+            passengerWrapper.eq("passenger_type", PassengerType.OUT);
+            if (params.getRangeDate() != null) {
+                passengerWrapper.between("created_time", params.getRangeDate().getStatDate(), params.getRangeDate().getEndDate());
+            }
+            Long outPeopleCount = this.equipmentPassengerPeopleService.count(passengerWrapper);
 
             equipment.setInPeopleCount(inPeopleCount);
             equipment.setOutPeopleCount(outPeopleCount);

+ 1 - 0
src/main/resources/db/migration/V1.0.4__passenger_equipment.sql

@@ -23,6 +23,7 @@ CREATE TABLE `equipment_passenger_people`
     `place_base_info_id` BIGINT(20) NULL DEFAULT NULL COMMENT '点位ID',
     `equipment_id`       BIGINT(20) NULL DEFAULT NULL COMMENT '设备ID',
     `face_id`            VARCHAR(32) NULL DEFAULT NULL COMMENT '面容ID',
+    `passenger_type`     INT(1) NULL DEFAULT NULL COMMENT '进出类型',
     `created_time`       DATETIME NULL DEFAULT NULL COMMENT '创建时间',
     `gender`             INT(1) NULL DEFAULT NULL COMMENT '性别',
     `from_source`        VARCHAR(32) NULL DEFAULT NULL COMMENT '来源地区',