|
@@ -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
|