wwh 1 周之前
父節點
當前提交
0394f208de
共有 42 個文件被更改,包括 1393 次插入0 次删除
  1. 57 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/controller/JsMaintenanceWarningController.java
  2. 20 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/controller/JsProduceCodeController.java
  3. 69 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/controller/JsReportController.java
  4. 57 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/controller/JsTrainingController.java
  5. 45 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsMaintenanceWarning.java
  6. 48 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsProduceCode.java
  7. 60 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsProduction.java
  8. 41 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsReport.java
  9. 47 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsTraining.java
  10. 49 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/AdmissionVo.java
  11. 67 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/DrugAndProduce.java
  12. 16 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/DrugCheckVo.java
  13. 43 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/HarmlessVo.java
  14. 47 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/OutPlaceVo.java
  15. 17 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/ProduceCheckVo.java
  16. 18 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/ProductionVo.java
  17. 60 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/SummaryVo.java
  18. 16 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/mapper/JsMaintenanceWarningMapper.java
  19. 16 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/mapper/JsProduceCodeMapper.java
  20. 16 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/mapper/JsProductionMapper.java
  21. 16 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/mapper/JsReportMapper.java
  22. 16 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/mapper/JsTrainingMapper.java
  23. 16 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/service/IJsMaintenanceWarningService.java
  24. 16 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/service/IJsProduceCodeService.java
  25. 16 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/service/IJsReportService.java
  26. 27 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/service/IJsTrainingService.java
  27. 20 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsMaintenanceWarningServiceImpl.java
  28. 20 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsProduceCodeServiceImpl.java
  29. 20 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsReportServiceImpl.java
  30. 69 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsTrainingServiceImpl.java
  31. 85 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/timer/WarningTimer.java
  32. 53 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/utils/PaginationUtil.java
  33. 25 0
      app-admin/src/main/java/com/ruoyi/web/v2/v1/utils/PhoneNumberValidator.java
  34. 5 0
      app-admin/src/main/resources/mapper/JsMaintenanceWarningMapper.xml
  35. 5 0
      app-admin/src/main/resources/mapper/JsProduceCodeMapper.xml
  36. 5 0
      app-admin/src/main/resources/mapper/JsReportMapper.xml
  37. 5 0
      app-admin/src/main/resources/mapper/JsTrainingMapper.xml
  38. 22 0
      app-system/src/main/java/com/ruoyi/app/DTO/AncimalDTO.java
  39. 51 0
      app-system/src/main/java/com/ruoyi/app/DTO/JsReportDto.java
  40. 42 0
      app-system/src/main/java/com/ruoyi/app/DTO/PigpenDTO.java
  41. 50 0
      app-system/src/main/java/com/ruoyi/app/DTO/ProductionVo.java
  42. 二進制
      webUI.zip

+ 57 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/controller/JsMaintenanceWarningController.java

@@ -0,0 +1,57 @@
+package com.ruoyi.web.v2.v1.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.web.v2.v1.entity.JsMaintenanceWarning;
+import com.ruoyi.web.v2.v1.entity.JsTraining;
+import com.ruoyi.web.v2.v1.service.IJsMaintenanceWarningService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import static com.ruoyi.common.core.domain.AjaxResult.success;
+
+/**
+ * <p>
+ * v2.0设备维护提示 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-19
+ */
+@RestController
+@RequestMapping("/js-maintenance-warning")
+@Api("2.0设备维护提示")
+public class JsMaintenanceWarningController {
+
+    @Autowired
+    private IJsMaintenanceWarningService maintenanceWarningService;
+
+    @ApiOperation("设备维护提示分页")
+    @GetMapping("/page")
+    public AjaxResult page(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize
+            , @RequestParam(value = "startTime", required = false) String startTime
+            , @RequestParam(value = "endTime", required = false) String endTime
+            , @RequestParam(value = "deviceNum", required = false) String deviceNum
+            , @RequestParam(value = "deviceName", required = false) String deviceName) {
+        Page<JsMaintenanceWarning> page = new Page<>(pageNum, pageSize);
+        QueryWrapper<JsMaintenanceWarning> queryWrapper = new QueryWrapper<>();
+        if ("".equals(startTime) || null == startTime) {
+
+        } else {
+            queryWrapper.between("maintenance_time", startTime, endTime);
+        }
+        queryWrapper.like(StringUtils.isNotEmpty(deviceNum), "device_num", deviceNum);
+        queryWrapper.like(StringUtils.isNotEmpty(deviceName), "device_name", deviceName);
+        queryWrapper.orderByDesc("maintenance_time");
+        return success(maintenanceWarningService.page(page,queryWrapper));
+    }
+}

+ 20 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/controller/JsProduceCodeController.java

@@ -0,0 +1,20 @@
+package com.ruoyi.web.v2.v1.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * v2.0分销与屠宰的肉品证对应表 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-10
+ */
+@RestController
+@RequestMapping("/js-produce-code")
+public class JsProduceCodeController {
+
+}

+ 69 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/controller/JsReportController.java

@@ -0,0 +1,69 @@
+package com.ruoyi.web.v2.v1.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.app.domain.Pigpen;
+import com.ruoyi.app.mapper.PigpenMapper;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.v2.v1.entity.JsProduceRecall;
+import com.ruoyi.web.v2.v1.entity.JsReport;
+import com.ruoyi.web.v2.v1.service.IJsReportService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.List;
+
+import static com.ruoyi.common.core.domain.AjaxResult.success;
+
+/**
+ * <p>
+ * v2.0完工报告 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-11
+ */
+@RestController
+@RequestMapping("/js-report")
+@Api("2.0完工报告")
+public class JsReportController {
+
+    @Autowired
+    private IJsReportService reportService;
+    @Autowired
+    private PigpenMapper pigpenMapper;
+
+    @ApiOperation("完工报告添加")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody JsReport jsReport) {
+        jsReport.setCreateTime(new Date());
+        Pigpen pigpen = new Pigpen();
+        List<Pigpen> pigpens = pigpenMapper.selectPigpenList(pigpen);
+        if (pigpens.size() != 0) {
+            for (Pigpen pigpen1 : pigpens) {
+                pigpen1.setIsUse(0);
+                pigpenMapper.updatePigpen(pigpen1);
+            }
+        }
+        return success(reportService.save(jsReport));
+    }
+
+    @ApiOperation("完工报告分页")
+    @GetMapping("/page")
+    public AjaxResult page(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize
+            , @RequestParam(value = "startTime", required = false) String startTime
+            , @RequestParam(value = "endTime", required = false) String endTime) {
+        QueryWrapper<JsReport> queryWrapper = new QueryWrapper<>();
+        if ("".equals(startTime) || null == startTime) {
+
+        } else {
+            queryWrapper.between("create_time", startTime + " 00:00:00", endTime + " 23:59:59");
+        }
+        Page<JsReport> page = new Page<>(pageNum, pageSize);
+        return success(reportService.page(page,queryWrapper));
+    }
+}

+ 57 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/controller/JsTrainingController.java

@@ -0,0 +1,57 @@
+package com.ruoyi.web.v2.v1.controller;
+
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.v2.v1.entity.JsStore;
+import com.ruoyi.web.v2.v1.entity.JsTraining;
+import com.ruoyi.web.v2.v1.service.IJsTrainingService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * v2.0员工培训 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-19
+ */
+@RestController
+@RequestMapping("/js-training")
+@Api("2.0员工培训")
+public class JsTrainingController {
+
+    @Autowired
+    private IJsTrainingService jsTrainingService;
+
+    @ApiOperation("员工培训添加")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody JsTraining jsTraining) {
+        return jsTrainingService.add(jsTraining);
+    }
+
+    @ApiOperation("员工培训修改")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody JsTraining jsTraining) {
+        return jsTrainingService.edit(jsTraining);
+    }
+
+    @ApiOperation("员工培训删除")
+    @PostMapping("/delete")
+    public AjaxResult delete(@RequestBody Map<String, String> paramsMap) {
+        String ids = paramsMap.get("ids");
+        return jsTrainingService.delete(ids);
+    }
+
+    @ApiOperation("员工培训分页")
+    @GetMapping("/page")
+    public AjaxResult page(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize
+            , @RequestParam(value = "startTime", required = false) String startTime
+            , @RequestParam(value = "endTime", required = false) String endTime) {
+        return jsTrainingService.page(pageNum, pageSize, startTime, endTime);
+    }
+}

+ 45 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsMaintenanceWarning.java

@@ -0,0 +1,45 @@
+package com.ruoyi.web.v2.v1.entity;
+
+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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * v2.0设备维护提示
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("js_maintenance_warning")
+@ApiModel(value="JsMaintenanceWarning对象", description="v2.0设备维护提示")
+public class JsMaintenanceWarning implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "时间")
+    private String maintenanceTime;
+
+    @ApiModelProperty(value = "设备列表")
+    private String deviceNum;
+
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    private Integer isHandle;
+
+}

+ 48 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsProduceCode.java

@@ -0,0 +1,48 @@
+package com.ruoyi.web.v2.v1.entity;
+
+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 java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * v2.0分销与屠宰的肉品证对应表
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("js_produce_code")
+@ApiModel(value="JsProduceCode对象", description="v2.0分销与屠宰的肉品证对应表")
+public class JsProduceCode implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "动物检疫合格证")
+    private String animalCert;
+
+    @ApiModelProperty(value = "肉品合格证")
+    private String meatCert;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    private String oneCode;
+
+
+}

+ 60 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsProduction.java

@@ -0,0 +1,60 @@
+package com.ruoyi.web.v2.v1.entity;
+
+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 java.util.List;
+
+import com.ruoyi.web.v2.v1.entity.vo.ProductionVo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * v2.0生产清单
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-06
+ */
+@Data
+public class JsProduction  {
+
+    @ApiModelProperty(value = "屠宰日期")
+    private String createTime;
+
+    @ApiModelProperty(value = "检疫证号")
+    private String animalCertNo;
+
+    @ApiModelProperty(value = "供应商")
+    private String supplierName;
+
+    @ApiModelProperty(value = "肉商")
+    private String purchaserName;
+
+    @ApiModelProperty(value = "品种")
+    private String variety;
+
+    @ApiModelProperty(value = "数量")
+    private Integer amount;
+
+    @ApiModelProperty(value = "销售去向")
+    private String salePlace;
+
+    @ApiModelProperty(value = "动物检疫合格证")
+    private String animalCert;
+
+    @ApiModelProperty(value = "肉品合格证")
+    private String meatCert;
+
+    private String oneCode;
+
+    private List<ProductionVo> productionVos;
+
+
+}

+ 41 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsReport.java

@@ -0,0 +1,41 @@
+package com.ruoyi.web.v2.v1.entity;
+
+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 java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * v2.0完工报告
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("js_report")
+@ApiModel(value="JsReport对象", description="v2.0完工报告")
+public class JsReport implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Date createTime;
+
+    private String userName;
+
+
+}

+ 47 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsTraining.java

@@ -0,0 +1,47 @@
+package com.ruoyi.web.v2.v1.entity;
+
+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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * v2.0员工培训
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("js_training")
+@ApiModel(value="JsTraining对象", description="v2.0员工培训")
+public class JsTraining implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "培训人")
+    private String trainingTime;
+
+    @ApiModelProperty(value = "培训时间")
+    private String trainingUser;
+
+    @ApiModelProperty(value = "培训内容")
+    private String trainingContent;
+
+    @ApiModelProperty(value = "负责人")
+    private String userName;
+
+
+}

+ 49 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/AdmissionVo.java

@@ -0,0 +1,49 @@
+package com.ruoyi.web.v2.v1.entity.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class AdmissionVo {
+
+    private Long num;
+
+    /*货主*/
+    private String cargoOwner;
+
+    /*生猪产地*/
+    private String originPlace;
+
+    /*检疫证号*/
+    private String animalCertNo;
+
+    /*待宰头数*/
+    private Integer amount;
+
+    /**
+     * 病死数
+     */
+    private Integer illnessDeadAmount;
+
+    /**
+     * 病害数量
+     */
+    private Integer illnessDiseaseAmount;
+
+    /**
+     * 途亡数量
+     */
+    private Integer roadDealAmount;
+
+    /**
+     * 急宰数量
+     */
+    private Integer snapKillAmount;
+
+    /*合格头数*/
+    private Integer qualifiedAmount;
+
+
+    private Date createTime;
+}

+ 67 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/DrugAndProduce.java

@@ -0,0 +1,67 @@
+package com.ruoyi.web.v2.v1.entity.vo;
+
+import com.ruoyi.common.annotation.Excel;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class DrugAndProduce {
+
+    private Long num;
+
+    /*货主*/
+    private String cargoOwner;
+
+    /**
+     * 病死数
+     */
+    private Integer illnessDeadAmount;
+
+    /**
+     * 病害数量
+     */
+    private Integer illnessDiseaseAmount;
+
+    /**
+     * 途亡数量
+     */
+    private Integer roadDealAmount;
+
+    /**
+     * 急宰数量
+     */
+    private Integer snapKillAmount;
+
+    /**
+     *静养病死病害数量
+     */
+    private Integer dealAmount;
+
+    /**
+     * 合格头数
+     */
+    private Integer  qualifiedAmountBefore;
+
+    /**
+     * 屠宰头数
+     */
+    private Integer tuzaiAmount;
+
+    /**
+     * 屠宰后病害重量
+     */
+    private String weight;
+
+    /**
+     * 屠宰后合格头数
+     */
+    private Double qualifiedAmountAfter;
+
+    private Date createTime;
+
+    private List<DrugCheckVo> drugs;
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/DrugCheckVo.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.v2.v1.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class DrugCheckVo {
+
+    /*药物名称*/
+    private String checkProject;
+
+    /*抽检结果*/
+    private String result;
+
+    /*抽检头数*/
+    private Integer checkAmount;
+}

+ 43 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/HarmlessVo.java

@@ -0,0 +1,43 @@
+package com.ruoyi.web.v2.v1.entity.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class HarmlessVo {
+
+    private Integer id;
+
+    /*货主*/
+    private String cargoOwner;
+
+    /*处理原因*/
+    private String dealReason;
+
+    /**
+     * 病死数
+     */
+    private Integer illnessDeadAmount;
+
+    /**
+     * 病害数量
+     */
+    private Integer illnessDiseaseAmount;
+
+    /**
+     * 途亡数量
+     */
+    private Integer roadDealAmount;
+
+    /**
+     * 急宰数量
+     */
+    private Integer snapKillAmount;
+
+
+    private List<ProduceCheckVo> produceCheckVos;
+
+    private Date createTime;
+}

+ 47 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/OutPlaceVo.java

@@ -0,0 +1,47 @@
+package com.ruoyi.web.v2.v1.entity.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class OutPlaceVo {
+
+    private Integer num;
+
+    /*货主*/
+    private String cargoOwner;
+
+    /*动物检疫合格证*/
+    private String animalCert;
+
+    /*肉品合格证*/
+    private String meatCert;
+
+    private String createTime;
+
+    /*产品名称*/
+    private String produceName;
+
+    /*本县头数*/
+    private String amount;
+
+    /*本县重量*/
+    private String weight;
+
+    /*本市头数*/
+    private String amount2;
+
+    /*本市重量*/
+    private String weight2;
+
+    /*外省头数*/
+    private String amount3;
+
+    /*外省重量*/
+    private String weight3;
+
+    private String unit;
+
+}

+ 17 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/ProduceCheckVo.java

@@ -0,0 +1,17 @@
+package com.ruoyi.web.v2.v1.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class ProduceCheckVo {
+
+    private String produceName;
+
+    private String unqualifiedNum;
+
+    private Integer method;
+
+    private String unit;
+
+    private Integer types;
+}

+ 18 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/ProductionVo.java

@@ -0,0 +1,18 @@
+package com.ruoyi.web.v2.v1.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class ProductionVo {
+
+    /*产品名称*/
+    private String produceName;
+
+    /*数量*/
+    private Double amount;
+
+    /*重量*/
+    private String weight;
+
+    private String unit;
+}

+ 60 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/vo/SummaryVo.java

@@ -0,0 +1,60 @@
+package com.ruoyi.web.v2.v1.entity.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SummaryVo {
+
+    private Date createTime;
+
+    /*到场活猪头数*/
+    private Integer amount;
+
+    /*抽检头数*/
+    private Integer checkAmount;
+
+    /*合格头数*/
+    private Integer qualifiedAmount;
+
+    /*待宰头数*/
+    private Integer tuzaiAmount;
+
+    /*胴体头数*/
+    private Double dongAmount;
+
+    /*产品重量*/
+    private String weight;
+
+    /**途亡数量*/
+    private Integer roadDealAmount;
+
+    /*** 病死数*/
+    private Integer illnessDeadAmount;
+
+    /*** 病害数量*/
+    private Integer illnessDiseaseAmount;
+
+    /*** 急宰数量*/
+    private Integer snapKillAmount;
+
+    public SummaryVo(Date createTime, Integer amount, Integer checkAmount, Integer qualifiedAmount,
+                     Integer tuzaiAmount, Double dongAmount, String weight, Integer roadDealAmount,
+                     Integer illnessDeadAmount, Integer illnessDiseaseAmount, Integer snapKillAmount) {
+        this.createTime = createTime;
+        this.amount = amount;
+        this.checkAmount = checkAmount;
+        this.qualifiedAmount = qualifiedAmount;
+        this.tuzaiAmount = tuzaiAmount;
+        this.dongAmount = dongAmount;
+        this.weight = weight;
+        this.roadDealAmount = roadDealAmount;
+        this.illnessDeadAmount = illnessDeadAmount;
+        this.illnessDiseaseAmount = illnessDiseaseAmount;
+        this.snapKillAmount = snapKillAmount;
+    }
+    public SummaryVo() {
+    }
+
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/mapper/JsMaintenanceWarningMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.v2.v1.mapper;
+
+import com.ruoyi.web.v2.v1.entity.JsMaintenanceWarning;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * v2.0设备维护提示 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-19
+ */
+public interface JsMaintenanceWarningMapper extends BaseMapper<JsMaintenanceWarning> {
+
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/mapper/JsProduceCodeMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.v2.v1.mapper;
+
+import com.ruoyi.web.v2.v1.entity.JsProduceCode;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * v2.0分销与屠宰的肉品证对应表 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-10
+ */
+public interface JsProduceCodeMapper extends BaseMapper<JsProduceCode> {
+
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/mapper/JsProductionMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.v2.v1.mapper;
+
+import com.ruoyi.web.v2.v1.entity.JsProduction;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * v2.0生产清单 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-06
+ */
+public interface JsProductionMapper extends BaseMapper<JsProduction> {
+
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/mapper/JsReportMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.v2.v1.mapper;
+
+import com.ruoyi.web.v2.v1.entity.JsReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * v2.0完工报告 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-11
+ */
+public interface JsReportMapper extends BaseMapper<JsReport> {
+
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/mapper/JsTrainingMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.v2.v1.mapper;
+
+import com.ruoyi.web.v2.v1.entity.JsTraining;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * v2.0员工培训 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-19
+ */
+public interface JsTrainingMapper extends BaseMapper<JsTraining> {
+
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/IJsMaintenanceWarningService.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.v2.v1.service;
+
+import com.ruoyi.web.v2.v1.entity.JsMaintenanceWarning;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * v2.0设备维护提示 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-19
+ */
+public interface IJsMaintenanceWarningService extends IService<JsMaintenanceWarning> {
+
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/IJsProduceCodeService.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.v2.v1.service;
+
+import com.ruoyi.web.v2.v1.entity.JsProduceCode;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * v2.0分销与屠宰的肉品证对应表 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-10
+ */
+public interface IJsProduceCodeService extends IService<JsProduceCode> {
+
+}

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/IJsReportService.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.v2.v1.service;
+
+import com.ruoyi.web.v2.v1.entity.JsReport;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * v2.0完工报告 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-11
+ */
+public interface IJsReportService extends IService<JsReport> {
+
+}

+ 27 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/IJsTrainingService.java

@@ -0,0 +1,27 @@
+package com.ruoyi.web.v2.v1.service;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.v2.v1.entity.JsStore;
+import com.ruoyi.web.v2.v1.entity.JsTraining;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * v2.0员工培训 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-19
+ */
+public interface IJsTrainingService extends IService<JsTraining> {
+
+    AjaxResult add(JsTraining jsTraining);
+
+    AjaxResult edit(JsTraining jsTraining);
+
+    AjaxResult delete(String ids);
+
+    AjaxResult page(Integer pageNum, Integer pageSize, String startTime, String endTime);
+
+    AjaxResult listAll();
+}

+ 20 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsMaintenanceWarningServiceImpl.java

@@ -0,0 +1,20 @@
+package com.ruoyi.web.v2.v1.service.impl;
+
+import com.ruoyi.web.v2.v1.entity.JsMaintenanceWarning;
+import com.ruoyi.web.v2.v1.mapper.JsMaintenanceWarningMapper;
+import com.ruoyi.web.v2.v1.service.IJsMaintenanceWarningService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * v2.0设备维护提示 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-19
+ */
+@Service
+public class JsMaintenanceWarningServiceImpl extends ServiceImpl<JsMaintenanceWarningMapper, JsMaintenanceWarning> implements IJsMaintenanceWarningService {
+
+}

+ 20 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsProduceCodeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.ruoyi.web.v2.v1.service.impl;
+
+import com.ruoyi.web.v2.v1.entity.JsProduceCode;
+import com.ruoyi.web.v2.v1.mapper.JsProduceCodeMapper;
+import com.ruoyi.web.v2.v1.service.IJsProduceCodeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * v2.0分销与屠宰的肉品证对应表 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-10
+ */
+@Service
+public class JsProduceCodeServiceImpl extends ServiceImpl<JsProduceCodeMapper, JsProduceCode> implements IJsProduceCodeService {
+
+}

+ 20 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsReportServiceImpl.java

@@ -0,0 +1,20 @@
+package com.ruoyi.web.v2.v1.service.impl;
+
+import com.ruoyi.web.v2.v1.entity.JsReport;
+import com.ruoyi.web.v2.v1.mapper.JsReportMapper;
+import com.ruoyi.web.v2.v1.service.IJsReportService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * v2.0完工报告 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-11
+ */
+@Service
+public class JsReportServiceImpl extends ServiceImpl<JsReportMapper, JsReport> implements IJsReportService {
+
+}

+ 69 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsTrainingServiceImpl.java

@@ -0,0 +1,69 @@
+package com.ruoyi.web.v2.v1.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.v2.v1.entity.JsStore;
+import com.ruoyi.web.v2.v1.entity.JsTraining;
+import com.ruoyi.web.v2.v1.mapper.JsTrainingMapper;
+import com.ruoyi.web.v2.v1.service.IJsTrainingService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import static com.ruoyi.common.core.domain.AjaxResult.success;
+
+/**
+ * <p>
+ * v2.0员工培训 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-19
+ */
+@Service
+public class JsTrainingServiceImpl extends ServiceImpl<JsTrainingMapper, JsTraining> implements IJsTrainingService {
+
+    @Autowired
+    private JsTrainingMapper jsTrainingMapper;
+
+    @Override
+    public AjaxResult add(JsTraining jsTraining) {
+        jsTrainingMapper.insert(jsTraining);
+        return success();
+    }
+
+    @Override
+    public AjaxResult edit(JsTraining jsTraining) {
+        jsTrainingMapper.updateById(jsTraining);
+        return success();
+    }
+
+    @Override
+    public AjaxResult delete(String ids) {
+        String[] split = ids.split(",");
+        for (String s : split) {
+            jsTrainingMapper.deleteById(s);
+        }
+        return success();
+    }
+
+    @Override
+    public AjaxResult page(Integer pageNum, Integer pageSize, String startTime, String endTime) {
+        Page<JsTraining> page = new Page<>(pageNum, pageSize);
+        QueryWrapper<JsTraining> queryWrapper = new QueryWrapper<>();
+        if ("".equals(startTime) || null == startTime) {
+
+        } else {
+            queryWrapper.between("training_time", startTime, endTime);
+        }
+
+        queryWrapper.orderByDesc("training_time");
+        return success(jsTrainingMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public AjaxResult listAll() {
+        return null;
+    }
+}

+ 85 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/timer/WarningTimer.java

@@ -0,0 +1,85 @@
+package com.ruoyi.web.v2.v1.timer;
+
+
+import cn.hutool.core.util.ObjectUtil;
+
+import com.ruoyi.web.v2.v1.entity.JsCheckDevice;
+import com.ruoyi.web.v2.v1.entity.JsCheckInstrument;
+import com.ruoyi.web.v2.v1.entity.JsMaintenanceWarning;
+import com.ruoyi.web.v2.v1.mapper.JsCheckDeviceMapper;
+import com.ruoyi.web.v2.v1.mapper.JsCheckInstrumentMapper;
+import com.ruoyi.web.v2.v1.mapper.JsMaintenanceWarningMapper;
+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.sql.*;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+
+@Configuration
+@EnableScheduling
+public class WarningTimer {
+
+    @Autowired
+    private JsCheckDeviceMapper checkDeviceMapper;
+    @Autowired
+    private JsMaintenanceWarningMapper warningMapper;
+    @Autowired
+    private JsCheckInstrumentMapper instrumentMapper;
+
+    //
+    @Scheduled(cron = "0 0 0 * * ? ")
+    private void getShenChan() throws ParseException {
+        List<JsCheckDevice> jsCheckDevices = checkDeviceMapper.selectList(null);
+        if (jsCheckDevices.size() != 0) {
+            for (JsCheckDevice jsCheckDevice : jsCheckDevices) {
+                String investmentTime = jsCheckDevice.getInvestmentTime();
+                SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
+                Date date = ft.parse(investmentTime);
+                Date addDays = addDays(date, jsCheckDevice.getDays());
+                String format = ft.format(addDays);
+                Date now = new Date();
+                if (ft.format(now).equals(format)) {
+                    JsMaintenanceWarning warning = new JsMaintenanceWarning();
+                    warning.setMaintenanceTime(format);
+                    warning.setDeviceNum(jsCheckDevice.getDeviceNum());
+                    warning.setContent("设备"+jsCheckDevice.getDeviceNum()+"需要维护");
+                    warning.setIsHandle(0);
+                    warningMapper.insert(warning);
+                }
+            }
+        }
+
+        List<JsCheckInstrument> jsCheckInstruments = instrumentMapper.selectList(null);
+        if (jsCheckInstruments.size() != 0) {
+            for (JsCheckInstrument jsCheckDevice : jsCheckInstruments) {
+                String investmentTime = jsCheckDevice.getInvestmentTime();
+                SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
+                Date date = ft.parse(investmentTime);
+                Date addDays = addDays(date, jsCheckDevice.getDays());
+                String format = ft.format(addDays);
+                Date now = new Date();
+                if (ft.format(now).equals(format)) {
+                    JsMaintenanceWarning warning = new JsMaintenanceWarning();
+                    warning.setMaintenanceTime(format);
+                    warning.setDeviceNum(jsCheckDevice.getDeviceNum());
+                    warning.setContent("检验设备"+jsCheckDevice.getDeviceNum()+"需要维护");
+                    warning.setIsHandle(0);
+                    warningMapper.insert(warning);
+                }
+            }
+        }
+    }
+    public Date addDays(Date date, int days) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_YEAR, days);
+        return calendar.getTime();
+    }
+}

+ 53 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/utils/PaginationUtil.java

@@ -0,0 +1,53 @@
+package com.ruoyi.web.v2.v1.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PaginationUtil {
+    
+    public static <T> PageResult<T> paginate(List<T> list, int pageNumber, int pageSize) {
+        if (list == null || list.isEmpty()) {
+            return new PageResult<>(new ArrayList<>(), 0, 0);
+        }
+
+        int totalItems = list.size();
+        int totalPages = (int) Math.ceil((double) totalItems / pageSize);
+        
+        // 假设pageNumber从1开始
+        if (pageNumber < 1 || pageNumber > totalPages) {
+            return new PageResult<>(new ArrayList<>(), totalItems, totalPages);
+        }
+
+        int startIndex = (pageNumber - 1) * pageSize;
+        int endIndex = Math.min(startIndex + pageSize, totalItems);
+
+        List<T> pagedList = list.subList(startIndex, endIndex);
+        
+        return new PageResult<>(pagedList, totalItems, totalPages);
+    }
+
+    public static class PageResult<T> {
+        private List<T> data;
+        private int totalItems;
+        private int totalPages;
+
+        public PageResult(List<T> data, int totalItems, int totalPages) {
+            this.data = data;
+            this.totalItems = totalItems;
+            this.totalPages = totalPages;
+        }
+
+        public List<T> getData() {
+            return data;
+        }
+
+        public int getTotalItems() {
+            return totalItems;
+        }
+
+        public int getTotalPages() {
+            return totalPages;
+        }
+    }
+
+}

+ 25 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/utils/PhoneNumberValidator.java

@@ -0,0 +1,25 @@
+package com.ruoyi.web.v2.v1.utils;
+
+import java.util.regex.Pattern;
+
+public class PhoneNumberValidator {
+
+    public static boolean isValidPhoneNumber(String phoneNumber) {
+        // 正则表达式用于验证手机号
+        String pattern = "1[3456789]\\d{9}";
+
+        // 判断输入的手机号是否符合规则
+        return Pattern.matches(pattern, phoneNumber);
+    }
+
+    public static void main(String[] args) {
+        String phoneNumber = "手机号"; // 替换为要验证的手机号
+        boolean isValid = isValidPhoneNumber(phoneNumber);
+        if (isValid) {
+            System.out.println("手机号正确!");
+        } else {
+            System.out.println("手机号错误!");
+        }
+    }
+}
+

+ 5 - 0
app-admin/src/main/resources/mapper/JsMaintenanceWarningMapper.xml

@@ -0,0 +1,5 @@
+<?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.ruoyi.web.v2.v1.mapper.JsMaintenanceWarningMapper">
+
+</mapper>

+ 5 - 0
app-admin/src/main/resources/mapper/JsProduceCodeMapper.xml

@@ -0,0 +1,5 @@
+<?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.ruoyi.web.v2.v1.mapper.JsProduceCodeMapper">
+
+</mapper>

+ 5 - 0
app-admin/src/main/resources/mapper/JsReportMapper.xml

@@ -0,0 +1,5 @@
+<?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.ruoyi.web.v2.v1.mapper.JsReportMapper">
+
+</mapper>

+ 5 - 0
app-admin/src/main/resources/mapper/JsTrainingMapper.xml

@@ -0,0 +1,5 @@
+<?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.ruoyi.web.v2.v1.mapper.JsTrainingMapper">
+
+</mapper>

+ 22 - 0
app-system/src/main/java/com/ruoyi/app/DTO/AncimalDTO.java

@@ -0,0 +1,22 @@
+package com.ruoyi.app.DTO;
+
+public class AncimalDTO {
+    private String animalCert;
+    private String meatCert;
+
+    public String getAnimalCert() {
+        return animalCert;
+    }
+
+    public void setAnimalCert(String animalCert) {
+        this.animalCert = animalCert;
+    }
+
+    public String getMeatCert() {
+        return meatCert;
+    }
+
+    public void setMeatCert(String meatCert) {
+        this.meatCert = meatCert;
+    }
+}

+ 51 - 0
app-system/src/main/java/com/ruoyi/app/DTO/JsReportDto.java

@@ -0,0 +1,51 @@
+package com.ruoyi.app.DTO;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * v2.0完工报告
+ * </p>
+ *
+ * @author author
+ * @since 2025-06-11
+ */
+
+
+public class JsReportDto  {
+
+    private Integer id;
+
+    private Date createTime;
+
+    private String userName;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+}

+ 42 - 0
app-system/src/main/java/com/ruoyi/app/DTO/PigpenDTO.java

@@ -0,0 +1,42 @@
+package com.ruoyi.app.DTO;
+
+import com.ruoyi.common.annotation.Excel;
+
+public class PigpenDTO {
+
+    @Excel(name = " 待宰圈号")
+    private String pigpenName;
+
+    @Excel(name = "最大容量")
+    private Integer maxCapacity;
+
+    /** 二维码 */
+    @Excel(name = "二维码",cellType =  Excel.ColumnType.QRCODE)
+    private String qrcode;
+
+    public String getPigpenName() {
+        return pigpenName;
+    }
+
+    public void setPigpenName(String pigpenName) {
+        this.pigpenName = pigpenName;
+    }
+
+    public Integer getMaxCapacity() {
+        return maxCapacity;
+    }
+
+    public void setMaxCapacity(Integer maxCapacity) {
+        this.maxCapacity = maxCapacity;
+    }
+
+    public void setQrcode(String qrcode)
+    {
+        this.qrcode = qrcode;
+    }
+
+    public String getQrcode()
+    {
+        return qrcode;
+    }
+}

+ 50 - 0
app-system/src/main/java/com/ruoyi/app/DTO/ProductionVo.java

@@ -0,0 +1,50 @@
+package com.ruoyi.app.DTO;
+
+import lombok.Data;
+
+@Data
+public class ProductionVo {
+
+    /*产品名称*/
+    private String produceName;
+
+    /*数量*/
+    private Double amount;
+
+    public String getProduceName() {
+        return produceName;
+    }
+
+    public void setProduceName(String produceName) {
+        this.produceName = produceName;
+    }
+
+    public Double getAmount() {
+        return amount;
+    }
+
+    public void setAmount(Double amount) {
+        this.amount = amount;
+    }
+
+    public String getWeight() {
+        return weight;
+    }
+
+    public void setWeight(String weight) {
+        this.weight = weight;
+    }
+
+    /*重量*/
+    private String weight;
+
+    private String unit;
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+}

二進制
webUI.zip