wwh před 1 rokem
rodič
revize
d782225ac7

+ 8 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingenv/entity/FeedingEnv.java

@@ -71,4 +71,12 @@ public class FeedingEnv {
     /** 组织id */
     @ApiModelProperty(value = "组织id", position = 9)
     private String orgId;
+
+    /** 组织id */
+    @ApiModelProperty(value = "猪只数量", position = 10)
+    private String pigNum;
+
+    /** 组织id */
+    @ApiModelProperty(value = "0为母猪 1为肥猪", position = 11)
+    private String type;
 }

+ 4 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingenv/param/FeedingEnvPageParam.java

@@ -32,5 +32,9 @@ public class FeedingEnvPageParam {
     @ApiModelProperty(value = "组织id")
     private String  orgId;
 
+    /** 组织id */
+    @ApiModelProperty(value = "猪只类型")
+    private String  type;
+
 
 }

+ 1 - 1
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingenv/service/impl/FeedingEnvServiceImpl.java

@@ -64,7 +64,7 @@ public class FeedingEnvServiceImpl extends ServiceImpl<FeedingEnvMapper, Feeding
     @Override
     public List<FeedingEnv> page(FeedingEnvPageParam feedingEnvPageParam) {
         QueryWrapper<FeedingEnv> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("org_id", feedingEnvPageParam.getOrgId());
+        queryWrapper.eq("org_id", feedingEnvPageParam.getOrgId()).eq("type",feedingEnvPageParam.getType());
         List<FeedingEnv> feedingEnvs = envMapper.selectList(queryWrapper);
         return feedingEnvs;
     }

+ 28 - 4
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingfat/controller/FeedingFatController.java

@@ -30,10 +30,7 @@ import vip.xiaonuo.common.pojo.CommonValidList;
 import vip.xiaonuo.modular.feed.feedingfat.entity.FeedingFat;
 import vip.xiaonuo.modular.feed.feedingfat.param.*;
 import vip.xiaonuo.modular.feed.feedingfat.service.FeedingFatService;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatMoveVo;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatMoveVo2;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatVo;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatVo2;
+import vip.xiaonuo.modular.feed.feedingfat.vo.*;
 import vip.xiaonuo.modular.feed.feedinglist.vo.FeedingListVo2;
 
 import javax.annotation.Resource;
@@ -136,4 +133,31 @@ public class FeedingFatController {
     public CommonResult<List<FeedingFatVo2>> listFatSeven(@RequestBody @Valid FeedingFatMoveParam fatMoveParam) {
         return CommonResult.data(feedingFatService.feedingDay(fatMoveParam));
     }
+
+
+    /**
+     * 采食曲线
+     *
+     * @author wang
+     * @date  2023/12/27 15:34
+     */
+    @ApiOperationSupport(order = 7)
+    @ApiOperation("大屏母猪采食饮水")
+    @PostMapping("/feed/feedinglist/feedScreen")
+    public CommonResult<List<FeedingFatScreenVo>> feedScreen(@RequestBody @Valid FeedingFatScreenParam fatScreenParam) {
+        return CommonResult.data(feedingFatService.feedScreen(fatScreenParam));
+    }
+
+    /**
+     * 采食曲线
+     *
+     * @author wang
+     * @date  2023/12/27 15:34
+     */
+    @ApiOperationSupport(order = 8)
+    @ApiOperation("大屏母猪采食饮水")
+    @PostMapping("/feed/feedinglist/feedFat")
+    public CommonResult<List<FeedingFatScreenVo>> feedFatScreen(@RequestBody @Valid FeedingFatScreenParam fatScreenParam) {
+        return CommonResult.data(feedingFatService.feedFatScreen(fatScreenParam));
+    }
 }

+ 9 - 1
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingfat/entity/FeedingFat.java

@@ -85,6 +85,14 @@ public class FeedingFat {
     private String temp;
 
     /** 日龄 */
-    @ApiModelProperty(value = "体温", position = 14)
+    @ApiModelProperty(value = "日龄", position = 14)
     private String dayNum;
+
+    /** 日龄 */
+    @ApiModelProperty(value = "设备类型 0为母猪 1为肥猪", position = 15)
+    private String deviceType;
+
+    /** 日龄 */
+    @ApiModelProperty(value = "料肉比", position = 16)
+    private String rank;
 }

+ 3 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingfat/mapper/FeedingFatMapper.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import vip.xiaonuo.modular.feed.feedingfat.entity.FeedingFat;
 import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatMoveVo;
+import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatScreenVo;
 import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatVo;
 import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatVo2;
 
@@ -57,4 +58,6 @@ public interface FeedingFatMapper extends BaseMapper<FeedingFat> {
     List<FeedingFatVo2> listMonthWater(@Param(Constants.WRAPPER) QueryWrapper<FeedingFat> queryWrapper);
     /*移动端月料肉比曲线*/
     List<FeedingFatVo2> listMonthweigth(@Param(Constants.WRAPPER) QueryWrapper<FeedingFat> queryWrapper);
+
+    List<FeedingFatScreenVo> feedingScreen(@Param(Constants.WRAPPER) QueryWrapper<FeedingFat> queryWrapper);
 }

+ 9 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingfat/mapper/mapping/FeedingFatMapper.xml

@@ -109,4 +109,13 @@
         group BY DATE_FORMAT(create_time,'%Y-%m-%d')
         ORDER BY create_time ASC
     </select>
+
+
+    <select id="feedingScreen" resultType="vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatScreenVo">
+        select IFNULL(SUM(feed_value),'0') feed, IFNULL(SUM(water_value),'0') water,create_time createDate
+        FROM feeding_fat
+        ${ew.customSqlSegment}
+        group BY DATE_FORMAT(create_time,'%Y-%m-%d %H')
+        ORDER BY create_time ASC
+    </select>
 </mapper>

+ 40 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingfat/param/FeedingFatScreenParam.java

@@ -0,0 +1,40 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.feed.feedingfat.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 精准饲喂母猪采食编辑参数
+ *
+ * @author wang
+ * @date  2023/12/28 09:22
+ **/
+@Getter
+@Setter
+public class FeedingFatScreenParam {
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id",required = true)
+    private String orgId;
+
+    /** 组织id */
+    @ApiModelProperty(value = "母猪时为耳标号,肥猪时为单元名称")
+    private String eartag;
+
+    /** 组织id */
+    @ApiModelProperty(value = "时间类型 1为今日 2为昨日",required = true)
+    private String timeType;
+}

+ 9 - 4
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingfat/service/FeedingFatService.java

@@ -17,10 +17,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import vip.xiaonuo.modular.feed.feedingfat.entity.FeedingFat;
 import vip.xiaonuo.modular.feed.feedingfat.param.*;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatMoveVo;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatMoveVo2;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatVo;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatVo2;
+import vip.xiaonuo.modular.feed.feedingfat.vo.*;
 
 import java.util.List;
 import java.util.Map;
@@ -45,6 +42,14 @@ public interface FeedingFatService extends IService<FeedingFat> {
     /*移动端栋舍监测*/
     FeedingFatMoveVo2 listFatByUnitId(FeedingFatMove2Param fatMove2Param);
 
+
     /*全场近7天采食曲线*/
     List<FeedingFatVo2> feedingDay(FeedingFatMoveParam fatMoveParam);
+
+    /*大屏母猪采食饮水曲线*/
+    List<FeedingFatScreenVo> feedScreen(FeedingFatScreenParam fatScreenParam);
+
+    /*大屏肥猪采食饮水曲线*/
+    List<FeedingFatScreenVo> feedFatScreen(FeedingFatScreenParam fatScreenParam);
+
 }

+ 51 - 15
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingfat/service/impl/FeedingFatServiceImpl.java

@@ -41,10 +41,7 @@ import vip.xiaonuo.modular.feed.feedingfat.entity.FeedingFat;
 import vip.xiaonuo.modular.feed.feedingfat.mapper.FeedingFatMapper;
 import vip.xiaonuo.modular.feed.feedingfat.param.*;
 import vip.xiaonuo.modular.feed.feedingfat.service.FeedingFatService;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatMoveVo;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatMoveVo2;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatVo;
-import vip.xiaonuo.modular.feed.feedingfat.vo.FeedingFatVo2;
+import vip.xiaonuo.modular.feed.feedingfat.vo.*;
 import vip.xiaonuo.modular.feed.feedinglist.entity.FeedingList;
 import vip.xiaonuo.modular.feed.feedinglist.mapper.FeedingListMapper;
 import vip.xiaonuo.modular.feed.feedinglist.vo.FeedingListVo;
@@ -52,6 +49,7 @@ import vip.xiaonuo.modular.feed.feedinglist.vo.FeedingListVo2;
 
 
 import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -90,22 +88,18 @@ public class FeedingFatServiceImpl extends ServiceImpl<FeedingFatMapper, Feeding
         if (idList.size() != 0) {
             queryWrapper1.in("unit_id", idList);
         }
-        FeedingEnv feedingEnv = envMapper.selectOne(queryWrapper1);//饲养头数
+        FeedingEnv feedingEnv = envMapper.selectOne(queryWrapper1);
 //        List<String> unitList = new ArrayList<>();
 //        envs.forEach(i->{
 //            unitList.add(i.getDeviceCode());
 //        });
         FeedingFatVo feed = fatMapper.getFeed(feedingEnv.getDeviceCode(), orgId);
-        double aDouble = Double.parseDouble(feed.getTodayFeed());
-        double aDouble1 = Double.parseDouble(feed.getDayWeight());
-        if (aDouble1 == 0) {
-            feed.setRank("0.00%");
-        } else {
-            double rank = aDouble / aDouble1;
-            DecimalFormat def = new DecimalFormat("0.00");
-            feed.setRank(def.format(rank));
-        }
-        feed.setFatCount(1);
+        QueryWrapper<FeedingFat> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.eq("device_code", feedingEnv.getDeviceCode()).eq("org_id", orgId)
+                .orderByDesc("id").last(" limit 1");
+        FeedingFat feedingFat = fatMapper.selectOne(queryWrapper2);
+        feed.setRank(feedingFat.getRank());
+        feed.setFatCount(Integer.parseInt(feedingEnv.getPigNum()));
         return feed;
     }
 
@@ -316,5 +310,47 @@ public class FeedingFatServiceImpl extends ServiceImpl<FeedingFatMapper, Feeding
         return list;
     }
 
+    @Override
+    public List<FeedingFatScreenVo> feedScreen(FeedingFatScreenParam fatScreenParam) {
+        String eartag = fatScreenParam.getEartag();
+        Date yesterdaymorning = DataUill.getYesterdaymorning();
+        Date timesmorning = DataUill.getTimesmorning();
+        QueryWrapper<FeedingFat> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("org_id", fatScreenParam.getOrgId())
+                .eq(StringUtils.isNotBlank(eartag), "eartag_num", eartag);
+        if ("1".equals(fatScreenParam.getTimeType())) {
+            queryWrapper.ge("create_time", timesmorning);
+        }
+        if ("2".equals(fatScreenParam.getTimeType())) {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            String format = sdf.format(yesterdaymorning);
+            String endTime = format + " 23:59:59";
+            queryWrapper.between("create_time", yesterdaymorning, endTime);
+        }
+        List<FeedingFatScreenVo> feedingFatScreenVos = fatMapper.feedingScreen(queryWrapper);
+        return feedingFatScreenVos;
+    }
+
+    @Override
+    public List<FeedingFatScreenVo> feedFatScreen(FeedingFatScreenParam fatScreenParam) {
+        String eartag = fatScreenParam.getEartag();//为单元名称
+        Date yesterdaymorning = DataUill.getYesterdaymorning();
+        Date timesmorning = DataUill.getTimesmorning();
+        QueryWrapper<FeedingFat> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("org_id", fatScreenParam.getOrgId())
+                .eq(StringUtils.isNotBlank(eartag), "unit_name", eartag);
+        if ("1".equals(fatScreenParam.getTimeType())) {
+            queryWrapper.ge("create_time", timesmorning);
+        }
+        if ("2".equals(fatScreenParam.getTimeType())) {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            String format = sdf.format(yesterdaymorning);
+            String endTime = format + " 23:59:59";
+            queryWrapper.between("create_time", yesterdaymorning, endTime);
+        }
+        List<FeedingFatScreenVo> feedingFatScreenVos = fatMapper.feedingScreen(queryWrapper);
+        return feedingFatScreenVos;
+    }
+
 
 }

+ 20 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingfat/vo/FeedingFatScreenVo.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.modular.feed.feedingfat.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FeedingFatScreenVo {
+
+    @ApiModelProperty(value = "采食值")
+    private String feed;
+
+    @ApiModelProperty(value = "饮水")
+    private String water;
+
+    @ApiModelProperty(value = "时间")
+    private Date createDate;
+
+}

+ 8 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedinglist/entity/FeedingList.java

@@ -63,4 +63,12 @@ public class FeedingList {
     /** 组织id */
     @ApiModelProperty(value = "组织id", position = 8)
     private String orgId;
+
+    /** 组织id */
+    @ApiModelProperty(value = "料塔类型 0为母猪 1为肥猪", position = 9)
+    private String type;
+
+    /** 组织id */
+    @ApiModelProperty(value = "猪只数量", position = 10)
+    private String pigNum;
 }