Jelajahi Sumber

初始化项目

liuyaowen 1 tahun lalu
melakukan
0068f858d7
100 mengubah file dengan 9239 tambahan dan 0 penghapusan
  1. 34 0
      .gitignore
  2. 76 0
      pom.xml
  3. 26 0
      src/main/java/com/yunfeiyun/agmp/tss/AgmpTssApplication.java
  4. 85 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/MppMaterialController.java
  5. 135 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/MppProductController.java
  6. 124 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/MppQualitycheckController.java
  7. 99 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/MppTaskController.java
  8. 232 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/SpmOrderController.java
  9. 138 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/SysCustomerController.java
  10. 114 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/TssScanrcdController.java
  11. 333 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/TssSourceinfoController.java
  12. 471 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/TssStatController.java
  13. 169 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/TssTracecodeapplyController.java
  14. 248 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/TssTracecodetplController.java
  15. 206 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/TssWarnController.java
  16. 83 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/WmsAssetgoodsController.java
  17. 133 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/WmsChangeController.java
  18. 77 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/WmsChangeapplyController.java
  19. 98 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/WmsChangeapplyitemController.java
  20. 226 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/WmsFinishgoodsController.java
  21. 139 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/WmsStockController.java
  22. 121 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/WmsSupplierController.java
  23. 153 0
      src/main/java/com/yunfeiyun/agmp/tss/controller/WmsWarehouseController.java
  24. 264 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/FmsBlock.java
  25. 87 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/FmsLand.java
  26. 29 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/FmsLandHouse.java
  27. 132 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/FmsPeriod.java
  28. 358 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/FmsTask.java
  29. 133 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/FmsTaskpick.java
  30. 39 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/MppMaterial.java
  31. 49 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/MppProduct.java
  32. 51 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/MppQualitycheck.java
  33. 59 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/MppTask.java
  34. 331 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/SpmOrder.java
  35. 161 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/SysCustomer.java
  36. 58 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/TssGoodsperiodrcd.java
  37. 131 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/TssScanrcd.java
  38. 41 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/TssSourceEnvironment.java
  39. 192 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/TssSourceinfo.java
  40. 68 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/TssSourceperiod.java
  41. 143 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/TssTracecodeapply.java
  42. 119 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/TssTracecodetpl.java
  43. 298 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/TssTracecodetplparam.java
  44. 44 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/TssWarn.java
  45. 33 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/TssWarnread.java
  46. 19 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/WmsAssetgoods.java
  47. 180 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/WmsChange.java
  48. 194 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/WmsChangeapply.java
  49. 177 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/WmsChangeapplyitem.java
  50. 70 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/WmsFinishgoods.java
  51. 86 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/WmsGoods.java
  52. 104 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/WmsStock.java
  53. 189 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/WmsSupplier.java
  54. 68 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/WmsWarehouse.java
  55. 120 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/dto/FmsTaskrcdListDto.java
  56. 63 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/dto/TssSourceperiodDto.java
  57. 57 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AddAgmTaskPickOutReqVo.java
  58. 38 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AddAgmTaskPickReqVo.java
  59. 49 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AddMppQualitycheckReqVo.java
  60. 97 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AddMppTaskReqVo.java
  61. 82 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AddTssSourceinfoReqVo.java
  62. 74 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AgmTaskPickListReqVo.java
  63. 24 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AppSeedOutAddHistoryListReqVo.java
  64. 66 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AppSeedOutAddReqVo.java
  65. 69 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/FmsTaskListReqVo.java
  66. 22 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/FmsTaskrcdListReqVo.java
  67. 43 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/MppMaterialReqVo.java
  68. 52 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SelectCountOfScreenReqVo.java
  69. 31 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SelectOfTssStatReqVo.java
  70. 15 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SpmOrderListReqVo.java
  71. 25 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SpmOrderLogisticsInfoReqVo.java
  72. 11 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SpmOrderMatchTraceCodeReqVo.java
  73. 13 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SysCustomerEditReqVo.java
  74. 35 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TarceTaasUpChainReqVo.java
  75. 18 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssScanrcdReqVo.java
  76. 12 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssSourceinfoListReqVo.java
  77. 20 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssTraceCodeGenerateReqVo.java
  78. 15 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssTracecodeapplyReqVo.java
  79. 22 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssTracecodetplEditReqVo.java
  80. 59 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssWarnReqVo.java
  81. 20 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsChangeApplyAuditReqVo.java
  82. 28 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsChangeApplyGoodsListReqVo.java
  83. 20 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsChangeApplyListReqVo.java
  84. 24 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsChangeApplyReqVo.java
  85. 32 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsChangeReqVo.java
  86. 60 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsFinishgoodsReqVo.java
  87. 33 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsStockAddReqVo.java
  88. 28 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsStockBatchChangeReqVo.java
  89. 42 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsStockBatchChangeReqVoItem.java
  90. 21 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsStockListReqVo.java
  91. 15 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsSupplierAddReqVo.java
  92. 9 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsSupplierListReqVo.java
  93. 11 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsWarehouseListReqVo.java
  94. 73 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/AgmTaskPickListResVo.java
  95. 20 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/AppSeedOutAddHistoryResVo.java
  96. 21 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/AppSeedOutAddInfoResVo.java
  97. 13 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/FmsTaskMessageResVo.java
  98. 165 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/FmsTaskResVo.java
  99. 45 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/MppMaterialResVo.java
  100. 0 0
      src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/SpmOrderHistoryResVo.java

+ 34 - 0
.gitignore

@@ -0,0 +1,34 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+/logs

+ 76 - 0
pom.xml

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>agmp-saas-parent</artifactId>
+        <groupId>com.yunfeiyun</groupId>
+        <version>1.0.0</version>
+        <relativePath/>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>jar</packaging>
+    <artifactId>agmp-saas-tss</artifactId>
+    <name>agmp-saas-tss</name>
+    <description>云飞智慧农业农事综合信息管理系统</description>
+    <properties>
+        <agmp.framework.version>1.0.0</agmp.framework.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.yunfeiyun</groupId>
+            <artifactId>agmp-saas-framework</artifactId>
+            <version>${agmp.framework.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.yunfeiyun</groupId>
+            <artifactId>agmp-saas-codegen</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+
+        <!-- 蚂蚁链 -->
+        <dependency>
+            <groupId>com.alipay.mychain.taas</groupId>
+            <artifactId>tschain-sdk</artifactId>
+            <version>3.13.0</version>
+        </dependency>
+        <!--农历计算工具-->
+        <dependency>
+            <groupId>com.github.xkzhangsan</groupId>
+            <artifactId>xk-time</artifactId>
+            <version>3.2.4</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.1.1.RELEASE</version>
+                <configuration>
+                    <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>3.1.0</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                    <warName>${project.artifactId}</warName>
+                </configuration>
+            </plugin>
+        </plugins>
+        <finalName>${project.artifactId}</finalName>
+    </build>
+
+</project>

+ 26 - 0
src/main/java/com/yunfeiyun/agmp/tss/AgmpTssApplication.java

@@ -0,0 +1,26 @@
+package com.yunfeiyun.agmp.tss;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@EnableScheduling
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, MongoDataAutoConfiguration.class })
+@ComponentScan({"com.yunfeiyun"})
+@MapperScan({"com.yunfeiyun.agmp.tss.**.mapper"})
+public class AgmpTssApplication {
+
+    private static final Logger log = LoggerFactory.getLogger(AgmpTssApplication.class);
+
+    public static void main(String[] args) {
+        SpringApplication.run(AgmpTssApplication.class, args);
+        log.info("溯源管理系统启动成功");
+    }
+
+}

+ 85 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/MppMaterialController.java

@@ -0,0 +1,85 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.tss.domain.MppMaterial;
+import com.yunfeiyun.agmp.tss.domain.reqvo.MppMaterialReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.MppMaterialResVo;
+import com.yunfeiyun.agmp.tss.service.IMppMaterialService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 加工原材料Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-03
+ */
+@RestController
+@RequestMapping("/mpp/material")
+public class MppMaterialController extends BaseController
+{
+    @Autowired
+    private IMppMaterialService mppMaterialService;
+
+    /**
+     * 查询加工原材料列表
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:material:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(MppMaterialReqVo reqVo)
+    {
+        startPage();
+        List<MppMaterialResVo> list = mppMaterialService.selectMppMaterialList(reqVo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 获取加工原材料详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:material:info')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(@RequestParam("materialId") String materialId)
+    {
+        return success(mppMaterialService.selectMppMaterialByMaterialId(materialId));
+    }
+
+    /**
+     * 新增加工原材料
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:material:add')")
+    @Log(title = "加工原材料", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody MppMaterial mppMaterial)
+    {
+        return toAjax(mppMaterialService.insertMppMaterial(mppMaterial));
+    }
+
+    /**
+     * 修改加工原材料
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:material:edit')")
+    @Log(title = "加工原材料", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody MppMaterial mppMaterial)
+    {
+        return toAjax(mppMaterialService.updateMppMaterial(mppMaterial));
+    }
+
+    /**
+     * 删除加工原材料
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:material:delete')")
+    @Log(title = "加工原材料", businessType = BusinessType.DELETE)
+	@DeleteMapping("/delete")
+    public AjaxResult remove(@RequestParam("materialIds") String[] materialIds)
+    {
+        return toAjax(mppMaterialService.deleteMppMaterialByMaterialIds(materialIds));
+    }
+}

+ 135 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/MppProductController.java

@@ -0,0 +1,135 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.domain.entity.SysDictData;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.enums.DictTypeEnums;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.common.web.system.service.ISysDictDataService;
+import com.yunfeiyun.agmp.tss.domain.MppProduct;
+import com.yunfeiyun.agmp.tss.service.IMppProductService;
+import com.yunfeiyun.agmp.tss.service.IWmsGoodsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 产品信息Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-21
+ */
+@RestController
+@RequestMapping("/mpp/product")
+public class MppProductController extends BaseController
+{
+    @Autowired
+    private IMppProductService mppProductService;
+    @Autowired
+    private IWmsGoodsService wmsGoodsService;
+    @Autowired
+    private ISysDictDataService dictDataService;
+
+    /**
+     * 查询产品信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:product:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(MppProduct mppProduct)
+    {
+        startPage();
+        List<MppProduct> list = mppProductService.selectMppProductList(mppProduct);
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('mpp:product:select:list')")
+    @GetMapping("/select/list")
+    public TableDataInfo selectList(MppProduct mppProduct)
+    {
+        List<MppProduct> list = mppProductService.selectMppProductList(mppProduct);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出产品信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:product:export')")
+    @Log(title = "产品信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody MppProduct mppProduct)
+    {
+        List<MppProduct> list = mppProductService.selectMppProductList(mppProduct);
+        ExcelUtil<MppProduct> util = new ExcelUtil<MppProduct>(MppProduct.class);
+        util.exportExcel(response, list, "产品信息数据");
+    }
+
+    /**
+     * 获取产品信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:product:info')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(@RequestParam("productId") String productId)
+    {
+        return success(mppProductService.selectMppProductByProductId(productId));
+    }
+
+    /**
+     * 新增产品信息
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:product:add')")
+    @Log(title = "产品信息", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@Valid @RequestBody MppProduct mppProduct)
+    {
+        mppProductService.add(mppProduct);
+        return success();
+    }
+
+    /**
+     * 修改产品信息
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:product:edit')")
+    @Log(title = "产品信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@Valid @RequestBody MppProduct mppProduct)
+    {
+        /* 判断产品信息名称不能重复 */
+        MppProduct mppProduct1 = mppProductService.selectMppProductByProductId(mppProduct.getProductId());
+        if (!mppProduct1.getProductName().equals(mppProduct.getProductName())) {
+            MppProduct reqVo = new MppProduct();
+            reqVo.setProductNameEq(mppProduct.getProductName());
+            List<MppProduct> list = mppProductService.selectMppProductList(reqVo);
+            if (list.size() > 0) {
+                return AjaxResult.error(ErrorCode.FMS_PRODUCT_EXIST.getCode(), ErrorCode.FMS_PRODUCT_EXIST.getMessage());
+            }
+        }
+
+        SysDictData dict = new SysDictData();
+        dict.setDictId(mppProduct.getProductId());
+        dict.setDictName(mppProduct.getProductName());
+        dict.setDicttypeCode(DictTypeEnums.AGM_MPP_PRODUCT.getCode());
+        dict.setDictCode(mppProduct.getProductType());
+        dict.setDictModifier(getLoginname());
+        return toAjax(dictDataService.updateDictData(dict));
+    }
+
+    /**
+     * 删除产品信息
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:product:delete')")
+    @Log(title = "产品信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/delete")
+    public AjaxResult remove(@RequestParam("productIds") String[] productIds)
+    {
+        return toAjax(mppProductService.deleteMppProductByProductIds(productIds));
+    }
+
+}

+ 124 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/MppQualitycheckController.java

@@ -0,0 +1,124 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.constant.ResConstants;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.framework.manager.ResManager;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.common.web.system.domain.SysRes;
+import com.yunfeiyun.agmp.tss.domain.MppQualitycheck;
+import com.yunfeiyun.agmp.tss.domain.reqvo.AddMppQualitycheckReqVo;
+import com.yunfeiyun.agmp.tss.service.IMppQualitycheckService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ *  质检Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-30
+ */
+@RestController
+@RequestMapping("/mpp/qualitycheck")
+public class MppQualitycheckController extends BaseController
+{
+    @Autowired
+    private IMppQualitycheckService mppQualitycheckService;
+    @Autowired
+    private ResManager resManager;
+
+    /**
+     * 查询 质检列表
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:qualitycheck:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(MppQualitycheck mppQualitycheck)
+    {
+        startPage();
+        List<MppQualitycheck> list = mppQualitycheckService.selectMppQualitycheckList(mppQualitycheck);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出 质检列表
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:qualitycheck:export')")
+    @Log(title = " 质检", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody MppQualitycheck mppQualitycheck)
+    {
+        List<MppQualitycheck> list = mppQualitycheckService.selectMppQualitycheckList(mppQualitycheck);
+        ExcelUtil<MppQualitycheck> util = new ExcelUtil<MppQualitycheck>(MppQualitycheck.class);
+        util.exportExcel(response, list, " 质检数据");
+    }
+
+    /**
+     * 获取 质检详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:qualitycheck:info')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(@RequestParam("qualitycheckId") String qualitycheckId)
+    {
+        return success(mppQualitycheckService.selectMppQualitycheckByQualitycheckId(qualitycheckId));
+    }
+
+    /**
+     * 新增 质检
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:qualitycheck:add')")
+    @Log(title = " 质检", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody AddMppQualitycheckReqVo reqVo)
+    {
+        return mppQualitycheckService.insertMppQualitycheck(reqVo);
+    }
+
+    /**
+     * 修改 质检
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:qualitycheck:edit')")
+    @Log(title = " 质检", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody MppQualitycheck mppQualitycheck)
+    {
+        return toAjax(mppQualitycheckService.updateMppQualitycheck(mppQualitycheck));
+    }
+
+    /**
+     * 删除 质检
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:qualitycheck:delete')")
+    @Log(title = " 质检", businessType = BusinessType.DELETE)
+	@DeleteMapping("/delete")
+    public AjaxResult remove(@RequestParam("qualitycheckIds") String[] qualitycheckIds)
+    {
+        return toAjax(mppQualitycheckService.deleteMppQualitycheckByQualitycheckIds(qualitycheckIds));
+    }
+
+    /**
+     * 质检图片上传
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:qualitycheck:upload')")
+    @Log(title = "质检图片上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/upload")
+    public AjaxResult periodUpload(MultipartFile file) throws Exception
+    {
+        if (!file.isEmpty())
+        {
+            SysRes sysRes  = resManager.uploadRes( ResConstants.BizType.MPPQUALITYCHECK, ResConstants.mediaType.IMG, "", file,getLoginUser());
+            return success(sysRes);
+        }
+        return error(ErrorCode.UPLOAD_FAIL.getCode());
+    }
+
+}

+ 99 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/MppTaskController.java

@@ -0,0 +1,99 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.MppTask;
+import com.yunfeiyun.agmp.tss.domain.reqvo.AddMppTaskReqVo;
+import com.yunfeiyun.agmp.tss.service.IMppTaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 农产品生产任务Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-03
+ */
+@RestController
+@RequestMapping("/mpp/task")
+public class MppTaskController extends BaseController
+{
+    @Autowired
+    private IMppTaskService mppTaskService;
+
+    /**
+     * 查询农产品生产任务列表
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:task:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(MppTask mppTask)
+    {
+        startPage();
+        List<MppTask> list = mppTaskService.selectMppTaskList(mppTask);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出农产品生产任务列表
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:task:export')")
+    @Log(title = "农产品生产任务", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody MppTask mppTask)
+    {
+        List<MppTask> list = mppTaskService.selectMppTaskList(mppTask);
+        ExcelUtil<MppTask> util = new ExcelUtil<MppTask>(MppTask.class);
+        util.exportExcel(response, list, "农产品生产任务数据");
+    }
+
+    /**
+     * 获取农产品生产任务详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:task:info')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(@RequestParam("taskId") String taskId)
+    {
+        return success(mppTaskService.selectMppTaskByTaskId(taskId));
+    }
+
+    /**
+     * 新增农产品生产任务
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:task:add')")
+    @Log(title = "农产品生产任务", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody AddMppTaskReqVo reqVo)
+    {
+        return mppTaskService.insertMppTask(reqVo);
+    }
+
+    /**
+     * 修改农产品生产任务
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:task:edit')")
+    @Log(title = "农产品生产任务", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody MppTask mppTask)
+    {
+        return toAjax(mppTaskService.updateMppTask(mppTask));
+    }
+
+    /**
+     * 删除农产品生产任务
+     */
+    @PreAuthorize("@ss.hasPermi('mpp:task:delete')")
+    @Log(title = "农产品生产任务", businessType = BusinessType.DELETE)
+	@DeleteMapping("/delete")
+    public AjaxResult remove(@RequestParam("taskIds") String[] taskIds)
+    {
+        return toAjax(mppTaskService.deleteMppTaskByTaskIds(taskIds));
+    }
+}

+ 232 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/SpmOrderController.java

@@ -0,0 +1,232 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.enums.SpmOrderStatus;
+import com.yunfeiyun.agmp.common.utils.SecurityUtils;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.SpmOrder;
+import com.yunfeiyun.agmp.tss.domain.reqvo.SpmOrderListReqVo;
+import com.yunfeiyun.agmp.tss.domain.reqvo.SpmOrderLogisticsInfoReqVo;
+import com.yunfeiyun.agmp.tss.domain.reqvo.SpmOrderMatchTraceCodeReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.SpmOrderLogisticsInfoResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.SpmOrderLogisticsSumInfoResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.SpmOrderResVo;
+import com.yunfeiyun.agmp.tss.service.ISpmOrderService;
+import com.yunfeiyun.agmp.tss.util.DataAuthUtil;
+import com.yunfeiyun.agmp.tss.util.ExportUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 农产品出库登记单Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-06
+ */
+@RestController
+@RequestMapping("/spm/order")
+public class SpmOrderController extends BaseController
+{
+    @Autowired
+    private ISpmOrderService spmOrderService;
+    @Autowired
+    private DataAuthUtil dataAuthUtil;
+    /**
+     * 查询农产品出库登记单列表
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(SpmOrderListReqVo spmOrderListReqVo)
+    {
+        if(SecurityUtils.isValidate()){
+            List<String> warehouseId = dataAuthUtil.getManagerWarehouse();
+            if(warehouseId.isEmpty()){
+                return getDataTable(new ArrayList<>());
+            }
+            spmOrderListReqVo.setWarehouseIds(warehouseId);
+        }
+        startPage();
+        List<SpmOrderResVo> list = spmOrderService.selectSpmOrderResVoList(spmOrderListReqVo);
+        return getDataTable(list);
+    }
+    /**
+     * 查询农产品物流列表
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:logistics:list')")
+    @GetMapping("/logistics/list")
+    public TableDataInfo logisticsList(SpmOrderLogisticsInfoReqVo spmOrderLogisticsInfoReqVo)
+    {
+        if(SecurityUtils.isValidate()){
+            List<String> warehouseId = dataAuthUtil.getManagerWarehouse();
+            if(warehouseId.isEmpty()){
+                return getDataTable(new ArrayList<>());
+            }
+            spmOrderLogisticsInfoReqVo.setWarehouseIds(warehouseId);
+        }
+        startPage();
+        List<SpmOrderLogisticsInfoResVo> list = spmOrderService.selectSpmOrderLogisticsInfoReqVo(spmOrderLogisticsInfoReqVo);
+        return getDataTable(list);
+    }
+    /**
+     * 查询农产品物流汇总信息
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:logistics:sum')")
+    @GetMapping("/logistics/sum")
+    public AjaxResult logisticsSum(SpmOrderLogisticsInfoReqVo spmOrderLogisticsInfoReqVo)
+    {
+        if(SecurityUtils.isValidate()){
+            List<String> warehouseIds = dataAuthUtil.getManagerWarehouse();
+            if(warehouseIds.isEmpty()){
+                return AjaxResult.success(new ArrayList<>());
+            }
+            spmOrderLogisticsInfoReqVo.setWarehouseIds(warehouseIds);
+        }
+        List<SpmOrderLogisticsSumInfoResVo> selectSpmOrderLogisticsSumInfo  = spmOrderService.selectSpmOrderLogisticsSumInfo(spmOrderLogisticsInfoReqVo);
+        return AjaxResult.success(selectSpmOrderLogisticsSumInfo);
+    }
+
+    /**
+     * 导出农产品出库登记单列表
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:export')")
+    @Log(title = "农产品出库登记单", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody SpmOrderListReqVo spmOrderListReqVo)
+    {
+        if(SecurityUtils.isValidate()){
+            List<String> warehouseId = dataAuthUtil.getManagerWarehouse();
+            if(warehouseId.isEmpty()){
+                ExcelUtil<SpmOrderResVo> util = new ExcelUtil<>(SpmOrderResVo.class);
+                util.exportExcel(response, new ArrayList<>(), "销售管理+数据详情", "销售管理+数据详情");
+                return;
+            }
+            spmOrderListReqVo.setWarehouseIds(warehouseId);
+        }
+        List<SpmOrderResVo> list = spmOrderService.selectSpmOrderResVoList(spmOrderListReqVo);
+        for (int i = 0; i < list.size(); i++) {
+            list.get(i).setIndex(i + 1);
+        }
+        ExcelUtil<SpmOrderResVo> util = new ExcelUtil<>(SpmOrderResVo.class);
+        util.exportExcel(response, list, "销售管理+数据详情", "销售管理+数据详情");
+    }
+
+    /**
+     * 导出物流信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:logistics:list:export')")
+    @Log(title = "导出物流信息列表", businessType = BusinessType.EXPORT)
+    @PostMapping("/logistics/list/export")
+    public void logisticsListExport(HttpServletResponse response,@RequestBody SpmOrderLogisticsInfoReqVo spmOrderLogisticsInfoReqVo)
+    {
+        if(SecurityUtils.isValidate()){
+            List<String> warehouseId = dataAuthUtil.getManagerWarehouse();
+            if(warehouseId.isEmpty()){
+                ExcelUtil<SpmOrderLogisticsInfoResVo> util = new ExcelUtil<>(SpmOrderLogisticsInfoResVo.class);
+                util.exportExcel(response, new ArrayList<>(), "物流信息列表", "物流信息列表");
+                return;
+            }
+            spmOrderLogisticsInfoReqVo.setWarehouseIds(warehouseId);
+        }
+        ExportUtil.checkTime(spmOrderLogisticsInfoReqVo.getOrderSenddateStart(), spmOrderLogisticsInfoReqVo.getOrderSenddateEnd());
+        List<SpmOrderLogisticsInfoResVo> list = spmOrderService.selectSpmOrderLogisticsInfoReqVo(spmOrderLogisticsInfoReqVo);
+        for (int i = 0; i < list.size(); i++) {
+            list.get(i).setIndex(i + 1);
+        }
+        ExcelUtil<SpmOrderLogisticsInfoResVo> util = new ExcelUtil<>(SpmOrderLogisticsInfoResVo.class);
+        util.exportExcel(response, list, "物流信息列表", "物流信息列表");
+    }
+
+    /**
+     * 获取农产品出库登记单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:info')")
+    @GetMapping(value = "/info/{orderId}")
+    public AjaxResult getInfo(@PathVariable("orderId") String orderId)
+    {
+        return success(spmOrderService.selectSpmOrderByOrderId(orderId));
+    }
+
+    /**
+     * 销售下单
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:sale')")
+    @PostMapping(value = "/sale")
+    public AjaxResult sale(@RequestBody SpmOrder spmOrder){
+        spmOrderService.sale(spmOrder);
+        return success();
+    }
+
+    /**
+     * 发货
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:deliver')")
+    @PostMapping(value = "/deliver")
+    public AjaxResult deliver(@RequestBody SpmOrder spmOrder){
+        spmOrderService.deliver(spmOrder);
+        return success();
+    }
+    /**
+     * 取消发货
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:cancel')")
+    @PostMapping(value = "/cancel")
+    public AjaxResult cancel(@RequestBody SpmOrder spmOrder){
+        if(spmOrderService.updateSpmOrder(spmOrder)==1){
+            return success();
+        }else {
+            return error();
+        }
+    }
+    /**
+     * 送达
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:delivered:batch')")
+    @PostMapping(value = "/delivered/batch")
+    public AjaxResult delivered(@RequestBody String[] ids){
+        SpmOrder spmOrder = new SpmOrder();
+        spmOrder.setOrderStatus(SpmOrderStatus.received.getCode());
+        if(spmOrderService.updateSpmOrderByIds(spmOrder,ids)==1){
+            return success();
+        }else {
+            return error();
+        }
+    }
+
+    /**
+     * 订单关联溯源码
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:tracecode:match')")
+    @PostMapping(value = "/tracecode/match")
+    public AjaxResult tracecodeMatch(@RequestBody SpmOrderMatchTraceCodeReqVo spmOrderMatchTraceCodeReqVo){
+        if(spmOrderService.traceCodeMatch(spmOrderMatchTraceCodeReqVo)){
+            return success();
+        }else {
+            return error();
+        }
+    }
+    /**
+     * 溯源码解绑
+     */
+    @PreAuthorize("@ss.hasPermi('spm:order:tracecode:unbind')")
+    @PostMapping(value = "/tracecode/unbind")
+    public AjaxResult traceCodeUnbind(@RequestParam String tarcecodeapplyno){
+        if(spmOrderService.traceCodeUnbind(tarcecodeapplyno)){
+            return success();
+        }else {
+            return error();
+        }
+    }
+
+
+
+
+}

+ 138 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/SysCustomerController.java

@@ -0,0 +1,138 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.constant.ResConstants;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.framework.manager.ResManager;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.common.web.system.domain.SysRes;
+import com.yunfeiyun.agmp.tss.domain.SysCustomer;
+import com.yunfeiyun.agmp.tss.domain.reqvo.SysCustomerEditReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.SysCustomerExportResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.SysCustomerResVo;
+import com.yunfeiyun.agmp.tss.service.ISysCustomerService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 客户Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-06
+ */
+@RestController
+@RequestMapping("/sys/customer")
+public class SysCustomerController extends BaseController
+{
+    @Autowired
+    private ISysCustomerService sysCustomerService;
+    @Resource
+    private ResManager resManager;
+
+    /**
+     * 查询客户列表
+     */
+    @PreAuthorize("@ss.hasPermi('sys:customer:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(SysCustomer sysCustomer)
+    {
+        startPage();
+        List<SysCustomerResVo> list = sysCustomerService.selectSysCustomerList(sysCustomer);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出客户列表
+     */
+    @PreAuthorize("@ss.hasPermi('sys:customer:export')")
+    @Log(title = "客户", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody SysCustomer sysCustomer)
+    {
+        List<SysCustomerResVo> list = sysCustomerService.selectSysCustomerList(sysCustomer);
+        List<SysCustomerExportResVo> resVoList = new ArrayList<>();
+        for (int i = 0; i < list.size(); i++) {
+            SysCustomerExportResVo resVo = new SysCustomerExportResVo();
+            BeanUtils.copyProperties(list.get(i), resVo);
+            resVo.setIndex(i + 1);
+            resVoList.add(resVo);
+        }
+        ExcelUtil<SysCustomerExportResVo> util = new ExcelUtil<>(SysCustomerExportResVo.class);
+        util.exportExcel(response, resVoList, "客户信息表", "客户信息表");
+    }
+
+    /**
+     * 获取客户详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('sys:customer:info')")
+    @GetMapping(value = "/info/{customerId}")
+    public AjaxResult getInfo(@PathVariable("customerId") String customerId)
+    {
+        return success(sysCustomerService.selectSysCustomerByCustomerId(customerId));
+    }
+
+    /**
+     * 新增客户
+     */
+    @PreAuthorize("@ss.hasPermi('sys:customer:add')")
+    @Log(title = "客户", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody SysCustomerEditReqVo sysCustomerEditReqVo)
+    {
+        sysCustomerEditReqVo.setCustomerId(sysCustomerEditReqVo.getId());
+        sysCustomerEditReqVo.setCustomerDelstatus(0);
+        resManager.updateRes(sysCustomerEditReqVo.getResId(),sysCustomerEditReqVo.getCustomerId());
+        return toAjax(sysCustomerService.insertSysCustomer(sysCustomerEditReqVo));
+    }
+
+    /**
+     * 修改客户
+     */
+    @PreAuthorize("@ss.hasPermi('sys:customer:edit')")
+    @Log(title = "客户", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody SysCustomerEditReqVo sysCustomerEditReqVo)
+    {
+        resManager.updateRes(sysCustomerEditReqVo.getResId(),sysCustomerEditReqVo.getCustomerId());
+        return toAjax(sysCustomerService.updateSysCustomer(sysCustomerEditReqVo));
+    }
+
+    /**
+     * 删除客户
+     */
+    @PreAuthorize("@ss.hasPermi('sys:customer:delete')")
+    @Log(title = "客户", businessType = BusinessType.DELETE)
+	@DeleteMapping("/delete")
+    public AjaxResult remove(String id)
+    {
+        return toAjax(sysCustomerService.deleteSysCustomerByCustomerId(id));
+    }
+
+    /**
+     * 体检报告图片上传
+     */
+    @PreAuthorize("@ss.hasPermi('sys:customer:quality:upload')")
+    @Log(title = "体检报告图片上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/quality/upload")
+    public AjaxResult qualityUpload(MultipartFile file) throws Exception
+    {
+        if (!file.isEmpty())
+        {
+            SysRes sysRes  = resManager.uploadRes( ResConstants.BizType.CUSTOMER_QUALIFICATION, ResConstants.mediaType.IMG, "", file,getLoginUser());
+            return success(sysRes);
+        }
+        return error(ErrorCode.UPLOAD_FAIL.getCode());
+    }
+}

+ 114 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/TssScanrcdController.java

@@ -0,0 +1,114 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.TssScanrcd;
+import com.yunfeiyun.agmp.tss.domain.reqvo.TssScanrcdReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.TssScanrcdExportResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.TssScanrcdResVo;
+import com.yunfeiyun.agmp.tss.service.ITssScanrcdService;
+import com.yunfeiyun.agmp.tss.util.ExportUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 溯源码扫码记录Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-04
+ */
+@RestController
+@RequestMapping("/tss/scanrcd")
+public class TssScanrcdController extends BaseController
+{
+    @Autowired
+    private ITssScanrcdService tssScanrcdService;
+
+    /**
+     * 查询溯源码扫码记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:scanrcd:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TssScanrcdReqVo tssScanrcdReqVo)
+    {
+        startPage();
+        List<TssScanrcdResVo> list = tssScanrcdService.selectTssScanrcdList(tssScanrcdReqVo);
+        return getDataTable(list);
+    }
+
+
+
+    /**
+     * 导出溯源码扫码记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:scanrcd:export')")
+    @Log(title = "溯源码扫码记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody TssScanrcdReqVo tssScanrcdReqVo)
+    {
+        ExportUtil.checkTime(tssScanrcdReqVo.getScanTimeStart(), tssScanrcdReqVo.getScanTimeEnd());
+        List<TssScanrcdResVo> list = tssScanrcdService.selectTssScanrcdList(tssScanrcdReqVo);
+        List<TssScanrcdExportResVo> exportList = new ArrayList<>();
+        for (int i = 0; i < list.size(); i++) {
+            TssScanrcdExportResVo resVo = new TssScanrcdExportResVo();
+            BeanUtils.copyProperties(list.get(i), resVo);
+            resVo.setIndex(i + 1);
+            exportList.add(resVo);
+        }
+        ExcelUtil<TssScanrcdExportResVo> util = new ExcelUtil<TssScanrcdExportResVo>(TssScanrcdExportResVo.class);
+        util.exportExcel(response, exportList, "溯源码扫码记录表", "溯源码扫码记录表");
+    }
+
+    /**
+     * 获取溯源码扫码记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('tss:scanrcd:info')")
+    @GetMapping(value = "/info/{scanrcdId}")
+    public AjaxResult getInfo(@PathVariable("scanrcdId") String scanrcdId)
+    {
+        return success(tssScanrcdService.selectTssScanrcdByScanrcdId(scanrcdId));
+    }
+
+    /**
+     * 新增溯源码扫码记录
+     */
+    @PreAuthorize("@ss.hasPermi('tss:scanrcd:add')")
+    @Log(title = "溯源码扫码记录", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody TssScanrcd tssScanrcd)
+    {
+        return toAjax(tssScanrcdService.insertTssScanrcd(tssScanrcd));
+    }
+
+    /**
+     * 修改溯源码扫码记录
+     */
+    @PreAuthorize("@ss.hasPermi('tss:scanrcd:edit')")
+    @Log(title = "溯源码扫码记录", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody TssScanrcd tssScanrcd)
+    {
+        return toAjax(tssScanrcdService.updateTssScanrcd(tssScanrcd));
+    }
+
+    /**
+     * 删除溯源码扫码记录
+     */
+    @PreAuthorize("@ss.hasPermi('tss:scanrcd:delete')")
+    @Log(title = "溯源码扫码记录", businessType = BusinessType.DELETE)
+	@DeleteMapping("/delete/{scanrcdIds}")
+    public AjaxResult remove(@PathVariable String[] scanrcdIds)
+    {
+        return toAjax(tssScanrcdService.deleteTssScanrcdByScanrcdIds(scanrcdIds));
+    }
+}

+ 333 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/TssSourceinfoController.java

@@ -0,0 +1,333 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.constant.ResConstants;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.framework.manager.ResManager;
+import com.yunfeiyun.agmp.common.utils.ConfigUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.common.web.system.domain.SysRes;
+import com.yunfeiyun.agmp.common.web.system.service.ISysConfigService;
+import com.yunfeiyun.agmp.tss.domain.TssSourceEnvironment;
+import com.yunfeiyun.agmp.tss.domain.TssSourceinfo;
+import com.yunfeiyun.agmp.tss.domain.TssSourceperiod;
+import com.yunfeiyun.agmp.tss.domain.TssTracecodetpl;
+import com.yunfeiyun.agmp.tss.domain.reqvo.AddTssSourceinfoReqVo;
+import com.yunfeiyun.agmp.tss.domain.reqvo.TssSourceinfoListReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.TssSourceinfoListResVo;
+import com.yunfeiyun.agmp.tss.service.*;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 溯源信息Controller
+ *
+ * @author 杨晓辉
+ * @date 2023-06-25
+ */
+@RestController
+@RequestMapping("/tss/sourceinfo")
+public class TssSourceinfoController extends BaseController {
+    @Autowired
+    private ITssSourceinfoService tssSourceinfoService;
+    @Autowired
+    private ITssSourceperiodService tssSourceperiodService;
+    @Autowired
+    private IWmsFinishgoodsService wmsFinishgoodsService;
+    @Autowired
+    private ResManager resManager;
+    @Autowired
+    private ITssSourceEnvironmentService tssSourceEnvironmentService;
+    @Autowired
+    private ITssTracecodetplService tssTracecodetplService;
+    @Resource
+    private ISysConfigService sysConfigService;
+
+    /**
+     * 查询溯源信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TssSourceinfoListReqVo tssSourceinfoListReqVo) throws Exception {
+        startPage();
+        List<TssSourceinfoListResVo> list = tssSourceinfoService.selectTssSourceinfoList(tssSourceinfoListReqVo);
+        Map<String, String> tssTracecodetplPreviewMap = new HashMap<>(16);
+        List<String> traceCodeTplIds = list.stream().map(TssSourceinfoListResVo::getTracecodetplId).collect(Collectors.toList());
+        if (traceCodeTplIds != null && traceCodeTplIds.size() != 0) {
+            List<TssTracecodetpl> tssTracecodetplList = tssTracecodetplService.selectTssTracecodetplByTracecodetplIds(traceCodeTplIds);
+            for (TssTracecodetpl tssTracecodetpl : tssTracecodetplList) {
+                tssTracecodetplPreviewMap.put(tssTracecodetpl.getTracecodetplId(), tssTracecodetplService.drawTraceCode(tssTracecodetpl));
+            }
+            for (TssSourceinfoListResVo tssSourceinfoListResVo : list) {
+                tssSourceinfoListResVo.setTracecodePreviewBase64(tssTracecodetplPreviewMap.get(tssSourceinfoListResVo.getTracecodetplId()));
+            }
+        }
+
+
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:select:list')")
+    @GetMapping("/select/list")
+    public TableDataInfo selectList(TssSourceinfoListReqVo tssSourceinfoListReqVo) {
+        List<TssSourceinfoListResVo> list = tssSourceinfoService.selectTssSourceinfoList(tssSourceinfoListReqVo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出溯源信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:export')")
+    @Log(title = "溯源信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, @RequestBody TssSourceinfoListReqVo tssSourceinfoListReqVo) {
+        List<TssSourceinfoListResVo> list = tssSourceinfoService.selectTssSourceinfoList(tssSourceinfoListReqVo);
+        ExcelUtil<TssSourceinfoListResVo> util = new ExcelUtil<TssSourceinfoListResVo>(TssSourceinfoListResVo.class);
+        util.exportExcel(response, list, "溯源信息数据");
+    }
+
+    /**
+     * 获取溯源信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:info')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(@RequestParam("sourceinfoId") String sourceinfoId) {
+        TssSourceinfo tssSourceinfo = tssSourceinfoService.selectTssSourceinfoBySourceinfoId(sourceinfoId);
+        TssSourceinfoListResVo resVo = new TssSourceinfoListResVo();
+        BeanUtils.copyProperties(tssSourceinfo, resVo);
+
+        List<SysRes> resList1 = resManager.queryRes(sourceinfoId, ResConstants.BizType.SOURCE_INFO_AVATAR, ResConstants.mediaType.IMG);
+        List<SysRes> resList2 = resManager.queryRes(sourceinfoId, ResConstants.BizType.SOURCE_INFO_QUALITY, ResConstants.mediaType.IMG);
+        List<SysRes> resList3 = resManager.queryRes(sourceinfoId, ResConstants.BizType.SOURCE_INFO_FIGURE.getKey());
+        resVo.setAvatarPreview(getResUrl(resList1));
+        resVo.setAvatarResIds(getResIds(resList1));
+        resVo.setQualityPreview(getResUrl(resList2));
+        resVo.setQualityResIds(getResIds(resList2));
+        resVo.setFigurePreview(getResUrl(resList3));
+        resVo.setFigureResIds(getResIds(resList3));
+
+        TssSourceperiod tssSourceperiod = new TssSourceperiod();
+        tssSourceperiod.setSourceinfoId(sourceinfoId);
+        tssSourceperiod.setSourceperiodParentid("0");
+        List<TssSourceperiod> tssSourceperiods = tssSourceperiodService.selectTssSourceperiodList(tssSourceperiod);
+        for (TssSourceperiod sourceperiod : tssSourceperiods) {
+            List<SysRes> resList4 = resManager.queryRes(sourceperiod.getSourceperiodId(), ResConstants.BizType.SOURCE_INFO_PERIOD, ResConstants.mediaType.IMG);
+            sourceperiod.setPeriodResIds(getResIds(resList4));
+            sourceperiod.setPeriodPreview(getResUrl(resList4));
+
+            TssSourceperiod childReqVo = new TssSourceperiod();
+            childReqVo.setSourceinfoId(sourceinfoId);
+            childReqVo.setSourceperiodParentid(sourceperiod.getSourceperiodId());
+            List<TssSourceperiod> sourceperiods = tssSourceperiodService.selectTssSourceperiodList(childReqVo);
+            for (TssSourceperiod sourceperiod1 : sourceperiods) {
+                List<SysRes> resList5 = resManager.queryRes(sourceperiod1.getSourceperiodId(), ResConstants.BizType.SOURCE_INFO_PERIOD, ResConstants.mediaType.IMG);
+                sourceperiod1.setPeriodResIds(getResIds(resList5));
+                sourceperiod1.setPeriodPreview(getResUrl(resList5));
+            }
+            sourceperiod.setTssSourceperiods(sourceperiods);
+        }
+        resVo.setTssSourceperiods(tssSourceperiods);
+
+        //溯源生长环境信息查询 selectTssSourceEnvironmentList
+        TssSourceEnvironment tssSourceEnvironment = new TssSourceEnvironment();
+        tssSourceEnvironment.setSourceinfoId(sourceinfoId);
+        List<TssSourceEnvironment> tssSourceEnvironments = tssSourceEnvironmentService.selectTssSourceEnvironmentList(tssSourceEnvironment);
+        for (TssSourceEnvironment tssSourceEnvironment1 : tssSourceEnvironments) {
+            List<SysRes> resList5 = resManager.queryRes(tssSourceEnvironment1.getSourceEnvironmentId(), ResConstants.BizType.SOURCE_INFO_ENVIRONMENT, ResConstants.mediaType.IMG);
+            tssSourceEnvironment1.setEnvironmentResIds(getResIds(resList5));
+            tssSourceEnvironment1.setEnvironmentPreviews(getResUrl(resList5));
+        }
+        resVo.setTssSourceEnvironments(tssSourceEnvironments);
+
+        return success(resVo);
+    }
+
+    /**
+     * 新增溯源信息
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:add')")
+    @Log(title = "溯源信息", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody AddTssSourceinfoReqVo reqVo) {
+        return tssSourceinfoService.insertTssSourceinfo(reqVo);
+    }
+
+    /**
+     * 修改溯源信息
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:edit')")
+    @Log(title = "溯源信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody AddTssSourceinfoReqVo reqVo) {
+        return tssSourceinfoService.updateTssSourceinfo(reqVo);
+    }
+
+    /**
+     * 修改溯源信息(只修改溯源信息表)
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:only:edit')")
+    @Log(title = "溯源信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/only/edit")
+    public AjaxResult edit(@RequestBody TssSourceinfo tssSourceinfo) {
+        return toAjax(tssSourceinfoService.updateTssSourceinfo(tssSourceinfo));
+    }
+
+    /**
+     * 删除溯源信息
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:delete')")
+    @Log(title = "溯源信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/delete")
+    public AjaxResult remove(@RequestParam String[] sourceinfoIds) {
+        String unDeleteIdListStr = sysConfigService.selectConfigValueByKey(ConfigUtils.ConfigKeyEnum.TSS_SOURCE_INFO_UN_DELETABLE_ID_LIST.getKey(), 1).getConfigValue();
+        if (StringUtils.isNotEmpty(unDeleteIdListStr)) {
+            try {
+                JSONArray unDeleteIdList = JSONArray.parse(unDeleteIdListStr);
+                List<String> unDeleteIds = new ArrayList<>();
+                for (Object object : unDeleteIdList) {
+                    JSONObject item = JSONObject.from(object);
+                    unDeleteIds.add(item.getString("id"));
+                }
+                String[] containIds = CollUtil.intersection(Arrays.asList(sourceinfoIds), unDeleteIds).toArray(new String[0]);
+                if (containIds.length != 0) {
+                    return AjaxResult.error(ErrorCode.FAILURE.getCode(), "id为" + Arrays.toString(containIds) + "的溯源信息不允许被删除");
+                }
+            } catch (Exception e) {
+                return AjaxResult.error(ErrorCode.FAILURE.getCode(), "不可删除的溯源信息判断失败");
+            }
+        }
+        //查询是否被产品绑定
+        for (String sourceinfoId : sourceinfoIds) {
+            int count = wmsFinishgoodsService.selectCount(sourceinfoId);
+            if (count > 0) {
+                return AjaxResult.error(ErrorCode.DEL_CURNODE_ERROR.getCode(), ErrorCode.DEL_CURNODE_ERROR.getMessage());
+            }
+        }
+
+        return toAjax(tssSourceinfoService.deleteTssSourceinfoBySourceinfoIds(sourceinfoIds));
+    }
+
+
+    /**
+     * 头像信息上传
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:avatar:upload')")
+    @Log(title = "头像信息上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/avatar/upload")
+    public AjaxResult avatarUpload(MultipartFile file) throws Exception {
+        if (!file.isEmpty()) {
+            SysRes sysRes = resManager.uploadRes(ResConstants.BizType.SOURCE_INFO_AVATAR, ResConstants.mediaType.IMG, "", file, getLoginUser());
+            return success(sysRes);
+        }
+        return error(ErrorCode.UPLOAD_FAIL.getCode());
+    }
+
+    /**
+     * 体检报告图片上传
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:quality:upload')")
+    @Log(title = "体检报告图片上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/quality/upload")
+    public AjaxResult qualityUpload(MultipartFile file) throws Exception {
+        if (!file.isEmpty()) {
+            SysRes sysRes = resManager.uploadRes(ResConstants.BizType.SOURCE_INFO_QUALITY, ResConstants.mediaType.IMG, "", file, getLoginUser());
+            return success(sysRes);
+        }
+        return error(ErrorCode.UPLOAD_FAIL.getCode());
+    }
+
+    /**
+     * 形象图片上传
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:figure:upload')")
+    @Log(title = "形象图片上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/figure/upload")
+    public AjaxResult figureUpload(MultipartFile file) throws Exception {
+        if (!file.isEmpty()) {
+            String type = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
+            if (!StringUtils.isEmpty(type)) {
+                if ("jpg,jpeg,png".contains(type)) {
+                    SysRes sysRes = resManager.uploadRes(ResConstants.BizType.SOURCE_INFO_FIGURE, ResConstants.mediaType.IMG, "", file, getLoginUser());
+                    return success(sysRes);
+                } else if ("avi,wmv,mpeg,mp4,m4v,mov,asf,flv,f4v,rmvb,rm,3gp,vob".contains(type)) {
+                    SysRes sysRes = resManager.uploadRes(ResConstants.BizType.SOURCE_INFO_FIGURE, ResConstants.mediaType.VIDEO, "", file, getLoginUser());
+                    return success(sysRes);
+                } else {
+                    SysRes sysRes = resManager.uploadRes(ResConstants.BizType.SOURCE_INFO_FIGURE, ResConstants.mediaType.FILE, "", file, getLoginUser());
+                    return success(sysRes);
+                }
+            }
+        }
+        return error(ErrorCode.UPLOAD_FAIL.getCode());
+    }
+
+    /**
+     * 生长过程图片上传
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:period:upload')")
+    @Log(title = "生长过程图片上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/period/upload")
+    public AjaxResult periodUpload(MultipartFile file) throws Exception {
+        if (!file.isEmpty()) {
+            SysRes sysRes = resManager.uploadRes(ResConstants.BizType.SOURCE_INFO_PERIOD, ResConstants.mediaType.IMG, "", file, getLoginUser());
+            return success(sysRes);
+        }
+        return error(ErrorCode.UPLOAD_FAIL.getCode());
+    }
+
+    /**
+     * 生长环境图片上传
+     */
+    @PreAuthorize("@ss.hasPermi('tss:sourceinfo:environment:upload')")
+    @Log(title = "生长环境图片上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/environment/upload")
+    public AjaxResult environmentUpload(MultipartFile file) throws Exception {
+        if (!file.isEmpty()) {
+            SysRes sysRes = resManager.uploadRes(ResConstants.BizType.SOURCE_INFO_ENVIRONMENT, ResConstants.mediaType.IMG, "", file, getLoginUser());
+            return success(sysRes);
+        }
+        return error(ErrorCode.UPLOAD_FAIL.getCode());
+    }
+
+    public String getResUrl(List<SysRes> list) {
+        if (list != null && list.size() > 0) {
+            String url = "";
+            for (SysRes sysRes : list) {
+                url += sysRes.getResUrl() + ",";
+            }
+            url = url.substring(0, url.length() - 1);
+            return url;
+        } else {
+            return "";
+        }
+    }
+
+    public String getResIds(List<SysRes> list) {
+        if (list != null && list.size() > 0) {
+            String url = "";
+            for (SysRes sysRes : list) {
+                url += sysRes.getResId() + ",";
+            }
+            url = url.substring(0, url.length() - 1);
+            return url;
+        } else {
+            return "";
+        }
+    }
+}

+ 471 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/TssStatController.java

@@ -0,0 +1,471 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.MppProduct;
+import com.yunfeiyun.agmp.tss.domain.reqvo.SelectOfTssStatReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.*;
+import com.yunfeiyun.agmp.tss.service.IFmsTaskService;
+import com.yunfeiyun.agmp.tss.service.IMppProductService;
+import com.yunfeiyun.agmp.tss.service.ISpmOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 溯源统计Controller
+ * 
+ * @author 马金朋
+ * @date 2023-08-30
+ */
+@RestController
+@RequestMapping("/tss/stat")
+public class TssStatController extends BaseController {
+	@Resource
+	private ISpmOrderService spmOrderService;
+	@Autowired
+	private IFmsTaskService fmsTaskService;
+
+	@Autowired
+	private IMppProductService mppProductService;
+
+	/**
+	 * 统计概要:营收等情况
+	 */
+	@PreAuthorize("@ss.hasPermi('tss:stat:summary')")
+	@GetMapping("/summary")
+	public AjaxResult summary(SelectOfTssStatReqVo reqVo) {
+		reqVo.setStartTime(reqVo.getStartTime().substring(0, 4));
+		Map<String, Object> moneyMap = getMoney(reqVo);
+		// 总收入
+		Double incomeTotal = Double.parseDouble(moneyMap.get("incomeTotal").toString());
+		// 总支出
+		Double payTotal = Double.parseDouble(moneyMap.get("payTotal").toString());
+		// 总利润
+		Double profitTotal = incomeTotal - payTotal;
+		// 地块数量
+		Integer dkNum = spmOrderService.selectDkCountOfTssTrace(reqVo);
+		// 产品种类数量
+		Integer goodsTypeNum = 0;
+
+		List<MppProduct> list = mppProductService.selectMppProductList(new MppProduct());
+		HashMap<String,MppProduct> mppProductHashMap = new HashMap<>();
+		if(list!=null){
+			for (MppProduct  item:
+					list) {
+				mppProductHashMap.put(item.getProductName(),item);
+			}
+		}
+		goodsTypeNum = mppProductHashMap.size();
+
+		Map<String, Object> resultMap = new HashMap<>();
+		resultMap.put("incomeTotal", incomeTotal);
+		resultMap.put("payTotal", payTotal);
+		resultMap.put("profitTotal", profitTotal);
+		resultMap.put("dkNum", dkNum);
+		resultMap.put("goodsTypeNum", goodsTypeNum);
+
+		return AjaxResult.success(resultMap);
+	}
+
+	/**
+	 * 投入成本占比
+	 */
+	@PreAuthorize("@ss.hasPermi('tss:stat:summary:pay')")
+	@GetMapping("/summary/pay")
+	public AjaxResult pay(SelectOfTssStatReqVo reqVo) {
+		reqVo.setStartTime(reqVo.getStartTime().substring(0, 4));
+		return AjaxResult.success(getMoney(reqVo));
+	}
+
+	/** 获取各类成本及收益的公共方法 */
+	private Map<String, Object> getMoney(SelectOfTssStatReqVo reqVo) {
+		Double incomeTotal = 0.0;// 总收入
+		Double payTotal = 0.0;// 总支出()
+
+		Double wlSum = 0.0;// 物流费用
+
+		Double nzSum = 0.0;// 农资费用
+		Double njSum = 0.0;// 农机费用
+		Double rgSum = 0.0;// 人工费用
+
+		Double jgSum = 0.0;// 加工费用
+		Double bzSum = 0.0;// 包装费用
+		Double csSum = 0.0;// 采收费用
+		// 物流费用
+		Map<String, Object> orderMap = spmOrderService.selectMoneyOfTssTrace(reqVo);
+		if (orderMap != null) {
+			incomeTotal = Double.parseDouble(orderMap.get("incomeSum").toString());
+			wlSum = Double.parseDouble(orderMap.get("wlSum").toString());
+		}
+
+		// 农产品费用(采收,加工,包装)
+		List<Map<String, Object>> goodsList = spmOrderService.selectFinishgoodsMoneyOfTssTrace(reqVo);
+		if (goodsList != null) {
+			for (Map<String, Object> goodsMap : goodsList) {
+				if ("0".equals(goodsMap.get("finishgoodsType").toString())) {// 采收产品
+					csSum = Double.parseDouble((goodsMap.get("sum") == null) ? "0" : goodsMap.get("sum").toString());
+				} else if ("1".equals(goodsMap.get("finishgoodsType").toString())) {// 加工产品
+					jgSum = Double.parseDouble((goodsMap.get("sum") == null) ? "0" : goodsMap.get("sum").toString());
+				} else if ("2".equals(goodsMap.get("finishgoodsType").toString())) {// 包装产品
+					bzSum = Double.parseDouble((goodsMap.get("sum") == null) ? "0" : goodsMap.get("sum").toString());
+				}
+			}
+		}
+
+		// 农活费用(人工,农机,农资)
+		Map<String, Object> farmMap = fmsTaskService.selectSumTaskrcdMoney(reqVo);
+		if (farmMap != null) {
+			rgSum = Double.parseDouble((farmMap.get("rgSum") == null) ? "0" : farmMap.get("rgSum").toString());
+			nzSum = Double.parseDouble((farmMap.get("nzSum") == null) ? "0" : farmMap.get("nzSum").toString());
+			njSum = Double.parseDouble((farmMap.get("njSum") == null) ? "0" : farmMap.get("njSum").toString());
+		}
+
+		// 总支出
+		payTotal = payTotal + wlSum + csSum + jgSum + bzSum + nzSum + njSum + rgSum;
+
+		Map<String, Object> resultMap = new HashMap<>();
+		resultMap.put("incomeTotal", incomeTotal);
+		resultMap.put("payTotal", payTotal);
+		resultMap.put("wlSum", wlSum);
+		resultMap.put("nzSum", nzSum);
+		resultMap.put("njSum", njSum);
+		resultMap.put("rgSum", rgSum);
+		resultMap.put("jgSum", jgSum);
+		resultMap.put("bzSum", bzSum);
+		resultMap.put("csSum", csSum);
+		List<Map<String, Object>> payMxList = new ArrayList<Map<String, Object>>();
+		Map<String, Object> mxMap = null;
+		mxMap = new HashMap<>();
+		mxMap.put("key", "wlSum");
+		mxMap.put("title", "物流");
+		mxMap.put("value", wlSum);
+		payMxList.add(mxMap);
+
+		mxMap = new HashMap<>();
+		mxMap.put("key", "nzSum");
+		mxMap.put("title", "农资");
+		mxMap.put("value", nzSum);
+		payMxList.add(mxMap);
+
+		mxMap = new HashMap<>();
+		mxMap.put("key", "njSum");
+		mxMap.put("title", "农机");
+		mxMap.put("value", njSum);
+		payMxList.add(mxMap);
+
+		mxMap = new HashMap<>();
+		mxMap.put("key", "rgSum");
+		mxMap.put("title", "人工");
+		mxMap.put("value", rgSum);
+		payMxList.add(mxMap);
+
+		mxMap = new HashMap<>();
+		mxMap.put("key", "bzSum");
+		mxMap.put("title", "包装");
+		mxMap.put("value", bzSum);
+		payMxList.add(mxMap);
+
+		mxMap = new HashMap<>();
+		mxMap.put("key", "jgSum");
+		mxMap.put("title", "加工");
+		mxMap.put("value", jgSum);
+		payMxList.add(mxMap);
+
+		mxMap = new HashMap<>();
+		mxMap.put("key", "csSum");
+		mxMap.put("title", "采收");
+		mxMap.put("value", csSum);
+		payMxList.add(mxMap);
+		resultMap.put("payMxList", payMxList);
+
+		return resultMap;
+	}
+
+	/**
+	 * 年度收益/支出
+	 */
+	@PreAuthorize("@ss.hasPermi('tss:stat:summary:month:list')")
+	@GetMapping("/summary/month/list")
+	public AjaxResult monthPayList(SelectOfTssStatReqVo reqVo) {
+		reqVo.setStartTime(reqVo.getStartTime().substring(0, 4));
+		String year = reqVo.getStartTime().substring(0, 4) + "-";
+
+		List<Map<String, Object>> incomeMoneyList = new ArrayList<Map<String, Object>>();
+		List<Map<String, Object>> payMoneyList = new ArrayList<Map<String, Object>>();
+		Map<String, Object> payMap = null;
+		Map<String, Object> incomeMoneyMap = null;
+		for (int i = 0; i < 12; i++) {
+			payMap = new HashMap<String, Object>();
+			incomeMoneyMap = new HashMap<String, Object>();
+			if (i + 1 <= 9) {
+				payMap.put("time", year + "0" + (i + 1));// 月份
+				incomeMoneyMap.put("time", year + "0" + (i + 1));// 月份
+			} else {
+				payMap.put("time", year + (i + 1));// 月份
+				incomeMoneyMap.put("time", year + (i + 1));// 月份
+			}
+			payMoneyList.add(payMap);
+			incomeMoneyList.add(incomeMoneyMap);
+		}
+
+		Double payTotal = 0.0;// 总支出()
+
+		Double wlSum = 0.0;// 物流费用
+
+		Double nzSum = 0.0;// 农资费用
+		Double njSum = 0.0;// 农机费用
+		Double rgSum = 0.0;// 人工费用
+
+		Double jgSum = 0.0;// 加工费用
+		Double bzSum = 0.0;// 包装费用
+		Double csSum = 0.0;// 采收费用
+
+		// 物流费用
+		List<Map<String, Object>> orderList = spmOrderService.selectMoneyByMonthOfTssTrace(reqVo);
+		Map<String, Map<String, Object>> orderGroupMap = null;
+		if (orderList != null) {
+			orderGroupMap = orderList.stream().collect(Collectors.toMap(e -> e.get("month").toString(), e -> e));
+		}
+		if (orderGroupMap == null) {
+			orderGroupMap = new HashMap<String, Map<String, Object>>();
+		}
+		for (Map<String, Object> tempMap : incomeMoneyList) {
+			tempMap.put("money", (orderGroupMap.get(tempMap.get("time")) == null) ? "0"
+					: orderGroupMap.get(tempMap.get("time")).get("incomeSum"));
+		}
+
+		for (Map<String, Object> tempMap : payMoneyList) {
+			tempMap.put("wlSum", (orderGroupMap.get(tempMap.get("time")) == null) ? "0"
+					: orderGroupMap.get(tempMap.get("time")).get("wlSum"));
+		}
+
+		// 采收产品 0
+		reqVo.setPayMxType("0");
+		Map<String, Map<String, Object>> gooodsCsMap = spmOrderService.selectPayMonthByType(reqVo);
+		for (Map<String, Object> tempMap : payMoneyList) {
+			tempMap.put("csSum", gooodsCsMap.get(tempMap.get("time")) == null ? "0"
+					: gooodsCsMap.get(tempMap.get("time")).get("money"));
+		}
+
+		// 加工产品 1
+		reqVo.setPayMxType("1");
+		Map<String, Map<String, Object>> gooodsJgMap = spmOrderService.selectPayMonthByType(reqVo);
+		for (Map<String, Object> tempMap : payMoneyList) {
+			tempMap.put("jgSum", (gooodsJgMap.get(tempMap.get("time")) == null) ? "0"
+					: gooodsJgMap.get(tempMap.get("time")).get("money"));
+		}
+
+		// 包装产品 2
+		reqVo.setPayMxType("2");
+		Map<String, Map<String, Object>> gooodsBzMap = spmOrderService.selectPayMonthByType(reqVo);
+		for (Map<String, Object> tempMap : payMoneyList) {
+			tempMap.put("bzSum", (gooodsBzMap.get(tempMap.get("time")) == null) ? "0"
+					: gooodsBzMap.get(tempMap.get("time")).get("money"));
+		}
+
+		Map<String, Map<String, Object>> fmsRgMap = fmsTaskService.selectPayMonthByRg(reqVo);
+		for (Map<String, Object> tempMap : payMoneyList) {
+			tempMap.put("rgSum",
+					(fmsRgMap.get(tempMap.get("time")) == null) ? "0" : fmsRgMap.get(tempMap.get("time")).get("money"));
+		}
+
+		Map<String, Map<String, Object>> fmsNjMap = fmsTaskService.selectPayMonthByNj(reqVo);
+		for (Map<String, Object> tempMap : payMoneyList) {
+			tempMap.put("njSum",
+					(fmsNjMap.get(tempMap.get("time")) == null) ? "0" : fmsNjMap.get(tempMap.get("time")).get("money"));
+		}
+
+		Map<String, Map<String, Object>> fmsNzMap = fmsTaskService.selectPayMonthByNz(reqVo);
+		for (Map<String, Object> tempMap : payMoneyList) {
+			tempMap.put("nzSum",
+					(fmsNzMap.get(tempMap.get("time")) == null) ? "0" : fmsNzMap.get(tempMap.get("time")).get("money"));
+		}
+
+		// 总支出
+		for (Map<String, Object> tempMap : payMoneyList) {
+			wlSum = Double.parseDouble(tempMap.get("wlSum").toString());
+			csSum = Double.parseDouble(tempMap.get("csSum").toString());
+			jgSum = Double.parseDouble(tempMap.get("jgSum").toString());
+			bzSum = Double.parseDouble(tempMap.get("bzSum").toString());
+			nzSum = Double.parseDouble(tempMap.get("nzSum").toString());
+			njSum = Double.parseDouble(tempMap.get("njSum").toString());
+			rgSum = Double.parseDouble(tempMap.get("rgSum").toString());
+			payTotal = wlSum + csSum + jgSum + bzSum + nzSum + njSum + rgSum;
+			tempMap.put("money", payTotal);
+			tempMap.remove("wlSum");
+			tempMap.remove("csSum");
+			tempMap.remove("jgSum");
+			tempMap.remove("bzSum");
+			tempMap.remove("nzSum");
+			tempMap.remove("njSum");
+			tempMap.remove("rgSum");
+		}
+
+		Map<String, Object> resultMap = new HashMap<>();
+		resultMap.put("incomeMoneyList", incomeMoneyList);
+		resultMap.put("payMoneyList", payMoneyList);
+
+		return AjaxResult.success(resultMap);
+	}
+
+	/**
+	 * 导出年度收益/支出
+	 */
+	@PreAuthorize("@ss.hasPermi('tss:stat:export')")
+	@Log(title = "导出年度收益/支出", businessType = BusinessType.EXPORT)
+	@PostMapping("/export")
+	public void export(HttpServletResponse response,@RequestBody SelectOfTssStatReqVo reqVo)
+	{
+		AjaxResult ajaxResult = monthPayList(reqVo);
+		Map<String, Object> resultMap = (Map<String, Object>) ajaxResult.get("data");
+		List<Map<String, Object>> incomeMoneyList = (List<Map<String, Object>>) resultMap.get("incomeMoneyList");
+		List<Map<String, Object>> payMoneyList = (List<Map<String, Object>>) resultMap.get("payMoneyList");
+
+		List<SummaryMonthListExportResVo> resVoList = new ArrayList<>();
+		for (Map<String, Object> stringObjectMap : incomeMoneyList) {
+			String time = stringObjectMap.get("time").toString();
+			String[] split = time.split("-");
+			String year = split[0];
+			String month = split[1];
+
+			for (Map<String, Object> objectMap : payMoneyList) {
+				if (time.equals(objectMap.get("time"))) {
+					SummaryMonthListExportResVo resVo = new SummaryMonthListExportResVo();
+					resVo.setYear(Integer.parseInt(year));
+					resVo.setMonth(Integer.parseInt(month));
+					resVo.setIncomeMoney(new BigDecimal(stringObjectMap.get("money").toString()));
+					resVo.setPayMoney(new BigDecimal(objectMap.get("money").toString()));
+					resVo.setSummary(resVo.getIncomeMoney().subtract(resVo.getPayMoney()));
+					resVoList.add(resVo);
+				}
+			}
+		}
+
+		String title = "收入/支出分析表";
+		String sheetName = "收入支出分析表";
+		if (StringUtils.isNotEmpty(reqVo.getStartTime())) {
+			title = reqVo.getStartTime().substring(0, 4) + "年度收入/支出分析表";
+			sheetName = reqVo.getStartTime().substring(0, 4) + "年度收入支出分析表";
+		}
+		ExcelUtil<SummaryMonthListExportResVo> util = new ExcelUtil<>(SummaryMonthListExportResVo.class);
+		util.exportExcel(response, resVoList, sheetName, title);
+	}
+
+	/**
+	 * 查询支出/投入明细列表(分页)
+	 */
+	@PreAuthorize("@ss.hasPermi('tss:stat:spm:pay:list')")
+	@GetMapping("/spm/pay/list")
+	public TableDataInfo spmPayList(SelectOfTssStatReqVo reqVo) {
+		reqVo.setStartTime(reqVo.getStartTime().substring(0, 4));
+		startPage();
+		List<SpmPayOfTssStatResVo> list = new ArrayList<SpmPayOfTssStatResVo>();
+		if ("01".equals(reqVo.getPayType())) {// 物流
+			list = spmOrderService.selectSpmOrderPayOfTssStatList(reqVo);
+		} else if ("02".equals(reqVo.getPayType())) {// 农资
+			list = fmsTaskService.selectPayByNz(reqVo);
+		} else if ("03".equals(reqVo.getPayType())) {// 农机
+			list = fmsTaskService.selectPayByNj(reqVo);
+		} else if ("04".equals(reqVo.getPayType())) {// 人工
+			list = fmsTaskService.selectPayByRg(reqVo);
+		} else if ("05".equals(reqVo.getPayType())) {// 加工
+			list = spmOrderService.selectPayByJg(reqVo);
+		} else if ("06".equals(reqVo.getPayType())) {// 包装
+			list = spmOrderService.selectPayByBz(reqVo);
+		} else if ("07".equals(reqVo.getPayType())) {// 采收
+			list = spmOrderService.selectPayByCs(reqVo);
+		}
+		logger.debug("/spm/pay/list返回:" + list);
+		return getDataTable(list);
+	}
+
+	/**
+	 * 导出投入明细列表
+	 */
+	@PreAuthorize("@ss.hasPermi('tss:stat:spm:pay:export')")
+	@Log(title = "导出投入明细列表", businessType = BusinessType.EXPORT)
+	@PostMapping("/spm/pay/export")
+	public void spmPayExport(HttpServletResponse response,@RequestBody SelectOfTssStatReqVo reqVo)
+	{
+		reqVo.setStartTime(reqVo.getStartTime().substring(0, 4));
+		List<SpmPayOfTssStatResVo> list = new ArrayList<SpmPayOfTssStatResVo>();
+		if ("01".equals(reqVo.getPayType())) {// 物流
+			list = spmOrderService.selectSpmOrderPayOfTssStatList(reqVo);
+		} else if ("02".equals(reqVo.getPayType())) {// 农资
+			list = fmsTaskService.selectPayByNz(reqVo);
+		} else if ("03".equals(reqVo.getPayType())) {// 农机
+			list = fmsTaskService.selectPayByNj(reqVo);
+		} else if ("04".equals(reqVo.getPayType())) {// 人工
+			list = fmsTaskService.selectPayByRg(reqVo);
+		} else if ("05".equals(reqVo.getPayType())) {// 加工
+			list = spmOrderService.selectPayByJg(reqVo);
+		} else if ("06".equals(reqVo.getPayType())) {// 包装
+			list = spmOrderService.selectPayByBz(reqVo);
+		} else if ("07".equals(reqVo.getPayType())) {// 采收
+			list = spmOrderService.selectPayByCs(reqVo);
+		}
+		for(int i = 1; i<=list.size();i++){
+			SpmPayOfTssStatResVo spmPayOfTssStatResVo = list.get(i-1);
+			spmPayOfTssStatResVo.setIndex(i);
+		}
+
+		String title = "投入明细信息";
+		if (StringUtils.isNotEmpty(reqVo.getStartTime())) {
+			title = "(" + reqVo.getStartTime().substring(0, 4) + ")投入明细信息";
+		}
+
+		ExcelUtil<SpmPayOfTssStatResVo> util = new ExcelUtil<>(SpmPayOfTssStatResVo.class);
+		util.exportExcel(response, list, title, title);
+	}
+
+	/**
+	 * 溯源统计页面使用:产品销售地(气泡图)
+	 */
+	@PreAuthorize("@ss.hasPermi('tss:stat:spm:order:money:city')")
+	@GetMapping("/spm/order/money/city")
+	public AjaxResult spmOrderMoneyCity(SelectOfTssStatReqVo reqVo) {
+		reqVo.setStartTime(reqVo.getStartTime().substring(0, 4));
+		return AjaxResult.success(spmOrderService.selectMoneyGroupByCity(reqVo));
+	}
+
+	/**
+	 * 溯源统计农产品销售额top10
+	 */
+	@PreAuthorize("@ss.hasPermi('tss:stat:spm:order:money')")
+	@GetMapping("/spm/order/money")
+	public AjaxResult spmOrderMoney(SelectOfTssStatReqVo reqVo) {
+		if (null == reqVo.getLimitNum()) {
+			reqVo.setLimitNum(10);
+		}
+		reqVo.setStartTime(reqVo.getStartTime().substring(0, 4));
+		return AjaxResult.success(spmOrderService.selectSpmOrderMoneyByTssStat(reqVo));
+	}
+
+	/**
+	 * 查询销售明细列表(分页)
+	 */
+	@PreAuthorize("@ss.hasPermi('tss:stat:spm:order:list')")
+	@GetMapping("/spm/order/list")
+	public TableDataInfo spmOrderList(SelectOfTssStatReqVo reqVo) {
+		reqVo.setStartTime(reqVo.getStartTime().substring(0, 4));
+		startPage();
+		List<SpmOrderOfTssStatResVo> list = spmOrderService.selectSpmOrderOfTssStatList(reqVo);
+		return getDataTable(list);
+	}
+
+}

+ 169 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/TssTracecodeapplyController.java

@@ -0,0 +1,169 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.utils.SecurityUtils;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.TssTracecodeapply;
+import com.yunfeiyun.agmp.tss.domain.reqvo.TssTracecodeapplyReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.TssTraceCodeApplyResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.TssTracecodeapplyManagerListResVo;
+import com.yunfeiyun.agmp.tss.service.ITssScanrcdService;
+import com.yunfeiyun.agmp.tss.service.ITssTracecodeapplyService;
+import com.yunfeiyun.agmp.tss.util.DataAuthUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 溯源码生成单Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-04
+ */
+@RestController
+@RequestMapping("/tss/tracecodeapply")
+public class TssTracecodeapplyController extends BaseController
+{
+    @Autowired
+    private ITssTracecodeapplyService tssTracecodeapplyService;
+    @Autowired
+    private ITssScanrcdService tssScanrcdService;
+    @Autowired
+    private DataAuthUtil dataAuthUtil;
+
+    /**
+     * 查询溯源码生成单列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodeapply:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TssTracecodeapply tssTracecodeapply)
+    {
+        startPage();
+        List<TssTraceCodeApplyResVo> list = tssTracecodeapplyService.selectTssTraceCodeApplyResVoList(tssTracecodeapply);
+        return getDataTable(list);
+    }
+    /**
+     * 查询溯源码生成单列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodeapply:manager/list')")
+    @GetMapping("/manager/list")
+    public TableDataInfo managerList(TssTracecodeapplyReqVo tssTracecodeapply)
+    {
+        boolean b = SecurityUtils.isValidate();
+        if (b) {
+            List<String> warehouseIds = dataAuthUtil.getManagerWarehouse();
+            if (warehouseIds.size() == 0) {
+                return getDataTable(new ArrayList<>());
+            }
+            tssTracecodeapply.setWarehouseIds(warehouseIds);
+        }
+        startPage();
+        List<TssTracecodeapplyManagerListResVo> list = tssTracecodeapplyService.selectTssTracecodeapplyManagerListResVoList(tssTracecodeapply);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 导出溯源码生成单列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodeapply:export')")
+    @Log(title = "溯源码生成单", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody TssTracecodeapply tssTracecodeapply)
+    {
+        List<TssTracecodeapply> list = tssTracecodeapplyService.selectTssTracecodeapplyList(tssTracecodeapply);
+        ExcelUtil<TssTracecodeapply> util = new ExcelUtil<TssTracecodeapply>(TssTracecodeapply.class);
+        util.exportExcel(response, list, "溯源码生成单数据");
+    }
+
+    /**
+     * 获取溯源码生成单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodeapply:info')")
+    @GetMapping(value = "/info/{tarcecodeapplyId}")
+    public AjaxResult getInfo(@PathVariable("tarcecodeapplyId") String tarcecodeapplyId)
+    {
+        return success(tssTracecodeapplyService.selectTssTracecodeapplyByTarcecodeapplyId(tarcecodeapplyId));
+    }
+    /**
+     * 获取溯源码生成单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodeapply:info')")
+    @GetMapping(value = "/info/apply/no")
+    public AjaxResult getInfoByApplyNo( String tarcecodeapplyNo)
+    {
+        return success(tssTracecodeapplyService.selectTssTracecodeapplyByApplyNo(tarcecodeapplyNo));
+    }
+
+    /**
+     * 新增溯源码生成单
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodeapply:add')")
+    @Log(title = "溯源码生成单", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody TssTracecodeapply tssTracecodeapply)
+    {
+        return toAjax(tssTracecodeapplyService.insertTssTracecodeapply(tssTracecodeapply));
+    }
+
+    /**
+     * 修改溯源码生成单
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodeapply:edit')")
+    @Log(title = "溯源码生成单", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody TssTracecodeapply tssTracecodeapply)
+    {
+        return toAjax(tssTracecodeapplyService.updateTssTracecodeapply(tssTracecodeapply));
+    }
+
+    /**
+     * 删除溯源码生成单
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodeapply:delete')")
+    @Log(title = "溯源码生成单", businessType = BusinessType.DELETE)
+    @DeleteMapping("/delete/{tarcecodeapplyIds}")
+    public AjaxResult remove(@PathVariable String[] tarcecodeapplyIds)
+    {
+        return toAjax(tssTracecodeapplyService.deleteTssTracecodeapplyByTarcecodeapplyIds(tarcecodeapplyIds));
+    }
+
+
+    /**
+     * app扫溯源码查询页面,不做任何数据权限
+     */
+    @GetMapping("/app/query/source")
+    public AjaxResult appQuerySource(String tarcecodeapplyno,HttpServletRequest httpServletRequest) throws Exception
+    {
+        tssScanrcdService.saveScanrcdInfo(tarcecodeapplyno,httpServletRequest);
+        return success(tssTracecodeapplyService.appQuerySource(tarcecodeapplyno));
+    }
+
+    /**
+     * app扫溯源码查询页面,不做任何数据权限
+     */
+    @GetMapping("/app/query/source/info")
+    public AjaxResult appQuerySourceInfo(String tarcecodeapplyno,String tssSourceperiodId)
+    {
+        return success(tssTracecodeapplyService.appQuerySourceInfo(tarcecodeapplyno,tssSourceperiodId));
+    }
+    /**
+     * app种子扫溯源码查询页面
+     * @param tarcecodeapplyno 溯源码编号
+     * */
+    @GetMapping("/app/seed/query/source/info")
+    public AjaxResult appSeedQuerySourceInfo(String tarcecodeapplyno ) throws Exception{
+        return success(tssTracecodeapplyService.appSeedQuerySourceInfo(tarcecodeapplyno));
+    }
+
+
+}

+ 248 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/TssTracecodetplController.java

@@ -0,0 +1,248 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.exception.BizException;
+import com.yunfeiyun.agmp.common.utils.ConfigUtils;
+import com.yunfeiyun.agmp.common.utils.DictUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import com.yunfeiyun.agmp.common.utils.img.GraphicsCanvas;
+import com.yunfeiyun.agmp.common.utils.img.entity.GraphicsCanvasItem;
+import com.yunfeiyun.agmp.common.utils.img.enums.BusType;
+import com.yunfeiyun.agmp.common.web.system.domain.SysConfig;
+import com.yunfeiyun.agmp.common.web.system.service.ISysConfigService;
+import com.yunfeiyun.agmp.tss.domain.TssTracecodetpl;
+import com.yunfeiyun.agmp.tss.domain.TssTracecodetplparam;
+import com.yunfeiyun.agmp.tss.domain.reqvo.TssTraceCodeGenerateReqVo;
+import com.yunfeiyun.agmp.tss.domain.reqvo.TssTracecodetplEditReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.TssTracecodetplListPreviewResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.TssTracecodetplPreviewResVo;
+import com.yunfeiyun.agmp.tss.mapper.TssTracecodetplparamMapper;
+import com.yunfeiyun.agmp.tss.service.ITssTracecodetplService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.InputStreamResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static org.springframework.http.MediaType.IMAGE_JPEG;
+
+
+/**
+ * 溯源码模板Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-04
+ */
+@RestController
+@RequestMapping("/tss/tracecodetpl")
+public class TssTracecodetplController extends BaseController
+{
+    @Autowired
+    private ITssTracecodetplService tssTracecodetplService;
+    @Resource
+    private TssTracecodetplparamMapper tssTracecodetplparamMapper;
+
+    @Resource
+    private ISysConfigService sysConfigService;
+
+    /**
+     * 查询溯源码模板列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodetpl:list')")
+    @GetMapping("/list")
+    public AjaxResult list(TssTracecodetpl tssTracecodetpl) throws Exception {
+
+        List<TssTracecodetpl> list = tssTracecodetplService.selectTssTracecodetplList(tssTracecodetpl);
+        List<TssTracecodetplListPreviewResVo> resVoList = new ArrayList<>();
+        for(TssTracecodetpl item : list){
+            TssTracecodetplListPreviewResVo tssTracecodetplListPreviewResVo = new TssTracecodetplListPreviewResVo();
+            tssTracecodetplListPreviewResVo.setTracecodetplId(item.getTracecodetplId());
+            tssTracecodetplListPreviewResVo.setPreviewImgBase64(tssTracecodetplService.drawTraceCode(item));
+            tssTracecodetplListPreviewResVo.setTracecodetplMaxscan(item.getTracecodetplMaxscan());
+            tssTracecodetplListPreviewResVo.setProductType(item.getProductType());
+            tssTracecodetplListPreviewResVo.setProductTypeContent(DictUtils.getDictLabel("sys_product_type", item.getProductType()));
+            tssTracecodetplListPreviewResVo.setTracecodetplWidth(item.getTracecodetplWidth());
+            tssTracecodetplListPreviewResVo.setTracecodetplHeight(item.getTracecodetplHeight());
+            resVoList.add(tssTracecodetplListPreviewResVo);
+        }
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("list",resVoList);
+        jsonObject.put("defaultTplId",sysConfigService.selectConfigValueByKey(ConfigUtils.ConfigKeyEnum.TRACE_CODE_TPL_DEFAULT_ID.getKey(),1).getConfigValue());
+        return AjaxResult.success(jsonObject);
+    }
+
+    /**
+     * 查询溯源码模板列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodetpl:preview')")
+    @PostMapping("/preview")
+    public ResponseEntity<byte[]> preview(@RequestBody TssTracecodetplEditReqVo tssTracecodetplEditReqVo) throws Exception
+    {
+        TssTracecodetpl tssTracecodetpl = new TssTracecodetpl();
+        tssTracecodetpl.setTracecodetplId(tssTracecodetplEditReqVo.getTracecodetplId());
+        List<TssTracecodetpl> list = tssTracecodetplService.selectTssTracecodetplList(tssTracecodetpl);
+        if(list.isEmpty()){
+            throw new BizException(ErrorCode.TSS_TRACE_CODE_TPL_NOT_EXIST);
+        }
+        tssTracecodetpl = list.get(0);
+        TssTracecodetplparam queryParam = new TssTracecodetplparam();
+        queryParam.setTracecodetplId(tssTracecodetpl.getTracecodetplId());
+        List<TssTracecodetplparam> params = tssTracecodetplparamMapper.selectTssTracecodetplparamList(queryParam);
+        List<GraphicsCanvasItem> graphicsCanvasItemList = params.stream().map(item->{
+            if(StringUtils.isNotEmpty(tssTracecodetplEditReqVo.getBackground())&&BusType.BACKGROUND.equal(item.getTplparamBustype())){
+                item.setTplparamData(tssTracecodetplEditReqVo.getBackground());
+            }else if(StringUtils.isNotEmpty(tssTracecodetplEditReqVo.getLogo())&&BusType.LOGO.equal(item.getTplparamBustype())){
+                item.setTplparamData(tssTracecodetplEditReqVo.getLogo());
+            }
+            return item.transToGraphicsCanvasItem();
+        }).collect(Collectors.toList());
+        GraphicsCanvas graphicsCanvas = new GraphicsCanvas(tssTracecodetpl.getTracecodetplWidth(),tssTracecodetpl.getTracecodetplHeight(),tssTracecodetpl.getTracecodetplBitcolor(),graphicsCanvasItemList);
+        graphicsCanvas.appendByGraphicsCanvasItems();
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        graphicsCanvas.write( "png", baos);
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(IMAGE_JPEG);
+        headers.setContentLength(baos.size());
+        return new ResponseEntity<>(baos.toByteArray(), headers, 200);
+    }
+
+    /**
+     * 溯源码模板编辑预览接口
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodetpl:preview')")
+    @PostMapping("/edit/preview")
+    public ResponseEntity<byte[]> editPreview(@Validated @RequestBody TssTracecodetplPreviewResVo tssTracecodetplPreviewResVo) throws Exception {
+        TssTracecodetpl tssTracecodetpl = tssTracecodetplPreviewResVo.getTssTracecodetpl();
+        Collection<TssTracecodetplparam> params = tssTracecodetplPreviewResVo.getTplParam().values();
+        List<GraphicsCanvasItem> graphicsCanvasItemList = params.stream().map(TssTracecodetplparam::transToGraphicsCanvasItem).collect(Collectors.toList());
+        GraphicsCanvas graphicsCanvas = new GraphicsCanvas(tssTracecodetpl.getTracecodetplWidth(),tssTracecodetpl.getTracecodetplHeight(),tssTracecodetpl.getTracecodetplBitcolor(),graphicsCanvasItemList);
+        graphicsCanvas.appendByGraphicsCanvasItems();
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        graphicsCanvas.write( "png", baos);
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(IMAGE_JPEG);
+        headers.setContentLength(baos.size());
+        return new ResponseEntity<>(baos.toByteArray(), headers, 200);
+    }
+
+
+    @PreAuthorize("@ss.hasPermi('tss:tracecodetpl:test')")
+    @GetMapping("/test")
+    public ResponseEntity<byte[]> test() throws Exception
+    {
+        List<TssTracecodetpl> list = tssTracecodetplService.selectTssTracecodetplList(null);
+        TssTracecodetpl tssTracecodetpl = list.get(0);
+        TssTracecodetplparam queryParam = new TssTracecodetplparam();
+        queryParam.setTracecodetplId(tssTracecodetpl.getTracecodetplId());
+        List<TssTracecodetplparam> params = tssTracecodetplparamMapper.selectTssTracecodetplparamList(queryParam);
+        List<GraphicsCanvasItem> graphicsCanvasItemList = params.stream().map(TssTracecodetplparam::transToGraphicsCanvasItem).collect(Collectors.toList());
+        GraphicsCanvas graphicsCanvas = new GraphicsCanvas(tssTracecodetpl.getTracecodetplWidth(),tssTracecodetpl.getTracecodetplHeight(),tssTracecodetpl.getTracecodetplBitcolor(),graphicsCanvasItemList);
+        graphicsCanvas.appendByGraphicsCanvasItems();
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        graphicsCanvas.write( "png", baos);
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(IMAGE_JPEG);
+        headers.setContentLength(baos.size());
+        return new ResponseEntity<>(baos.toByteArray(), headers, 200);
+    }
+
+
+    /**
+     * 查询溯源码模板编辑
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodetpl:edit')")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody TssTracecodetplEditReqVo tssTracecodetplEditReqVo)
+    {
+        tssTracecodetplService.updateTssTraceCodeTplBackgroundAndLogo(tssTracecodetplEditReqVo);
+        return AjaxResult.success();
+    }
+
+
+
+    /**
+     * 编辑默认溯源码目标标识
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodetpl:update:defaultTpl')")
+    @PostMapping("/update/defaultTpl")
+    public AjaxResult updateDefaultTpl(@RequestBody Map<String,String> map)
+    {
+        SysConfig sysConfig = sysConfigService.selectConfigValueByKey(ConfigUtils.ConfigKeyEnum.TRACE_CODE_TPL_DEFAULT_ID.getKey(),1);
+        sysConfig.setConfigValue(map.get("tracecodetplId"));
+        sysConfigService.updateConfig(sysConfig);
+        return AjaxResult.success();
+    }
+
+
+    /**
+     * 溯源码生成
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodetpl:generate')")
+    @PostMapping("/generate")
+    public AjaxResult generate( @RequestBody TssTraceCodeGenerateReqVo tssTracecodetplEditReqVo)
+    {
+
+        return AjaxResult.success(tssTracecodetplService.generate(tssTracecodetplEditReqVo));
+    }
+    /**
+     * 下载
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodetpl:downland')")
+    @GetMapping(value = "/downland",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+    public ResponseEntity<InputStreamResource> downland( String tarcecodeapplyBatchno) throws Exception {
+        return tssTracecodetplService.downLand(tarcecodeapplyBatchno);
+    }
+
+    /**
+     * 下载
+     */
+    @PreAuthorize("@ss.hasPermi('tss:tracecodetpl:downland:tarcecodeapply')")
+    @PostMapping(value = "/downland/tarcecodeapply",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+    public ResponseEntity<InputStreamResource> downlandBatch(@RequestBody String[] tarcecodeapplynos) throws Exception {
+        return tssTracecodetplService.downLand(tarcecodeapplynos);
+    }
+    /**
+     *  导出二维码
+     * */
+    @Log(title = "溯源码", businessType = BusinessType.EXPORT)
+    @PreAuthorize("@ss.hasPermi('tss:tracecodetpl:export:tarcecodeapply')")
+    @GetMapping(value = "/export/tarcecodeapply",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+    public void export(HttpServletResponse response, String tarcecodeapplyBatchno)
+    {
+        tssTracecodetplService.export(response,tarcecodeapplyBatchno);
+    }
+
+    /**
+     * 溯源码模板详情
+     * */
+    @GetMapping(value = "/info")
+    public AjaxResult info(String tracecodetplId){
+        TssTracecodetpl tssTracecodetpl = tssTracecodetplService.selectTssTracecodetplByTracecodetplId(tracecodetplId);
+        if(tssTracecodetpl == null){
+            return AjaxResult.success();
+        }
+        TssTracecodetplparam tssTracecodetplparam = new TssTracecodetplparam();
+        tssTracecodetplparam.setTracecodetplId(tracecodetplId);
+        List<TssTracecodetplparam> tssTracecodetplparamList = tssTracecodetplparamMapper.selectTssTracecodetplparamList(tssTracecodetplparam);
+        LinkedHashMap<String,TssTracecodetplparam> tssTracecodetplparamMap = tssTracecodetplparamList.stream().collect(Collectors.toMap(TssTracecodetplparam::getTplparamBustype,item->item,(a,b) ->b , LinkedHashMap::new));
+        TssTracecodetplPreviewResVo tssTracecodetplPreviewResVo = new TssTracecodetplPreviewResVo();
+        tssTracecodetplPreviewResVo.setTssTracecodetpl(tssTracecodetpl);
+        tssTracecodetplPreviewResVo.setTplParam(tssTracecodetplparamMap);
+        return AjaxResult.success(tssTracecodetplPreviewResVo);
+    }
+
+}

+ 206 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/TssWarnController.java

@@ -0,0 +1,206 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.enums.TssWarnEnum;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.TssWarn;
+import com.yunfeiyun.agmp.tss.domain.reqvo.TssWarnReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.TssWarnExportResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.TssWarnResVo;
+import com.yunfeiyun.agmp.tss.service.ITssWarnService;
+import com.yunfeiyun.agmp.tss.util.ExportUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 系统预警Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-05
+ */
+@RestController
+@RequestMapping("/tss/warn")
+public class TssWarnController extends BaseController
+{
+    @Autowired
+    private ITssWarnService tssWarnService;
+
+
+    /**
+     * 查询系统预警列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:warn:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TssWarnReqVo reqVo)
+    {
+        startPage();
+        reqVo.setUserId(getUserId());
+        List<TssWarnResVo> list = tssWarnService.selectTssWarnList(reqVo);
+        return getDataTable(list);
+    }
+    /**
+     * 查询系统预警未读消息数量
+     * */
+    @PreAuthorize("@ss.hasPermi('tss:warn:count')")
+    @GetMapping("/count")
+    public AjaxResult count(TssWarnReqVo reqVo){
+        reqVo.setUserId(getUserId());
+        return success(tssWarnService.selectNoReadTssWarnCount(reqVo));
+    }
+
+    /**
+     * 导出系统预警列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:warn:export')")
+    @Log(title = "导出系统预警列表", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody TssWarnReqVo reqVo)
+    {
+        ExportUtil.checkTime(reqVo.getStartTime(), reqVo.getEndTime());
+        reqVo.setUserId(getUserId());
+        List<TssWarnResVo> list = tssWarnService.selectTssWarnList(reqVo);
+        List<TssWarnExportResVo> resVoList = new ArrayList<>();
+        for (int i = 0; i < list.size(); i++) {
+            TssWarnExportResVo resVo = new TssWarnExportResVo();
+            TssWarnResVo tssWarnResVo = list.get(i);
+            BeanUtils.copyProperties(tssWarnResVo, resVo);
+            resVo.setIndex(i + 1);
+            if ("0".equals(tssWarnResVo.getReadStatus())) {
+                resVo.setReadStatus("未读");
+            } else if ("1".equals(tssWarnResVo.getReadStatus())) {
+                resVo.setReadStatus("已读");
+            }
+            resVoList.add(resVo);
+        }
+        String title = "溯源信息预警";
+        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
+            title = "溯源信息预警(" + reqVo.getStartTime().substring(0, 10) + "~" + reqVo.getEndTime().substring(0, 10) + ")";
+        } else if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isEmpty(reqVo.getEndTime())) {
+            title = "溯源信息预警(" + reqVo.getStartTime().substring(0, 10) + "后";
+        } else if (StringUtils.isEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
+            title = "溯源信息预警(" + reqVo.getEndTime().substring(0, 10) + "前";
+        }
+
+        ExcelUtil<TssWarnExportResVo> util = new ExcelUtil<>(TssWarnExportResVo.class);
+        util.exportExcel(response, resVoList, title, title);
+    }
+
+
+    /**
+     * 查询系统预警列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:warn:count:list')")
+    @GetMapping("/count/list")
+    public TableDataInfo countList(TssWarnReqVo reqVo)
+    {
+        List<TssWarnResVo> list = tssWarnService.selectCountOfTssWarn(reqVo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询系统预警列表
+     */
+    @PreAuthorize("@ss.hasPermi('tss:warn:count:info')")
+    @GetMapping("/count/info")
+    public AjaxResult countInfo(TssWarnReqVo reqVo)
+    {
+        List<TssWarnResVo> list = tssWarnService.selectCountOfTssWarn(reqVo);
+        Map<String, Object> result = new HashMap<>();
+        result.put("count2", "0");
+        result.put("count3", "0");
+        result.put("count4", "0");
+        result.put("count5", "0");
+        for (TssWarnResVo tssWarnResVo : list) {
+            if (TssWarnEnum.TssWarnClass.QUALITY_INSPECTION_PROCESS.getCode().equals(tssWarnResVo.getWarnClass())) {
+                result.put("count2", tssWarnResVo.getCount());
+            } else if (TssWarnEnum.TssWarnClass.SALES_PROCESS.getCode().equals(tssWarnResVo.getWarnClass())) {
+                result.put("count3", tssWarnResVo.getCount());
+            } else if (TssWarnEnum.TssWarnClass.TRANSPORTATION_PROCESS.getCode().equals(tssWarnResVo.getWarnClass())) {
+                result.put("count4", tssWarnResVo.getCount());
+            } else if (TssWarnEnum.TssWarnClass.SCAN_CODE_PROCESS.getCode().equals(tssWarnResVo.getWarnClass())) {
+                result.put("count5", tssWarnResVo.getCount());
+            }
+        }
+
+        return success(result);
+    }
+
+    /**
+     * 已读
+     */
+    @PreAuthorize("@ss.hasPermi('tss:warn:read')")
+    @Log(title = "系统预警已读", businessType = BusinessType.INSERT)
+    @PostMapping("/read")
+    public AjaxResult read(@RequestBody TssWarn tssWarn)
+    {
+        return toAjax(tssWarnService.read(tssWarn));
+    }
+    /**
+     * 一键已读
+     */
+    @PreAuthorize("@ss.hasPermi('tss:warn:read')")
+    @Log(title = "系统预警一键已读", businessType = BusinessType.INSERT)
+    @PostMapping("/readAll")
+    public AjaxResult readAll(@RequestBody TssWarnReqVo reqVo)
+    {
+        int count = tssWarnService.readAll(reqVo);
+        return toAjax(count);
+    }
+
+    /**
+     * 获取系统预警详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('tss:warn:info')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(@RequestParam("warnId") String warnId)
+    {
+        return success(tssWarnService.selectTssWarnByWarnId(warnId));
+    }
+
+    /**
+     * 新增系统预警
+     */
+    @PreAuthorize("@ss.hasPermi('tss:warn:add')")
+    @Log(title = "系统预警", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody TssWarn tssWarn)
+    {
+        return toAjax(tssWarnService.insertTssWarn(tssWarn));
+    }
+
+    /**
+     * 修改系统预警
+     */
+    @PreAuthorize("@ss.hasPermi('tss:warn:edit')")
+    @Log(title = "系统预警", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody TssWarn tssWarn)
+    {
+        return toAjax(tssWarnService.updateTssWarn(tssWarn));
+    }
+
+    /**
+     * 删除系统预警
+     */
+    @PreAuthorize("@ss.hasPermi('tss:warn:delete')")
+    @Log(title = "系统预警", businessType = BusinessType.DELETE)
+	@DeleteMapping("/delete")
+    public AjaxResult remove(@RequestParam("warnIds") String[] warnIds)
+    {
+        return toAjax(tssWarnService.deleteTssWarnByWarnIds(warnIds));
+    }
+
+}

+ 83 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/WmsAssetgoodsController.java

@@ -0,0 +1,83 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.reqvo.WmsStockListReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.WmsGoodsAppMapResVo;
+import com.yunfeiyun.agmp.tss.domain.vo.WmsAssetgoodsExcelVo;
+import com.yunfeiyun.agmp.tss.domain.vo.WmsAssetgoodsVo;
+import com.yunfeiyun.agmp.tss.service.IWmsAssetgoodsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+
+/**
+ * 农资货物Controller
+ *
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/wms/asset/goods")
+public class WmsAssetgoodsController extends BaseController {
+    @Autowired
+    private IWmsAssetgoodsService wmsAssetgoodsService;
+
+    /**
+     * 查询货物列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:asset:goods:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WmsAssetgoodsVo wmsAssetgoodsVo)
+    {
+        startPage();
+        List<WmsAssetgoodsVo> list = wmsAssetgoodsService.selectWmsAssetgoodsVoList(wmsAssetgoodsVo);
+        return getDataTable(list);
+    }
+
+    /**
+     * app端查询所有农资,无分页
+     * */
+    @PreAuthorize("@ss.hasPermi('wms:asset:goods:app:select:list')")
+    @GetMapping("/app/select/json")
+    public AjaxResult appList()
+    {
+        List<WmsGoodsAppMapResVo> list = wmsAssetgoodsService.selectWmsGoodsAppMapResVo();
+        return success(list);
+    }
+
+    /**
+     * 导出货物列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:asset:goods:export')")
+    @Log(title = "货物", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody WmsStockListReqVo wmsStockListReqVo)
+    {
+        List<WmsAssetgoodsExcelVo> list = wmsAssetgoodsService.selectWmsAssetgoodsExcelVoList(wmsStockListReqVo);
+        for(int i = 1;i<=list.size();i++){
+            WmsAssetgoodsExcelVo wmsAssetgoodsExcelVo = list.get(i-1);
+            wmsAssetgoodsExcelVo.setIndex(i) ;
+        }
+        ExcelUtil<WmsAssetgoodsExcelVo> util = new ExcelUtil<>(WmsAssetgoodsExcelVo.class);
+        util.exportExcel(response, list, "货物数据","农资管理");
+    }
+
+    /**
+     * 获取货物详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('wms:asset:goods:info')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(@RequestParam("goodsId") String goodsId)
+    {
+        return success(wmsAssetgoodsService.selectWmsAssetgoodsVoByGoodsId(goodsId));
+    }
+}

+ 133 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/WmsChangeController.java

@@ -0,0 +1,133 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.WmsChange;
+import com.yunfeiyun.agmp.tss.domain.reqvo.WmsChangeReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.WmsChangeResVo;
+import com.yunfeiyun.agmp.tss.domain.vo.WmsFinishgoodsChangeApplyExcelVo;
+import com.yunfeiyun.agmp.tss.service.IWmsChangeService;
+import com.yunfeiyun.agmp.tss.util.ExportUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 变动Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/wms/change")
+public class WmsChangeController extends BaseController
+{
+    @Autowired
+    private IWmsChangeService wmsChangeService;
+
+    /**
+     * 查询变动列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:change:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WmsChange wmsChange)
+    {
+        startPage();
+        List<WmsChange> list = wmsChangeService.selectWmsChangeList(wmsChange);
+        return getDataTable(list);
+    }
+
+    /**
+     * 出入庫列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:change:finishgoods:list')")
+    @GetMapping("/finishGoods/list")
+    public TableDataInfo listOfFinishGoods(WmsChangeReqVo reqVo)
+    {
+        startPage();
+        List<WmsChangeResVo> list = wmsChangeService.selectWmsChangeListOfFinishGoods(reqVo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出变动列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:change:export')")
+    @Log(title = "变动", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody WmsChange wmsChange)
+    {
+        List<WmsChange> list = wmsChangeService.selectWmsChangeList(wmsChange);
+        ExcelUtil<WmsChange> util = new ExcelUtil<WmsChange>(WmsChange.class);
+        util.exportExcel(response, list, "变动数据");
+    }
+
+    /**
+     * 导出农产品货物列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:finishgoods:export')")
+    @Log(title = "农产品货物", businessType = BusinessType.EXPORT)
+    @PostMapping("/finishgoods/export")
+    public void export(HttpServletResponse response,@RequestBody WmsChangeReqVo reqVo)
+    {
+        ExportUtil.checkTime(reqVo.getStartTime(), reqVo.getEndTime());
+        List<WmsFinishgoodsChangeApplyExcelVo> list = wmsChangeService.selectWmsFinishgoodsChangeApplyExcelVoList(reqVo);
+        for(int i = 1; i <= list.size();i++){
+            WmsFinishgoodsChangeApplyExcelVo wmsFinishgoodsChangeApplyExcelVo = list.get(i-1);
+            wmsFinishgoodsChangeApplyExcelVo.setIndex(i);
+        }
+        ExcelUtil<WmsFinishgoodsChangeApplyExcelVo> util = new ExcelUtil<>(WmsFinishgoodsChangeApplyExcelVo.class);
+        String title = reqVo.getStartTime() + "至" + reqVo.getEndTime();
+        title =  title + "出入库记录";
+        util.exportExcel(response, list, "出入库记录",title);
+    }
+    /**
+     * 获取变动详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('wms:change:query')")
+    @GetMapping(value = "/{changeId}")
+    public AjaxResult getInfo(@PathVariable("changeId") String changeId)
+    {
+        return success(wmsChangeService.selectWmsChangeByChangeId(changeId));
+    }
+
+    /**
+     * 新增变动
+     */
+    @PreAuthorize("@ss.hasPermi('wms:change:add')")
+    @Log(title = "变动", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody WmsChange wmsChange)
+    {
+        return toAjax(wmsChangeService.insertWmsChange(wmsChange));
+    }
+
+    /**
+     * 修改变动
+     */
+    @PreAuthorize("@ss.hasPermi('wms:change:edit')")
+    @Log(title = "变动", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody WmsChange wmsChange)
+    {
+        return toAjax(wmsChangeService.updateWmsChange(wmsChange));
+    }
+
+    /**
+     * 删除变动
+     */
+    @PreAuthorize("@ss.hasPermi('wms:change:remove')")
+    @Log(title = "变动", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{changeIds}")
+    public AjaxResult remove(@PathVariable String[] changeIds)
+    {
+        return toAjax(wmsChangeService.deleteWmsChangeByChangeIds(changeIds));
+    }
+}

+ 77 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/WmsChangeapplyController.java

@@ -0,0 +1,77 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.tss.domain.WmsChangeapply;
+import com.yunfeiyun.agmp.tss.domain.reqvo.*;
+import com.yunfeiyun.agmp.tss.domain.resvo.WmsChangeApplyGoodsListResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.WmsChangeApplyListResVo;
+import com.yunfeiyun.agmp.tss.service.IWmsChangeapplyService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 变动申请Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/wms/changeapply")
+public class WmsChangeapplyController extends BaseController
+{
+    @Autowired
+    private IWmsChangeapplyService WmsChangeapplyService;
+
+    /**
+     * 查询出入库记录列表-不包含APP的领用和退还
+     */
+    @PreAuthorize("@ss.hasPermi('wms:changeapply:list')")
+    @GetMapping("/list")
+    public TableDataInfo list( WmsChangeApplyListReqVo wmsChangeApplyListReqVo)
+    {
+
+        startPage();
+        List<WmsChangeApplyListResVo> list = WmsChangeapplyService.selectWmsChangeApplyListResVoList(wmsChangeApplyListReqVo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询变动申请列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:changeapply:goods:list')")
+    @GetMapping("/goods/list")
+    public TableDataInfo goodsList(@Valid WmsChangeApplyGoodsListReqVo wmsChangeApplyGoodsListReqVo)
+    {
+        startPage();
+        List<WmsChangeApplyGoodsListResVo> list = WmsChangeapplyService.selectWmsChangeApplyGoodsListResVoList(wmsChangeApplyGoodsListReqVo);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 获取变动申请详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('wms:changeapply:query')")
+    @GetMapping(value = "/{changeapplyId}")
+    public AjaxResult getInfo(@PathVariable("changeapplyId") String changeapplyId)
+    {
+        return success(WmsChangeapplyService.selectWmsChangeapplyByChangeapplyId(changeapplyId));
+    }
+    /**
+     * 获取变动申请详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('wms:changeapply:detail')")
+    @GetMapping(value = "/detail")
+    public AjaxResult detail(@RequestParam String changeapplyId)
+    {
+        return success(WmsChangeapplyService.selectWmsChangeapplyDetail(changeapplyId));
+    }
+}

+ 98 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/WmsChangeapplyitemController.java

@@ -0,0 +1,98 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.WmsChangeapplyitem;
+import com.yunfeiyun.agmp.tss.service.IWmsChangeapplyitemService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 变动申请物件Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/wms/changeapplyitem")
+public class WmsChangeapplyitemController extends BaseController
+{
+    @Autowired
+    private IWmsChangeapplyitemService WmsChangeapplyitemService;
+
+    /**
+     * 查询变动申请物件列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:changeapplyitem:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WmsChangeapplyitem wmsChangeapplyitem)
+    {
+        startPage();
+        List<WmsChangeapplyitem> list = WmsChangeapplyitemService.selectWmsChangeapplyitemList(wmsChangeapplyitem);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出变动申请物件列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:changeapplyitem:export')")
+    @Log(title = "变动申请物件", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody WmsChangeapplyitem wmsChangeapplyitem)
+    {
+        List<WmsChangeapplyitem> list = WmsChangeapplyitemService.selectWmsChangeapplyitemList(wmsChangeapplyitem);
+        ExcelUtil<WmsChangeapplyitem> util = new ExcelUtil<WmsChangeapplyitem>(WmsChangeapplyitem.class);
+        util.exportExcel(response, list, "变动申请物件数据");
+    }
+
+    /**
+     * 获取变动申请物件详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('wms:changeapplyitem:query')")
+    @GetMapping(value = "/{changeapplyitemId}")
+    public AjaxResult getInfo(@PathVariable("changeapplyitemId") String changeapplyitemId)
+    {
+        return success(WmsChangeapplyitemService.selectWmsChangeapplyitemByChangeapplyitemId(changeapplyitemId));
+    }
+
+    /**
+     * 新增变动申请物件
+     */
+    @PreAuthorize("@ss.hasPermi('wms:changeapplyitem:add')")
+    @Log(title = "变动申请物件", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody WmsChangeapplyitem wmsChangeapplyitem)
+    {
+        return toAjax(WmsChangeapplyitemService.insertWmsChangeapplyitem(wmsChangeapplyitem));
+    }
+
+    /**
+     * 修改变动申请物件
+     */
+    @PreAuthorize("@ss.hasPermi('wms:changeapplyitem:edit')")
+    @Log(title = "变动申请物件", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody WmsChangeapplyitem wmsChangeapplyitem)
+    {
+        return toAjax(WmsChangeapplyitemService.updateWmsChangeapplyitem(wmsChangeapplyitem));
+    }
+
+    /**
+     * 删除变动申请物件
+     */
+    @PreAuthorize("@ss.hasPermi('wms:changeapplyitem:remove')")
+    @Log(title = "变动申请物件", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{changeapplyitemIds}")
+    public AjaxResult remove(@PathVariable String[] changeapplyitemIds)
+    {
+        return toAjax(WmsChangeapplyitemService.deleteWmsChangeapplyitemByChangeapplyitemIds(changeapplyitemIds));
+    }
+}

+ 226 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/WmsFinishgoodsController.java

@@ -0,0 +1,226 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.constant.ResConstants;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.domain.entity.SysDictData;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.enums.DictTypeEnums;
+import com.yunfeiyun.agmp.common.framework.manager.ResManager;
+import com.yunfeiyun.agmp.common.utils.DictUtils;
+import com.yunfeiyun.agmp.common.utils.SecurityUtils;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.common.web.system.domain.SysRes;
+import com.yunfeiyun.agmp.common.web.system.service.ISysDictDataService;
+import com.yunfeiyun.agmp.tss.domain.WmsFinishgoods;
+import com.yunfeiyun.agmp.tss.domain.reqvo.AppSeedOutAddHistoryListReqVo;
+import com.yunfeiyun.agmp.tss.domain.reqvo.MppMaterialReqVo;
+import com.yunfeiyun.agmp.tss.domain.reqvo.WmsFinishgoodsReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.AppSeedOutAddHistoryResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.MppMaterialResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.WmsFinishGoodsStockSumInfoResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.WmsFinishgoodsInfoResVo;
+import com.yunfeiyun.agmp.tss.service.IMppMaterialService;
+import com.yunfeiyun.agmp.tss.service.IWmsFinishgoodsService;
+import com.yunfeiyun.agmp.tss.util.DataAuthUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 农产品货物Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-06-30
+ */
+@RestController
+@RequestMapping("/wms/finishgoods")
+public class WmsFinishgoodsController extends BaseController
+{
+    @Autowired
+    private IWmsFinishgoodsService wmsFinishgoodsService;
+    @Autowired
+    private ResManager resManager;
+    @Autowired
+    private IMppMaterialService mppMaterialService;
+    @Autowired
+    private DataAuthUtil dataAuthUtil;
+    @Resource
+    private ISysDictDataService sysDictDataService;
+
+    /**
+     * 查询农产品货物列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:finishgoods:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WmsFinishgoods wmsFinishgoods)
+    {
+        startPage();
+        List<WmsFinishgoods> list = wmsFinishgoodsService.selectWmsFinishgoodsList(wmsFinishgoods);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询农产品货物列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:finishgoods:stock:sum')")
+    @GetMapping("/stock/sum")
+    public TableDataInfo stockSum(WmsFinishgoodsReqVo reqVo)
+    {
+        boolean b = SecurityUtils.isValidate();
+        if (b) {
+            List<String> warehouseIds = dataAuthUtil.getManagerWarehouse();
+            if (warehouseIds.size() == 0) {
+                return getDataTable(new ArrayList<>());
+            }
+            reqVo.setWarehouseIds(warehouseIds);
+        }
+
+        startPage();
+        List<WmsFinishGoodsStockSumInfoResVo> list = wmsFinishgoodsService.selectWmsFinishGoodsStockSumInfo(reqVo);
+        return getDataTable(list);
+    }
+
+
+
+    /**
+     * 导出农产品货物列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:finishgoods:stock:sum:export')")
+    @Log(title = "农产品货物", businessType = BusinessType.EXPORT)
+    @PostMapping("/stock/sum/export")
+    public void sumExport(HttpServletResponse response,@RequestBody WmsFinishgoodsReqVo reqVo)
+    {
+        String title = "产品列表";
+        if ("0".equals(reqVo.getFinishgoodsType())) {
+            title = "采收产品列表";
+        } else if ("1".equals(reqVo.getFinishgoodsType())) {
+            title = "加工产品列表";
+        } else if ("2".equals(reqVo.getFinishgoodsType())) {
+            title = "包装产品列表";
+        }
+
+        ExcelUtil<WmsFinishGoodsStockSumInfoResVo> util = new ExcelUtil<WmsFinishGoodsStockSumInfoResVo>(WmsFinishGoodsStockSumInfoResVo.class);
+
+        boolean b = SecurityUtils.isValidate();
+        if (b) {
+            List<String> warehouseIds = dataAuthUtil.getManagerWarehouse();
+            if (warehouseIds.size() == 0) {
+                util.exportExcel(response, new ArrayList<>(), title, title);
+                return;
+            }
+            reqVo.setWarehouseIds(warehouseIds);
+        }
+
+        reqVo.setOrderByOfExport("true");
+        List<WmsFinishGoodsStockSumInfoResVo> list = wmsFinishgoodsService.selectWmsFinishGoodsStockSumInfo(reqVo);
+        for (int i = 0; i < list.size(); i++) {
+            list.get(i).setIndex(i + 1);
+        }
+        util.exportExcel(response, list, title, title);
+    }
+
+    /**
+     * 获取农产品货物详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('wms:finishgoods:info')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(@RequestParam("finishgoodsId") String finishgoodsId)
+    {
+        WmsFinishgoodsInfoResVo resVo = wmsFinishgoodsService.selectWmsFinishgoodsByFinishgoodsId(finishgoodsId);
+        //查询图片
+        List<SysRes> res = resManager.queryRes(finishgoodsId, ResConstants.BizType.SOURCE_INFO_AVATAR, ResConstants.mediaType.IMG);
+        String resIds = "";
+        for (SysRes re : res) {
+            resIds += re.getResId() + ",";
+        }
+        if (resIds.length() > 0) {
+            resIds = resIds.substring(0, resIds.length() - 1);
+        }
+        resVo.setProcessResIds(resIds);
+        //查询原材料列表
+        MppMaterialReqVo reqVo = new MppMaterialReqVo();
+        reqVo.setFinishgoodsId(finishgoodsId);
+        List<MppMaterialResVo> mppMaterialResVos = mppMaterialService.selectMppMaterialList(reqVo);
+        resVo.setMppMaterials(mppMaterialResVos);
+
+        return success(resVo);
+    }
+
+    /**
+     * 新增农产品货物
+     */
+    @PreAuthorize("@ss.hasPermi('wms:finishgoods:add')")
+    @Log(title = "农产品货物", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody WmsFinishgoods wmsFinishgoods)
+    {
+        return toAjax(wmsFinishgoodsService.insertWmsFinishgoods(wmsFinishgoods));
+    }
+
+    /**
+     * 修改农产品货物
+     */
+    @PreAuthorize("@ss.hasPermi('wms:finishgoods:edit')")
+    @Log(title = "农产品货物", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody WmsFinishgoods wmsFinishgoods)
+    {
+        return toAjax(wmsFinishgoodsService.updateWmsFinishgoods(wmsFinishgoods));
+    }
+
+    /**
+     * 删除农产品货物
+     */
+    @PreAuthorize("@ss.hasPermi('wms:finishgoods:delete')")
+    @Log(title = "农产品货物", businessType = BusinessType.DELETE)
+	@DeleteMapping("/delete")
+    public AjaxResult remove(@RequestParam("finishgoodsIds") String[] finishgoodsIds)
+    {
+        return toAjax(wmsFinishgoodsService.deleteWmsFinishgoodsByFinishgoodsIds(finishgoodsIds));
+    }
+
+    /**
+     * 生长过程图片上传
+     */
+    @PreAuthorize("@ss.hasPermi('wms:finishgoods:period:upload')")
+    @Log(title = "生长过程图片上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/period/upload")
+    public AjaxResult periodUpload(MultipartFile file) throws Exception
+    {
+        if (!file.isEmpty())
+        {
+            SysRes sysRes  = resManager.uploadRes( ResConstants.BizType.FINISH_GOODS_PERIOD, ResConstants.mediaType.IMG, "", file,getLoginUser());
+            return success(sysRes);
+        }
+        return error(ErrorCode.UPLOAD_FAIL.getCode());
+    }
+
+    @GetMapping("/app/seed/out/add/history/list")
+    public TableDataInfo appSeedOutAddHistoryList(AppSeedOutAddHistoryListReqVo appSeedOutAddHistoryListReqVo){
+        List<SysDictData> mppProductList = DictUtils.getDictCache(DictTypeEnums.AGM_MPP_PRODUCT.getCode());
+
+        List<String> mppProductCodes = new ArrayList<>();
+        for(SysDictData sysDictData:mppProductList){
+            if("0".equals(sysDictData.getDictCode())){
+                mppProductCodes.add(sysDictData.getDictValue());
+            }
+        }
+        if(mppProductCodes.isEmpty()){
+            return getDataTable(new ArrayList<>());
+        }
+        appSeedOutAddHistoryListReqVo.setFinishgoodscodeList(mppProductCodes);
+        startPage();
+        List<AppSeedOutAddHistoryResVo> list = wmsFinishgoodsService.selectAppSeedOutAddHistoryList(appSeedOutAddHistoryListReqVo);
+        return getDataTable(list);
+    }
+}

+ 139 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/WmsStockController.java

@@ -0,0 +1,139 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.WmsStock;
+import com.yunfeiyun.agmp.tss.domain.reqvo.WmsStockAddReqVo;
+import com.yunfeiyun.agmp.tss.domain.reqvo.WmsStockBatchChangeReqVo;
+import com.yunfeiyun.agmp.tss.domain.reqvo.WmsStockListReqVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.WmsStockAppMapResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.WmsStockListResVo;
+import com.yunfeiyun.agmp.tss.service.IWmsStockService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 库存Controller
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/wms/stock")
+public class WmsStockController extends BaseController
+{
+    @Autowired
+    private IWmsStockService wmsStockService;
+
+    /**
+     * 查询库存列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:stock:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WmsStockListReqVo wmsStockListReqVo)
+    {
+        startPage();
+        List<WmsStockListResVo> list = wmsStockService.selectWmsStockList(wmsStockListReqVo);
+        return getDataTable(list);
+    }
+
+    /**
+     * app查询库存农资信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:stock:app:map')")
+    @GetMapping("/app/map")
+    public AjaxResult appMap()
+    {
+
+        List<WmsStockAppMapResVo> list = wmsStockService.selectWmsStockAppMapResVoList();
+        return success(list);
+    }
+
+
+    /**
+     * 导出库存列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:stock:export')")
+    @Log(title = "库存", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody WmsStockListReqVo wmsStockListReqVo)
+    {
+        List<WmsStockListResVo> list = wmsStockService.selectWmsStockList(wmsStockListReqVo);
+        ExcelUtil<WmsStockListResVo> util = new ExcelUtil<>(WmsStockListResVo.class);
+        util.exportExcel(response, list, "库存数据");
+    }
+
+    /**
+     * 获取库存详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('wms:stock:query')")
+    @GetMapping(value = "/{stockId}")
+    public AjaxResult getInfo(@PathVariable("stockId") String stockId)
+    {
+        return success(wmsStockService.selectWmsStockByStockId(stockId));
+    }
+    /**
+     * 获取库存详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('wms:stock:info')")
+    @GetMapping(value = "/info")
+    public AjaxResult infoByGoodsIdAndWarehouseId( @Valid WmsStock wmsStock)
+    {
+        return success(wmsStockService.selectWmsStockByGoodsIdAndWarehouseId(wmsStock));
+    }
+
+    /**
+     * 新增库存
+     */
+    @PreAuthorize("@ss.hasPermi('wms:stock:add')")
+    @Log(title = "库存", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody WmsStockAddReqVo wmsStockAddReqVo)
+    {
+        return toAjax(wmsStockService.add(wmsStockAddReqVo));
+    }
+
+    /**
+     * 新增库存
+     */
+    @PreAuthorize("@ss.hasPermi('wms:stock:batch:change')")
+    @Log(title = "库存", businessType = BusinessType.INSERT)
+    @PostMapping("/batch/change")
+    public AjaxResult batchChange(@Valid @RequestBody WmsStockBatchChangeReqVo wmsStockBatchChangeReqVo)
+    {
+        return toAjax(wmsStockService.batchChange(wmsStockBatchChangeReqVo));
+    }
+
+    /**
+     * 修改库存
+     */
+    @PreAuthorize("@ss.hasPermi('wms:stock:edit')")
+    @Log(title = "库存", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody WmsStock wmsStock)
+    {
+        return toAjax(wmsStockService.updateWmsStock(wmsStock));
+    }
+
+    /**
+     * 删除库存
+     */
+    @PreAuthorize("@ss.hasPermi('wms:stock:remove')")
+    @Log(title = "库存", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{stockIds}")
+    public AjaxResult remove(@PathVariable String[] stockIds)
+    {
+        return toAjax(wmsStockService.deleteWmsStockByStockIds(stockIds));
+    }
+
+
+}

+ 121 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/WmsSupplierController.java

@@ -0,0 +1,121 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.constant.ResConstants;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.framework.manager.ResManager;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.common.web.system.domain.SysRes;
+import com.yunfeiyun.agmp.tss.domain.WmsSupplier;
+import com.yunfeiyun.agmp.tss.domain.reqvo.WmsSupplierAddReqVo;
+import com.yunfeiyun.agmp.tss.service.IWmsSupplierService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 供应商Controller
+ *
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/wms/supplier")
+public class WmsSupplierController extends BaseController
+{
+    @Autowired
+    private IWmsSupplierService wmsSupplierService;
+    @Autowired
+    private ResManager resManager;
+
+    /**
+     * 查询供应商列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:supplier:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WmsSupplier wmsSupplier)
+    {
+        startPage();
+        List<WmsSupplier> list = wmsSupplierService.selectWmsSupplierList(wmsSupplier);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出供应商列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:supplier:export')")
+    @Log(title = "供应商", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody WmsSupplier wmsSupplier)
+    {
+        List<WmsSupplier> list = wmsSupplierService.selectWmsSupplierList(wmsSupplier);
+        ExcelUtil<WmsSupplier> util = new ExcelUtil<WmsSupplier>(WmsSupplier.class);
+        util.exportExcel(response, list, "供应商数据");
+    }
+
+    @PreAuthorize("@ss.hasPermi('wms:supplier:info')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(@RequestParam("supplierId") String supplierId)
+    {
+        List<SysRes> sysResList = resManager.queryRes(supplierId, ResConstants.BizType.SUPPLY.getKey());
+        WmsSupplier wmsSupplier = wmsSupplierService.selectWmsSupplierBySupplierId(supplierId);
+        if(!sysResList.isEmpty())
+        {
+            SysRes sysRes = sysResList.get(0);
+            wmsSupplier.setSupplierPreview(sysRes.getResUrl());
+            wmsSupplier.setSupplierQualificationResId(sysRes.getResId());
+        }
+        return success(wmsSupplier);
+    }
+
+    /**
+     * 新增供应商
+     */
+    @PreAuthorize("@ss.hasPermi('wms:supplier:add')")
+    @Log(title = "供应商", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody WmsSupplierAddReqVo wmsSupplierAddReqVo)
+    {
+        return toAjax(wmsSupplierService.insertWmsSupplier(wmsSupplierAddReqVo));
+    }
+
+    /**
+     * 修改供应商
+     */
+    @PreAuthorize("@ss.hasPermi('wms:supplier:edit')")
+    @Log(title = "供应商", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody WmsSupplierAddReqVo  wmsSupplierAddReqVo)
+    {
+        return toAjax(wmsSupplierService.updateWmsSupplier(wmsSupplierAddReqVo));
+    }
+
+    /**
+     * 删除供应商
+     */
+    @PreAuthorize("@ss.hasPermi('wms:supplier:delete')")
+    @Log(title = "供应商", businessType = BusinessType.DELETE)
+    @DeleteMapping("/delete")
+    public AjaxResult delete(String[] supplierIds)
+    {
+        return toAjax(wmsSupplierService.deleteWmsSupplierBySupplierIds(supplierIds));
+    }
+
+    /**
+     * 供应商资质上传
+     */
+    @PreAuthorize("@ss.hasPermi('wms:supplier:upload')")
+    @Log(title = "供应商资质上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/upload")
+    public AjaxResult upload(MultipartFile file)
+    {
+        return success(wmsSupplierService.upload(file));
+    }
+}

+ 153 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/WmsWarehouseController.java

@@ -0,0 +1,153 @@
+package com.yunfeiyun.agmp.tss.controller;
+
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.enums.BusinessType;
+import com.yunfeiyun.agmp.common.utils.SecurityUtils;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.tss.domain.FmsLandHouse;
+import com.yunfeiyun.agmp.tss.domain.WmsWarehouse;
+import com.yunfeiyun.agmp.tss.domain.reqvo.WmsWarehouseListReqVo;
+import com.yunfeiyun.agmp.tss.service.IFmsLandHouseService;
+import com.yunfeiyun.agmp.tss.service.IWmsWarehouseService;
+import com.yunfeiyun.agmp.tss.util.DataAuthUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 仓库Controller
+ *
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/wms/warehouse")
+public class WmsWarehouseController extends BaseController
+{
+    @Autowired
+    private IWmsWarehouseService wmsWarehouseService;
+    @Autowired
+    private IFmsLandHouseService fmsLandHouseService;
+    @Autowired
+    private DataAuthUtil dataAuthUtil;
+
+    /**
+     * 查询仓库列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:warehouse:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WmsWarehouseListReqVo wmsWarehouse)
+    {
+        boolean b = SecurityUtils.isValidate();
+        if (b) {
+            List<String> warehouseIds = dataAuthUtil.getManagerWarehouse();
+            if (warehouseIds.size() == 0) {
+                return getDataTable(new ArrayList<>());
+            }
+            wmsWarehouse.setWarehouseIds(warehouseIds);
+        }
+        startPage();
+        List<WmsWarehouse> list = wmsWarehouseService.selectWmsWarehouseList(wmsWarehouse);
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('wms:warehouse:select:list')")
+    @GetMapping("/select/list")
+    public TableDataInfo selectList(WmsWarehouse wmsWarehouse)
+    {
+        List<WmsWarehouse> list = wmsWarehouseService.selectWmsWarehouseList(wmsWarehouse);
+        List<Map<String, Object>> resultList = new ArrayList<>();
+        for (WmsWarehouse warehouse : list) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("warehouseId", warehouse.getWarehouseId());
+            map.put("warehouseName", warehouse.getWarehouseName());
+            resultList.add(map);
+        }
+        return getDataTable(resultList);
+    }
+
+    /**
+     * 导出仓库列表
+     */
+    @PreAuthorize("@ss.hasPermi('wms:warehouse:export')")
+    @Log(title = "仓库", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response,@RequestBody WmsWarehouse wmsWarehouse)
+    {
+        ExcelUtil<WmsWarehouse> util = new ExcelUtil<WmsWarehouse>(WmsWarehouse.class);
+        boolean b = SecurityUtils.isValidate();
+        if (b) {
+            List<String> warehouseIds = dataAuthUtil.getManagerWarehouse();
+            if (warehouseIds.size() == 0) {
+                util.exportExcel(response, new ArrayList<>(), "仓库数据");
+                return;
+            }
+            wmsWarehouse.setWarehouseIds(warehouseIds);
+        }
+        List<WmsWarehouse> list = wmsWarehouseService.selectWmsWarehouseList(wmsWarehouse);
+
+        util.exportExcel(response, list, "仓库数据");
+    }
+
+    /**
+     * 获取仓库详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('wms:warehouse:query')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(@RequestParam("warehouseId") String warehouseId)
+    {
+        WmsWarehouse wmsWarehouse = wmsWarehouseService.selectWmsWarehouseByWarehouseId(warehouseId);
+        FmsLandHouse fmsLandHouse = new FmsLandHouse();
+        fmsLandHouse.setWarehouseId(warehouseId);
+        List<FmsLandHouse> fmsLandHouses = fmsLandHouseService.selectFmsLandHouseList(fmsLandHouse);
+        List<String> list = new ArrayList<>();
+        for (FmsLandHouse landHouse : fmsLandHouses) {
+            list.add(landHouse.getLandId());
+        }
+        wmsWarehouse.setLandIds(list);
+        return success(wmsWarehouse);
+    }
+
+    /**
+     * 新增仓库
+     */
+    @PreAuthorize("@ss.hasPermi('wms:warehouse:add')")
+    @Log(title = "仓库", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@Valid @RequestBody WmsWarehouse wmsWarehouse)
+    {
+        return toAjax(wmsWarehouseService.insertWmsWarehouse(wmsWarehouse));
+    }
+
+    /**
+     * 修改仓库
+     */
+    @PreAuthorize("@ss.hasPermi('wms:warehouse:edit')")
+    @Log(title = "仓库", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@Valid @RequestBody WmsWarehouse wmsWarehouse)
+    {
+        return toAjax(wmsWarehouseService.updateWmsWarehouse(wmsWarehouse));
+    }
+
+    /**
+     * 删除仓库
+     */
+    @PreAuthorize("@ss.hasPermi('wms:warehouse:delete')")
+    @Log(title = "仓库", businessType = BusinessType.DELETE)
+    @DeleteMapping("/delete")
+    public AjaxResult delete(@RequestParam("warehouseIds") String[] warehouseIds)
+    {
+        return toAjax(wmsWarehouseService.deleteWmsWarehouseByWarehouseIds(warehouseIds));
+    }
+}

+ 264 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/FmsBlock.java

@@ -0,0 +1,264 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import com.yunfeiyun.agmp.common.utils.DictUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * 地块对象 FmsBlock
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-15
+ */
+public class FmsBlock extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 地块标识 */
+    private String blockId;
+
+    /** 基地标识 */
+    @NotBlank(message = "基地标识不能为空")
+    @Excel(name = "基地标识")
+    private String landId;
+
+    /** 地块名称 */
+    @NotBlank(message = "地块名称不能为空")
+    @Excel(name = "地块名称")
+    private String blockName;
+
+    /** 地块类型 */
+    @NotBlank(message = "地块类型不能为空")
+    @Excel(name = "地块类型")
+    private String blockType;
+
+    /** 地块负责人 */
+    @NotBlank(message = "地块负责人不能为空")
+    @Excel(name = "地块负责人")
+    private String blockManager;
+
+    /** 地块负责人名称 */
+    @Excel(name = "地块负责人名称")
+    private String blockManagername;
+
+    /** 地块面积 */
+    @NotNull(message = "地块面积不能为空")
+    @Excel(name = "地块面积")
+    private BigDecimal blockArea;
+
+    /** 地块种植面积 */
+    @Excel(name = "地块种植面积")
+    private BigDecimal blockAreaplant;
+
+    /** 地块坐标范围 */
+    @Excel(name = "地块坐标范围")
+    private String blockLngrange;
+
+    /** 地块颜色 */
+    @Excel(name = "地块颜色")
+    private String blockColor;
+
+    /** 地块预览图 */
+    @Excel(name = "地块预览图")
+    private String blockPreview;
+
+    /** 地块介绍 */
+    private String blockRemark;
+
+    @Excel(name = "地块预览图标识")
+    private String resIds;
+
+    /** 地块类型名称 */
+    @Excel(name = "地块类型名称")
+    private String blockTypeContent;
+
+
+
+    /** 地块图标 */
+    @Excel(name = "地块图标")
+    private String blockIcon;
+
+
+    /**序号*/
+    private Integer blockSeq;
+
+    /** 地块名称,用于查询时等于 */
+    private String blockNameEq;
+
+    public String getBlockTypeContent() {
+        if (!StringUtils.isEmpty(this.blockType)) {
+            return DictUtils.getDictLabel("fms_block_type", this.blockType);
+        } else {
+            return "";
+        }
+    }
+
+    public void setBlockTypeContent(String blockTypeContent) {
+        this.blockTypeContent = blockTypeContent;
+    }
+
+    public String getResIds() {
+        return resIds;
+    }
+
+    public void setResIds(String resIds) {
+        this.resIds = resIds;
+    }
+
+    public String getBlockRemark() {
+        return blockRemark;
+    }
+
+    public void setBlockRemark(String blockRemark) {
+        this.blockRemark = blockRemark;
+    }
+
+    public String getBlockPreview() {
+        return blockPreview;
+    }
+
+    public void setBlockPreview(String blockPreview) {
+        this.blockPreview = blockPreview;
+    }
+
+    public void setBlockId(String blockId)
+    {
+        this.blockId = blockId;
+    }
+
+    public String getBlockId()
+    {
+        return blockId;
+    }
+    public void setLandId(String landId)
+    {
+        this.landId = landId;
+    }
+
+    public String getLandId()
+    {
+        return landId;
+    }
+    public void setBlockName(String blockName)
+    {
+        this.blockName = blockName;
+    }
+
+    public String getBlockName()
+    {
+        return blockName;
+    }
+    public void setBlockType(String blockType)
+    {
+        this.blockType = blockType;
+    }
+
+    public String getBlockType()
+    {
+        return blockType;
+    }
+    public void setBlockManager(String blockManager)
+    {
+        this.blockManager = blockManager;
+    }
+
+    public String getBlockManager()
+    {
+        return blockManager;
+    }
+    public void setBlockManagername(String blockManagername)
+    {
+        this.blockManagername = blockManagername;
+    }
+
+    public String getBlockManagername()
+    {
+        return blockManagername;
+    }
+    public void setBlockArea(BigDecimal blockArea)
+    {
+        this.blockArea = blockArea;
+    }
+
+    public BigDecimal getBlockArea()
+    {
+        return blockArea;
+    }
+    public void setBlockAreaplant(BigDecimal blockAreaplant)
+    {
+        this.blockAreaplant = blockAreaplant;
+    }
+
+    public BigDecimal getBlockAreaplant()
+    {
+        return blockAreaplant;
+    }
+    public void setBlockLngrange(String blockLngrange)
+    {
+        this.blockLngrange = blockLngrange;
+    }
+
+    public String getBlockLngrange()
+    {
+        return blockLngrange;
+    }
+    public void setBlockColor(String blockColor)
+    {
+        this.blockColor = blockColor;
+    }
+
+    public String getBlockColor()
+    {
+        return blockColor;
+    }
+
+    public String getBlockNameEq() {
+        return blockNameEq;
+    }
+
+    public void setBlockNameEq(String blockNameEq) {
+        this.blockNameEq = blockNameEq;
+    }
+
+    public Integer getBlockSeq() {
+        return blockSeq;
+    }
+
+    public void setBlockSeq(Integer blockSeq) {
+        this.blockSeq = blockSeq;
+    }
+    public String getBlockIcon() {
+        return blockIcon;
+    }
+
+    public void setBlockIcon(String blockIcon) {
+        this.blockIcon = blockIcon;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("blockId", getBlockId())
+            .append("landId", getLandId())
+            .append("blockName", getBlockName())
+            .append("blockType", getBlockType())
+            .append("blockManager", getBlockManager())
+            .append("blockManagername", getBlockManagername())
+            .append("blockArea", getBlockArea())
+            .append("blockAreaplant", getBlockAreaplant())
+            .append("blockLngrange", getBlockLngrange())
+            .append("blockColor", getBlockColor())
+            .append("blockPreview", getBlockPreview())
+            .append("blockRemark", getBlockRemark())
+            .append("resIds", getResIds())
+            .append("blockNameEq", getBlockNameEq())
+            .toString();
+    }
+}

+ 87 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/FmsLand.java

@@ -0,0 +1,87 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * 基地对象 FmsLand
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-15
+ */
+@Data
+public class FmsLand extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 基地标识 */
+    private String landId;
+
+    /** 基地名称 */
+    @NotBlank(message = "基地名称不能为空")
+    @Excel(name = "基地名称")
+    private String landName;
+
+    /** 基地面积 */
+    @NotNull(message = "基地面积不能为空")
+    @Excel(name = "基地面积")
+    private BigDecimal landArea;
+
+    /** 基地地块数量 */
+    @Excel(name = "基地地块数量")
+    private Long landBlockcount;
+
+    /** 基地设备数量 */
+    @Excel(name = "基地设备数量")
+    private Long landDevcount;
+
+    /** 基地负责人 */
+    @NotBlank(message = "基地负责人不能为空")
+    @Excel(name = "基地负责人")
+    private String landManager;
+
+    /** 基地负责人 */
+    @Excel(name = "基地负责人")
+    private String landManagerName;
+
+    /** 基地联系方式 */
+    @NotBlank(message = "基地联系方式不能为空")
+    @Excel(name = "基地联系方式")
+    private String landTel;
+
+    /** 基地位置 */
+    @NotBlank(message = "基地位置不能为空")
+    @Excel(name = "基地位置")
+    private String landLocation;
+
+    /** 基地预览图 */
+    @Excel(name = "基地预览图")
+    private String landPreview;
+
+    /** 基地介绍 */
+    @Excel(name = "基地介绍")
+    private String landRemark;
+
+    /** 纬度 */
+    @Excel(name = "纬度")
+    private String landLatitude;
+
+    /** 经度 */
+    @Excel(name = "经度")
+    private String landLongitude;
+
+    @Excel(name = "地块预览图标识")
+    private String resIds;
+
+    /** 基地名称,用于查询等于 */
+    private String landNameEq;
+
+    private Integer landSeq;
+
+
+}

+ 29 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/FmsLandHouse.java

@@ -0,0 +1,29 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 仓库基地关联对象 FmsLandHouse
+ * 
+ * @author 杨晓辉
+ * @date 2024-02-20
+ */
+@Data
+public class FmsLandHouse extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 关系标识 */
+    private String landhouseId;
+
+    /** 基地标识 */
+    @Excel(name = "基地标识")
+    private String landId;
+
+    /** 仓库标识 */
+    @Excel(name = "仓库标识")
+    private String warehouseId;
+
+}

+ 132 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/FmsPeriod.java

@@ -0,0 +1,132 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 作物周期对象 FmsPeriod
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-16
+ */
+public class FmsPeriod extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 作物周期标识 */
+    private String periodId;
+
+    /** 作物标识 */
+    @Excel(name = "作物标识")
+    private String cropId;
+
+    /** 作物周期阶段名称 */
+    @Excel(name = "作物周期阶段名称")
+    private String periodName;
+
+    /** 作物周期生长天数 */
+    @Excel(name = "作物周期生长天数")
+    private Integer periodDays;
+
+    /** 作物周期备注 */
+    @Excel(name = "作物周期备注")
+    private String periodRemark;
+
+    /** 作物周期预览图 */
+    @Excel(name = "作物周期预览图")
+    private String periodPreview;
+
+    /** 作物周期排序 */
+    @Excel(name = "作物周期排序")
+    private String periodSeq;
+
+    /** 资源id */
+    private String resIds;
+
+    public String getResIds() {
+        return resIds;
+    }
+
+    public void setResIds(String resIds) {
+        this.resIds = resIds;
+    }
+
+    public void setPeriodId(String periodId)
+    {
+        this.periodId = periodId;
+    }
+
+    public String getPeriodId()
+    {
+        return periodId;
+    }
+    public void setCropId(String cropId)
+    {
+        this.cropId = cropId;
+    }
+
+    public String getCropId()
+    {
+        return cropId;
+    }
+    public void setPeriodName(String periodName)
+    {
+        this.periodName = periodName;
+    }
+
+    public String getPeriodName()
+    {
+        return periodName;
+    }
+    public void setPeriodDays(Integer periodDays)
+    {
+        this.periodDays = periodDays;
+    }
+
+    public Integer getPeriodDays()
+    {
+        return periodDays;
+    }
+    public void setPeriodRemark(String periodRemark)
+    {
+        this.periodRemark = periodRemark;
+    }
+
+    public String getPeriodRemark()
+    {
+        return periodRemark;
+    }
+    public void setPeriodPreview(String periodPreview)
+    {
+        this.periodPreview = periodPreview;
+    }
+
+    public String getPeriodPreview()
+    {
+        return periodPreview;
+    }
+
+    public String getPeriodSeq() {
+        return periodSeq;
+    }
+
+    public void setPeriodSeq(String periodSeq) {
+        this.periodSeq = periodSeq;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("periodId", getPeriodId())
+            .append("cropId", getCropId())
+            .append("periodName", getPeriodName())
+            .append("periodDays", getPeriodDays())
+            .append("periodRemark", getPeriodRemark())
+            .append("periodPreview", getPeriodPreview())
+            .append("periodSeq", getPeriodSeq())
+            .append("resIds", getResIds())
+            .toString();
+    }
+}

+ 358 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/FmsTask.java

@@ -0,0 +1,358 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import com.yunfeiyun.agmp.common.enums.DictTypeEnums;
+import com.yunfeiyun.agmp.common.utils.DictUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 农事任务对象 FmsTask
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-23
+ */
+public class FmsTask extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 农事任务标识 */
+    private String taskId;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String taskNo;
+
+    /** 种植计划标识 */
+    @Excel(name = "种植计划标识")
+    private String planId;
+
+    /** 地块标识 */
+    @Excel(name = "地块标识")
+    private String blockId;
+
+    /** 基地标识 */
+    @Excel(name = "基地标识")
+    private String landId;
+
+    /** 作物标识 */
+    @Excel(name = "作物标识")
+    private String cropId;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String taskCreatetype;
+
+    /** 农事任务类型 */
+    @Excel(name = "农事任务类型")
+    private String taskType;
+
+    /** 农事任务详情 */
+    @Excel(name = "农事任务详情")
+    private String taskContent;
+
+    /** 农事任务计划执行日期 */
+    @Excel(name = "农事任务计划执行日期")
+    private String taskPlanstartdate;
+
+    /** 农事任务计划截止日期 */
+    @Excel(name = "农事任务计划截止日期")
+    private String taskPlanenddate;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String taskAudittype;
+
+    /** 农事任务审核状态 */
+    @Excel(name = "农事任务审核状态")
+    private String taskStatus;
+
+    /** 农事任务负责人 */
+    @Excel(name = "农事任务负责人")
+    private String taskManager;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String taskManagername;
+
+    /** 农事任务创建人 */
+    @Excel(name = "农事任务创建人")
+    private String taskCreator;
+
+    /** 农事任务创建时间 */
+    @Excel(name = "农事任务创建时间")
+    private String taskCreateddate;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String taskCompletedate;
+
+    /** 农事任务修改时间 */
+    @Excel(name = "农事任务修改时间")
+    private String taskModifieddate;
+
+    /** 农事任务完成原因 */
+    @Excel(name = "农事任务完成原因")
+    private String taskCompletereason;
+
+    /** 审核人 */
+    @Excel(name = "审核人")
+    private String taskAuditor;
+
+
+    /** 农事任务类型名称 */
+    private String taskTypeContent;
+
+    /** 审核类型名称 */
+    private String taskAudittypeContent;
+
+    /** 农事任务审核状态名称 */
+    private String taskStatusContent;
+
+    public String getTaskTypeContent() {
+        if (!StringUtils.isEmpty(this.taskType)) {
+            if("-1".equals(this.taskType)){
+                return "采收";
+            }
+            if("-2".equals(this.taskType)){
+                return "巡田";
+            }
+            return DictUtils.getDictLabel(DictTypeEnums.FMS_TASK_WORK_TYPE.getCode(), this.taskType);
+        } else {
+            return "";
+        }
+    }
+
+    public String getTaskAudittypeContent() {
+        if (!StringUtils.isEmpty(this.taskAudittype)) {
+            return DictUtils.getDictLabel(DictTypeEnums.FMS_TASK_AUDIT_TYPE.getCode(), this.taskAudittype);
+        } else {
+            return "";
+        }
+    }
+
+    public String getTaskStatusContent() {
+        if (!StringUtils.isEmpty(this.taskStatus)) {
+            return DictUtils.getDictLabel(DictTypeEnums.FMS_TASK_STATUS.getCode(), this.taskStatus);
+        } else {
+            return "";
+        }
+    }
+
+    public void setTaskId(String taskId)
+    {
+        this.taskId = taskId;
+    }
+
+    public String getTaskId()
+    {
+        return taskId;
+    }
+    public void setTaskNo(String taskNo)
+    {
+        this.taskNo = taskNo;
+    }
+
+    public String getTaskNo()
+    {
+        return taskNo;
+    }
+    public void setPlanId(String planId)
+    {
+        this.planId = planId;
+    }
+
+    public String getPlanId()
+    {
+        return planId;
+    }
+    public void setBlockId(String blockId)
+    {
+        this.blockId = blockId;
+    }
+
+    public String getBlockId()
+    {
+        return blockId;
+    }
+    public void setLandId(String landId)
+    {
+        this.landId = landId;
+    }
+
+    public String getLandId()
+    {
+        return landId;
+    }
+    public void setCropId(String cropId)
+    {
+        this.cropId = cropId;
+    }
+
+    public String getCropId()
+    {
+        return cropId;
+    }
+    public void setTaskCreatetype(String taskCreatetype)
+    {
+        this.taskCreatetype = taskCreatetype;
+    }
+
+    public String getTaskCreatetype()
+    {
+        return taskCreatetype;
+    }
+    public void setTaskType(String taskType)
+    {
+        this.taskType = taskType;
+    }
+
+    public String getTaskType()
+    {
+        return taskType;
+    }
+    public void setTaskContent(String taskContent)
+    {
+        this.taskContent = taskContent;
+    }
+
+    public String getTaskContent()
+    {
+        return taskContent;
+    }
+    public void setTaskPlanstartdate(String taskPlanstartdate)
+    {
+        this.taskPlanstartdate = taskPlanstartdate;
+    }
+
+    public String getTaskPlanstartdate()
+    {
+        return taskPlanstartdate;
+    }
+    public void setTaskPlanenddate(String taskPlanenddate)
+    {
+        this.taskPlanenddate = taskPlanenddate;
+    }
+
+    public String getTaskPlanenddate()
+    {
+        return taskPlanenddate;
+    }
+    public void setTaskAudittype(String taskAudittype)
+    {
+        this.taskAudittype = taskAudittype;
+    }
+
+    public String getTaskAudittype()
+    {
+        return taskAudittype;
+    }
+    public void setTaskStatus(String taskStatus)
+    {
+        this.taskStatus = taskStatus;
+    }
+
+    public String getTaskStatus()
+    {
+        return taskStatus;
+    }
+    public void setTaskManager(String taskManager)
+    {
+        this.taskManager = taskManager;
+    }
+
+    public String getTaskManager()
+    {
+        return taskManager;
+    }
+    public void setTaskManagername(String taskManagername)
+    {
+        this.taskManagername = taskManagername;
+    }
+
+    public String getTaskManagername()
+    {
+        return taskManagername;
+    }
+    public void setTaskCreator(String taskCreator)
+    {
+        this.taskCreator = taskCreator;
+    }
+
+    public String getTaskCreator()
+    {
+        return taskCreator;
+    }
+    public void setTaskCreateddate(String taskCreateddate)
+    {
+        this.taskCreateddate = taskCreateddate;
+    }
+
+    public String getTaskCreateddate()
+    {
+        return taskCreateddate;
+    }
+    public void setTaskCompletedate(String taskCompletedate)
+    {
+        this.taskCompletedate = taskCompletedate;
+    }
+
+    public String getTaskCompletedate()
+    {
+        return taskCompletedate;
+    }
+    public void setTaskModifieddate(String taskModifieddate)
+    {
+        this.taskModifieddate = taskModifieddate;
+    }
+
+    public String getTaskModifieddate()
+    {
+        return taskModifieddate;
+    }
+
+    public void setTaskCompletereason(String taskCompletereason){
+        this.taskCompletereason = taskCompletereason;
+    }
+
+    public String getTaskCompletereason(){
+        return taskCompletereason;
+    }
+
+    public String getTaskAuditor() {
+        return taskAuditor;
+    }
+
+    public void setTaskAuditor(String taskAuditor) {
+        this.taskAuditor = taskAuditor;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("taskId", getTaskId())
+            .append("taskNo", getTaskNo())
+            .append("planId", getPlanId())
+            .append("blockId", getBlockId())
+            .append("landId", getLandId())
+            .append("cropId", getCropId())
+            .append("taskCreatetype", getTaskCreatetype())
+            .append("taskType", getTaskType())
+            .append("taskContent", getTaskContent())
+            .append("taskPlanstartdate", getTaskPlanstartdate())
+            .append("taskPlanenddate", getTaskPlanenddate())
+            .append("taskAudittype", getTaskAudittype())
+            .append("taskStatus", getTaskStatus())
+            .append("taskManager", getTaskManager())
+            .append("taskManagername", getTaskManagername())
+            .append("taskCreator", getTaskCreator())
+            .append("taskCreateddate", getTaskCreateddate())
+            .append("taskCompletedate", getTaskCompletedate())
+            .append("taskModifieddate", getTaskModifieddate())
+            .append("taskCompletereason",getTaskCompletereason())
+            .append("taskAuditor",getTaskAuditor())
+            .toString();
+    }
+}

+ 133 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/FmsTaskpick.java

@@ -0,0 +1,133 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.math.BigDecimal;
+
+/**
+ * 农事任务采收对象 FmsTaskpick
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-23
+ */
+public class FmsTaskpick extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 农事任务采收标识 */
+    private String taskpickId;
+
+    /** 农事任务标识 */
+    @Excel(name = "农事任务标识")
+    private String taskId;
+    /** 农事任务采收编号 */
+    @Excel(name = "农事任务采收编号")
+    private String pickNo;
+
+    /** 农事任务采收面积 */
+    @Excel(name = "农事任务采收面积")
+    private BigDecimal pickArea;
+
+    /** 农事任务采收重量 */
+    @Excel(name = "农事任务采收重量")
+    private BigDecimal pickWeight;
+
+    /** 农事任务采收日期 */
+    @Excel(name = "农事任务采收日期")
+    private String pickDate;
+
+    /** 农事任务采收备注 */
+    @Excel(name = "农事任务采收备注")
+    private String pickRemark;
+
+    /** 农事任务采收入库状态 */
+    private String pickChangestatus;
+
+    public String getPickChangestatus() {
+        return pickChangestatus;
+    }
+
+    public void setPickChangestatus(String pickChangestatus) {
+        this.pickChangestatus = pickChangestatus;
+    }
+
+    public String getPickNo() {
+        return pickNo;
+    }
+
+    public void setPickNo(String pickNo) {
+        this.pickNo = pickNo;
+    }
+
+    public void setTaskpickId(String taskpickId)
+    {
+        this.taskpickId = taskpickId;
+    }
+
+    public String getTaskpickId()
+    {
+        return taskpickId;
+    }
+    public void setTaskId(String taskId)
+    {
+        this.taskId = taskId;
+    }
+
+    public String getTaskId()
+    {
+        return taskId;
+    }
+    public void setPickArea(BigDecimal pickArea)
+    {
+        this.pickArea = pickArea;
+    }
+
+    public BigDecimal getPickArea()
+    {
+        return pickArea;
+    }
+    public void setPickWeight(BigDecimal pickWeight)
+    {
+        this.pickWeight = pickWeight;
+    }
+
+    public BigDecimal getPickWeight()
+    {
+        return pickWeight;
+    }
+    public void setPickDate(String pickDate)
+    {
+        this.pickDate = pickDate;
+    }
+
+    public String getPickDate()
+    {
+        return pickDate;
+    }
+    public void setPickRemark(String pickRemark)
+    {
+        this.pickRemark = pickRemark;
+    }
+
+    public String getPickRemark()
+    {
+        return pickRemark;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("taskpickId", getTaskpickId())
+            .append("taskId", getTaskId())
+            .append("pickArea", getPickArea())
+            .append("pickWeight", getPickWeight())
+            .append("pickDate", getPickDate())
+            .append("pickRemark", getPickRemark())
+            .append("pickNo", getPickNo())
+            .append("pickChangestatus", getPickChangestatus())
+            .toString();
+    }
+}

+ 39 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/MppMaterial.java

@@ -0,0 +1,39 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 加工原材料对象 MppMaterial
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-03
+ */
+@Data
+public class MppMaterial extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 源材料标识 */
+    private String materialId;
+
+    /** 生产过程标识 */
+    @Excel(name = "生产过程标识")
+    private String taskId;
+
+    /** 库存标识 */
+    @Excel(name = "库存标识")
+    private String stockId;
+
+    /** 生产过程主料状态 */
+    @Excel(name = "生产过程主料状态")
+    private String materialStatus;
+
+    /** 原材料耗费数量 */
+    @Excel(name = "原材料耗费数量")
+    private BigDecimal materialCostnum;
+
+}

+ 49 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/MppProduct.java

@@ -0,0 +1,49 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 产品信息对象 MppProduct
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-21
+ */
+@Data
+public class MppProduct extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 产品信息标识 */
+    private String productId;
+
+    /** 产品信息名称 */
+    @NotBlank(message = "名称不能为空")
+    @Excel(name = "产品信息名称")
+    private String productName;
+
+    /** 产品信息编码 */
+    @Excel(name = "产品信息编码")
+    private String productCode;
+
+    /** 产品类型 */
+    @Excel(name = "产品类型")
+    private String productType;
+
+    /** 产品信息描述 */
+    @Excel(name = "产品信息描述")
+    private String productRemark;
+
+    /** 产品信息名称 (查询全等时使用)*/
+    private String productNameEq;
+
+    /** 创建人*/
+    private String dictCreator;
+
+    /** 排序*/
+    private String dictSeq;
+
+}

+ 51 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/MppQualitycheck.java

@@ -0,0 +1,51 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ *  质检对象 MppQualitycheck
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-30
+ */
+@Data
+public class MppQualitycheck extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 质检标识 */
+    private String qualitycheckId;
+
+    /** 农产品标识 */
+    @Excel(name = "农产品标识")
+    private String finishgoodsId;
+
+    /** 质检提交人 */
+    @Excel(name = "质检提交人")
+    private String qualitycheckCreator;
+
+    /** 质检创建时间 */
+    @Excel(name = "质检创建时间")
+    private String qualitycheckCreateddate;
+
+    /** 质检机构 */
+    @Excel(name = "质检机构")
+    private String qualitycheckOrg;
+
+    /** 质检时间 */
+    private String qualitycheckInspectdate;
+
+    /** 质检备注 */
+    private String qualityRemark;
+
+    /** 质检员 */
+    private String qualityInspector;
+
+    /** 质检图片路径 */
+    private String qualitycheckPreviews;
+
+    /** 质检图片资源标识 */
+    private String qualitycheckResIds;
+}

+ 59 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/MppTask.java

@@ -0,0 +1,59 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 农产品生产任务对象 MppTask
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-03
+ */
+@Data
+public class MppTask extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 生产过程标识 */
+    private String taskId;
+
+    /** 库存标识 */
+    @Excel(name = "库存标识")
+    private String stockId;
+
+    /** 生产过程批次编号 */
+    @Excel(name = "生产过程批次编号")
+    private String taskNo;
+
+    /** 生产过程类型 */
+    @Excel(name = "生产过程类型")
+    private String taskType;
+
+    /** 生产过程提交人 */
+    @Excel(name = "生产过程提交人")
+    private String taskCreator;
+
+    /** 生产过程创建时间 */
+    @Excel(name = "生产过程创建时间")
+    private String taskCreateddate;
+
+    /** 生产过程详情 */
+    @Excel(name = "生产过程详情")
+    private String taskRemark;
+
+    /** 生产过程加工数量 */
+    @Excel(name = "生产过程加工数量")
+    private BigDecimal taskdetailNum;
+
+    /** 生产过程加工企业 */
+    @Excel(name = "生产过程加工企业")
+    private String taskdetailOrg;
+
+    /** 生产过程加工时间 */
+    @Excel(name = "生产过程加工时间")
+    private String taskdetailCreateddate;
+
+}

+ 331 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/SpmOrder.java

@@ -0,0 +1,331 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.math.BigDecimal;
+
+/**
+ * 农产品出库登记单对象 SpmOrder
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-06
+ */
+public class SpmOrder extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 出库登记单订单标识 */
+    private String orderId;
+
+    /** 客户标识 */
+    @Excel(name = "客户标识")
+    private String customerId;
+
+    /** 库存标识 */
+    @Excel(name = "库存标识")
+    private String stockId;
+
+    /** 出库登记单订单状态 */
+    @Excel(name = "出库登记单订单状态")
+    private String orderStatus;
+
+    /**销售单号*/
+    private String orderNo;
+
+    /** 出库登记单销售数量 */
+    @Excel(name = "出库登记单销售数量")
+    private Long orderGoodscount;
+
+    /** 出库登记单订单生成时间 */
+    @Excel(name = "出库登记单订单生成时间")
+    private String orderCreateddate;
+
+    /** 出库登记单发货时间 */
+    @Excel(name = "出库登记单发货时间")
+    private String orderSenddate;
+
+    /** 出库登记单生成溯源码个数 */
+    @Excel(name = "出库登记单生成溯源码个数")
+    private Long orderTracecodenum;
+
+    /** 出库登记单发货方式 */
+    @Excel(name = "出库登记单发货方式")
+    private Long orderSendtype;
+
+    /** 出库登记单收货人姓名 */
+    @Excel(name = "出库登记单收货人姓名")
+    private String orderConsigneerealname;
+
+    /** 出库登记单联系电话 */
+    @Excel(name = "出库登记单联系电话")
+    private String orderConsigneetelphone;
+
+    /** 出库登记单收货地址 */
+    @Excel(name = "出库登记单收货地址")
+    private String orderConsigneeaddress;
+
+    /** 出库登记单收货省份 */
+    @Excel(name = "出库登记单收货省份")
+    private String orderConsigneeprovince;
+
+    /** 出库登记单收货市区 */
+    @Excel(name = "出库登记单收货市区")
+    private String orderConsigneecity;
+
+    /** 出库登记单收货县区 */
+    @Excel(name = "出库登记单收货县区")
+    private String orderConsigneedistrict;
+
+    /** 出库登记单车牌号 */
+    @Excel(name = "出库登记单车牌号")
+    private String orderLogisticsplate;
+
+    /** 出库登记单物流单号 */
+    @Excel(name = "出库登记单物流单号")
+    private String orderLogisticsNo;
+
+    /** 出库登记单备注信息 */
+    @Excel(name = "出库登记单备注信息")
+    private String orderRemark;
+
+    /** 出库登记单发货方式详情 */
+    @Excel(name = "出库登记单发货方式详情")
+    private String orderSendtyperemark;
+
+    /**预计送达方式*/
+    private String orderExpectedarrivaldate;
+
+    /** 物流费用 */
+    private BigDecimal logisticsExpense;
+    
+    /** 订单金额 */
+    private BigDecimal orderPrice;
+
+    public String getOrderConsigneedistrict() {
+        return orderConsigneedistrict;
+    }
+
+    public void setOrderConsigneedistrict(String orderConsigneedistrict) {
+        this.orderConsigneedistrict = orderConsigneedistrict;
+    }
+
+    public String getOrderConsigneeprovince() {
+        return orderConsigneeprovince;
+    }
+
+    public void setOrderConsigneeprovince(String orderConsigneeprovince) {
+        this.orderConsigneeprovince = orderConsigneeprovince;
+    }
+
+    public String getOrderConsigneecity() {
+        return orderConsigneecity;
+    }
+
+    public void setOrderConsigneecity(String orderConsigneecity) {
+        this.orderConsigneecity = orderConsigneecity;
+    }
+
+    public void setOrderId(String orderId)
+    {
+        this.orderId = orderId;
+    }
+
+    public String getOrderId()
+    {
+        return orderId;
+    }
+    public void setCustomerId(String customerId)
+    {
+        this.customerId = customerId;
+    }
+
+    public String getCustomerId()
+    {
+        return customerId;
+    }
+    public void setStockId(String stockId)
+    {
+        this.stockId = stockId;
+    }
+
+    public String getStockId()
+    {
+        return stockId;
+    }
+    public void setOrderStatus(String orderStatus)
+    {
+        this.orderStatus = orderStatus;
+    }
+
+    public String getOrderStatus()
+    {
+        return orderStatus;
+    }
+    public void setOrderGoodscount(Long orderGoodscount)
+    {
+        this.orderGoodscount = orderGoodscount;
+    }
+
+    public Long getOrderGoodscount()
+    {
+        return orderGoodscount;
+    }
+    public void setOrderCreateddate(String orderCreateddate)
+    {
+        this.orderCreateddate = orderCreateddate;
+    }
+
+    public BigDecimal getOrderPrice() {
+		return orderPrice;
+	}
+
+	public void setOrderPrice(BigDecimal orderPrice) {
+		this.orderPrice = orderPrice;
+	}
+
+	public String getOrderCreateddate()
+    {
+        return orderCreateddate;
+    }
+    public void setOrderSenddate(String orderSenddate)
+    {
+        this.orderSenddate = orderSenddate;
+    }
+
+    public String getOrderSenddate()
+    {
+        return orderSenddate;
+    }
+    public void setOrderTracecodenum(Long orderTracecodenum)
+    {
+        this.orderTracecodenum = orderTracecodenum;
+    }
+
+    public Long getOrderTracecodenum()
+    {
+        return orderTracecodenum;
+    }
+    public void setOrderSendtype(Long orderSendtype)
+    {
+        this.orderSendtype = orderSendtype;
+    }
+
+    public Long getOrderSendtype()
+    {
+        return orderSendtype;
+    }
+    public void setOrderConsigneerealname(String orderConsigneerealname)
+    {
+        this.orderConsigneerealname = orderConsigneerealname;
+    }
+
+    public String getOrderConsigneerealname()
+    {
+        return orderConsigneerealname;
+    }
+    public void setOrderConsigneetelphone(String orderConsigneetelphone)
+    {
+        this.orderConsigneetelphone = orderConsigneetelphone;
+    }
+
+    public String getOrderConsigneetelphone()
+    {
+        return orderConsigneetelphone;
+    }
+    public void setOrderConsigneeaddress(String orderConsigneeaddress)
+    {
+        this.orderConsigneeaddress = orderConsigneeaddress;
+    }
+
+    public String getOrderConsigneeaddress()
+    {
+        return orderConsigneeaddress;
+    }
+
+    public void setOrderLogisticsplate(String orderLogisticsplate)
+    {
+        this.orderLogisticsplate = orderLogisticsplate;
+    }
+
+    public String getOrderLogisticsplate()
+    {
+        return orderLogisticsplate;
+    }
+    public void setOrderLogisticsNo(String orderLogisticsNo)
+    {
+        this.orderLogisticsNo = orderLogisticsNo;
+    }
+
+    public String getOrderLogisticsNo()
+    {
+        return orderLogisticsNo;
+    }
+    public void setOrderRemark(String orderRemark)
+    {
+        this.orderRemark = orderRemark;
+    }
+
+    public String getOrderRemark()
+    {
+        return orderRemark;
+    }
+    public void setOrderSendtyperemark(String orderSendtyperemark)
+    {
+        this.orderSendtyperemark = orderSendtyperemark;
+    }
+
+    public String getOrderSendtyperemark()
+    {
+        return orderSendtyperemark;
+    }
+
+    public void setOrderExpectedarrivaldate(String orderExpectedarrivaldate){
+        this.orderExpectedarrivaldate = orderExpectedarrivaldate;
+    }
+    public String getOrderExpectedarrivaldate(){
+        return this.orderExpectedarrivaldate;
+    }
+
+    public void setOrderNo(String orderNo){
+        this.orderNo = orderNo;
+    }
+
+    public String getOrderNo(){
+        return this.orderNo;
+    }
+
+    public BigDecimal getLogisticsExpense() {
+        return logisticsExpense;
+    }
+
+    public void setLogisticsExpense(BigDecimal logisticsExpense) {
+        this.logisticsExpense = logisticsExpense;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("orderId", getOrderId())
+            .append("customerId", getCustomerId())
+            .append("stockId", getStockId())
+            .append("orderStatus", getOrderStatus())
+            .append("orderGoodscount", getOrderGoodscount())
+            .append("orderCreateddate", getOrderCreateddate())
+            .append("orderSenddate", getOrderSenddate())
+            .append("orderTracecodenum", getOrderTracecodenum())
+            .append("orderSendtype", getOrderSendtype())
+            .append("orderConsigneerealname", getOrderConsigneerealname())
+            .append("orderConsigneetelphone", getOrderConsigneetelphone())
+            .append("orderConsigneeaddress", getOrderConsigneeaddress())
+            .append("orderLogisticsplate", getOrderLogisticsplate())
+            .append("orderLogisticsNo", getOrderLogisticsNo())
+            .append("orderRemark", getOrderRemark())
+            .append("orderSendtyperemark", getOrderSendtyperemark())
+            .append("orderExpectedarrivaldate",getOrderExpectedarrivaldate())
+            .append("logisticsExpense",getLogisticsExpense())
+            .toString();
+    }
+}

+ 161 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/SysCustomer.java

@@ -0,0 +1,161 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 客户对象 SysCustomer
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-06
+ */
+public class SysCustomer extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 客户标识 */
+    private String customerId;
+
+    /** 客户名称 */
+    @Excel(name = "客户名称")
+    private String customerRealname;
+
+    /** 客户省份 */
+    @Excel(name = "客户省份")
+    private String customerProvince;
+
+    /** 客户市区 */
+    @Excel(name = "客户市区")
+    private String customerCity;
+
+    /** 客户地区 */
+    @Excel(name = "客户地区")
+    private String customerArea;
+
+    /** 客户联系地址 */
+    @Excel(name = "客户联系地址")
+    private String customerContactaddress;
+
+    /** 客户联系方式 */
+    @Excel(name = "客户联系方式")
+    private String customerContanctway;
+
+    /** 客户联系人 */
+    @Excel(name = "客户联系人")
+    private String customerContancts;
+
+    /** 客户详情 */
+    @Excel(name = "客户详情")
+    private String customerRemark;
+
+    private Integer customerDelstatus;
+
+    public void setCustomerId(String customerId)
+    {
+        this.customerId = customerId;
+    }
+
+    public String getCustomerId()
+    {
+        return customerId;
+    }
+    public void setCustomerRealname(String customerRealname)
+    {
+        this.customerRealname = customerRealname;
+    }
+
+    public String getCustomerRealname()
+    {
+        return customerRealname;
+    }
+    public void setCustomerProvince(String customerProvince)
+    {
+        this.customerProvince = customerProvince;
+    }
+
+    public String getCustomerProvince()
+    {
+        return customerProvince;
+    }
+    public void setCustomerCity(String customerCity)
+    {
+        this.customerCity = customerCity;
+    }
+
+    public String getCustomerCity()
+    {
+        return customerCity;
+    }
+    public void setCustomerArea(String customerArea)
+    {
+        this.customerArea = customerArea;
+    }
+
+    public String getCustomerArea()
+    {
+        return customerArea;
+    }
+    public void setCustomerContactaddress(String customerContactaddress)
+    {
+        this.customerContactaddress = customerContactaddress;
+    }
+
+    public String getCustomerContactaddress()
+    {
+        return customerContactaddress;
+    }
+    public void setCustomerContanctway(String customerContanctway)
+    {
+        this.customerContanctway = customerContanctway;
+    }
+
+    public String getCustomerContanctway()
+    {
+        return customerContanctway;
+    }
+    public void setCustomerContancts(String customerContancts)
+    {
+        this.customerContancts = customerContancts;
+    }
+
+    public String getCustomerContancts()
+    {
+        return customerContancts;
+    }
+    public void setCustomerRemark(String customerRemark)
+    {
+        this.customerRemark = customerRemark;
+    }
+
+    public String getCustomerRemark()
+    {
+        return customerRemark;
+    }
+
+    public void setCustomerDelstatus(Integer customerDelstatus)
+    {
+        this.customerDelstatus = customerDelstatus;
+    }
+
+    public Integer getCustomerDelstatus()
+    {
+        return customerDelstatus;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("customerId", getCustomerId())
+            .append("customerRealname", getCustomerRealname())
+            .append("customerProvince", getCustomerProvince())
+            .append("customerCity", getCustomerCity())
+            .append("customerArea", getCustomerArea())
+            .append("customerContactaddress", getCustomerContactaddress())
+            .append("customerContanctway", getCustomerContanctway())
+            .append("customerContancts", getCustomerContancts())
+            .append("customerRemark", getCustomerRemark())
+            .toString();
+    }
+}

+ 58 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/TssGoodsperiodrcd.java

@@ -0,0 +1,58 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 农产品溯源周期记录对象 TssGoodsperiodrcd
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-25
+ */
+@Data
+public class TssGoodsperiodrcd extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 农产品溯源周期记录标识 */
+    private String goodsperiodrcdId;
+
+    /** 农产品采收批次 */
+    @Excel(name = "农产品采收批次")
+    private String finishgoodPickno;
+
+    /** 农产品溯源周期记录开始时间 */
+    @Excel(name = "农产品溯源周期记录开始时间")
+    private String goodsperiodrcdStartdate;
+
+    /** 农产品溯源周期记录结束时间 */
+    @Excel(name = "农产品溯源周期记录结束时间")
+    private String goodsperiodrcdEnddate;
+
+    /** 农产品溯源周期记录类型 */
+    @Excel(name = "农产品溯源周期记录类型")
+    private String goodsperiodrcdType;
+
+    /** 农产品溯源周期记录父编号 */
+    @Excel(name = "农产品溯源周期记录父编号")
+    private String goodsperiodrcdParentid;
+
+    /** 农产品溯源周期记录农事记录时间 */
+    @Excel(name = "农产品溯源周期记录农事记录时间")
+    private String goodsperiodrcdFmstaskcreateddate;
+
+    /** 农产品溯源周期记录农事内容描述 */
+    @Excel(name = "农产品溯源周期记录农事内容描述")
+    private String goodsperiodrcdFmstaskremark;
+
+    /** 农产品溯源周期记录农事记录负责人 */
+    @Excel(name = "农产品溯源周期记录农事记录负责人")
+    private String goodsperiodrcdFmstaskmanagername;
+
+    /** 农产品溯源周期记录名称 */
+    @Excel(name = "农产品溯源周期记录名称")
+    private String goodsperiodrcdName;
+
+    private String periodPreview;
+}

+ 131 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/TssScanrcd.java

@@ -0,0 +1,131 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 溯源码扫码记录对象 TssScanrcd
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-04
+ */
+public class TssScanrcd extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 溯源码扫码标识 */
+    private String scanrcdId;
+
+    /** 出库登记单订单标识 */
+    @Excel(name = "出库登记单订单标识")
+    private String orderId;
+
+    /** 溯源码生成标识 */
+    @Excel(name = "溯源码生成标识")
+    private String tarcecodeapplyId;
+
+    /** 库存标识 */
+    @Excel(name = "库存标识")
+    private String stockId;
+
+    /** 溯源码扫码地点 */
+    @Excel(name = "溯源码扫码地点")
+    private String scanrcdAddress;
+
+    /** 溯源码扫码省份 */
+    @Excel(name = "溯源码扫码省份")
+    private String scanrcdProvince;
+
+    /** 溯源码扫码市区 */
+    @Excel(name = "溯源码扫码市区")
+    private String scanrcdCity;
+
+    /** 溯源码扫码时间 */
+    @Excel(name = "溯源码扫码时间")
+    private String scanrcdCreateddate;
+
+    public String getScanrcdProvince() {
+        return scanrcdProvince;
+    }
+
+    public void setScanrcdProvince(String scanrcdProvince) {
+        this.scanrcdProvince = scanrcdProvince;
+    }
+
+    public String getScanrcdCity() {
+        return scanrcdCity;
+    }
+
+    public void setScanrcdCity(String scanrcdCity) {
+        this.scanrcdCity = scanrcdCity;
+    }
+
+    public void setScanrcdId(String scanrcdId)
+    {
+        this.scanrcdId = scanrcdId;
+    }
+
+    public String getScanrcdId()
+    {
+        return scanrcdId;
+    }
+    public void setOrderId(String orderId)
+    {
+        this.orderId = orderId;
+    }
+
+    public String getOrderId()
+    {
+        return orderId;
+    }
+    public void setTarcecodeapplyId(String tarcecodeapplyId)
+    {
+        this.tarcecodeapplyId = tarcecodeapplyId;
+    }
+
+    public String getTarcecodeapplyId()
+    {
+        return tarcecodeapplyId;
+    }
+    public void setStockId(String stockId)
+    {
+        this.stockId = stockId;
+    }
+
+    public String getStockId()
+    {
+        return stockId;
+    }
+    public void setScanrcdAddress(String scanrcdAddress)
+    {
+        this.scanrcdAddress = scanrcdAddress;
+    }
+
+    public String getScanrcdAddress()
+    {
+        return scanrcdAddress;
+    }
+    public void setScanrcdCreateddate(String scanrcdCreateddate)
+    {
+        this.scanrcdCreateddate = scanrcdCreateddate;
+    }
+
+    public String getScanrcdCreateddate()
+    {
+        return scanrcdCreateddate;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("scanrcdId", getScanrcdId())
+            .append("orderId", getOrderId())
+            .append("tarcecodeapplyId", getTarcecodeapplyId())
+            .append("stockId", getStockId())
+            .append("scanrcdAddress", getScanrcdAddress())
+            .append("scanrcdCreateddate", getScanrcdCreateddate())
+            .toString();
+    }
+}

+ 41 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/TssSourceEnvironment.java

@@ -0,0 +1,41 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 溯源生长环境对象 TssSourceEnvironment
+ * 
+ */
+@Data
+public class TssSourceEnvironment extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 溯源周期标识 */
+    private String sourceEnvironmentId;
+
+    /** 溯源信息标识 */
+    @Excel(name = "溯源信息标识")
+    private String sourceinfoId;
+
+    /** 溯源环境名称 */
+    @Excel(name = "溯源环境名称")
+    private String sourceEnvironmentName;
+
+    /** 溯源环境值 */
+    @Excel(name = "溯源环境值")
+    private String sourceEnvironmentVlaue;
+
+    /** 溯源环境单位 */
+    @Excel(name = "溯源环境单位")
+    private String sourceEnvironmentunits;
+
+    /** 溯源环境背景图片标识 */
+    private String environmentResIds;
+
+    /** 溯源环境背景图片 */
+    private String environmentPreviews;
+
+}

+ 192 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/TssSourceinfo.java

@@ -0,0 +1,192 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 溯源信息对象 TssSourceinfo
+ * 
+ * @author 杨晓辉
+ * @date 2023-06-25
+ */
+public class TssSourceinfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 溯源信息标识 */
+    private String sourceinfoId;
+
+    /** 溯源信息名字 */
+    @Excel(name = "溯源信息名字")
+    private String sourceinfoName;
+
+    /** 溯源信息编码 */
+    @Excel(name = "溯源信息编码")
+    private String sourceinfoCode;
+
+    /** 溯源信息体检状态 */
+    @Excel(name = "溯源信息体检状态")
+    private String sourceinfoQualitystatus;
+
+    /** 溯源信息体检报告说明 */
+    @Excel(name = "溯源信息体检报告说明")
+    private String sourceinfoQualityremark;
+
+    /** 溯源信息生长状态 */
+    @Excel(name = "溯源信息生长状态")
+    private String sourceinfoGrowstatus;
+
+    /** 溯源信息形象状态 */
+    @Excel(name = "溯源信息形象状态")
+    private String sourceinfoFiguretatus;
+
+    /** 溯源信息创建人 */
+    @Excel(name = "溯源信息创建人")
+    private String sourceinfoCreator;
+
+    /** 溯源信息创建时间 */
+    @Excel(name = "溯源信息创建时间")
+    private String sourceinfoCreateddate;
+
+    /** 溯源信息修改人 */
+    @Excel(name = "溯源信息修改人")
+    private String sourceinfoModifier;
+
+    /** 溯源信息修改时间 */
+    @Excel(name = "溯源信息修改时间")
+    private String sourceinfoModifieddate;
+
+    /**
+     * 溯源模板标识
+     * */
+    private String tracecodetplId;
+
+
+    public void setSourceinfoId(String sourceinfoId)
+    {
+        this.sourceinfoId = sourceinfoId;
+    }
+
+    public String getSourceinfoId()
+    {
+        return sourceinfoId;
+    }
+    public void setSourceinfoName(String sourceinfoName)
+    {
+        this.sourceinfoName = sourceinfoName;
+    }
+
+    public String getSourceinfoName()
+    {
+        return sourceinfoName;
+    }
+    public void setSourceinfoCode(String sourceinfoCode)
+    {
+        this.sourceinfoCode = sourceinfoCode;
+    }
+
+    public String getSourceinfoCode()
+    {
+        return sourceinfoCode;
+    }
+    public void setSourceinfoQualitystatus(String sourceinfoQualitystatus)
+    {
+        this.sourceinfoQualitystatus = sourceinfoQualitystatus;
+    }
+
+    public String getSourceinfoQualitystatus()
+    {
+        return sourceinfoQualitystatus;
+    }
+    public void setSourceinfoQualityremark(String sourceinfoQualityremark)
+    {
+        this.sourceinfoQualityremark = sourceinfoQualityremark;
+    }
+
+    public String getSourceinfoQualityremark()
+    {
+        return sourceinfoQualityremark;
+    }
+    public void setSourceinfoGrowstatus(String sourceinfoGrowstatus)
+    {
+        this.sourceinfoGrowstatus = sourceinfoGrowstatus;
+    }
+
+    public String getSourceinfoGrowstatus()
+    {
+        return sourceinfoGrowstatus;
+    }
+    public void setSourceinfoFiguretatus(String sourceinfoFiguretatus)
+    {
+        this.sourceinfoFiguretatus = sourceinfoFiguretatus;
+    }
+
+    public String getSourceinfoFiguretatus()
+    {
+        return sourceinfoFiguretatus;
+    }
+    public void setSourceinfoCreator(String sourceinfoCreator)
+    {
+        this.sourceinfoCreator = sourceinfoCreator;
+    }
+
+    public String getSourceinfoCreator()
+    {
+        return sourceinfoCreator;
+    }
+    public void setSourceinfoCreateddate(String sourceinfoCreateddate)
+    {
+        this.sourceinfoCreateddate = sourceinfoCreateddate;
+    }
+
+    public String getSourceinfoCreateddate()
+    {
+        return sourceinfoCreateddate;
+    }
+    public void setSourceinfoModifier(String sourceinfoModifier)
+    {
+        this.sourceinfoModifier = sourceinfoModifier;
+    }
+
+    public String getSourceinfoModifier()
+    {
+        return sourceinfoModifier;
+    }
+    public void setSourceinfoModifieddate(String sourceinfoModifieddate)
+    {
+        this.sourceinfoModifieddate = sourceinfoModifieddate;
+    }
+
+    public String getSourceinfoModifieddate()
+    {
+        return sourceinfoModifieddate;
+    }
+
+    public String getTracecodetplId() {
+        return tracecodetplId;
+    }
+
+    public void setTracecodetplId(String tracecodetplId) {
+        this.tracecodetplId = tracecodetplId;
+    }
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("sourceinfoId", getSourceinfoId())
+            .append("sourceinfoName", getSourceinfoName())
+            .append("sourceinfoCode", getSourceinfoCode())
+            .append("sourceinfoQualitystatus", getSourceinfoQualitystatus())
+            .append("sourceinfoQualityremark", getSourceinfoQualityremark())
+            .append("sourceinfoGrowstatus", getSourceinfoGrowstatus())
+            .append("sourceinfoFiguretatus", getSourceinfoFiguretatus())
+            .append("sourceinfoCreator", getSourceinfoCreator())
+            .append("sourceinfoCreateddate", getSourceinfoCreateddate())
+            .append("sourceinfoModifier", getSourceinfoModifier())
+            .append("sourceinfoModifieddate", getSourceinfoModifieddate())
+            .toString();
+    }
+
+
+}

+ 68 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/TssSourceperiod.java

@@ -0,0 +1,68 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 溯源周期对象 TssSourceperiod
+ * 
+ * @author 杨晓辉
+ * @date 2023-06-25
+ */
+@Data
+public class TssSourceperiod extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 溯源周期标识 */
+    private String sourceperiodId;
+
+    /** 溯源信息标识 */
+    @Excel(name = "溯源信息标识")
+    private String sourceinfoId;
+
+    /** 溯源周期时间 */
+    @Excel(name = "溯源周期开始时间")
+    private String sourceperiodStartdate;
+
+    /** 溯源周期时间 */
+    @Excel(name = "溯源周期结束时间")
+    private String sourceperiodEnddate;
+
+    /** 溯源周期类型 */
+    @Excel(name = "溯源周期类型")
+    private String sourceperiodType;
+
+    /** 溯源周期父编号 */
+    @Excel(name = "溯源周期父编号")
+    private String sourceperiodParentid;
+
+    /** 溯源周期农事记录时间 */
+    @Excel(name = "溯源周期农事记录时间")
+    private String sourceperiodFmstaskrcdcreateddate;
+
+    /** 溯源周期农事内容描述 */
+    @Excel(name = "溯源周期农事内容描述")
+    private String sourceperiodFmstaskrcdremark;
+
+    /** 溯源周期农事记录负责人 */
+    @Excel(name = "溯源周期农事记录负责人")
+    private String sourceperiodFmstaskrcdmanagername;
+
+    /** 溯源周期名称 */
+    @Excel(name = "溯源周期名称")
+    private String sourceperiodName;
+
+    /** 周期图片标识 */
+    private String periodResIds;
+
+    /** 周期图片 */
+    private String periodPreview;
+
+    /** 周期列表 */
+    private List<TssSourceperiod> tssSourceperiods;
+
+}

+ 143 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/TssTracecodeapply.java

@@ -0,0 +1,143 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 溯源码生成单对象 TssTracecodeapply
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-04
+ */
+public class TssTracecodeapply extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 溯源码生成标识 */
+    private String tarcecodeapplyId;
+
+    /**溯源码生成批次号*/
+    private String tarcecodeapplyBatchno;
+    
+    /**上链平台上的溯源码*/
+    private String qrCode;
+
+    /** 溯源码生成编号 */
+    @Excel(name = "溯源码生成编号")
+    private String tarcecodeapplyno;
+
+    /** 出库登记单订单标识 */
+    @Excel(name = "出库登记单订单标识")
+    private String orderId;
+
+    /** 溯源码模板标识 */
+    @Excel(name = "溯源码模板标识")
+    private String tracecodetplId;
+
+    /** 库存标识 */
+    @Excel(name = "库存标识")
+    private String stockId;
+
+    /** 溯源码生成创建者 */
+    @Excel(name = "溯源码生成创建者")
+    private String tarcecodeapplyCreator;
+
+    /** 溯源码生成创建日期 */
+    @Excel(name = "溯源码生成创建日期")
+    private String tarcecodeapplyCreateddate;
+
+    public void setTarcecodeapplyId(String tarcecodeapplyId)
+    {
+        this.tarcecodeapplyId = tarcecodeapplyId;
+    }
+
+    public String getTarcecodeapplyId()
+    {
+        return tarcecodeapplyId;
+    }
+    public void setTarcecodeapplyno(String tarcecodeapplyno)
+    {
+        this.tarcecodeapplyno = tarcecodeapplyno;
+    }
+
+    public String getTarcecodeapplyno()
+    {
+        return tarcecodeapplyno;
+    }
+    public void setOrderId(String orderId)
+    {
+        this.orderId = orderId;
+    }
+
+    public String getOrderId()
+    {
+        return orderId;
+    }
+    public void setTracecodetplId(String tracecodetplId)
+    {
+        this.tracecodetplId = tracecodetplId;
+    }
+
+    public String getTracecodetplId()
+    {
+        return tracecodetplId;
+    }
+    public void setStockId(String stockId)
+    {
+        this.stockId = stockId;
+    }
+
+    public String getStockId()
+    {
+        return stockId;
+    }
+    public void setTarcecodeapplyCreator(String tarcecodeapplyCreator)
+    {
+        this.tarcecodeapplyCreator = tarcecodeapplyCreator;
+    }
+
+    public String getTarcecodeapplyCreator()
+    {
+        return tarcecodeapplyCreator;
+    }
+    public void setTarcecodeapplyCreateddate(String tarcecodeapplyCreateddate)
+    {
+        this.tarcecodeapplyCreateddate = tarcecodeapplyCreateddate;
+    }
+
+    public String getTarcecodeapplyCreateddate()
+    {
+        return tarcecodeapplyCreateddate;
+    }
+
+    public void setTarcecodeapplyBatchno(String tarcecodeapplyBatchno){
+        this.tarcecodeapplyBatchno = tarcecodeapplyBatchno;
+    }
+    public String getTarcecodeapplyBatchno(){
+        return this.tarcecodeapplyBatchno;
+    }
+
+    public String getQrCode() {
+		return qrCode;
+	}
+
+	public void setQrCode(String qrCode) {
+		this.qrCode = qrCode;
+	}
+
+	@Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("tarcecodeapplyId", getTarcecodeapplyId())
+            .append("tarcecodeapplyno", getTarcecodeapplyno())
+            .append("orderId", getOrderId())
+            .append("tracecodetplId", getTracecodetplId())
+            .append("stockId", getStockId())
+            .append("tarcecodeapplyCreator", getTarcecodeapplyCreator())
+            .append("tarcecodeapplyCreateddate", getTarcecodeapplyCreateddate())
+            .append("qrCode", getQrCode())
+            .toString();
+    }
+}

+ 119 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/TssTracecodetpl.java

@@ -0,0 +1,119 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 溯源码模板对象 TssTracecodetpl
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-06
+ */
+public class TssTracecodetpl extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 溯源码模板标识 */
+    private String tracecodetplId;
+
+    /** 溯源码模板标题 */
+    @Excel(name = "溯源码模板标题")
+    private String tracecodetplTitle;
+
+    /** 溯源码模板最大扫码次数 */
+    @Excel(name = "溯源码模板最大扫码次数")
+    private Integer tracecodetplMaxscan;
+
+    /** 溯源码模板长度 */
+    @Excel(name = "溯源码模板长度")
+    private Integer tracecodetplWidth;
+
+    /** 溯源码模板高度 */
+    @Excel(name = "溯源码模板高度")
+    private Integer tracecodetplHeight;
+
+    /** 溯源码模板色位类型 */
+    @Excel(name = "溯源码模板色位类型")
+    private Integer tracecodetplBitcolor;
+    /**
+     * 溯源码适用产品类型
+     * */
+
+    @Excel(name = "溯源码适用产品类型")
+    private String productType;
+
+    public void setTracecodetplId(String tracecodetplId)
+    {
+        this.tracecodetplId = tracecodetplId;
+    }
+
+    public String getTracecodetplId()
+    {
+        return tracecodetplId;
+    }
+    public void setTracecodetplTitle(String tracecodetplTitle)
+    {
+        this.tracecodetplTitle = tracecodetplTitle;
+    }
+
+    public String getTracecodetplTitle()
+    {
+        return tracecodetplTitle;
+    }
+    public void setTracecodetplMaxscan(Integer tracecodetplMaxscan)
+    {
+        this.tracecodetplMaxscan = tracecodetplMaxscan;
+    }
+
+    public Integer getTracecodetplMaxscan()
+    {
+        return tracecodetplMaxscan;
+    }
+    public void setTracecodetplWidth(Integer tracecodetplWidth)
+    {
+        this.tracecodetplWidth = tracecodetplWidth;
+    }
+
+    public Integer getTracecodetplWidth()
+    {
+        return tracecodetplWidth;
+    }
+    public void setTracecodetplHeight(Integer tracecodetplHeight)
+    {
+        this.tracecodetplHeight = tracecodetplHeight;
+    }
+
+    public Integer getTracecodetplHeight()
+    {
+        return tracecodetplHeight;
+    }
+    public void setTracecodetplBitcolor(Integer tracecodetplBitcolor)
+    {
+        this.tracecodetplBitcolor = tracecodetplBitcolor;
+    }
+
+    public Integer getTracecodetplBitcolor()
+    {
+        return tracecodetplBitcolor;
+    }
+
+    public void setProductType(String productType) {
+        this.productType = productType;
+    }
+    public String getProductType(){
+        return this.productType;
+    }
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("tracecodetplId", getTracecodetplId())
+            .append("tracecodetplTitle", getTracecodetplTitle())
+            .append("tracecodetplMaxscan", getTracecodetplMaxscan())
+            .append("tracecodetplWidth", getTracecodetplWidth())
+            .append("tracecodetplHeight", getTracecodetplHeight())
+            .append("tracecodetplBitcolor", getTracecodetplBitcolor())
+            .toString();
+    }
+}

+ 298 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/TssTracecodetplparam.java

@@ -0,0 +1,298 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import com.yunfeiyun.agmp.common.utils.img.entity.GraphicsCanvasItem;
+import com.yunfeiyun.agmp.common.utils.img.enums.BusType;
+import com.yunfeiyun.agmp.common.utils.img.enums.MediaType;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 溯源码模板参数对象 TssTracecodetplparam
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-06
+ */
+public class TssTracecodetplparam extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 溯源码模板参数标识 */
+    private String tplparamId;
+
+    /** 溯源码模板标识 */
+    @Excel(name = "溯源码模板标识")
+    private String tracecodetplId;
+
+    /** 溯源码模板参数排序 */
+    @Excel(name = "溯源码模板参数排序")
+    private Integer tplparamSeq;
+
+    /** 溯源码模板参数备注 */
+    @Excel(name = "溯源码模板参数备注")
+    private String tplparamRemark;
+
+    /** 溯源码模板参数媒体类型 */
+    @Excel(name = "溯源码模板参数媒体类型")
+    private String tplparamMediatype;
+
+    /** 溯源码模板参数业务类型 */
+    @Excel(name = "溯源码模板参数业务类型")
+    private String tplparamBustype;
+
+    /** 溯源码模板参数宽度 */
+    @Excel(name = "溯源码模板参数宽度")
+    private Integer tplparamWidth;
+
+    /** 溯源码模板参数高度 */
+    @Excel(name = "溯源码模板参数高度")
+    private Integer tplparamHeight;
+
+    /** 溯源码模板参数X轴坐标 */
+    @Excel(name = "溯源码模板参数X轴坐标")
+    private Integer tplparamPosx;
+
+    /** 溯源码模板参数Y轴坐标 */
+    @Excel(name = "溯源码模板参数Y轴坐标")
+    private Integer tplparamPosy;
+
+    /** 溯源码模板参数背景颜色 */
+    @Excel(name = "溯源码模板参数背景颜色")
+    private String tplparamBgcolor;
+
+    /** 溯源码模板参数字体系列 */
+    @Excel(name = "溯源码模板参数字体系列")
+    private String tplparamFontfamily;
+
+    /** 溯源码模板参数字体形状 */
+    @Excel(name = "溯源码模板参数字体形状")
+    private Integer tplparamFontstyle;
+
+    /** 溯源码模板参数字体大小 */
+    @Excel(name = "溯源码模板参数字体大小")
+    private Integer tplparamFontsize;
+
+    /** 溯源码模板参数线宽 */
+    @Excel(name = "溯源码模板参数线宽")
+    private Integer tplparamLinewidth;
+
+    /** 溯源码模板参数边距 */
+    @Excel(name = "溯源码模板参数边距")
+    private Integer tplparamMargin;
+
+    /**
+     * 溯源码模板参数水平对齐方式(0:左对齐,1:居中)
+     * */
+    @Excel(name = "溯源码模板参数水平对齐方式(0:左对齐,1:居中)")
+    private String tplparamAlignment;
+
+    /** 溯源码模板参数数据 */
+    @Excel(name = "溯源码模板参数数据")
+    private String tplparamData;
+
+    public void setTplparamId(String tplparamId)
+    {
+        this.tplparamId = tplparamId;
+    }
+
+    public String getTplparamId()
+    {
+        return tplparamId;
+    }
+    public void setTracecodetplId(String tracecodetplId)
+    {
+        this.tracecodetplId = tracecodetplId;
+    }
+
+    public String getTracecodetplId()
+    {
+        return tracecodetplId;
+    }
+    public void setTplparamSeq(Integer tplparamSeq)
+    {
+        this.tplparamSeq = tplparamSeq;
+    }
+
+    public Integer getTplparamSeq()
+    {
+        return tplparamSeq;
+    }
+    public void setTplparamRemark(String tplparamRemark)
+    {
+        this.tplparamRemark = tplparamRemark;
+    }
+
+    public String getTplparamRemark()
+    {
+        return tplparamRemark;
+    }
+    public void setTplparamMediatype(String tplparamMediatype)
+    {
+        this.tplparamMediatype = tplparamMediatype;
+    }
+
+    public String getTplparamMediatype()
+    {
+        return tplparamMediatype;
+    }
+    public void setTplparamBustype(String tplparamBustype)
+    {
+        this.tplparamBustype = tplparamBustype;
+    }
+
+    public String getTplparamBustype()
+    {
+        return tplparamBustype;
+    }
+    public void setTplparamWidth(Integer tplparamWidth)
+    {
+        this.tplparamWidth = tplparamWidth;
+    }
+
+    public Integer getTplparamWidth()
+    {
+        return tplparamWidth;
+    }
+    public void setTplparamHeight(Integer tplparamHeight)
+    {
+        this.tplparamHeight = tplparamHeight;
+    }
+
+    public Integer getTplparamHeight()
+    {
+        return tplparamHeight;
+    }
+    public void setTplparamPosx(Integer tplparamPosx)
+    {
+        this.tplparamPosx = tplparamPosx;
+    }
+
+    public Integer getTplparamPosx()
+    {
+        return tplparamPosx;
+    }
+    public void setTplparamPosy(Integer tplparamPosy)
+    {
+        this.tplparamPosy = tplparamPosy;
+    }
+
+    public Integer getTplparamPosy()
+    {
+        return tplparamPosy;
+    }
+    public void setTplparamBgcolor(String tplparamBgcolor)
+    {
+        this.tplparamBgcolor = tplparamBgcolor;
+    }
+
+    public String getTplparamBgcolor()
+    {
+        return tplparamBgcolor;
+    }
+    public void setTplparamFontfamily(String tplparamFontfamily)
+    {
+        this.tplparamFontfamily = tplparamFontfamily;
+    }
+
+    public String getTplparamFontfamily()
+    {
+        return tplparamFontfamily;
+    }
+    public void setTplparamFontstyle(Integer tplparamFontstyle)
+    {
+        this.tplparamFontstyle = tplparamFontstyle;
+    }
+
+    public Integer getTplparamFontstyle()
+    {
+        return tplparamFontstyle;
+    }
+    public void setTplparamFontsize(Integer tplparamFontsize)
+    {
+        this.tplparamFontsize = tplparamFontsize;
+    }
+
+    public Integer getTplparamFontsize()
+    {
+        return tplparamFontsize;
+    }
+    public void setTplparamLinewidth(Integer tplparamLinewidth)
+    {
+        this.tplparamLinewidth = tplparamLinewidth;
+    }
+
+    public Integer getTplparamLinewidth()
+    {
+        return tplparamLinewidth;
+    }
+    public void setTplparamMargin(Integer tplparamMargin)
+    {
+        this.tplparamMargin = tplparamMargin;
+    }
+
+    public Integer getTplparamMargin()
+    {
+        return tplparamMargin;
+    }
+    public void setTplparamData(String tplparamData)
+    {
+        this.tplparamData = tplparamData;
+    }
+
+    public String getTplparamData()
+    {
+        return tplparamData;
+    }
+
+    public String getTplparamAlignment() {
+        return tplparamAlignment;
+    }
+
+    public void setTplparamAlignment(String tplparamAlignment) {
+        this.tplparamAlignment = tplparamAlignment;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("tplparamId", getTplparamId())
+            .append("tracecodetplId", getTracecodetplId())
+            .append("tplparamSeq", getTplparamSeq())
+            .append("tplparamRemark", getTplparamRemark())
+            .append("tplparamMediatype", getTplparamMediatype())
+            .append("tplparamBustype", getTplparamBustype())
+            .append("tplparamWidth", getTplparamWidth())
+            .append("tplparamHeight", getTplparamHeight())
+            .append("tplparamPosx", getTplparamPosx())
+            .append("tplparamPosy", getTplparamPosy())
+            .append("tplparamBgcolor", getTplparamBgcolor())
+            .append("tplparamFontfamily", getTplparamFontfamily())
+            .append("tplparamFontstyle", getTplparamFontstyle())
+            .append("tplparamFontsize", getTplparamFontsize())
+            .append("tplparamLinewidth", getTplparamLinewidth())
+            .append("tplparamMargin", getTplparamMargin())
+            .append("tplparamData", getTplparamData())
+            .toString();
+    }
+
+    public GraphicsCanvasItem transToGraphicsCanvasItem(){
+        GraphicsCanvasItem graphicsCanvasItem = new GraphicsCanvasItem();
+        graphicsCanvasItem.setRemark(this.tplparamRemark);
+        graphicsCanvasItem.setMediaType(MediaType.valueOf(this.tplparamMediatype));
+        graphicsCanvasItem.setBusType(BusType.valueOf(this.tplparamBustype));
+        graphicsCanvasItem.setWidth(this.tplparamWidth);
+        graphicsCanvasItem.setHeight(this.tplparamHeight);
+        graphicsCanvasItem.setPositionX(this.tplparamPosx);
+        graphicsCanvasItem.setPositionY(this.tplparamPosy);
+        graphicsCanvasItem.setBackgroundColor(this.tplparamBgcolor);
+        graphicsCanvasItem.setFontType(this.tplparamFontfamily);
+        graphicsCanvasItem.setFontStyle(this.tplparamFontstyle);
+        graphicsCanvasItem.setFontSize(this.tplparamFontsize);
+        graphicsCanvasItem.setLineWidth(this.tplparamLinewidth);
+        graphicsCanvasItem.setMargin(this.tplparamMargin);
+        graphicsCanvasItem.setData(this.tplparamData);
+        graphicsCanvasItem.setAlignment(this.tplparamAlignment);
+        return graphicsCanvasItem;
+    }
+}

+ 44 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/TssWarn.java

@@ -0,0 +1,44 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 系统预警对象 TssWarn
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-05
+ */
+@Data
+public class TssWarn extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 系统预警标识 */
+    private String warnId;
+
+    /** 系统预警分类 */
+    @Excel(name = "系统预警分类")
+    private String warnClass;
+
+    /** 系统预警类型 */
+    @Excel(name = "系统预警类型")
+    private String warnType;
+
+    /** 系统预警创建时间 */
+    @Excel(name = "系统预警创建时间")
+    private String warnCreateddate;
+
+    /** 系统预警跳转地址 */
+    @Excel(name = "系统预警跳转地址")
+    private String warnJumpurl;
+
+    /** 系统预警内容 */
+    @Excel(name = "系统预警内容")
+    private String warnRemark;
+
+    private String spmOrderId;
+
+    private String warehouseId;
+}

+ 33 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/TssWarnread.java

@@ -0,0 +1,33 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 系统预警已读对象 TssWarnread
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-05
+ */
+@Data
+public class TssWarnread extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 预警已读标识 */
+    private String warnreadId;
+
+    /** 系统预警标识 */
+    @Excel(name = "系统预警标识")
+    private String warnId;
+
+    /** 用户标识 */
+    @Excel(name = "用户标识")
+    private String userId;
+
+    /** 系统预警已读时间 */
+    @Excel(name = "系统预警已读时间")
+    private String warnreadCreateddate;
+
+}

+ 19 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/WmsAssetgoods.java

@@ -0,0 +1,19 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class WmsAssetgoods extends BaseEntity {
+    /**农资货物标识*/
+    private String assetgoodsId;
+    /**供应商标识*/
+    private String supplierId;
+    /**货物标识*/
+    private String goodsId;
+    /**农资货物厂家*/
+    private String assetgoodsManufactor;
+    /**农资货物类型*/
+    private String assetgoodsType;
+
+}

+ 180 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/WmsChange.java

@@ -0,0 +1,180 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.math.BigDecimal;
+
+/**
+ * 变动对象 WmsChange
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+public class WmsChange extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 变动标识 */
+    private String changeId;
+
+    /** 变化申请标识 */
+    @Excel(name = "变化申请标识")
+    private String changeapplyId;
+
+    /** 库存标识 */
+    @Excel(name = "库存标识")
+    private String stockId;
+
+    /** 变动业务类型 */
+    @Excel(name = "变动业务类型")
+    private String changeBiztype;
+
+
+    /** 变动方式 */
+    @Excel(name = "变动方式")
+    private String changeWay;
+
+    /** 变动数量 */
+    @Excel(name = "变动数量")
+    private BigDecimal changeNum;
+
+    /** 变动原始数量 */
+    @Excel(name = "变动原始数量")
+    private BigDecimal changeOldnum;
+
+    /** 变动最终数量 */
+    @Excel(name = "变动最终数量")
+    private BigDecimal changeNewnum;
+
+    /** 变动创建人 */
+    @Excel(name = "变动审核人")
+    private String changeAuditor;
+
+    /** 变动创建日期 */
+    @Excel(name = "变动审核日期")
+    private String changeAuditeddate;
+
+    /** 变动备注 */
+    @Excel(name = "变动备注")
+    private String changeRemark;
+
+    public void setChangeId(String changeId)
+    {
+        this.changeId = changeId;
+    }
+
+    public String getChangeId()
+    {
+        return changeId;
+    }
+    public void setChangeapplyId(String changeapplyId)
+    {
+        this.changeapplyId = changeapplyId;
+    }
+
+    public String getChangeapplyId()
+    {
+        return changeapplyId;
+    }
+    public void setStockId(String stockId)
+    {
+        this.stockId = stockId;
+    }
+
+    public String getStockId()
+    {
+        return stockId;
+    }
+    public void setChangeBiztype(String changeBiztype)
+    {
+        this.changeBiztype = changeBiztype;
+    }
+
+    public String getChangeBiztype()
+    {
+        return changeBiztype;
+    }
+    public void setChangeWay(String changeWay)
+    {
+        this.changeWay = changeWay;
+    }
+
+    public String getChangeWay()
+    {
+        return changeWay;
+    }
+    public void setChangeNum(BigDecimal changeNum)
+    {
+        this.changeNum = changeNum;
+    }
+
+    public BigDecimal getChangeNum()
+    {
+        return changeNum;
+    }
+    public void setChangeOldnum(BigDecimal changeOldnum)
+    {
+        this.changeOldnum = changeOldnum;
+    }
+
+    public BigDecimal getChangeOldnum()
+    {
+        return changeOldnum;
+    }
+    public void setChangeNewnum(BigDecimal changeNewnum)
+    {
+        this.changeNewnum = changeNewnum;
+    }
+
+    public BigDecimal getChangeNewnum()
+    {
+        return changeNewnum;
+    }
+    public void setChangeAuditor(String changeAuditor)
+    {
+        this.changeAuditor = changeAuditor;
+    }
+
+    public String getChangeAuditor()
+    {
+        return changeAuditor;
+    }
+    public void setChangeAuditeddate(String changeAuditeddate)
+    {
+        this.changeAuditeddate = changeAuditeddate;
+    }
+
+    public String getChangeAuditeddate()
+    {
+        return changeAuditeddate;
+    }
+    public void setChangeRemark(String changeRemark)
+    {
+        this.changeRemark = changeRemark;
+    }
+
+    public String getChangeRemark()
+    {
+        return changeRemark;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("changeId", getChangeId())
+            .append("changeapplyId", getChangeapplyId())
+            .append("stockId", getStockId())
+            .append("changeBiztype", getChangeBiztype())
+            .append("changeWay", getChangeWay())
+            .append("changeNum", getChangeNum())
+            .append("changeOldnum", getChangeOldnum())
+            .append("changeNewnum", getChangeNewnum())
+            .append("changeAuditor", getChangeAuditor())
+            .append("changeAuditeddate", getChangeAuditeddate())
+            .append("changeRemark", getChangeRemark())
+            .toString();
+    }
+}

+ 194 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/WmsChangeapply.java

@@ -0,0 +1,194 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.math.BigDecimal;
+
+/**
+ * 变动申请对象 WmsChangeapply
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+public class WmsChangeapply extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 变化申请标识 */
+    private String changeapplyId;
+
+
+    /** 变化申请方式 */
+    @Excel(name = "变化申请方式")
+    private String changeapplyWay;
+
+    /** 变化申请业务类型 */
+    @Excel(name = "变化申请业务类型")
+    private String changeapplyBiztype;
+
+
+
+    /** 变化申请总价 */
+    @Excel(name = "变化申请总价")
+    private BigDecimal changeapplyPricetotal;
+
+    /** 变化申请申请人 */
+    @Excel(name = "变化申请申请人")
+    private String changeapplyApplyer;
+
+    /** 变化申请申请时间 */
+    @Excel(name = "变化申请申请时间")
+    private String changeapplyApplydate;
+
+    /** 变化申请审核状态 */
+    @Excel(name = "变化申请审核状态")
+    private String changeapplyAuditstatus;
+
+    /** 变化申请审核时间 */
+    @Excel(name = "变化申请审核时间")
+    private String changeapplyAuditdate;
+
+
+
+    /** 变化申请审核时间 */
+    @Excel(name = "变化申请审核时间")
+    private String changeapplyAuditor;
+
+    /** 变化申请备注 */
+    @Excel(name = "变化申请备注")
+    private String changeapplyRemark;
+
+    /** 出入库时间 */
+    @Excel(name = "出入库时间")
+    private String changeapplyInoutdate;
+
+    /** 变化申请审核意见 */
+    @Excel(name = "变化申请审核意见")
+    private String changeapplyComments;
+
+    public void setChangeapplyId(String changeapplyId)
+    {
+        this.changeapplyId = changeapplyId;
+    }
+
+    public String getChangeapplyId()
+    {
+        return changeapplyId;
+    }
+    public void setChangeapplyWay(String changeapplyWay)
+    {
+        this.changeapplyWay = changeapplyWay;
+    }
+
+    public String getChangeapplyWay()
+    {
+        return changeapplyWay;
+    }
+    public void setChangeapplyBiztype(String changeapplyBiztype)
+    {
+        this.changeapplyBiztype = changeapplyBiztype;
+    }
+
+    public String getChangeapplyBiztype()
+    {
+        return changeapplyBiztype;
+    }
+
+    public void setChangeapplyPricetotal(BigDecimal changeapplyPricetotal)
+    {
+        this.changeapplyPricetotal = changeapplyPricetotal;
+    }
+
+    public BigDecimal getChangeapplyPricetotal()
+    {
+        return changeapplyPricetotal;
+    }
+    public void setChangeapplyApplyer(String changeapplyApplyer)
+    {
+        this.changeapplyApplyer = changeapplyApplyer;
+    }
+
+    public String getChangeapplyApplyer()
+    {
+        return changeapplyApplyer;
+    }
+    public void setChangeapplyApplydate(String changeapplyApplydate)
+    {
+        this.changeapplyApplydate = changeapplyApplydate;
+    }
+
+    public String getChangeapplyApplydate()
+    {
+        return changeapplyApplydate;
+    }
+    public void setChangeapplyAuditstatus(String changeapplyAuditstatus)
+    {
+        this.changeapplyAuditstatus = changeapplyAuditstatus;
+    }
+
+    public String getChangeapplyAuditstatus()
+    {
+        return changeapplyAuditstatus;
+    }
+    public void setChangeapplyAuditdate(String changeapplyAuditdate)
+    {
+        this.changeapplyAuditdate = changeapplyAuditdate;
+    }
+
+    public String getChangeapplyAuditdate()
+    {
+        return changeapplyAuditdate;
+    }
+
+    public String getChangeapplyAuditor() {
+        return changeapplyAuditor;
+    }
+
+    public void setChangeapplyAuditor(String changeapplyAuditor) {
+        this.changeapplyAuditor = changeapplyAuditor;
+    }
+    public void setChangeapplyRemark(String changeapplyRemark)
+    {
+        this.changeapplyRemark = changeapplyRemark;
+    }
+
+    public String getChangeapplyRemark()
+    {
+        return changeapplyRemark;
+    }
+
+    public String getChangeapplyInoutdate() {
+        return changeapplyInoutdate;
+    }
+
+    public void setChangeapplyInoutdate(String changeapplyInoutdate) {
+        this.changeapplyInoutdate = changeapplyInoutdate;
+    }
+
+    public String getChangeapplyComments() {
+        return changeapplyComments;
+    }
+
+    public void setChangeapplyComments(String changeapplyComments) {
+        this.changeapplyComments = changeapplyComments;
+    }
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("changeapplyId", getChangeapplyId())
+            .append("changeapplyWay", getChangeapplyWay())
+            .append("changeapplyBiztype", getChangeapplyBiztype())
+            .append("changeapplyPricetotal", getChangeapplyPricetotal())
+            .append("changeapplyApplyer", getChangeapplyApplyer())
+            .append("changeapplyApplydate", getChangeapplyApplydate())
+            .append("changeapplyAuditstatus", getChangeapplyAuditstatus())
+            .append("changeapplyAuditdate", getChangeapplyAuditdate())
+            .append("changeapplyRemark", getChangeapplyRemark())
+            .toString();
+    }
+}

+ 177 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/WmsChangeapplyitem.java

@@ -0,0 +1,177 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.math.BigDecimal;
+
+/**
+ * 变动申请物件对象 WmsChangeapplyitem
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+public class WmsChangeapplyitem extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 变动申请物件标识 */
+    private String changeapplyitemId;
+
+    /** 变化申请标识 */
+    @Excel(name = "变化申请标识")
+    private String changeapplyId;
+
+    /** 货物标识 */
+    @Excel(name = "货物标识")
+    private String goodsId;
+
+    /** 仓库标识 */
+    @Excel(name = "仓库标识")
+    private String warehouseId;
+
+    /** 变动申请物件名称 */
+    @Excel(name = "变动申请物件名称")
+    private String changeapplyitemName;
+
+    /** 变动申请物件类型 */
+    @Excel(name = "变动申请物件类型")
+    private String changeapplyitemType;
+
+    /** 变动申请物件单位 */
+    @Excel(name = "变动申请物件单位")
+    private String changeapplyitemUnit;
+
+    /** 变动申请物件规格 */
+    @Excel(name = "变动申请物件规格")
+    private String changeapplyitemSpec;
+
+    /** 变动申请物件数量 */
+    @Excel(name = "变动申请物件数量")
+    private BigDecimal changeapplyitemNum;
+
+    /** 变化申请物件单价 */
+    @Excel(name = "变化申请物件单价")
+    private BigDecimal changeapplyitemPriceunit;
+
+    /** 变化申请物件总价 */
+    @Excel(name = "变化申请物件总价")
+    private BigDecimal changeapplyitemPricetotal;
+
+    public void setChangeapplyitemId(String changeapplyitemId)
+    {
+        this.changeapplyitemId = changeapplyitemId;
+    }
+
+    public String getChangeapplyitemId()
+    {
+        return changeapplyitemId;
+    }
+    public void setChangeapplyId(String changeapplyId)
+    {
+        this.changeapplyId = changeapplyId;
+    }
+
+    public String getChangeapplyId()
+    {
+        return changeapplyId;
+    }
+    public void setGoodsId(String goodsId)
+    {
+        this.goodsId = goodsId;
+    }
+
+    public String getGoodsId()
+    {
+        return goodsId;
+    }
+    public void setChangeapplyitemName(String changeapplyitemName)
+    {
+        this.changeapplyitemName = changeapplyitemName;
+    }
+
+    public String getChangeapplyitemName()
+    {
+        return changeapplyitemName;
+    }
+    public void setChangeapplyitemType(String changeapplyitemType)
+    {
+        this.changeapplyitemType = changeapplyitemType;
+    }
+
+    public String getChangeapplyitemType()
+    {
+        return changeapplyitemType;
+    }
+    public void setChangeapplyitemUnit(String changeapplyitemUnit)
+    {
+        this.changeapplyitemUnit = changeapplyitemUnit;
+    }
+
+    public String getChangeapplyitemUnit()
+    {
+        return changeapplyitemUnit;
+    }
+    public void setChangeapplyitemSpec(String changeapplyitemSpec)
+    {
+        this.changeapplyitemSpec = changeapplyitemSpec;
+    }
+
+    public String getChangeapplyitemSpec()
+    {
+        return changeapplyitemSpec;
+    }
+    public void setChangeapplyitemNum(BigDecimal changeapplyitemNum)
+    {
+        this.changeapplyitemNum = changeapplyitemNum;
+    }
+
+    public BigDecimal getChangeapplyitemNum()
+    {
+        return changeapplyitemNum;
+    }
+    public void setChangeapplyitemPriceunit(BigDecimal changeapplyitemPriceunit)
+    {
+        this.changeapplyitemPriceunit = changeapplyitemPriceunit;
+    }
+
+    public BigDecimal getChangeapplyitemPriceunit()
+    {
+        return changeapplyitemPriceunit;
+    }
+    public void setChangeapplyitemPricetotal(BigDecimal changeapplyitemPricetotal)
+    {
+        this.changeapplyitemPricetotal = changeapplyitemPricetotal;
+    }
+
+    public BigDecimal getChangeapplyitemPricetotal()
+    {
+        return changeapplyitemPricetotal;
+    }
+    public String getWarehouseId() {
+        return warehouseId;
+    }
+
+    public void setWarehouseId(String warehouseId) {
+        this.warehouseId = warehouseId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("changeapplyitemId", getChangeapplyitemId())
+            .append("changeapplyId", getChangeapplyId())
+            .append("goodsId", getGoodsId())
+            .append("warehouseId", getWarehouseId())
+            .append("changeapplyitemName", getChangeapplyitemName())
+            .append("changeapplyitemType", getChangeapplyitemType())
+            .append("changeapplyitemUnit", getChangeapplyitemUnit())
+            .append("changeapplyitemSpec", getChangeapplyitemSpec())
+            .append("changeapplyitemNum", getChangeapplyitemNum())
+            .append("changeapplyitemPriceunit", getChangeapplyitemPriceunit())
+            .append("changeapplyitemPricetotal", getChangeapplyitemPricetotal())
+            .toString();
+    }
+}

+ 70 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/WmsFinishgoods.java

@@ -0,0 +1,70 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 农产品货物对象 WmsFinishgoods
+ * 
+ * @author 杨晓辉
+ * @date 2023-06-30
+ */
+@Data
+public class WmsFinishgoods extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 农产品货物标识 */
+    private String finishgoodsId;
+
+    /** 溯源信息标识 */
+    @Excel(name = "溯源信息标识")
+    private String sourceinfoId;
+
+    /** 货物标识 */
+    @Excel(name = "货物标识")
+    private String goodsId;
+
+    /** 农产品类型 */
+    @Excel(name = "农产品类型")
+    private String finishgoodsType;
+
+    /** 农产品信息 */
+    @Excel(name = "农产品信息")
+    private String finishgoodscode;
+
+    /** 农产品采收批次 */
+    @Excel(name = "农产品采收批次")
+    private String finishgoodPickno;
+
+    /** 农产品批次编号 */
+    @Excel(name = "农产品批次编号")
+    private String finishgoodNo;
+    
+    /** 上链平台上的批次标识 */
+    private String vid;
+
+    /** 农产品创建时间 */
+    @Excel(name = "农产品创建时间")
+    private String finishgoodCreateddate;
+
+    /** 所属基地标识 */
+    @Excel(name = "所属基地标识")
+    private String landId;
+
+    /** 所属基地名称 */
+    @Excel(name = "所属基地名称")
+    private String landName;
+
+    /** 农产品费用 */
+    @Excel(name = "农产品费用")
+    private String finishgoodsExpense;
+
+    /** 等级 */
+    @Excel(name = "等级")
+    private String finishgoodsLevel;
+
+    @Excel(name = "供应商标识")
+    private String supplierId;
+}

+ 86 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/WmsGoods.java

@@ -0,0 +1,86 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import com.yunfeiyun.agmp.common.enums.DictTypeEnums;
+import com.yunfeiyun.agmp.common.utils.DictUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 货物对象 WmsGoods
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+public class WmsGoods extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 货物标识 */
+    private String goodsId;
+
+    /** 货物名称 */
+    @Excel(name = "货物名称")
+    private String goodsName;
+
+    @Excel(name = "商品单位")
+    private String goodsUnit;
+
+    @Excel(name = "商品规格")
+    private String goodsSpec;
+
+
+
+    public void setGoodsId(String goodsId)
+    {
+        this.goodsId = goodsId;
+    }
+
+    public String getGoodsId()
+    {
+        return goodsId;
+    }
+
+    public void setGoodsName(String goodsName)
+    {
+        this.goodsName = goodsName;
+    }
+
+    public String getGoodsName()
+    {
+        return goodsName;
+    }
+    public String getGoodsUnit() {
+        return goodsUnit;
+    }
+
+    public void setGoodsUnit(String goodsUnit) {
+        this.goodsUnit = goodsUnit;
+    }
+
+    public String getGoodsSpec() {
+        return goodsSpec;
+    }
+
+    public void setGoodsSpec(String goodsSpec) {
+        this.goodsSpec = goodsSpec;
+    }
+
+
+    public String getGoodsUnitContent(){
+        return DictUtils.getDictLabel(DictTypeEnums.WMS_GOODS_UNIT.getCode(), goodsUnit);
+    }
+
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("goodsId", getGoodsId())
+            .append("goodsName", getGoodsName())
+            .append("goodsUnit", getGoodsUnit())
+            .append("goodsSpec", getGoodsSpec())
+            .toString();
+    }
+}

+ 104 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/WmsStock.java

@@ -0,0 +1,104 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+
+/**
+ * 库存对象 WmsStock
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+public class WmsStock extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 库存标识 */
+    private String stockId;
+
+    /** 仓库标识 */
+    @Excel(name = "仓库标识")
+    @NotBlank(message = "仓库标识不能为空")
+    private String warehouseId;
+
+    /** 货物标识 */
+    @Excel(name = "货物标识")
+    @NotBlank(message = "货物标识不能为空")
+    private String goodsId;
+
+
+    /** 库存量 */
+    @Excel(name = "库存量")
+    private BigDecimal stockAmount;
+
+
+
+
+    /** 库存备注 */
+    @Excel(name = "库存备注")
+    private String stockRemark;
+
+    public void setStockId(String stockId)
+    {
+        this.stockId = stockId;
+    }
+
+    public String getStockId()
+    {
+        return stockId;
+    }
+    public void setWarehouseId(String warehouseId)
+    {
+        this.warehouseId = warehouseId;
+    }
+
+    public String getWarehouseId()
+    {
+        return warehouseId;
+    }
+    public void setGoodsId(String goodsId)
+    {
+        this.goodsId = goodsId;
+    }
+
+    public String getGoodsId()
+    {
+        return goodsId;
+    }
+
+
+    public void setStockAmount(BigDecimal stockAmount)
+    {
+        this.stockAmount = stockAmount;
+    }
+    public BigDecimal getStockAmount()
+    {
+        return stockAmount;
+    }
+
+    public void setStockRemark(String stockRemark)
+    {
+        this.stockRemark = stockRemark;
+    }
+
+    public String getStockRemark()
+    {
+        return stockRemark;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("stockId", getStockId())
+            .append("warehouseId", getWarehouseId())
+            .append("goodsId", getGoodsId())
+            .append("stockAmount", getStockAmount())
+            .append("stockRemark", getStockRemark())
+            .toString();
+    }
+}

+ 189 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/WmsSupplier.java

@@ -0,0 +1,189 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import com.yunfeiyun.agmp.common.enums.DictTypeEnums;
+import com.yunfeiyun.agmp.common.utils.DictUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 供应商对象 WmsSupplier
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+public class WmsSupplier extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 供应商标识 */
+    private String supplierId;
+
+    /** 供应商名称 */
+    @Excel(name = "供应商名称")
+    private String supplierName;
+
+    /** 供应商联系人 */
+    @Excel(name = "供应商联系人")
+    private String supplierLinkman;
+
+    /** 供应商联系电话 */
+    @Excel(name = "供应商联系电话")
+    private String supplierLinktel;
+
+    /** 供应商联系地址 */
+    @Excel(name = "供应商联系地址")
+    private String supplierLinkaddress;
+
+    /** 供应商备注 */
+    @Excel(name = "供应商备注")
+    private String supplierRemark;
+
+    /** 供应商创建人 */
+    @Excel(name = "供应商创建人")
+    private String supplierCreator;
+
+    /** 供应商创建时间 */
+    @Excel(name = "供应商创建时间")
+    private String supplierCreateddate;
+
+    /** 供应商资质图片 */
+    @Excel(name = "资质图片")
+    private String supplierPreview;
+    /** 供应商资质图片标识*/
+    private String supplierQualificationResId;
+
+    /**供应商类型*/
+    private String supplierType;
+
+    private String cusareaId;
+
+    public String getSupplierQualificationResId() {
+        return supplierQualificationResId;
+    }
+
+    public void setSupplierQualificationResId(String supplierQualificationResId) {
+        this.supplierQualificationResId = supplierQualificationResId;
+    }
+
+    public String getSupplierPreview() {
+        return supplierPreview;
+    }
+
+    public void setSupplierPreview(String supplierPreview) {
+        this.supplierPreview = supplierPreview;
+    }
+
+    public void setSupplierId(String supplierId)
+    {
+        this.supplierId = supplierId;
+    }
+
+    public String getSupplierId()
+    {
+        return supplierId;
+    }
+    public void setSupplierName(String supplierName)
+    {
+        this.supplierName = supplierName;
+    }
+
+    public String getSupplierName()
+    {
+        return supplierName;
+    }
+    public void setSupplierLinkman(String supplierLinkman)
+    {
+        this.supplierLinkman = supplierLinkman;
+    }
+
+    public String getSupplierLinkman()
+    {
+        return supplierLinkman;
+    }
+    public void setSupplierLinktel(String supplierLinktel)
+    {
+        this.supplierLinktel = supplierLinktel;
+    }
+
+    public String getSupplierLinktel()
+    {
+        return supplierLinktel;
+    }
+    public void setSupplierLinkaddress(String supplierLinkaddress)
+    {
+        this.supplierLinkaddress = supplierLinkaddress;
+    }
+
+    public String getSupplierLinkaddress()
+    {
+        return supplierLinkaddress;
+    }
+    public void setSupplierRemark(String supplierRemark)
+    {
+        this.supplierRemark = supplierRemark;
+    }
+
+    public String getSupplierRemark()
+    {
+        return supplierRemark;
+    }
+    public void setSupplierCreator(String supplierCreator)
+    {
+        this.supplierCreator = supplierCreator;
+    }
+
+    public String getSupplierCreator()
+    {
+        return supplierCreator;
+    }
+    public void setSupplierCreateddate(String supplierCreateddate)
+    {
+        this.supplierCreateddate = supplierCreateddate;
+    }
+
+    public String getSupplierCreateddate()
+    {
+        return supplierCreateddate;
+    }
+
+    public void setSupplierType(String SupplierType)
+    {
+        this.supplierType = SupplierType;
+    }
+
+    public String getSupplierType()
+    {
+        return supplierType;
+    }
+
+    public String getSupplierTypeContent(){
+        return DictUtils.getDictLabel(DictTypeEnums.AGM_PROCESS_TYPE.getCode(), supplierType);
+    }
+
+    public String getCusareaId() {
+        return cusareaId;
+    }
+
+    public void setCusareaId(String cusareaId) {
+        this.cusareaId = cusareaId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("supplierId", getSupplierId())
+            .append("supplierName", getSupplierName())
+            .append("supplierLinkman", getSupplierLinkman())
+            .append("supplierLinktel", getSupplierLinktel())
+            .append("supplierLinkaddress", getSupplierLinkaddress())
+            .append("supplierRemark", getSupplierRemark())
+            .append("supplierCreator", getSupplierCreator())
+            .append("supplierCreateddate", getSupplierCreateddate())
+            .append("supplierPreview", getSupplierPreview())
+            .append("supplierQualificationResId", getSupplierQualificationResId())
+            .append("cusareaId",getCusareaId())
+            .toString();
+    }
+}

+ 68 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/WmsWarehouse.java

@@ -0,0 +1,68 @@
+package com.yunfeiyun.agmp.tss.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * 仓库对象 WmsWarehouse
+ *
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+@Data
+public class WmsWarehouse extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 仓库标识 */
+    private String warehouseId;
+
+    /** 仓库名称 */
+    @Excel(name = "仓库名称")
+    @NotBlank(message = "仓库名称不能是空值")
+    private String warehouseName;
+
+    /** 仓库类型 */
+    @Excel(name = "仓库类型")
+    @NotBlank(message = "仓库类型不能是空值")
+    private String warehouseType;
+
+    /** 仓库使用状态 */
+    @Excel(name = "仓库使用状态")
+    @NotBlank(message = "仓库使用状态不能是空值")
+    private String warehouseUsestatus;
+
+    /** 仓库负责人 */
+    @Excel(name = "仓库负责人")
+    private String warehouseManager;
+
+    /** 仓库负责人名称 */
+    @Excel(name = "仓库负责人名称")
+    private String warehouseManagername;
+
+    /** 仓库创建人 */
+    @Excel(name = "仓库创建人")
+    private String warehouseCreator;
+
+    /** 仓库创建人名称 */
+    @Excel(name = "仓库创建人名称")
+    private String warehouseCreatorname;
+
+    /** 仓库创建时间 */
+    @Excel(name = "仓库创建时间")
+    private String warehouseCreateddate;
+
+
+    /** 仓库所属基地 */
+    @Excel(name = "仓库所属基地")
+    private List<String> landIds;
+
+    /** 仓库标识集合 */
+    private List<String> warehouseIds;
+
+    private String landId;
+}

+ 120 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/dto/FmsTaskrcdListDto.java

@@ -0,0 +1,120 @@
+package com.yunfeiyun.agmp.tss.domain.dto;
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 农事任务提交记录对象 FmsTaskrcd
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-24
+ */
+@Data
+public class FmsTaskrcdListDto extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 农事任务记录编号 */
+    private String taskrcdId;
+
+    /** 农事任务标识 */
+    private String taskId;
+
+    /** 仓库标识 */
+    private String warehouseId;
+
+    /** 提交时间 */
+    private String taskrcdSubmitdate;
+
+    /** 完成时间 */
+    private String taskrcdCompletedate;
+
+    /** 工时 */
+    private BigDecimal taskrcdHour;
+
+    /** 采收重量 */
+    private BigDecimal taskrcdWeight;
+
+    /** 提交说明 */
+    private String taskrcdSubmitcontent;
+
+    /** 巡田方式 */
+    private String taskrcdPatrolway;
+
+    /** 农事任务审核状态 */
+    private String taskrcdAuditstatus;
+
+    /** 农事任务审核时间 */
+    private String taskrcdAuditdate;
+
+    /** 农事任务审核人 */
+    private String taskrcdAuditor;
+
+    /** 农事任务审核人 */
+    private String taskrcdAuditorName;
+
+    /** 农事任务审核内容 */
+    private String taskrcdAuditcontent;
+
+    /** 农事任务执行人 */
+    private String taskrcdExecutor;
+
+    /** 农事任务执行人名称 */
+    private String taskrcdExecutorname;
+
+    /** 农事任务费用 */
+    private BigDecimal taskrcdCost;
+
+    /** 农资投入 */
+    private BigDecimal taskrcdAssetInvestment;
+
+    /** 农机具投入 */
+    private BigDecimal taskrcdMachineInvestment;
+
+    /** 仓库名称 */
+    private String warehouseName;
+
+    /** 农事任务农具使用量 */
+    private BigDecimal taskmachUsedcount;
+
+    /** 机具名称 */
+    private String machName;
+
+    /** 机具规格 */
+    private String machSpec;
+
+    private String machType;
+
+    /** 货物名称 */
+    private String goodsName;
+
+    /** 库存单位 */
+    private String goodsUnit;
+
+    /** 库存规格 */
+    private String goodsSpec;
+
+    /** 农资类型 */
+    private String goodsType;
+
+    /** 资源路径 */
+    private String resUrl;
+
+    /** 农事任务农资标识 */
+    private String taskassetId;
+
+    /** 农事任务农具标识 */
+    private String taskmachId;
+
+    /** 农事任务农资使用数量 */
+    private BigDecimal taskassetUsedcount;
+
+    /** 农事任务农资投入金额 */
+    private BigDecimal taskassetInvestmentAmount;
+
+    /** 农事任务农具投入金额 */
+    private BigDecimal taskmachInvestmentAmount;
+
+}

+ 63 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/dto/TssSourceperiodDto.java

@@ -0,0 +1,63 @@
+package com.yunfeiyun.agmp.tss.domain.dto;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 溯源周期对象 TssSourceperiod
+ * 
+ * @author 杨晓辉
+ * @date 2023-06-25
+ */
+@Data
+public class TssSourceperiodDto extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 溯源周期标识 */
+    private String sourceperiodId;
+
+    /** 溯源信息标识 */
+    @Excel(name = "溯源信息标识")
+    private String sourceinfoId;
+
+    /** 溯源周期时间 */
+    @Excel(name = "溯源周期开始时间")
+    private String sourceperiodStartdate;
+
+    /** 溯源周期时间 */
+    @Excel(name = "溯源周期结束时间")
+    private String sourceperiodEnddate;
+
+    /** 溯源周期类型 */
+    @Excel(name = "溯源周期类型")
+    private String sourceperiodType;
+
+    /** 溯源周期父编号 */
+    @Excel(name = "溯源周期父编号")
+    private String sourceperiodParentid;
+
+    /** 溯源周期农事记录时间 */
+    @Excel(name = "溯源周期农事记录时间")
+    private String sourceperiodFmstaskrcdcreateddate;
+
+    /** 溯源周期农事内容描述 */
+    @Excel(name = "溯源周期农事内容描述")
+    private String sourceperiodFmstaskrcdremark;
+
+    /** 溯源信息农事记录负责人 */
+    @Excel(name = "溯源信息农事记录负责人")
+    private String sourceperiodFmstaskrcdmanagername;
+
+    /** 溯源周期名称 */
+    @Excel(name = "溯源周期名称")
+    private String sourceperiodName;
+
+    /** 周期图片标识 */
+    private String periodResIds;
+
+    /** 周期图片 */
+    private String periodPreview;
+
+}

+ 57 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AddAgmTaskPickOutReqVo.java

@@ -0,0 +1,57 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AddAgmTaskPickOutReqVo extends BaseEntity {
+
+    /**
+     * 入库量
+     */
+    private BigDecimal stockAmount;
+    /**
+     * 货物规格
+     */
+    private String goodsSpec;
+    /**
+     * 货物单位
+     */
+    private String goodsUnit;
+
+    /**
+     * 产品值
+     */
+    private String productValue;
+    /**
+     * 溯源标识
+     */
+    private String sourceinfoId;
+    /**
+     * 仓库标识
+     */
+    private String warehouseId;
+    /** 供应商标识 */
+    private String supplierId;
+
+    /** 体检图片标识 */
+    private String qualityResIds;
+
+    /** 周期图片标识 */
+    private String periodResIds;
+
+    /** 所属基地标识 */
+    private String landId;
+
+    /** 所属基地名称 */
+    private String landName;
+
+    /** 农产品费用 */
+    private String finishgoodsExpense;
+
+    private String finishgoodsLevel;
+}

+ 38 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AddAgmTaskPickReqVo.java

@@ -0,0 +1,38 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AddAgmTaskPickReqVo extends BaseEntity {
+
+    /**
+     * 入库量
+     */
+    private BigDecimal stockAmount;
+    /**
+     * 采收任务标识
+     */
+    private String taskpickId;
+    /**
+     * 产品编码
+     */
+    private String productValue;
+    /**
+     * 溯源标识
+     */
+    private String sourceinfoId;
+    /**
+     * 仓库标识
+     */
+    private String warehouseId;
+    /** 供应商标识 */
+    private String supplierId;
+
+
+
+}

+ 49 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AddMppQualitycheckReqVo.java

@@ -0,0 +1,49 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ *  质检对象 MppQualitycheck
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-30
+ */
+@Data
+public class AddMppQualitycheckReqVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 质检标识 */
+    private String qualitycheckId;
+
+    /** 农产品标识 */
+    @Excel(name = "农产品标识")
+    private String finishgoodsIds;
+
+    /** 质检提交人 */
+    @Excel(name = "质检提交人")
+    private String qualitycheckCreator;
+
+    /** 质检创建时间 */
+    @Excel(name = "质检创建时间")
+    private String qualitycheckCreateddate;
+
+    /** 质检机构 */
+    @Excel(name = "质检机构")
+    private String qualitycheckOrg;
+
+    /** 质检时间 */
+    private String qualitycheckInspectdate;
+
+    /** 质检备注 */
+    private String qualityRemark;
+
+    /** 质检员 */
+    private String qualityInspector;
+
+    /** 图片 */
+    private String qualityResIds;
+
+}

+ 97 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AddMppTaskReqVo.java

@@ -0,0 +1,97 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import com.yunfeiyun.agmp.tss.domain.MppMaterial;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 农产品生产任务对象 MppTask
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-03
+ */
+@Data
+public class AddMppTaskReqVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+
+    /** 生产过程标识 */
+    private String taskId;
+
+    /** 库存标识 */
+    @Excel(name = "库存标识")
+    private String stockId;
+
+    /** 生产过程批次编号 */
+    @Excel(name = "生产过程批次编号")
+    private String taskNo;
+
+    /** 生产过程类型 */
+    @Excel(name = "生产过程类型")
+    private String taskType;
+
+    /** 生产过程提交人 */
+    @Excel(name = "生产过程提交人")
+    private String taskCreator;
+
+    /** 生产过程创建时间 */
+    @Excel(name = "生产过程创建时间")
+    private String taskCreateddate;
+
+    /** 生产过程详情 */
+    @Excel(name = "生产过程详情")
+    private String taskRemark;
+
+    /** 生产过程加工数量 */
+    @Excel(name = "生产过程加工数量")
+    private BigDecimal taskdetailNum;
+
+    /** 生产过程加工企业 */
+    @Excel(name = "生产过程加工企业")
+    private String taskdetailOrg;
+
+    /** 生产过程加工时间 */
+    @Excel(name = "生产过程加工时间")
+    private String taskdetailCreateddate;
+
+    /**
+     * 产品编码
+     */
+    private String productValue;
+    /**
+     * 溯源标识
+     */
+    private String sourceinfoId;
+    /**
+     * 仓库标识
+     */
+    private String warehouseId;
+
+    /**
+     * 货物规格
+     */
+    private String goodsSpec;
+    /**
+     * 货物单位
+     */
+    private String goodsUnit;
+
+    /**
+     * 过程图片
+     */
+    private String processResIds;
+
+    /** 原材料 */
+    private List<MppMaterial> mppMaterials;
+
+    /**
+     * 农产品费用
+     */
+    private String finishgoodsExpense;
+
+}

+ 82 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AddTssSourceinfoReqVo.java

@@ -0,0 +1,82 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import com.yunfeiyun.agmp.tss.domain.TssSourceEnvironment;
+import com.yunfeiyun.agmp.tss.domain.TssSourceperiod;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 溯源信息对象 TssSourceinfo
+ * 
+ * @author 杨晓辉
+ * @date 2023-06-25
+ */
+@Data
+public class AddTssSourceinfoReqVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 溯源信息标识 */
+    private String sourceinfoId;
+
+    /** 溯源信息名字 */
+    @Excel(name = "溯源信息名字")
+    private String sourceinfoName;
+
+    /** 溯源信息编码 */
+    @Excel(name = "溯源信息编码")
+    private String sourceinfoCode;
+
+    /** 溯源信息体检状态 */
+    @Excel(name = "溯源信息体检状态")
+    private String sourceinfoQualitystatus;
+
+    /** 溯源信息体检报告说明 */
+    @Excel(name = "溯源信息体检报告说明")
+    private String sourceinfoQualityremark;
+
+    /** 溯源信息生长状态 */
+    @Excel(name = "溯源信息生长状态")
+    private String sourceinfoGrowstatus;
+
+    /** 溯源信息形象状态 */
+    @Excel(name = "溯源信息形象状态")
+    private String sourceinfoFiguretatus;
+
+    /** 溯源信息创建人 */
+    @Excel(name = "溯源信息创建人")
+    private String sourceinfoCreator;
+
+    /** 溯源信息创建时间 */
+    @Excel(name = "溯源信息创建时间")
+    private String sourceinfoCreateddate;
+
+    /** 溯源信息修改人 */
+    @Excel(name = "溯源信息修改人")
+    private String sourceinfoModifier;
+
+    /** 溯源信息修改时间 */
+    @Excel(name = "溯源信息修改时间")
+    private String sourceinfoModifieddate;
+
+    /** 头像标识 */
+    @Excel(name = "头像标识")
+    private String avatarResIds;
+
+    /** 体检图片标识 */
+    private String qualityResIds;
+
+    /** 形象图片标识 */
+    private String figureResIds;
+
+    /** 周期列表 */
+    private List<TssSourceperiod> tssSourceperiods;
+
+    /** 溯源生长环境列表 */
+    private List<TssSourceEnvironment> tssSourceEnvironments;
+    /**溯源信息模板标识*/
+    private String tracecodetplId;
+}

+ 74 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AgmTaskPickListReqVo.java

@@ -0,0 +1,74 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AgmTaskPickListReqVo extends BaseEntity {
+
+    /**
+     * 仓库标识
+     */
+    private String warehouseId;
+
+    /**
+     * 产品名称
+     */
+    private String goodsName;
+
+    /**
+     * 产品名称
+     */
+    private String goodsSpec;
+
+    /**
+     * 产品名称
+     */
+    private String goodsUnit;
+
+    /**
+     * 产品名称
+     */
+    private String finishgoodscode;
+
+    /**
+     * 农产品类型
+     */
+    private String finishgoodsType;
+
+    /**
+     * 农产品批次编号
+     */
+    private String finishgoodNo;
+
+    /**
+     * 是否有库存量,0否,1是
+     */
+    private String hasStock;
+
+    /**
+     * 质检状态
+     */
+    private String checkStatus;
+    /**
+     * 开始时间
+     */
+    private String startDate;
+    /**
+     * 结束时间
+     */
+    private String endDate;
+
+
+    /** 仓库标识集合 */
+    private List<String> warehouseIds;
+
+    /**
+     * 产品类型
+     */
+    private String productType;
+}

+ 24 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AppSeedOutAddHistoryListReqVo.java

@@ -0,0 +1,24 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AppSeedOutAddHistoryListReqVo {
+
+    /**
+     * 数据检索字段-》供应商名称,种子名称
+     * */
+    private String dataQuery;
+    /**
+     * 外采购时间-》开始区间
+     * */
+    private String stockCreateDateStart;
+    /**
+     * 外采购时间-》结束区间
+     * */
+    private String stockCreateDateEnd;
+
+    private List<String> finishgoodscodeList;
+}

+ 66 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/AppSeedOutAddReqVo.java

@@ -0,0 +1,66 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.tss.domain.MppProduct;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class AppSeedOutAddReqVo  {
+    /**
+     * 种子标识
+     * */
+    private String productCode;
+    /**
+     * 产品信息(种子标识为空时启用)
+     * */
+    private MppProduct mppProduct;
+    /**
+     * 种子级别
+     * */
+    private String seedLevel;
+    /**
+     * 供应商标识
+     * */
+    private String supplierId;
+    /**
+     * 供应商信息(供应商标识为空时启用)
+     * */
+    private WmsSupplierAddReqVo wmsSupplier;
+    /**
+     * 入库数量
+     * */
+    private BigDecimal stockAmount;
+    /**
+     * 质检企业标识
+     * */
+    private String qualitycheckOrg;
+    /**
+     * 质检员
+     * */
+    private String qualityInspector;
+    /**
+     * 基地标识
+     * */
+    @NotBlank(message = "基地标识不能为空")
+    private String landId;
+    /**
+     * 仓库标识
+     * */
+    @NotBlank(message = "请确定当前基地下是否有仓库,如果没有请联系管理员进行添加")
+    private String warehouseId;
+    /**
+     * 溯源信息标识
+     * */
+    @NotBlank(message = "溯源信息标识不能为空")
+    private String sourceinfoId;
+    /**
+     * 溯源码生成数量
+     * */
+    private Integer generateNumber;
+
+    private List<String> processResId;
+
+}

+ 69 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/FmsTaskListReqVo.java

@@ -0,0 +1,69 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 农事任务对象 FmsTask
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-19
+ */
+@Data
+public class FmsTaskListReqVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 任务编号 */
+    private String taskNo;
+
+    /** 计划标识 */
+    private String planId;
+
+    /**
+     * 计划编号
+     * */
+    private String planNo;
+
+    /** 地块标识 */
+    private String blockId;
+
+    /** 基地标识 */
+    private String landId;
+
+    /** 作物标识 */
+    private String cropId;
+
+    /** 农事任务创建类型 */
+    private String taskCreatetype;
+
+    /** 农事任务类型 */
+    private String taskType;
+
+    /** 农事任务状态 */
+    private String taskAuditstatus;
+
+    /** 农事任务申请类型 */
+    private String taskAudittype;
+
+    /** 农事任务管理者 */
+    private String taskManager;
+
+    /** 农事任务管理者名字 */
+    private String taskManagername;
+
+    /** 开始时间 */
+    private String startDate;
+
+    /** 结束时间 */
+    private String endDate;
+
+    /** 作物名称 */
+    private String cropName;
+
+    /** 任务审核人 */
+    private String taskAuditor;
+
+    private boolean queryAllTask = false;
+}

+ 22 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/FmsTaskrcdListReqVo.java

@@ -0,0 +1,22 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 农事任务提交记录对象 FmsTaskrcd
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-24
+ */
+@Data
+public class FmsTaskrcdListReqVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 农事任务标识 */
+    private String taskId;
+
+    /** 农事任务审核状态 */
+    private String taskrcdAuditstatus;
+}

+ 43 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/MppMaterialReqVo.java

@@ -0,0 +1,43 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 加工原材料对象 MppMaterial
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-03
+ */
+@Data
+public class MppMaterialReqVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 源材料标识 */
+    private String materialId;
+
+    /** 生产过程标识 */
+    @Excel(name = "生产过程标识")
+    private String taskId;
+
+    /** 库存标识 */
+    @Excel(name = "库存标识")
+    private String stockId;
+
+    /** 生产过程主料状态 */
+    @Excel(name = "生产过程主料状态")
+    private String materialStatus;
+
+    /** 原材料耗费数量 */
+    @Excel(name = "原材料耗费数量")
+    private BigDecimal materialCostnum;
+
+    /** 农产品标识 */
+    private String finishgoodsId;
+
+
+}

+ 52 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SelectCountOfScreenReqVo.java

@@ -0,0 +1,52 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class SelectCountOfScreenReqVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 出库登记单订单标识 */
+    private String orderId;
+
+    /** 订单状态,传1标识orderId不为空标识已使用 */
+    private String orderStatus;
+
+    /** 开始时间 */
+    private String startTime;
+
+    /** 结束时间 */
+    private String endTime;
+
+    /** 开始时间 */
+    private String startTimeSend;
+
+    /** 结束时间 */
+    private String endTimeSend;
+
+    /** 溯源码生成标识 */
+    private String tarcecodeapplyId;
+
+    /** 库存标识 */
+    private String stockId;
+
+    /** 系统预警分类 */
+    private String warnClass;
+
+    /** 系统预警类型 */
+    private String warnType;
+
+    /** 产品值 */
+    private String finishgoodscode;
+
+    /** 送达开始时间 */
+    private String startTimeArrival;
+
+    /** 送达结束时间 */
+    private String endTimeArrival;
+
+    private String spmOrderId;
+
+}

+ 31 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SelectOfTssStatReqVo.java

@@ -0,0 +1,31 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class SelectOfTssStatReqVo extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/** 基地标识 */
+	private String landId;
+
+	/** 开始时间 */
+	private String startTime;
+
+	/** 结束时间 */
+	private String endTime;
+	
+	/** 投入、成本类型 */
+	private String payType;
+	
+	/** 查询的小类型 */
+	private String payMxType;
+
+	/** 状态 */
+	private String orderStatus;
+	
+	/** 查取头几条数据 */
+	private Integer limitNum;
+
+}

+ 15 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SpmOrderListReqVo.java

@@ -0,0 +1,15 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.tss.domain.SpmOrder;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SpmOrderListReqVo extends SpmOrder {
+    private List<String> warehouseIds;
+    private String landId;
+    private String startDate;
+    private String endDate;
+    private String finishgoodsType;
+}

+ 25 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SpmOrderLogisticsInfoReqVo.java

@@ -0,0 +1,25 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SpmOrderLogisticsInfoReqVo {
+    /**订单状态*/
+    private String orderStatus;
+    /**发货时间开始*/
+    private String orderSenddateStart;
+    /**发货时间结束*/
+    private String orderSenddateEnd;
+    /**拓展查询字段*/
+    private String extentQueryParam;
+    /** 出库登记单收货省份 */
+    private String orderConsigneeprovince;
+    /** 出库登记单收货市区 */
+    private String orderConsigneecity;
+    /** 出库登记单收货县区 */
+    private String orderConsigneedistrict;
+
+    private List<String> warehouseIds;
+}

+ 11 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SpmOrderMatchTraceCodeReqVo.java

@@ -0,0 +1,11 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+@Data
+public class SpmOrderMatchTraceCodeReqVo {
+    /**订单标识*/
+    private String spmOrderId;
+    /**溯源码编号*/
+    private String tarcecodeapplyno;
+}

+ 13 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/SysCustomerEditReqVo.java

@@ -0,0 +1,13 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+
+import com.yunfeiyun.agmp.tss.domain.SysCustomer;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SysCustomerEditReqVo extends SysCustomer {
+    /**资源标识*/
+    private String resId;
+}

+ 35 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TarceTaasUpChainReqVo.java

@@ -0,0 +1,35 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.tss.domain.resvo.WmsFinishgoodsListResVo;
+import lombok.Data;
+
+@Data
+public class TarceTaasUpChainReqVo {
+	/** 农产品信息(字典表里的code) */
+	private String finishgoodscode;
+	/** 农产品信息(字典表里的名称) */
+	private String finishGoodName;
+	/** 商品单位 */
+	private String goodsUnit;
+	/** 商品规格 */
+	private String goodsSpec;
+	/** 农产品批次编号(入库的时候,系统生成) */
+	private String finishgoodNo;
+	/** 溯源码生成批次编号(溯源码生成时,系统生成) */
+	private String tarcecodeapplyBatchno;
+	/** 溯源码模版 */
+	private String tracecodetplId;
+	
+	/** 溯源码申请号段,用于取申请号,进一步去查溯源等信息 */
+	private String traceCodeApplyConcat;
+	
+	/** 我的名称 */
+	private String sourceinfoName;
+	/** 我的头像 */
+	private String goodsImg;
+	/** 采收,加工,包装 */
+	private String finishgoodsType;
+	/** 选择产品进行贴码上链的产品信息(包含了产品基础信息、库存信息等) */
+	private WmsFinishgoodsListResVo finishObj;
+
+}

+ 18 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssScanrcdReqVo.java

@@ -0,0 +1,18 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.tss.domain.TssScanrcd;
+import lombok.Data;
+
+@Data
+public class TssScanrcdReqVo extends TssScanrcd {
+    /**溯源码申请编号*/
+    private String tarcecodeapplyno;
+    /**溯源码扫码开始时间*/
+    private String scanTimeStart;
+    /**溯源码扫码结束时间*/
+    private String scanTimeEnd;
+    /**溯源码查询拓展参数*/
+    private String extendParam;
+    /**未关联订单的溯源码是否查询*/
+    private boolean isReadNoOrderScanLog;
+}

+ 12 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssSourceinfoListReqVo.java

@@ -0,0 +1,12 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.tss.domain.TssSourceinfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class TssSourceinfoListReqVo extends TssSourceinfo {
+    /**产品类型*/
+    private String productType;
+}

+ 20 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssTraceCodeGenerateReqVo.java

@@ -0,0 +1,20 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class TssTraceCodeGenerateReqVo {
+    @NotBlank(message = "产品库存标识不能为空")
+    private String stockId;
+    @NotNull(message = "生成数量不能为空")
+    @Min( value = 1,message = "生成数量最小为1张")
+    @Max(value = 1000,message = "生成数量最大为1000张")
+    private Integer num;
+    @NotBlank(message = "溯源码模板标识不能为空")
+    private String tracecodetplId;
+}

+ 15 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssTracecodeapplyReqVo.java

@@ -0,0 +1,15 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.tss.domain.TssTracecodeapply;
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class TssTracecodeapplyReqVo extends TssTracecodeapply {
+    private String  goodsName;
+
+    /** 仓库标识集合 */
+    private List<String> warehouseIds;
+}

+ 22 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssTracecodetplEditReqVo.java

@@ -0,0 +1,22 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+
+import com.yunfeiyun.agmp.tss.domain.TssTracecodetplparam;
+import lombok.Data;
+
+@Data
+public class TssTracecodetplEditReqVo {
+    /**溯源模板标识*/
+    private String tracecodetplId;
+    /**溯源模板背景图*/
+    private String background;
+    /**溯源模板logo*/
+    private String logo;
+    /**素原模板最大扫码次数*/
+    private Integer tracecodetplMaxscan;
+
+    private Integer tracecodetplHeight;
+    private Integer tracecodetplWidth;
+
+    private TssTracecodetplparam tssTracecodetplparam;
+}

+ 59 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/TssWarnReqVo.java

@@ -0,0 +1,59 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 系统预警对象 TssWarn
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-05
+ */
+@Data
+public class TssWarnReqVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 系统预警标识 */
+    private String warnId;
+
+    /** 系统预警分类 */
+    @Excel(name = "系统预警分类")
+    private String warnClass;
+
+    /** 系统预警类型 */
+    @Excel(name = "系统预警类型")
+    private String warnType;
+
+    /** 系统预警创建时间 */
+    @Excel(name = "系统预警创建时间")
+    private String warnCreateddate;
+
+    /** 系统预警跳转地址 */
+    @Excel(name = "系统预警跳转地址")
+    private String warnJumpurl;
+
+    /** 系统预警内容 */
+    @Excel(name = "系统预警内容")
+    private String warnRemark;
+
+    /** 开始时间 */
+    private String startTime;
+
+    /** 结束时间 */
+    private String endTime;
+
+    /** 是否已读 */
+    private String readStatus;
+
+    /** 用户id */
+    private String userId;
+
+    private String spmOrderId;
+
+    private List<String> warehouseIds;
+
+}

+ 20 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsChangeApplyAuditReqVo.java

@@ -0,0 +1,20 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class WmsChangeApplyAuditReqVo {
+    /** 审核意见 */
+    @NotBlank(message = "审核意见为空")
+    private String comments;
+
+    /** 变动申请标识 */
+    @NotBlank(message = "变动申请标识为空")
+    private String changeapplyId;
+
+    /** 农事任务审核状态 */
+    @NotBlank(message = "变动申请审核状态为空")
+    private String changeApplyAuditStatus;
+}

+ 28 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsChangeApplyGoodsListReqVo.java

@@ -0,0 +1,28 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class WmsChangeApplyGoodsListReqVo {
+    /** 审核状态 */
+    private String changeapplyAuditstatus;
+    /** 领用人 */
+    private String changeapplyApplyer;
+    /** 仓库标识 */
+    private String warehouseId;
+    /** 农资类型 */
+    private String goodsType;
+    /** 申请时间开始 */
+    private String changeapplyApplydatestart;
+    /** 申请时间截止 */
+    private String changeapplyApplydateend;
+    /** 业务变动类型 */
+    @NotBlank(message = "业务变动类型为空")
+    private String changeapplyBiztype;
+
+    private String warehouseType = "1";
+
+    private String changeapplyId;
+}

+ 20 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsChangeApplyListReqVo.java

@@ -0,0 +1,20 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+@Data
+public class WmsChangeApplyListReqVo {
+    /** 变动方式 */
+    private String changeWay;
+    /** 仓库标识 */
+    private String warehouseId;
+    /** 农资类型 */
+    private String goodsType;
+    /** 变动日期开始时间 */
+    private String changeDateStart;
+    /** 变动日期结束时间 */
+    private String changeDateEnd;
+    /**仓库类型*/
+    private String warehouseType = "1";
+
+}

+ 24 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsChangeApplyReqVo.java

@@ -0,0 +1,24 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+import java.math.BigDecimal;
+
+@Data
+public class WmsChangeApplyReqVo {
+    /**库存标识*/
+    @NotBlank(message = "库存标识不能为空")
+    private String stockId;
+    /**变动数量*/
+    @Pattern(regexp = "(^(-)?[1-9]+(\\.\\d{1,2})*$)|(^(-)?[0-9]+(\\.\\d{1,2})*$)",message = "变动数量必须为非0实数且保留两位小数")
+    private String changeNumber;
+    /**备注*/
+    private String remark;
+
+    public BigDecimal getChangeNumber(){
+        return new BigDecimal(changeNumber);
+    }
+
+}

+ 32 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsChangeReqVo.java

@@ -0,0 +1,32 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+/**
+ * 变动对象 WmsChange
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-25
+ */
+@Data
+public class WmsChangeReqVo
+{
+
+    /** 仓库标识 */
+    private String warehouseId;
+
+    /** 变动类型 */
+    private String changeBiztype;
+
+    /** 开始时间 */
+    private String startTime;
+
+    /** 结束时间 */
+    private String endTime;
+
+    /** 农产品名称 */
+    private String goodsName;
+
+    /** 产品值 */
+    private String finishgoodscode;
+}

+ 60 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsFinishgoodsReqVo.java

@@ -0,0 +1,60 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 农产品货物对象 WmsFinishgoods
+ * 
+ * @author 杨晓辉
+ * @date 2023-06-30
+ */
+@Data
+public class WmsFinishgoodsReqVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 农产品货物标识 */
+    private String finishgoodsId;
+
+    /** 溯源信息标识 */
+    @Excel(name = "溯源信息标识")
+    private String sourceinfoId;
+
+    /** 货物标识 */
+    @Excel(name = "货物标识")
+    private String goodsId;
+
+    /** 农产品类型 */
+    @Excel(name = "农产品类型")
+    private String finishgoodsType;
+
+    /** 农产品信息 */
+    @Excel(name = "农产品信息")
+    private String finishgoodscode;
+
+    /** 农产品采收批次 */
+    @Excel(name = "农产品采收批次")
+    private String finishgoodPickno;
+
+    /** 农产品批次编号 */
+    @Excel(name = "农产品批次编号")
+    private String finishgoodNo;
+
+    /** 仓库标识 */
+    private String warehouseId;
+
+    /** 产品名称 */
+    private String goodsName;
+
+    /** 导出排序 */
+    private String orderByOfExport;
+
+    /** 仓库标识集合 */
+    private List<String> warehouseIds;
+
+    private String landId;
+}

+ 33 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsStockAddReqVo.java

@@ -0,0 +1,33 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class WmsStockAddReqVo {
+    /** 农资类型 */
+    private String goodsType;
+    /** 农资名称 */
+    private String goodsName;
+    /** 农资单位 */
+    private String goodsUnit;
+    /** 农资规格 */
+    private String goodsSpec;
+    /** 入库数量 */
+    private BigDecimal stockAmount;
+    /** 农资单价 */
+    private BigDecimal changeapplyitemUnit;
+    /** 农资总价 */
+    private BigDecimal changeapplyitemUnitTotal;
+    /** 仓库标识 */
+    private String warehouseId;
+    /** 入库时间 */
+    private String changeapplyInoutdate;
+    /** 供应商标识 */
+    private String supplierId;
+    /** 厂家名称 */
+    private String goodsManufactor;
+    /** 变化申请备注 */
+    private String changeapplyRemark;
+}

+ 28 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsStockBatchChangeReqVo.java

@@ -0,0 +1,28 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 农资批量入库单
+ * @author liuyaowen
+ * */
+@Data
+public class WmsStockBatchChangeReqVo {
+    /** 入库时间 */
+    @NotBlank(message = "入库时间不能为空")
+    private String changeapplyInoutdate;
+    /** 变化申请备注 */
+    private String changeapplyRemark;
+    /** 业务变动类型 */
+    @NotBlank(message = "业务变动类型不能为空")
+    private String changeBiztype;
+    /** 农资入库列表 */
+    @NotEmpty(message = "农资入库列表不能为空")
+    @Valid
+    private List<WmsStockBatchChangeReqVoItem> wmsStockBatchChangeReqVoItemList;
+}

+ 42 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsStockBatchChangeReqVoItem.java

@@ -0,0 +1,42 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * 农资批量入库单子项
+ * @author liuyaowen
+ * */
+@Data
+public class WmsStockBatchChangeReqVoItem {
+
+    /** 库存标识 */
+    @NotBlank(message = "库存标识不能为空")
+    private String stockId;
+    /** 货物标识 */
+    @NotBlank(message = "货物标识不能为空")
+    private String goodsId;
+    /** 货物名称 */
+    @NotBlank(message = "货物名称不能为空")
+    private String goodsName;
+    /** 商品单位 */
+
+    private String goodsUnit;
+    /** 商品规格 */
+    private String goodsSpec;
+    /** 商品类型 */
+    @NotBlank(message = "商品类型不能为空")
+    private String goodsType;
+    /** 入库数量 */
+    @NotNull(message = "变动数量不能为空")
+    private BigDecimal stockAmount;
+    /** 单价 */
+    private BigDecimal changeapplyitemPriceunit = new BigDecimal("0");
+    /** 合计 */
+    private BigDecimal changeapplyitemPricetotal = new BigDecimal("0");
+
+
+}

+ 21 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsStockListReqVo.java

@@ -0,0 +1,21 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import lombok.Data;
+
+@Data
+public class WmsStockListReqVo {
+
+    /** 农资类型 */
+    private String goodsType;
+
+    /** 仓库标识 */
+    private String warehouseId;
+
+    /** 商品名称 */
+    private String goodsName;
+
+    /** 库存数量的最小值 */
+    private Integer minStockAmount;
+
+    private String warehouseType = "1";
+}

+ 15 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsSupplierAddReqVo.java

@@ -0,0 +1,15 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.tss.domain.WmsSupplier;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class WmsSupplierAddReqVo extends WmsSupplier {
+    @NotBlank(message = "供应商资质为空")
+    private String supplierQualificationResId;
+
+}

+ 9 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsSupplierListReqVo.java

@@ -0,0 +1,9 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.tss.domain.WmsSupplier;
+import lombok.Data;
+
+@Data
+public class WmsSupplierListReqVo extends WmsSupplier {
+    private String supplierType = "";
+}

+ 11 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/reqvo/WmsWarehouseListReqVo.java

@@ -0,0 +1,11 @@
+package com.yunfeiyun.agmp.tss.domain.reqvo;
+
+import com.yunfeiyun.agmp.tss.domain.WmsWarehouse;
+import lombok.Data;
+
+@Data
+public class WmsWarehouseListReqVo extends WmsWarehouse {
+
+    private String warehouseType = "1";
+    private String landId;
+}

+ 73 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/AgmTaskPickListResVo.java

@@ -0,0 +1,73 @@
+package com.yunfeiyun.agmp.tss.domain.resvo;
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AgmTaskPickListResVo extends BaseEntity {
+
+    /** 作物名称 */
+    private String cropName;
+
+    /** 作物标识 */
+    private String cropId;
+
+    /** 作物类型名称 */
+    private String cropType;
+
+    /** 作物预览图 */
+    private String cropPreview;
+
+    /** 采收重量 */
+    private BigDecimal pickWeight;
+
+    /** 采收编号 */
+    private String pickNo;
+
+    /** 采收标识 */
+    private String taskpickId;
+
+    /** 完成时间 */
+    private String taskrcdCompletedate;
+
+    /** 仓库标识 */
+    private String warehouseId;
+
+    /** 仓库名称 */
+    private String warehouseName;
+
+    /** 基地ID */
+    private String landId;
+    
+    /** 基地名称 */
+    private String landName;
+
+    /** 地块名称 */
+    private String blockName;
+
+    /** 种植规划编号 */
+    private String planNo;
+
+    /** 种植规划标识 */
+    private String planId;
+
+    /** 种植规划开始时间 */
+    private String planStartdate;
+
+    /** 种植规划结束时间 */
+    private String planEnddate;
+
+    /** 种植规划开始时间 */
+    private String planPlanstartdate;
+
+    /** 种植规划结束时间 */
+    private String planPlanenddate;
+
+    /** 是否农产品入库状态 */
+    private String pickChangestatus;
+
+}

+ 20 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/AppSeedOutAddHistoryResVo.java

@@ -0,0 +1,20 @@
+package com.yunfeiyun.agmp.tss.domain.resvo;
+
+import com.yunfeiyun.agmp.common.enums.DictTypeEnums;
+import com.yunfeiyun.agmp.common.utils.DictUtils;
+import lombok.Data;
+
+@Data
+public class AppSeedOutAddHistoryResVo {
+    private String finishgoodsId;
+    private String goodsName;
+    private String finishgoodsLevel;
+    private String stockAmount;
+    private String supplierName;
+    private String finishgoodCreateddate;
+    private String finishgoodscode;
+
+    public String getGoodsName(){
+        return DictUtils.getDictLabel(DictTypeEnums.AGM_MPP_PRODUCT.getCode(),this.finishgoodscode);
+    }
+}

+ 21 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/AppSeedOutAddInfoResVo.java

@@ -0,0 +1,21 @@
+package com.yunfeiyun.agmp.tss.domain.resvo;
+
+import com.yunfeiyun.agmp.common.web.system.domain.SysRes;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AppSeedOutAddInfoResVo {
+    private String goodsName;
+    private String finishgoodsLevel;
+    private String supplierId;
+    private String supplierName;
+    private String cusareaLevelname;
+    private String stockAmount;
+    private String qualitycheckOrg;
+    private String qualitycheckOrgName;
+    private String qualityInspector;
+    private List<SysRes> processImgResList;
+
+}

+ 13 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/FmsTaskMessageResVo.java

@@ -0,0 +1,13 @@
+package com.yunfeiyun.agmp.tss.domain.resvo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class FmsTaskMessageResVo extends FmsTaskResVo{
+    /** 巡田方式 */
+    private String taskpatrolWay;
+    /** 巡田地址 */
+    private String taskpatrolAddress;
+}

+ 165 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/FmsTaskResVo.java

@@ -0,0 +1,165 @@
+package com.yunfeiyun.agmp.tss.domain.resvo;
+
+
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import com.yunfeiyun.agmp.common.enums.DictTypeEnums;
+import com.yunfeiyun.agmp.common.enums.TaskType;
+import com.yunfeiyun.agmp.common.utils.DictUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 农事任务对象 FmsTask
+ * 
+ * @author 杨晓辉
+ * @date 2023-05-19
+ */
+@Data
+public class FmsTaskResVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 农事任务标识 */
+    private String taskId;
+
+    /** 任务编号 */
+    private String taskNo;
+
+    /** 种植计划标识 */
+    private String planId;
+
+    /** 地块标识 */
+    private String blockId;
+
+    /** 基地标识 */
+    private String landId;
+
+    /** 作物标识 */
+    private String cropId;
+
+    /** 手动自动 */
+    private String taskCreatetype;
+
+    /** 农事任务类型 */
+    private String taskType;
+
+    /** 农事任务详情 */
+    private String taskContent;
+
+    /** 农事任务计划执行日期 */
+    private String taskPlanstartdate;
+
+    /** 农事任务计划截止日期 */
+    private String taskPlanenddate;
+
+    /** 下发上报记录 */
+    private String taskAudittype;
+
+    /** 农事任务审核状态 */
+    private String taskStatus;
+
+    /** 农事任务负责人 */
+    private String taskManager;
+
+    /** 农事任务负责人姓名 */
+    private String taskManagername;
+
+    /** 农事任务创建人 */
+    private String taskCreator;
+
+    /** 农事任务创建人姓名 */
+    private String taskCreatorName;
+
+    /** 农事任务创建时间 */
+    private String taskCreateddate;
+
+    /** 完成时间 */
+    private String taskCompletedate;
+
+    /** 农事任务修改时间 */
+    private String taskModifieddate;
+
+    /** 农事任务完成原因 */
+    private String taskCompletereason;
+
+    /** 作物名称 */
+    private String cropName;
+
+    /** 作物种类 */
+    private String cropType;
+
+    /** 基地名称 */
+    private String landName;
+
+    /** 地块名称 */
+    private String blockName;
+
+    /** 计划编号 */
+    private String planNo;
+
+    /** 计划面积 */
+    private String planArea;
+
+
+    /** 农事任务类型名称 */
+    private String taskTypeContent;
+
+    /** 审核类型名称 */
+    private String taskAudittypeContent;
+
+    /** 农事任务审核状态名称 */
+    private String taskStatusContent;
+
+    /** 农事任务提交记录标识 */
+    private String taskrcdId;
+
+    /** 涉及农资内容 */
+    private String goodInfoContent;
+
+    /** 涉及农资内容 */
+    private String machInfoContent;
+
+    /** 审核人 */
+    private String taskAuditor;
+
+    private BigDecimal taskrcdHour;
+
+
+    public String getTaskTypeContent() {
+        if (!StringUtils.isEmpty(this.taskType)) {
+            if("-1".equals(this.taskType)){
+                return "采收";
+            }
+            if("-2".equals(this.taskType)){
+                return "巡田";
+            }
+            return DictUtils.getDictLabel(DictTypeEnums.FMS_TASK_WORK_TYPE.getCode(), this.taskType);
+        } else {
+            return "";
+        }
+    }
+
+    public String getTaskAudittypeContent() {
+        if (!StringUtils.isEmpty(this.taskAudittype)) {
+            if (TaskType.PICK.getCode().equals(this.taskAudittype)) {
+                return TaskType.PICK.getMessage();
+            } else if (TaskType.PATROL.getCode().equals(this.taskAudittype)) {
+                return TaskType.PATROL.getMessage();
+            } else {
+                return DictUtils.getDictLabel(DictTypeEnums.FMS_TASK_AUDIT_TYPE.getCode(), this.taskAudittype);
+            }
+        } else {
+            return "";
+        }
+    }
+
+    public String getTaskStatusContent() {
+        if (!StringUtils.isEmpty(this.taskStatus)) {
+            return DictUtils.getDictLabel(DictTypeEnums.FMS_TASK_STATUS.getCode(), this.taskStatus);
+        } else {
+            return "";
+        }
+    }
+}

+ 45 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/MppMaterialResVo.java

@@ -0,0 +1,45 @@
+package com.yunfeiyun.agmp.tss.domain.resvo;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 加工原材料对象 MppMaterial
+ * 
+ * @author 杨晓辉
+ * @date 2023-07-03
+ */
+@Data
+public class MppMaterialResVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 源材料标识 */
+    private String materialId;
+
+    /** 生产过程标识 */
+    @Excel(name = "生产过程标识")
+    private String taskId;
+
+    /** 库存标识 */
+    @Excel(name = "库存标识")
+    private String stockId;
+
+    /** 生产过程主料状态 */
+    @Excel(name = "生产过程主料状态")
+    private String materialStatus;
+
+    /** 原材料耗费数量 */
+    @Excel(name = "原材料耗费数量")
+    private BigDecimal materialCostnum;
+
+    /** 货物名称 */
+    private String goodsName;
+
+    /** 产品编号 */
+    private String finishgoodNo;
+
+}

+ 0 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/SpmOrderHistoryResVo.java


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini