Ver código fonte

新建耳标流水分页等

zhuoning 3 anos atrás
pai
commit
a7e62389a8

+ 3 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDataRepo.java

@@ -1,6 +1,9 @@
 package com.huimv.eartag2.common.dao.repo;
 
 import com.huimv.eartag2.common.dao.entity.EartagDataEntity;
+import com.huimv.eartag2.common.dao.entity.EartagDeviceOnlineEntity;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;

+ 12 - 2
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagEartagOnlineRepo.java

@@ -22,6 +22,16 @@ public interface EartagEartagOnlineRepo extends JpaRepository<EartagEartagOnline
     @Query(nativeQuery = true,value = "SELECT * FROM eartag_eartag_online WHERE earmark=?1 AND DATE_FORMAT(add_date,'%Y-%m-%d')=DATE_FORMAT(?2,'%Y-%m-%d') AND farm_id=?3")
     EartagEartagOnlineEntity getOneByEarmarkAndFarmId(String earmark, String todayDateText, String farmId);
 
-
-
+    /**
+     * @Method      : getEartagOnlineByEarmarkAndDate
+     * @Description : 
+     * @Params      : [earmark, startDateText, todayDateText]
+     * @Return      : java.util.List<com.huimv.eartag2.common.dao.entity.EartagEartagOnlineEntity>
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/8       
+     * @Time        : 18:43
+     */
+    @Query(nativeQuery = true,value = "SELECT * FROM eartag_eartag_online WHERE earmark=?1 AND add_date BETWEEN DATE_FORMAT(?2,'%Y-%m-%d') AND DATE_FORMAT(?3,'%Y-%m-%d') ORDER BY add_date ASC")
+    List<EartagEartagOnlineEntity> getEartagOnlineByEarmarkAndDate(String earmark, String startDateText, String todayDateText);
 }

+ 4 - 1
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/BizConst.java

@@ -49,5 +49,8 @@ public class BizConst {
     public final static String MSG_EARTAG_REGISTER_NO_EXIST = "该耳标暂无任何注册信息.";
 
     public final static Integer CODE_EARTAG_FLOW_NO_EXIST = 10005;
-    public final static String MSG_EARTAG_FLOW_NO_EXIST = "该耳标当天暂无任何流水信息.";
+    public final static String MSG_EARTAG_FLOW_NO_EXIST = "该耳标当天暂无流水信息.";
+
+    public final static Integer CODE_EARTAG_ONLINE_NO_EXIST = 10006;
+    public final static String MSG_EARTAG_ONLINE_NO_EXIST = "该耳标暂无在线统计信息.";
 }

+ 21 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/JSONUtil.java

@@ -0,0 +1,21 @@
+package com.huimv.eartag2.common.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Component
+public class JSONUtil {
+    //将实体类转成JSON对象
+    public static JSONObject convertEntityToJSONObject(Object obj){
+        return JSON.parseObject(JSONObject.toJSONString(obj));
+    }
+}

+ 1 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/controller/DeviceController.java

@@ -181,7 +181,7 @@ public class DeviceController {
 
     /**
      * @Method      : listEartagOnlineCountByDeviceCode
-     * @Description : 
+     * @Description : 显示设备关联耳标统计
      * @Params      : [deviceCode]
      * @Return      : com.huimv.eartag2.common.utils.Result
      * 

+ 82 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/controller/EartagController.java

@@ -61,6 +61,27 @@ public class EartagController {
     }
 
     /**
+     * @Method      : listEartagFlowByEarmarkAndTodayInPager
+     * @Description :
+     * @Params      : [earmark, pageNo, pageSize]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     *
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/8
+     * @Time        : 20:18
+     */
+    @RequestMapping(value = "/listEartagFlowByEarmarkAndTodayInPager",method = RequestMethod.GET)
+    public Result listEartagFlowByEarmarkAndTodayInPager(@RequestParam(value = "earmark",required = true) String earmark,
+                                                         @RequestParam(value = "pageNo",required = true) Integer pageNo,
+                                                         @RequestParam(value = "pageSize",required = true) Integer pageSize){
+        log.info("<listEartagFlowByEarmarkAndTodayInPager> 输入参数 earmark>>"+earmark);
+        log.info("<listEartagFlowByEarmarkAndTodayInPager> 输入参数 pageNo>>"+pageNo);
+        log.info("<listEartagFlowByEarmarkAndTodayInPager> 输入参数 pageSize>>"+pageSize);
+        //
+        return eartagService.listEartagFlowByEarmarkAndTodayInPager(earmark,pageNo,pageSize);
+    }
+
+    /**
      * @Method      : listEartagFlowByDeviceCodeAndEarmarkAndToday
      * @Description : 读取设备下和该耳标今天所有耳标流水,设备在线页面调用
      * @Params      : [earmark, deviceCode]
@@ -71,11 +92,71 @@ public class EartagController {
      * @Time        : 18:56
      */
     @RequestMapping(value = "/listEartagFlowByDeviceCodeAndEarmarkAndToday",method = RequestMethod.GET)
-    public Result listEartagFlowByDeviceCodeAndEarmarkAndToday(@RequestParam(value = "earmark",required = true) String earmark,@RequestParam(value = "deviceCode",required = true) String deviceCode) throws ParseException {
+    public Result listEartagFlowByDeviceCodeAndEarmarkAndToday(@RequestParam(value = "earmark",required = true) String earmark,
+                                                               @RequestParam(value = "deviceCode",required = true) String deviceCode) throws ParseException {
         log.info("<listEartagFlowByDeviceCodeAndEarmarkAndToday> 输入参数 earmark>>"+earmark);
         log.info("<listEartagFlowByDeviceCodeAndEarmarkAndToday> 输入参数 deviceCode>"+deviceCode);
         //
         return eartagService.listEartagFlowByDeviceCodeAndEarmarkAndToday(earmark,deviceCode);
     }
 
+    /**
+     * @Method      : listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager
+     * @Description : 读取设备下和该耳标今天所有耳标流水,设备在线页面调用 分页
+     * @Params      : [earmark, deviceCode]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/8       
+     * @Time        : 20:34
+     */
+    @RequestMapping(value = "/listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager",method = RequestMethod.GET)
+    public Result listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager(@RequestParam(value = "earmark",required = true) String earmark,
+                                                                      @RequestParam(value = "deviceCode",required = true) String deviceCode,
+                                                                      @RequestParam(value = "pageNo",required = true) Integer pageNo,
+                                                                      @RequestParam(value = "pageSize",required = true) Integer pageSize) throws ParseException {
+        log.info("<listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager> 输入参数 earmark>>"+earmark);
+        log.info("<listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager> 输入参数 deviceCode>"+deviceCode);
+        log.info("<listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager> 输入参数 pageNo>>"+pageNo);
+        log.info("<listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager> 输入参数 pageSize>>"+pageSize);
+        //
+        return eartagService.listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager(earmark,deviceCode,pageNo,pageSize);
+    }
+
+    /**
+     * @Method      : listEartagOnlineCountByEarmarkAndDate
+     * @Description : 显示耳标在线统计
+     * @Params      : [earmark, pastDays]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/8       
+     * @Time        : 18:28
+     */
+    @RequestMapping(value = "/listEartagOnlineCountByEarmarkAndDate",method = RequestMethod.GET)
+    public Result listEartagCountByEarmarkAndDate(@RequestParam(value = "earmark",required = true) String earmark,@RequestParam(value = "pastDays",required = true) Integer pastDays) throws ParseException {
+        log.info("<listEartagOnlineCountByEarmarkAndDate> 输入参数 earmark>>"+earmark);
+        log.info("<listEartagOnlineCountByEarmarkAndDate> 输入参数 pastDays>"+pastDays);
+        //
+        return eartagService.listEartagOnlineCountByEarmarkAndDate(earmark,pastDays);
+    }
+
+    /**
+     * @Method      : listEartagOnlineStatusByEarmarkAndDate
+     * @Description : 显示耳标在线状态
+     * @Params      : [earmark, pastDays]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/8       
+     * @Time        : 19:52
+     */
+    @RequestMapping(value = "/listEartagOnlineStatusByEarmarkAndDate",method = RequestMethod.GET)
+    public Result listEartagOnlineStatusByEarmarkAndDate(@RequestParam(value = "earmark",required = true) String earmark,@RequestParam(value = "pastDays",required = true) Integer pastDays) throws ParseException {
+        log.info("<listEartagOnlineStatusByEarmarkAndDate> 输入参数 earmark>>"+earmark);
+        log.info("<listEartagOnlineStatusByEarmarkAndDate> 输入参数 pastDays>"+pastDays);
+        //
+        return eartagService.listEartagOnlineStatusByEarmarkAndDate(earmark,pastDays);
+    }
+
 }

+ 12 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IEartagService.java

@@ -12,4 +12,16 @@ public interface IEartagService {
     Result listEartagFlowByEarmarkAndToday(String earmark) throws ParseException;
 
     Result listEartagFlowByDeviceCodeAndEarmarkAndToday(String earmark, String deviceCode) throws ParseException;
+
+    //显示耳标在线统计
+    Result listEartagOnlineCountByEarmarkAndDate(String earmark, Integer pastDays) throws ParseException;
+
+    //显示耳标在线统计
+    Result listEartagOnlineStatusByEarmarkAndDate(String earmark, Integer pastDays) throws ParseException;
+
+    //带分页查询耳标流水
+    Result listEartagFlowByEarmarkAndTodayInPager(String earmark, Integer pageNo, Integer pageSize);
+
+    //带分页查询耳标流水
+    Result listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager(String earmark, String deviceCode, Integer pageNo, Integer pageSize);
 }

+ 1 - 2
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceServiceImpl.java

@@ -75,7 +75,7 @@ public class DeviceServiceImpl implements IDeviceService {
         }
     }
 
-    //
+    //分页查询
     private Result listDeviceOnlineFromMySQL(String farmId, String addDate, String deviceCode, String alias, Integer pageNo, Integer pageSize) {
 //        //
 //        List<EartagDeviceOnlineEntity> deviceOnlineEntityList = deviceOnlineRepo.getDeviceOnlineByFarmIdAndCreateDate(farmId,addDate);
@@ -114,7 +114,6 @@ public class DeviceServiceImpl implements IDeviceService {
             return criteriaQuery.orderBy(orders).getRestriction();
         };
         Pageable pageable = PageRequest.of(pageNo - 1, pageSize);
-//        return new Result(ResultCode.SUCCESS,applyRepo.listApply(pageable,applyId));
         return new Result(ResultCode.SUCCESS, deviceOnlineRepo.findAll(sf, pageable));
     }
 

+ 170 - 4
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/EartagServiceImpl.java

@@ -1,19 +1,29 @@
 package com.huimv.eartag2.manage.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.huimv.eartag2.common.dao.entity.EartagDataEntity;
+import com.huimv.eartag2.common.dao.entity.EartagDeviceOnlineEntity;
+import com.huimv.eartag2.common.dao.entity.EartagEartagOnlineEntity;
 import com.huimv.eartag2.common.dao.entity.EartagEartagRegisterEntity;
 import com.huimv.eartag2.common.dao.repo.EartagDataRepo;
+import com.huimv.eartag2.common.dao.repo.EartagEartagOnlineRepo;
 import com.huimv.eartag2.common.dao.repo.EartagEartagRegisterRepo;
-import com.huimv.eartag2.common.utils.BizConst;
-import com.huimv.eartag2.common.utils.DateUtil;
-import com.huimv.eartag2.common.utils.Result;
-import com.huimv.eartag2.common.utils.ResultCode;
+import com.huimv.eartag2.common.utils.*;
 import com.huimv.eartag2.manage.service.IEartagService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
+import javax.persistence.criteria.Order;
+import javax.persistence.criteria.Predicate;
+import java.sql.Date;
 import java.text.ParseException;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -25,11 +35,167 @@ import java.util.List;
  * @Create : 2020-12-25
  **/
 @Service
+@Slf4j
 public class EartagServiceImpl implements IEartagService {
     @Autowired
     private EartagEartagRegisterRepo eartagRegisterRepo;
     @Autowired
     private EartagDataRepo eartagDataRepo;
+    @Autowired
+    private EartagEartagOnlineRepo eartagOnlineRepo;
+
+    /**
+     * @Method      : listEartagOnlineStatusByEarmarkAndDate
+     * @Description : 显示耳标在线统计
+     * @Params      : [earmark, pastDays]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     *
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/8
+     * @Time        : 18:30
+     */
+    @Override
+    public Result listEartagOnlineStatusByEarmarkAndDate(String earmark, Integer pastDays) throws ParseException {
+        DateUtil du = new DateUtil();
+        String todayDateText = du.getTodayDateText();
+        String startDateText = du.getPastDate(pastDays);
+        log.info("<listEartagOnlineStatusByEarmarkAndDate> startDateText>>"+startDateText);
+        log.info("<listEartagOnlineStatusByEarmarkAndDate> todayDateText>>"+todayDateText);
+        //读取耳标在线统计记录
+        List<EartagEartagOnlineEntity> eartagOnlineEntityList = eartagOnlineRepo.getEartagOnlineByEarmarkAndDate(earmark,startDateText,todayDateText);
+        if(eartagOnlineEntityList.size()>0){
+            JSONArray dataJa = new JSONArray();
+            List<String> pastDateList = du.getPastIntervalsASC(pastDays);
+            for (String pastDayDate : pastDateList) {
+                JSONObject newJo = new JSONObject();
+                dataJa.add(newJo);
+                newJo.put("time", pastDayDate);
+                boolean ieFound = false;
+                for (EartagEartagOnlineEntity eartagOnlineEntity:eartagOnlineEntityList) {
+                    int compareTo = du.parseDate(pastDayDate).compareTo(eartagOnlineEntity.getAddDate());
+                    if (compareTo == 0) {
+                        newJo.put("value", 1);
+                        ieFound = true;
+                        break;
+                    }
+                }
+                if (!ieFound) {
+                    newJo.put("value", 0);
+                }
+            }
+//            for(EartagEartagOnlineEntity eartagOnlineEntity:eartagOnlineEntityList){
+//                JSONObject eartagOnlineJo = JSONUtil.convertEntityToJSONObject(eartagOnlineEntity);
+//                eartagOnlineJo.put("firstTime",du.formatDatetimeText(eartagOnlineJo.getDate("firstTime")));
+//                eartagOnlineJo.put("lastTime",du.formatDatetimeText(eartagOnlineJo.getDate("lastTime")));
+//                eartagOnlineJo.put("addDate",du.formatDateText(eartagOnlineJo.getDate("addDate")));
+//                dataJa.add(eartagOnlineJo);
+//            }
+            return new Result(ResultCode.SUCCESS,dataJa);
+        }else{
+            return new Result(BizConst.CODE_EARTAG_ONLINE_NO_EXIST,BizConst.MSG_EARTAG_ONLINE_NO_EXIST,false);
+        }
+    }
+
+    /**
+     * @Method      : getEartagRegisterByEarmarkInPager
+     * @Description : 分页查询耳标流水
+     * @Params      : [earmark, pageNo, pageSize]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/8       
+     * @Time        : 20:19
+     */
+    @Override
+    public Result listEartagFlowByEarmarkAndTodayInPager(String earmark, Integer pageNo, Integer pageSize) {
+        //
+        Specification<EartagDataEntity> sf = (Specification<EartagDataEntity>) (root, criteriaQuery, criteriaBuilder) -> {
+            //
+            List<Predicate> predList = new ArrayList<>();
+            if (null != earmark) {
+                predList.add(criteriaBuilder.greaterThanOrEqualTo(root.get("earmark").as(String.class), earmark));
+            }
+            Predicate[] pred = new Predicate[predList.size()];
+            Predicate and = criteriaBuilder.and(predList.toArray(pred));
+            criteriaQuery.where(and);
+            //
+            List<Order> orders = new ArrayList<>();
+            orders.add(criteriaBuilder.desc(root.get("id")));
+            return criteriaQuery.orderBy(orders).getRestriction();
+        };
+        Pageable pageable = PageRequest.of(pageNo - 1, pageSize);
+        return new Result(ResultCode.SUCCESS, eartagDataRepo.findAll(sf, pageable));
+    }
+
+    /**
+     * @Method      : listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager
+     * @Description : 
+     * @Params      : [earmark, deviceCode, pageNo, pageSize]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/8       
+     * @Time        : 20:37
+     */
+    @Override
+    public Result listEartagFlowByDeviceCodeAndEarmarkAndTodayInPager(String earmark, String deviceCode, Integer pageNo, Integer pageSize) {
+        //
+        Specification<EartagDataEntity> sf = (Specification<EartagDataEntity>) (root, criteriaQuery, criteriaBuilder) -> {
+            //
+            List<Predicate> predList = new ArrayList<>();
+            //earmark
+            if (null != earmark) {
+                predList.add(criteriaBuilder.greaterThanOrEqualTo(root.get("earmark").as(String.class), earmark));
+            }
+            //
+            if (null != deviceCode) {
+                predList.add(criteriaBuilder.greaterThanOrEqualTo(root.get("device").as(String.class), deviceCode));
+            }
+            Predicate[] pred = new Predicate[predList.size()];
+            Predicate and = criteriaBuilder.and(predList.toArray(pred));
+            criteriaQuery.where(and);
+            //
+            List<Order> orders = new ArrayList<>();
+            orders.add(criteriaBuilder.desc(root.get("id")));
+            return criteriaQuery.orderBy(orders).getRestriction();
+        };
+        Pageable pageable = PageRequest.of(pageNo - 1, pageSize);
+        return new Result(ResultCode.SUCCESS, eartagDataRepo.findAll(sf, pageable));
+    }
+
+    /**
+     * @Method      : listEartagOnlineCountByEarmarkAndDate
+     * @Description : 显示耳标在线统计
+     * @Params      : [earmark, pastDays]
+     * @Return      : com.huimv.eartag2.common.utils.Result
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/8       
+     * @Time        : 18:30
+     */
+    @Override
+    public Result listEartagOnlineCountByEarmarkAndDate(String earmark, Integer pastDays) throws ParseException {
+        DateUtil du = new DateUtil();
+        String todayDateText = du.getTodayDateText();
+        String startDateText = du.getPastDate(pastDays);
+        log.info("<listEartagOnlineCountByEarmarkAndDate> startDateText>>"+startDateText);
+        log.info("<listEartagOnlineCountByEarmarkAndDate> todayDateText>>"+todayDateText);
+        //读取耳标在线统计记录
+        List<EartagEartagOnlineEntity> eartagOnlineEntityList = eartagOnlineRepo.getEartagOnlineByEarmarkAndDate(earmark,startDateText,todayDateText);
+        if(eartagOnlineEntityList.size()>0){
+            JSONArray dataJa = new JSONArray();
+            for(EartagEartagOnlineEntity eartagOnlineEntity:eartagOnlineEntityList){
+                JSONObject eartagOnlineJo = JSONUtil.convertEntityToJSONObject(eartagOnlineEntity);
+                eartagOnlineJo.put("firstTime",du.formatDatetimeText(eartagOnlineJo.getDate("firstTime")));
+                eartagOnlineJo.put("lastTime",du.formatDatetimeText(eartagOnlineJo.getDate("lastTime")));
+                eartagOnlineJo.put("addDate",du.formatDateText(eartagOnlineJo.getDate("addDate")));
+                dataJa.add(eartagOnlineJo);
+            }
+            return new Result(ResultCode.SUCCESS,dataJa);
+        }else{
+            return new Result(BizConst.CODE_EARTAG_ONLINE_NO_EXIST,BizConst.MSG_EARTAG_ONLINE_NO_EXIST,false);
+        }
+    }
 
     /**
      * @Method      : listEartagFlowByDeviceCodeAndEarmarkAndToday