瀏覽代碼

生产阈值

Newspaper 1 年之前
父節點
當前提交
4ef3ad0203
共有 19 個文件被更改,包括 778 次插入0 次删除
  1. 53 0
      huimv-admin/src/main/java/com/huimv/admin/controller/ProdProductionThresholdController.java
  2. 56 0
      huimv-admin/src/main/java/com/huimv/admin/controller/ProdStockThresholdController.java
  3. 36 0
      huimv-admin/src/main/java/com/huimv/admin/controller/ProdWarningInfoController.java
  4. 131 0
      huimv-admin/src/main/java/com/huimv/admin/entity/ProdProductionThreshold.java
  5. 71 0
      huimv-admin/src/main/java/com/huimv/admin/entity/ProdStockThreshold.java
  6. 54 0
      huimv-admin/src/main/java/com/huimv/admin/entity/ProdWarningInfo.java
  7. 16 0
      huimv-admin/src/main/java/com/huimv/admin/mapper/ProdProductionThresholdMapper.java
  8. 16 0
      huimv-admin/src/main/java/com/huimv/admin/mapper/ProdStockThresholdMapper.java
  9. 16 0
      huimv-admin/src/main/java/com/huimv/admin/mapper/ProdWarningInfoMapper.java
  10. 16 0
      huimv-admin/src/main/java/com/huimv/admin/service/IProdProductionThresholdService.java
  11. 16 0
      huimv-admin/src/main/java/com/huimv/admin/service/IProdStockThresholdService.java
  12. 21 0
      huimv-admin/src/main/java/com/huimv/admin/service/IProdWarningInfoService.java
  13. 20 0
      huimv-admin/src/main/java/com/huimv/admin/service/impl/ProdProductionThresholdServiceImpl.java
  14. 20 0
      huimv-admin/src/main/java/com/huimv/admin/service/impl/ProdStockThresholdServiceImpl.java
  15. 36 0
      huimv-admin/src/main/java/com/huimv/admin/service/impl/ProdWarningInfoServiceImpl.java
  16. 170 0
      huimv-admin/src/main/java/com/huimv/admin/timer/ProdWarningTimer.java
  17. 10 0
      huimv-admin/src/main/resources/mapper/ProdProductionThresholdMapper.xml
  18. 10 0
      huimv-admin/src/main/resources/mapper/ProdStockThresholdMapper.xml
  19. 10 0
      huimv-admin/src/main/resources/mapper/ProdWarningInfoMapper.xml

+ 53 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/ProdProductionThresholdController.java

@@ -0,0 +1,53 @@
+package com.huimv.admin.controller;
+
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.common.utils.ResultCode;
+import com.huimv.admin.entity.ProdProductionThreshold;
+import com.huimv.admin.entity.ProdStockThreshold;
+import com.huimv.admin.service.IProdProductionThresholdService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 生产情况阈值 前端控制器
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+@RestController
+@RequestMapping("/prod-production-threshold")
+@CrossOrigin
+public class ProdProductionThresholdController {
+
+    @Autowired
+    private IProdProductionThresholdService prodProductionThresholdService;
+
+    @PostMapping("/getThreshold")
+    public Result getThreshold(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        ProdProductionThreshold threshold = prodProductionThresholdService.getOne(new QueryWrapper<ProdProductionThreshold>().lambda().eq(ProdProductionThreshold::getFarmId, farmId));
+        if (ObjectUtil.isEmpty(threshold)){
+            threshold = new ProdProductionThreshold();
+            threshold.setFarmId(Integer.valueOf(farmId));
+            prodProductionThresholdService.save(threshold);
+        }
+        return new Result(ResultCode.SUCCESS,threshold);
+    }
+
+    @PostMapping("/edit")
+    public Result getThreshold(HttpServletRequest httpServletRequest, @RequestBody ProdProductionThreshold prodProductionThreshold) {
+        ProdProductionThreshold threshold = prodProductionThresholdService.getById(prodProductionThreshold.getId());
+        BeanUtil.copyProperties(prodProductionThreshold,threshold);
+        prodProductionThresholdService.updateById(threshold);
+        return Result.SUCCESS();
+    }
+}

+ 56 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/ProdStockThresholdController.java

@@ -0,0 +1,56 @@
+package com.huimv.admin.controller;
+
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.common.utils.ResultCode;
+import com.huimv.admin.entity.ProdStockThreshold;
+import com.huimv.admin.service.IProdStockThresholdService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 存栏结构阈值 前端控制器
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+@RestController
+@RequestMapping("/prod-stock-threshold")
+@CrossOrigin
+public class ProdStockThresholdController {
+
+    @Autowired
+    private IProdStockThresholdService prodStockThresholdService;
+
+    @PostMapping("/getThreshold")
+    public Result getThreshold(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        ProdStockThreshold threshold = prodStockThresholdService.getOne(new QueryWrapper<ProdStockThreshold>().lambda().eq(ProdStockThreshold::getFarmId, farmId));
+        if (ObjectUtil.isEmpty(threshold)){
+            threshold = new ProdStockThreshold();
+            threshold.setFarmId(Integer.valueOf(farmId));
+            prodStockThresholdService.save(threshold);
+        }
+        return new Result(ResultCode.SUCCESS,threshold);
+    }
+
+    @PostMapping("/edit")
+    public Result getThreshold(HttpServletRequest httpServletRequest, @RequestBody ProdStockThreshold prodStockThreshold) {
+        ProdStockThreshold threshold = prodStockThresholdService.getById(prodStockThreshold.getId());
+        BeanUtil.copyProperties(prodStockThreshold,threshold);
+        prodStockThresholdService.updateById(threshold);
+        return Result.SUCCESS();
+    }
+
+
+
+
+}

+ 36 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/ProdWarningInfoController.java

@@ -0,0 +1,36 @@
+package com.huimv.admin.controller;
+
+
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.service.IProdWarningInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 生产管理预警 前端控制器
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+@RestController
+@RequestMapping("/prod-warning-info")
+@CrossOrigin
+public class ProdWarningInfoController {
+
+    @Autowired
+    private IProdWarningInfoService prodWarningInfoService;
+
+    @RequestMapping("/list")
+    public Result list(HttpServletRequest httpServletRequest, @RequestBody Map<String,String> paramsMap) {
+        return prodWarningInfoService.listWarning(httpServletRequest,paramsMap);
+    }
+}

+ 131 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/ProdProductionThreshold.java

@@ -0,0 +1,131 @@
+package com.huimv.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生产情况阈值
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("prod_production_threshold")
+public class ProdProductionThreshold implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 最少产房成活率
+     */
+    @TableField("min_CFCHL")
+    private String minCfchl;
+
+    /**
+     * 最少保育成活率
+     */
+    @TableField("min_BYCHL")
+    private String minBychl;
+
+    /**
+     * 最少育肥成活率
+     */
+    @TableField("min_YFCHL")
+    private String minYfchl;
+
+    /**
+     * 最少每日喂料量
+     */
+    @TableField("min_MRWLL")
+    private String minMrwll;
+
+    /**
+     * 最少日增重
+     */
+    @TableField("min_RZZ")
+    private String minRzz;
+
+    /**
+     * 最少肥猪成活率
+     */
+    @TableField("min_FZCHL")
+    private String minFzchl;
+
+    /**
+     * 最少7日断配率
+     */
+    @TableField("min_QRDPL")
+    private String minQrdpl;
+
+    /**
+     * 最少配种分娩率
+     */
+    @TableField("min_PZFML")
+    private String minPzfml;
+
+    /**
+     * 最少平均窝产仔数
+     */
+    @TableField("min_PJWCZS")
+    private String minPjwczs;
+
+    /**
+     * 最少平均窝产活仔数
+     */
+    @TableField("min_PJWCHZS")
+    private String minPjwchzs;
+
+    /**
+     * 最少平均窝产正常仔数
+     */
+    @TableField("min_PJWCZCZS")
+    private String minPjwczczs;
+
+    /**
+     * 最少窝断奶仔猪数
+     */
+    @TableField("min_WDNZZS")
+    private String minWdnzzs;
+
+    /**
+     * 最少平均窝断奶窝重
+     */
+    @TableField("min_PJWDNZ")
+    private String minPjwdnz;
+
+    /**
+     * 最少非生产天数
+     */
+    @TableField("min_FCCTS")
+    private String minFccts;
+
+    /**
+     * 最少年产窝数
+     */
+    @TableField("min_SCWS")
+    private String minScws;
+
+    /**
+     * 最少PSY
+     */
+    @TableField("min_PSY")
+    private String minPsy;
+
+    @TableField("farm_id")
+    private Integer farmId;
+
+
+}

+ 71 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/ProdStockThreshold.java

@@ -0,0 +1,71 @@
+package com.huimv.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 存栏结构阈值
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("prod_stock_threshold")
+public class ProdStockThreshold implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 最少母猪存栏
+     */
+    @TableField("min_MZCL")
+    private Integer minMzcl;
+
+    /**
+     * 最少公猪存栏
+     */
+    @TableField("min_GZCL")
+    private Integer minGzcl;
+
+    /**
+     * 最少哺乳猪存栏
+     */
+    @TableField("min_BRZCL")
+    private Integer minBrzcl;
+
+    /**
+     * 最少保育猪存栏
+     */
+    @TableField("min_BYZCL")
+    private Integer minByzcl;
+
+    /**
+     * 最少育肥猪存栏
+     */
+    @TableField("min_YFZCL")
+    private Integer minYfzcl;
+
+    /**
+     * 最少后备猪存栏
+     */
+    @TableField("min_HBZCL")
+    private Integer minHbzcl;
+
+    @TableField("farm_id")
+    private Integer farmId;
+
+
+}

+ 54 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/ProdWarningInfo.java

@@ -0,0 +1,54 @@
+package com.huimv.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 生产管理预警
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("prod_warning_info")
+public class ProdWarningInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 0:存栏情况 1:生产情况
+     */
+    @TableField("warning_type")
+    private Integer warningType;
+
+    /**
+     * 报警内容
+     */
+    @TableField("warning_content")
+    private String warningContent;
+
+    /**
+     * 日期
+     */
+    @TableField("date")
+    private LocalDateTime date;
+
+    @TableField("farm_id")
+    private Integer farmId;
+
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/mapper/ProdProductionThresholdMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.mapper;
+
+import com.huimv.admin.entity.ProdProductionThreshold;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 生产情况阈值 Mapper 接口
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+public interface ProdProductionThresholdMapper extends BaseMapper<ProdProductionThreshold> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/mapper/ProdStockThresholdMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.mapper;
+
+import com.huimv.admin.entity.ProdStockThreshold;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 存栏结构阈值 Mapper 接口
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+public interface ProdStockThresholdMapper extends BaseMapper<ProdStockThreshold> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/mapper/ProdWarningInfoMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.mapper;
+
+import com.huimv.admin.entity.ProdWarningInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 生产管理预警 Mapper 接口
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+public interface ProdWarningInfoMapper extends BaseMapper<ProdWarningInfo> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IProdProductionThresholdService.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.service;
+
+import com.huimv.admin.entity.ProdProductionThreshold;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 生产情况阈值 服务类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+public interface IProdProductionThresholdService extends IService<ProdProductionThreshold> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IProdStockThresholdService.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.service;
+
+import com.huimv.admin.entity.ProdStockThreshold;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 存栏结构阈值 服务类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+public interface IProdStockThresholdService extends IService<ProdStockThreshold> {
+
+}

+ 21 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IProdWarningInfoService.java

@@ -0,0 +1,21 @@
+package com.huimv.admin.service;
+
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.entity.ProdWarningInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 生产管理预警 服务类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+public interface IProdWarningInfoService extends IService<ProdWarningInfo> {
+
+    Result listWarning(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+}

+ 20 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/ProdProductionThresholdServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.admin.service.impl;
+
+import com.huimv.admin.entity.ProdProductionThreshold;
+import com.huimv.admin.mapper.ProdProductionThresholdMapper;
+import com.huimv.admin.service.IProdProductionThresholdService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 生产情况阈值 服务实现类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+@Service
+public class ProdProductionThresholdServiceImpl extends ServiceImpl<ProdProductionThresholdMapper, ProdProductionThreshold> implements IProdProductionThresholdService {
+
+}

+ 20 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/ProdStockThresholdServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.admin.service.impl;
+
+import com.huimv.admin.entity.ProdStockThreshold;
+import com.huimv.admin.mapper.ProdStockThresholdMapper;
+import com.huimv.admin.service.IProdStockThresholdService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 存栏结构阈值 服务实现类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+@Service
+public class ProdStockThresholdServiceImpl extends ServiceImpl<ProdStockThresholdMapper, ProdStockThreshold> implements IProdStockThresholdService {
+
+}

+ 36 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/ProdWarningInfoServiceImpl.java

@@ -0,0 +1,36 @@
+package com.huimv.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.common.utils.ResultCode;
+import com.huimv.admin.entity.ProdWarningInfo;
+import com.huimv.admin.mapper.ProdWarningInfoMapper;
+import com.huimv.admin.service.IProdWarningInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 生产管理预警 服务实现类
+ * </p>
+ *
+ * @author newspaper
+ * @since 2024-01-11
+ */
+@Service
+public class ProdWarningInfoServiceImpl extends ServiceImpl<ProdWarningInfoMapper, ProdWarningInfo> implements IProdWarningInfoService {
+
+    @Override
+    public Result listWarning(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String pageNo = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        String  farmId =  paramsMap.get("farmId");
+        Page<ProdWarningInfo> page = new Page<>(Integer.parseInt(pageNo),Integer.parseInt(pageSize));
+        Page<ProdWarningInfo> prodWarningInfoPage = this.page(page, new QueryWrapper<ProdWarningInfo>().lambda().eq(ProdWarningInfo::getFarmId, farmId).orderByDesc(ProdWarningInfo::getDate));
+        return new Result(ResultCode.SUCCESS,prodWarningInfoPage);
+    }
+}

+ 170 - 0
huimv-admin/src/main/java/com/huimv/admin/timer/ProdWarningTimer.java

@@ -0,0 +1,170 @@
+package com.huimv.admin.timer;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.admin.entity.*;
+import com.huimv.admin.mapper.*;
+import com.huimv.admin.service.IDisplayTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Configuration
+@EnableScheduling
+public class ProdWarningTimer {
+    @Autowired
+    private BaseFarmMapper baseFarmMapper;
+    @Autowired
+    private ProdWarningInfoMapper prodWarningInfoMapper;
+    @Autowired
+    private ProdProductionMapper prodProductionMapper;
+    @Autowired
+    private ProdProductionThresholdMapper prodProductionThresholdMapper;
+    @Autowired
+    private ProdStockMapper prodStockMapper;
+    @Autowired
+    private ProdStockThresholdMapper prodStockThresholdMapper;
+    @Autowired
+    private IDisplayTypeService displayTypeService;
+
+    @Scheduled(cron = "0 0 0 * * ?")
+    private void action(){
+        Integer type1 = 0;
+        List<BaseFarm> baseFarms = baseFarmMapper.selectList(new QueryWrapper<BaseFarm>().lambda().ne(BaseFarm::getId, 25));
+        for (BaseFarm baseFarm : baseFarms) {
+            Integer farmId = baseFarm.getId();
+            DisplayType displayType1 = displayTypeService.getOne(new QueryWrapper<DisplayType>().lambda().eq(DisplayType::getFarmId, farmId).eq(DisplayType::getEventType, 3));
+            if (ObjectUtil.isNotEmpty(displayType1)){
+                type1 = displayType1.getDisplayType();
+            }
+            ProdStock prodStock = prodStockMapper.selectOne(new QueryWrapper<ProdStock>().lambda()
+                    .eq(ProdStock::getDisplayType, type1)
+                    .eq(ProdStock::getFarmId, farmId)
+                    .orderByDesc(ProdStock::getCreatTime).last("LIMIT 1"));
+            if (ObjectUtil.isNotEmpty(prodStock)){
+                ProdStockThreshold threshold = prodStockThresholdMapper.selectOne(new QueryWrapper<ProdStockThreshold>().lambda().eq(ProdStockThreshold::getFarmId, farmId));
+                if (ObjectUtil.isNotEmpty(threshold)){
+                    Integer minBrzcl = threshold.getMinBrzcl();
+                    Integer minByzcl = threshold.getMinByzcl();
+                    Integer minGzcl = threshold.getMinGzcl();
+                    Integer minHbzcl = threshold.getMinHbzcl();
+                    Integer minMzcl = threshold.getMinMzcl();
+                    Integer minYfzcl = threshold.getMinYfzcl();
+                    if (ObjectUtil.isNotEmpty(minBrzcl)){
+                        if (ObjectUtil.isNotEmpty(prodStock.getBrzcl())){
+                            if (prodStock.getBrzcl().compareTo(minBrzcl) < 0){
+                                ProdWarningInfo prodWarningInfo = new ProdWarningInfo();
+                                prodWarningInfo.setDate(LocalDateTime.now());
+                                prodWarningInfo.setFarmId(farmId);
+                                prodWarningInfo.setWarningContent("哺乳猪存栏小于阈值!");
+                                prodWarningInfo.setWarningType(0);
+                                prodWarningInfoMapper.insert(prodWarningInfo);
+                            }
+                        }
+                    }
+                    if (ObjectUtil.isNotEmpty(minByzcl)){
+                        if (ObjectUtil.isNotEmpty(prodStock.getByzcl())){
+                            if (prodStock.getByzcl().compareTo(minByzcl) < 0){
+                                ProdWarningInfo prodWarningInfo = new ProdWarningInfo();
+                                prodWarningInfo.setDate(LocalDateTime.now());
+                                prodWarningInfo.setFarmId(farmId);
+                                prodWarningInfo.setWarningContent("保育猪存栏小于阈值!");
+                                prodWarningInfo.setWarningType(0);
+                                prodWarningInfoMapper.insert(prodWarningInfo);
+                            }
+                        }
+                    }
+                    if (ObjectUtil.isNotEmpty(minGzcl)){
+                        if (ObjectUtil.isNotEmpty(prodStock.getGzcl())){
+                            if (prodStock.getGzcl().compareTo(minGzcl) < 0){
+                                ProdWarningInfo prodWarningInfo = new ProdWarningInfo();
+                                prodWarningInfo.setDate(LocalDateTime.now());
+                                prodWarningInfo.setFarmId(farmId);
+                                prodWarningInfo.setWarningContent("公猪存栏小于阈值!");
+                                prodWarningInfo.setWarningType(0);
+                                prodWarningInfoMapper.insert(prodWarningInfo);
+                            }
+                        }
+                    }
+                    if (ObjectUtil.isNotEmpty(minHbzcl)){
+                        if (ObjectUtil.isNotEmpty(prodStock.getHbzcl())){
+                            if (prodStock.getHbzcl().compareTo(minHbzcl) < 0){
+                                ProdWarningInfo prodWarningInfo = new ProdWarningInfo();
+                                prodWarningInfo.setDate(LocalDateTime.now());
+                                prodWarningInfo.setFarmId(farmId);
+                                prodWarningInfo.setWarningContent("后备猪存栏小于阈值!");
+                                prodWarningInfo.setWarningType(0);
+                                prodWarningInfoMapper.insert(prodWarningInfo);
+                            }
+                        }
+                    }
+                    if (ObjectUtil.isNotEmpty(minMzcl)){
+                        if (ObjectUtil.isNotEmpty(prodStock.getMzcl())){
+                            if (prodStock.getMzcl().compareTo(minMzcl) < 0){
+                                ProdWarningInfo prodWarningInfo = new ProdWarningInfo();
+                                prodWarningInfo.setDate(LocalDateTime.now());
+                                prodWarningInfo.setFarmId(farmId);
+                                prodWarningInfo.setWarningContent("母猪存栏小于阈值!");
+                                prodWarningInfo.setWarningType(0);
+                                prodWarningInfoMapper.insert(prodWarningInfo);
+                            }
+                        }
+                    }
+                    if (ObjectUtil.isNotEmpty(minYfzcl)){
+                        if (ObjectUtil.isNotEmpty(prodStock.getYfzcl())){
+                            if (prodStock.getYfzcl().compareTo(minYfzcl) < 0){
+                                ProdWarningInfo prodWarningInfo = new ProdWarningInfo();
+                                prodWarningInfo.setDate(LocalDateTime.now());
+                                prodWarningInfo.setFarmId(farmId);
+                                prodWarningInfo.setWarningContent("育肥猪存栏小于阈值!");
+                                prodWarningInfo.setWarningType(0);
+                                prodWarningInfoMapper.insert(prodWarningInfo);
+                            }
+                        }
+                    }
+                }
+            }
+            ProdProduction prodProduction = prodProductionMapper.selectOne(new QueryWrapper<ProdProduction>().lambda()
+                    .eq(ProdProduction::getFarmId, farmId));
+            if (ObjectUtil.isNotEmpty(prodProduction)){
+                ProdProductionThreshold prodProductionThreshold = prodProductionThresholdMapper.selectOne(new QueryWrapper<ProdProductionThreshold>().lambda().eq(ProdProductionThreshold::getFarmId,farmId));
+                if (ObjectUtil.isNotEmpty(prodProductionThreshold)){
+                    checkAndWarn(prodProductionThreshold.getMinBychl(), prodProduction.getBychl(),farmId, 1, "保育成活率小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinCfchl(), prodProduction.getCfchl(),farmId, 1, "产房成活率小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinFccts(), prodProduction.getFccts(),farmId, 1, "非生产天数小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinFzchl(), prodProduction.getFzchl(),farmId, 1, "肥猪成活率小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinMrwll(), prodProduction.getMrwll(),farmId, 1, "每日喂料量小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinPjwchzs(), prodProduction.getPjwchzs(),farmId, 1, "平均窝产活仔数小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinPjwczczs(), prodProduction.getPjwczczs(),farmId, 1, "平均窝产正常仔数小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinPjwdnz(), prodProduction.getPjwdnz(),farmId, 1, "平均窝断奶窝重小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinPsy(), prodProduction.getPsy(),farmId, 1, "PSY小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinPzfml(), prodProduction.getPzfml(),farmId, 1, "配种分娩率小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinQrdpl(), prodProduction.getQrdpl(),farmId, 1, "7日断配率小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinRzz(), prodProduction.getRzz(),farmId, 1, "日增重小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinScws(), prodProduction.getScws(),farmId, 1, "年产窝数小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinWdnzzs(), prodProduction.getWdnzzs(),farmId, 1, "窝断奶仔猪数小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinYfchl(), prodProduction.getYfchl(),farmId, 1, "育肥成活率小于阈值!");
+                    checkAndWarn(prodProductionThreshold.getMinPjwczs(), prodProduction.getPjwczs(),farmId, 1, "平均窝产仔数小于阈值!");
+                }
+            }
+        }
+    }
+
+    private void checkAndWarn(String threshold, String actualValue,Integer farmId, int warningType, String warningContent) {
+        if (ObjectUtil.isNotEmpty(threshold) && ObjectUtil.isNotEmpty(actualValue)) {
+            if (Double.valueOf(actualValue).compareTo(Double.valueOf(threshold)) < 0) {
+                ProdWarningInfo prodWarningInfo = new ProdWarningInfo();
+                prodWarningInfo.setDate(LocalDateTime.now());
+                prodWarningInfo.setFarmId(farmId);
+                prodWarningInfo.setWarningContent(warningContent);
+                prodWarningInfo.setWarningType(warningType);
+                prodWarningInfoMapper.insert(prodWarningInfo);
+            }
+        }
+    }
+
+}

+ 10 - 0
huimv-admin/src/main/resources/mapper/ProdProductionThresholdMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.admin.mapper.ProdProductionThresholdMapper">
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, min_CFCHL, min_BYCHL, min_YFCHL, min_MRWLL, min_RZZ, min_FZCHL, min_QRDPL, min_PZFML, min_PJWCZS, min_PJWCHZS, min_PJWCZCZS, min_WDNZZS, min_PJWDNZ, min_FCCTS, min_SCWS, min_PSY, farm_id
+    </sql>
+
+</mapper>

+ 10 - 0
huimv-admin/src/main/resources/mapper/ProdStockThresholdMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.admin.mapper.ProdStockThresholdMapper">
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, min_MZCL, min_GZCL, min_BRZCL, min_BYZCL, min_YFZCL, min_HBZCL, farm_id
+    </sql>
+
+</mapper>

+ 10 - 0
huimv-admin/src/main/resources/mapper/ProdWarningInfoMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.admin.mapper.ProdWarningInfoMapper">
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, warning_type, warning_content, date, farm_id
+    </sql>
+
+</mapper>