Forráskód Böngészése

档案管理(打印暂未修改)

wwh 1 éve
szülő
commit
c4096a7054
33 módosított fájl, 1461 hozzáadás és 21 törlés
  1. 35 0
      huimv-admin/pom.xml
  2. 93 3
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/BaseDuckInfoController.java
  3. 38 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/DuckHealthInfoController.java
  4. 37 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/DuckImmunityInfoController.java
  5. 18 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvMoveCallController.java
  6. 32 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvRegularCallEggController.java
  7. 17 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvRegularCallFeedingController.java
  8. 5 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/entity/BaseDuckInfo.java
  9. 2 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/mapper/EnvRegularCallEggMapper.java
  10. 2 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/mapper/EnvRegularCallFeedingMapper.java
  11. 51 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/back/PushCallback.java
  12. 79 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/pulish/PublishMQTT.java
  13. 72 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/pulish/PublishMQTTCommand.java
  14. 102 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/subscribe/ConsumerMQTT.java
  15. 62 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/subscribe/ConsumerMQTTCommand.java
  16. 30 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/subscribe/ConsumerMQTTStart.java
  17. 11 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/IBaseDuckInfoService.java
  18. 9 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/IDuckHealthInfoService.java
  19. 7 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/IDuckImmunityInfoService.java
  20. 5 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnvMoveCallService.java
  21. 13 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnvRegularCallEggService.java
  22. 7 2
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnvRegularCallFeedingService.java
  23. 103 2
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/BaseDuckInfoServiceImpl.java
  24. 66 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/DuckHealthInfoServiceImpl.java
  25. 62 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/DuckImmunityInfoServiceImpl.java
  26. 59 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnvMoveCallServiceImpl.java
  27. 91 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnvRegularCallEggServiceImpl.java
  28. 63 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnvRegularCallFeedingServiceImpl.java
  29. 70 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/utils/Print.java
  30. 36 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/utils/SpringUtil.java
  31. 182 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/utils/UploadImage.java
  32. 1 1
      huimv-admin/src/main/resources/com/huimv/guowei/admin/mapper/EnvRegularCallEggMapper.xml
  33. 1 2
      huimv-admin/src/main/resources/com/huimv/guowei/admin/mapper/EnvRegularCallFeedingMapper.xml

+ 35 - 0
huimv-admin/pom.xml

@@ -88,12 +88,47 @@
             <artifactId>mybatis-plus-generator</artifactId>
             <version>3.2.0</version>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.paho</groupId>
+            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
+            <version>1.2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-mqtt</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-stream</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-integration</artifactId>
+        </dependency>
+
         <!--sftp文件上传-->
         <dependency>
             <groupId>com.jcraft</groupId>
             <artifactId>jsch</artifactId>
             <version>0.1.54</version>
         </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jxls</groupId>
+            <artifactId>jxls</artifactId>
+            <version>2.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jxls</groupId>
+            <artifactId>jxls-poi</artifactId>
+            <version>1.1.0</version>
+        </dependency>
+
+
     </dependencies>
 
     <build>

+ 93 - 3
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/BaseDuckInfoController.java

@@ -1,13 +1,25 @@
 package com.huimv.guowei.admin.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.entity.BaseDuckInfo;
+import com.huimv.guowei.admin.service.IBaseDuckInfoService;
+import com.huimv.guowei.admin.utils.UploadImage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import org.springframework.web.bind.annotation.RestController;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * <p>
- *  前端控制器
+ * 前端控制器
  * </p>
  *
  * @author author
@@ -15,6 +27,84 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/base-duck-info")
+@CrossOrigin
 public class BaseDuckInfoController {
 
+    @Autowired
+    private IBaseDuckInfoService duckInfoService;
+    @Autowired
+    private UploadImage uploadImage;
+
+    @RequestMapping("/listDuck")
+    public Result listDuck(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return new Result(ResultCode.SUCCESS, duckInfoService.listDuck(httpServletRequest, paramsMap));
+    }
+
+    @RequestMapping("/deleteDuck")
+    public Result deleteDuck(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        QueryWrapper<BaseDuckInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("id", id);
+        BaseDuckInfo one = duckInfoService.getOne(queryWrapper);
+        if (one.getIsCage() == 1) {
+            duckInfoService.removeById(paramsMap.get("id"));
+            return new Result(10000, "删除成功!", true);
+        } else {
+            return new Result(10001, "鸭子未出笼,不可删除!", false);
+        }
+
+    }
+
+    @PostMapping("/addDuck")
+    public void addDuck(HttpServletRequest httpServletRequest, @RequestParam(name = "imgUrl") MultipartFile imgUrl,
+                        @RequestParam(name = "id") String id,
+                        @RequestParam(name = "duckBreed") String duckBreed,
+                        @RequestParam(name = "duckSex") String duckSex,
+                        @RequestParam(name = "duckBirthPlace") String duckBirthPlace,
+                        @RequestParam(name = "duckBirthDay") String  duckBirthDay,
+                        @RequestParam(name = "genotype") String genotype,
+                        @RequestParam(name = "nowWeight") String nowWeight,
+                        @RequestParam(name = "unitId") String unitId,
+                        @RequestParam(name = "breedEnv") String breedEnv,
+                        @RequestParam(name = "hatchRate",required = false) String hatchRate,
+                        @RequestParam(name = "fatherNum") String fatherNum,
+                        @RequestParam(name = "motherNum") String motherNum,
+                        @RequestParam(name = "fatherGenotype") String fatherGenotype,
+                        @RequestParam(name = "motherGenotype") String motherGenotype,
+                        @RequestParam(name = "specialNeeds") String specialNeeds) throws Exception {
+        httpServletRequest.setCharacterEncoding("UTF-8");
+        String content = uploadImage.getImageCom(imgUrl);
+        Map<String, String> map = new HashMap<>();
+        map.put("id", id);
+        map.put("duckBreed", duckBreed);
+        map.put("duckSex", duckSex);
+        map.put("duckBirthPlace", duckBirthPlace);
+        map.put("duckBirthDay", duckBirthDay);
+        map.put("genotype", genotype);
+        map.put("nowWeight", nowWeight);
+        map.put("unitId", unitId);
+        map.put("breedEnv", breedEnv);
+        map.put("hatchRate", hatchRate);
+        map.put("fatherNum", fatherNum);
+        map.put("motherNum", motherNum);
+        map.put("fatherGenotype", fatherGenotype);
+        map.put("motherGenotype", motherGenotype);
+        map.put("specialNeeds", specialNeeds);
+        map.put("imgUrl", content);
+        duckInfoService.addDuck(httpServletRequest, map);
+    }
+
+    @RequestMapping("/editDuck")
+    public Result editDuck(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return new Result(ResultCode.SUCCESS, duckInfoService.editDuck(httpServletRequest, paramsMap));
+    }
+    @RequestMapping("/listDuckById")
+    public Result listDuckById(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return new Result(ResultCode.SUCCESS, duckInfoService.listDuckById(httpServletRequest, paramsMap));
+    }
+
+    @GetMapping("/printDuck")
+    public void printDuck(HttpServletRequest httpServletRequest, @RequestParam(name = "duckCode") String duckCode) {
+
+    }
 }

+ 38 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/DuckHealthInfoController.java

@@ -1,13 +1,23 @@
 package com.huimv.guowei.admin.controller;
 
 
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.entity.DuckHealthInfo;
+import com.huimv.guowei.admin.service.IDuckHealthInfoService;
+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.text.ParseException;
+import java.util.Map;
+
 /**
  * <p>
- *  前端控制器
+ * 前端控制器
  * </p>
  *
  * @author author
@@ -15,6 +25,33 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/duck-health-info")
+@CrossOrigin
 public class DuckHealthInfoController {
 
+    @Autowired
+    private IDuckHealthInfoService healthInfoService;
+
+    @RequestMapping("/listById")
+    public Result listById(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return healthInfoService.listById(httpServletRequest, paramsMap);
+    }
+
+    @RequestMapping("/addDuck")
+    public Result addDuck(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) throws ParseException {
+        return healthInfoService.addHealth(httpServletRequest, paramsMap);
+    }
+
+    @RequestMapping("/editDuck")
+    public Result editDuck(HttpServletRequest httpServletRequest, @RequestBody DuckHealthInfo healthInfo) {
+        healthInfoService.updateById(healthInfo);
+        return new Result(10000,"修改成功!",true);
+    }
+
+    @RequestMapping("/deleteDuck")
+    public Result deleteDuck(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        healthInfoService.removeById(id);
+        return new Result(10000, "删除成功!", true);
+    }
+
 }

+ 37 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/DuckImmunityInfoController.java

@@ -1,13 +1,23 @@
 package com.huimv.guowei.admin.controller;
 
 
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.entity.DuckImmunityInfo;
+import com.huimv.guowei.admin.service.IDuckImmunityInfoService;
+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.text.ParseException;
+import java.util.Map;
+
 /**
  * <p>
- *  前端控制器
+ * 前端控制器
  * </p>
  *
  * @author author
@@ -15,6 +25,32 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/duck-immunity-info")
+@CrossOrigin
 public class DuckImmunityInfoController {
 
+    @Autowired
+    private IDuckImmunityInfoService infoService;
+
+    @RequestMapping("/listById")
+    public Result listById(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return infoService.listById(httpServletRequest, paramsMap);
+    }
+
+    @RequestMapping("/addDuck")
+    public Result addDuck(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) throws ParseException {
+        return infoService.addImmunity(httpServletRequest, paramsMap);
+    }
+
+    @RequestMapping("/editDuck")
+    public Result editDuck(HttpServletRequest httpServletRequest, @RequestBody DuckImmunityInfo immunityInfo) {
+        infoService.updateById(immunityInfo);
+        return new Result(10000, "修改成功!", true);
+    }
+
+    @RequestMapping("/deleteDuck")
+    public Result deleteDuck(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        infoService.removeById(id);
+        return new Result(10000,"删除成功!",true);
+    }
 }

+ 18 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvMoveCallController.java

@@ -1,13 +1,22 @@
 package com.huimv.guowei.admin.controller;
 
 
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.service.IEnvMoveCallService;
+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 author
@@ -15,6 +24,14 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/env-move-call")
+@CrossOrigin
 public class EnvMoveCallController {
 
+    @Autowired
+    private IEnvMoveCallService moveCallService;
+
+    @RequestMapping("/listById")
+    public Result listById(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return new Result(ResultCode.SUCCESS,moveCallService.listById(httpServletRequest, paramsMap));
+    }
 }

+ 32 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvRegularCallEggController.java

@@ -1,10 +1,21 @@
 package com.huimv.guowei.admin.controller;
 
 
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.entity.EnvRegularCallEgg;
+import com.huimv.guowei.admin.service.IEnvRegularCallEggService;
+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.text.ParseException;
+import java.util.Map;
+
 /**
  * <p>
  * 固定电子秤 前端控制器
@@ -15,6 +26,27 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/env-regular-call-egg")
+@CrossOrigin
 public class EnvRegularCallEggController {
 
+    @Autowired
+    private IEnvRegularCallEggService eggService;
+
+    @RequestMapping("/listById")
+    public Result listById(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return new Result(ResultCode.SUCCESS, eggService.listById(httpServletRequest, paramsMap));
+    }
+
+    @RequestMapping("/addEgg")
+    public Result addEgg(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) throws ParseException {
+        return eggService.addEgg(httpServletRequest, paramsMap);
+    }
+    @RequestMapping("/editEgg")
+    public Result editEgg(HttpServletRequest httpServletRequest, @RequestBody EnvRegularCallEgg egg) throws ParseException {
+        return eggService.updateEgg(httpServletRequest, egg);
+    }
+    @RequestMapping("/deleteEgg")
+    public Result deleteEgg(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) throws ParseException {
+        return eggService.deleteEgg(httpServletRequest, paramsMap);
+    }
 }

+ 17 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvRegularCallFeedingController.java

@@ -1,10 +1,19 @@
 package com.huimv.guowei.admin.controller;
 
 
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.service.IEnvRegularCallFeedingService;
+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>
  * 固定电子秤 前端控制器
@@ -15,6 +24,14 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/env-regular-call-feeding")
+@CrossOrigin
 public class EnvRegularCallFeedingController {
 
+    @Autowired
+    private IEnvRegularCallFeedingService feedingService;
+
+    @RequestMapping("/listById")
+    public Result listById(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return new Result(ResultCode.SUCCESS,feedingService.listById(httpServletRequest, paramsMap));
+    }
 }

+ 5 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/BaseDuckInfo.java

@@ -4,8 +4,11 @@ import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import  java.util.Date;
+import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -49,6 +52,7 @@ public class BaseDuckInfo implements Serializable {
     /**
      * 出生日期
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date duckBirthday;
 
     /**

+ 2 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/mapper/EnvRegularCallEggMapper.java

@@ -1,5 +1,6 @@
 package com.huimv.guowei.admin.mapper;
 
+import com.huimv.guowei.admin.entity.EnvRegularCallEgg;
 import com.huimv.guowei.admin.entity.EnvRegularCallFeeding;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -11,6 +12,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author author
  * @since 2023-06-01
  */
-public interface EnvRegularCallEggMapper extends BaseMapper<EnvRegularCallFeeding> {
+public interface EnvRegularCallEggMapper extends BaseMapper<EnvRegularCallEgg> {
 
 }

+ 2 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/mapper/EnvRegularCallFeedingMapper.java

@@ -2,6 +2,7 @@ package com.huimv.guowei.admin.mapper;
 
 import com.huimv.guowei.admin.entity.EnvRegularCallEgg;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.guowei.admin.entity.EnvRegularCallFeeding;
 
 /**
  * <p>
@@ -11,6 +12,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author author
  * @since 2023-06-01
  */
-public interface EnvRegularCallFeedingMapper extends BaseMapper<EnvRegularCallEgg> {
+public interface EnvRegularCallFeedingMapper extends BaseMapper<EnvRegularCallFeeding> {
 
 }

+ 51 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/back/PushCallback.java

@@ -0,0 +1,51 @@
+package com.huimv.guowei.admin.mqtt.back;
+
+import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
+import org.eclipse.paho.client.mqttv3.MqttCallback;
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public
+//接收消息回调
+class PushCallback implements MqttCallback {
+
+
+    @Override
+    public void connectionLost(Throwable cause) {
+
+        // 连接丢失后,一般在这里面进行重连
+        System.out.println("连接断开,可以做重连");
+    }
+
+    @Override
+    public void deliveryComplete(IMqttDeliveryToken token) {
+        System.out.println("deliveryComplete---------" + token.isComplete());
+    }
+
+    @Override
+    public void messageArrived(String topic, MqttMessage message) throws Exception {
+        // subscribe后得到的消息会执行到这里面
+        System.out.println("接收消息主题 : " + topic);
+        System.out.println("接收消息Qos : " + message.getQos());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = new Date();
+        System.out.println("接收消息的时间:" + sdf.format(date));
+        byte[] payload = message.getPayload();
+        StringBuilder sb = new StringBuilder();
+        for (byte b : payload) {
+            sb.append(String.format("%02x", b));
+        }
+        String s = sb.toString();
+        System.out.println("接收消息内容 : " + s);
+        System.out.println("开始处理当前数据...");
+        System.out.println("数据处理完成!");
+    }
+
+}
+

+ 79 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/pulish/PublishMQTT.java

@@ -0,0 +1,79 @@
+package com.huimv.guowei.admin.mqtt.pulish;
+
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.Statement;
+
+@Configuration
+@Component
+public class PublishMQTT {
+//接收数据时如果需要响应时调用
+
+    public static final String HOST = "tcp://192.168.1.68:1883";
+    private static final String clientid = "FabuCeShi";
+    private MqttClient client;
+    private MqttConnectOptions options;
+    private String userName = "admin";    //非必须
+    private String passWord = "admin";  //非必须
+
+    public void start() {
+        try {
+            // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
+            client = new MqttClient(HOST, clientid, new MemoryPersistence());
+            // MQTT的连接设置
+            options = new MqttConnectOptions();
+            // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
+            options.setCleanSession(true);
+            // 设置连接的用户名
+            options.setUserName(userName);
+            // 设置连接的密码
+            options.setPassword(passWord.toCharArray());
+            // 设置超时时间 单位为秒
+            options.setConnectionTimeout(10);
+            // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
+            options.setKeepAliveInterval(20);
+            //设置断开后重新连接
+            options.setAutomaticReconnect(true);
+            // 设置回调
+
+            client.connect(options);
+
+            pubMessage("","");
+            System.out.println("发送完成!");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 消息发送
+     * @param message
+     * @param topic
+     */
+    public  void pubMessage(String message,String topic){
+        MqttMessage mess = new MqttMessage();
+        mess.setQos(1);
+        mess.setRetained(true);
+        mess.setPayload(message.getBytes());
+        try {
+            client.publish(topic, mess);
+        } catch (Exception e) {
+            //LOGGER.error(e.getLocalizedMessage());
+        }
+    }
+
+
+    public static void main(String[] args) {
+        PublishMQTT client1 = new PublishMQTT();
+        client1.start();
+//        client1.Connect();
+    }
+}

+ 72 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/pulish/PublishMQTTCommand.java

@@ -0,0 +1,72 @@
+package com.huimv.guowei.admin.mqtt.pulish;
+
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+import java.sql.*;
+
+@Configuration
+@Component
+public class PublishMQTTCommand {
+
+//    public static final String HOST = "tcp://115.238.57.190:1883";
+//    private static final String clientid = "publish";
+//    private MqttClient client;
+//    private MqttConnectOptions options;
+//
+//    private String userName = "admin";    //非必须
+//    private String passWord = "admin";  //非必须
+
+    public Boolean start(String HOST,String clientid,String userName,String passWord,String topic,String message) {
+        MqttClient client;
+        MqttConnectOptions options;
+
+        try {
+            // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
+            client = new MqttClient(HOST, clientid, new MemoryPersistence());
+            // MQTT的连接设置
+            options = new MqttConnectOptions();
+            // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
+            options.setCleanSession(true);
+            // 设置连接的用户名
+            options.setUserName(userName);
+            // 设置连接的密码
+            options.setPassword(passWord.toCharArray());
+            // 设置超时时间 单位为秒
+            options.setConnectionTimeout(10);
+            // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
+            options.setKeepAliveInterval(20);
+            //设置断开后重新连接
+            options.setAutomaticReconnect(true);
+
+            client.connect(options);
+
+//            pubMessage(client,"list",topic);
+            MqttMessage mess = new MqttMessage();
+            mess.setQos(1);
+            mess.setRetained(true);
+            mess.setPayload(message.getBytes());
+            return topublish(client,topic,mess);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    private Boolean topublish(MqttClient client, String topic, MqttMessage mess) {
+        try {
+            client.publish(topic, mess);
+            return true;
+        } catch (Exception e) {
+//                LOGGER.error(e.getLocalizedMessage());
+            System.out.println("发起指令出现错误!!"+e);
+            return false;
+        }
+    }
+
+}

+ 102 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/subscribe/ConsumerMQTT.java

@@ -0,0 +1,102 @@
+package com.huimv.guowei.admin.mqtt.subscribe;
+
+
+import com.huimv.guowei.admin.mqtt.back.PushCallback;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ConsumerMQTT extends Thread {
+    public static final String HOST = "tcp://115.238.57.190:1883";
+    private String clientid ;
+    private static MqttClient client;
+    private static MqttConnectOptions options;
+
+    private static String userName = "admin";    //非必须
+    private static String passWord = "admin";  //非必须
+    private List<String> topics ;
+
+
+//    @SneakyThrows
+    @Override
+    public  void  run() {
+        try {
+            // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
+            client = new MqttClient(HOST, "subscribe", new MemoryPersistence());
+            // MQTT的连接设置
+            options = new MqttConnectOptions();
+            // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
+            options.setCleanSession(true);
+            // 设置连接的用户名
+            options.setUserName(userName);
+            // 设置连接的密码
+            options.setPassword(passWord.toCharArray());
+            // 设置超时时间 单位为秒
+            options.setConnectionTimeout(60);
+            // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
+            options.setKeepAliveInterval(30);
+
+            //设置断开后重新连接
+            options.setAutomaticReconnect(false);
+
+            // 设置回调
+            client.setCallback(new PushCallback());
+
+            client.connect(options);
+
+            //订阅消息
+//            int[] Qos = {1};//0:最多一次 、1:最少一次 、2:只有一次
+            for (String topic : topics) {
+                System.out.println("走到了这里开始订阅!");
+                client.subscribe("huimv_up_"+topic, 1);
+            }
+//            client.subscribe(topic,1);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    public static void test(List<String> topics) {
+        try {
+            // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
+            client = new MqttClient(HOST, "subscribe", new MemoryPersistence());
+            // MQTT的连接设置
+            options = new MqttConnectOptions();
+            // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
+            options.setCleanSession(true);
+            // 设置连接的用户名
+            options.setUserName(userName);
+            // 设置连接的密码
+            options.setPassword(passWord.toCharArray());
+            // 设置超时时间 单位为秒
+            options.setConnectionTimeout(60);
+            // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
+            options.setKeepAliveInterval(30);
+
+            //设置断开后重新连接
+            options.setAutomaticReconnect(true);
+
+            // 设置回调
+            client.setCallback(new PushCallback());
+
+            client.connect(options);
+
+            //订阅消息
+//            int[] Qos = {1};//0:最多一次 、1:最少一次 、2:只有一次
+            for (String topic : topics) {
+                System.out.println("重新走到了这里开始订阅!");
+                client.subscribe("huimv_up_"+topic, 1);
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 62 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/subscribe/ConsumerMQTTCommand.java

@@ -0,0 +1,62 @@
+package com.huimv.guowei.admin.mqtt.subscribe;
+import com.huimv.guowei.admin.mqtt.back.PushCallback;
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+import org.eclipse.paho.client.mqttv3.MqttException;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class ConsumerMQTTCommand {
+
+    MqttConnectOptions options;
+    MqttClient client;
+    public void start(String HOST,String clientid,String userName,String passWord,String topic) {
+        try {
+            // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
+            client = new MqttClient(HOST, clientid, new MemoryPersistence());
+            // MQTT的连接设置
+            options = new MqttConnectOptions();
+            // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
+            options.setCleanSession(true);
+            // 设置连接的用户名
+            options.setUserName(userName);
+            // 设置连接的密码
+            options.setPassword(passWord.toCharArray());
+            // 设置超时时间 单位为秒
+            options.setConnectionTimeout(10);
+            // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
+            options.setKeepAliveInterval(20);
+            //设置为0,防止ERROR
+            options.setExecutorServiceTimeout(0);
+            //设置断开后重新连接
+            options.setAutomaticReconnect(false);
+            // 设置回调
+            client.setCallback(new PushCallback());
+
+            client.connect(options);
+
+            //订阅消息
+//            int[] Qos = {1};//0:最多一次 、1:最少一次 、2:只有一次
+            client.subscribe(topic,1);
+
+            client.disconnect();
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void disConnect(String topic) {
+        try {
+            client.unsubscribe(topic);
+        } catch (MqttException e) {
+            e.printStackTrace();
+        }
+    }
+
+//    public static void main(String[] args) {
+//        ConsumerMQTT consumerMQTT = new ConsumerMQTT();
+//        consumerMQTT.start();
+//    }
+}

+ 30 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/subscribe/ConsumerMQTTStart.java

@@ -0,0 +1,30 @@
+package com.huimv.guowei.admin.mqtt.subscribe;
+
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+public class ConsumerMQTTStart {
+
+//    @Autowired
+//    private IEnvDeviceRegisterService deviceRegisterService;
+
+    @PostConstruct
+    public  void  test() {
+//        List<EnvDeviceRegister> list = deviceRegisterService.list();
+//        System.out.println("设备的数量:"+list.size());
+//
+//        List<String> chipIds = new ArrayList<>();
+//        for (EnvDeviceRegister deviceRegister : list) {
+//            String chipId = deviceRegister.getChipId();
+//            chipIds.add(chipId);
+//        }
+//        UploadMqtt uploadmqtt = new UploadMqtt();
+//        uploadmqtt.setTopics(chipIds);
+//        uploadmqtt.run();
+    }
+
+}

+ 11 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IBaseDuckInfoService.java

@@ -1,8 +1,13 @@
 package com.huimv.guowei.admin.service;
 
+import com.huimv.guowei.admin.common.utils.Result;
 import com.huimv.guowei.admin.entity.BaseDuckInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.util.Map;
+
 /**
  * <p>
  *  服务类
@@ -12,5 +17,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2023-06-01
  */
 public interface IBaseDuckInfoService extends IService<BaseDuckInfo> {
+    Result listDuck(HttpServletRequest httpServletRequest, Map<String,String> paramsMap);
+
+    Result addDuck(HttpServletRequest httpServletRequest, Map<String,String> paramsMap) throws ParseException;
+
+    Result editDuck(HttpServletRequest httpServletRequest, Map<String,String> paramsMap);
 
+    Result listDuckById(HttpServletRequest httpServletRequest, Map<String,String> paramsMap);
 }

+ 9 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IDuckHealthInfoService.java

@@ -1,8 +1,13 @@
 package com.huimv.guowei.admin.service;
 
+import com.huimv.guowei.admin.common.utils.Result;
 import com.huimv.guowei.admin.entity.DuckHealthInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.util.Map;
+
 /**
  * <p>
  *  服务类
@@ -13,4 +18,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IDuckHealthInfoService extends IService<DuckHealthInfo> {
 
+    Result listById(HttpServletRequest httpServletRequest, Map<String,String> paramsMap);
+
+    Result addHealth(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException;
+
 }

+ 7 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IDuckImmunityInfoService.java

@@ -1,8 +1,13 @@
 package com.huimv.guowei.admin.service;
 
+import com.huimv.guowei.admin.common.utils.Result;
 import com.huimv.guowei.admin.entity.DuckImmunityInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.util.Map;
+
 /**
  * <p>
  *  服务类
@@ -12,5 +17,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2023-06-01
  */
 public interface IDuckImmunityInfoService extends IService<DuckImmunityInfo> {
+    Result listById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 
+    Result addImmunity(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException;
 }

+ 5 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnvMoveCallService.java

@@ -1,8 +1,12 @@
 package com.huimv.guowei.admin.service;
 
+import com.huimv.guowei.admin.common.utils.Result;
 import com.huimv.guowei.admin.entity.EnvMoveCall;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
 /**
  * <p>
  *  服务类
@@ -12,5 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2023-06-01
  */
 public interface IEnvMoveCallService extends IService<EnvMoveCall> {
-
+    Result listById(HttpServletRequest httpServletRequest, Map<String,String> paramsMap);
 }

+ 13 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnvRegularCallEggService.java

@@ -1,8 +1,14 @@
 package com.huimv.guowei.admin.service;
 
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.entity.EnvRegularCallEgg;
 import com.huimv.guowei.admin.entity.EnvRegularCallFeeding;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.util.Map;
+
 /**
  * <p>
  * 固定电子秤 服务类
@@ -11,6 +17,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @author author
  * @since 2023-06-01
  */
-public interface IEnvRegularCallEggService extends IService<EnvRegularCallFeeding> {
+public interface IEnvRegularCallEggService extends IService<EnvRegularCallEgg> {
+    Result listById(HttpServletRequest httpServletRequest, Map<String,String> paramsMap);
+
+    Result addEgg(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException;
+
+    Result updateEgg(HttpServletRequest httpServletRequest,EnvRegularCallEgg egg);
 
+    Result deleteEgg(HttpServletRequest httpServletRequest,Map<String,String> paramsMap);
 }

+ 7 - 2
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnvRegularCallFeedingService.java

@@ -1,7 +1,12 @@
 package com.huimv.guowei.admin.service;
 
+import com.huimv.guowei.admin.common.utils.Result;
 import com.huimv.guowei.admin.entity.EnvRegularCallEgg;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.guowei.admin.entity.EnvRegularCallFeeding;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
 
 /**
  * <p>
@@ -11,6 +16,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @author author
  * @since 2023-06-01
  */
-public interface IEnvRegularCallFeedingService extends IService<EnvRegularCallEgg> {
-
+public interface IEnvRegularCallFeedingService extends IService<EnvRegularCallFeeding> {
+    Result listById(HttpServletRequest httpServletRequest, Map<String,String> paramsMap);
 }

+ 103 - 2
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/BaseDuckInfoServiceImpl.java

@@ -1,11 +1,26 @@
 package com.huimv.guowei.admin.service.impl;
 
-import com.huimv.guowei.admin.entity.BaseDuckInfo;
-import com.huimv.guowei.admin.mapper.BaseDuckInfoMapper;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.entity.*;
+import com.huimv.guowei.admin.mapper.*;
 import com.huimv.guowei.admin.service.IBaseDuckInfoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +32,90 @@ import org.springframework.stereotype.Service;
 @Service
 public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, BaseDuckInfo> implements IBaseDuckInfoService {
 
+    @Autowired
+    private BaseDuckInfoMapper duckInfoMapper;
+    @Autowired
+    private EnvMoveCallMapper moveCallMapper;
+    @Autowired
+    private EnvRegularCallFeedingMapper feedingMapper;
+    @Autowired
+    private EnvRegularCallEggMapper eggMapper;
+    @Autowired
+    private DuckHealthInfoMapper healthInfoMapper;
+    @Autowired
+    private DuckImmunityInfoMapper infoMapper;
+    @Override
+    public Result listDuck(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String code = paramsMap.get("code");//前端传来的是编号
+        String location = paramsMap.get("location");//前端传来的是位置名字
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if (pageNum == null || "".equals(pageNum)) {
+            pageNum = "1";
+        }
+        if (pageSize == null || "".equals(pageSize)) {
+            pageSize = "10";
+        }
+        QueryWrapper<BaseDuckInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.like(StringUtils.isNotBlank(code), "id", code).eq(StringUtils.isNotBlank(location), "unit_name", location);
+        Page<BaseDuckInfo> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        return new Result(ResultCode.SUCCESS, duckInfoMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result addDuck(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
+        BaseDuckInfo baseDuckInfo = new BaseDuckInfo();
+        baseDuckInfo.setId(Integer.parseInt(paramsMap.get("id")));
+        baseDuckInfo.setDuckBreed(Integer.parseInt(paramsMap.get("duckBreed")));
+        baseDuckInfo.setDuckSex(Integer.parseInt(paramsMap.get("duckSex")));
+        baseDuckInfo.setDuckBirthplace(paramsMap.get("duckBirthPlace"));
+        String date = paramsMap.get("duckBirthDay");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
+        baseDuckInfo.setDuckBirthday(sdf.parse(date));
+        baseDuckInfo.setGenotype(paramsMap.get("genotype"));
+        BigDecimal big = new BigDecimal(paramsMap.get("nowWeight"));
+        baseDuckInfo.setNowWeight(big);
+        baseDuckInfo.setUnitId(Integer.parseInt(paramsMap.get("unitId")));
+        baseDuckInfo.setBreedingEnv(paramsMap.get("breedEnv"));
+        if (Integer.parseInt(paramsMap.get("duckSex")) == 1) {
+            BigDecimal rate = new BigDecimal(paramsMap.get("hatchRate"));
+            baseDuckInfo.setHatchRate(rate);
+        }
+        baseDuckInfo.setFatherNum(paramsMap.get("fatherNum"));
+        baseDuckInfo.setMotherNum(paramsMap.get("motherNum"));
+        baseDuckInfo.setFatherGenotype(paramsMap.get("fatherGenotype"));
+        baseDuckInfo.setMotherGenotype(paramsMap.get("motherGenotype"));
+        baseDuckInfo.setSpecialNeeds(paramsMap.get("specialNeeds"));
+        baseDuckInfo.setIsCage(0);
+        QueryWrapper<BaseDuckInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("id", paramsMap.get("id")).or().eq("unit_id", paramsMap.get("unitId"));
+        Integer integer = duckInfoMapper.selectCount(queryWrapper);
+        baseDuckInfo.setDuckImgUrl(paramsMap.get("imgUrl"));
+        if (integer == 0) {
+            duckInfoMapper.insert(baseDuckInfo);
+            return new Result(ResultCode.SUCCESS);
+        } else {
+            return new Result(10001, "编码已存在或该笼位已使用", false);
+        }
+    }
+
+    @Override
+    public Result editDuck(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        String isCage = paramsMap.get("isCage");
+        BaseDuckInfo baseDuckInfo = duckInfoMapper.selectById(id);
+        baseDuckInfo.setIsCage(Integer.parseInt(isCage));
+        duckInfoMapper.updateById(baseDuckInfo);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result listDuckById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        QueryWrapper<BaseDuckInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("id", id);
+        BaseDuckInfo baseDuckInfo = duckInfoMapper.selectOne(queryWrapper);
+        return new Result(ResultCode.SUCCESS, baseDuckInfo);
+    }
+
 }

+ 66 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/DuckHealthInfoServiceImpl.java

@@ -1,11 +1,23 @@
 package com.huimv.guowei.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
 import com.huimv.guowei.admin.entity.DuckHealthInfo;
 import com.huimv.guowei.admin.mapper.DuckHealthInfoMapper;
 import com.huimv.guowei.admin.service.IDuckHealthInfoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +29,58 @@ import org.springframework.stereotype.Service;
 @Service
 public class DuckHealthInfoServiceImpl extends ServiceImpl<DuckHealthInfoMapper, DuckHealthInfo> implements IDuckHealthInfoService {
 
+    @Autowired
+    private DuckHealthInfoMapper healthInfoMapper;
+
+    @Override
+    public Result listById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String duckNum = paramsMap.get("duckCode");
+        String startDate = paramsMap.get("startDate");
+        String endDate = paramsMap.get("endDate");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+
+        if (pageNum == null || "".equals(pageNum)) {
+            pageNum = "1";
+        }
+        if (pageSize == null || "".equals(pageSize)) {
+            pageSize = "10";
+        }
+        Date date = new Date();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String format = sdf.format(date);
+        if (StringUtils.isBlank(startDate)) {
+            startDate = format + " 00:00:00";
+        }else {
+            startDate = startDate + " 00:00:00";
+        }
+        if (StringUtils.isBlank(endDate)) {
+            endDate = format + " 23:59:59";
+        }else {
+            endDate = endDate + " 23:59:59";
+        }
+
+        QueryWrapper<DuckHealthInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("duck_num", duckNum).between( "health_date", startDate, endDate).orderByAsc("health_date");
+        Page<DuckHealthInfo> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        return new Result(ResultCode.SUCCESS, healthInfoMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result addHealth(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
+        String duckNum = paramsMap.get("duckCode");
+        String date = paramsMap.get("date");
+        String healthResult = paramsMap.get("healthResult");
+        String treatmentMeasure = paramsMap.get("treatmentMeasure");
+        DuckHealthInfo healthInfo = new DuckHealthInfo();
+        healthInfo.setDuckNum(duckNum);
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        healthInfo.setHealthDate(sdf.parse(date));
+        healthInfo.setHealthResult(healthResult);
+        healthInfo.setTreatmentMeasure(treatmentMeasure);
+        healthInfoMapper.insert(healthInfo);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+
 }

+ 62 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/DuckImmunityInfoServiceImpl.java

@@ -1,11 +1,23 @@
 package com.huimv.guowei.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
 import com.huimv.guowei.admin.entity.DuckImmunityInfo;
 import com.huimv.guowei.admin.mapper.DuckImmunityInfoMapper;
 import com.huimv.guowei.admin.service.IDuckImmunityInfoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +29,54 @@ import org.springframework.stereotype.Service;
 @Service
 public class DuckImmunityInfoServiceImpl extends ServiceImpl<DuckImmunityInfoMapper, DuckImmunityInfo> implements IDuckImmunityInfoService {
 
+    @Autowired
+    private DuckImmunityInfoMapper infoMapper;
+    @Override
+    public Result listById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String duckNum = paramsMap.get("duckCode");
+        String startDate = paramsMap.get("startDate");
+        String endDate = paramsMap.get("endDate");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+
+        Date date = new Date();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String format = sdf.format(date);
+        if (StringUtils.isBlank(startDate)) {
+            startDate = format + " 00:00:00";
+        } else {
+            startDate = startDate + " 00:00:00";
+        }
+        if (StringUtils.isBlank(endDate)) {
+            endDate = format + " 23:59:59";
+        } else {
+            endDate = endDate + " 23:59:59";
+        }
+        if (pageNum == null || "".equals(pageNum)) {
+            pageNum = "1";
+        }
+        if (pageSize == null || "".equals(pageSize)) {
+            pageSize = "10";
+        }
+        QueryWrapper<DuckImmunityInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("duck_num", duckNum).between("health_date", startDate, endDate).orderByAsc("health_date");
+        Page<DuckImmunityInfo> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        return new Result(ResultCode.SUCCESS, infoMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result addImmunity(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
+        String duckNum = paramsMap.get("duckCode");
+        String date = paramsMap.get("date");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date date1 = sdf.parse(date);
+        String vaccination = paramsMap.get("vaccination");//接种疫苗
+        DuckImmunityInfo immunityInfo = new DuckImmunityInfo();
+        immunityInfo.setDuckNum(duckNum);
+        immunityInfo.setHealthDate(date1);
+        immunityInfo.setVaccination(vaccination);
+        infoMapper.insert(immunityInfo);
+        return new Result(ResultCode.SUCCESS);
+    }
+
 }

+ 59 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnvMoveCallServiceImpl.java

@@ -1,14 +1,26 @@
 package com.huimv.guowei.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.DataUill;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
 import com.huimv.guowei.admin.entity.EnvMoveCall;
+import com.huimv.guowei.admin.entity.EnvRegularCallEgg;
 import com.huimv.guowei.admin.mapper.EnvMoveCallMapper;
 import com.huimv.guowei.admin.service.IEnvMoveCallService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Map;
+
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author author
@@ -17,4 +29,50 @@ import org.springframework.stereotype.Service;
 @Service
 public class EnvMoveCallServiceImpl extends ServiceImpl<EnvMoveCallMapper, EnvMoveCall> implements IEnvMoveCallService {
 
+    @Autowired
+    private EnvMoveCallMapper moveCallMapper;
+
+    @Override
+    public Result listById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String type = paramsMap.get("type");//显示类型
+        String duckCode = paramsMap.get("duckCode");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if (pageNum == null || "".equals(pageNum)) {
+            pageNum = "1";
+        }
+        if (pageSize == null || "".equals(pageSize)) {
+            pageSize = "10";
+        }
+        if ("1".equals(type)) {
+            QueryWrapper<EnvMoveCall> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("duck_code", duckCode).orderByAsc("dayage");
+            Page<EnvMoveCall> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+            return new Result(ResultCode.SUCCESS, moveCallMapper.selectPage(page, queryWrapper));
+        } else {
+            String dateType = paramsMap.get("dateType");
+            QueryWrapper<EnvMoveCall> queryWrapper = new QueryWrapper<>();
+            if ("1".equals(dateType)) {
+                Date timesmorning = DataUill.getTimesmorning();
+                queryWrapper.eq("duck_code", duckCode).ge("call_date", timesmorning).orderByAsc("call_date");
+
+            } else if ("2".equals(dateType)) {
+                Calendar calendar = Calendar.getInstance();
+                calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+                queryWrapper.eq("duck_code", duckCode).ge("call_date", calendar.getTime()).orderByAsc("call_date");
+
+            } else if ("3".equals(dateType)) {
+                Date timesMonthmorning = DataUill.getTimesMonthmorning();
+                queryWrapper.eq("duck_code", duckCode).ge("call_date", timesMonthmorning).orderByAsc("call_date");
+
+            } else {
+                String startDate = paramsMap.get("startDate");
+                String endDate = paramsMap.get("endDate");
+                startDate = startDate + " 00:00:00";
+                endDate = endDate + " 23:59:59";
+                queryWrapper.eq("duck_code", duckCode).between("call_date", startDate, endDate).orderByAsc("call_date");
+            }
+            return new Result(ResultCode.SUCCESS, moveCallMapper.selectList(queryWrapper));
+        }
+    }
 }

+ 91 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnvRegularCallEggServiceImpl.java

@@ -1,11 +1,25 @@
 package com.huimv.guowei.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.DataUill;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.entity.EnvRegularCallEgg;
 import com.huimv.guowei.admin.entity.EnvRegularCallFeeding;
 import com.huimv.guowei.admin.mapper.EnvRegularCallEggMapper;
 import com.huimv.guowei.admin.service.IEnvRegularCallEggService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Map;
+
 /**
  * <p>
  * 固定电子秤 服务实现类
@@ -15,6 +29,82 @@ import org.springframework.stereotype.Service;
  * @since 2023-06-01
  */
 @Service
-public class EnvRegularCallEggServiceImpl extends ServiceImpl<EnvRegularCallEggMapper, EnvRegularCallFeeding> implements IEnvRegularCallEggService {
+public class EnvRegularCallEggServiceImpl extends ServiceImpl<EnvRegularCallEggMapper, EnvRegularCallEgg> implements IEnvRegularCallEggService {
+
+    @Autowired
+    private EnvRegularCallEggMapper eggMapper;
+
+    @Override
+    public Result listById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String type = paramsMap.get("type");//显示类型
+        String duckCode = paramsMap.get("duckCode");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if (pageNum == null || "".equals(pageNum)) {
+            pageNum = "1";
+        }
+        if (pageSize == null || "".equals(pageSize)) {
+            pageSize = "10";
+        }
+        if ("1".equals(type)) {
+            QueryWrapper<EnvRegularCallEgg> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("duck_code", duckCode).orderByAsc("dayage");
+            Page<EnvRegularCallEgg> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+            return new Result(ResultCode.SUCCESS, eggMapper.selectPage(page, queryWrapper));
+        } else {
+            String dateType = paramsMap.get("dateType");
+            QueryWrapper<EnvRegularCallEgg> queryWrapper = new QueryWrapper<>();
+            if ("1".equals(dateType)) {
+                Date timesmorning = DataUill.getTimesmorning();
+                queryWrapper.eq("duck_code", duckCode).ge("call_date", timesmorning).orderByAsc("call_date");
+
+            } else if ("2".equals(dateType)) {
+                Calendar calendar = Calendar.getInstance();
+                calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+                queryWrapper.eq("duck_code", duckCode).ge("call_date", calendar.getTime()).orderByAsc("call_date");
+
+            } else if ("3".equals(dateType)) {
+                Date timesMonthmorning = DataUill.getTimesMonthmorning();
+                queryWrapper.eq("duck_code", duckCode).ge("call_date", timesMonthmorning).orderByAsc("call_date");
+
+            } else {
+                String startDate = paramsMap.get("startDate");
+                String endDate = paramsMap.get("endDate");
+                startDate = startDate + " 00:00:00";
+                endDate = endDate + " 23:59:59";
+                queryWrapper.eq("duck_code", duckCode).between("call_date", startDate, endDate).orderByAsc("call_date");
+            }
+            return new Result(ResultCode.SUCCESS, eggMapper.selectList(queryWrapper));
+        }
+    }
+
+    @Override
+    public Result addEgg(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
+        String duckCode = paramsMap.get("duckCode");
+        String date = paramsMap.get("date");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String eggNum = paramsMap.get("eggNum");
+        String eggWeight = paramsMap.get("eggWeight");
+        EnvRegularCallEgg egg = new EnvRegularCallEgg();
+        egg.setDuckCode(duckCode);
+        egg.setDuckWeight(Integer.parseInt(eggWeight));
+        egg.setEggNum(Integer.parseInt(eggNum));
+        egg.setCallDate(sdf.parse(date));
+        eggMapper.insert(egg);
+        return new Result(10000,"添加成功!",true);
+    }
+
+    @Override
+    public Result updateEgg(HttpServletRequest httpServletRequest, EnvRegularCallEgg egg) {
+        eggMapper.updateById(egg);
+        return new Result(10000, "修改成功!", true);
+    }
+
+    @Override
+    public Result deleteEgg(HttpServletRequest httpServletRequest, Map<String,String> paramsMap) {
+        String id = paramsMap.get("id");//此时这里就是表中的id
+        eggMapper.deleteById(id);
+        return new Result(10000, "删除成功!", true);
+    }
 
 }

+ 63 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnvRegularCallFeedingServiceImpl.java

@@ -1,11 +1,25 @@
 package com.huimv.guowei.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.DataUill;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.entity.EnvMoveCall;
 import com.huimv.guowei.admin.entity.EnvRegularCallEgg;
+import com.huimv.guowei.admin.entity.EnvRegularCallFeeding;
 import com.huimv.guowei.admin.mapper.EnvRegularCallFeedingMapper;
 import com.huimv.guowei.admin.service.IEnvRegularCallFeedingService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 固定电子秤 服务实现类
@@ -15,6 +29,54 @@ import org.springframework.stereotype.Service;
  * @since 2023-06-01
  */
 @Service
-public class EnvRegularCallFeedingServiceImpl extends ServiceImpl<EnvRegularCallFeedingMapper, EnvRegularCallEgg> implements IEnvRegularCallFeedingService {
+public class EnvRegularCallFeedingServiceImpl extends ServiceImpl<EnvRegularCallFeedingMapper, EnvRegularCallFeeding> implements IEnvRegularCallFeedingService {
+
+    @Autowired
+    private EnvRegularCallFeedingMapper feedingMapper;
+
+    @Override
+    public Result listById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String type = paramsMap.get("type");//显示类型
+        String duckCode = paramsMap.get("duckCode");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if (pageNum == null || "".equals(pageNum)) {
+            pageNum = "1";
+        }
+        if (pageSize == null || "".equals(pageSize)) {
+            pageSize = "10";
+        }
+        if ("1".equals(type)) {
+            QueryWrapper<EnvRegularCallFeeding> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("duck_code", duckCode).orderByAsc("dayage");
+            Page<EnvRegularCallFeeding> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+            return new Result(ResultCode.SUCCESS, feedingMapper.selectPage(page, queryWrapper));
+        } else {
+            String dateType = paramsMap.get("dateType");
+            QueryWrapper<EnvRegularCallFeeding> queryWrapper = new QueryWrapper<>();
+            if ("1".equals(dateType)) {
+                Date timesmorning = DataUill.getTimesmorning();
+                queryWrapper.eq("duck_code", duckCode).ge("call_date", timesmorning).orderByAsc("call_date");
+
+            } else if ("2".equals(dateType)) {
+                Calendar calendar = Calendar.getInstance();
+                calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+                queryWrapper.eq("duck_code", duckCode).ge("call_date", calendar.getTime()).orderByAsc("call_date");
+
+            } else if ("3".equals(dateType)) {
+                Date timesMonthmorning = DataUill.getTimesMonthmorning();
+                queryWrapper.eq("duck_code", duckCode).ge("call_date", timesMonthmorning).orderByAsc("call_date");
+
+            } else {
+                String startDate = paramsMap.get("startDate");
+                String endDate = paramsMap.get("endDate");
+                startDate = startDate + " 00:00:00";
+                endDate = endDate + " 23:59:59";
+                queryWrapper.eq("duck_code", duckCode).between("call_date", startDate, endDate).orderByAsc("call_date");
+            }
+            return new Result(ResultCode.SUCCESS, feedingMapper.selectList(queryWrapper));
+        }
+
+    }
 
 }

+ 70 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/utils/Print.java

@@ -0,0 +1,70 @@
+package com.huimv.guowei.admin.utils;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.jxls.common.Context;
+import org.jxls.util.JxlsHelper;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Print {
+    /**
+     * 打印方法  不插入图片
+     * @throws Exception
+     * @return
+     */
+    public  static void print() throws Exception {
+        //准备数据
+        String path ="G://egg.xls";
+        //获取模板文件,你自己当前模板的位置  我这里为当前项目下
+        //如果为系统路径 为: InputStream is = new FileInputStream("F://student.xlsx");
+        InputStream is = new FileInputStream("G://egg.xlsx");
+//        InputStream is = Print.class.getClassLoader().getResourceAsStream("student.xlsx");
+//        InputStream is = Print.class.getClassLoader().getResourceAsStream("order_contract.xls");
+        //根据模板生成的文件保存路径  我这里保存在本地D盘
+        OutputStream os = new FileOutputStream(path);
+        //绑定数据
+        Context context = new Context();
+/*        context.putVar("duckCode", "100104010");
+        context.putVar("duckType", "北京麻鸭");
+        context.putVar("duckSex", "母");
+        context.putVar("duckDate", "2023-06-05");
+        context.putVar("address", "杭州余杭");
+        context.putVar("father", "41324546");
+        context.putVar("father2", "A");
+        context.putVar("mother", "46465416");
+        context.putVar("mother2", "B");
+        String s = "";
+        for (int i = 0; i < 3; i++) {
+            s = s.concat(i + "日龄:" + i+",");
+        }
+        context.putVar("weight", s);
+        context.putVar("need", "wu");
+        context.putVar("env", "集中式养殖");
+        context.putVar("record", "");
+        context.putVar("record2", "111");*/
+/*        List<Abc> list = new ArrayList<>();
+        for (int i = 0; i < 3; i++) {
+            Abc abc = new Abc();
+            abc.setDuckCode(String.valueOf(i));
+            abc.setDate(String.valueOf(i + 1));
+            abc.setFeed(String.valueOf(i + 2));
+            abc.setEggNum(String.valueOf(i + 3));
+            abc.setWeight(String.valueOf(i + 5));
+            list.add(abc);
+        }
+        context.putVar("list", list);*/
+        //生成
+        JxlsHelper.getInstance().processTemplate(is, os, context);
+//        String path = String.valueOf(os);
+
+    }
+
+}

+ 36 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/utils/SpringUtil.java

@@ -0,0 +1,36 @@
+package com.huimv.guowei.admin.utils;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+
+@Component
+public class SpringUtil implements ApplicationContextAware {
+    private static ApplicationContext applicationContext = null;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        if(SpringUtil.applicationContext == null){
+            SpringUtil.applicationContext  = applicationContext;
+        }
+    }
+
+    public static ApplicationContext getApplicationContext() {
+        return applicationContext;
+    }
+
+    public static Object getBean(String name){
+        return getApplicationContext().getBean(name);
+    }
+
+    public static <T> T getBean(Class<T> clazz){
+        return getApplicationContext().getBean(clazz);
+    }
+
+    public static <T> T getBean(String name,Class<T> clazz){
+        return getApplicationContext().getBean(name, clazz);
+    }
+
+
+}

+ 182 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/utils/UploadImage.java

@@ -0,0 +1,182 @@
+package com.huimv.guowei.admin.utils;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.UUID;
+import com.jcraft.jsch.*;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.Date;
+
+@Component
+public class UploadImage {
+
+    @Value("${img.basePath}")
+    private   String basePath="/home/huimv/img/";
+
+    @Value("${img.ip}")
+    private    String ip="139.9.167.178" ;
+//    private   String ip = "36.134.209.211";
+//    private   String ip = "192.168.0.13";
+
+    @Value("${img.user}")
+    private  String user="huimv" ;
+
+//    private   String password = "!Hm537e@1";
+
+    @Value("${img.password}")
+    private   String password ="!hm123@1";
+
+    @Value("${img.port}")
+    public   Integer port=22 ;
+
+    @Value("${img.url}")
+    public   String url ="https://img.ifarmcloud.com/images/";
+
+
+
+    /**
+     * 利用JSch包实现SFTP上传文件
+     * @param bytes  文件字节流
+     * @param fileName  文件名
+     * @throws Exception
+     */
+    public   void sshSftp(byte[] bytes,String path,String fileName) throws Exception{
+
+        // 服务器保存路径
+        String filepath = basePath +path ;
+        Session session = null;
+        Channel channel = null;
+
+        JSch jSch = new JSch();
+
+        if(port <=0){
+            //连接服务器,采用默认端口
+            session = jSch.getSession(user, ip);
+        }else{
+            //采用指定的端口连接服务器
+            session = jSch.getSession(user, ip ,port);
+        }
+
+        //如果服务器连接不上,则抛出异常
+        if (session == null) {
+            throw new Exception("session is null");
+        }
+
+        //设置登陆主机的密码
+        session.setPassword(password);//设置密码
+        //设置第一次登陆的时候提示,可选值:(ask | yes | no)
+        session.setConfig("userauth.gssapi-with-mic","no");
+        session.setConfig("StrictHostKeyChecking", "no");
+        //设置登陆超时时间
+        session.connect(30000);
+
+        OutputStream outstream = null;
+        try {
+            //创建sftp通信通道
+            channel = (Channel) session.openChannel("sftp");
+            channel.connect(1000);
+            ChannelSftp sftp = (ChannelSftp) channel;
+
+            //进入服务器指定的文件夹
+            sftp.cd(basePath);
+
+            SftpATTRS attrs = null;
+            try {
+                attrs = sftp.stat(filepath);
+            } catch (Exception e) {
+                // TODO: handle exception
+            }
+            if (attrs == null) {
+                sftp.mkdir(filepath);
+                System.out.println(("创建子目录:" + filepath));
+            }
+            sftp.cd(filepath);
+
+            //以下代码实现从本地上传一个文件到服务器,如果要实现下载,对换一下流就可以了
+            outstream = sftp.put(fileName);
+            outstream.write(bytes);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            //关流操作
+            if (outstream != null) {
+                outstream.flush();
+                outstream.close();
+            }
+            if (session != null) {
+                session.disconnect();
+            }
+            if (channel != null) {
+                channel.disconnect();
+            }
+            System.out.println("上传成功!");
+        }
+    }
+
+    //上传压缩的图片
+    public  String getImageCom(MultipartFile image) throws IOException {
+        //获取文件输入流
+        InputStream inputStream = image.getInputStream();
+        String originalFilename = image.getOriginalFilename();
+        String filenameExtension = StringUtils.getFilenameExtension(originalFilename);
+        String path = DateUtil.format(new Date(), "yyyy-MM");
+
+        try {
+            // 把图片读入到内存中
+            BufferedImage bufImg = ImageIO.read(inputStream);
+            // 压缩代码,存储图片文件byte数组
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            //防止图片变红,这一步非常重要
+            BufferedImage bufferedImage = new BufferedImage(bufImg.getWidth(), bufImg.getHeight(), BufferedImage.TYPE_INT_RGB);
+            bufferedImage.createGraphics().drawImage(bufImg,0,0, Color.WHITE,null);
+            //先转成jpg格式来压缩,然后在通过OSS来修改成源文件本来的后缀格式
+            ImageIO.write(bufferedImage,"jpg",bos);
+            byte[] bytes = bos.toByteArray();
+            String imgname = UUID.randomUUID() + "." + filenameExtension;
+            sshSftp(bytes, path, imgname);
+            return url+ path + "/" + imgname;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "上传失败";
+        } finally {
+            inputStream.close();
+        }
+    }
+
+
+    //上传原图
+    public  String uploadImg( MultipartFile image ) {
+        String originalFilename = image.getOriginalFilename();
+        String filenameExtension = StringUtils.getFilenameExtension(originalFilename);
+        String path = DateUtil.format(new Date(), "yyyy-MM");
+        try {
+            InputStream inputStream = image.getInputStream();
+            BufferedInputStream in = new BufferedInputStream(inputStream);
+            ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
+
+            byte[] temp = new byte[1024];
+            int size = 0;
+            while ((size = in.read(temp)) != -1) {
+                out.write(temp, 0, size);
+            }
+            in.close();
+            byte[] content = out.toByteArray();
+            String imgname = UUID.randomUUID() + "." + filenameExtension;
+            sshSftp(content, path, imgname);
+            return url + path + "/" + imgname;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "上传失败";
+        }
+    }
+
+}
+

+ 1 - 1
huimv-admin/src/main/resources/com/huimv/guowei/admin/mapper/EnvRegularCallEggMapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.huimv.guowei.admin.mapper.EnvRegularCallEggMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.huimv.guowei.admin.entity.EnvRegularCallFeeding">
+    <resultMap id="BaseResultMap" type="com.huimv.guowei.admin.entity.EnvRegularCallEgg">
         <id column="id" property="id" />
         <result column="call_name" property="callName" />
         <result column="call_code" property="callCode" />

+ 1 - 2
huimv-admin/src/main/resources/com/huimv/guowei/admin/mapper/EnvRegularCallFeedingMapper.xml

@@ -3,14 +3,13 @@
 <mapper namespace="com.huimv.guowei.admin.mapper.EnvRegularCallFeedingMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.huimv.guowei.admin.entity.EnvRegularCallEgg">
+    <resultMap id="BaseResultMap" type="com.huimv.guowei.admin.entity.EnvRegularCallFeeding">
         <id column="id" property="id" />
         <result column="call_name" property="callName" />
         <result column="call_code" property="callCode" />
         <result column="duck_code" property="duckCode" />
         <result column="duck_weight" property="duckWeight" />
         <result column="duck_feeding_original" property="duckFeedingOriginal" />
-        <result column="egg_num" property="eggNum" />
         <result column="call_date" property="callDate" />
         <result column="farm_id" property="farmId" />
     </resultMap>