wwh 1 год назад
Родитель
Сommit
4a06988e79
100 измененных файлов с 6118 добавлено и 0 удалено
  1. 6 0
      snowy-web-app/pom.xml
  2. 125 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/controller/InternalCarController.java
  3. 59 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/entity/InternalCar.java
  4. 34 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/enums/InternalCarEnum.java
  5. 26 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/mapper/InternalCarMapper.java
  6. 5 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/mapper/mapping/InternalCarMapper.xml
  7. 46 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/param/InternalCarAddParam.java
  8. 51 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/param/InternalCarEditParam.java
  9. 35 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/param/InternalCarIdParam.java
  10. 59 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/param/InternalCarPageParam.java
  11. 83 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/service/InternalCarService.java
  12. 123 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/service/impl/InternalCarServiceImpl.java
  13. 22 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/controller/EnergyElectricityController.java
  14. 20 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/controller/EnergyWaterController.java
  15. 67 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/entity/EnergyElectricity.java
  16. 67 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/entity/EnergyWater.java
  17. 16 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/mapper/EnergyElectricityMapper.java
  18. 16 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/mapper/EnergyWaterMapper.java
  19. 20 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/service/IEnergyElectricityService.java
  20. 16 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/service/IEnergyWaterService.java
  21. 41 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/service/impl/EnergyElectricityServiceImpl.java
  22. 20 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/service/impl/EnergyWaterServiceImpl.java
  23. 148 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/controller/PeopleListController.java
  24. 78 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/entity/PeopleList.java
  25. 34 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/enums/PeopleListEnum.java
  26. 26 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/mapper/PeopleListMapper.java
  27. 5 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/mapper/mapping/PeopleListMapper.xml
  28. 54 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/param/PeopleListAddParam.java
  29. 60 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/param/PeopleListEditParam.java
  30. 35 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/param/PeopleListIdParam.java
  31. 54 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/param/PeopleListPageParam.java
  32. 82 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/service/PeopleListService.java
  33. 131 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/service/impl/PeopleListServiceImpl.java
  34. 183 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/people/utils/UploadImage.java
  35. 132 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/controller/PigBreedController.java
  36. 108 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/entity/PigBreed.java
  37. 34 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/enums/PigBreedEnum.java
  38. 25 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/mapper/PigBreedMapper.java
  39. 5 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/mapper/mapping/PigBreedMapper.xml
  40. 94 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/param/PigBreedAddParam.java
  41. 99 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/param/PigBreedEditParam.java
  42. 35 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/param/PigBreedIdParam.java
  43. 63 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/param/PigBreedPageParam.java
  44. 80 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/service/PigBreedService.java
  45. 101 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/service/impl/PigBreedServiceImpl.java
  46. 131 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/controller/PigAblactationController.java
  47. 96 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/entity/PigAblactation.java
  48. 34 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/enums/PigAblactationEnum.java
  49. 25 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/mapper/PigAblactationMapper.java
  50. 5 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/mapper/mapping/PigAblactationMapper.xml
  51. 82 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/param/PigAblactationAddParam.java
  52. 87 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/param/PigAblactationEditParam.java
  53. 35 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/param/PigAblactationIdParam.java
  54. 63 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/param/PigAblactationPageParam.java
  55. 80 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/service/PigAblactationService.java
  56. 100 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/service/impl/PigAblactationServiceImpl.java
  57. 131 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/controller/PigBackfatController.java
  58. 92 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/entity/PigBackfat.java
  59. 34 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/enums/PigBackfatEnum.java
  60. 25 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/mapper/PigBackfatMapper.java
  61. 5 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/mapper/mapping/PigBackfatMapper.xml
  62. 78 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/param/PigBackfatAddParam.java
  63. 83 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/param/PigBackfatEditParam.java
  64. 35 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/param/PigBackfatIdParam.java
  65. 63 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/param/PigBackfatPageParam.java
  66. 80 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/service/PigBackfatService.java
  67. 100 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/service/impl/PigBackfatServiceImpl.java
  68. 126 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/controller/PigBatchController.java
  69. 73 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/entity/PigBatch.java
  70. 34 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/enums/PigBatchEnum.java
  71. 25 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/mapper/PigBatchMapper.java
  72. 5 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/mapper/mapping/PigBatchMapper.xml
  73. 54 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/param/PigBatchAddParam.java
  74. 59 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/param/PigBatchEditParam.java
  75. 36 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/param/PigBatchIdParam.java
  76. 55 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/param/PigBatchPageParam.java
  77. 81 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/service/PigBatchService.java
  78. 125 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/service/impl/PigBatchServiceImpl.java
  79. 131 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/controller/PigChildbirthController.java
  80. 96 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/entity/PigChildbirth.java
  81. 34 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/enums/PigChildbirthEnum.java
  82. 25 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/mapper/PigChildbirthMapper.java
  83. 5 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/mapper/mapping/PigChildbirthMapper.xml
  84. 82 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/param/PigChildbirthAddParam.java
  85. 87 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/param/PigChildbirthEditParam.java
  86. 35 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/param/PigChildbirthIdParam.java
  87. 63 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/param/PigChildbirthPageParam.java
  88. 80 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/service/PigChildbirthService.java
  89. 100 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/service/impl/PigChildbirthServiceImpl.java
  90. 132 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/controller/PigCureController.java
  91. 93 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/entity/PigCure.java
  92. 34 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/enums/PigCureEnum.java
  93. 25 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/mapper/PigCureMapper.java
  94. 5 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/mapper/mapping/PigCureMapper.xml
  95. 74 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/param/PigCureAddParam.java
  96. 79 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/param/PigCureEditParam.java
  97. 35 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/param/PigCureIdParam.java
  98. 63 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/param/PigCurePageParam.java
  99. 80 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/service/PigCureService.java
  100. 0 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/service/impl/PigCureServiceImpl.java

+ 6 - 0
snowy-web-app/pom.xml

@@ -118,6 +118,12 @@
             <groupId>vip.xiaonuo</groupId>
             <artifactId>snowy-plugin-sys</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.jcraft</groupId>
+            <artifactId>jsch</artifactId>
+            <version>0.1.54</version>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 125 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/controller/InternalCarController.java

@@ -0,0 +1,125 @@
+package vip.xiaonuo.modular.InternalCar.controller;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.modular.InternalCar.entity.InternalCar;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarAddParam;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarEditParam;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarIdParam;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarPageParam;
+import vip.xiaonuo.modular.InternalCar.service.InternalCarService;
+
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * internal_car控制器
+ *
+ * @author wang
+ * @date  2023/12/05 16:29
+ */
+@Api(tags = "internal_car控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class InternalCarController {
+
+    @Resource
+    private InternalCarService internalCarService;
+
+    /**
+     * 获取internal_car分页
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取internal_car分页")
+    @GetMapping("/biz/car/page")
+    public CommonResult<Page<InternalCar>> page(InternalCarPageParam internalCarPageParam) {
+        return CommonResult.data(internalCarService.page(internalCarPageParam));
+    }
+
+    /**
+     * 添加internal_car
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加internal_car")
+    @CommonLog("添加internal_car")
+    @PostMapping("/biz/car/add")
+    public CommonResult<String> add(@RequestBody @Valid InternalCarAddParam internalCarAddParam) {
+        return internalCarService.add(internalCarAddParam);
+    }
+
+    /**
+     * 编辑internal_car
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑internal_car")
+    @CommonLog("编辑internal_car")
+    @PostMapping("/biz/car/edit")
+    public CommonResult<String> edit(@RequestBody @Valid InternalCarEditParam internalCarEditParam) {
+        return internalCarService.edit(internalCarEditParam);
+    }
+
+    /**
+     * 删除internal_car
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除internal_car")
+    @CommonLog("删除internal_car")
+    @PostMapping("/biz/car/delete")
+    public CommonResult<String> delete(@RequestBody  @NotEmpty(message = "集合不能为空")
+                                                   CommonValidList<InternalCarIdParam> internalCarIdParamList) {
+        internalCarService.delete(internalCarIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取internal_car详情
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取internal_car详情")
+    @GetMapping("/biz/car/detail")
+    public CommonResult<InternalCar> detail(@Valid InternalCarIdParam internalCarIdParam) {
+        return CommonResult.data(internalCarService.detail(internalCarIdParam));
+    }
+}

+ 59 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/entity/InternalCar.java

@@ -0,0 +1,59 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.InternalCar.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * internal_car实体
+ *
+ * @author wang
+ * @date  2023/12/05 16:29
+ **/
+@Getter
+@Setter
+@TableName("internal_car")
+public class InternalCar {
+
+    /** ID */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "ID", position = 1)
+    private Integer id;
+
+    /** 车牌号码 */
+    @ApiModelProperty(value = "车牌号码", position = 2)
+    private String carNum;
+
+    /** 用途 */
+    @ApiModelProperty(value = "用途", position = 3)
+    private String userWay;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 4)
+    private String orgId;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 5)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 创建人 */
+    @ApiModelProperty(value = "创建人", position = 6)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+}

+ 34 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/enums/InternalCarEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.InternalCar.enums;
+
+import lombok.Getter;
+
+/**
+ * internal_car枚举
+ *
+ * @author wang
+ * @date  2023/12/05 16:29
+ **/
+@Getter
+public enum InternalCarEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    InternalCarEnum(String value) {
+        this.value = value;
+    }
+}

+ 26 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/mapper/InternalCarMapper.java

@@ -0,0 +1,26 @@
+package vip.xiaonuo.modular.InternalCar.mapper;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.modular.InternalCar.entity.InternalCar;
+
+
+/**
+ * internal_carMapper接口
+ *
+ * @author wang
+ * @date  2023/12/05 16:29
+ **/
+public interface InternalCarMapper extends BaseMapper<InternalCar> {
+}

+ 5 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/mapper/mapping/InternalCarMapper.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="vip.xiaonuo.modular.InternalCar.mapper.InternalCarMapper">
+
+</mapper>

+ 46 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/param/InternalCarAddParam.java

@@ -0,0 +1,46 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.InternalCar.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * internal_car添加参数
+ *
+ * @author wang
+ * @date  2023/12/05 16:29
+ **/
+@Getter
+@Setter
+public class InternalCarAddParam {
+
+    /** 车牌号码 */
+    @ApiModelProperty(value = "车牌号码", position = 2)
+    private String carNum;
+
+    /** 用途 */
+    @ApiModelProperty(value = "用途", position = 3)
+    private String userWay;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 4)
+    private String orgId;
+
+}

+ 51 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/param/InternalCarEditParam.java

@@ -0,0 +1,51 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.InternalCar.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * internal_car编辑参数
+ *
+ * @author wang
+ * @date  2023/12/05 16:29
+ **/
+@Getter
+@Setter
+public class InternalCarEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    /** 车牌号码 */
+    @ApiModelProperty(value = "车牌号码", position = 2)
+    private String carNum;
+
+    /** 用途 */
+    @ApiModelProperty(value = "用途", position = 3)
+    private String userWay;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 4)
+    private String orgId;
+
+}

+ 35 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/param/InternalCarIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.InternalCar.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * internal_carId参数
+ *
+ * @author wang
+ * @date  2023/12/05 16:29
+ **/
+@Getter
+@Setter
+public class InternalCarIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private Integer id;
+}

+ 59 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/param/InternalCarPageParam.java

@@ -0,0 +1,59 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.InternalCar.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * internal_car查询参数
+ *
+ * @author wang
+ * @date  2023/12/05 16:29
+ **/
+@Getter
+@Setter
+public class InternalCarPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+    /** 车牌号码 */
+    @ApiModelProperty(value = "车牌号码")
+    private String carNum;
+
+    /** 用途 */
+    @ApiModelProperty(value = "用途")
+    private String userWay;
+
+}

+ 83 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/service/InternalCarService.java

@@ -0,0 +1,83 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.InternalCar.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.modular.InternalCar.entity.InternalCar;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarAddParam;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarEditParam;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarIdParam;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarPageParam;
+
+import java.util.List;
+
+/**
+ * internal_carService接口
+ *
+ * @author wang
+ * @date  2023/12/05 16:29
+ **/
+public interface InternalCarService extends IService<InternalCar> {
+
+    /**
+     * 获取internal_car分页
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     */
+    Page<InternalCar> page(InternalCarPageParam internalCarPageParam);
+
+    /**
+     * 添加internal_car
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     */
+    CommonResult add(InternalCarAddParam internalCarAddParam);
+
+    /**
+     * 编辑internal_car
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     */
+    CommonResult edit(InternalCarEditParam internalCarEditParam);
+
+    /**
+     * 删除internal_car
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     */
+    void delete(List<InternalCarIdParam> internalCarIdParamList);
+
+    /**
+     * 获取internal_car详情
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     */
+    InternalCar detail(InternalCarIdParam internalCarIdParam);
+
+    /**
+     * 获取internal_car详情
+     *
+     * @author wang
+     * @date  2023/12/05 16:29
+     **/
+    InternalCar queryEntity(Integer id);
+}

+ 123 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/InternalCar/service/impl/InternalCarServiceImpl.java

@@ -0,0 +1,123 @@
+package vip.xiaonuo.modular.InternalCar.service.impl;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.swagger.models.auth.In;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+
+
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.modular.InternalCar.entity.InternalCar;
+import vip.xiaonuo.modular.InternalCar.mapper.InternalCarMapper;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarAddParam;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarEditParam;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarIdParam;
+import vip.xiaonuo.modular.InternalCar.param.InternalCarPageParam;
+import vip.xiaonuo.modular.InternalCar.service.InternalCarService;
+
+import java.util.List;
+
+/**
+ * internal_carService接口实现类
+ *
+ * @author wang
+ * @date  2023/12/05 16:29
+ **/
+@Service
+public class InternalCarServiceImpl extends ServiceImpl<InternalCarMapper, InternalCar> implements InternalCarService {
+    @Autowired
+    private InternalCarMapper carMapper;
+
+    @Override
+    public Page<InternalCar> page(InternalCarPageParam internalCarPageParam) {
+        QueryWrapper<InternalCar> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isNotEmpty(internalCarPageParam.getCarNum())) {
+            queryWrapper.lambda().like(InternalCar::getCarNum, internalCarPageParam.getCarNum());
+        }
+        if(ObjectUtil.isNotEmpty(internalCarPageParam.getUserWay())) {
+            queryWrapper.lambda().like(InternalCar::getUserWay, internalCarPageParam.getUserWay());
+        }
+        if(ObjectUtil.isAllNotEmpty(internalCarPageParam.getSortField(), internalCarPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(internalCarPageParam.getSortOrder());
+            queryWrapper.orderBy(true, internalCarPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(internalCarPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(InternalCar::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public CommonResult add(InternalCarAddParam internalCarAddParam) {
+        QueryWrapper<InternalCar> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("org_id", internalCarAddParam.getOrgId()).eq("car_num", internalCarAddParam.getCarNum());
+        if (ObjectUtil.isEmpty(carMapper.selectOne(queryWrapper))) {
+            InternalCar internalCar = BeanUtil.toBean(internalCarAddParam, InternalCar.class);
+            this.save(internalCar);
+            return CommonResult.ok();
+        } else {
+            return new CommonResult(500, "车牌号已存在!", false);
+        }
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public CommonResult edit(InternalCarEditParam internalCarEditParam) {
+        InternalCar internalCar = this.queryEntity(internalCarEditParam.getId());
+        QueryWrapper<InternalCar> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("org_id", internalCarEditParam.getOrgId())
+                .eq(StringUtils.isNotBlank(internalCarEditParam.getCarNum()), "car_num", internalCarEditParam.getCarNum());
+        if (ObjectUtil.isEmpty(carMapper.selectOne(queryWrapper))) {
+            BeanUtil.copyProperties(internalCarEditParam, internalCar);
+            this.updateById(internalCar);
+            return CommonResult.ok();
+        } else {
+            return new CommonResult(500, "修改的车牌号已存在!", false);
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<InternalCarIdParam> internalCarIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(internalCarIdParamList, InternalCarIdParam::getId));
+    }
+
+    @Override
+    public InternalCar detail(InternalCarIdParam internalCarIdParam) {
+        return this.queryEntity(internalCarIdParam.getId());
+    }
+
+    @Override
+    public InternalCar queryEntity(Integer id) {
+        InternalCar internalCar = this.getById(id);
+        if(ObjectUtil.isEmpty(internalCar)) {
+            throw new CommonException("internal_car不存在,id值为:{}", id);
+        }
+        return internalCar;
+    }
+}

+ 22 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/controller/EnergyElectricityController.java

@@ -0,0 +1,22 @@
+package vip.xiaonuo.modular.energy.controller;
+
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 能耗电表 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-12-06
+ */
+@RestController
+@RequestMapping("/energy-electricity")
+@CrossOrigin
+public class EnergyElectricityController {
+
+}

+ 20 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/controller/EnergyWaterController.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.modular.energy.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 能耗水表 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-12-06
+ */
+@RestController
+@RequestMapping("/energy-water")
+public class EnergyWaterController {
+
+}

+ 67 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/entity/EnergyElectricity.java

@@ -0,0 +1,67 @@
+package vip.xiaonuo.modular.energy.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 能耗电表
+ * </p>
+ *
+ * @author author
+ * @since 2023-12-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("energy_electricity")
+public class EnergyElectricity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 用水量
+     */
+    private String electricityValue;
+
+    /**
+     * 原始水量
+     */
+    private String originalValue;
+
+    /**
+     * 上传时间
+     */
+    private LocalDateTime originalDate;
+
+    /**
+     * 单元id
+     */
+    private Integer unitId;
+
+    /**
+     * 单元名称
+     */
+    private String unitName;
+
+    /**
+     * 组织id
+     */
+    private String orgId;
+
+    /**
+     * 设备编码
+     */
+    private String deviceCode;
+
+
+}

+ 67 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/entity/EnergyWater.java

@@ -0,0 +1,67 @@
+package vip.xiaonuo.modular.energy.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 能耗水表
+ * </p>
+ *
+ * @author author
+ * @since 2023-12-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("energy_water")
+public class EnergyWater implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 用水量
+     */
+    private String waterValue;
+
+    /**
+     * 原始水量
+     */
+    private String originalValue;
+
+    /**
+     * 上传时间
+     */
+    private LocalDateTime originalDate;
+
+    /**
+     * 单元id
+     */
+    private Integer unitId;
+
+    /**
+     * 单元名称
+     */
+    private String unitName;
+
+    /**
+     * 组织id
+     */
+    private String orgId;
+
+    /**
+     * 设备编码
+     */
+    private String deviceCode;
+
+
+}

+ 16 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/mapper/EnergyElectricityMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.modular.energy.mapper;
+
+import vip.xiaonuo.modular.energy.entity.EnergyElectricity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 能耗电表 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-12-06
+ */
+public interface EnergyElectricityMapper extends BaseMapper<EnergyElectricity> {
+
+}

+ 16 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/mapper/EnergyWaterMapper.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.modular.energy.mapper;
+
+import vip.xiaonuo.modular.energy.entity.EnergyWater;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 能耗水表 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-12-06
+ */
+public interface EnergyWaterMapper extends BaseMapper<EnergyWater> {
+
+}

+ 20 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/service/IEnergyElectricityService.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.modular.energy.service;
+
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.modular.energy.entity.EnergyElectricity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 能耗电表 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-12-06
+ */
+public interface IEnergyElectricityService extends IService<EnergyElectricity> {
+
+    CommonResult listElectricity(Map<String, String> paramsMap);
+}

+ 16 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/service/IEnergyWaterService.java

@@ -0,0 +1,16 @@
+package vip.xiaonuo.modular.energy.service;
+
+import vip.xiaonuo.modular.energy.entity.EnergyWater;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 能耗水表 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-12-06
+ */
+public interface IEnergyWaterService extends IService<EnergyWater> {
+
+}

+ 41 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/service/impl/EnergyElectricityServiceImpl.java

@@ -0,0 +1,41 @@
+package vip.xiaonuo.modular.energy.service.impl;
+
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.modular.energy.entity.EnergyElectricity;
+import vip.xiaonuo.modular.energy.mapper.EnergyElectricityMapper;
+import vip.xiaonuo.modular.energy.service.IEnergyElectricityService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 能耗电表 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-12-06
+ */
+@Service
+public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityMapper, EnergyElectricity> implements IEnergyElectricityService {
+
+    @Autowired
+    private EnergyElectricityMapper electricityMapper;
+
+    @Override
+    public CommonResult listElectricity(Map<String, String> paramsMap) {
+        String orgId = paramsMap.get("orgId");
+        String type = paramsMap.get("type");
+
+        if ("".equals(type) || null == type) {
+            type = "1";
+        }
+        if ("1".equals(type)) {
+
+        }
+        return null;
+    }
+}

+ 20 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/service/impl/EnergyWaterServiceImpl.java

@@ -0,0 +1,20 @@
+package vip.xiaonuo.modular.energy.service.impl;
+
+import vip.xiaonuo.modular.energy.entity.EnergyWater;
+import vip.xiaonuo.modular.energy.mapper.EnergyWaterMapper;
+import vip.xiaonuo.modular.energy.service.IEnergyWaterService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 能耗水表 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-12-06
+ */
+@Service
+public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, EnergyWater> implements IEnergyWaterService {
+
+}

+ 148 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/controller/PeopleListController.java

@@ -0,0 +1,148 @@
+package vip.xiaonuo.modular.people.controller;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.modular.people.entity.PeopleList;
+import vip.xiaonuo.modular.people.param.PeopleListAddParam;
+import vip.xiaonuo.modular.people.param.PeopleListEditParam;
+import vip.xiaonuo.modular.people.param.PeopleListIdParam;
+import vip.xiaonuo.modular.people.param.PeopleListPageParam;
+import vip.xiaonuo.modular.people.service.PeopleListService;
+import vip.xiaonuo.modular.people.utils.UploadImage;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.io.IOException;
+
+/**
+ * people_list控制器
+ *
+ * @author wang
+ * @date  2023/12/04 16:16
+ */
+@Api(tags = "people_list控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class PeopleListController {
+
+    @Resource
+    private PeopleListService peopleListService;
+    @Resource
+    private UploadImage uploadImage;
+
+
+    /**
+     * 获取people_list分页
+     *
+     * @author wang
+     * @date  2023/12/04 16:16
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取people_list分页")
+    @GetMapping("/biz/nongke/page")
+    public CommonResult<Page<PeopleList>> page(PeopleListPageParam peopleListPageParam) {
+        return CommonResult.data(peopleListService.page(peopleListPageParam));
+    }
+
+    /**
+     * 添加people_list
+     *
+     * @author wang
+     * @date 2023/12/04 16:16
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加people_list")
+    @CommonLog("添加people_list")
+    @PostMapping("/biz/nongke/add")
+    public CommonResult<String> add(@RequestParam(name = "userName") String userName,
+                                    @RequestParam(name = "nickName") String nickName,
+                                    @RequestParam(name = "sex") Integer sex,
+                                    @RequestParam(name = "phone") String phone,
+                                    @RequestParam(name = "img") MultipartFile img,
+                                    @RequestParam(name = "manageArea") String manageArea,
+                                    @RequestParam(name = "orgId") String orgId) throws IOException {
+        PeopleListAddParam peopleListAddParam = new PeopleListAddParam();
+        String imageCom = "";
+        if (ObjectUtil.isNotEmpty(img)) {
+            if (uploadImage.getImageCom(img).equals("上传失败")) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return new CommonResult(500, "图片上传失败", false);
+            }
+            imageCom = uploadImage.getImageCom(img);
+            peopleListAddParam.setImg(imageCom);
+        }
+        peopleListAddParam.setUserName(userName);
+        peopleListAddParam.setManageArea(manageArea);
+        peopleListAddParam.setSex(sex);
+        peopleListAddParam.setPhone(phone);
+        peopleListAddParam.setNickName(nickName);
+        peopleListAddParam.setOrgId(orgId);
+        return peopleListService.add(peopleListAddParam);
+    }
+
+    /**
+     * 编辑people_list
+     *
+     * @author wang
+     * @date  2023/12/04 16:16
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑people_list")
+    @CommonLog("编辑people_list")
+    @PostMapping("/biz/nongke/edit")
+    public CommonResult<String> edit(@RequestBody @Valid PeopleListEditParam peopleListEditParam) {
+        return peopleListService.edit(peopleListEditParam);
+    }
+
+    /**
+     * 删除people_list
+     *
+     * @author wang
+     * @date  2023/12/04 16:16
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除people_list")
+    @CommonLog("删除people_list")
+    @PostMapping("/biz/nongke/delete")
+    public CommonResult<String> delete(@RequestBody @NotEmpty(message = "集合不能为空")
+                                               CommonValidList<PeopleListIdParam> peopleListIdParamList) {
+        peopleListService.delete(peopleListIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取people_list详情
+     *
+     * @author wang
+     * @date  2023/12/04 16:16
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取people_list详情")
+    @GetMapping("/biz/nongke/detail")
+    public CommonResult<PeopleList> detail(@Valid PeopleListIdParam peopleListIdParam) {
+        return CommonResult.data(peopleListService.detail(peopleListIdParam));
+    }
+}

+ 78 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/entity/PeopleList.java

@@ -0,0 +1,78 @@
+package vip.xiaonuo.modular.people.entity;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * people_list实体
+ *
+ * @author wang
+ * @date  2023/12/04 16:16
+ **/
+@Getter
+@Setter
+@TableName("people_list")
+public class PeopleList {
+
+    /**
+     * ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "ID", position = 1)
+    private Integer id;
+
+    /** 登录账户 */
+    @ApiModelProperty(value = "姓名", position = 2)
+    private String userName;
+
+    /**  显示名称 */
+    @ApiModelProperty(value = " 工号", position = 3)
+    private String nickName;
+
+
+    /** 登录密码 */
+    @ApiModelProperty(value = "性别", position = 4)
+    private Integer sex;
+    /** 创建人 */
+    @ApiModelProperty(value = "创建人", position = 5)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 手机号 */
+    @ApiModelProperty(value = "手机号", position = 6)
+    private String phone;
+
+    /** 头像 */
+    @ApiModelProperty(value = "头像", position = 7)
+    private String img;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 8)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 负责区域 */
+    @ApiModelProperty(value = "负责区域", position = 9)
+    private String manageArea;
+
+
+    private String orgId;
+
+
+}

+ 34 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/enums/PeopleListEnum.java

@@ -0,0 +1,34 @@
+package vip.xiaonuo.modular.people.enums;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+
+import lombok.Getter;
+
+/**
+ * people_list枚举
+ *
+ * @author wang
+ * @date  2023/12/04 16:16
+ **/
+@Getter
+public enum PeopleListEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    PeopleListEnum(String value) {
+        this.value = value;
+    }
+}

+ 26 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/mapper/PeopleListMapper.java

@@ -0,0 +1,26 @@
+package vip.xiaonuo.modular.people.mapper;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.modular.people.entity.PeopleList;
+
+
+/**
+ * people_listMapper接口
+ *
+ * @author wang
+ * @date  2023/12/04 16:16
+ **/
+public interface PeopleListMapper extends BaseMapper<PeopleList> {
+}

+ 5 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/mapper/mapping/PeopleListMapper.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="vip.xiaonuo.modular.people.mapper.PeopleListMapper">
+
+</mapper>

+ 54 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/param/PeopleListAddParam.java

@@ -0,0 +1,54 @@
+package vip.xiaonuo.modular.people.param;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * people_list添加参数
+ *
+ * @author wang
+ * @date  2023/12/04 16:16
+ **/
+@Getter
+@Setter
+public class PeopleListAddParam {
+
+    /** 登录账户 */
+    @ApiModelProperty(value = "姓名", position = 2)
+    private String userName;
+
+    /**  显示名称 */
+    @ApiModelProperty(value = " 工号", position = 3)
+    private String nickName;
+
+    /** 登录密码 */
+    @ApiModelProperty(value = "性别", position = 4)
+    private Integer sex;
+
+    /** 手机号 */
+    @ApiModelProperty(value = "手机号", position = 6)
+    private String phone;
+
+    /** 头像 */
+    @ApiModelProperty(value = "头像", position = 7)
+    private String img;
+
+    /** 负责区域 */
+    @ApiModelProperty(value = "负责区域", position = 9)
+    private String manageArea;
+
+    private String orgId;
+}

+ 60 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/param/PeopleListEditParam.java

@@ -0,0 +1,60 @@
+package vip.xiaonuo.modular.people.param;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * people_list编辑参数
+ *
+ * @author wang
+ * @date  2023/12/04 16:16
+ **/
+@Getter
+@Setter
+public class PeopleListEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    /** 登录账户 */
+    @ApiModelProperty(value = "姓名", position = 2)
+    private String userName;
+
+    /**  显示名称 */
+    @ApiModelProperty(value = " 工号", position = 3)
+    private String nickName;
+
+    /** 登录密码 */
+    @ApiModelProperty(value = "性别", position = 4)
+    private Integer sex;
+
+    /** 手机号 */
+    @ApiModelProperty(value = "手机号", position = 6)
+    private String phone;
+
+//    /** 头像 */
+//    @ApiModelProperty(value = "头像", position = 7)
+//    private String img;
+
+    /** 负责区域 */
+    @ApiModelProperty(value = "负责区域", position = 9)
+    private String manageArea;
+
+}

+ 35 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/param/PeopleListIdParam.java

@@ -0,0 +1,35 @@
+package vip.xiaonuo.modular.people.param;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * people_listId参数
+ *
+ * @author wang
+ * @date  2023/12/04 16:16
+ **/
+@Getter
+@Setter
+public class PeopleListIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private Integer id;
+}

+ 54 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/param/PeopleListPageParam.java

@@ -0,0 +1,54 @@
+package vip.xiaonuo.modular.people.param;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * people_list查询参数
+ *
+ * @author wang
+ * @date  2023/12/04 16:16
+ **/
+@Getter
+@Setter
+public class PeopleListPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+    /** 登录账户 */
+    @ApiModelProperty(value = "登录账户")
+    private String userName;
+
+
+}

+ 82 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/service/PeopleListService.java

@@ -0,0 +1,82 @@
+package vip.xiaonuo.modular.people.service;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.modular.people.entity.PeopleList;
+import vip.xiaonuo.modular.people.param.PeopleListAddParam;
+import vip.xiaonuo.modular.people.param.PeopleListEditParam;
+import vip.xiaonuo.modular.people.param.PeopleListIdParam;
+import vip.xiaonuo.modular.people.param.PeopleListPageParam;
+
+
+import java.util.List;
+
+/**
+ * people_listService接口
+ *
+ * @author wang
+ * @date  2023/12/04 16:16
+ **/
+public interface PeopleListService extends IService<PeopleList> {
+
+    /**
+     * 获取people_list分页
+     *
+     * @author wang
+     * @date  2023/12/04 16:16
+     */
+    Page<PeopleList> page(PeopleListPageParam peopleListPageParam);
+
+    /**
+     * 添加people_list
+     *
+     * @author wang
+     * @date  2023/12/04 16:16
+     */
+    CommonResult add(PeopleListAddParam peopleListAddParam);
+
+    /**
+     * 编辑people_list
+     *
+     * @author wang
+     * @date  2023/12/04 16:16
+     */
+    CommonResult edit(PeopleListEditParam peopleListEditParam);
+
+    /**
+     * 删除people_list
+     *
+     * @author wang
+     * @date  2023/12/04 16:16
+     */
+    void delete(List<PeopleListIdParam> peopleListIdParamList);
+
+    /**
+     * 获取people_list详情
+     *
+     * @author wang
+     * @date  2023/12/04 16:16
+     */
+    PeopleList detail(PeopleListIdParam peopleListIdParam);
+
+    /**
+     * 获取people_list详情
+     *
+     * @author wang
+     * @date  2023/12/04 16:16
+     **/
+    PeopleList queryEntity(Integer id);
+}

+ 131 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/service/impl/PeopleListServiceImpl.java

@@ -0,0 +1,131 @@
+package vip.xiaonuo.modular.people.service.impl;/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.modular.people.entity.PeopleList;
+import vip.xiaonuo.modular.people.mapper.PeopleListMapper;
+import vip.xiaonuo.modular.people.param.PeopleListAddParam;
+import vip.xiaonuo.modular.people.param.PeopleListEditParam;
+import vip.xiaonuo.modular.people.param.PeopleListIdParam;
+import vip.xiaonuo.modular.people.param.PeopleListPageParam;
+import vip.xiaonuo.modular.people.service.PeopleListService;
+
+import java.util.List;
+
+/**
+ * people_listService接口实现类
+ *
+ * @author wang
+ * @date 2023/12/04 16:16
+ **/
+@Service
+public class PeopleListServiceImpl extends ServiceImpl<PeopleListMapper, PeopleList> implements PeopleListService {
+
+    @Autowired
+    private PeopleListMapper peopleListMapper;
+
+    @Override
+    public Page<PeopleList> page(PeopleListPageParam peopleListPageParam) {
+        QueryWrapper<PeopleList> queryWrapper = new QueryWrapper<>();
+        if (ObjectUtil.isNotEmpty(peopleListPageParam.getUserName())) {
+            queryWrapper.lambda().eq(PeopleList::getUserName, peopleListPageParam.getUserName());
+        }
+        if (ObjectUtil.isAllNotEmpty(peopleListPageParam.getSortField(), peopleListPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(peopleListPageParam.getSortOrder());
+            queryWrapper.orderBy(true, peopleListPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(peopleListPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(PeopleList::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public CommonResult add(PeopleListAddParam peopleListAddParam) {
+        QueryWrapper<PeopleList> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_name", peopleListAddParam.getUserName()).or()
+                .eq("nick_name", peopleListAddParam.getNickName()).and(i -> i.eq("org_id", peopleListAddParam.getOrgId()));
+        PeopleList one = peopleListMapper.selectOne(queryWrapper);
+        if (ObjectUtil.isEmpty(one)) {
+            PeopleList peopleList = BeanUtil.toBean(peopleListAddParam, PeopleList.class);
+            this.save(peopleList);
+            return CommonResult.ok();
+        } else {
+            return new CommonResult(500, "姓名或工号已存在!", false);
+        }
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public CommonResult edit(PeopleListEditParam peopleListEditParam) {
+        PeopleList peopleList = this.queryEntity(peopleListEditParam.getId());
+        if (ObjectUtil.isNotEmpty(peopleListEditParam.getUserName()) || ObjectUtil.isNotEmpty(peopleListEditParam.getNickName())) {
+            QueryWrapper<PeopleList> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq(StringUtils.isNotBlank(peopleListEditParam.getUserName()), "user_name", peopleListEditParam.getUserName())
+                    .or().eq(StringUtils.isNotBlank(peopleListEditParam.getNickName()), "nick_name", peopleListEditParam.getNickName())
+                    .and(i -> i.eq("org_id", peopleList.getOrgId()));
+
+            if (ObjectUtil.isEmpty(peopleListMapper.selectOne(queryWrapper))) {
+                BeanUtil.copyProperties(peopleListEditParam, peopleList);
+                this.updateById(peopleList);
+                return CommonResult.ok();
+            } else {
+                return new CommonResult(500, "修改的姓名或工号已存在!", false);
+            }
+        } else {
+            BeanUtil.copyProperties(peopleListEditParam, peopleList);
+            this.updateById(peopleList);
+            return CommonResult.ok();
+        }
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<PeopleListIdParam> peopleListIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(peopleListIdParamList, PeopleListIdParam::getId));
+    }
+
+    @Override
+    public PeopleList detail(PeopleListIdParam peopleListIdParam) {
+        return this.queryEntity(peopleListIdParam.getId());
+    }
+
+    @Override
+    public PeopleList queryEntity(Integer id) {
+        PeopleList peopleList = this.getById(id);
+        if (ObjectUtil.isEmpty(peopleList)) {
+            throw new CommonException("people_list不存在,id值为:{}", id);
+        }
+        return peopleList;
+    }
+}

+ 183 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/people/utils/UploadImage.java

@@ -0,0 +1,183 @@
+package vip.xiaonuo.modular.people.utils;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.UUID;
+import com.jcraft.jsch.*;
+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="119.3.44.183" ;
+//    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 "上传失败";
+        }
+    }
+
+}
+
+
+

+ 132 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/controller/PigBreedController.java

@@ -0,0 +1,132 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigBreed.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.modular.pigBreed.entity.PigBreed;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedAddParam;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedEditParam;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedIdParam;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedPageParam;
+import vip.xiaonuo.modular.pigBreed.service.PigBreedService;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * 配种信息控制器
+ *
+ * @author wang
+ * @date  2023/12/06 15:27
+ */
+@Api(tags = "配种信息控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class PigBreedController {
+
+    @Resource
+    private PigBreedService pigBreedService;
+
+    /**
+     * 获取配种信息分页
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取配种信息分页")
+    @SaCheckPermission("/xiaonuo/pigBreed/page")
+    @GetMapping("/xiaonuo/pigBreed/page")
+    public CommonResult<Page<PigBreed>> page(PigBreedPageParam pigBreedPageParam) {
+        return CommonResult.data(pigBreedService.page(pigBreedPageParam));
+    }
+
+    /**
+     * 添加配种信息
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加配种信息")
+    @CommonLog("添加配种信息")
+    @SaCheckPermission("/xiaonuo/pigBreed/add")
+    @PostMapping("/xiaonuo/pigBreed/add")
+    public CommonResult<String> add(@RequestBody @Valid PigBreedAddParam pigBreedAddParam) {
+        pigBreedService.add(pigBreedAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑配种信息
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑配种信息")
+    @CommonLog("编辑配种信息")
+    @SaCheckPermission("/xiaonuo/pigBreed/edit")
+    @PostMapping("/xiaonuo/pigBreed/edit")
+    public CommonResult<String> edit(@RequestBody @Valid PigBreedEditParam pigBreedEditParam) {
+        pigBreedService.edit(pigBreedEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除配种信息
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除配种信息")
+    @CommonLog("删除配种信息")
+    @SaCheckPermission("/xiaonuo/pigBreed/delete")
+    @PostMapping("/xiaonuo/pigBreed/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                               CommonValidList<PigBreedIdParam> pigBreedIdParamList) {
+        pigBreedService.delete(pigBreedIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取配种信息详情
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取配种信息详情")
+    @SaCheckPermission("/xiaonuo/pigBreed/detail")
+    @GetMapping("/xiaonuo/pigBreed/detail")
+    public CommonResult<PigBreed> detail(@Valid PigBreedIdParam pigBreedIdParam) {
+        return CommonResult.data(pigBreedService.detail(pigBreedIdParam));
+    }
+}

+ 108 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/entity/PigBreed.java

@@ -0,0 +1,108 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigBreed.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 配种信息实体
+ *
+ * @author wang
+ * @date  2023/12/06 15:27
+ **/
+@Getter
+@Setter
+@TableName("pig_breed")
+public class PigBreed {
+
+    /** ID */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "ID", position = 1)
+    private Integer id;
+
+    /** 母猪耳标号 */
+    @ApiModelProperty(value = "母猪耳标号", position = 2)
+    private String femaleCode;
+
+    /** 品种 */
+    @ApiModelProperty(value = "品种", position = 3)
+    private Integer femaleBreed;
+
+    /** 品系 */
+    @ApiModelProperty(value = "品系", position = 4)
+    private Integer femaleStrain;
+
+    /** 母猪当前位置  */
+    @ApiModelProperty(value = "母猪当前位置 ", position = 5)
+    private String femaleUnitId;
+
+    /** 公猪耳标号 */
+    @ApiModelProperty(value = "公猪耳标号", position = 6)
+    private String maleCode;
+
+    /** 公猪品种 */
+    @ApiModelProperty(value = "公猪品种", position = 7)
+    private Integer maleBreed;
+
+    /** 公猪品系 */
+    @ApiModelProperty(value = "公猪品系", position = 8)
+    private Integer maleStrain;
+
+    /** 公猪当前位置 */
+    @ApiModelProperty(value = "公猪当前位置", position = 9)
+    private String maleUnitId;
+
+    /** 配种日期 */
+    @ApiModelProperty(value = "配种日期", position = 10)
+    private Date breedDate;
+
+    /** 配种方式 */
+    @ApiModelProperty(value = "配种方式", position = 11)
+    private String breedType;
+
+    /** 预产期=配种日期+114天 */
+    @ApiModelProperty(value = "预产期=配种日期+114天", position = 12)
+    private Integer dayNum;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 13)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 14)
+    private Date createDate;
+
+    /** 创建人 */
+    @ApiModelProperty(value = "创建人", position = 15)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 16)
+    private Date updateDate;
+
+    /** 删除标志 */
+    @ApiModelProperty(value = "删除标志", position = 17)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 18)
+    private String orgId;
+}

+ 34 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/enums/PigBreedEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigBreed.enums;
+
+import lombok.Getter;
+
+/**
+ * 配种信息枚举
+ *
+ * @author wang
+ * @date  2023/12/06 15:27
+ **/
+@Getter
+public enum PigBreedEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    PigBreedEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/mapper/PigBreedMapper.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigBreed.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.modular.pigBreed.entity.PigBreed;
+
+/**
+ * 配种信息Mapper接口
+ *
+ * @author wang
+ * @date  2023/12/06 15:27
+ **/
+public interface PigBreedMapper extends BaseMapper<PigBreed> {
+}

+ 5 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/mapper/mapping/PigBreedMapper.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="vip.xiaonuo.modular.pigBreed.mapper.PigBreedMapper">
+
+</mapper>

+ 94 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/param/PigBreedAddParam.java

@@ -0,0 +1,94 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigBreed.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 配种信息添加参数
+ *
+ * @author wang
+ * @date  2023/12/06 15:27
+ **/
+@Getter
+@Setter
+public class PigBreedAddParam {
+
+    /** 母猪耳标号 */
+    @ApiModelProperty(value = "母猪耳标号", position = 2)
+    private String femaleCode;
+
+    /** 品种 */
+    @ApiModelProperty(value = "品种", position = 3)
+    private Integer femaleBreed;
+
+    /** 品系 */
+    @ApiModelProperty(value = "品系", position = 4)
+    private Integer femaleStrain;
+
+    /** 母猪当前位置  */
+    @ApiModelProperty(value = "母猪当前位置 ", position = 5)
+    private String femaleUnitId;
+
+    /** 公猪耳标号 */
+    @ApiModelProperty(value = "公猪耳标号", position = 6)
+    private String maleCode;
+
+    /** 公猪品种 */
+    @ApiModelProperty(value = "公猪品种", position = 7)
+    private Integer maleBreed;
+
+    /** 公猪品系 */
+    @ApiModelProperty(value = "公猪品系", position = 8)
+    private Integer maleStrain;
+
+    /** 公猪当前位置 */
+    @ApiModelProperty(value = "公猪当前位置", position = 9)
+    private String maleUnitId;
+
+    /** 配种日期 */
+    @ApiModelProperty(value = "配种日期", position = 10)
+    private Date breedDate;
+
+    /** 配种方式 */
+    @ApiModelProperty(value = "配种方式", position = 11)
+    private String breedType;
+
+    /** 预产期=配种日期+114天 */
+    @ApiModelProperty(value = "预产期=配种日期+114天", position = 12)
+    private Integer dayNum;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 13)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 14)
+    private Date createDate;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 16)
+    private Date updateDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 18)
+    private String orgId;
+
+}

+ 99 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/param/PigBreedEditParam.java

@@ -0,0 +1,99 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigBreed.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 配种信息编辑参数
+ *
+ * @author wang
+ * @date  2023/12/06 15:27
+ **/
+@Getter
+@Setter
+public class PigBreedEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    /** 母猪耳标号 */
+    @ApiModelProperty(value = "母猪耳标号", position = 2)
+    private String femaleCode;
+
+    /** 品种 */
+    @ApiModelProperty(value = "品种", position = 3)
+    private Integer femaleBreed;
+
+    /** 品系 */
+    @ApiModelProperty(value = "品系", position = 4)
+    private Integer femaleStrain;
+
+    /** 母猪当前位置  */
+    @ApiModelProperty(value = "母猪当前位置 ", position = 5)
+    private String femaleUnitId;
+
+    /** 公猪耳标号 */
+    @ApiModelProperty(value = "公猪耳标号", position = 6)
+    private String maleCode;
+
+    /** 公猪品种 */
+    @ApiModelProperty(value = "公猪品种", position = 7)
+    private Integer maleBreed;
+
+    /** 公猪品系 */
+    @ApiModelProperty(value = "公猪品系", position = 8)
+    private Integer maleStrain;
+
+    /** 公猪当前位置 */
+    @ApiModelProperty(value = "公猪当前位置", position = 9)
+    private String maleUnitId;
+
+    /** 配种日期 */
+    @ApiModelProperty(value = "配种日期", position = 10)
+    private Date breedDate;
+
+    /** 配种方式 */
+    @ApiModelProperty(value = "配种方式", position = 11)
+    private String breedType;
+
+    /** 预产期=配种日期+114天 */
+    @ApiModelProperty(value = "预产期=配种日期+114天", position = 12)
+    private Integer dayNum;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 13)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 14)
+    private Date createDate;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 16)
+    private Date updateDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 18)
+    private String orgId;
+
+}

+ 35 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/param/PigBreedIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigBreed.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 配种信息Id参数
+ *
+ * @author wang
+ * @date  2023/12/06 15:27
+ **/
+@Getter
+@Setter
+public class PigBreedIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private Integer id;
+}

+ 63 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/param/PigBreedPageParam.java

@@ -0,0 +1,63 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigBreed.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 配种信息查询参数
+ *
+ * @author wang
+ * @date  2023/12/06 15:27
+ **/
+@Getter
+@Setter
+public class PigBreedPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+    /** 母猪耳标号 */
+    @ApiModelProperty(value = "母猪耳标号")
+    private String femaleCode;
+
+    /** 创建时间开始 */
+    @ApiModelProperty(value = "创建时间开始")
+    private String startCreateDate;
+
+    /** 创建时间结束 */
+    @ApiModelProperty(value = "创建时间结束")
+    private String endCreateDate;
+
+}

+ 80 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/service/PigBreedService.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigBreed.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.modular.pigBreed.entity.PigBreed;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedAddParam;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedEditParam;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedIdParam;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedPageParam;
+
+import java.util.List;
+
+/**
+ * 配种信息Service接口
+ *
+ * @author wang
+ * @date  2023/12/06 15:27
+ **/
+public interface PigBreedService extends IService<PigBreed> {
+
+    /**
+     * 获取配种信息分页
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     */
+    Page<PigBreed> page(PigBreedPageParam pigBreedPageParam);
+
+    /**
+     * 添加配种信息
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     */
+    void add(PigBreedAddParam pigBreedAddParam);
+
+    /**
+     * 编辑配种信息
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     */
+    void edit(PigBreedEditParam pigBreedEditParam);
+
+    /**
+     * 删除配种信息
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     */
+    void delete(List<PigBreedIdParam> pigBreedIdParamList);
+
+    /**
+     * 获取配种信息详情
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     */
+    PigBreed detail(PigBreedIdParam pigBreedIdParam);
+
+    /**
+     * 获取配种信息详情
+     *
+     * @author wang
+     * @date  2023/12/06 15:27
+     **/
+    PigBreed queryEntity(Integer id);
+}

+ 101 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigBreed/service/impl/PigBreedServiceImpl.java

@@ -0,0 +1,101 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigBreed.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.modular.pigBreed.entity.PigBreed;
+import vip.xiaonuo.modular.pigBreed.mapper.PigBreedMapper;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedAddParam;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedEditParam;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedIdParam;
+import vip.xiaonuo.modular.pigBreed.param.PigBreedPageParam;
+import vip.xiaonuo.modular.pigBreed.service.PigBreedService;
+
+import java.util.List;
+
+/**
+ * 配种信息Service接口实现类
+ *
+ * @author wang
+ * @date  2023/12/06 15:27
+ **/
+@Service
+public class PigBreedServiceImpl extends ServiceImpl<PigBreedMapper, PigBreed> implements PigBreedService {
+
+    @Override
+    public Page<PigBreed> page(PigBreedPageParam pigBreedPageParam) {
+        QueryWrapper<PigBreed> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isNotEmpty(pigBreedPageParam.getFemaleCode())) {
+            queryWrapper.lambda().like(PigBreed::getFemaleCode, pigBreedPageParam.getFemaleCode());
+        }
+        if(ObjectUtil.isNotEmpty(pigBreedPageParam.getStartCreateDate()) && ObjectUtil.isNotEmpty(pigBreedPageParam.getEndCreateDate())) {
+            queryWrapper.lambda().between(PigBreed::getCreateDate, pigBreedPageParam.getStartCreateDate(), pigBreedPageParam.getEndCreateDate());
+        }
+        if(ObjectUtil.isAllNotEmpty(pigBreedPageParam.getSortField(), pigBreedPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(pigBreedPageParam.getSortOrder());
+            queryWrapper.orderBy(true, pigBreedPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(pigBreedPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(PigBreed::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(PigBreedAddParam pigBreedAddParam) {
+        PigBreed pigBreed = BeanUtil.toBean(pigBreedAddParam, PigBreed.class);
+        this.save(pigBreed);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(PigBreedEditParam pigBreedEditParam) {
+        PigBreed pigBreed = this.queryEntity(pigBreedEditParam.getId());
+        BeanUtil.copyProperties(pigBreedEditParam, pigBreed);
+        this.updateById(pigBreed);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<PigBreedIdParam> pigBreedIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(pigBreedIdParamList, PigBreedIdParam::getId));
+    }
+
+    @Override
+    public PigBreed detail(PigBreedIdParam pigBreedIdParam) {
+        return this.queryEntity(pigBreedIdParam.getId());
+    }
+
+    @Override
+    public PigBreed queryEntity(Integer id) {
+        PigBreed pigBreed = this.getById(id);
+        if(ObjectUtil.isEmpty(pigBreed)) {
+            throw new CommonException("配种信息不存在,id值为:{}", id);
+        }
+        return pigBreed;
+    }
+}

+ 131 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/controller/PigAblactationController.java

@@ -0,0 +1,131 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigablactation.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.modular.pigablactation.entity.PigAblactation;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationAddParam;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationEditParam;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationIdParam;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationPageParam;
+import vip.xiaonuo.modular.pigablactation.service.PigAblactationService;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * 断奶信息控制器
+ *
+ * @author wang
+ * @date  2023/12/07 14:03
+ */
+@Api(tags = "断奶信息控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class PigAblactationController {
+
+    @Resource
+    private PigAblactationService pigAblactationService;
+
+    /**
+     * 获取断奶信息分页
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取断奶信息分页")
+    @SaCheckPermission("/pig/pigablactation/page")
+    @GetMapping("/pig/pigablactation/page")
+    public CommonResult<Page<PigAblactation>> page(PigAblactationPageParam pigAblactationPageParam) {
+        return CommonResult.data(pigAblactationService.page(pigAblactationPageParam));
+    }
+
+    /**
+     * 添加断奶信息
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加断奶信息")
+    @CommonLog("添加断奶信息")
+    @SaCheckPermission("/pig/pigablactation/add")
+    @PostMapping("/pig/pigablactation/add")
+    public CommonResult<String> add(@RequestBody @Valid PigAblactationAddParam pigAblactationAddParam) {
+        pigAblactationService.add(pigAblactationAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑断奶信息
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑断奶信息")
+    @CommonLog("编辑断奶信息")
+    @SaCheckPermission("/pig/pigablactation/edit")
+    @PostMapping("/pig/pigablactation/edit")
+    public CommonResult<String> edit(@RequestBody @Valid PigAblactationEditParam pigAblactationEditParam) {
+        pigAblactationService.edit(pigAblactationEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除断奶信息
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除断奶信息")
+    @CommonLog("删除断奶信息")
+    @SaCheckPermission("/pig/pigablactation/delete")
+    @PostMapping("/pig/pigablactation/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   CommonValidList<PigAblactationIdParam> pigAblactationIdParamList) {
+        pigAblactationService.delete(pigAblactationIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取断奶信息详情
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取断奶信息详情")
+    @SaCheckPermission("/pig/pigablactation/detail")
+    @GetMapping("/pig/pigablactation/detail")
+    public CommonResult<PigAblactation> detail(@Valid PigAblactationIdParam pigAblactationIdParam) {
+        return CommonResult.data(pigAblactationService.detail(pigAblactationIdParam));
+    }
+}

+ 96 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/entity/PigAblactation.java

@@ -0,0 +1,96 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigablactation.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 断奶信息实体
+ *
+ * @author wang
+ * @date  2023/12/07 14:03
+ **/
+@Getter
+@Setter
+@TableName("pig_ablactation")
+public class PigAblactation {
+
+    /** ID */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "ID", position = 1)
+    private Integer id;
+
+    /** 母猪耳标号 */
+    @ApiModelProperty(value = "母猪耳标号", position = 2)
+    private String eartag;
+
+    /** 当前位置id */
+    @ApiModelProperty(value = "当前位置id", position = 3)
+    private Integer unitId;
+
+    /** 当前位置 */
+    @ApiModelProperty(value = "当前位置", position = 4)
+    private String unitName;
+
+    /** 转入位置id */
+    @ApiModelProperty(value = "转入位置id", position = 5)
+    private String intoId;
+
+    /** 断奶日期 */
+    @ApiModelProperty(value = "断奶日期", position = 6)
+    private Date ablactationDate;
+
+    /** 哺乳天数 */
+    @ApiModelProperty(value = "哺乳天数", position = 7)
+    private String milkDay;
+
+    /** 断奶头数 */
+    @ApiModelProperty(value = "断奶头数", position = 8)
+    private String ablactationNum;
+
+    /** 断奶总窝重 */
+    @ApiModelProperty(value = "断奶总窝重", position = 9)
+    private Double ablactationWeight;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 10)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 11)
+    private Date createDate;
+
+    /** 创建人 */
+    @ApiModelProperty(value = "创建人", position = 12)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 删除标志 */
+    @ApiModelProperty(value = "删除标志", position = 13)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 修改日期 */
+    @ApiModelProperty(value = "修改日期", position = 14)
+    private Date updateDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 15)
+    private String orgId;
+}

+ 34 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/enums/PigAblactationEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigablactation.enums;
+
+import lombok.Getter;
+
+/**
+ * 断奶信息枚举
+ *
+ * @author wang
+ * @date  2023/12/07 14:03
+ **/
+@Getter
+public enum PigAblactationEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    PigAblactationEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/mapper/PigAblactationMapper.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigablactation.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.modular.pigablactation.entity.PigAblactation;
+
+/**
+ * 断奶信息Mapper接口
+ *
+ * @author wang
+ * @date  2023/12/07 14:03
+ **/
+public interface PigAblactationMapper extends BaseMapper<PigAblactation> {
+}

+ 5 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/mapper/mapping/PigAblactationMapper.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="vip.xiaonuo.modular.pigablactation.mapper.PigAblactationMapper">
+
+</mapper>

+ 82 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/param/PigAblactationAddParam.java

@@ -0,0 +1,82 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigablactation.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 断奶信息添加参数
+ *
+ * @author wang
+ * @date  2023/12/07 14:03
+ **/
+@Getter
+@Setter
+public class PigAblactationAddParam {
+
+    /** 母猪耳标号 */
+    @ApiModelProperty(value = "母猪耳标号", position = 2)
+    private String eartag;
+
+    /** 当前位置id */
+    @ApiModelProperty(value = "当前位置id", position = 3)
+    private Integer unitId;
+
+    /** 当前位置 */
+    @ApiModelProperty(value = "当前位置", position = 4)
+    private String unitName;
+
+    /** 转入位置id */
+    @ApiModelProperty(value = "转入位置id", position = 5)
+    private String intoId;
+
+    /** 断奶日期 */
+    @ApiModelProperty(value = "断奶日期", position = 6)
+    private Date ablactationDate;
+
+    /** 哺乳天数 */
+    @ApiModelProperty(value = "哺乳天数", position = 7)
+    private String milkDay;
+
+    /** 断奶头数 */
+    @ApiModelProperty(value = "断奶头数", position = 8)
+    private String ablactationNum;
+
+    /** 断奶总窝重 */
+    @ApiModelProperty(value = "断奶总窝重", position = 9)
+    private Double ablactationWeight;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 10)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 11)
+    private Date createDate;
+
+    /** 修改日期 */
+    @ApiModelProperty(value = "修改日期", position = 14)
+    private Date updateDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 15)
+    private String orgId;
+
+}

+ 87 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/param/PigAblactationEditParam.java

@@ -0,0 +1,87 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigablactation.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 断奶信息编辑参数
+ *
+ * @author wang
+ * @date  2023/12/07 14:03
+ **/
+@Getter
+@Setter
+public class PigAblactationEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    /** 母猪耳标号 */
+    @ApiModelProperty(value = "母猪耳标号", position = 2)
+    private String eartag;
+
+    /** 当前位置id */
+    @ApiModelProperty(value = "当前位置id", position = 3)
+    private Integer unitId;
+
+    /** 当前位置 */
+    @ApiModelProperty(value = "当前位置", position = 4)
+    private String unitName;
+
+    /** 转入位置id */
+    @ApiModelProperty(value = "转入位置id", position = 5)
+    private String intoId;
+
+    /** 断奶日期 */
+    @ApiModelProperty(value = "断奶日期", position = 6)
+    private Date ablactationDate;
+
+    /** 哺乳天数 */
+    @ApiModelProperty(value = "哺乳天数", position = 7)
+    private String milkDay;
+
+    /** 断奶头数 */
+    @ApiModelProperty(value = "断奶头数", position = 8)
+    private String ablactationNum;
+
+    /** 断奶总窝重 */
+    @ApiModelProperty(value = "断奶总窝重", position = 9)
+    private Double ablactationWeight;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 10)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 11)
+    private Date createDate;
+
+    /** 修改日期 */
+    @ApiModelProperty(value = "修改日期", position = 14)
+    private Date updateDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 15)
+    private String orgId;
+
+}

+ 35 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/param/PigAblactationIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigablactation.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 断奶信息Id参数
+ *
+ * @author wang
+ * @date  2023/12/07 14:03
+ **/
+@Getter
+@Setter
+public class PigAblactationIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private Integer id;
+}

+ 63 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/param/PigAblactationPageParam.java

@@ -0,0 +1,63 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigablactation.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 断奶信息查询参数
+ *
+ * @author wang
+ * @date  2023/12/07 14:03
+ **/
+@Getter
+@Setter
+public class PigAblactationPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+    /** 母猪耳标号 */
+    @ApiModelProperty(value = "母猪耳标号")
+    private String eartag;
+
+    /** 断奶日期开始 */
+    @ApiModelProperty(value = "断奶日期开始")
+    private String startAblactationDate;
+
+    /** 断奶日期结束 */
+    @ApiModelProperty(value = "断奶日期结束")
+    private String endAblactationDate;
+
+}

+ 80 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/service/PigAblactationService.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigablactation.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.modular.pigablactation.entity.PigAblactation;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationAddParam;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationEditParam;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationIdParam;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationPageParam;
+
+import java.util.List;
+
+/**
+ * 断奶信息Service接口
+ *
+ * @author wang
+ * @date  2023/12/07 14:03
+ **/
+public interface PigAblactationService extends IService<PigAblactation> {
+
+    /**
+     * 获取断奶信息分页
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     */
+    Page<PigAblactation> page(PigAblactationPageParam pigAblactationPageParam);
+
+    /**
+     * 添加断奶信息
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     */
+    void add(PigAblactationAddParam pigAblactationAddParam);
+
+    /**
+     * 编辑断奶信息
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     */
+    void edit(PigAblactationEditParam pigAblactationEditParam);
+
+    /**
+     * 删除断奶信息
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     */
+    void delete(List<PigAblactationIdParam> pigAblactationIdParamList);
+
+    /**
+     * 获取断奶信息详情
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     */
+    PigAblactation detail(PigAblactationIdParam pigAblactationIdParam);
+
+    /**
+     * 获取断奶信息详情
+     *
+     * @author wang
+     * @date  2023/12/07 14:03
+     **/
+    PigAblactation queryEntity(Integer id);
+}

+ 100 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigablactation/service/impl/PigAblactationServiceImpl.java

@@ -0,0 +1,100 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigablactation.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.modular.pigablactation.entity.PigAblactation;
+import vip.xiaonuo.modular.pigablactation.mapper.PigAblactationMapper;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationAddParam;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationEditParam;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationIdParam;
+import vip.xiaonuo.modular.pigablactation.param.PigAblactationPageParam;
+import vip.xiaonuo.modular.pigablactation.service.PigAblactationService;
+
+import java.util.List;
+
+/**
+ * 断奶信息Service接口实现类
+ *
+ * @author wang
+ * @date  2023/12/07 14:03
+ **/
+@Service
+public class PigAblactationServiceImpl extends ServiceImpl<PigAblactationMapper, PigAblactation> implements PigAblactationService {
+
+    @Override
+    public Page<PigAblactation> page(PigAblactationPageParam pigAblactationPageParam) {
+        QueryWrapper<PigAblactation> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isNotEmpty(pigAblactationPageParam.getEartag())) {
+            queryWrapper.lambda().like(PigAblactation::getEartag, pigAblactationPageParam.getEartag());
+        }
+        if(ObjectUtil.isNotEmpty(pigAblactationPageParam.getStartAblactationDate()) && ObjectUtil.isNotEmpty(pigAblactationPageParam.getEndAblactationDate())) {
+            queryWrapper.lambda().between(PigAblactation::getAblactationDate, pigAblactationPageParam.getStartAblactationDate(), pigAblactationPageParam.getEndAblactationDate());
+        }
+        if(ObjectUtil.isAllNotEmpty(pigAblactationPageParam.getSortField(), pigAblactationPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(pigAblactationPageParam.getSortOrder());
+            queryWrapper.orderBy(true, pigAblactationPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(pigAblactationPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(PigAblactation::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(PigAblactationAddParam pigAblactationAddParam) {
+        PigAblactation pigAblactation = BeanUtil.toBean(pigAblactationAddParam, PigAblactation.class);
+        this.save(pigAblactation);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(PigAblactationEditParam pigAblactationEditParam) {
+        PigAblactation pigAblactation = this.queryEntity(pigAblactationEditParam.getId());
+        BeanUtil.copyProperties(pigAblactationEditParam, pigAblactation);
+        this.updateById(pigAblactation);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<PigAblactationIdParam> pigAblactationIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(pigAblactationIdParamList, PigAblactationIdParam::getId));
+    }
+
+    @Override
+    public PigAblactation detail(PigAblactationIdParam pigAblactationIdParam) {
+        return this.queryEntity(pigAblactationIdParam.getId());
+    }
+
+    @Override
+    public PigAblactation queryEntity(Integer id) {
+        PigAblactation pigAblactation = this.getById(id);
+        if(ObjectUtil.isEmpty(pigAblactation)) {
+            throw new CommonException("断奶信息不存在,id值为:{}", id);
+        }
+        return pigAblactation;
+    }
+}

+ 131 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/controller/PigBackfatController.java

@@ -0,0 +1,131 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbackfat.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.modular.pigbackfat.entity.PigBackfat;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatAddParam;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatEditParam;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatIdParam;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatPageParam;
+import vip.xiaonuo.modular.pigbackfat.service.PigBackfatService;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * 背膘测定控制器
+ *
+ * @author wang
+ * @date  2023/12/07 17:54
+ */
+@Api(tags = "背膘测定控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class PigBackfatController {
+
+    @Resource
+    private PigBackfatService pigBackfatService;
+
+    /**
+     * 获取背膘测定分页
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取背膘测定分页")
+    @SaCheckPermission("/pig/pigbackfat/page")
+    @GetMapping("/pig/pigbackfat/page")
+    public CommonResult<Page<PigBackfat>> page(PigBackfatPageParam pigBackfatPageParam) {
+        return CommonResult.data(pigBackfatService.page(pigBackfatPageParam));
+    }
+
+    /**
+     * 添加背膘测定
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加背膘测定")
+    @CommonLog("添加背膘测定")
+    @SaCheckPermission("/pig/pigbackfat/add")
+    @PostMapping("/pig/pigbackfat/add")
+    public CommonResult<String> add(@RequestBody @Valid PigBackfatAddParam pigBackfatAddParam) {
+        pigBackfatService.add(pigBackfatAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑背膘测定
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑背膘测定")
+    @CommonLog("编辑背膘测定")
+    @SaCheckPermission("/pig/pigbackfat/edit")
+    @PostMapping("/pig/pigbackfat/edit")
+    public CommonResult<String> edit(@RequestBody @Valid PigBackfatEditParam pigBackfatEditParam) {
+        pigBackfatService.edit(pigBackfatEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除背膘测定
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除背膘测定")
+    @CommonLog("删除背膘测定")
+    @SaCheckPermission("/pig/pigbackfat/delete")
+    @PostMapping("/pig/pigbackfat/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   CommonValidList<PigBackfatIdParam> pigBackfatIdParamList) {
+        pigBackfatService.delete(pigBackfatIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取背膘测定详情
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取背膘测定详情")
+    @SaCheckPermission("/pig/pigbackfat/detail")
+    @GetMapping("/pig/pigbackfat/detail")
+    public CommonResult<PigBackfat> detail(@Valid PigBackfatIdParam pigBackfatIdParam) {
+        return CommonResult.data(pigBackfatService.detail(pigBackfatIdParam));
+    }
+}

+ 92 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/entity/PigBackfat.java

@@ -0,0 +1,92 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbackfat.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 背膘测定实体
+ *
+ * @author wang
+ * @date  2023/12/07 17:54
+ **/
+@Getter
+@Setter
+@TableName("pig_backfat")
+public class PigBackfat {
+
+    /** ID */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "ID", position = 1)
+    private Integer id;
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号", position = 2)
+    private String eartag;
+
+    /** 当前位置id */
+    @ApiModelProperty(value = "当前位置id", position = 3)
+    private String unitId;
+
+    /** 当前位置 */
+    @ApiModelProperty(value = "当前位置", position = 4)
+    private String unitName;
+
+    /** 上次测定日期 */
+    @ApiModelProperty(value = "上次测定日期", position = 5)
+    private Date lastDate;
+
+    /** 上次背膘厚度 */
+    @ApiModelProperty(value = "上次背膘厚度", position = 6)
+    private String lastValue;
+
+    /** 本次测定日期 */
+    @ApiModelProperty(value = "本次测定日期", position = 7)
+    private Date thisDate;
+
+    /** 本次背膘厚度 */
+    @ApiModelProperty(value = "本次背膘厚度", position = 8)
+    private String thisValue;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 9)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 10)
+    private Date createDate;
+
+    /** 创建人 */
+    @ApiModelProperty(value = "创建人", position = 11)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 删除标志 */
+    @ApiModelProperty(value = "删除标志", position = 12)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 13)
+    private Date updateDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 14)
+    private String orgId;
+}

+ 34 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/enums/PigBackfatEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbackfat.enums;
+
+import lombok.Getter;
+
+/**
+ * 背膘测定枚举
+ *
+ * @author wang
+ * @date  2023/12/07 17:54
+ **/
+@Getter
+public enum PigBackfatEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    PigBackfatEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/mapper/PigBackfatMapper.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbackfat.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.modular.pigbackfat.entity.PigBackfat;
+
+/**
+ * 背膘测定Mapper接口
+ *
+ * @author wang
+ * @date  2023/12/07 17:54
+ **/
+public interface PigBackfatMapper extends BaseMapper<PigBackfat> {
+}

+ 5 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/mapper/mapping/PigBackfatMapper.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="vip.xiaonuo.modular.pigbackfat.mapper.PigBackfatMapper">
+
+</mapper>

+ 78 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/param/PigBackfatAddParam.java

@@ -0,0 +1,78 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbackfat.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 背膘测定添加参数
+ *
+ * @author wang
+ * @date  2023/12/07 17:54
+ **/
+@Getter
+@Setter
+public class PigBackfatAddParam {
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号", position = 2)
+    private String eartag;
+
+    /** 当前位置id */
+    @ApiModelProperty(value = "当前位置id", position = 3)
+    private String unitId;
+
+    /** 当前位置 */
+    @ApiModelProperty(value = "当前位置", position = 4)
+    private String unitName;
+
+    /** 上次测定日期 */
+    @ApiModelProperty(value = "上次测定日期", position = 5)
+    private Date lastDate;
+
+    /** 上次背膘厚度 */
+    @ApiModelProperty(value = "上次背膘厚度", position = 6)
+    private String lastValue;
+
+    /** 本次测定日期 */
+    @ApiModelProperty(value = "本次测定日期", position = 7)
+    private Date thisDate;
+
+    /** 本次背膘厚度 */
+    @ApiModelProperty(value = "本次背膘厚度", position = 8)
+    private String thisValue;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 9)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 10)
+    private Date createDate;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 13)
+    private Date updateDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 14)
+    private String orgId;
+
+}

+ 83 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/param/PigBackfatEditParam.java

@@ -0,0 +1,83 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbackfat.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 背膘测定编辑参数
+ *
+ * @author wang
+ * @date  2023/12/07 17:54
+ **/
+@Getter
+@Setter
+public class PigBackfatEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号", position = 2)
+    private String eartag;
+
+    /** 当前位置id */
+    @ApiModelProperty(value = "当前位置id", position = 3)
+    private String unitId;
+
+    /** 当前位置 */
+    @ApiModelProperty(value = "当前位置", position = 4)
+    private String unitName;
+
+    /** 上次测定日期 */
+    @ApiModelProperty(value = "上次测定日期", position = 5)
+    private Date lastDate;
+
+    /** 上次背膘厚度 */
+    @ApiModelProperty(value = "上次背膘厚度", position = 6)
+    private String lastValue;
+
+    /** 本次测定日期 */
+    @ApiModelProperty(value = "本次测定日期", position = 7)
+    private Date thisDate;
+
+    /** 本次背膘厚度 */
+    @ApiModelProperty(value = "本次背膘厚度", position = 8)
+    private String thisValue;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 9)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 10)
+    private Date createDate;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 13)
+    private Date updateDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 14)
+    private String orgId;
+
+}

+ 35 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/param/PigBackfatIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbackfat.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 背膘测定Id参数
+ *
+ * @author wang
+ * @date  2023/12/07 17:54
+ **/
+@Getter
+@Setter
+public class PigBackfatIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private Integer id;
+}

+ 63 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/param/PigBackfatPageParam.java

@@ -0,0 +1,63 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbackfat.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 背膘测定查询参数
+ *
+ * @author wang
+ * @date  2023/12/07 17:54
+ **/
+@Getter
+@Setter
+public class PigBackfatPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号")
+    private String eartag;
+
+    /** 本次测定日期开始 */
+    @ApiModelProperty(value = "本次测定日期开始")
+    private String startThisDate;
+
+    /** 本次测定日期结束 */
+    @ApiModelProperty(value = "本次测定日期结束")
+    private String endThisDate;
+
+}

+ 80 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/service/PigBackfatService.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbackfat.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.modular.pigbackfat.entity.PigBackfat;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatAddParam;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatEditParam;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatIdParam;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatPageParam;
+
+import java.util.List;
+
+/**
+ * 背膘测定Service接口
+ *
+ * @author wang
+ * @date  2023/12/07 17:54
+ **/
+public interface PigBackfatService extends IService<PigBackfat> {
+
+    /**
+     * 获取背膘测定分页
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     */
+    Page<PigBackfat> page(PigBackfatPageParam pigBackfatPageParam);
+
+    /**
+     * 添加背膘测定
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     */
+    void add(PigBackfatAddParam pigBackfatAddParam);
+
+    /**
+     * 编辑背膘测定
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     */
+    void edit(PigBackfatEditParam pigBackfatEditParam);
+
+    /**
+     * 删除背膘测定
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     */
+    void delete(List<PigBackfatIdParam> pigBackfatIdParamList);
+
+    /**
+     * 获取背膘测定详情
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     */
+    PigBackfat detail(PigBackfatIdParam pigBackfatIdParam);
+
+    /**
+     * 获取背膘测定详情
+     *
+     * @author wang
+     * @date  2023/12/07 17:54
+     **/
+    PigBackfat queryEntity(Integer id);
+}

+ 100 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbackfat/service/impl/PigBackfatServiceImpl.java

@@ -0,0 +1,100 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbackfat.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.modular.pigbackfat.entity.PigBackfat;
+import vip.xiaonuo.modular.pigbackfat.mapper.PigBackfatMapper;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatAddParam;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatEditParam;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatIdParam;
+import vip.xiaonuo.modular.pigbackfat.param.PigBackfatPageParam;
+import vip.xiaonuo.modular.pigbackfat.service.PigBackfatService;
+
+import java.util.List;
+
+/**
+ * 背膘测定Service接口实现类
+ *
+ * @author wang
+ * @date  2023/12/07 17:54
+ **/
+@Service
+public class PigBackfatServiceImpl extends ServiceImpl<PigBackfatMapper, PigBackfat> implements PigBackfatService {
+
+    @Override
+    public Page<PigBackfat> page(PigBackfatPageParam pigBackfatPageParam) {
+        QueryWrapper<PigBackfat> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isNotEmpty(pigBackfatPageParam.getEartag())) {
+            queryWrapper.lambda().like(PigBackfat::getEartag, pigBackfatPageParam.getEartag());
+        }
+        if(ObjectUtil.isNotEmpty(pigBackfatPageParam.getStartThisDate()) && ObjectUtil.isNotEmpty(pigBackfatPageParam.getEndThisDate())) {
+            queryWrapper.lambda().between(PigBackfat::getThisDate, pigBackfatPageParam.getStartThisDate(), pigBackfatPageParam.getEndThisDate());
+        }
+        if(ObjectUtil.isAllNotEmpty(pigBackfatPageParam.getSortField(), pigBackfatPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(pigBackfatPageParam.getSortOrder());
+            queryWrapper.orderBy(true, pigBackfatPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(pigBackfatPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(PigBackfat::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(PigBackfatAddParam pigBackfatAddParam) {
+        PigBackfat pigBackfat = BeanUtil.toBean(pigBackfatAddParam, PigBackfat.class);
+        this.save(pigBackfat);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(PigBackfatEditParam pigBackfatEditParam) {
+        PigBackfat pigBackfat = this.queryEntity(pigBackfatEditParam.getId());
+        BeanUtil.copyProperties(pigBackfatEditParam, pigBackfat);
+        this.updateById(pigBackfat);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<PigBackfatIdParam> pigBackfatIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(pigBackfatIdParamList, PigBackfatIdParam::getId));
+    }
+
+    @Override
+    public PigBackfat detail(PigBackfatIdParam pigBackfatIdParam) {
+        return this.queryEntity(pigBackfatIdParam.getId());
+    }
+
+    @Override
+    public PigBackfat queryEntity(Integer id) {
+        PigBackfat pigBackfat = this.getById(id);
+        if(ObjectUtil.isEmpty(pigBackfat)) {
+            throw new CommonException("背膘测定不存在,id值为:{}", id);
+        }
+        return pigBackfat;
+    }
+}

+ 126 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/controller/PigBatchController.java

@@ -0,0 +1,126 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbatch.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.modular.pigbatch.entity.PigBatch;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchAddParam;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchEditParam;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchIdParam;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchPageParam;
+import vip.xiaonuo.modular.pigbatch.service.PigBatchService;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * 猪只批次控制器
+ *
+ * @author wang
+ * @date  2023/12/06 14:53
+ */
+@Api(tags = "猪只批次控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class PigBatchController {
+
+    @Resource
+    private PigBatchService pigBatchService;
+
+    /**
+     * 获取猪只批次分页
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取猪只批次分页")
+    @GetMapping("/xiaonuo/pigbatch/page")
+    public CommonResult<Page<PigBatch>> page(PigBatchPageParam pigBatchPageParam) {
+        return CommonResult.data(pigBatchService.page(pigBatchPageParam));
+    }
+
+    /**
+     * 添加猪只批次
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加猪只批次")
+    @CommonLog("添加猪只批次")
+    @PostMapping("/xiaonuo/pigbatch/add")
+    public CommonResult<String> add(@RequestBody @Valid PigBatchAddParam pigBatchAddParam) {
+        return pigBatchService.add(pigBatchAddParam);
+    }
+
+    /**
+     * 编辑猪只批次
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑猪只批次")
+    @CommonLog("编辑猪只批次")
+    @PostMapping("/xiaonuo/pigbatch/edit")
+    public CommonResult<String> edit(@RequestBody @Valid PigBatchEditParam pigBatchEditParam) {
+        return pigBatchService.edit(pigBatchEditParam);
+    }
+
+    /**
+     * 删除猪只批次
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除猪只批次")
+    @CommonLog("删除猪只批次")
+    @PostMapping("/xiaonuo/pigbatch/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                               CommonValidList<PigBatchIdParam> pigBatchIdParamList) {
+        pigBatchService.delete(pigBatchIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取猪只批次详情
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取猪只批次详情")
+    @GetMapping("/xiaonuo/pigbatch/detail")
+    public CommonResult<PigBatch> detail(@Valid PigBatchIdParam pigBatchIdParam) {
+        return CommonResult.data(pigBatchService.detail(pigBatchIdParam));
+    }
+}

+ 73 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/entity/PigBatch.java

@@ -0,0 +1,73 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbatch.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 猪只批次实体
+ *
+ * @author wang
+ * @date  2023/12/06 14:53
+ **/
+@Getter
+@Setter
+@TableName("pig_batch")
+public class PigBatch {
+
+    /** ID */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "ID", position = 1)
+    private Integer id;
+
+    /** 批次号 */
+    @ApiModelProperty(value = "批次号", position = 2)
+    private String batchCode;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 3)
+    private Date createDate;
+
+    /** 批次中母猪数量 */
+    @ApiModelProperty(value = "批次中母猪数量", position = 4)
+    private String batchNum;
+
+    /** 创建人 */
+    @ApiModelProperty(value = "创建人", position = 5)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 6)
+    private Date updateDate;
+
+    /** 修改人 */
+    @ApiModelProperty(value = "修改人", position = 7)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateUser;
+
+    /** 删除标志 */
+    @ApiModelProperty(value = "删除标志", position = 8)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 9)
+    private String orgId;
+}

+ 34 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/enums/PigBatchEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbatch.enums;
+
+import lombok.Getter;
+
+/**
+ * 猪只批次枚举
+ *
+ * @author wang
+ * @date  2023/12/06 14:53
+ **/
+@Getter
+public enum PigBatchEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    PigBatchEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/mapper/PigBatchMapper.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbatch.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.modular.pigbatch.entity.PigBatch;
+
+/**
+ * 猪只批次Mapper接口
+ *
+ * @author wang
+ * @date  2023/12/06 14:53
+ **/
+public interface PigBatchMapper extends BaseMapper<PigBatch> {
+}

+ 5 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/mapper/mapping/PigBatchMapper.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="vip.xiaonuo.modular.pigbatch.mapper.PigBatchMapper">
+
+</mapper>

+ 54 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/param/PigBatchAddParam.java

@@ -0,0 +1,54 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbatch.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 猪只批次添加参数
+ *
+ * @author wang
+ * @date  2023/12/06 14:53
+ **/
+@Getter
+@Setter
+public class PigBatchAddParam {
+
+    /** 批次号 */
+    @ApiModelProperty(value = "批次号", position = 2)
+    private String batchCode;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 3)
+    private Date createDate;
+
+    /** 批次中母猪数量 */
+    @ApiModelProperty(value = "批次中母猪数量", position = 4)
+    private String batchNum;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 6)
+    private Date updateDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 9)
+    private String orgId;
+
+}

+ 59 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/param/PigBatchEditParam.java

@@ -0,0 +1,59 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbatch.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 猪只批次编辑参数
+ *
+ * @author wang
+ * @date  2023/12/06 14:53
+ **/
+@Getter
+@Setter
+public class PigBatchEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    /** 批次号 */
+    @ApiModelProperty(value = "批次号", position = 2)
+    private String batchCode;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 3)
+    private Date createDate;
+
+    /** 批次中母猪数量 */
+    @ApiModelProperty(value = "批次中母猪数量", position = 4)
+    private String batchNum;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 6)
+    private Date updateDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 9)
+    private String orgId;
+
+}

+ 36 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/param/PigBatchIdParam.java

@@ -0,0 +1,36 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbatch.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 猪只批次Id参数
+ *
+ * @author wang
+ * @date  2023/12/06 14:53
+ **/
+@Getter
+@Setter
+public class PigBatchIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+}

+ 55 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/param/PigBatchPageParam.java

@@ -0,0 +1,55 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbatch.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 猪只批次查询参数
+ *
+ * @author wang
+ * @date  2023/12/06 14:53
+ **/
+@Getter
+@Setter
+public class PigBatchPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+    /** 批次号 */
+    @ApiModelProperty(value = "批次号")
+    private String batchCode;
+
+}

+ 81 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/service/PigBatchService.java

@@ -0,0 +1,81 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbatch.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.modular.pigbatch.entity.PigBatch;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchAddParam;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchEditParam;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchIdParam;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchPageParam;
+
+import java.util.List;
+
+/**
+ * 猪只批次Service接口
+ *
+ * @author wang
+ * @date  2023/12/06 14:53
+ **/
+public interface PigBatchService extends IService<PigBatch> {
+
+    /**
+     * 获取猪只批次分页
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     */
+    Page<PigBatch> page(PigBatchPageParam pigBatchPageParam);
+
+    /**
+     * 添加猪只批次
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     */
+    CommonResult add(PigBatchAddParam pigBatchAddParam);
+
+    /**
+     * 编辑猪只批次
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     */
+    CommonResult edit(PigBatchEditParam pigBatchEditParam);
+
+    /**
+     * 删除猪只批次
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     */
+    void delete(List<PigBatchIdParam> pigBatchIdParamList);
+
+    /**
+     * 获取猪只批次详情
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     */
+    PigBatch detail(PigBatchIdParam pigBatchIdParam);
+
+    /**
+     * 获取猪只批次详情
+     *
+     * @author wang
+     * @date  2023/12/06 14:53
+     **/
+    PigBatch queryEntity(Integer id);
+}

+ 125 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigbatch/service/impl/PigBatchServiceImpl.java

@@ -0,0 +1,125 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigbatch.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.modular.pigbatch.entity.PigBatch;
+import vip.xiaonuo.modular.pigbatch.mapper.PigBatchMapper;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchAddParam;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchEditParam;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchIdParam;
+import vip.xiaonuo.modular.pigbatch.param.PigBatchPageParam;
+import vip.xiaonuo.modular.pigbatch.service.PigBatchService;
+import vip.xiaonuo.modular.pigfiles.entity.PigFiles;
+
+import java.util.List;
+
+/**
+ * 猪只批次Service接口实现类
+ *
+ * @author wang
+ * @date  2023/12/06 14:53
+ **/
+@Service
+public class PigBatchServiceImpl extends ServiceImpl<PigBatchMapper, PigBatch> implements PigBatchService {
+    @Autowired
+    private PigBatchMapper batchMapper;
+
+    @Override
+    public Page<PigBatch> page(PigBatchPageParam pigBatchPageParam) {
+        QueryWrapper<PigBatch> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isNotEmpty(pigBatchPageParam.getBatchCode())) {
+            queryWrapper.lambda().like(PigBatch::getBatchCode, pigBatchPageParam.getBatchCode());
+        }
+        if(ObjectUtil.isAllNotEmpty(pigBatchPageParam.getSortField(), pigBatchPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(pigBatchPageParam.getSortOrder());
+            queryWrapper.orderBy(true, pigBatchPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(pigBatchPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(PigBatch::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public CommonResult add(PigBatchAddParam pigBatchAddParam) {
+        QueryWrapper<PigBatch> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("org_id", pigBatchAddParam.getOrgId()).eq("batch_code", pigBatchAddParam.getBatchCode());
+        if (ObjectUtil.isEmpty(batchMapper.selectOne(queryWrapper))) {
+            PigBatch pigBatch = BeanUtil.toBean(pigBatchAddParam, PigBatch.class);
+            this.save(pigBatch);
+            return CommonResult.ok();
+        } else {
+            return new CommonResult(500, "批次号已存在,请重新添加!", false);
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public CommonResult edit(PigBatchEditParam pigBatchEditParam) {
+        PigBatch pigBatch = this.queryEntity(pigBatchEditParam.getId());
+        if (ObjectUtil.isNotEmpty(pigBatchEditParam.getBatchCode())) {
+            QueryWrapper<PigBatch> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("org_id", pigBatch.getOrgId())
+                    .eq(StringUtils.isNotBlank(pigBatchEditParam.getBatchCode()),"batch_code",pigBatchEditParam.getBatchCode())
+                    .ne("id", pigBatchEditParam.getId());
+            if (ObjectUtil.isEmpty(batchMapper.selectOne(queryWrapper))) {
+                BeanUtil.copyProperties(pigBatchEditParam, pigBatch);
+                this.updateById(pigBatch);
+                return CommonResult.ok();
+            } else {
+                return new CommonResult(500, "耳标号已存在!", false);
+            }
+        } else {
+            BeanUtil.copyProperties(pigBatchEditParam, pigBatch);
+            this.updateById(pigBatch);
+            return CommonResult.ok();
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<PigBatchIdParam> pigBatchIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(pigBatchIdParamList, PigBatchIdParam::getId));
+    }
+
+    @Override
+    public PigBatch detail(PigBatchIdParam pigBatchIdParam) {
+        return this.queryEntity(pigBatchIdParam.getId());
+    }
+
+    @Override
+    public PigBatch queryEntity(Integer id) {
+        PigBatch pigBatch = this.getById(id);
+        if(ObjectUtil.isEmpty(pigBatch)) {
+            throw new CommonException("猪只批次不存在,id值为:{}", id);
+        }
+        return pigBatch;
+    }
+}

+ 131 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/controller/PigChildbirthController.java

@@ -0,0 +1,131 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigchildbirth.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.modular.pigchildbirth.entity.PigChildbirth;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthAddParam;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthEditParam;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthIdParam;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthPageParam;
+import vip.xiaonuo.modular.pigchildbirth.service.PigChildbirthService;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * 母猪妊娠控制器
+ *
+ * @author wang
+ * @date  2023/12/07 09:39
+ */
+@Api(tags = "母猪妊娠控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class PigChildbirthController {
+
+    @Resource
+    private PigChildbirthService pigChildbirthService;
+
+    /**
+     * 获取母猪妊娠分页
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取母猪妊娠分页")
+    @SaCheckPermission("/xiaonuo/pigchildbirth/page")
+    @GetMapping("/xiaonuo/pigchildbirth/page")
+    public CommonResult<Page<PigChildbirth>> page(PigChildbirthPageParam pigChildbirthPageParam) {
+        return CommonResult.data(pigChildbirthService.page(pigChildbirthPageParam));
+    }
+
+    /**
+     * 添加母猪妊娠
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加母猪妊娠")
+    @CommonLog("添加母猪妊娠")
+    @SaCheckPermission("/xiaonuo/pigchildbirth/add")
+    @PostMapping("/xiaonuo/pigchildbirth/add")
+    public CommonResult<String> add(@RequestBody @Valid PigChildbirthAddParam pigChildbirthAddParam) {
+        pigChildbirthService.add(pigChildbirthAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑母猪妊娠
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑母猪妊娠")
+    @CommonLog("编辑母猪妊娠")
+    @SaCheckPermission("/xiaonuo/pigchildbirth/edit")
+    @PostMapping("/xiaonuo/pigchildbirth/edit")
+    public CommonResult<String> edit(@RequestBody @Valid PigChildbirthEditParam pigChildbirthEditParam) {
+        pigChildbirthService.edit(pigChildbirthEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除母猪妊娠
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除母猪妊娠")
+    @CommonLog("删除母猪妊娠")
+    @SaCheckPermission("/xiaonuo/pigchildbirth/delete")
+    @PostMapping("/xiaonuo/pigchildbirth/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                               CommonValidList<PigChildbirthIdParam> pigChildbirthIdParamList) {
+        pigChildbirthService.delete(pigChildbirthIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取母猪妊娠详情
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取母猪妊娠详情")
+    @SaCheckPermission("/xiaonuo/pigchildbirth/detail")
+    @GetMapping("/xiaonuo/pigchildbirth/detail")
+    public CommonResult<PigChildbirth> detail(@Valid PigChildbirthIdParam pigChildbirthIdParam) {
+        return CommonResult.data(pigChildbirthService.detail(pigChildbirthIdParam));
+    }
+}

+ 96 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/entity/PigChildbirth.java

@@ -0,0 +1,96 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigchildbirth.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 母猪妊娠实体
+ *
+ * @author wang
+ * @date  2023/12/07 09:39
+ **/
+@Getter
+@Setter
+@TableName("pig_childbirth")
+public class PigChildbirth {
+
+    /** ID */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "ID", position = 1)
+    private Integer id;
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号", position = 2)
+    private String eartag;
+
+    /** 妊娠日期 */
+    @ApiModelProperty(value = "妊娠日期", position = 3)
+    private Date birthDate;
+
+    /** 妊娠天数 */
+    @ApiModelProperty(value = "妊娠天数", position = 4)
+    private String birthDay;
+
+    /** 妊娠方式 */
+    @ApiModelProperty(value = "妊娠方式", position = 5)
+    private String birthType;
+
+    /** 妊娠结果 */
+    @ApiModelProperty(value = "妊娠结果", position = 6)
+    private String birthResult;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 7)
+    private Date createDate;
+
+    /** 创建人 */
+    @ApiModelProperty(value = "创建人", position = 8)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 9)
+    private String remark;
+
+    /** 妊娠异常说明 */
+    @ApiModelProperty(value = "妊娠异常说明", position = 10)
+    private String birthError;
+
+    /** 删除标志 */
+    @ApiModelProperty(value = "删除标志", position = 11)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 12)
+    private String orgId;
+
+    /** 位置id */
+    @ApiModelProperty(value = "位置id", position = 13)
+    private String unitId;
+
+    /** 位置名称 */
+    @ApiModelProperty(value = "位置名称", position = 14)
+    private String unitName;
+
+    /** 转入位置 */
+    @ApiModelProperty(value = "转入位置", position = 15)
+    private String intoId;
+}

+ 34 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/enums/PigChildbirthEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigchildbirth.enums;
+
+import lombok.Getter;
+
+/**
+ * 母猪妊娠枚举
+ *
+ * @author wang
+ * @date  2023/12/07 09:39
+ **/
+@Getter
+public enum PigChildbirthEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    PigChildbirthEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/mapper/PigChildbirthMapper.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigchildbirth.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.modular.pigchildbirth.entity.PigChildbirth;
+
+/**
+ * 母猪妊娠Mapper接口
+ *
+ * @author wang
+ * @date  2023/12/07 09:39
+ **/
+public interface PigChildbirthMapper extends BaseMapper<PigChildbirth> {
+}

+ 5 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/mapper/mapping/PigChildbirthMapper.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="vip.xiaonuo.modular.pigchildbirth.mapper.PigChildbirthMapper">
+
+</mapper>

+ 82 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/param/PigChildbirthAddParam.java

@@ -0,0 +1,82 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigchildbirth.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 母猪妊娠添加参数
+ *
+ * @author wang
+ * @date  2023/12/07 09:39
+ **/
+@Getter
+@Setter
+public class PigChildbirthAddParam {
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号", position = 2)
+    private String eartag;
+
+    /** 妊娠日期 */
+    @ApiModelProperty(value = "妊娠日期", position = 3)
+    private Date birthDate;
+
+    /** 妊娠天数 */
+    @ApiModelProperty(value = "妊娠天数", position = 4)
+    private String birthDay;
+
+    /** 妊娠方式 */
+    @ApiModelProperty(value = "妊娠方式", position = 5)
+    private String birthType;
+
+    /** 妊娠结果 */
+    @ApiModelProperty(value = "妊娠结果", position = 6)
+    private String birthResult;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 7)
+    private Date createDate;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 9)
+    private String remark;
+
+    /** 妊娠异常说明 */
+    @ApiModelProperty(value = "妊娠异常说明", position = 10)
+    private String birthError;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 12)
+    private String orgId;
+
+    /** 位置id */
+    @ApiModelProperty(value = "位置id", position = 13)
+    private String unitId;
+
+    /** 位置名称 */
+    @ApiModelProperty(value = "位置名称", position = 14)
+    private String unitName;
+
+    /** 转入位置 */
+    @ApiModelProperty(value = "转入位置", position = 15)
+    private String intoId;
+
+}

+ 87 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/param/PigChildbirthEditParam.java

@@ -0,0 +1,87 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigchildbirth.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 母猪妊娠编辑参数
+ *
+ * @author wang
+ * @date  2023/12/07 09:39
+ **/
+@Getter
+@Setter
+public class PigChildbirthEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号", position = 2)
+    private String eartag;
+
+    /** 妊娠日期 */
+    @ApiModelProperty(value = "妊娠日期", position = 3)
+    private Date birthDate;
+
+    /** 妊娠天数 */
+    @ApiModelProperty(value = "妊娠天数", position = 4)
+    private String birthDay;
+
+    /** 妊娠方式 */
+    @ApiModelProperty(value = "妊娠方式", position = 5)
+    private String birthType;
+
+    /** 妊娠结果 */
+    @ApiModelProperty(value = "妊娠结果", position = 6)
+    private String birthResult;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 7)
+    private Date createDate;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 9)
+    private String remark;
+
+    /** 妊娠异常说明 */
+    @ApiModelProperty(value = "妊娠异常说明", position = 10)
+    private String birthError;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 12)
+    private String orgId;
+
+    /** 位置id */
+    @ApiModelProperty(value = "位置id", position = 13)
+    private String unitId;
+
+    /** 位置名称 */
+    @ApiModelProperty(value = "位置名称", position = 14)
+    private String unitName;
+
+    /** 转入位置 */
+    @ApiModelProperty(value = "转入位置", position = 15)
+    private String intoId;
+
+}

+ 35 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/param/PigChildbirthIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigchildbirth.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 母猪妊娠Id参数
+ *
+ * @author wang
+ * @date  2023/12/07 09:39
+ **/
+@Getter
+@Setter
+public class PigChildbirthIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private Integer id;
+}

+ 63 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/param/PigChildbirthPageParam.java

@@ -0,0 +1,63 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigchildbirth.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 母猪妊娠查询参数
+ *
+ * @author wang
+ * @date  2023/12/07 09:39
+ **/
+@Getter
+@Setter
+public class PigChildbirthPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号")
+    private String eartag;
+
+    /** 妊娠日期开始 */
+    @ApiModelProperty(value = "妊娠日期开始")
+    private String startBirthDate;
+
+    /** 妊娠日期结束 */
+    @ApiModelProperty(value = "妊娠日期结束")
+    private String endBirthDate;
+
+}

+ 80 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/service/PigChildbirthService.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigchildbirth.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.modular.pigchildbirth.entity.PigChildbirth;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthAddParam;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthEditParam;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthIdParam;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthPageParam;
+
+import java.util.List;
+
+/**
+ * 母猪妊娠Service接口
+ *
+ * @author wang
+ * @date  2023/12/07 09:39
+ **/
+public interface PigChildbirthService extends IService<PigChildbirth> {
+
+    /**
+     * 获取母猪妊娠分页
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     */
+    Page<PigChildbirth> page(PigChildbirthPageParam pigChildbirthPageParam);
+
+    /**
+     * 添加母猪妊娠
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     */
+    void add(PigChildbirthAddParam pigChildbirthAddParam);
+
+    /**
+     * 编辑母猪妊娠
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     */
+    void edit(PigChildbirthEditParam pigChildbirthEditParam);
+
+    /**
+     * 删除母猪妊娠
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     */
+    void delete(List<PigChildbirthIdParam> pigChildbirthIdParamList);
+
+    /**
+     * 获取母猪妊娠详情
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     */
+    PigChildbirth detail(PigChildbirthIdParam pigChildbirthIdParam);
+
+    /**
+     * 获取母猪妊娠详情
+     *
+     * @author wang
+     * @date  2023/12/07 09:39
+     **/
+    PigChildbirth queryEntity(Integer id);
+}

+ 100 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigchildbirth/service/impl/PigChildbirthServiceImpl.java

@@ -0,0 +1,100 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigchildbirth.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.modular.pigchildbirth.entity.PigChildbirth;
+import vip.xiaonuo.modular.pigchildbirth.mapper.PigChildbirthMapper;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthAddParam;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthEditParam;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthIdParam;
+import vip.xiaonuo.modular.pigchildbirth.param.PigChildbirthPageParam;
+import vip.xiaonuo.modular.pigchildbirth.service.PigChildbirthService;
+
+import java.util.List;
+
+/**
+ * 母猪妊娠Service接口实现类
+ *
+ * @author wang
+ * @date  2023/12/07 09:39
+ **/
+@Service
+public class PigChildbirthServiceImpl extends ServiceImpl<PigChildbirthMapper, PigChildbirth> implements PigChildbirthService {
+
+    @Override
+    public Page<PigChildbirth> page(PigChildbirthPageParam pigChildbirthPageParam) {
+        QueryWrapper<PigChildbirth> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isNotEmpty(pigChildbirthPageParam.getEartag())) {
+            queryWrapper.lambda().like(PigChildbirth::getEartag, pigChildbirthPageParam.getEartag());
+        }
+        if(ObjectUtil.isNotEmpty(pigChildbirthPageParam.getStartBirthDate()) && ObjectUtil.isNotEmpty(pigChildbirthPageParam.getEndBirthDate())) {
+            queryWrapper.lambda().between(PigChildbirth::getBirthDate, pigChildbirthPageParam.getStartBirthDate(), pigChildbirthPageParam.getEndBirthDate());
+        }
+        if(ObjectUtil.isAllNotEmpty(pigChildbirthPageParam.getSortField(), pigChildbirthPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(pigChildbirthPageParam.getSortOrder());
+            queryWrapper.orderBy(true, pigChildbirthPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(pigChildbirthPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(PigChildbirth::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(PigChildbirthAddParam pigChildbirthAddParam) {
+        PigChildbirth pigChildbirth = BeanUtil.toBean(pigChildbirthAddParam, PigChildbirth.class);
+        this.save(pigChildbirth);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(PigChildbirthEditParam pigChildbirthEditParam) {
+        PigChildbirth pigChildbirth = this.queryEntity(pigChildbirthEditParam.getId());
+        BeanUtil.copyProperties(pigChildbirthEditParam, pigChildbirth);
+        this.updateById(pigChildbirth);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<PigChildbirthIdParam> pigChildbirthIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(pigChildbirthIdParamList, PigChildbirthIdParam::getId));
+    }
+
+    @Override
+    public PigChildbirth detail(PigChildbirthIdParam pigChildbirthIdParam) {
+        return this.queryEntity(pigChildbirthIdParam.getId());
+    }
+
+    @Override
+    public PigChildbirth queryEntity(Integer id) {
+        PigChildbirth pigChildbirth = this.getById(id);
+        if(ObjectUtil.isEmpty(pigChildbirth)) {
+            throw new CommonException("母猪妊娠不存在,id值为:{}", id);
+        }
+        return pigChildbirth;
+    }
+}

+ 132 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/controller/PigCureController.java

@@ -0,0 +1,132 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigcure.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.modular.pigcure.entity.PigCure;
+import vip.xiaonuo.modular.pigcure.param.PigCureAddParam;
+import vip.xiaonuo.modular.pigcure.param.PigCureAddParam;
+import vip.xiaonuo.modular.pigcure.param.PigCureEditParam;
+import vip.xiaonuo.modular.pigcure.param.PigCureIdParam;
+import vip.xiaonuo.modular.pigcure.param.PigCurePageParam;
+import vip.xiaonuo.modular.pigcure.service.PigCureService;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * 防治信息控制器
+ *
+ * @author wang
+ * @date  2023/12/08 10:03
+ */
+@Api(tags = "防治信息控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class PigCureController {
+
+    @Resource
+    private PigCureService pigCureService;
+
+    /**
+     * 获取防治信息分页
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取防治信息分页")
+    @SaCheckPermission("/pig/pigcure/page")
+    @GetMapping("/pig/pigcure/page")
+    public CommonResult<Page<PigCure>> page(PigCurePageParam pigCurePageParam) {
+        return CommonResult.data(pigCureService.page(pigCurePageParam));
+    }
+
+    /**
+     * 添加防治信息
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加防治信息")
+    @CommonLog("添加防治信息")
+    @SaCheckPermission("/pig/pigcure/add")
+    @PostMapping("/pig/pigcure/add")
+    public CommonResult<String> add(@RequestBody @Valid PigCureAddParam pigCureAddParam) {
+        pigCureService.add(pigCureAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑防治信息
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑防治信息")
+    @CommonLog("编辑防治信息")
+    @SaCheckPermission("/pig/pigcure/edit")
+    @PostMapping("/pig/pigcure/edit")
+    public CommonResult<String> edit(@RequestBody @Valid PigCureEditParam pigCureEditParam) {
+        pigCureService.edit(pigCureEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除防治信息
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除防治信息")
+    @CommonLog("删除防治信息")
+    @SaCheckPermission("/pig/pigcure/delete")
+    @PostMapping("/pig/pigcure/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   CommonValidList<PigCureIdParam> pigCureIdParamList) {
+        pigCureService.delete(pigCureIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取防治信息详情
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取防治信息详情")
+    @SaCheckPermission("/pig/pigcure/detail")
+    @GetMapping("/pig/pigcure/detail")
+    public CommonResult<PigCure> detail(@Valid PigCureIdParam pigCureIdParam) {
+        return CommonResult.data(pigCureService.detail(pigCureIdParam));
+    }
+}

+ 93 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/entity/PigCure.java

@@ -0,0 +1,93 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigcure.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 防治信息实体
+ *
+ * @author wang
+ * @date  2023/12/08 10:03
+ **/
+@Getter
+@Setter
+@TableName("pig_cure")
+public class PigCure {
+
+    /** ID */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "ID", position = 1)
+    private Integer id;
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号", position = 2)
+    private String eartag;
+
+    /** 当前位置id */
+    @ApiModelProperty(value = "当前位置id", position = 3)
+    private String unitId;
+
+    /** 当前位置 */
+    @ApiModelProperty(value = "当前位置", position = 4)
+    private String unitName;
+
+    /** 转入位置 */
+    @ApiModelProperty(value = "转入位置", position = 5)
+    private String intoName;
+
+    /** 防治日期 */
+    @ApiModelProperty(value = "防治日期", position = 6)
+    private Date cureDate;
+
+    /** 所患疾病 */
+    @ApiModelProperty(value = "所患疾病", position = 7)
+    private String cureName;
+
+    /** 治疗药物 */
+    @ApiModelProperty(value = "治疗药物", position = 8)
+    private String drug;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 9)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 10)
+    private Date createDate;
+
+    /** 创建人 */
+    @ApiModelProperty(value = "创建人", position = 11)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 删除标志 */
+    @ApiModelProperty(value = "删除标志", position = 12)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 13)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 14)
+    private String orgId;
+}

+ 34 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/enums/PigCureEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigcure.enums;
+
+import lombok.Getter;
+
+/**
+ * 防治信息枚举
+ *
+ * @author wang
+ * @date  2023/12/08 10:03
+ **/
+@Getter
+public enum PigCureEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    PigCureEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/mapper/PigCureMapper.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigcure.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.modular.pigcure.entity.PigCure;
+
+/**
+ * 防治信息Mapper接口
+ *
+ * @author wang
+ * @date  2023/12/08 10:03
+ **/
+public interface PigCureMapper extends BaseMapper<PigCure> {
+}

+ 5 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/mapper/mapping/PigCureMapper.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="vip.xiaonuo.modular.pigcure.mapper.PigCureMapper">
+
+</mapper>

+ 74 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/param/PigCureAddParam.java

@@ -0,0 +1,74 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigcure.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 防治信息添加参数
+ *
+ * @author wang
+ * @date  2023/12/08 10:03
+ **/
+@Getter
+@Setter
+public class PigCureAddParam {
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号", position = 2)
+    private String eartag;
+
+    /** 当前位置id */
+    @ApiModelProperty(value = "当前位置id", position = 3)
+    private String unitId;
+
+    /** 当前位置 */
+    @ApiModelProperty(value = "当前位置", position = 4)
+    private String unitName;
+
+    /** 转入位置 */
+    @ApiModelProperty(value = "转入位置", position = 5)
+    private String intoName;
+
+    /** 防治日期 */
+    @ApiModelProperty(value = "防治日期", position = 6)
+    private Date cureDate;
+
+    /** 所患疾病 */
+    @ApiModelProperty(value = "所患疾病", position = 7)
+    private String cureName;
+
+    /** 治疗药物 */
+    @ApiModelProperty(value = "治疗药物", position = 8)
+    private String drug;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 9)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 10)
+    private Date createDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 14)
+    private String orgId;
+
+}

+ 79 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/param/PigCureEditParam.java

@@ -0,0 +1,79 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigcure.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 防治信息编辑参数
+ *
+ * @author wang
+ * @date  2023/12/08 10:03
+ **/
+@Getter
+@Setter
+public class PigCureEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号", position = 2)
+    private String eartag;
+
+    /** 当前位置id */
+    @ApiModelProperty(value = "当前位置id", position = 3)
+    private String unitId;
+
+    /** 当前位置 */
+    @ApiModelProperty(value = "当前位置", position = 4)
+    private String unitName;
+
+    /** 转入位置 */
+    @ApiModelProperty(value = "转入位置", position = 5)
+    private String intoName;
+
+    /** 防治日期 */
+    @ApiModelProperty(value = "防治日期", position = 6)
+    private Date cureDate;
+
+    /** 所患疾病 */
+    @ApiModelProperty(value = "所患疾病", position = 7)
+    private String cureName;
+
+    /** 治疗药物 */
+    @ApiModelProperty(value = "治疗药物", position = 8)
+    private String drug;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注", position = 9)
+    private String remark;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 10)
+    private Date createDate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 14)
+    private String orgId;
+
+}

+ 35 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/param/PigCureIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigcure.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 防治信息Id参数
+ *
+ * @author wang
+ * @date  2023/12/08 10:03
+ **/
+@Getter
+@Setter
+public class PigCureIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private Integer id;
+}

+ 63 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/param/PigCurePageParam.java

@@ -0,0 +1,63 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigcure.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 防治信息查询参数
+ *
+ * @author wang
+ * @date  2023/12/08 10:03
+ **/
+@Getter
+@Setter
+public class PigCurePageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+    /** 耳标号 */
+    @ApiModelProperty(value = "耳标号")
+    private String eartag;
+
+    /** 防治日期开始 */
+    @ApiModelProperty(value = "防治日期开始")
+    private String startCureDate;
+
+    /** 防治日期结束 */
+    @ApiModelProperty(value = "防治日期结束")
+    private String endCureDate;
+
+}

+ 80 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/service/PigCureService.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.pigcure.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.modular.pigcure.entity.PigCure;
+import vip.xiaonuo.modular.pigcure.param.PigCureAddParam;
+import vip.xiaonuo.modular.pigcure.param.PigCureEditParam;
+import vip.xiaonuo.modular.pigcure.param.PigCureIdParam;
+import vip.xiaonuo.modular.pigcure.param.PigCurePageParam;
+
+import java.util.List;
+
+/**
+ * 防治信息Service接口
+ *
+ * @author wang
+ * @date  2023/12/08 10:03
+ **/
+public interface PigCureService extends IService<PigCure> {
+
+    /**
+     * 获取防治信息分页
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     */
+    Page<PigCure> page(PigCurePageParam pigCurePageParam);
+
+    /**
+     * 添加防治信息
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     */
+    void add(PigCureAddParam pigCureAddParam);
+
+    /**
+     * 编辑防治信息
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     */
+    void edit(PigCureEditParam pigCureEditParam);
+
+    /**
+     * 删除防治信息
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     */
+    void delete(List<PigCureIdParam> pigCureIdParamList);
+
+    /**
+     * 获取防治信息详情
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     */
+    PigCure detail(PigCureIdParam pigCureIdParam);
+
+    /**
+     * 获取防治信息详情
+     *
+     * @author wang
+     * @date  2023/12/08 10:03
+     **/
+    PigCure queryEntity(Integer id);
+}

+ 0 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/pigcure/service/impl/PigCureServiceImpl.java


Некоторые файлы не были показаны из-за большого количества измененных файлов