|
@@ -0,0 +1,106 @@
|
|
|
|
+package com.huimv.manager.controller;
|
|
|
|
+
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
+import com.huimv.manager.entity.MovePigpenEntity;
|
|
|
|
+import com.huimv.manager.entity.PigBasicInformationEntity;
|
|
|
|
+import com.huimv.manager.mapper.MovePigpenDao;
|
|
|
|
+import com.huimv.manager.mapper.PigBasicInformationDao;
|
|
|
|
+import com.huimv.manager.result.R;
|
|
|
|
+import com.huimv.manager.result.RRException;
|
|
|
|
+import com.huimv.manager.utils.Constant;
|
|
|
|
+import com.huimv.manager.utils.PageUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
|
+import org.springframework.web.bind.annotation.CrossOrigin;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
|
+
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Objects;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * <p>
|
|
|
|
+ * 待转猪只Controller
|
|
|
|
+ * </p>
|
|
|
|
+ *
|
|
|
|
+ * @author yinhao
|
|
|
|
+ * @date 2021/8/11 9:49
|
|
|
|
+ */
|
|
|
|
+@CrossOrigin
|
|
|
|
+@RestController
|
|
|
|
+@RequestMapping("/prepareTrans")
|
|
|
|
+public class PreparePigController {
|
|
|
|
+
|
|
|
|
+ private final int breeding = 50;
|
|
|
|
+ private final int childbirth = 50;
|
|
|
|
+ private final int threadshold = 5;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private MovePigpenDao movePigpenDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private PigBasicInformationDao pigBasicInformationDao;
|
|
|
|
+
|
|
|
|
+ @RequestMapping("/prepareCountAndDetail")
|
|
|
|
+ public R countPrepareAmountAndListPigDetail(Integer type,
|
|
|
|
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
|
|
|
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
|
|
|
+ int breed = Constant.Stage.PEIZHONG.getType();
|
|
|
|
+ if (type != null && type != breed && type != Constant.Stage.FENMIAN.getType()) {
|
|
|
|
+ throw new RRException("type参数有误,请检查");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ LambdaQueryWrapper<MovePigpenEntity> lambdaQuery = Wrappers.lambdaQuery();
|
|
|
|
+ lambdaQuery.eq(MovePigpenEntity::getStage, breed);
|
|
|
|
+ List<MovePigpenEntity> breedingList = movePigpenDao.selectList(lambdaQuery);
|
|
|
|
+
|
|
|
|
+ List<String> prepareToTransList = filterEligibleEartags(breedingList, breeding);
|
|
|
|
+ int prepareToTransNum = prepareToTransList.size();
|
|
|
|
+
|
|
|
|
+ lambdaQuery.clear();
|
|
|
|
+
|
|
|
|
+ lambdaQuery.eq(MovePigpenEntity::getStage, Constant.Stage.FENMIAN.getType());
|
|
|
|
+ List<MovePigpenEntity> childbirthList = movePigpenDao.selectList(lambdaQuery);
|
|
|
|
+ List<String> weaningList = filterEligibleEartags(childbirthList, childbirth);
|
|
|
|
+ int weaningNum = weaningList.size();
|
|
|
|
+
|
|
|
|
+ List<String> list = CollUtil.newArrayList(prepareToTransList);
|
|
|
|
+ if (type == null) {
|
|
|
|
+ list.addAll(prepareToTransList);
|
|
|
|
+ list.addAll(weaningList);
|
|
|
|
+ } else if (type == breed) {
|
|
|
|
+ list.addAll(prepareToTransList);
|
|
|
|
+ } else {
|
|
|
|
+ list.addAll(weaningList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ IPage<PigBasicInformationEntity> iPage = new Page<>(pageNum, pageSize);
|
|
|
|
+
|
|
|
|
+ LambdaQueryWrapper<PigBasicInformationEntity> eartagLambdaQuery = Wrappers.lambdaQuery();
|
|
|
|
+ IPage<PigBasicInformationEntity> page = new Page<>(pageNum, pageSize);
|
|
|
|
+ if (CollUtil.isNotEmpty(list)) {
|
|
|
|
+ eartagLambdaQuery.in(PigBasicInformationEntity::getEartagNo, list);
|
|
|
|
+ page = pigBasicInformationDao.selectPage(iPage, eartagLambdaQuery);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ PageUtils pageUtils = new PageUtils(page);
|
|
|
|
+ return Objects.requireNonNull(Objects.requireNonNull(R.ok().put("prepareToTransNum", prepareToTransNum)).put("weaningNum", weaningNum)).put("page", pageUtils);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<String> filterEligibleEartags(List<MovePigpenEntity> list, Integer type) {
|
|
|
|
+ return list.stream()
|
|
|
|
+ .filter(movePigpenEntity -> DateUtil.betweenDay(movePigpenEntity.getMoveDate(), new Date(), false) > type - threadshold)
|
|
|
|
+ .sorted((o1, o2) -> (int) (o2.getMoveDate().getTime() - o1.getMoveDate().getTime()))
|
|
|
|
+ .map(MovePigpenEntity::getEartagNo)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ }
|
|
|
|
+}
|